<?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>155069</bug_id>
          
          <creation_ts>2016-03-05 14:08:53 -0800</creation_ts>
          <short_desc>RegExpMatchesArray doesn&apos;t know how to have a bad time</short_desc>
          <delta_ts>2016-03-06 12:11:32 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>155070</blocked>
    
    <blocked>154874</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kling</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1171267</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-05 14:08:53 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171362</commentid>
    <comment_count>1</comment_count>
      <attachid>273119</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-05 19:33:44 -0800</bug_when>
    <thetext>Created attachment 273119
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171375</commentid>
    <comment_count>2</comment_count>
      <attachid>273122</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-05 20:44:04 -0800</bug_when>
    <thetext>Created attachment 273122
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171383</commentid>
    <comment_count>3</comment_count>
      <attachid>273125</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-05 21:04:41 -0800</bug_when>
    <thetext>Created attachment 273125
possibly done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171385</commentid>
    <comment_count>4</comment_count>
      <attachid>273126</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-05 21:50:30 -0800</bug_when>
    <thetext>Created attachment 273126
seems to work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171389</commentid>
    <comment_count>5</comment_count>
      <attachid>273128</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-06 00:30:37 -0800</bug_when>
    <thetext>Created attachment 273128
runs some things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171395</commentid>
    <comment_count>6</comment_count>
      <attachid>273131</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-06 01:25:12 -0800</bug_when>
    <thetext>Created attachment 273131
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171396</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-06 01:27:33 -0800</bug_when>
    <thetext>Attachment 273131 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1908:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 38 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>1171441</commentid>
    <comment_count>8</comment_count>
      <attachid>273131</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-06 12:02:29 -0800</bug_when>
    <thetext>Comment on attachment 273131
the patch

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

Looks great.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2175
&gt; +        Node* regExpExec = addToGraph(RegExpExec, OpInfo(0), OpInfo(prediction), addToGraph(GetGlobalObject, callee), get(virtualRegisterForArgument(0, registerOffset)), get(virtualRegisterForArgument(1, registerOffset)));

OK, we need to insert having a bad time watchpoint checking for the RegExp.prototype.exec&apos;s global object.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:767
&gt; +    m_regExpMatchesArrayStructure.set(vm, this, m_regExpMatchesArraySlowPutStructure.get());

OK. Switching the structure to slow put one, that is used when creating a new RegExp matches array.
And existing one is switched by the following path.

&gt; Source/JavaScriptCore/tests/stress/regexp-matches-array-slow-put.js:3
&gt; +    Array.prototype.__defineSetter__(&quot;0&quot;, function(value) { count += value; });

Yeah, let&apos;s have a bad time!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171443</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-06 12:09:18 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 273131 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=273131&amp;action=review
&gt; 
&gt; Looks great.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2175
&gt; &gt; +        Node* regExpExec = addToGraph(RegExpExec, OpInfo(0), OpInfo(prediction), addToGraph(GetGlobalObject, callee), get(virtualRegisterForArgument(0, registerOffset)), get(virtualRegisterForArgument(1, registerOffset)));
&gt; 
&gt; OK, we need to insert having a bad time watchpoint checking for the
&gt; RegExp.prototype.exec&apos;s global object.

Note that we will only insert the haveABadTime watchpoint if the abstract interpreter discovers what the global object is and observes that it&apos;s not having a bad time.  If either of those things don&apos;t happen, RegExpExec will simply make no promises about the kind of array it returns - so the CodeBlock doesn&apos;t need any watchpoints in that case.

This works partly because createRegExpMatchesArray currently always does a check for isHavingABadTime each time it is executed.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:767
&gt; &gt; +    m_regExpMatchesArrayStructure.set(vm, this, m_regExpMatchesArraySlowPutStructure.get());
&gt; 
&gt; OK. Switching the structure to slow put one, that is used when creating a
&gt; new RegExp matches array.
&gt; And existing one is switched by the following path.
&gt; 
&gt; &gt; Source/JavaScriptCore/tests/stress/regexp-matches-array-slow-put.js:3
&gt; &gt; +    Array.prototype.__defineSetter__(&quot;0&quot;, function(value) { count += value; });
&gt; 
&gt; Yeah, let&apos;s have a bad time!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171444</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-03-06 12:11:32 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/197641</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273119</attachid>
            <date>2016-03-05 19:33:44 -0800</date>
            <delta_ts>2016-03-05 20:44:04 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25575</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE5LDE3ICs2MTksMTcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25BcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJy
YXktPnBvcChleGVjKSk7CiB9CiAgICAgICAgIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25SZWdFeHBFeGVjU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwT2JqZWN0
KiByZWdFeHBPYmplY3QsIEpTU3RyaW5nKiBhcmd1bWVudCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBKU1N0
cmluZyogYXJndW1lbnQpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOwogICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwT2JqZWN0
LT5leGVjKGV4ZWMsIGFyZ3VtZW50KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWdF
eHBPYmplY3QtPmV4ZWMoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCkpOwogfQogICAgICAg
ICAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlYyhFeGVj
U3RhdGUqIGV4ZWMsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQXJndW1lbnQpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJl
Z0V4cEV4ZWMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAg
ICAKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVu
dCk7CkBAIC02MzcsMTIgKzYzNywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlCiAgICAgSlNTdHJpbmcqIGlucHV0ID0gYXJndW1lbnQudG9TdHJpbmdPck51bGwo
ZXhlYyk7CiAgICAgaWYgKCFpbnB1dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ0V4cE9iamVjdC0+
ZXhlYyhleGVjLCBpbnB1dCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwT2Jq
ZWN0LT5leGVjKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpKTsKIH0KICAgICAgICAgCi1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRBcmd1bWVudCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVn
RXhwRXhlY0dlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFy
Z3VtZW50KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBA
IC02NTQsMjAgKzY1NCwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blJlCiAgICAgSlNTdHJpbmcqIGlucHV0ID0gYXJndW1lbnQudG9TdHJpbmdPck51bGwoZXhlYyk7
CiAgICAgaWYgKCFpbnB1dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzUmVnRXhwT2JqZWN0KGJhc2Up
LT5leGVjKGV4ZWMsIGlucHV0KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc1JlZ0V4
cE9iamVjdChiYXNlKS0+ZXhlYyhleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KSk7CiB9CiAgICAg
ICAgIAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyhFeGVj
U3RhdGUqIGV4ZWMsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBKU1N0cmluZyogaW5wdXQp
CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnRXhwT2JqZWN0KiByZWdF
eHBPYmplY3QsIEpTU3RyaW5nKiBpbnB1dCkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICByZXR1cm4gcmVnRXhwT2JqZWN0LT50ZXN0KGV4
ZWMsIGlucHV0KTsKKyAgICByZXR1cm4gcmVnRXhwT2JqZWN0LT50ZXN0KGV4ZWMsIGdsb2JhbE9i
amVjdCwgaW5wdXQpOwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBU
ZXN0KEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRBcmd1bWVudCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJl
Z0V4cFRlc3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50
KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAog
ICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsK
QEAgLTY3NSwxMiArNjc1LDEyIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4
cFRlc3QKICAgICBKU1N0cmluZyogaW5wdXQgPSBhcmd1bWVudC50b1N0cmluZ09yTnVsbChleGVj
KTsKICAgICBpZiAoIWlucHV0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJl
Z0V4cE9iamVjdC0+dGVzdChleGVjLCBpbnB1dCk7CisgICAgcmV0dXJuIHJlZ0V4cE9iamVjdC0+
dGVzdChleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KTsKIH0KIAotc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQorc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC02OTQsNyArNjk0LDcgQEAgc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdAogICAgIEpTU3RyaW5nKiBpbnB1dCA9IGFyZ3Vt
ZW50LnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlmICghaW5wdXQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gYXNSZWdFeHBPYmplY3QoYmFzZSktPnRlc3QoZXhlYywgaW5w
dXQpOworICAgIHJldHVybiBhc1JlZ0V4cE9iamVjdChiYXNlKS0+dGVzdChleGVjLCBnbG9iYWxP
YmplY3QsIGlucHV0KTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxQ2VsbChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMyArMTAx
LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXIKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlKEV4ZWNTdGF0ZSos
IGRvdWJsZSB2YWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoRXhlY1N0YXRlKiwgSlNBcnJheSopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3BB
bmRSZWNvdmVyTGVuZ3RoKEV4ZWNTdGF0ZSosIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7Ci1FbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcoRXhlY1N0
YXRlKiwgUmVnRXhwT2JqZWN0KiwgSlNTdHJpbmcqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWMoRXhlY1N0YXRlKiwgUmVnRXhw
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBKU1N0cmluZyopIFdURl9JTlRFUk5BTDsKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlYyhFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJO
QUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5l
cmljKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlKSBXVEZfSU5URVJOQUw7CiAvLyBUaGVzZSBjb21wYXJpc29ucyByZXR1cm4gYSBib29s
ZWFuIHdpdGhpbiBhIHNpemVfdCBzdWNoIHRoYXQgdGhlIHZhbHVlIGlzIHplcm8gZXh0ZW5kZWQg
dG8gZmlsbCB0aGUgcmVnaXN0ZXIuCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdF
eHBUZXN0U3RyaW5nKEV4ZWNTdGF0ZSosIFJlZ0V4cE9iamVjdCosIEpTU3RyaW5nKikgV1RGX0lO
VEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdChFeGVjU3Rh
dGUqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwotc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgUmVnRXhwT2JqZWN0KiwgSlNTdHJpbmcqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRP
cDIpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVT
dHJpY3RFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1Nj
b3BlKiwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Miw2ICsxMjIsOSBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKCiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FQ1op
KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRURBKShFeGVjU3RhdGUqLCBkb3VibGUsIEpT
QXJyYXkqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3Bl
cmF0aW9uX0VFKShFeGVjU3RhdGUqLCBFeGVjU3RhdGUqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VHUmVvSikoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FR1Jlb0pzcykoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBKU1N0cmluZyopOwordHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUdKSiko
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRp
b25fRUkpKEV4ZWNTdGF0ZSosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9K
SVRPcGVyYXRpb25fRUpaKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7CkBA
IC0yMDEsNyArMjA0LDEwIEBAIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRP
cGUKIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRUpaWiko
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBz
aXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VDQykoRXhlY1N0YXRlKiwgSlND
ZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVy
YXRpb25fRUdDKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCopOwotdHlwZWRl
ZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVy
YXRpb25fRUdKKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKTsK
K3R5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FR1Jlb0opKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUp
OwordHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VHUmVvSnNz
KShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEpTU3RyaW5nKik7
Cit0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUpKKShFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBzaXplX3Qg
SklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpT
X0pJVE9wZXJhdGlvbl9FT0pzcykoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1N0cmluZyopOwog
dHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VSZW9KKShFeGVj
U3RhdGUqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAx
OTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCw3ICszNjQsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojppbml0KFZNJiB2bSkKICAgICAKICAgICBtX3JlZ0V4cFByb3RvdHlwZS5zZXQodm0sIHRoaXMs
IFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBlbXB0eVJlZ2V4
KSk7CiAgICAgbV9yZWdFeHBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBSZWdFeHBPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBt
X3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZSh2bSwgKnRoaXMpKTsKKyAgICBtX3JlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSh2bSwgdGhpcykpOworICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUodm0s
IHRoaXMpKTsKIAogICAgIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNN
b2R1bGVSZWNvcmQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKTsKICAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpz
TnVsbCgpKSk7CkBAIC03NjEsNiArNzYyLDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aGF2ZUFC
YWRUaW1lKFZNJiB2bQogICAgIC8vIHRoaXMgb2JqZWN0IG5vdyBsb2FkIGEgc3RydWN0dXJlIHRo
YXQgdXNlcyBTbG93UHV0LgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZklu
ZGV4aW5nU2hhcGVzOyArK2kpCiAgICAgICAgIG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1No
YXBlRHVyaW5nQWxsb2NhdGlvbltpXS5zZXQodm0sIHRoaXMsIG9yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSkpOworCisgICAg
Ly8gU2FtZSBmb3IgYW55IHNwZWNpYWwgYXJyYXkgc3RydWN0dXJlcy4KKyAgICBtX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIG1fcmVnRXhwTWF0Y2hlc0FycmF5U2xv
d1B1dFN0cnVjdHVyZS5nZXQoKSk7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYWxsIG9i
amVjdHMgdGhhdCBoYXZlIGluZGV4ZWQgc3RvcmFnZSBzd2l0Y2ggdG8gdGhlIHNsb3cga2luZCBv
ZgogICAgIC8vIGluZGV4ZWQgc3RvcmFnZS4KQEAgLTkwMCw2ICs5MDQsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVNsb3dQ
dXRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJl
Y29yZFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxl
TmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9jb25zb2xlU3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
Mjc4LDYgKzI3OCw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm94eU9iamVjdFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTk3NjI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzkzLDcgKzM5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgaW5pdGlhbGl6ZUluZGV4KHZtLCBp
LCB2LCBpbmRleGluZ1R5cGUoKSk7CiAgICAgfQogCi0gICAgdm9pZCBpbml0aWFsaXplSW5kZXgo
Vk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYsIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUp
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGluaXRpYWxpemVJbmRleChWTSYgdm0sIHVuc2lnbmVk
IGksIEpTVmFsdWUgdiwgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkKICAgICB7CiAgICAgICAg
IEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KHRoaXMpOwogICAgICAgICBz
d2l0Y2ggKGluZGV4aW5nVHlwZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIEpTQXJyYXkqIFJlZ0V4cENhY2hlZFJlc3Vs
dDo6bGFzdFJlc3VsdCgKIHsKICAgICBpZiAoIW1fcmVpZmllZCkgewogICAgICAgICBtX3JlaWZp
ZWRJbnB1dC5zZXQoZXhlYy0+dm0oKSwgb3duZXIsIG1fbGFzdElucHV0LmdldCgpKTsKLSAgICAg
ICAgbV9yZWlmaWVkUmVzdWx0LnNldChleGVjLT52bSgpLCBvd25lciwgY3JlYXRlUmVnRXhwTWF0
Y2hlc0FycmF5KGV4ZWMsIG1fbGFzdElucHV0LmdldCgpLCBtX2xhc3RSZWdFeHAuZ2V0KCksIG1f
cmVzdWx0KSk7CisgICAgICAgIG1fcmVpZmllZFJlc3VsdC5zZXQoZXhlYy0+dm0oKSwgb3duZXIs
IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIG1fbGFzdElucHV0LmdldCgpLCBtX2xhc3RSZWdFeHAuZ2V0KCksIG1fcmVzdWx0KSk7CiAg
ICAgICAgIG1fcmVpZmllZCA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiBtX3JlaWZpZWRSZXN1
bHQuZ2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDMwICs1MCw1NiBAQCBzdGF0aWMgSlNBcnJheSogdHJ5Q3JlYXRlVW5pbml0aWFsaXpl
ZFJlCiAgICAgcmV0dXJuIEpTQXJyYXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIHN0cnVjdHVy
ZSwgYnV0dGVyZmx5KTsKIH0KIAotSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4
ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIGlucHV0LCBSZWdFeHAqIHJlZ0V4cCwgTWF0Y2hSZXN1
bHQgcmVzdWx0KQorSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KAorICAgIEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIGlucHV0
LCBSZWdFeHAqIHJlZ0V4cCwKKyAgICBNYXRjaFJlc3VsdCByZXN1bHQpCiB7CisgICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oImNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSIpOworICAg
IAogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNB
cnJheSogYXJyYXkgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlc0FycmF5KHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSgpLCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxKTsKLSAgICBSRUxFQVNFX0FTU0VSVChh
cnJheSk7CiAKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiUmVpZnlpbmcgc3Vi
c3RyaW5nIHByb3BlcnRpZXMiKTsKLQotICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIDAs
IGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1
bHQuc3RhcnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKLQotICAgIGlmICh1bnNpZ25lZCBudW1T
dWJwYXR0ZXJucyA9IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgewotICAgICAgICBWZWN0b3I8
aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7Ci0gICAgICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4
cC0+bWF0Y2godm0sIGlucHV0LT52YWx1ZShleGVjKSwgcmVzdWx0LnN0YXJ0LCBzdWJwYXR0ZXJu
UmVzdWx0cyk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAg
JiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKLSAgICAg
ICAgQVNTRVJUKHJlc3VsdC5zdGFydCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN1YnBhdHRlcm5S
ZXN1bHRzWzBdKSk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQuZW5kID09IHN0YXRpY19jYXN0PHNp
emVfdD4oc3VicGF0dGVyblJlc3VsdHNbMV0pKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsKLSAgICAgICAgICAgIGludCBzdGFydCA9
IHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBpXTsKLSAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKQot
ICAgICAgICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIGksIGpzU3Vic3RyaW5n
KGV4ZWMsIGlucHV0LCBzdGFydCwgc3VicGF0dGVyblJlc3VsdHNbMiAqIGkgKyAxXSAtIHN0YXJ0
KSwgQXJyYXlXaXRoQ29udGlndW91cyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgaSwganNVbmRlZmluZWQoKSwgQXJyYXlXaXRo
Q29udGlndW91cyk7CisgICAgSlNBcnJheSogYXJyYXk7CisgICAgaWYgKGdsb2JhbE9iamVjdC0+
aXNIYXZpbmdBQmFkVGltZSgpKSB7CisgICAgICAgIGFycmF5ID0gSlNBcnJheTo6dHJ5Q3JlYXRl
VW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUoKSwgcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpICsgMSk7CisgICAgICAgIAorICAgICAgICBh
cnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCAwLCBqc1N1YnN0cmluZyhleGVjLCBpbnB1dCwgcmVz
dWx0LnN0YXJ0LCByZXN1bHQuZW5kIC0gcmVzdWx0LnN0YXJ0KSk7CisgICAgICAgIAorICAgICAg
ICBpZiAodW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkp
IHsKKyAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKKyAgICAg
ICAgICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2godm0sIGlucHV0LT52YWx1ZShleGVj
KSwgcmVzdWx0LnN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7CisgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKHBvc2l0aW9uLCBwb3NpdGlvbiA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4ocG9z
aXRpb24pID09IHJlc3VsdC5zdGFydCk7CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0LnN0YXJ0
ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0dGVyblJlc3VsdHNbMF0pKTsKKyAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQuZW5kID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0dGVyblJl
c3VsdHNbMV0pKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MTsgaSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKSB7CisgICAgICAgICAgICAgICAgaW50IHN0YXJ0
ID0gc3VicGF0dGVyblJlc3VsdHNbMiAqIGldOworICAgICAgICAgICAgICAgIGlmIChzdGFydCA+
PSAwKQorICAgICAgICAgICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBpLCBq
c1N1YnN0cmluZyhleGVjLCBpbnB1dCwgc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBpICsg
MV0gLSBzdGFydCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
YXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgaSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBhcnJheSA9IHRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVzQXJyYXkodm0sIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlKCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChhcnJheSk7CisgICAgICAgIAorICAgICAgICBhcnJheS0+aW5p
dGlhbGl6ZUluZGV4KHZtLCAwLCBqc1N1YnN0cmluZyhleGVjLCBpbnB1dCwgcmVzdWx0LnN0YXJ0
LCByZXN1bHQuZW5kIC0gcmVzdWx0LnN0YXJ0KSwgQXJyYXlXaXRoQ29udGlndW91cyk7CisgICAg
ICAgIAorICAgICAgICBpZiAodW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSByZWdFeHAtPm51bVN1
YnBhdHRlcm5zKCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVz
dWx0czsKKyAgICAgICAgICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2godm0sIGlucHV0
LT52YWx1ZShleGVjKSwgcmVzdWx0LnN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7CisgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKHBvc2l0aW9uLCBwb3NpdGlvbiA+PSAwICYmIHN0YXRpY19jYXN0
PHNpemVfdD4ocG9zaXRpb24pID09IHJlc3VsdC5zdGFydCk7CisgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0LnN0YXJ0ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0dGVyblJlc3VsdHNbMF0p
KTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuZW5kID09IHN0YXRpY19jYXN0PHNpemVfdD4o
c3VicGF0dGVyblJlc3VsdHNbMV0pKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMTsgaSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKSB7CisgICAgICAgICAgICAg
ICAgaW50IHN0YXJ0ID0gc3VicGF0dGVyblJlc3VsdHNbMiAqIGldOworICAgICAgICAgICAgICAg
IGlmIChzdGFydCA+PSAwKQorICAgICAgICAgICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUlu
ZGV4KHZtLCBpLCBqc1N1YnN0cmluZyhleGVjLCBpbnB1dCwgc3RhcnQsIHN1YnBhdHRlcm5SZXN1
bHRzWzIgKiBpICsgMV0gLSBzdGFydCksIEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2
bSwgaSwganNVbmRlZmluZWQoKSwgQXJyYXlXaXRoQ29udGlndW91cyk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgzLDkgKzEwOSw5IEBAIEpTQXJyYXkqIGNyZWF0ZVJl
Z0V4cE1hdGNoZXNBcnJheShFeGVjU3QKICAgICByZXR1cm4gYXJyYXk7CiB9CiAKLVN0cnVjdHVy
ZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKK3N0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZUltcGwo
Vk0mIHZtLCBKU0dMb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbmRleGluZ1R5cGUgaW5kZXhp
bmdUeXBlKQogewotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1
b3VzKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKTsKICAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQ7CiAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlLT5hZGRQcm9w
ZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+aW5kZXgsIDAs
IG9mZnNldCk7CiAgICAgQVNTRVJUKG9mZnNldCA9PSBpbmRleFByb3BlcnR5T2Zmc2V0KTsKQEAg
LTk0LDQgKzEyMCwxNCBAQCBTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVj
CiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIH0KIAorU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRj
aGVzQXJyYXlTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIHJldHVybiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmplY3QsIEFycmF5
V2l0aENvbnRpZ3VvdXMpOworfQorCitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJh
eVNsb3dQdXRTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
eworICAgIHJldHVybiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmplY3QsIEFycmF5
V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJh
eS5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNT
dGF0ZSosIEpTU3RyaW5nKiwgUmVnRXhwKiwgTWF0Y2hSZXN1bHQpOwotU3RydWN0dXJlKiBjcmVh
dGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCYpOworSlNB
cnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgSlNTdHJpbmcqLCBSZWdFeHAqLCBNYXRjaFJlc3VsdCk7CitTdHJ1Y3R1cmUqIGNyZWF0ZVJl
Z0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CitTdHJ1Y3R1
cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCopOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDIw
ICsxNTksMjAgQEAgdm9pZCBSZWdFeHBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogICAg
IEJhc2U6OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAot
SlNWYWx1ZSBSZWdFeHBPYmplY3Q6OmV4ZWMoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3Ry
aW5nKQorSlNWYWx1ZSBSZWdFeHBPYmplY3Q6OmV4ZWMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogc3RyaW5nKQogewotICAgIGlmIChNYXRj
aFJlc3VsdCByZXN1bHQgPSBtYXRjaChleGVjLCBzdHJpbmcpKQotICAgICAgICByZXR1cm4gY3Jl
YXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIHN0cmluZywgcmVnRXhwKCksIHJlc3VsdCk7Cisg
ICAgaWYgKE1hdGNoUmVzdWx0IHJlc3VsdCA9IG1hdGNoKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3Ry
aW5nKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBnbG9i
YWxPYmplY3QsIHN0cmluZywgcmVnRXhwKCksIHJlc3VsdCk7CiAgICAgcmV0dXJuIGpzTnVsbCgp
OwogfQogCiAvLyBTaGFyZWQgaW1wbGVtZW50YXRpb24gdXNlZCBieSB0ZXN0IGFuZCBleGVjLgot
TWF0Y2hSZXN1bHQgUmVnRXhwT2JqZWN0OjptYXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5n
KiBzdHJpbmcpCitNYXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZykKIHsKICAg
ICBSZWdFeHAqIHJlZ0V4cCA9IHRoaXMtPnJlZ0V4cCgpOwotICAgIFJlZ0V4cENvbnN0cnVjdG9y
KiByZWdFeHBDb25zdHJ1Y3RvciA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhw
Q29uc3RydWN0b3IoKTsKKyAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3Ig
PSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCk7CiAgICAgU3RyaW5nIGlucHV0ID0g
c3RyaW5nLT52YWx1ZShleGVjKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAoIXJlZ0V4cC0+Z2xvYmFsKCkpCiAgICAg
ICAgIHJldHVybiByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKHZtLCByZWdFeHAsIHN0
cmluZywgaW5wdXQsIDApOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDggKzYxLDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9sYXN0SW5kZXguZ2V0KCk7CiAgICAgfQogCi0g
ICAgYm9vbCB0ZXN0KEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykgeyByZXR1cm4g
bWF0Y2goZXhlYywgc3RyaW5nKTsgfQotICAgIEpTVmFsdWUgZXhlYyhFeGVjU3RhdGUqLCBKU1N0
cmluZyopOworICAgIGJvb2wgdGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJuIG1hdGNoKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RyaW5nKTsgfQorICAgIEpTVmFsdWUgZXhlYyhFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIEpTU3RyaW5nKik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpAQCAtOTcsNyArOTcsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogCiBwcml2YXRlOgotICAgIE1hdGNoUmVzdWx0IG1hdGNoKEV4
ZWNTdGF0ZSosIEpTU3RyaW5nKik7CisgICAgTWF0Y2hSZXN1bHQgbWF0Y2goRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyopOwogCiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cD4g
bV9yZWdFeHA7CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fbGFzdEluZGV4OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM1LDcgKzEwMzUsOCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9T
dHJpbmcoZXhlYyk7CiAgICAgU3RyaW5nIHMgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOwotICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgVk0qIHZtID0gJmdsb2JhbE9iamVjdC0+
dm0oKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKIApAQCAtMTA2Nywx
MSArMTA2OCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAg
ICAgICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdl
KCkpKTsKICAgICB9Ci0gICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBDb25zdHJ1Y3RvcigpOworICAgIFJl
Z0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IGdsb2JhbE9iamVjdC0+cmVnRXhw
Q29uc3RydWN0b3IoKTsKICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25zdHJ1Y3Rv
ci0+cGVyZm9ybU1hdGNoKCp2bSwgcmVnRXhwLCBzdHJpbmcsIHMsIDApOwogICAgIC8vIGNhc2Ug
d2l0aG91dCAnZycgZmxhZyBpcyBoYW5kbGVkIGxpa2UgUmVnRXhwLnByb3RvdHlwZS5leGVjCiAg
ICAgaWYgKCFnbG9iYWwpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8g
Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIHN0cmluZywgcmVnRXhwLCByZXN1bHQpIDog
anNOdWxsKCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCA/IGNyZWF0
ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZywgcmVnRXhwLCBy
ZXN1bHQpIDoganNOdWxsKCkpOwogCiAgICAgLy8gcmV0dXJuIGFycmF5IG9mIG1hdGNoZXMKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBsaXN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9yZWdleHAtbWF0Y2hlcy1hcnJheS1iYWQtdGltZS5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3JlZ2V4cC1tYXRjaGVzLWFy
cmF5LWJhZC10aW1lLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9yZWdleHAtbWF0Y2hlcy1hcnJheS1iYWQtdGltZS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE5IEBACisoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvdW50ID0gMTE7CisK
KyAgICB2YXIgYXJyYXk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Cisg
ICAgICAgIGFycmF5ID0gL2Zvby8uZXhlYygiZm9vIik7CisgICAgICAgIGlmIChhcnJheVswXSAh
PSAiZm9vIikKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIGFycmF5
WzBdOworICAgIH0KKworICAgIGRlbGV0ZSBhcnJheVswXTsKKworICAgIEFycmF5LnByb3RvdHlw
ZS5fX2RlZmluZVNldHRlcl9fKCIwIiwgZnVuY3Rpb24odmFsdWUpIHsgY291bnQgKz0gdmFsdWU7
IH0pOworICAgIAorICAgIGFycmF5WzBdID0gNDI7CisgICAgaWYgKGNvdW50ICE9IDUzKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCBjb3VudDogIiArIGNvdW50OworfSkoKTsKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZWdleHAtbWF0Y2hlcy1hcnJheS1z
bG93LXB1dC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3JlZ2V4cC1tYXRjaGVzLWFycmF5LXNsb3ctcHV0LmpzCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZWdleHAtbWF0Y2hlcy1hcnJheS1zbG93
LXB1dC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACisoZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIGNvdW50ID0gMDsKKyAgICBBcnJheS5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXygi
MCIsIGZ1bmN0aW9uKHZhbHVlKSB7IGNvdW50ICs9IHZhbHVlOyB9KTsKKyAgICAKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgdmFyIGFycmF5ID0gL2Zvby8u
ZXhlYygiZm9vIik7CisgICAgICAgIGlmIChhcnJheVswXSAhPSAiZm9vIikKKyAgICAgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIGFycmF5WzBdOworICAgICAgICBkZWxldGUg
YXJyYXlbMF07CisgICAgICAgIGFycmF5WzBdID0gNDI7CisgICAgICAgIGlmIChjb3VudCAhPSAo
aSArIDEpICogNDIpCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBjb3VudCBhdCBpID0g
IiArIGkgKyAiOiAiICsgY291bnQ7CisgICAgfQorfSkoKTsKKyAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273122</attachid>
            <date>2016-03-05 20:44:04 -0800</date>
            <delta_ts>2016-03-05 21:04:41 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>40909</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTU1NCwxNyArMTU1NCwyNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAgICAgCiAgICAgY2FzZSBSZWdFeHBFeGVjOgot
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQot
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewor
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQor
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewog
ICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IGNsb2JiZXIgdGhlIHdvcmxkIHNpbmNlIHRoZXJl
IGFyZSBubyBjb252ZXJzaW9ucyB0byBwZXJmb3JtLgogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7Ci0g
ICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKKyAgICAgICAgaWYgKEpTVmFsdWUg
Z2xvYmFsT2JqZWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7Cisg
ICAgICAgICAgICBpZiAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3RWYWx1ZSkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZp
bmdBQmFkVGltZVdhdGNocG9pbnQoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KG1fZ3JhcGgsIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3Jh
cGgsIFNwZWNBcnJheSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBSZWdFeHBUZXN0Ogot
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQot
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewor
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQor
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewog
ICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IGNsb2JiZXIgdGhlIHdvcmxkIHNpbmNlIHRoZXJl
IGFyZSBubyBjb252ZXJzaW9ucyB0byBwZXJmb3JtLgogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CkBA
IC0xODgyLDYgKzE4OTEsMzMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDog
eworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUo
KTsKKyAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAq
bV9ncmFwaC5mcmVlemUoSlNWYWx1ZShhc09iamVjdChjaGlsZCktPmdsb2JhbE9iamVjdCgpKSkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG51bGxwdHI7CisgICAgICAgICAgICBib29sIG9r
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3R1cmN0dXJl
LmZvckVhY2goCisgICAgICAgICAgICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdsb2JhbE9iamVjdCA9IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGdsb2JhbE9iamVjdCAhPSBzdHJ1Y3R1cmUtPmdsb2JhbE9i
amVjdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QgJiYgb2spIHsKKyAgICAgICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUoSlNWYWx1ZShnbG9iYWxP
YmplY3QpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09iamVjdE90
aGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgog
ICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRDbG9zdXJl
VmFyKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5zY29wZU9mZnNldCgpKSkgewogICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgKm1fZ3JhcGguZnJlZXplKHZhbHVlKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
cmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqLCBCYXNpY0Js
b2NrKik7IC8vIE9ubHkgd29ya3Mgd2hlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIGxhc3Qgb25l
IHRvIGhhdmUgYmVlbiBhZGRlZCBmb3IgdGhhdCBpbmxpbmUgc3RhY2sgZW50cnkuCiAgICAgLy8g
SGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwg
ZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoaW50IHJlc3VsdE9w
ZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNh
bGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVz
dWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUq
IHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CkBAIC0xNjAxLDcgKzE2MDEsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsCiAgICAgCiAgICAgICAgIEludHJpbnNp
YyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CiAg
ICAgICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKLSAgICAgICAgICAgIGlmICho
YW5kbGVJbnRyaW5zaWNDYWxsKHJlc3VsdE9wZXJhbmQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZz
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NX
aXRoQWNjb3VudGluZykpIHsKKyAgICAgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWNDYWxsKGNh
bGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFj
Y291bnRpbmcpKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hl
Y2tzKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2Rl
KTsKICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwpAQCAtMTk5MSw3ICsxOTkxLDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KGludCByZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bChpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKGludHJpbnNpYykgewogCkBA
IC0yMTcyLDcgKzIxNzIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWND
YWxsCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRD
aGVja3MoKTsKLSAgICAgICAgTm9kZSogcmVnRXhwRXhlYyA9IGFkZFRvR3JhcGgoUmVnRXhwRXhl
YywgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgIE5vZGUqIHJlZ0V4cEV4ZWMgPSBhZGRU
b0dyYXBoKFJlZ0V4cEV4ZWMsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBhZGRUb0dy
YXBoKEdldEdsb2JhbE9iamVjdCwgY2FsbGVlKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgx
LCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRP
cGVyYW5kKSwgcmVnRXhwRXhlYyk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTIxODMsNyArMjE4Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwotICAgICAgICBOb2RlKiByZWdFeHBFeGVjID0gYWRkVG9HcmFwaChSZWdFeHBUZXN0
LCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dCgxLCByZWdpc3Rlck9mZnNldCkpKTsKKyAgICAgICAgTm9kZSogcmVnRXhwRXhlYyA9IGFkZFRv
R3JhcGgoUmVnRXhwVGVzdCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIGFkZFRvR3Jh
cGgoR2V0R2xvYmFsT2JqZWN0LCBjYWxsZWUpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEs
IHJlZ2lzdGVyT2Zmc2V0KSkpOwogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9w
ZXJhbmQpLCByZWdFeHBFeGVjKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTk3NjI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTIsNiArMjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKICAg
ICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBO
b2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhHZXRHbG9iYWxPYmplY3QsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKEdldENsb3N1cmVWYXIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFB1
dENsb3N1cmVWYXIsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRHbG9iYWxWYXIs
IE5vZGVSZXN1bHRKUykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTksMTcgKzYxOSwxNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShhcnJheS0+cG9wKGV4ZWMpKTsKIH0KICAgICAgICAgCi1FbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjLCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgSlNTdHJpbmcqIGFyZ3VtZW50KQorRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnRXhwT2JqZWN0KiBy
ZWdFeHBPYmplY3QsIEpTU3RyaW5nKiBhcmd1bWVudCkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZWdFeHBPYmplY3QtPmV4ZWMoZXhlYywgYXJndW1lbnQpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlZ0V4cE9iamVjdC0+ZXhlYyhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50KSk7CiB9CiAgICAgICAgIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25SZWdFeHBFeGVjKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlYyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQXJndW1lbnQpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOwogICAgIAogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEFyZ3VtZW50KTsKQEAgLTYzNywxMiArNjM3LDEyIEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmUKICAgICBKU1N0cmluZyogaW5wdXQgPSBhcmd1bWVu
dC50b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIWlucHV0KQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVnRXhwT2JqZWN0LT5leGVjKGV4ZWMsIGlucHV0KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZWdFeHBPYmplY3QtPmV4ZWMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnB1dCkpOwog
fQogICAgICAgICAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhw
RXhlY0dlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKTsKQEAgLTY1NCwyMCArNjU0LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmUKICAgICBKU1N0cmluZyogaW5wdXQgPSBhcmd1bWVudC50b1N0
cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIWlucHV0KQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNS
ZWdFeHBPYmplY3QoYmFzZSktPmV4ZWMoZXhlYywgaW5wdXQpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFzUmVnRXhwT2JqZWN0KGJhc2UpLT5leGVjKGV4ZWMsIGdsb2JhbE9iamVjdCwg
aW5wdXQpKTsKIH0KICAgICAgICAgCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdF
eHBUZXN0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3Qs
IEpTU3RyaW5nKiBpbnB1dCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRl
c3RTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgSlNTdHJpbmcqIGlucHV0KQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIHJldHVybiByZWdF
eHBPYmplY3QtPnRlc3QoZXhlYywgaW5wdXQpOworICAgIHJldHVybiByZWdFeHBPYmplY3QtPnRl
c3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnB1dCk7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhlY1N0YXRlKiBleGVjLCBSZWdFeHBPYmplY3QqIHJlZ0V4
cE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQorc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQXJndW1lbnQpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQXJndW1lbnQpOwpAQCAtNjc1LDEyICs2NzUsMTIgQEAgc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUmVnRXhwVGVzdAogICAgIEpTU3RyaW5nKiBpbnB1dCA9IGFyZ3VtZW50LnRv
U3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlmICghaW5wdXQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gcmVnRXhwT2JqZWN0LT50ZXN0KGV4ZWMsIGlucHV0KTsKKyAgICByZXR1
cm4gcmVnRXhwT2JqZWN0LT50ZXN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpOwogfQogCi1z
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QXJndW1lbnQpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJp
YyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCiAgICAgSlNW
YWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTY5NCw3ICs2OTQs
NyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0CiAgICAgSlNTdHJp
bmcqIGlucHV0ID0gYXJndW1lbnQudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFpbnB1
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBhc1JlZ0V4cE9iamVjdChiYXNl
KS0+dGVzdChleGVjLCBpbnB1dCk7CisgICAgcmV0dXJuIGFzUmVnRXhwT2JqZWN0KGJhc2UpLT50
ZXN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpOwogfQogCiBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxOTc2MjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDEzICsxMDEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25BcgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2hE
b3VibGUoRXhlY1N0YXRlKiwgZG91YmxlIHZhbHVlLCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVBvcChFeGVjU3RhdGUq
LCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25BcnJheVBvcEFuZFJlY292ZXJMZW5ndGgoRXhlY1N0YXRlKiwgSlNBcnJheSopIFdU
Rl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhw
RXhlY1N0cmluZyhFeGVjU3RhdGUqLCBSZWdFeHBPYmplY3QqLCBKU1N0cmluZyopIFdURl9JTlRF
Uk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlYyhF
eGVjU3RhdGUqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwot
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJpYyhF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY1N0cmluZyhF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEpTU3RyaW5nKikgV1RG
X0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBF
eGVjKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwRXhlY0dlbmVyaWMoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIC8vIFRoZXNlIGNvbXBhcmlz
b25zIHJldHVybiBhIGJvb2xlYW4gd2l0aGluIGEgc2l6ZV90IHN1Y2ggdGhhdCB0aGUgdmFsdWUg
aXMgemVybyBleHRlbmRlZCB0byBmaWxsIHRoZSByZWdpc3Rlci4KLXNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoRXhlY1N0YXRlKiwgUmVnRXhwT2JqZWN0Kiwg
SlNTdHJpbmcqKSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25S
ZWdFeHBUZXN0KEV4ZWNTdGF0ZSosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZf
SU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJp
YyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBKU1N0cmluZyopIFdURl9JTlRF
Uk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVT
dHJpY3RFcUNlbGwoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJl
dmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxNywxNSArMTIxNywxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VSZW9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdS
ZW9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMykKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdSZW9Kc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKLSAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAKQEAgLTE0NDYsMTQgKzE0NDYsMTkgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FUmVvSiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VHSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKLSAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9F
UmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdS
ZW9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMykKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdSZW9Kc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQogCkBAIC0xNDY3LDYgKzE0NzIsMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR0pKIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBpbnQzMl90IGlt
bSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihp
bW0pKSkpOwpAQCAtMTcyMiwxNCArMTczMiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBFQUJJ
XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUmVvSiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VHUmVvSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewotICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
M1BheWxvYWQsIGFyZzNUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVJlb0pzcyBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FUmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBh
eWxvYWQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewotICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBh
cmcxLCBjb25zdCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQpAQCAtMTgyOSwxNCArMTgzOSwxOSBA
QCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJ
XzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FS
RyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FUmVvSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdKSiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQogICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2Fk
LCBhcmcyVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzNQYXlsb2Fk
LCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNf
SklUT3BlcmF0aW9uX0VSZW9Kc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJ
VE9wZXJhdGlvbl9FR1Jlb0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewot
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
UGF5bG9hZCwgYXJnM1RhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihTX0pJVE9wZXJhdGlvbl9FR1Jlb0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5
bG9hZCkKQEAgLTE4NDQsNiArMTg1OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwg
YXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwg
cmVzdWx0VGFnKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FR0pKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJl
c3VsdFBheWxvYWQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcxVGFn
LCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQp
CisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihnbG9iYWxPYmplY3QpLCBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RV
TU1ZX0FSRyBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFy
ZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMiBp
bW0pCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFC
SV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFNINF8zMkJJVF9EVU1NWV9B
UkcgaW1tLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIyLDYgKzEyMiw5IEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAo
KkoKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9u
X0VDWikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgaW50MzJfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FREEpKEV4ZWNTdGF0ZSosIGRvdWJs
ZSwgSlNBcnJheSopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9K
SVRPcGVyYXRpb25fRUUpKEV4ZWNTdGF0ZSosIEV4ZWNTdGF0ZSopOwordHlwZWRlZiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUdSZW9KKShFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKTsKK3R5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VHUmVvSnNz
KShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEpTU3RyaW5nKik7
Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9F
R0pKKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9w
ZXJhdGlvbl9FSSkoRXhlY1N0YXRlKiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
KCpKX0pJVE9wZXJhdGlvbl9FSlopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90
KTsKQEAgLTIwMSw3ICsyMDQsMTAgQEAgdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJT04gKCpa
X0pJVE9wZQogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJT04gKCpaX0pJVE9wZXJhdGlvbl9F
SlpaKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBl
ZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUq
LCBKU0NlbGwqLCBKU0NlbGwqKTsKIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJ
VE9wZXJhdGlvbl9FR0MpKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKik7Ci10
eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlKTsKK3R5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJ
VE9wZXJhdGlvbl9FR0opKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUpOwordHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VHUmVv
SikoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSk7Cit0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUdS
ZW9Kc3MpKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgSlNTdHJp
bmcqKTsKK3R5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FSkop
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHNp
emVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElP
TiAoKlNfSklUT3BlcmF0aW9uX0VPSnNzKShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTU3RyaW5n
Kik7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRVJlb0op
KEV4ZWNTdGF0ZSosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlz
aW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDcgKzM2NCw4IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIG1fcmVnRXhwUHJvdG90eXBlLnNldCh2bSwg
dGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIGVtcHR5
UmVnZXgpKTsKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwot
ICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCAqdGhpcykpOworICAgIG1fcmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlKHZtLCB0aGlzKSk7CisgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0
dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVy
ZSh2bSwgdGhpcykpOwogCiAgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywganNOdWxsKCkpKTsKQEAgLTc2MSw2ICs3NjIsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpo
YXZlQUJhZFRpbWUoVk0mIHZtCiAgICAgLy8gdGhpcyBvYmplY3Qgbm93IGxvYWQgYSBzdHJ1Y3R1
cmUgdGhhdCB1c2VzIFNsb3dQdXQuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJl
ck9mSW5kZXhpbmdTaGFwZXM7ICsraSkKICAgICAgICAgbV9hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nU2hhcGVEdXJpbmdBbGxvY2F0aW9uW2ldLnNldCh2bSwgdGhpcywgb3JpZ2luYWxBcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSk7CisK
KyAgICAvLyBTYW1lIGZvciBhbnkgc3BlY2lhbCBhcnJheSBzdHJ1Y3R1cmVzLgorICAgIG1fcmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgbV9yZWdFeHBNYXRjaGVzQXJy
YXlTbG93UHV0U3RydWN0dXJlLmdldCgpKTsKICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBh
bGwgb2JqZWN0cyB0aGF0IGhhdmUgaW5kZXhlZCBzdG9yYWdlIHN3aXRjaCB0byB0aGUgc2xvdyBr
aW5kIG9mCiAgICAgLy8gaW5kZXhlZCBzdG9yYWdlLgpAQCAtOTAwLDYgKzkwNCw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5
U2xvd1B1dFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9k
dWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9t
b2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzgsNiArMjc4LDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOworICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3h5T2JqZWN0U3RydWN0dXJlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxOTc2MjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTMsNyArMzkzLDcgQEAgcHVibGljOgogICAgICAgICBpbml0aWFsaXplSW5kZXgo
dm0sIGksIHYsIGluZGV4aW5nVHlwZSgpKTsKICAgICB9CiAKLSAgICB2b2lkIGluaXRpYWxpemVJ
bmRleChWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgSW5kZXhpbmdUeXBlIGluZGV4aW5n
VHlwZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW5pdGlhbGl6ZUluZGV4KFZNJiB2bSwgdW5z
aWduZWQgaSwgSlNWYWx1ZSB2LCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQogICAgIHsKICAg
ICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQodGhpcyk7CiAgICAg
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAJKHJldmlzaW9uIDE5NzYy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNBcnJheSogUmVnRXhwQ2FjaGVk
UmVzdWx0OjpsYXN0UmVzdWx0KAogewogICAgIGlmICghbV9yZWlmaWVkKSB7CiAgICAgICAgIG1f
cmVpZmllZElucHV0LnNldChleGVjLT52bSgpLCBvd25lciwgbV9sYXN0SW5wdXQuZ2V0KCkpOwot
ICAgICAgICBtX3JlaWZpZWRSZXN1bHQuc2V0KGV4ZWMtPnZtKCksIG93bmVyLCBjcmVhdGVSZWdF
eHBNYXRjaGVzQXJyYXkoZXhlYywgbV9sYXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQo
KSwgbV9yZXN1bHQpKTsKKyAgICAgICAgbV9yZWlmaWVkUmVzdWx0LnNldChleGVjLT52bSgpLCBv
d25lciwgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgbV9sYXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQoKSwgbV9yZXN1bHQp
KTsKICAgICAgICAgbV9yZWlmaWVkID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVpZmll
ZFJlc3VsdC5nZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsMzAgKzUwLDU2IEBAIHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRp
YWxpemVkUmUKICAgICByZXR1cm4gSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgc3Ry
dWN0dXJlLCBidXR0ZXJmbHkpOwogfQogCi1KU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJy
YXkoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogaW5wdXQsIFJlZ0V4cCogcmVnRXhwLCBNYXRj
aFJlc3VsdCByZXN1bHQpCitKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoCisgICAg
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyog
aW5wdXQsIFJlZ0V4cCogcmVnRXhwLAorICAgIE1hdGNoUmVzdWx0IHJlc3VsdCkKIHsKKyAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5Iik7
CisgICAgCiAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAg
ICBKU0FycmF5KiBhcnJheSA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVzQXJy
YXkodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlKCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOwotICAgIFJFTEVBU0VfQVNT
RVJUKGFycmF5KTsKIAotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJSZWlmeWlu
ZyBzdWJzdHJpbmcgcHJvcGVydGllcyIpOwotCi0gICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2
bSwgMCwganNTdWJzdHJpbmcoZXhlYywgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVuZCAt
IHJlc3VsdC5zdGFydCksIEFycmF5V2l0aENvbnRpZ3VvdXMpOwotCi0gICAgaWYgKHVuc2lnbmVk
IG51bVN1YnBhdHRlcm5zID0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpKSB7Ci0gICAgICAgIFZl
Y3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKLSAgICAgICAgaW50IHBvc2l0aW9uID0g
cmVnRXhwLT5tYXRjaCh2bSwgaW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBh
dHRlcm5SZXN1bHRzKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwb3NpdGlvbiwgcG9zaXRpb24g
Pj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKSA9PSByZXN1bHQuc3RhcnQpOwot
ICAgICAgICBBU1NFUlQocmVzdWx0LnN0YXJ0ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0
dGVyblJlc3VsdHNbMF0pKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOwotCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkgewotICAgICAgICAgICAgaW50IHN0
YXJ0ID0gc3VicGF0dGVyblJlc3VsdHNbMiAqIGldOwotICAgICAgICAgICAgaWYgKHN0YXJ0ID49
IDApCi0gICAgICAgICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgaSwganNTdWJz
dHJpbmcoZXhlYywgaW5wdXQsIHN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0c1syICogaSArIDFdIC0g
c3RhcnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBpLCBqc1VuZGVmaW5lZCgpLCBBcnJh
eVdpdGhDb250aWd1b3VzKTsKKyAgICBKU0FycmF5KiBhcnJheTsKKyAgICBpZiAoZ2xvYmFsT2Jq
ZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpIHsKKyAgICAgICAgYXJyYXkgPSBKU0FycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZSgpLCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxKTsKKyAgICAgICAgCisgICAg
ICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIDAsIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0
LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+bnVtU3VicGF0dGVy
bnMoKSkgeworICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOwor
ICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaCh2bSwgaW5wdXQtPnZhbHVl
KGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90
Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQu
c3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1swXSkpOworICAg
ICAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0
ZXJuUmVzdWx0c1sxXSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpbnQg
c3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07CisgICAgICAgICAgICAgICAgaWYgKHN0
YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0s
IGksIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCBzdGFydCwgc3VicGF0dGVyblJlc3VsdHNbMiAq
IGkgKyAxXSAtIHN0YXJ0KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGFycmF5ID0gdHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheSh2bSwgZ2xvYmFsT2JqZWN0LT5yZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpICsgMSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5KTsKKyAgICAgICAgCisgICAgICAgIGFycmF5
LT5pbml0aWFsaXplSW5kZXgodm0sIDAsIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCByZXN1bHQu
c3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsK
KyAgICAgICAgCisgICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+
bnVtU3VicGF0dGVybnMoKSkgeworICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRl
cm5SZXN1bHRzOworICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaCh2bSwg
aW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKKyAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQuc3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0
c1swXSkpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07CisgICAgICAgICAg
ICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAgIGFycmF5LT5pbml0aWFs
aXplSW5kZXgodm0sIGksIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCBzdGFydCwgc3VicGF0dGVy
blJlc3VsdHNbMiAqIGkgKyAxXSAtIHN0YXJ0KSwgQXJyYXlXaXRoQ29udGlndW91cyk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUlu
ZGV4KHZtLCBpLCBqc1VuZGVmaW5lZCgpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtODMsOSArMTA5LDkgQEAgSlNBcnJheSogY3Jl
YXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdAogICAgIHJldHVybiBhcnJheTsKIH0KIAotU3Ry
dWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
SW1wbChWTSYgdm0sIEpTR0xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEluZGV4aW5nVHlwZSBp
bmRleGluZ1R5cGUpCiB7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3Qu
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENv
bnRpZ3VvdXMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpOwog
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPmFk
ZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5pbmRl
eCwgMCwgb2Zmc2V0KTsKICAgICBBU1NFUlQob2Zmc2V0ID09IGluZGV4UHJvcGVydHlPZmZzZXQp
OwpAQCAtOTQsNCArMTIwLDE0IEBAIFN0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5
U3RydWMKICAgICByZXR1cm4gc3RydWN0dXJlOwogfQogCitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVN0cnVjdHVyZUltcGwodm0sIGdsb2JhbE9iamVjdCwg
QXJyYXlXaXRoQ29udGlndW91cyk7Cit9CisKK1N0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hl
c0FycmF5U2xvd1B1dFN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVN0cnVjdHVyZUltcGwodm0sIGdsb2JhbE9iamVjdCwg
QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hl
c0FycmF5LmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw5IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXko
RXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBSZWdFeHAqLCBNYXRjaFJlc3VsdCk7Ci1TdHJ1Y3R1cmUq
IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Jik7
CitKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBKU1N0cmluZyosIFJlZ0V4cCosIE1hdGNoUmVzdWx0KTsKK1N0cnVjdHVyZSogY3Jl
YXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK1N0
cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0Kik7CiAKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTksMjAgKzE1OSwyMCBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
CiAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
fQogCi1KU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlYyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5n
KiBzdHJpbmcpCitKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlYyhFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpCiB7Ci0gICAgaWYg
KE1hdGNoUmVzdWx0IHJlc3VsdCA9IG1hdGNoKGV4ZWMsIHN0cmluZykpCi0gICAgICAgIHJldHVy
biBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgc3RyaW5nLCByZWdFeHAoKSwgcmVzdWx0
KTsKKyAgICBpZiAoTWF0Y2hSZXN1bHQgcmVzdWx0ID0gbWF0Y2goZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdHJpbmcpKQorICAgICAgICByZXR1cm4gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RyaW5nLCByZWdFeHAoKSwgcmVzdWx0KTsKICAgICByZXR1cm4ganNO
dWxsKCk7CiB9CiAKIC8vIFNoYXJlZCBpbXBsZW1lbnRhdGlvbiB1c2VkIGJ5IHRlc3QgYW5kIGV4
ZWMuCi1NYXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNT
dHJpbmcqIHN0cmluZykKK01hdGNoUmVzdWx0IFJlZ0V4cE9iamVjdDo6bWF0Y2goRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogc3RyaW5nKQog
ewogICAgIFJlZ0V4cCogcmVnRXhwID0gdGhpcy0+cmVnRXhwKCk7Ci0gICAgUmVnRXhwQ29uc3Ry
dWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5y
ZWdFeHBDb25zdHJ1Y3RvcigpOworICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1
Y3RvciA9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKTsKICAgICBTdHJpbmcgaW5w
dXQgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmICghcmVnRXhwLT5nbG9iYWwoKSkK
ICAgICAgICAgcmV0dXJuIHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2godm0sIHJlZ0V4
cCwgc3RyaW5nLCBpbnB1dCwgMCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsOCAr
NjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2xhc3RJbmRleC5nZXQoKTsKICAgICB9
CiAKLSAgICBib29sIHRlc3QoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5nKSB7IHJl
dHVybiBtYXRjaChleGVjLCBzdHJpbmcpOyB9Ci0gICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSos
IEpTU3RyaW5nKik7CisgICAgYm9vbCB0ZXN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZykgeyByZXR1cm4gbWF0Y2goZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdHJpbmcpOyB9CisgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CkBAIC05Nyw3ICs5Nyw3IEBAIHByb3RlY3Rl
ZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKIHByaXZhdGU6Ci0gICAgTWF0Y2hSZXN1bHQgbWF0
Y2goRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKKyAgICBNYXRjaFJlc3VsdCBtYXRjaChFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAKICAgICBXcml0ZUJhcnJpZXI8UmVn
RXhwPiBtX3JlZ0V4cDsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9sYXN0SW5kZXg7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzUsNyArMTAzNSw4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKTsKICAgICBTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7Ci0g
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBWTSogdm0gPSAmZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogCkBAIC0x
MDY3LDExICsxMDY4LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG8KICAgICAgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1l
c3NhZ2UoKSkpOwogICAgIH0KLSAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0
b3IgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cENvbnN0cnVjdG9yKCk7Cisg
ICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5y
ZWdFeHBDb25zdHJ1Y3RvcigpOwogICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0
cnVjdG9yLT5wZXJmb3JtTWF0Y2goKnZtLCByZWdFeHAsIHN0cmluZywgcywgMCk7CiAgICAgLy8g
Y2FzZSB3aXRob3V0ICdnJyBmbGFnIGlzIGhhbmRsZWQgbGlrZSBSZWdFeHAucHJvdG90eXBlLmV4
ZWMKICAgICBpZiAoIWdsb2JhbCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQgPyBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgc3RyaW5nLCByZWdFeHAsIHJlc3Vs
dCkgOiBqc051bGwoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8g
Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nLCByZWdF
eHAsIHJlc3VsdCkgOiBqc051bGwoKSk7CiAKICAgICAvLyByZXR1cm4gYXJyYXkgb2YgbWF0Y2hl
cwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2
ICsyNDUsOSBAQCBwdWJsaWM6CiAgICAgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHN1Z2dlc3RlZEFy
cmF5U3RvcmFnZVRyYW5zaXRpb24oKSBjb25zdDsKICAgICAgICAgCiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9
CisKKyAgICAvLyBOT1RFOiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5n
IHRoZSBjcmVhdGlvbiBvZiBzdHJ1Y3R1cmVzLCBzaW5jZSB0aGUgZ2xvYmFsCisgICAgLy8gb2Jq
ZWN0IG9mIGEgc3RydWN0dXJlIGlzIHByZXN1bWVkIHRvIGJlIGltbXV0YWJsZSBpbiBhIGJ1bmNo
IG9mIHBsYWNlcy4KICAgICB2b2lkIHNldEdsb2JhbE9iamVjdChWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIHsgbV9nbG9iYWxPYmplY3Quc2V0KHZtLCB0aGlzLCBnbG9iYWxP
YmplY3QpOyB9CiAgICAgICAgIAogICAgIEpTVmFsdWUgc3RvcmVkUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXktYmFkLXRpbWUuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZWdleHAtbWF0Y2hlcy1h
cnJheS1iYWQtdGltZS5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXktYmFkLXRpbWUuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxOSBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb3VudCA9IDExOwor
CisgICAgdmFyIGFycmF5OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewor
ICAgICAgICBhcnJheSA9IC9mb28vLmV4ZWMoImZvbyIpOworICAgICAgICBpZiAoYXJyYXlbMF0g
IT0gImZvbyIpCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBhcnJh
eVswXTsKKyAgICB9CisKKyAgICBkZWxldGUgYXJyYXlbMF07CisKKyAgICBBcnJheS5wcm90b3R5
cGUuX19kZWZpbmVTZXR0ZXJfXygiMCIsIGZ1bmN0aW9uKHZhbHVlKSB7IGNvdW50ICs9IHZhbHVl
OyB9KTsKKyAgICAKKyAgICBhcnJheVswXSA9IDQyOworICAgIGlmIChjb3VudCAhPSA1MykKKyAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgY291bnQ6ICIgKyBjb3VudDsKK30pKCk7CisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXkt
c2xvdy1wdXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9yZWdleHAtbWF0Y2hlcy1hcnJheS1zbG93LXB1dC5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXktc2xv
dy1wdXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAorKGZ1bmN0aW9uKCkgewor
ICAgIHZhciBjb3VudCA9IDA7CisgICAgQXJyYXkucHJvdG90eXBlLl9fZGVmaW5lU2V0dGVyX18o
IjAiLCBmdW5jdGlvbih2YWx1ZSkgeyBjb3VudCArPSB2YWx1ZTsgfSk7CisgICAgCisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBhcnJheSA9IC9mb28v
LmV4ZWMoImZvbyIpOworICAgICAgICBpZiAoYXJyYXlbMF0gIT0gImZvbyIpCisgICAgICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBhcnJheVswXTsKKyAgICAgICAgZGVsZXRl
IGFycmF5WzBdOworICAgICAgICBhcnJheVswXSA9IDQyOworICAgICAgICBpZiAoY291bnQgIT0g
KGkgKyAxKSAqIDQyKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgY291bnQgYXQgaSA9
ICIgKyBpICsgIjogIiArIGNvdW50OworICAgIH0KK30pKCk7CisgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273125</attachid>
            <date>2016-03-05 21:04:41 -0800</date>
            <delta_ts>2016-03-05 21:50:30 -0800</delta_ts>
            <desc>possibly done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>65098</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTU1NCwxNyArMTU1NCwyNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAgICAgCiAgICAgY2FzZSBSZWdFeHBFeGVjOgot
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQot
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewor
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQor
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewog
ICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IGNsb2JiZXIgdGhlIHdvcmxkIHNpbmNlIHRoZXJl
IGFyZSBubyBjb252ZXJzaW9ucyB0byBwZXJmb3JtLgogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7Ci0g
ICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKKyAgICAgICAgaWYgKEpTVmFsdWUg
Z2xvYmFsT2JqZWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7Cisg
ICAgICAgICAgICBpZiAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3RWYWx1ZSkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZp
bmdBQmFkVGltZVdhdGNocG9pbnQoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KG1fZ3JhcGgsIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3Jh
cGgsIFNwZWNBcnJheSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBSZWdFeHBUZXN0Ogot
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQot
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewor
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQor
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewog
ICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IGNsb2JiZXIgdGhlIHdvcmxkIHNpbmNlIHRoZXJl
IGFyZSBubyBjb252ZXJzaW9ucyB0byBwZXJmb3JtLgogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CkBA
IC0xODgyLDYgKzE4OTEsMzMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDog
eworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUo
KTsKKyAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAq
bV9ncmFwaC5mcmVlemUoSlNWYWx1ZShhc09iamVjdChjaGlsZCktPmdsb2JhbE9iamVjdCgpKSkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG51bGxwdHI7CisgICAgICAgICAgICBib29sIG9r
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3R1cmN0dXJl
LmZvckVhY2goCisgICAgICAgICAgICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdsb2JhbE9iamVjdCA9IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGdsb2JhbE9iamVjdCAhPSBzdHJ1Y3R1cmUtPmdsb2JhbE9i
amVjdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QgJiYgb2spIHsKKyAgICAgICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUoSlNWYWx1ZShnbG9iYWxP
YmplY3QpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09iamVjdE90
aGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgog
ICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRDbG9zdXJl
VmFyKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5zY29wZU9mZnNldCgpKSkgewogICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgKm1fZ3JhcGguZnJlZXplKHZhbHVlKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
cmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqLCBCYXNpY0Js
b2NrKik7IC8vIE9ubHkgd29ya3Mgd2hlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIGxhc3Qgb25l
IHRvIGhhdmUgYmVlbiBhZGRlZCBmb3IgdGhhdCBpbmxpbmUgc3RhY2sgZW50cnkuCiAgICAgLy8g
SGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwg
ZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoaW50IHJlc3VsdE9w
ZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNh
bGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVz
dWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUq
IHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CkBAIC0xNjAxLDcgKzE2MDEsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsCiAgICAgCiAgICAgICAgIEludHJpbnNp
YyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CiAg
ICAgICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKLSAgICAgICAgICAgIGlmICho
YW5kbGVJbnRyaW5zaWNDYWxsKHJlc3VsdE9wZXJhbmQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZz
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NX
aXRoQWNjb3VudGluZykpIHsKKyAgICAgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWNDYWxsKGNh
bGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFj
Y291bnRpbmcpKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hl
Y2tzKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2Rl
KTsKICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwpAQCAtMTk5MSw3ICsxOTkxLDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KGludCByZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bChpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKGludHJpbnNpYykgewogCkBA
IC0yMTcyLDcgKzIxNzIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWND
YWxsCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRD
aGVja3MoKTsKLSAgICAgICAgTm9kZSogcmVnRXhwRXhlYyA9IGFkZFRvR3JhcGgoUmVnRXhwRXhl
YywgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgIE5vZGUqIHJlZ0V4cEV4ZWMgPSBhZGRU
b0dyYXBoKFJlZ0V4cEV4ZWMsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBhZGRUb0dy
YXBoKEdldEdsb2JhbE9iamVjdCwgY2FsbGVlKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgx
LCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRP
cGVyYW5kKSwgcmVnRXhwRXhlYyk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTIxODMsNyArMjE4Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwotICAgICAgICBOb2RlKiByZWdFeHBFeGVjID0gYWRkVG9HcmFwaChSZWdFeHBUZXN0
LCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dCgxLCByZWdpc3Rlck9mZnNldCkpKTsKKyAgICAgICAgTm9kZSogcmVnRXhwRXhlYyA9IGFkZFRv
R3JhcGgoUmVnRXhwVGVzdCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIGFkZFRvR3Jh
cGgoR2V0R2xvYmFsT2JqZWN0LCBjYWxsZWUpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEs
IHJlZ2lzdGVyT2Zmc2V0KSkpOwogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9w
ZXJhbmQpLCByZWdFeHBFeGVjKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE5
NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzQsNiArMTM0LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZQogICAgIGNhc2UgQXJpdGhMb2c6CiAgICAgY2FzZSBHZXRTY29wZToKICAg
ICBjYXNlIFNraXBTY29wZToKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNlIFN0
cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBJc1Vu
ZGVmaW5lZDoKQEAgLTEwNzgsOCArMTA3OSw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKIAogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNlIFJlZ0V4cFRl
c3Q6Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0
VXNlCi0gICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNl
KSB7CisgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0
VXNlCisgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNl
KSB7CiAgICAgICAgICAgICByZWFkKFJlZ0V4cFN0YXRlKTsKICAgICAgICAgICAgIHdyaXRlKFJl
Z0V4cFN0YXRlKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNr
QXJyYXk6CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIFNraXBTY29wZToKKyAgICBjYXNl
IEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRD
bG9zdXJlVmFyOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc2
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NzksMTEgKzg3OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICAgICAgY2FzZSBSZWdFeHBUZXN0OiB7Ci0gICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVJlZ0V4cE9iamVjdCgp
KSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWdFeHBPYmplY3RVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3Bl
Y3VsYXRlUmVnRXhwT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFJlZ0V4cE9i
amVjdFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMigpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQzKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwNDksNyArMTA1MSw4IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNlIEdldFNjb3BlOgogICAgICAg
ICBjYXNlIEdldEdldHRlcjoKLSAgICAgICAgY2FzZSBHZXRTZXR0ZXI6IHsKKyAgICAgICAgY2Fz
ZSBHZXRTZXR0ZXI6CisgICAgICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OiB7CiAgICAgICAgICAg
ICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDYgKzIxMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9k
ZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oR2V0U2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKFNraXBTY29wZSwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oR2V0R2xvYmFsT2Jq
ZWN0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9zdXJlVmFyLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhQdXRDbG9zdXJlVmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oR2V0R2xvYmFsVmFyLCBOb2RlUmVzdWx0SlMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjE5LDE3ICs2MTksMTcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25BcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyYXktPnBvcChleGVjKSk7CiB9CiAg
ICAgICAgIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVj
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEpTU3Ry
aW5nKiBhcmd1bWVudCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVn
RXhwRXhlY1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBKU1N0cmluZyogYXJndW1lbnQpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIAotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwT2JqZWN0LT5leGVjKGV4ZWMsIGFyZ3VtZW50
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWdFeHBPYmplY3QtPmV4ZWMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBhcmd1bWVudCkpOwogfQogICAgICAgICAKLUVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlYyhFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cE9i
amVjdCogcmVnRXhwT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWMoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICAKICAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CkBAIC02MzcsMTIgKzYzNywx
MiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAgICAgSlNTdHJp
bmcqIGlucHV0ID0gYXJndW1lbnQudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFpbnB1
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ0V4cE9iamVjdC0+ZXhlYyhleGVjLCBpbnB1dCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwT2JqZWN0LT5leGVjKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgaW5wdXQpKTsKIH0KICAgICAgICAgCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudCkKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAogICAgIEpTVmFsdWUgYmFz
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC02NTQsMjAgKzY1NCwyMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAgICAgSlNTdHJpbmcqIGlu
cHV0ID0gYXJndW1lbnQudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFpbnB1dCkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGFzUmVnRXhwT2JqZWN0KGJhc2UpLT5leGVjKGV4ZWMsIGlucHV0KSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc1JlZ0V4cE9iamVjdChiYXNlKS0+ZXhlYyhl
eGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KSk7CiB9CiAgICAgICAgIAotc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cE9i
amVjdCogcmVnRXhwT2JqZWN0LCBKU1N0cmluZyogaW5wdXQpCitzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEpTU3RyaW5nKiBp
bnB1dCkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CiAKLSAgICByZXR1cm4gcmVnRXhwT2JqZWN0LT50ZXN0KGV4ZWMsIGlucHV0KTsKKyAgICByZXR1
cm4gcmVnRXhwT2JqZWN0LT50ZXN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpOwogfQogCi1z
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0KEV4ZWNTdGF0ZSogZXhlYywg
UmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVu
dCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAogICAgIEpTVmFsdWUgYXJndW1lbnQg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKQEAgLTY3NSwxMiArNjc1LDEyIEBA
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QKICAgICBKU1N0cmluZyog
aW5wdXQgPSBhcmd1bWVudC50b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIWlucHV0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlZ0V4cE9iamVjdC0+dGVzdChleGVj
LCBpbnB1dCk7CisgICAgcmV0dXJuIHJlZ0V4cE9iamVjdC0+dGVzdChleGVjLCBnbG9iYWxPYmpl
Y3QsIGlucHV0KTsKIH0KIAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVz
dEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwVGVzdEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSk7CkBAIC02OTQsNyArNjk0LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVn
RXhwVGVzdAogICAgIEpTU3RyaW5nKiBpbnB1dCA9IGFyZ3VtZW50LnRvU3RyaW5nT3JOdWxsKGV4
ZWMpOwogICAgIGlmICghaW5wdXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
YXNSZWdFeHBPYmplY3QoYmFzZSktPnRlc3QoZXhlYywgaW5wdXQpOworICAgIHJldHVybiBhc1Jl
Z0V4cE9iamVjdChiYXNlKS0+dGVzdChleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KTsKIH0KIAog
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAko
cmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMyArMTAxLDEzIEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXIKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlKEV4ZWNTdGF0ZSosIGRvdWJsZSB2YWx1ZSwgSlNBcnJh
eSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QXJyYXlQb3AoRXhlY1N0YXRlKiwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3BBbmRSZWNvdmVyTGVuZ3RoKEV4ZWNT
dGF0ZSosIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcoRXhlY1N0YXRlKiwgUmVnRXhwT2JqZWN0Kiwg
SlNTdHJpbmcqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlZ0V4cEV4ZWMoRXhlY1N0YXRlKiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UmVnRXhwRXhlY0dlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blJlZ0V4cEV4ZWNTdHJpbmcoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmpl
Y3QqLCBKU1N0cmluZyopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUmVnRXhwRXhlYyhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4
cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiAvLyBUaGVzZSBjb21wYXJpc29ucyByZXR1cm4gYSBib29sZWFuIHdpdGhpbiBhIHNpemVfdCBz
dWNoIHRoYXQgdGhlIHZhbHVlIGlzIHplcm8gZXh0ZW5kZWQgdG8gZmlsbCB0aGUgcmVnaXN0ZXIu
Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEV4ZWNTdGF0
ZSosIFJlZ0V4cE9iamVjdCosIEpTU3RyaW5nKikgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdChFeGVjU3RhdGUqLCBSZWdFeHBPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwVGVzdEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdF
eHBUZXN0U3RyaW5nKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0Kiwg
SlNTdHJpbmcqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25S
ZWdFeHBUZXN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blJlZ0V4cFRlc3RHZW5lcmljKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZf
SU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlv
bkRpcmVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBF
bmNvZGVkSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk3
NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MCw3ICs1NTAsOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNl
IFNraXBTY29wZTogeworICAgICAgICBjYXNlIFNraXBTY29wZToKKyAgICAgICAgY2FzZSBHZXRH
bG9iYWxPYmplY3Q6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVj
T2JqZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxOTc2
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgY2FzZSBH
ZXRTY29wZToKICAgICBjYXNlIFNraXBTY29wZToKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoK
ICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNh
c2UgR2V0R2xvYmFsVmFyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODM2LDEwICsyODM2LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFJlZ0V4cEV4ZWM6IHsKLSAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKLSAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAg
ICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnbG9iYWxPYmpl
Y3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gZ2xvYmFsT2JqZWN0LmdwcigpOworICAgICAgICAKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKKyAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CisgICAgICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQzKCkp
OwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
ICAgICAgICBHUFJSZWcgYXJndW1lbnRHUFIgPSBhcmd1bWVudC5ncHIoKTsKICAgICAgICAgICAg
ICAgICBzcGVjdWxhdGVSZWdFeHBPYmplY3Qobm9kZS0+Y2hpbGQxKCksIGJhc2VHUFIpOwpAQCAt
Mjg0OSwxNiArMjg1MiwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlz
KTsKICAgICAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRo
aXMpOwogICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAg
IG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9h
ZC5ncHIoKSwgYmFzZUdQUiwKLSAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRHUFIpOworICAg
ICAgICAgICAgICAgICAgICBvcGVyYXRpb25SZWdFeHBFeGVjU3RyaW5nLCByZXN1bHRUYWcuZ3By
KCksIHJlc3VsdFBheWxvYWQuZ3ByKCksCisgICAgICAgICAgICAgICAgICAgIGdsb2JhbE9iamVj
dEdQUiwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQz
KCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAg
ICAgR1BSUmVnIGFyZ3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BSKCk7CiAgICAgICAgICAg
ICBHUFJSZWcgYXJndW1lbnRQYXlsb2FkR1BSID0gYXJndW1lbnQucGF5bG9hZEdQUigpOwpAQCAt
Mjg2OCwxNiArMjg3MSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwog
ICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uUmVnRXhw
RXhlYywgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBiYXNlR1BSLCBhcmd1
bWVudFRhZ0dQUiwKLSAgICAgICAgICAgICAgICBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAg
ICAgICAgICAgIG9wZXJhdGlvblJlZ0V4cEV4ZWMsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5
bG9hZC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLAorICAgICAgICAgICAgICAgIGFy
Z3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUt
PmNoaWxkMygpKTsKICAgICAgICAgR1BSUmVnIGJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwog
ICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWRHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICAg
ICAgR1BSUmVnIGFyZ3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BSKCk7CkBAIC0yODg2LDcg
KzI4ODksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1
bHRUYWcodGhpcyk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQo
dGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMs
IHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgYmFzZVRhZ0dQUiwgYmFzZVBh
eWxvYWRHUFIsIGFyZ3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgb3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMsIHJl
c3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLAorICAg
ICAgICAgICAgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIGFyZ3VtZW50VGFnR1BSLCBhcmd1
bWVudFBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQu
Z3ByKCksIG5vZGUpOwpAQCAtMjg5NCwxMCArMjg5OSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFJlZ0V4cFRl
c3Q6IHsKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmpl
Y3RVc2UpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3Ry
aW5nVXNlKSB7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBnbG9iYWxPYmplY3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSID0gZ2xvYmFsT2JqZWN0LmdwcigpOworICAgICAgICAKKyAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKKyAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CisgICAg
ICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywg
bm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRHUFIgPSBhcmd1bWVudC5ncHIo
KTsKICAgICAgICAgICAgICAgICBzcGVjdWxhdGVSZWdFeHBPYmplY3Qobm9kZS0+Y2hpbGQxKCks
IGJhc2VHUFIpOwpAQCAtMjkwNSwxNSArMjkxMywxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7Ci0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBU
ZXN0U3RyaW5nLCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25SZWdF
eHBUZXN0U3RyaW5nLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgYXJn
dW1lbnRHUFIpOwogICAgICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHQuZ3ByKCks
IG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOwogICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BS
KCk7CiAgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRQYXlsb2FkR1BSID0gYXJndW1lbnQucGF5
bG9hZEdQUigpOwpAQCAtMjkyMiwxNSArMjkzMSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICBvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQu
Z3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOworICAg
ICAgICAgICAgICAgIG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2Jq
ZWN0R1BSLCBiYXNlR1BSLCBhcmd1bWVudFRhZ0dQUiwKKyAgICAgICAgICAgICAgICBhcmd1bWVu
dFBheWxvYWRHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgCiAgICAgICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGFy
Z3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50
KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgR1BSUmVnIGJhc2VUYWdHUFIgPSBiYXNl
LnRhZ0dQUigpOwogICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWRHUFIgPSBiYXNlLnBheWxvYWRH
UFIoKTsKICAgICAgICAgR1BSUmVnIGFyZ3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BSKCk7
CkBAIC0yOTM4LDcgKzI5NDgsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMsIHJlc3VsdC5ncHIoKSwgYmFzZVRhZ0dQUiwgYmFzZVBh
eWxvYWRHUFIsIGFyZ3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMsIHJl
c3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwK
KyAgICAgICAgICAgIGFyZ3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgYm9vbGVhblJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtMzkwMSw2ICszOTEzLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZVNraXBTY29wZShu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAorICAgIGNhc2UgY29tcGlsZUdldEdsb2Jh
bE9iamVjdDoKKyAgICAgICAgY29tcGlsZUdldEdsb2JhbE9iamVjdChub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgICAgIAogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjogewogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdFRhZyh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjk2MiwxMCArMjk2MiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgfQogCiAgICAgY2FzZSBSZWdFeHBFeGVjOiB7CisgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGdsb2JhbE9iamVjdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBnbG9iYWxPYmplY3QuZ3ByKCk7Cisg
ICAgICAgIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9i
amVjdFVzZSkgewogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBT
dHJpbmdVc2UpIHsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwog
ICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAg
ICAgICBHUFJSZWcgYXJndW1lbnRHUFIgPSBhcmd1bWVudC5ncHIoKTsKICAgICAgICAgICAgICAg
ICBzcGVjdWxhdGVSZWdFeHBPYmplY3Qobm9kZS0+Y2hpbGQxKCksIGJhc2VHUFIpOwpAQCAtMjk3
MywzNiArMjk3NiwzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjU3RyaW5nLCByZXN1bHQu
Z3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0
R1BSLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CiAgICAgICAgICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJn
dW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICBHUFJSZWcg
YmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRHUFIgPSBh
cmd1bWVudC5ncHIoKTsKICAgICAgICAgICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChub2RlLT5j
aGlsZDEoKSwgYmFzZUdQUik7CiAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlYywgcmVzdWx0LmdwcigpLCBi
YXNlR1BSLCBhcmd1bWVudEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blJlZ0V4cEV4ZWMsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBhcmd1
bWVudEdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAK
ICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1l
bnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwogICAgICAgICAK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNH
ZW5lcmljLCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJpYywgcmVzdWx0LmdwcigpLCBnbG9i
YWxPYmplY3RHUFIsIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0Lmdwcigp
LCBub2RlKTsKQEAgLTMwMTAsMTAgKzMwMTMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgUmVnRXhwVGVzdDogewotICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkgewotICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKLSAg
ICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGdsb2JhbE9i
amVjdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBnbG9iYWxPYmplY3RH
UFIgPSBnbG9iYWxPYmplY3QuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBpZiAobm9kZS0+Y2hp
bGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkgeworICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKKyAgICAgICAgICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMo
KSk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAg
ICAgICAgICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwogICAgICAgICAg
ICAgICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDEoKSwgYmFzZUdQUik7CkBA
IC0zMDIxLDcgKzMwMjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nLCByZXN1
bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2Jq
ZWN0R1BSLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CiAgICAgICAgICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2ppdC5v
cjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKQEAgLTMwMjksMTUg
KzMwMzUsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hp
bGQzKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAg
ICAgICAgR1BSUmVnIGFyZ3VtZW50R1BSID0gYXJndW1lbnQuZ3ByKCk7CiAgICAgICAgICAgICBz
cGVjdWxhdGVSZWdFeHBPYmplY3Qobm9kZS0+Y2hpbGQxKCksIGJhc2VHUFIpOwogICAgICAgICAK
ICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQuZ3ByKCksIGds
b2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5vcjMyKFRydXN0
ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKQEAgLTMwNDUsMTQgKzMwNTEsMTQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBu
b2RlLT5jaGlsZDMoKSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIGFyZ3VtZW50R1BSID0gYXJndW1lbnQuZ3ByKCk7CiAgICAgICAgIAogICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVy
aWMsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9i
amVjdEdQUiwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICAKICAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVG
YWxzZSksIHJlc3VsdC5ncHIoKSk7CkBAIC0zOTMwLDYgKzM5MzYsMTAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAg
ICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAgICBicmVhazsKKworICAgIGNhc2UgY29t
cGlsZUdldEdsb2JhbE9iamVjdDoKKyAgICAgICAgY29tcGlsZUdldEdsb2JhbE9iamVjdChub2Rl
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjogewog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM0Miw2ICs1MzQyLDE2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTa2lwU2NvcGUoTm8KICAgICBjZWxsUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRH
bG9iYWxPYmplY3QoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvYmpl
Y3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgbV9qaXQuZW1pdExvYWRTdHJ1
Y3R1cmUob2JqZWN0LmdwcigpLCByZXN1bHQuZ3ByKCksIHNjcmF0Y2guZ3ByKCkpOworICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICBjZWxsUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRB
cnJheUxlbmd0aChOb2RlKiBub2RlKQogewogICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCku
dHlwZSgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMTcsMTUgKzEyMTcsMTUg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FUmVvSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VHUmVvSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVJlb0pzcyBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VHUmVvSnNzIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAg
ICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogCkBAIC0xNDQ2LDE0ICsxNDQ2LDE5IEBAIHB1YmxpYzoKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRVJlb0ogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FR0pKIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykK
ICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19K
SVRPcGVyYXRpb25fRVJlb0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklU
T3BlcmF0aW9uX0VHUmVvSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VHUmVvSnNzIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KIApAQCAtMTQ2Nyw2ICsxNDcyLDExIEBAIHB1YmxpYzoKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdKSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihKX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgaW50MzJfdCBpbW0pCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoaW1tKSkpKTsKQEAgLTE3MjIsMTQgKzE3MzIsMTQgQEAgcHVibGljOgogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0
cihjZWxsKSwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVJl
b0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCisgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR1Jlb0ogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQogICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2Fk
LCBhcmcyVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOwogICAgIH0K
LSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VSZW9K
c3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRVJlb0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmcz
KQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpQ0kgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKQEAgLTE4Mjks
MTQgKzE4MzksMTkgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFNINF8z
MkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRVJlb0ogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5
bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9u
X0VHSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJU
YWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9h
ZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgU0g0XzMyQklUX0RVTU1ZX0FS
RyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FUmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXls
b2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnM1BheWxvYWQsIGFyZzNUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdSZW9Kc3Mgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxv
YWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyVGFnLCBH
UFJSZWcgYXJnMlBheWxvYWQpCkBAIC0xODQ0LDYgKzE4NTksMTEgQEAgcHVibGljOgogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMVBheWxvYWQsIGFyZzFUYWcsIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFy
ZzJUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRU
YWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBH
UFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVn
IGFyZzJQYXlsb2FkKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMVBheWxvYWQsIGFyZzFUYWcs
IFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRh
Zyk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxv
YWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRf
MzJCSVRfRFVNTVlfQVJHIGltbSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CkBA
IC0yMzA5LDYgKzIzMjksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0U2Nv
cGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNraXBTY29wZShOb2RlKik7CisgICAgdm9pZCBj
b21waWxlR2V0R2xvYmFsT2JqZWN0KE5vZGUqKTsKIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5
TGVuZ3RoKE5vZGUqKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTEx
LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2Ug
RXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBMb29wSGludDoKICAgICBjYXNlIFNraXBT
Y29wZToKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRp
b246CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3RnVuY3Rpb246Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShy
ZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0OCw2ICs3NDgsOSBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFNraXBTY29wZToKICAgICAgICAgICAgIGNvbXBpbGVTa2lwU2NvcGUoKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKKyAgICAgICAg
ICAgIGNvbXBpbGVHZXRHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjb21waWxlR2V0Q2xvc3VyZVZhcigp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDc1LDYgKzQ0NzgsMTIgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBtX2hlYXBzLkpTU2NvcGVfbmV4dCkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGls
ZUdldEdsb2JhbE9iamVjdCgpCisgICAgeworICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbG9h
ZFN0cnVjdHVyZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0
KSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUdldENsb3N1cmVWYXIoKQogICAgIHsK
QEAgLTY0NDAsNTIgKzY0NDksNjYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcGlsZVJlZ0V4
cEV4ZWMoKQogICAgIHsKLSAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFJlZ0V4cE9iamVjdFVzZSkgewotICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dSZWdFeHBP
YmplY3QobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSBnbG9iYWxPYmplY3QgPSBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fbm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkgeworICAgICAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dSZWdFeHBPYmplY3QobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdV
c2UpIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dTdHJpbmcobV9ub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkg
PT0gU3RyaW5nVXNlKSB7CisgICAgICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93U3Ry
aW5nKG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwoCi0gICAgICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uUmVnRXhwRXhlY1N0cmluZyksIG1fY2FsbEZyYW1lLCBiYXNlLCBhcmd1bWVudCk7CisgICAg
ICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhl
Y1N0cmluZyksIG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAgICAgICAgICAg
IGJhc2UsIGFyZ3VtZW50KTsKICAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwot
ICAgICAgICAgICAgc2V0SlNWYWx1ZSgKLSAgICAgICAgICAgICAgICB2bUNhbGwoSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjKSwgbV9jYWxsRnJhbWUsIGJhc2UsIGFy
Z3VtZW50KSk7CisgICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKKyAgICAg
ICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWMpLCBt
X2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBiYXNlLAorICAgICAgICAgICAgICAgIGFyZ3VtZW50
KQorICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUoCi0gICAgICAgICAgICB2bUNhbGwo
SW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJpYyksIG1fY2Fs
bEZyYW1lLCBiYXNlLCBhcmd1bWVudCkpOworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDMoKSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCisg
ICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5l
cmljKSwgbV9jYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYmFzZSwKKyAgICAgICAgICAgIGFyZ3Vt
ZW50KTsKKyAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIAogICAgIHZvaWQgY29t
cGlsZVJlZ0V4cFRlc3QoKQogICAgIHsKLSAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkgewotICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBs
b3dSZWdFeHBPYmplY3QobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSBnbG9iYWxP
YmplY3QgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAKKyAgICAgICAgaWYg
KG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkgeworICAgICAg
ICAgICAgTFZhbHVlIGJhc2UgPSBsb3dSZWdFeHBPYmplY3QobV9ub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9
PSBTdHJpbmdVc2UpIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dTdHJp
bmcobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDMoKS51
c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CisgICAgICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50
ID0gbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgICAgIEludDMyLCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyksIG1fY2FsbEZyYW1lLCBiYXNlLCBhcmd1bWVu
dCk7CisgICAgICAgICAgICAgICAgICAgIEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
UmVnRXhwVGVzdFN0cmluZyksIG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAg
ICAgICAgICAgIGJhc2UsIGFyZ3VtZW50KTsKICAgICAgICAgICAgICAgICBzZXRCb29sZWFuKHJl
c3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAg
ICAgICAgICAgc2V0Qm9vbGVhbigKLSAgICAgICAgICAgICAgICB2bUNhbGwoSW50MzIsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGFyZ3Vt
ZW50KSk7CisgICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+
Y2hpbGQzKCkpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKKyAgICAgICAg
ICAgICAgICBJbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3QpLCBtX2Nh
bGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBiYXNlLAorICAgICAgICAgICAgICAgIGFyZ3VtZW50KTsK
KyAgICAgICAgICAgIHNldEJvb2xlYW4ocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MigpKTsKLSAgICAgICAgc2V0Qm9vbGVhbigKLSAgICAgICAgICAgIHZtQ2FsbChJbnQzMiwgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKSwgbV9jYWxsRnJhbWUsIGJh
c2UsIGFyZ3VtZW50KSk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMygpKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKKyAgICAgICAgICAg
IEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMpLCBtX2Nh
bGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBiYXNlLAorICAgICAgICAgICAgYXJndW1lbnQpOworICAg
ICAgICBzZXRCb29sZWFuKHJlc3VsdCk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlTmV3UmVn
ZXhwKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShy
ZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiw5IEBAIHR5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiAoKkoKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiAoKkpfSklUT3BlcmF0aW9uX0VDWikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgaW50MzJfdCk7
CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9F
REEpKEV4ZWNTdGF0ZSosIGRvdWJsZSwgSlNBcnJheSopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUUpKEV4ZWNTdGF0ZSosIEV4ZWNTdGF0
ZSopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRp
b25fRUdSZW9KKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpf
SklUT3BlcmF0aW9uX0VHUmVvSnNzKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4
cE9iamVjdCosIEpTU3RyaW5nKik7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gKCpKX0pJVE9wZXJhdGlvbl9FR0pKKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSSkoRXhlY1N0YXRlKiwgVW5pcXVlZFN0cmlu
Z0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3Bl
cmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSlopKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKQEAgLTIwMSw3ICsyMDQsMTAgQEAgdHlwZWRlZiBpbnQz
Ml90IEpJVF9PUEVSQVRJT04gKCpaX0pJVE9wZQogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJ
T04gKCpaX0pJVE9wZXJhdGlvbl9FSlpaKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50
MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVy
YXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKTsKIHR5cGVkZWYgc2l6ZV90
IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FR0MpKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgSlNDZWxsKik7Ci10eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRP
cGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKK3R5cGVkZWYgc2l6ZV90
IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FR0opKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAo
KlNfSklUT3BlcmF0aW9uX0VHUmVvSikoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWdF
eHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9O
ICgqU19KSVRPcGVyYXRpb25fRUdSZW9Kc3MpKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0Kiwg
UmVnRXhwT2JqZWN0KiwgSlNTdHJpbmcqKTsKK3R5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04g
KCpTX0pJVE9wZXJhdGlvbl9FSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSk7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25f
RUpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRl
ZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VPSnNzKShFeGVjU3RhdGUq
LCBKU09iamVjdCosIEpTU3RyaW5nKik7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgq
U19KSVRPcGVyYXRpb25fRVJlb0opKEV4ZWNTdGF0ZSosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDcgKzM2
NCw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIG1fcmVn
RXhwUHJvdG90eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIHRo
aXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSksIGVtcHR5UmVnZXgpKTsKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4
cFByb3RvdHlwZS5nZXQoKSkpOwotICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCAqdGhpcykp
OworICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRl
UmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCB0aGlzKSk7CisgICAgbV9yZWdFeHBNYXRj
aGVzQXJyYXlTbG93UHV0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hl
c0FycmF5U2xvd1B1dFN0cnVjdHVyZSh2bSwgdGhpcykpOwogCiAgICAgbV9tb2R1bGVSZWNvcmRT
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKQEAgLTc2MSw2ICs3NjIsOSBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0OjpoYXZlQUJhZFRpbWUoVk0mIHZtCiAgICAgLy8gdGhpcyBvYmpl
Y3Qgbm93IGxvYWQgYSBzdHJ1Y3R1cmUgdGhhdCB1c2VzIFNsb3dQdXQuCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IE51bWJlck9mSW5kZXhpbmdTaGFwZXM7ICsraSkKICAgICAgICAgbV9h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVEdXJpbmdBbGxvY2F0aW9uW2ldLnNldCh2bSwg
dGhpcywgb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlKSk7CisKKyAgICAvLyBTYW1lIGZvciBhbnkgc3BlY2lhbCBhcnJheSBz
dHJ1Y3R1cmVzLgorICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhp
cywgbV9yZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJlLmdldCgpKTsKICAgICAKICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCBhbGwgb2JqZWN0cyB0aGF0IGhhdmUgaW5kZXhlZCBzdG9yYWdl
IHN3aXRjaCB0byB0aGUgc2xvdyBraW5kIG9mCiAgICAgLy8gaW5kZXhlZCBzdG9yYWdlLgpAQCAt
OTAwLDYgKzkwNCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRP
YmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcmVnRXhwTWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1cmUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZp
c2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsNiArMjc4LDcgQEAgcHJvdGVjdGVkOgogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U2xv
d1B1dFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZVJlY29y
ZFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFj
ZU9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3h5T2Jq
ZWN0U3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsNyArMzkzLDcgQEAgcHVibGljOgogICAg
ICAgICBpbml0aWFsaXplSW5kZXgodm0sIGksIHYsIGluZGV4aW5nVHlwZSgpKTsKICAgICB9CiAK
LSAgICB2b2lkIGluaXRpYWxpemVJbmRleChWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdiwg
SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW5pdGlh
bGl6ZUluZGV4KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2LCBJbmRleGluZ1R5cGUgaW5k
ZXhpbmdUeXBlKQogICAgIHsKICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRl
cmZseS5nZXQodGhpcyk7CiAgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3Vs
dC5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAg
SlNBcnJheSogUmVnRXhwQ2FjaGVkUmVzdWx0OjpsYXN0UmVzdWx0KAogewogICAgIGlmICghbV9y
ZWlmaWVkKSB7CiAgICAgICAgIG1fcmVpZmllZElucHV0LnNldChleGVjLT52bSgpLCBvd25lciwg
bV9sYXN0SW5wdXQuZ2V0KCkpOwotICAgICAgICBtX3JlaWZpZWRSZXN1bHQuc2V0KGV4ZWMtPnZt
KCksIG93bmVyLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgbV9sYXN0SW5wdXQuZ2V0
KCksIG1fbGFzdFJlZ0V4cC5nZXQoKSwgbV9yZXN1bHQpKTsKKyAgICAgICAgbV9yZWlmaWVkUmVz
dWx0LnNldChleGVjLT52bSgpLCBvd25lciwgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbV9sYXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJl
Z0V4cC5nZXQoKSwgbV9yZXN1bHQpKTsKICAgICAgICAgbV9yZWlmaWVkID0gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIG1fcmVpZmllZFJlc3VsdC5nZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcAkocmV2aXNp
b24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hl
c0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMzAgKzUwLDU2IEBAIHN0YXRpYyBKU0Fy
cmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmUKICAgICByZXR1cm4gSlNBcnJheTo6Y3JlYXRl
V2l0aEJ1dHRlcmZseSh2bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOwogfQogCi1KU0FycmF5KiBj
cmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogaW5wdXQs
IFJlZ0V4cCogcmVnRXhwLCBNYXRjaFJlc3VsdCByZXN1bHQpCitKU0FycmF5KiBjcmVhdGVSZWdF
eHBNYXRjaGVzQXJyYXkoCisgICAgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1N0cmluZyogaW5wdXQsIFJlZ0V4cCogcmVnRXhwLAorICAgIE1hdGNoUmVz
dWx0IHJlc3VsdCkKIHsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiY3JlYXRl
UmVnRXhwTWF0Y2hlc0FycmF5Iik7CisgICAgCiAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICBKU0FycmF5KiBhcnJheSA9IHRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWRSZWdFeHBNYXRjaGVzQXJyYXkodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSAr
IDEpOwotICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5KTsKIAotICAgIFNhbXBsaW5nUmVnaW9uIHNh
bXBsaW5nUmVnaW9uKCJSZWlmeWluZyBzdWJzdHJpbmcgcHJvcGVydGllcyIpOwotCi0gICAgYXJy
YXktPmluaXRpYWxpemVJbmRleCh2bSwgMCwganNTdWJzdHJpbmcoZXhlYywgaW5wdXQsIHJlc3Vs
dC5zdGFydCwgcmVzdWx0LmVuZCAtIHJlc3VsdC5zdGFydCksIEFycmF5V2l0aENvbnRpZ3VvdXMp
OwotCi0gICAgaWYgKHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gcmVnRXhwLT5udW1TdWJwYXR0
ZXJucygpKSB7Ci0gICAgICAgIFZlY3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKLSAg
ICAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaCh2bSwgaW5wdXQtPnZhbHVlKGV4ZWMp
LCByZXN1bHQuc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKLSAgICAgICAgQVNTRVJUX1VOVVNF
RChwb3NpdGlvbiwgcG9zaXRpb24gPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9u
KSA9PSByZXN1bHQuc3RhcnQpOwotICAgICAgICBBU1NFUlQocmVzdWx0LnN0YXJ0ID09IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3VicGF0dGVyblJlc3VsdHNbMF0pKTsKLSAgICAgICAgQVNTRVJUKHJl
c3VsdC5lbmQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOwot
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkg
ewotICAgICAgICAgICAgaW50IHN0YXJ0ID0gc3VicGF0dGVyblJlc3VsdHNbMiAqIGldOwotICAg
ICAgICAgICAgaWYgKHN0YXJ0ID49IDApCi0gICAgICAgICAgICAgICAgYXJyYXktPmluaXRpYWxp
emVJbmRleCh2bSwgaSwganNTdWJzdHJpbmcoZXhlYywgaW5wdXQsIHN0YXJ0LCBzdWJwYXR0ZXJu
UmVzdWx0c1syICogaSArIDFdIC0gc3RhcnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBp
LCBqc1VuZGVmaW5lZCgpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICBKU0FycmF5KiBhcnJh
eTsKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpIHsKKyAgICAgICAg
YXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3Qt
PnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpLCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkg
KyAxKTsKKyAgICAgICAgCisgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIDAsIGpz
U3Vic3RyaW5nKGV4ZWMsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQu
c3RhcnQpKTsKKyAgICAgICAgCisgICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9
IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgeworICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+
IHN1YnBhdHRlcm5SZXN1bHRzOworICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5t
YXRjaCh2bSwgaW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBhdHRlcm5SZXN1
bHRzKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAg
JiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKKyAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHQuc3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0
ZXJuUmVzdWx0c1swXSkpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsK
KyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07Cisg
ICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAgIGFycmF5
LT5pbml0aWFsaXplSW5kZXgodm0sIGksIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCBzdGFydCwg
c3VicGF0dGVyblJlc3VsdHNbMiAqIGkgKyAxXSAtIHN0YXJ0KSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBpLCBq
c1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIGFycmF5ID0gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheSh2
bSwgZ2xvYmFsT2JqZWN0LT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgcmVnRXhwLT5u
dW1TdWJwYXR0ZXJucygpICsgMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5KTsKKyAg
ICAgICAgCisgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIDAsIGpzU3Vic3RyaW5n
KGV4ZWMsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpLCBB
cnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAgCisgICAgICAgIGlmICh1bnNpZ25lZCBudW1T
dWJwYXR0ZXJucyA9IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgeworICAgICAgICAgICAgVmVj
dG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOworICAgICAgICAgICAgaW50IHBvc2l0aW9u
ID0gcmVnRXhwLT5tYXRjaCh2bSwgaW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1
YnBhdHRlcm5SZXN1bHRzKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBv
c2l0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0
YXJ0KTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuc3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1swXSkpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5l
bmQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRl
cm5zOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0
c1syICogaV07CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAg
ICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIGksIGpzU3Vic3RyaW5nKGV4ZWMsIGlu
cHV0LCBzdGFydCwgc3VicGF0dGVyblJlc3VsdHNbMiAqIGkgKyAxXSAtIHN0YXJ0KSwgQXJyYXlX
aXRoQ29udGlndW91cyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBpLCBqc1VuZGVmaW5lZCgpLCBBcnJheVdpdGhD
b250aWd1b3VzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtODMsOSAr
MTA5LDkgQEAgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdAogICAgIHJl
dHVybiBhcnJheTsKIH0KIAotU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlSW1wbChWTSYgdm0sIEpTR0xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCiB7Ci0gICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QuYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ2xvYmFsT2JqZWN0LmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihpbmRleGluZ1R5cGUpOwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKICAgICBzdHJ1
Y3R1cmUgPSBzdHJ1Y3R1cmUtPmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5pbmRleCwgMCwgb2Zmc2V0KTsKICAgICBBU1NFUlQob2Zmc2V0ID09
IGluZGV4UHJvcGVydHlPZmZzZXQpOwpAQCAtOTQsNCArMTIwLDE0IEBAIFN0cnVjdHVyZSogY3Jl
YXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWMKICAgICByZXR1cm4gc3RydWN0dXJlOwogfQogCitT
dHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVN0cnVjdHVyZUlt
cGwodm0sIGdsb2JhbE9iamVjdCwgQXJyYXlXaXRoQ29udGlndW91cyk7Cit9CisKK1N0cnVjdHVy
ZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVN0cnVjdHVyZUlt
cGwodm0sIGdsb2JhbE9iamVjdCwgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4ICsyNiw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1KU0FycmF5KiBjcmVh
dGVSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBSZWdFeHAqLCBNYXRj
aFJlc3VsdCk7Ci1TdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0Jik7CitKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXko
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyosIFJlZ0V4cCosIE1hdGNoUmVz
dWx0KTsKK1N0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqKTsKK1N0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U2xv
d1B1dFN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiAKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lvbiAx
OTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMjAgKzE1OSwyMCBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlCiAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCi1KU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlYyhFeGVj
U3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcpCitKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhl
YyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5n
KiBzdHJpbmcpCiB7Ci0gICAgaWYgKE1hdGNoUmVzdWx0IHJlc3VsdCA9IG1hdGNoKGV4ZWMsIHN0
cmluZykpCi0gICAgICAgIHJldHVybiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgc3Ry
aW5nLCByZWdFeHAoKSwgcmVzdWx0KTsKKyAgICBpZiAoTWF0Y2hSZXN1bHQgcmVzdWx0ID0gbWF0
Y2goZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJpbmcpKQorICAgICAgICByZXR1cm4gY3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nLCByZWdFeHAoKSwgcmVz
dWx0KTsKICAgICByZXR1cm4ganNOdWxsKCk7CiB9CiAKIC8vIFNoYXJlZCBpbXBsZW1lbnRhdGlv
biB1c2VkIGJ5IHRlc3QgYW5kIGV4ZWMuCi1NYXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNo
KEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykKK01hdGNoUmVzdWx0IFJlZ0V4cE9i
amVjdDo6bWF0Y2goRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1N0cmluZyogc3RyaW5nKQogewogICAgIFJlZ0V4cCogcmVnRXhwID0gdGhpcy0+cmVnRXhw
KCk7Ci0gICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBDb25zdHJ1Y3RvcigpOworICAgIFJlZ0V4cENvbnN0
cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0
b3IoKTsKICAgICBTdHJpbmcgaW5wdXQgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOwotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlm
ICghcmVnRXhwLT5nbG9iYWwoKSkKICAgICAgICAgcmV0dXJuIHJlZ0V4cENvbnN0cnVjdG9yLT5w
ZXJmb3JtTWF0Y2godm0sIHJlZ0V4cCwgc3RyaW5nLCBpbnB1dCwgMCk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAxOTc2
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNjEsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2xh
c3RJbmRleC5nZXQoKTsKICAgICB9CiAKLSAgICBib29sIHRlc3QoRXhlY1N0YXRlKiBleGVjLCBK
U1N0cmluZyogc3RyaW5nKSB7IHJldHVybiBtYXRjaChleGVjLCBzdHJpbmcpOyB9Ci0gICAgSlNW
YWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CisgICAgYm9vbCB0ZXN0KEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZykg
eyByZXR1cm4gbWF0Y2goZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJpbmcpOyB9CisgICAgSlNWYWx1
ZSBleGVjKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKIAogICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CkBAIC05
Nyw3ICs5Nyw3IEBAIHByb3RlY3RlZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
Y29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKIHByaXZhdGU6
Ci0gICAgTWF0Y2hSZXN1bHQgbWF0Y2goRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKKyAgICBNYXRj
aFJlc3VsdCBtYXRjaChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAK
ICAgICBXcml0ZUJhcnJpZXI8UmVnRXhwPiBtX3JlZ0V4cDsKICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4gbV9sYXN0SW5kZXg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMzUsNyArMTAzNSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG8KICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAgICAgSlNTdHJp
bmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBTdHJpbmcgcyA9IHN0
cmluZy0+dmFsdWUoZXhlYyk7Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAg
ICBWTSogdm0gPSAmZ2xvYmFsT2JqZWN0LT52bSgpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogCkBAIC0xMDY3LDExICsxMDY4LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgcmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkpOwogICAgIH0KLSAgICBSZWdFeHBDb25zdHJ1
Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJl
Z0V4cENvbnN0cnVjdG9yKCk7CisgICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVj
dG9yID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25zdHJ1Y3RvcigpOwogICAgIE1hdGNoUmVzdWx0
IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goKnZtLCByZWdFeHAsIHN0
cmluZywgcywgMCk7CiAgICAgLy8gY2FzZSB3aXRob3V0ICdnJyBmbGFnIGlzIGhhbmRsZWQgbGlr
ZSBSZWdFeHAucHJvdG90eXBlLmV4ZWMKICAgICBpZiAoIWdsb2JhbCkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywg
c3RyaW5nLCByZWdFeHAsIHJlc3VsdCkgOiBqc051bGwoKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0ID8gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RyaW5nLCByZWdFeHAsIHJlc3VsdCkgOiBqc051bGwoKSk7CiAKICAgICAvLyBy
ZXR1cm4gYXJyYXkgb2YgbWF0Y2hlcwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24g
MTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsOSBAQCBwdWJsaWM6CiAgICAgTm9uUHJvcGVydHlU
cmFuc2l0aW9uIHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSBjb25zdDsKICAgICAg
ICAgCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
Z2xvYmFsT2JqZWN0LmdldCgpOyB9CisKKyAgICAvLyBOT1RFOiBUaGlzIG1ldGhvZCBzaG91bGQg
b25seSBiZSBjYWxsZWQgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBzdHJ1Y3R1cmVzLCBzaW5jZSB0
aGUgZ2xvYmFsCisgICAgLy8gb2JqZWN0IG9mIGEgc3RydWN0dXJlIGlzIHByZXN1bWVkIHRvIGJl
IGltbXV0YWJsZSBpbiBhIGJ1bmNoIG9mIHBsYWNlcy4KICAgICB2b2lkIHNldEdsb2JhbE9iamVj
dChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIHsgbV9nbG9iYWxPYmplY3Qu
c2V0KHZtLCB0aGlzLCBnbG9iYWxPYmplY3QpOyB9CiAgICAgICAgIAogICAgIEpTVmFsdWUgc3Rv
cmVkUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7IH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXkt
YmFkLXRpbWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9yZWdleHAtbWF0Y2hlcy1hcnJheS1iYWQtdGltZS5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXktYmFk
LXRpbWUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorKGZ1bmN0aW9uKCkgewor
ICAgIHZhciBjb3VudCA9IDExOworCisgICAgdmFyIGFycmF5OworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBhcnJheSA9IC9mb28vLmV4ZWMoImZvbyIpOwor
ICAgICAgICBpZiAoYXJyYXlbMF0gIT0gImZvbyIpCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyBhcnJheVswXTsKKyAgICB9CisKKyAgICBkZWxldGUgYXJyYXlbMF07
CisKKyAgICBBcnJheS5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXygiMCIsIGZ1bmN0aW9uKHZh
bHVlKSB7IGNvdW50ICs9IHZhbHVlOyB9KTsKKyAgICAKKyAgICBhcnJheVswXSA9IDQyOworICAg
IGlmIChjb3VudCAhPSA1MykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgY291bnQ6ICIgKyBj
b3VudDsKK30pKCk7CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
cmVnZXhwLW1hdGNoZXMtYXJyYXktc2xvdy1wdXQuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZWdleHAtbWF0Y2hlcy1hcnJheS1zbG93LXB1dC5q
cwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVn
ZXhwLW1hdGNoZXMtYXJyYXktc2xvdy1wdXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NSBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb3VudCA9IDA7CisgICAgQXJyYXkucHJvdG90
eXBlLl9fZGVmaW5lU2V0dGVyX18oIjAiLCBmdW5jdGlvbih2YWx1ZSkgeyBjb3VudCArPSB2YWx1
ZTsgfSk7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAg
ICAgIHZhciBhcnJheSA9IC9mb28vLmV4ZWMoImZvbyIpOworICAgICAgICBpZiAoYXJyYXlbMF0g
IT0gImZvbyIpCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBhcnJh
eVswXTsKKyAgICAgICAgZGVsZXRlIGFycmF5WzBdOworICAgICAgICBhcnJheVswXSA9IDQyOwor
ICAgICAgICBpZiAoY291bnQgIT0gKGkgKyAxKSAqIDQyKQorICAgICAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgY291bnQgYXQgaSA9ICIgKyBpICsgIjogIiArIGNvdW50OworICAgIH0KK30pKCk7
CisgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273126</attachid>
            <date>2016-03-05 21:50:30 -0800</date>
            <delta_ts>2016-03-06 00:30:37 -0800</delta_ts>
            <desc>seems to work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>67685</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTU1NCwxNyArMTU1NCwyNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAgICAgCiAgICAgY2FzZSBSZWdFeHBFeGVjOgot
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQot
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewor
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQor
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewog
ICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IGNsb2JiZXIgdGhlIHdvcmxkIHNpbmNlIHRoZXJl
IGFyZSBubyBjb252ZXJzaW9ucyB0byBwZXJmb3JtLgogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7Ci0g
ICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKKyAgICAgICAgaWYgKEpTVmFsdWUg
Z2xvYmFsT2JqZWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7Cisg
ICAgICAgICAgICBpZiAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3RWYWx1ZSkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZp
bmdBQmFkVGltZVdhdGNocG9pbnQoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KG1fZ3JhcGgsIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3Jh
cGgsIFNwZWNBcnJheSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBSZWdFeHBUZXN0Ogot
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQot
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewor
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQor
ICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewog
ICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IGNsb2JiZXIgdGhlIHdvcmxkIHNpbmNlIHRoZXJl
IGFyZSBubyBjb252ZXJzaW9ucyB0byBwZXJmb3JtLgogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CkBA
IC0xODgyLDYgKzE4OTEsMzMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDog
eworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUo
KTsKKyAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAq
bV9ncmFwaC5mcmVlemUoSlNWYWx1ZShhc09iamVjdChjaGlsZCktPmdsb2JhbE9iamVjdCgpKSkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG51bGxwdHI7CisgICAgICAgICAgICBib29sIG9r
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJl
LmZvckVhY2goCisgICAgICAgICAgICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdsb2JhbE9iamVjdCA9IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGdsb2JhbE9iamVjdCAhPSBzdHJ1Y3R1cmUtPmdsb2JhbE9i
amVjdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QgJiYgb2spIHsKKyAgICAgICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUoSlNWYWx1ZShnbG9iYWxP
YmplY3QpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09iamVjdE90
aGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgog
ICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRDbG9zdXJl
VmFyKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLCBub2RlLT5zY29wZU9mZnNldCgpKSkgewogICAg
ICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgKm1fZ3JhcGguZnJlZXplKHZhbHVlKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
cmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2FuY2VsTGlua2luZ0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqLCBCYXNpY0Js
b2NrKik7IC8vIE9ubHkgd29ya3Mgd2hlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIGxhc3Qgb25l
IHRvIGhhdmUgYmVlbiBhZGRlZCBmb3IgdGhhdCBpbmxpbmUgc3RhY2sgZW50cnkuCiAgICAgLy8g
SGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwg
ZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hlY2tzRnVuY3Rvcj4KLSAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoaW50IHJlc3VsdE9w
ZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0
b3ImIGluc2VydENoZWNrcyk7CisgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNh
bGxlZSwgaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hlY2tzRnVuY3Rvcj4KICAgICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVz
dWx0T3BlcmFuZCwgY29uc3QgR2V0QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUq
IHRoaXNOb2RlLCBjb25zdCBDaGVja3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+CkBAIC0xNjAxLDcgKzE2MDEsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsCiAgICAgCiAgICAgICAgIEludHJpbnNp
YyBpbnRyaW5zaWMgPSBjYWxsZWUuaW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CiAg
ICAgICAgIGlmIChpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMpIHsKLSAgICAgICAgICAgIGlmICho
YW5kbGVJbnRyaW5zaWNDYWxsKHJlc3VsdE9wZXJhbmQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZz
ZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NX
aXRoQWNjb3VudGluZykpIHsKKyAgICAgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWNDYWxsKGNh
bGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFj
Y291bnRpbmcpKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hl
Y2tzKTsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2Rl
KTsKICAgICAgICAgICAgICAgICBlbWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwpAQCAtMTk5MSw3ICsxOTkxLDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KGludCByZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGVja3NGdW5jdG9yPgotYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bChpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zm
c2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNr
c0Z1bmN0b3ImIGluc2VydENoZWNrcykKIHsKICAgICBzd2l0Y2ggKGludHJpbnNpYykgewogCkBA
IC0yMTcyLDcgKzIxNzIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWND
YWxsCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRD
aGVja3MoKTsKLSAgICAgICAgTm9kZSogcmVnRXhwRXhlYyA9IGFkZFRvR3JhcGgoUmVnRXhwRXhl
YywgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7CisgICAgICAgIE5vZGUqIHJlZ0V4cEV4ZWMgPSBhZGRU
b0dyYXBoKFJlZ0V4cEV4ZWMsIE9wSW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBhZGRUb0dy
YXBoKEdldEdsb2JhbE9iamVjdCwgY2FsbGVlKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgx
LCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRP
cGVyYW5kKSwgcmVnRXhwRXhlYyk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTIxODMsNyArMjE4Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGluc2VydENo
ZWNrcygpOwotICAgICAgICBOb2RlKiByZWdFeHBFeGVjID0gYWRkVG9HcmFwaChSZWdFeHBUZXN0
LCBPcEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dCgxLCByZWdpc3Rlck9mZnNldCkpKTsKKyAgICAgICAgTm9kZSogcmVnRXhwRXhlYyA9IGFkZFRv
R3JhcGgoUmVnRXhwVGVzdCwgT3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIGFkZFRvR3Jh
cGgoR2V0R2xvYmFsT2JqZWN0LCBjYWxsZWUpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoMCwgcmVnaXN0ZXJPZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEs
IHJlZ2lzdGVyT2Zmc2V0KSkpOwogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9w
ZXJhbmQpLCByZWdFeHBFeGVjKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE5
NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzQsNiArMTM0LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZQogICAgIGNhc2UgQXJpdGhMb2c6CiAgICAgY2FzZSBHZXRTY29wZToKICAg
ICBjYXNlIFNraXBTY29wZToKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNlIFN0
cmluZ0NoYXJDb2RlQXQ6CiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBJc1Vu
ZGVmaW5lZDoKQEAgLTEwNzgsOCArMTA3OSw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKIAogICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNlIFJlZ0V4cFRl
c3Q6Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0
VXNlCi0gICAgICAgICAgICAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNl
KSB7CisgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0
VXNlCisgICAgICAgICAgICAmJiBub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNl
KSB7CiAgICAgICAgICAgICByZWFkKFJlZ0V4cFN0YXRlKTsKICAgICAgICAgICAgIHdyaXRlKFJl
Z0V4cFN0YXRlKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNr
QXJyYXk6CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIFNraXBTY29wZToKKyAgICBjYXNl
IEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRD
bG9zdXJlVmFyOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc2
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NzksMTEgKzg3OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgUmVnRXhwRXhlYzoKICAgICAgICAgY2FzZSBSZWdFeHBUZXN0OiB7Ci0gICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVJlZ0V4cE9iamVjdCgp
KSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxSZWdFeHBPYmplY3RVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3Bl
Y3VsYXRlUmVnRXhwT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFJlZ0V4cE9i
amVjdFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMigpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgZml4
RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQzKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwNDksNyArMTA1MSw4IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNlIEdldFNjb3BlOgogICAgICAg
ICBjYXNlIEdldEdldHRlcjoKLSAgICAgICAgY2FzZSBHZXRTZXR0ZXI6IHsKKyAgICAgICAgY2Fz
ZSBHZXRTZXR0ZXI6CisgICAgICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OiB7CiAgICAgICAgICAg
ICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDYgKzIxMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9k
ZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oR2V0U2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKFNraXBTY29wZSwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oR2V0R2xvYmFsT2Jq
ZWN0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhHZXRDbG9zdXJlVmFyLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhQdXRDbG9zdXJlVmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oR2V0R2xvYmFsVmFyLCBOb2RlUmVzdWx0SlMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjE5LDE3ICs2MTksMTcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25BcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXJyYXktPnBvcChleGVjKSk7CiB9CiAg
ICAgICAgIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVj
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEpTU3Ry
aW5nKiBhcmd1bWVudCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVn
RXhwRXhlY1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBKU1N0cmluZyogYXJndW1lbnQpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIAotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwT2JqZWN0LT5leGVjKGV4ZWMsIGFyZ3VtZW50
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWdFeHBPYmplY3QtPmV4ZWMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBhcmd1bWVudCkpOwogfQogICAgICAgICAKLUVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlYyhFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cE9i
amVjdCogcmVnRXhwT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWMoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICAKICAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CkBAIC02MzcsMTIgKzYzNywx
MiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAgICAgSlNTdHJp
bmcqIGlucHV0ID0gYXJndW1lbnQudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFpbnB1
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlZ0V4cE9iamVjdC0+ZXhlYyhleGVjLCBpbnB1dCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVnRXhwT2JqZWN0LT5leGVjKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgaW5wdXQpKTsKIH0KICAgICAgICAgCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudCkKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAogICAgIEpTVmFsdWUgYmFz
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC02NTQsMjAgKzY1NCwyMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAgICAgSlNTdHJpbmcqIGlu
cHV0ID0gYXJndW1lbnQudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFpbnB1dCkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGFzUmVnRXhwT2JqZWN0KGJhc2UpLT5leGVjKGV4ZWMsIGlucHV0KSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc1JlZ0V4cE9iamVjdChiYXNlKS0+ZXhlYyhl
eGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KSk7CiB9CiAgICAgICAgIAotc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cE9i
amVjdCogcmVnRXhwT2JqZWN0LCBKU1N0cmluZyogaW5wdXQpCitzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEpTU3RyaW5nKiBp
bnB1dCkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CiAKLSAgICByZXR1cm4gcmVnRXhwT2JqZWN0LT50ZXN0KGV4ZWMsIGlucHV0KTsKKyAgICByZXR1
cm4gcmVnRXhwT2JqZWN0LT50ZXN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpOwogfQogCi1z
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0KEV4ZWNTdGF0ZSogZXhlYywg
UmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVu
dCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAogICAgIEpTVmFsdWUgYXJndW1lbnQg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKQEAgLTY3NSwxMiArNjc1LDEyIEBA
IHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QKICAgICBKU1N0cmluZyog
aW5wdXQgPSBhcmd1bWVudC50b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIWlucHV0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlZ0V4cE9iamVjdC0+dGVzdChleGVj
LCBpbnB1dCk7CisgICAgcmV0dXJuIHJlZ0V4cE9iamVjdC0+dGVzdChleGVjLCBnbG9iYWxPYmpl
Y3QsIGlucHV0KTsKIH0KIAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVz
dEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwVGVzdEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSk7CkBAIC02OTQsNyArNjk0LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVn
RXhwVGVzdAogICAgIEpTU3RyaW5nKiBpbnB1dCA9IGFyZ3VtZW50LnRvU3RyaW5nT3JOdWxsKGV4
ZWMpOwogICAgIGlmICghaW5wdXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4g
YXNSZWdFeHBPYmplY3QoYmFzZSktPnRlc3QoZXhlYywgaW5wdXQpOworICAgIHJldHVybiBhc1Jl
Z0V4cE9iamVjdChiYXNlKS0+dGVzdChleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KTsKIH0KIAog
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAko
cmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMyArMTAxLDEzIEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXIKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlKEV4ZWNTdGF0ZSosIGRvdWJsZSB2YWx1ZSwgSlNBcnJh
eSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
QXJyYXlQb3AoRXhlY1N0YXRlKiwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3BBbmRSZWNvdmVyTGVuZ3RoKEV4ZWNT
dGF0ZSosIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcoRXhlY1N0YXRlKiwgUmVnRXhwT2JqZWN0Kiwg
SlNTdHJpbmcqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlZ0V4cEV4ZWMoRXhlY1N0YXRlKiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UmVnRXhwRXhlY0dlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blJlZ0V4cEV4ZWNTdHJpbmcoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmpl
Y3QqLCBKU1N0cmluZyopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUmVnRXhwRXhlYyhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4
cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiAvLyBUaGVzZSBjb21wYXJpc29ucyByZXR1cm4gYSBib29sZWFuIHdpdGhpbiBhIHNpemVfdCBz
dWNoIHRoYXQgdGhlIHZhbHVlIGlzIHplcm8gZXh0ZW5kZWQgdG8gZmlsbCB0aGUgcmVnaXN0ZXIu
Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEV4ZWNTdGF0
ZSosIFJlZ0V4cE9iamVjdCosIEpTU3RyaW5nKikgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdChFeGVjU3RhdGUqLCBSZWdFeHBPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwVGVzdEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdF
eHBUZXN0U3RyaW5nKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0Kiwg
SlNTdHJpbmcqKSBXVEZfSU5URVJOQUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25S
ZWdFeHBUZXN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blJlZ0V4cFRlc3RHZW5lcmljKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZf
SU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlv
bkRpcmVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBF
bmNvZGVkSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk3
NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MCw3ICs1NTAsOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNl
IFNraXBTY29wZTogeworICAgICAgICBjYXNlIFNraXBTY29wZToKKyAgICAgICAgY2FzZSBHZXRH
bG9iYWxPYmplY3Q6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVj
T2JqZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxOTc2
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgY2FzZSBH
ZXRTY29wZToKICAgICBjYXNlIFNraXBTY29wZToKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoK
ICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNh
c2UgR2V0R2xvYmFsVmFyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODM2LDEwICsyODM2LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFJlZ0V4cEV4ZWM6IHsKLSAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKLSAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAg
ICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnbG9iYWxPYmpl
Y3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BS
ID0gZ2xvYmFsT2JqZWN0LmdwcigpOworICAgICAgICAKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKKyAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CisgICAgICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQzKCkp
OwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAg
ICAgICAgICBHUFJSZWcgYXJndW1lbnRHUFIgPSBhcmd1bWVudC5ncHIoKTsKICAgICAgICAgICAg
ICAgICBzcGVjdWxhdGVSZWdFeHBPYmplY3Qobm9kZS0+Y2hpbGQxKCksIGJhc2VHUFIpOwpAQCAt
Mjg0OSwxNiArMjg1MiwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlz
KTsKICAgICAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRo
aXMpOwogICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAg
IG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9h
ZC5ncHIoKSwgYmFzZUdQUiwKLSAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRHUFIpOworICAg
ICAgICAgICAgICAgICAgICBvcGVyYXRpb25SZWdFeHBFeGVjU3RyaW5nLCByZXN1bHRUYWcuZ3By
KCksIHJlc3VsdFBheWxvYWQuZ3ByKCksCisgICAgICAgICAgICAgICAgICAgIGdsb2JhbE9iamVj
dEdQUiwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQz
KCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAg
ICAgR1BSUmVnIGFyZ3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BSKCk7CiAgICAgICAgICAg
ICBHUFJSZWcgYXJndW1lbnRQYXlsb2FkR1BSID0gYXJndW1lbnQucGF5bG9hZEdQUigpOwpAQCAt
Mjg2OCwxNiArMjg3MSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwog
ICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uUmVnRXhw
RXhlYywgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBiYXNlR1BSLCBhcmd1
bWVudFRhZ0dQUiwKLSAgICAgICAgICAgICAgICBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAg
ICAgICAgICAgIG9wZXJhdGlvblJlZ0V4cEV4ZWMsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5
bG9hZC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLAorICAgICAgICAgICAgICAgIGFy
Z3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUt
PmNoaWxkMygpKTsKICAgICAgICAgR1BSUmVnIGJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOwog
ICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWRHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKICAgICAg
ICAgR1BSUmVnIGFyZ3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BSKCk7CkBAIC0yODg2LDcg
KzI4ODksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1
bHRUYWcodGhpcyk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQo
dGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMs
IHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgYmFzZVRhZ0dQUiwgYmFzZVBh
eWxvYWRHUFIsIGFyZ3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgb3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMsIHJl
c3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLAorICAg
ICAgICAgICAgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIGFyZ3VtZW50VGFnR1BSLCBhcmd1
bWVudFBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQu
Z3ByKCksIG5vZGUpOwpAQCAtMjg5NCwxMCArMjg5OSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFJlZ0V4cFRl
c3Q6IHsKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmpl
Y3RVc2UpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3Ry
aW5nVXNlKSB7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBnbG9iYWxPYmplY3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSID0gZ2xvYmFsT2JqZWN0LmdwcigpOworICAgICAgICAKKyAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKKyAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CisgICAg
ICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywg
bm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRHUFIgPSBhcmd1bWVudC5ncHIo
KTsKICAgICAgICAgICAgICAgICBzcGVjdWxhdGVSZWdFeHBPYmplY3Qobm9kZS0+Y2hpbGQxKCks
IGJhc2VHUFIpOwpAQCAtMjkwNSwxNSArMjkxMywxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7Ci0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBU
ZXN0U3RyaW5nLCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25SZWdF
eHBUZXN0U3RyaW5nLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgYXJn
dW1lbnRHUFIpOwogICAgICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHQuZ3ByKCks
IG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOwogICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BS
KCk7CiAgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRQYXlsb2FkR1BSID0gYXJndW1lbnQucGF5
bG9hZEdQUigpOwpAQCAtMjkyMiwxNSArMjkzMSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICBvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQu
Z3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOworICAg
ICAgICAgICAgICAgIG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2Jq
ZWN0R1BSLCBiYXNlR1BSLCBhcmd1bWVudFRhZ0dQUiwKKyAgICAgICAgICAgICAgICBhcmd1bWVu
dFBheWxvYWRHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgCiAgICAgICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGFy
Z3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50
KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgR1BSUmVnIGJhc2VUYWdHUFIgPSBiYXNl
LnRhZ0dQUigpOwogICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWRHUFIgPSBiYXNlLnBheWxvYWRH
UFIoKTsKICAgICAgICAgR1BSUmVnIGFyZ3VtZW50VGFnR1BSID0gYXJndW1lbnQudGFnR1BSKCk7
CkBAIC0yOTM4LDcgKzI5NDgsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMsIHJlc3VsdC5ncHIoKSwgYmFzZVRhZ0dQUiwgYmFzZVBh
eWxvYWRHUFIsIGFyZ3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMsIHJl
c3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwK
KyAgICAgICAgICAgIGFyZ3VtZW50VGFnR1BSLCBhcmd1bWVudFBheWxvYWRHUFIpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgYm9vbGVhblJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtMzkwMSw2ICszOTEzLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZVNraXBTY29wZShu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAorICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0
OgorICAgICAgICBjb21waWxlR2V0R2xvYmFsT2JqZWN0KG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICAgICAgCiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0VGFnKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTYyLDEwICsyOTYyLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFJlZ0V4cEV4ZWM6IHsKKyAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgZ2xvYmFsT2JqZWN0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGdsb2JhbE9iamVjdC5ncHIoKTsKKyAgICAgICAg
CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNl
KSB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1Vz
ZSkgewotICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGFyZ3Vt
ZW50KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAg
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgICAgIEdQ
UlJlZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwogICAgICAgICAgICAgICAgIHNwZWN1
bGF0ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDEoKSwgYmFzZUdQUik7CkBAIC0yOTczLDM2ICsy
OTc2LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcsIHJlc3VsdC5ncHIoKSwg
YmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uUmVnRXhwRXhlY1N0cmluZywgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3RHUFIsIGJh
c2VHUFIsIGFyZ3VtZW50R1BSKTsKICAgICAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAotICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFy
Z3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50
LmdwcigpOwogICAgICAgICAgICAgc3BlY3VsYXRlUmVnRXhwT2JqZWN0KG5vZGUtPmNoaWxkMSgp
LCBiYXNlR1BSKTsKICAgICAgICAgCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjLCByZXN1bHQuZ3ByKCksIGJhc2VHUFIs
IGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhw
RXhlYywgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIGFyZ3VtZW50R1BS
KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2Rl
LT5jaGlsZDMoKSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIGFyZ3VtZW50R1BSID0gYXJndW1lbnQuZ3ByKCk7CiAgICAgICAgIAogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMs
IHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVj
dEdQUiwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUp
OwpAQCAtMzAxMCwxMCArMzAxMywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgfQogCiAgICAgY2FzZSBSZWdFeHBUZXN0OiB7Ci0gICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlKSB7Ci0gICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewotICAgICAgICAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2xvYmFsT2JqZWN0KHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGds
b2JhbE9iamVjdC5ncHIoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgeworICAgICAgICAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAg
ICAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICAg
ICAgR1BSUmVnIGFyZ3VtZW50R1BSID0gYXJndW1lbnQuZ3ByKCk7CiAgICAgICAgICAgICAgICAg
c3BlY3VsYXRlUmVnRXhwT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCBiYXNlR1BSKTsKQEAgLTMwMjEs
NyArMzAyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcsIHJlc3VsdC5ncHIo
KSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZywgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3RHUFIs
IGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKICAgICAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1faml0Lm9yMzIoVHJ1
c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMzAyOSwxNSArMzAzNSwx
NSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7
CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBH
UFJSZWcgYXJndW1lbnRHUFIgPSBhcmd1bWVudC5ncHIoKTsKICAgICAgICAgICAgIHNwZWN1bGF0
ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDEoKSwgYmFzZUdQUik7CiAgICAgICAgIAogICAgICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhw
VGVzdCwgcmVzdWx0LmdwcigpLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2Jq
ZWN0R1BSLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMy
KFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMzA0NSwxNCArMzA1MSwxNCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNo
aWxkMygpKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBH
UFJSZWcgYXJndW1lbnRHUFIgPSBhcmd1bWVudC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYywgcmVz
dWx0LmdwcigpLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BS
LCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgICAgIAogICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwg
cmVzdWx0LmdwcigpKTsKQEAgLTM5MzAsNiArMzkzNiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAgIGNvbXBp
bGVTa2lwU2NvcGUobm9kZSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBHZXRHbG9iYWxP
YmplY3Q6CisgICAgICAgIGNvbXBpbGVHZXRHbG9iYWxPYmplY3Qobm9kZSk7CisgICAgICAgIGJy
ZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldENsb3N1cmVWYXI6IHsKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
MTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNDIsNiArNTM0MiwxNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlU2tpcFNjb3BlKE5vCiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5v
ZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0R2xvYmFsT2JqZWN0KE5v
ZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb2JqZWN0KHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOworICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKG9iamVjdC5n
cHIoKSwgcmVzdWx0LmdwcigpLCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RP
ZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5v
ZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9k
ZSogbm9kZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2
aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE3LDE1ICsxMjE3LDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RVJlb0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIp
CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR1Jl
b0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VSZW9Kc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR1Jlb0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewotICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
IApAQCAtMTQ0NiwxNCArMTQ0NiwxOSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VSZW9KIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewotICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VS
ZW9Kc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIp
CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FR1Jl
b0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FR1Jlb0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAKQEAgLTE0NjcsNiArMTQ3MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VHSkogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIGludDMyX3QgaW1t
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGlt
bSkpKSk7CkBAIC0xNzIyLDE0ICsxNzMyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIEVBQklf
MzJCSVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VSZW9KIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
UGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUmVvSnNzIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VSZW9Kc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxv
YWQsIHJlc3VsdFRhZyk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BS
UmVnIHJlc3VsdFBheWxvYWQsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgR1BSUmVnIGFy
ZzEsIGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC0xODI5LDE0ICsxODM5LDE5IEBA
IHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklf
MzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJH
IGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VSZW9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FR0pKIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJn
MlBheWxvYWQsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewotICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQs
IGFyZzJUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMlBheWxvYWQsIGFyZzJUYWcsIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnM1BheWxvYWQs
IGFyZzNUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19K
SVRPcGVyYXRpb25fRVJlb0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklU
T3BlcmF0aW9uX0VHUmVvSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7Ci0g
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzNQ
YXlsb2FkLCBhcmczVGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFNfSklUT3BlcmF0aW9uX0VHUmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXls
b2FkKQpAQCAtMTg0NCw2ICsxODU5LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBh
cmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCBy
ZXN1bHRUYWcpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VHSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVz
dWx0UGF5bG9hZCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzFUYWcs
IEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKGdsb2JhbE9iamVjdCksIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVN
TVlfQVJHIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJn
MVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyIGlt
bSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJ
XzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgU0g0XzMyQklUX0RVTU1ZX0FS
RyBpbW0sIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwpAQCAtMjMwOSw2ICsyMzI5
LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29tcGlsZUdldFNjb3BlKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVTa2lwU2NvcGUoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUdldEdsb2Jh
bE9iamVjdChOb2RlKik7CiAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKik7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRy
eUxvY2FsOgogICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CisgICAgY2Fz
ZSBHZXRHbG9iYWxPYmplY3Q6CiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2Ug
TmV3QXJyb3dGdW5jdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk3NjI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NDgsNiArNzQ4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTa2lw
U2NvcGU6CiAgICAgICAgICAgICBjb21waWxlU2tpcFNjb3BlKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CisgICAgICAgICAgICBjb21waWxlR2V0
R2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRDbG9z
dXJlVmFyOgogICAgICAgICAgICAgY29tcGlsZUdldENsb3N1cmVWYXIoKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNDQ3NSw2ICs0NDc4LDEyIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFw
cy5KU1Njb3BlX25leHQpKTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxPYmpl
Y3QoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUobG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKSk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0
cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX2dsb2JhbE9iamVjdCkpOworICAgIH0KICAg
ICAKICAgICB2b2lkIGNvbXBpbGVHZXRDbG9zdXJlVmFyKCkKICAgICB7CkBAIC02NDQwLDUyICs2
NDQ5LDY2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXBpbGVSZWdFeHBFeGVjKCkKICAgICB7
Ci0gICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RV
c2UpIHsKLSAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93UmVnRXhwT2JqZWN0KG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgZ2xvYmFsT2JqZWN0ID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMigpLnVzZUtp
bmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93
UmVnRXhwT2JqZWN0KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBpZiAobV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAg
ICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkg
eworICAgICAgICAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd1N0cmluZyhtX25vZGUtPmNo
aWxkMygpKTsKICAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAg
ICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNT
dHJpbmcpLCBtX2NhbGxGcmFtZSwgYmFzZSwgYXJndW1lbnQpOworICAgICAgICAgICAgICAgICAg
ICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcpLCBtX2Nh
bGxGcmFtZSwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICBiYXNlLCBhcmd1bWVu
dCk7CiAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVl
IGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIHNl
dEpTVmFsdWUoCi0gICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uUmVnRXhwRXhlYyksIG1fY2FsbEZyYW1lLCBiYXNlLCBhcmd1bWVudCkpOworICAg
ICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsK
KyAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCisgICAgICAgICAgICAgICAgSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjKSwgbV9jYWxsRnJhbWUsIGds
b2JhbE9iamVjdCwgYmFzZSwKKyAgICAgICAgICAgICAgICBhcmd1bWVudCk7CisgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigp
KTsKLSAgICAgICAgc2V0SlNWYWx1ZSgKLSAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljKSwgbV9jYWxsRnJhbWUsIGJhc2Us
IGFyZ3VtZW50KSk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMygpKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKKyAgICAgICAgICAgIElu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMpLCBtX2NhbGxG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBiYXNlLAorICAgICAgICAgICAgYXJndW1lbnQpOworICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlUmVnRXhwVGVz
dCgpCiAgICAgewotICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gUmVn
RXhwT2JqZWN0VXNlKSB7Ci0gICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd1JlZ0V4cE9iamVj
dChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIGdsb2JhbE9iamVjdCA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIAorICAgICAgICBpZiAobV9ub2RlLT5jaGls
ZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUg
YmFzZSA9IGxvd1JlZ0V4cE9iamVjdChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkg
ewotICAgICAgICAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd1N0cmluZyhtX25vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMygpLnVzZUtpbmQoKSA9PSBT
dHJpbmdVc2UpIHsKKyAgICAgICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dTdHJpbmco
bV9ub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2Fs
bCgKLSAgICAgICAgICAgICAgICAgICAgSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25S
ZWdFeHBUZXN0U3RyaW5nKSwgbV9jYWxsRnJhbWUsIGJhc2UsIGFyZ3VtZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0U3Ry
aW5nKSwgbV9jYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgYmFz
ZSwgYXJndW1lbnQpOwogICAgICAgICAgICAgICAgIHNldEJvb2xlYW4ocmVzdWx0KTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIExWYWx1ZSBh
cmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICBzZXRC
b29sZWFuKAotICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvblJlZ0V4cFRlc3QpLCBtX2NhbGxGcmFtZSwgYmFzZSwgYXJndW1lbnQpKTsKKyAgICAg
ICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7Cisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAorICAgICAgICAgICAgICAgIEludDMy
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdCksIG1fY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIGJhc2UsCisgICAgICAgICAgICAgICAgYXJndW1lbnQpOworICAgICAgICAgICAg
c2V0Qm9vbGVhbihyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAg
ICBzZXRCb29sZWFuKAotICAgICAgICAgICAgdm1DYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgYXJndW1lbnQp
KTsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwor
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAorICAgICAgICAgICAgSW50MzIsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyksIG1fY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIGJhc2UsCisgICAgICAgICAgICBhcmd1bWVudCk7CisgICAgICAgIHNldEJvb2xl
YW4ocmVzdWx0KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVOZXdSZWdleHAoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5NzYy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjIsNiArMTIyLDkgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSgogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRP
cGVyYXRpb25fRUNaKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90KTsKIHR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VEQSkoRXhlY1N0YXRl
KiwgZG91YmxlLCBKU0FycmF5Kik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gKCpKX0pJVE9wZXJhdGlvbl9FRSkoRXhlY1N0YXRlKiwgRXhlY1N0YXRlKik7Cit0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FR1Jlb0opKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUp
OwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25f
RUdSZW9Kc3MpKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgSlNT
dHJpbmcqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3Bl
cmF0aW9uX0VHSkopKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAo
KkpfSklUT3BlcmF0aW9uX0VJKShFeGVjU3RhdGUqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlw
ZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUopKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VKWikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IGludDMyX3QpOwpAQCAtMjAxLDYgKzIwNCw5IEBAIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFU
SU9OICgqWl9KSVRPcGUKIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVy
YXRpb25fRUpaWikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3Qp
OwogdHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VDQykoRXhl
Y1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9O
ICgqU19KSVRPcGVyYXRpb25fRUdDKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTQ2Vs
bCopOwordHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VHSkop
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKTsKK3R5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FR1Jl
b0opKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUpOwordHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VH
UmVvSnNzKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEpTU3Ry
aW5nKik7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUop
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJ
T04gKCpTX0pJVE9wZXJhdGlvbl9FSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRp
b25fRU9Kc3MpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNTdHJpbmcqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlz
aW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDcgKzM2NCw4IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIG1fcmVnRXhwUHJvdG90eXBlLnNldCh2bSwg
dGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIGVtcHR5
UmVnZXgpKTsKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwot
ICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCAqdGhpcykpOworICAgIG1fcmVnRXhwTWF0Y2hl
c0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlKHZtLCB0aGlzKSk7CisgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0
dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVy
ZSh2bSwgdGhpcykpOwogCiAgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywganNOdWxsKCkpKTsKQEAgLTc2MSw2ICs3NjIsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpo
YXZlQUJhZFRpbWUoVk0mIHZtCiAgICAgLy8gdGhpcyBvYmplY3Qgbm93IGxvYWQgYSBzdHJ1Y3R1
cmUgdGhhdCB1c2VzIFNsb3dQdXQuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJl
ck9mSW5kZXhpbmdTaGFwZXM7ICsraSkKICAgICAgICAgbV9hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nU2hhcGVEdXJpbmdBbGxvY2F0aW9uW2ldLnNldCh2bSwgdGhpcywgb3JpZ2luYWxBcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSk7CisK
KyAgICAvLyBTYW1lIGZvciBhbnkgc3BlY2lhbCBhcnJheSBzdHJ1Y3R1cmVzLgorICAgIG1fcmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgbV9yZWdFeHBNYXRjaGVzQXJy
YXlTbG93UHV0U3RydWN0dXJlLmdldCgpKTsKICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBh
bGwgb2JqZWN0cyB0aGF0IGhhdmUgaW5kZXhlZCBzdG9yYWdlIHN3aXRjaCB0byB0aGUgc2xvdyBr
aW5kIG9mCiAgICAgLy8gaW5kZXhlZCBzdG9yYWdlLgpAQCAtOTAwLDYgKzkwNCw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5
U2xvd1B1dFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9k
dWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9t
b2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzgsNiArMjc4LDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOworICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3h5T2JqZWN0U3RydWN0dXJlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxOTc2MjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTMsNyArMzkzLDcgQEAgcHVibGljOgogICAgICAgICBpbml0aWFsaXplSW5kZXgo
dm0sIGksIHYsIGluZGV4aW5nVHlwZSgpKTsKICAgICB9CiAKLSAgICB2b2lkIGluaXRpYWxpemVJ
bmRleChWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdiwgSW5kZXhpbmdUeXBlIGluZGV4aW5n
VHlwZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgaW5pdGlhbGl6ZUluZGV4KFZNJiB2bSwgdW5z
aWduZWQgaSwgSlNWYWx1ZSB2LCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQogICAgIHsKICAg
ICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQodGhpcyk7CiAgICAg
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAJKHJldmlzaW9uIDE5NzYy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgSlNBcnJheSogUmVnRXhwQ2FjaGVk
UmVzdWx0OjpsYXN0UmVzdWx0KAogewogICAgIGlmICghbV9yZWlmaWVkKSB7CiAgICAgICAgIG1f
cmVpZmllZElucHV0LnNldChleGVjLT52bSgpLCBvd25lciwgbV9sYXN0SW5wdXQuZ2V0KCkpOwot
ICAgICAgICBtX3JlaWZpZWRSZXN1bHQuc2V0KGV4ZWMtPnZtKCksIG93bmVyLCBjcmVhdGVSZWdF
eHBNYXRjaGVzQXJyYXkoZXhlYywgbV9sYXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQo
KSwgbV9yZXN1bHQpKTsKKyAgICAgICAgbV9yZWlmaWVkUmVzdWx0LnNldChleGVjLT52bSgpLCBv
d25lciwgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgbV9sYXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQoKSwgbV9yZXN1bHQp
KTsKICAgICAgICAgbV9yZWlmaWVkID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVpZmll
ZFJlc3VsdC5nZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsMzAgKzUwLDU2IEBAIHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRp
YWxpemVkUmUKICAgICByZXR1cm4gSlNBcnJheTo6Y3JlYXRlV2l0aEJ1dHRlcmZseSh2bSwgc3Ry
dWN0dXJlLCBidXR0ZXJmbHkpOwogfQogCi1KU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJy
YXkoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogaW5wdXQsIFJlZ0V4cCogcmVnRXhwLCBNYXRj
aFJlc3VsdCByZXN1bHQpCitKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoCisgICAg
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyog
aW5wdXQsIFJlZ0V4cCogcmVnRXhwLAorICAgIE1hdGNoUmVzdWx0IHJlc3VsdCkKIHsKKyAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5Iik7
CisgICAgCiAgICAgQVNTRVJUKHJlc3VsdCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAg
ICBKU0FycmF5KiBhcnJheSA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVzQXJy
YXkodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwTWF0Y2hlc0FycmF5U3Ry
dWN0dXJlKCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOwotICAgIFJFTEVBU0VfQVNT
RVJUKGFycmF5KTsKIAotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJSZWlmeWlu
ZyBzdWJzdHJpbmcgcHJvcGVydGllcyIpOwotCi0gICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2
bSwgMCwganNTdWJzdHJpbmcoZXhlYywgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVuZCAt
IHJlc3VsdC5zdGFydCksIEFycmF5V2l0aENvbnRpZ3VvdXMpOwotCi0gICAgaWYgKHVuc2lnbmVk
IG51bVN1YnBhdHRlcm5zID0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpKSB7Ci0gICAgICAgIFZl
Y3RvcjxpbnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKLSAgICAgICAgaW50IHBvc2l0aW9uID0g
cmVnRXhwLT5tYXRjaCh2bSwgaW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBh
dHRlcm5SZXN1bHRzKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwb3NpdGlvbiwgcG9zaXRpb24g
Pj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKSA9PSByZXN1bHQuc3RhcnQpOwot
ICAgICAgICBBU1NFUlQocmVzdWx0LnN0YXJ0ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0
dGVyblJlc3VsdHNbMF0pKTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOwotCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPD0gbnVtU3VicGF0dGVybnM7ICsraSkgewotICAgICAgICAgICAgaW50IHN0
YXJ0ID0gc3VicGF0dGVyblJlc3VsdHNbMiAqIGldOwotICAgICAgICAgICAgaWYgKHN0YXJ0ID49
IDApCi0gICAgICAgICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgaSwganNTdWJz
dHJpbmcoZXhlYywgaW5wdXQsIHN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0c1syICogaSArIDFdIC0g
c3RhcnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBpLCBqc1VuZGVmaW5lZCgpLCBBcnJh
eVdpdGhDb250aWd1b3VzKTsKKyAgICBKU0FycmF5KiBhcnJheTsKKyAgICBpZiAoZ2xvYmFsT2Jq
ZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpIHsKKyAgICAgICAgYXJyYXkgPSBKU0FycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZSgpLCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxKTsKKyAgICAgICAgCisgICAg
ICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIDAsIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0
LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+bnVtU3VicGF0dGVy
bnMoKSkgeworICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOwor
ICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaCh2bSwgaW5wdXQtPnZhbHVl
KGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90
Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQu
c3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1swXSkpOworICAg
ICAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0
ZXJuUmVzdWx0c1sxXSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpbnQg
c3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07CisgICAgICAgICAgICAgICAgaWYgKHN0
YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0s
IGksIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCBzdGFydCwgc3VicGF0dGVyblJlc3VsdHNbMiAq
IGkgKyAxXSAtIHN0YXJ0KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGFycmF5ID0gdHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheSh2bSwgZ2xvYmFsT2JqZWN0LT5yZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpICsgMSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFycmF5KTsKKyAgICAgICAgCisgICAgICAgIGFycmF5
LT5pbml0aWFsaXplSW5kZXgodm0sIDAsIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCByZXN1bHQu
c3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsK
KyAgICAgICAgCisgICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+
bnVtU3VicGF0dGVybnMoKSkgeworICAgICAgICAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRl
cm5SZXN1bHRzOworICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaCh2bSwg
aW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKKyAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQuc3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0
c1swXSkpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07CisgICAgICAgICAg
ICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAgIGFycmF5LT5pbml0aWFs
aXplSW5kZXgodm0sIGksIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCBzdGFydCwgc3VicGF0dGVy
blJlc3VsdHNbMiAqIGkgKyAxXSAtIHN0YXJ0KSwgQXJyYXlXaXRoQ29udGlndW91cyk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUlu
ZGV4KHZtLCBpLCBqc1VuZGVmaW5lZCgpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtODMsOSArMTA5LDkgQEAgSlNBcnJheSogY3Jl
YXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdAogICAgIHJldHVybiBhcnJheTsKIH0KIAotU3Ry
dWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
SW1wbChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEluZGV4aW5nVHlwZSBp
bmRleGluZ1R5cGUpCiB7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3Qu
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENv
bnRpZ3VvdXMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKTsK
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CiAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlLT5h
ZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+aW5k
ZXgsIDAsIG9mZnNldCk7CiAgICAgQVNTRVJUKG9mZnNldCA9PSBpbmRleFByb3BlcnR5T2Zmc2V0
KTsKQEAgLTk0LDQgKzEyMCwxNCBAQCBTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJh
eVN0cnVjCiAgICAgcmV0dXJuIHN0cnVjdHVyZTsKIH0KIAorU3RydWN0dXJlKiBjcmVhdGVSZWdF
eHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQoreworICAgIHJldHVybiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmplY3Qs
IEFycmF5V2l0aENvbnRpZ3VvdXMpOworfQorCitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNo
ZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQoreworICAgIHJldHVybiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmplY3Qs
IEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNo
ZXNBcnJheS5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOSBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5
KEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgUmVnRXhwKiwgTWF0Y2hSZXN1bHQpOwotU3RydWN0dXJl
KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCYp
OworSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgSlNTdHJpbmcqLCBSZWdFeHAqLCBNYXRjaFJlc3VsdCk7CitTdHJ1Y3R1cmUqIGNy
ZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CitT
dHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCopOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU5LDIwICsxNTksMjAgQEAgdm9pZCBSZWdFeHBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZQogICAgIEJhc2U6OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
IH0KIAotSlNWYWx1ZSBSZWdFeHBPYmplY3Q6OmV4ZWMoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmlu
Zyogc3RyaW5nKQorSlNWYWx1ZSBSZWdFeHBPYmplY3Q6OmV4ZWMoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogc3RyaW5nKQogewotICAgIGlm
IChNYXRjaFJlc3VsdCByZXN1bHQgPSBtYXRjaChleGVjLCBzdHJpbmcpKQotICAgICAgICByZXR1
cm4gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIHN0cmluZywgcmVnRXhwKCksIHJlc3Vs
dCk7CisgICAgaWYgKE1hdGNoUmVzdWx0IHJlc3VsdCA9IG1hdGNoKGV4ZWMsIGdsb2JhbE9iamVj
dCwgc3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVj
LCBnbG9iYWxPYmplY3QsIHN0cmluZywgcmVnRXhwKCksIHJlc3VsdCk7CiAgICAgcmV0dXJuIGpz
TnVsbCgpOwogfQogCiAvLyBTaGFyZWQgaW1wbGVtZW50YXRpb24gdXNlZCBieSB0ZXN0IGFuZCBl
eGVjLgotTWF0Y2hSZXN1bHQgUmVnRXhwT2JqZWN0OjptYXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpT
U3RyaW5nKiBzdHJpbmcpCitNYXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZykK
IHsKICAgICBSZWdFeHAqIHJlZ0V4cCA9IHRoaXMtPnJlZ0V4cCgpOwotICAgIFJlZ0V4cENvbnN0
cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
cmVnRXhwQ29uc3RydWN0b3IoKTsKKyAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3Ry
dWN0b3IgPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCk7CiAgICAgU3RyaW5nIGlu
cHV0ID0gc3RyaW5nLT52YWx1ZShleGVjKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAoIXJlZ0V4cC0+Z2xvYmFsKCkp
CiAgICAgICAgIHJldHVybiByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKHZtLCByZWdF
eHAsIHN0cmluZywgaW5wdXQsIDApOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDgg
KzYxLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9sYXN0SW5kZXguZ2V0KCk7CiAgICAg
fQogCi0gICAgYm9vbCB0ZXN0KEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykgeyBy
ZXR1cm4gbWF0Y2goZXhlYywgc3RyaW5nKTsgfQotICAgIEpTVmFsdWUgZXhlYyhFeGVjU3RhdGUq
LCBKU1N0cmluZyopOworICAgIGJvb2wgdGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJuIG1hdGNoKGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RyaW5nKTsgfQorICAgIEpTVmFsdWUgZXhlYyhFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpAQCAtOTcsNyArOTcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiBwcml2YXRlOgotICAgIE1hdGNoUmVzdWx0IG1h
dGNoKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CisgICAgTWF0Y2hSZXN1bHQgbWF0Y2goRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyopOwogCiAgICAgV3JpdGVCYXJyaWVyPFJl
Z0V4cD4gbV9yZWdFeHA7CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fbGFzdEluZGV4OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogICAgIEpTU3RyaW5nKiBz
dHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAo
IXN0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlz
VmFsdWUpLT50ZXN0KGV4ZWMsIHN0cmluZykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT50ZXN0KGV4ZWMsIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgc3RyaW5nKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTEzLDcg
KzExMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICBK
U1N0cmluZyogc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhlYyk7
CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc1JlZ0V4cE9iamVjdCh0aGlz
VmFsdWUpLT5leGVjKGV4ZWMsIHN0cmluZykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+ZXhlYyhleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHN0cmluZykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvRnVuY0NvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAx
OTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM1LDcgKzEwMzUsOCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7
CiAgICAgU3RyaW5nIHMgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOwotICAgIFZNKiB2bSA9ICZleGVj
LT52bSgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7CisgICAgVk0qIHZtID0gJmdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAg
IEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKIApAQCAtMTA2NywxMSArMTA2OCwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgIGlmICgh
cmVnRXhwLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdlKCkpKTsKICAgICB9
Ci0gICAgUmVnRXhwQ29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5yZWdFeHBDb25zdHJ1Y3RvcigpOworICAgIFJlZ0V4cENvbnN0cnVj
dG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3Io
KTsKICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1h
dGNoKCp2bSwgcmVnRXhwLCBzdHJpbmcsIHMsIDApOwogICAgIC8vIGNhc2Ugd2l0aG91dCAnZycg
ZmxhZyBpcyBoYW5kbGVkIGxpa2UgUmVnRXhwLnByb3RvdHlwZS5leGVjCiAgICAgaWYgKCFnbG9i
YWwpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8gY3JlYXRlUmVnRXhw
TWF0Y2hlc0FycmF5KGV4ZWMsIHN0cmluZywgcmVnRXhwLCByZXN1bHQpIDoganNOdWxsKCkpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCA/IGNyZWF0ZVJlZ0V4cE1hdGNo
ZXNBcnJheShleGVjLCBnbG9iYWxPYmplY3QsIHN0cmluZywgcmVnRXhwLCByZXN1bHQpIDoganNO
dWxsKCkpOwogCiAgICAgLy8gcmV0dXJuIGFycmF5IG9mIG1hdGNoZXMKICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBsaXN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDkgQEAgcHVibGlj
OgogICAgIE5vblByb3BlcnR5VHJhbnNpdGlvbiBzdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0
aW9uKCkgY29uc3Q7CiAgICAgICAgIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qo
KSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQorCisgICAgLy8gTk9URTog
VGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyB0aGUgY3JlYXRpb24gb2Yg
c3RydWN0dXJlcywgc2luY2UgdGhlIGdsb2JhbAorICAgIC8vIG9iamVjdCBvZiBhIHN0cnVjdHVy
ZSBpcyBwcmVzdW1lZCB0byBiZSBpbW11dGFibGUgaW4gYSBidW5jaCBvZiBwbGFjZXMuCiAgICAg
dm9pZCBzZXRHbG9iYWxPYmplY3QoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KSB7IG1fZ2xvYmFsT2JqZWN0LnNldCh2bSwgdGhpcywgZ2xvYmFsT2JqZWN0KTsgfQogICAgICAg
ICAKICAgICBKU1ZhbHVlIHN0b3JlZFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90
eXBlLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jl
Z2V4cC1tYXRjaGVzLWFycmF5LWJhZC10aW1lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXktYmFkLXRpbWUuanMJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3JlZ2V4
cC1tYXRjaGVzLWFycmF5LWJhZC10aW1lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkg
QEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIgY291bnQgPSAxMTsKKworICAgIHZhciBhcnJheTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXJyYXkgPSAv
Zm9vLy5leGVjKCJmb28iKTsKKyAgICAgICAgaWYgKGFycmF5WzBdICE9ICJmb28iKQorICAgICAg
ICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgYXJyYXlbMF07CisgICAgfQorCisg
ICAgZGVsZXRlIGFycmF5WzBdOworCisgICAgQXJyYXkucHJvdG90eXBlLl9fZGVmaW5lU2V0dGVy
X18oIjAiLCBmdW5jdGlvbih2YWx1ZSkgeyBjb3VudCArPSB2YWx1ZTsgfSk7CisgICAgCisgICAg
YXJyYXlbMF0gPSA0MjsKKyAgICBpZiAoY291bnQgIT0gNTMpCisgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIGNvdW50OiAiICsgY291bnQ7Cit9KSgpOworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3JlZ2V4cC1tYXRjaGVzLWFycmF5LXNsb3ctcHV0LmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNo
ZXMtYXJyYXktc2xvdy1wdXQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3JlZ2V4cC1tYXRjaGVzLWFycmF5LXNsb3ctcHV0LmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIgY291bnQgPSAw
OworICAgIEFycmF5LnByb3RvdHlwZS5fX2RlZmluZVNldHRlcl9fKCIwIiwgZnVuY3Rpb24odmFs
dWUpIHsgY291bnQgKz0gdmFsdWU7IH0pOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7ICsraSkgeworICAgICAgICB2YXIgYXJyYXkgPSAvZm9vLy5leGVjKCJmb28iKTsKKyAg
ICAgICAgaWYgKGFycmF5WzBdICE9ICJmb28iKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgcmVzdWx0OiAiICsgYXJyYXlbMF07CisgICAgICAgIGRlbGV0ZSBhcnJheVswXTsKKyAgICAg
ICAgYXJyYXlbMF0gPSA0MjsKKyAgICAgICAgaWYgKGNvdW50ICE9IChpICsgMSkgKiA0MikKKyAg
ICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGNvdW50IGF0IGkgPSAiICsgaSArICI6ICIgKyBj
b3VudDsKKyAgICB9Cit9KSgpOworIApJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdl
eHAtZXhlYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9yZWdleHAtZXhlYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3JlZ2V4cC1leGVjLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEwIEBACitKU1JlZ3Jlc3MvcmVnZXhwLWV4ZWMKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3MvcmVnZXhwLWV4ZWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3JlZ2V4cC1leGVjLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3JlZ2V4cC1leGVjLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVnZXhwLWV4ZWMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXBvc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvcmVnZXhwLWV4ZWMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLWV4ZWMuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtZXhlYy5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVzdWx0ID0g
MDsKKyAgICB2YXIgbiA9IDEwMDAwMDA7CisgICAgdmFyIHJlID0gL2Zvby87CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgIHJlc3VsdCArPSByZS5leGVjKCJmb28iKS5s
ZW5ndGg7CisgICAgaWYgKHJlc3VsdCAhPSBuKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273128</attachid>
            <date>2016-03-06 00:30:37 -0800</date>
            <delta_ts>2016-03-06 01:25:12 -0800</delta_ts>
            <desc>runs some things</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>83400</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NjM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNyBA
QAorMjAxNi0wMy0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlZ0V4cE1hdGNoZXNBcnJheSBkb2Vzbid0IGtub3cgaG93IHRvIGhhdmUgYSBiYWQgdGltZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdHJ1bmsg
aWYgd2UgYXJlIGhhdmluZyBhIGJhZCB0aW1lLCB0aGUgcmVnZXhwIG1hdGNoZXMgYXJyYXkgaXMg
c3RpbGwgYWxsb2NhdGVkIHdpdGggYQorICAgICAgICBub24tc2xvdy1wdXQgaW5kZXhpbmcgc2hh
cGUsIHdoaWNoIG1ha2VzIGl0IGhhdmUgdGhlIHdyb25nIGJlaGF2aW9yIG9uIGluZGV4ZWQgc2V0
dGVycyBvbgorICAgICAgICB0aGUgcHJvdG90eXBlIGNoYWluLgorCisgICAgICAgIEdldHRpbmcg
dGhpcyB0byB3b3JrIHJpZ2h0IHJlcXVpcmVzIGludHJvZHVjaW5nIGNvZGUgYmFkIHRpbWUgY29k
ZSBwYXRocyBpbnRvIHRoZSByZWdleHAKKyAgICAgICAgbWF0Y2hlcyBhcnJheS4gSXQgYWxzbyBy
ZXF1aXJlcyBzb21ldGhpbmcgbW9yZSBkcmFzdGljOiBtYWtpbmcgdGhpcyBjb2RlIG5vdCBwbGF5
IGdhbWVzIHdpdGgKKyAgICAgICAgdGhlIGdsb2JhbCBvYmplY3QuIFRoZSBjb2RlIHRoYXQgY3Jl
YXRlcyB0aGUgbWF0Y2hlcyBhcnJheSBuZWVkcyB0byBoYXZlIHRoZSBhY3R1YWwgZ2xvYmFsCisg
ICAgICAgIG9iamVjdCBvZiB0aGUgcmVnZXhwIG5hdGl2ZSBmdW5jdGlvbiB0aGF0IGl0J3MgbG9n
aWNhbGx5IGNyZWF0ZWQgYnkuCisKKyAgICAgICAgVGhpcyBpcyB0b3RhbGx5IGRpZmZlcmVudCBm
cm9tIGhvdyB3ZSd2ZSBoYW5kbGVkIGdsb2JhbCBvYmplY3RzIGluIHRoZSBwYXN0IGJlY2F1c2Ug
aXQgbWVhbnMKKyAgICAgICAgdGhhdCB0aGUgZ2xvYmFsIG9iamVjdCBpcyBub3QgYSBjb25zdGFu
dC4gU28sIHRoZSBSZWdFeHBFeGVjL1JlZ0V4cFRlc3Qgbm9kZXMgaW4gREZHIElSIG5vdworICAg
ICAgICB0YWtlIGEgZ2xvYmFsIG9iamVjdCBjaGlsZC4gVGhhdCBhbHNvIG1lYW50IGFkZGluZyBh
IG5ldyBub2RlIHR5cGUsIEdldEdsb2JhbE9iamVjdCwgd2hpY2gKKyAgICAgICAgZG9lcyB0aGUg
dGhpbmcgdG8gdGhlIGNhbGxlZSB0aGF0IENhbGxGcmFtZTo6bGV4aWNhbEdsb2JhbE9iamVjdCgp
IHdvdWxkIGhhdmUgZG9uZS4KKworICAgICAgICBUaGlzIGlzIHBlcmYtbmV1dHJhbCBvbiBteSBt
YWNoaW5lcyBidXQgaXQgdW5sb2NrcyBzb21lIGludGVyZXN0aW5nIHBvc3NpYmlsaXRpZXMuIEZv
cgorICAgICAgICBleGFtcGxlLCBSZWdFeHBFeGVjIGNhbiBub3cgbWFrZSBhIGZpcm0gcHJvbWlz
ZSBhYm91dCB0aGUgdHlwZSBvZiBhcnJheSBpdCdzIGNyZWF0aW5nLgorCisgICAgICAgICogZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
RG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9E
RkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU2tpcFNjb3BlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEdsb2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
bGxPcGVyYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5v
ZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU2tpcFNj
b3BlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEds
b2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVHZXRDbG9zdXJlVmFyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVJlZ0V4cEV4ZWMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlUmVnRXhwVGVzdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOZXdSZWdleHApOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmhhdmVBQmFk
VGltZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6anNTdHJpbmcpOgorICAg
ICAgICAoSlNDOjpqc1N1YnN0cmluZyk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNoZWRS
ZXN1bHQuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6Omxhc3RSZXN1bHQp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcDoKKyAgICAgICAgKEpT
Qzo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheSk6CisgICAgICAgIChK
U0M6OmNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSk6CisgICAgICAgIChKU0M6OmNyZWF0ZVN0cnVj
dHVyZUltcGwpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0Ojpw
dXQpOgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmV4ZWMpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBPYmplY3Q6Om1hdGNoKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmdldExhc3RJbmRleCk6CisgICAgICAgIChKU0M6
OlJlZ0V4cE9iamVjdDo6dGVzdCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUZXN0KToKKyAgICAgICAgKEpTQzo6
cmVnRXhwUHJvdG9GdW5jRXhlYyk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0NvbXBp
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6c3RyaW5nUHJvdG9GdW5jTWF0Y2gpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZE5ld1Byb3BlcnR5VHJhbnNpdGlvbik6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvcmVnZXhw
LW1hdGNoZXMtYXJyYXktYmFkLXRpbWUuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9yZWdleHAtbWF0Y2hlcy1hcnJheS1zbG93LXB1dC5qczogQWRkZWQuCisKIDIwMTYtMDMtMDUg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgbW9zdCBhZ2dy
ZXNzaXZlIGZvcm0gb2YgUmVnRXhwVGVzdC9SZWdFeHBFeGVjIHNob3VsZCBzcGVjdWxhdGUgbW9y
ZSBhZ2dyZXNzaXZlbHkgdGhhbiBqdXN0IGNlbGwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1NCwxNyArMTU1NCwyNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAg
ICAgICAgCiAgICAgY2FzZSBSZWdFeHBFeGVjOgotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQotICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQy
KCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgeworICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCku
dXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQorICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQz
KCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgLy8gVGhpcyBkb2Vzbid0
IGNsb2JiZXIgdGhlIHdvcmxkIHNpbmNlIHRoZXJlIGFyZSBubyBjb252ZXJzaW9ucyB0byBwZXJm
b3JtLgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7Ci0gICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhl
YXBUb3AoKTsKKyAgICAgICAgaWYgKEpTVmFsdWUgZ2xvYmFsT2JqZWN0VmFsdWUgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3ZhbHVlKSB7CisgICAgICAgICAgICBpZiAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3RWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZp
bmdBQmFkVGltZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMo
KS5hZGRMYXppbHkoZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIGdsb2JhbE9iamVj
dC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGUpLm1lcmdlKFNwZWNPdGhlcik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY090aGVyIHwgU3BlY0FycmF5KTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFJlZ0V4cFRlc3Q6Ci0gICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlCi0gICAgICAgICAgICAmJiBub2Rl
LT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CisgICAgICAgIGlmIChub2RlLT5j
aGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlCisgICAgICAgICAgICAmJiBub2Rl
LT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAgICAvLyBUaGlz
IGRvZXNuJ3QgY2xvYmJlciB0aGUgd29ybGQgc2luY2UgdGhlcmUgYXJlIG5vIGNvbnZlcnNpb25z
IHRvIHBlcmZvcm0uCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKQEAgLTE4ODIsNiArMTg5MiwzMyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OiB7CisgICAgICAgIEpTVmFsdWUg
Y2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hp
bGQpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShKU1Zh
bHVlKGFzT2JqZWN0KGNoaWxkKS0+Z2xvYmFsT2JqZWN0KCkpKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3N0
cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOworICAgICAgICAg
ICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmUuZm9yRWFjaCgKKyAgICAgICAg
ICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0
ID0gc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZ2xvYmFsT2JqZWN0ICE9IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBvayA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgaWYgKGdsb2JhbE9iamVjdCAmJiBvaykgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsICptX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKGdsb2JhbE9iamVjdCkpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjT2JqZWN0T3RoZXIpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgICAgIGlmIChKU1ZhbHVl
IHZhbHVlID0gbV9ncmFwaC50cnlHZXRDb25zdGFudENsb3N1cmVWYXIoZm9yTm9kZShub2RlLT5j
aGlsZDEoKSksIG5vZGUtPnNjb3BlT2Zmc2V0KCkpKSB7CiAgICAgICAgICAgICBzZXRDb25zdGFu
dChub2RlLCAqbV9ncmFwaC5mcmVlemUodmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjYW5jZWxMaW5r
aW5nRm9yQmxvY2soSW5saW5lU3RhY2tFbnRyeSosIEJhc2ljQmxvY2sqKTsgLy8gT25seSB3b3Jr
cyB3aGVuIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbGFzdCBvbmUgdG8gaGF2ZSBiZWVuIGFkZGVk
IGZvciB0aGF0IGlubGluZSBzdGFjayBlbnRyeS4KICAgICAvLyBIYW5kbGUgaW50cmluc2ljIGZ1
bmN0aW9ucy4gUmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRv
IHBsYW50IGEgY2FsbC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotICAg
IGJvb2wgaGFuZGxlSW50cmluc2ljQ2FsbChpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljLCBp
bnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hlY2tzKTsK
KyAgICBib29sIGhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3Bl
cmFuZCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3Rv
ciYgaW5zZXJ0Q2hlY2tzKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgog
ICAgIGJvb2wgaGFuZGxlSW50cmluc2ljR2V0dGVyKGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBH
ZXRCeUlkVmFyaWFudCYgaW50cmluc2ljVmFyaWFudCwgTm9kZSogdGhpc05vZGUsIGNvbnN0IENo
ZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tz
RnVuY3Rvcj4KQEAgLTE2MDEsNyArMTYwMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmF0dGVt
cHRUb0lubGluZUNhbGwKICAgICAKICAgICAgICAgSW50cmluc2ljIGludHJpbnNpYyA9IGNhbGxl
ZS5pbnRyaW5zaWNGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKTsKICAgICAgICAgaWYgKGludHJpbnNp
YyAhPSBOb0ludHJpbnNpYykgewotICAgICAgICAgICAgaWYgKGhhbmRsZUludHJpbnNpY0NhbGwo
cmVzdWx0T3BlcmFuZCwgaW50cmluc2ljLCByZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIHByZWRpY3Rpb24sIGluc2VydENoZWNrc1dpdGhBY2NvdW50aW5nKSkgewor
ICAgICAgICAgICAgaWYgKGhhbmRsZUludHJpbnNpY0NhbGwoY2FsbFRhcmdldE5vZGUsIHJlc3Vs
dE9wZXJhbmQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChkaWRJbnNlcnRDaGVja3MpOwogICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGUpOwogICAgICAgICAgICAgICAg
IGVtaXRBcmd1bWVudFBoYW50b21zKHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7CkBAIC0xOTkxLDcgKzE5OTEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVNaW5NYXgoaW50IHJlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1bmN0b3I+Ci1i
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKGludCByZXN1bHRPcGVyYW5k
LCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tz
RnVuY3RvciYgaW5zZXJ0Q2hlY2tzKQorYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljQ2FsbChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMgaW50cmlu
c2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
U3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgY29uc3QgQ2hlY2tzRnVuY3RvciYgaW5zZXJ0Q2hl
Y2tzKQogewogICAgIHN3aXRjaCAoaW50cmluc2ljKSB7CiAKQEAgLTIxNzIsNyArMjE3Miw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGluc2VydENoZWNrcygpOwotICAgICAgICBO
b2RlKiByZWdFeHBFeGVjID0gYWRkVG9HcmFwaChSZWdFeHBFeGVjLCBPcEluZm8oMCksIE9wSW5m
byhwcmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVy
T2Zmc2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNl
dCkpKTsKKyAgICAgICAgTm9kZSogcmVnRXhwRXhlYyA9IGFkZFRvR3JhcGgoUmVnRXhwRXhlYywg
T3BJbmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIGFkZFRvR3JhcGgoR2V0R2xvYmFsT2JqZWN0
LCBjYWxsZWUpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZz
ZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkp
OwogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZWdFeHBFeGVj
KTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjE4Myw3ICsyMTgzLDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbAogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7Ci0gICAgICAgIE5v
ZGUqIHJlZ0V4cEV4ZWMgPSBhZGRUb0dyYXBoKFJlZ0V4cFRlc3QsIE9wSW5mbygwKSwgT3BJbmZv
KHByZWRpY3Rpb24pLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJP
ZmZzZXQpKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KSkpOworICAgICAgICBOb2RlKiByZWdFeHBFeGVjID0gYWRkVG9HcmFwaChSZWdFeHBUZXN0LCBP
cEluZm8oMCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYWRkVG9HcmFwaChHZXRHbG9iYWxPYmplY3Qs
IGNhbGxlZSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNl
dCkpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQpKSk7
CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlZ0V4cEV4ZWMp
OwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw2
ICsxMzQsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAg
Y2FzZSBBcml0aExvZzoKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2UgU2tpcFNjb3BlOgor
ICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAg
ICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICBjYXNlIElzVW5kZWZpbmVkOgpAQCAtMTA3OCw4
ICsxMDc5LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogCiAg
ICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhwVGVzdDoKLSAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKLSAgICAgICAgICAgICYm
IG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKKyAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKKyAgICAgICAgICAgICYm
IG5vZGUtPmNoaWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIHJl
YWQoUmVnRXhwU3RhdGUpOwogICAgICAgICAgICAgd3JpdGUoUmVnRXhwU3RhdGUpOwogICAgICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIEdl
dFNjb3BlOgogICAgIGNhc2UgU2tpcFNjb3BlOgorICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0Ogog
ICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2Fz
ZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3OSwx
MSArODc5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBSZWdFeHBF
eGVjOgogICAgICAgICBjYXNlIFJlZ0V4cFRlc3Q6IHsKLSAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlUmVnRXhwT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPFJlZ0V4cE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
Zml4RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVSZWdFeHBPYmplY3Qo
KSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8UmVnRXhwT2JqZWN0VXNlPihub2RlLT5jaGls
ZDIoKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1
bGF0ZVN0cmluZygpKQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKS0+c2hvdWxk
U3BlY3VsYXRlU3RyaW5nKCkpCisgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNl
Pihub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMTA0OSw3ICsxMDUxLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTa2lw
U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgot
ICAgICAgICBjYXNlIEdldFNldHRlcjogeworICAgICAgICBjYXNlIEdldFNldHRlcjoKKyAgICAg
ICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTk3NjI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTIsNiArMjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0LCBOb2RlUmVzdWx0SW50MzIpIFwKICAg
ICBtYWNybyhHZXRTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2tpcFNjb3BlLCBO
b2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhHZXRHbG9iYWxPYmplY3QsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKEdldENsb3N1cmVWYXIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFB1
dENsb3N1cmVWYXIsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRHbG9iYWxWYXIs
IE5vZGVSZXN1bHRKUykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTksMTcgKzYxOSwxNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShhcnJheS0+cG9wKGV4ZWMpKTsKIH0KICAgICAgICAgCi1FbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjLCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgSlNTdHJpbmcqIGFyZ3VtZW50KQorRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVnRXhwT2JqZWN0KiBy
ZWdFeHBPYmplY3QsIEpTU3RyaW5nKiBhcmd1bWVudCkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZWdFeHBPYmplY3QtPmV4ZWMoZXhlYywgYXJndW1lbnQpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlZ0V4cE9iamVjdC0+ZXhlYyhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50KSk7CiB9CiAgICAgICAgIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25SZWdFeHBFeGVjKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlYyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQXJndW1lbnQpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOwogICAgIAogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZEFyZ3VtZW50KTsKQEAgLTYzNywxMiArNjM3LDEyIEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmUKICAgICBKU1N0cmluZyogaW5wdXQgPSBhcmd1bWVu
dC50b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIWlucHV0KQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVnRXhwT2JqZWN0LT5leGVjKGV4ZWMsIGlucHV0KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZWdFeHBPYmplY3QtPmV4ZWMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnB1dCkpOwog
fQogICAgICAgICAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhw
RXhlY0dlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKTsKQEAgLTY1NCwyMCArNjU0LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmUKICAgICBKU1N0cmluZyogaW5wdXQgPSBhcmd1bWVudC50b1N0
cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIWlucHV0KQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNS
ZWdFeHBPYmplY3QoYmFzZSktPmV4ZWMoZXhlYywgaW5wdXQpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFzUmVnRXhwT2JqZWN0KGJhc2UpLT5leGVjKGV4ZWMsIGdsb2JhbE9iamVjdCwg
aW5wdXQpKTsKIH0KICAgICAgICAgCi1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdF
eHBUZXN0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3Qs
IEpTU3RyaW5nKiBpbnB1dCkKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRl
c3RTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgSlNTdHJpbmcqIGlucHV0KQogewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIHJldHVybiByZWdF
eHBPYmplY3QtPnRlc3QoZXhlYywgaW5wdXQpOworICAgIHJldHVybiByZWdFeHBPYmplY3QtPnRl
c3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnB1dCk7CiB9CiAKLXNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhlY1N0YXRlKiBleGVjLCBSZWdFeHBPYmplY3QqIHJlZ0V4
cE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQorc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQXJndW1lbnQpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQXJndW1lbnQpOwpAQCAtNjc1LDEyICs2NzUsMTIgQEAgc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUmVnRXhwVGVzdAogICAgIEpTU3RyaW5nKiBpbnB1dCA9IGFyZ3VtZW50LnRv
U3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlmICghaW5wdXQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICByZXR1cm4gcmVnRXhwT2JqZWN0LT50ZXN0KGV4ZWMsIGlucHV0KTsKKyAgICByZXR1
cm4gcmVnRXhwT2JqZWN0LT50ZXN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpOwogfQogCi1z
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYyhFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QXJndW1lbnQpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJp
YyhFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCiB7Ci0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCiAgICAgSlNW
YWx1ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKQEAgLTY5NCw3ICs2OTQs
NyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0CiAgICAgSlNTdHJp
bmcqIGlucHV0ID0gYXJndW1lbnQudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFpbnB1
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBhc1JlZ0V4cE9iamVjdChiYXNl
KS0+dGVzdChleGVjLCBpbnB1dCk7CisgICAgcmV0dXJuIGFzUmVnRXhwT2JqZWN0KGJhc2UpLT50
ZXN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpOwogfQogCiBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxOTc2MjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDEzICsxMDEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25BcgogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2hE
b3VibGUoRXhlY1N0YXRlKiwgZG91YmxlIHZhbHVlLCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVBvcChFeGVjU3RhdGUq
LCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25BcnJheVBvcEFuZFJlY292ZXJMZW5ndGgoRXhlY1N0YXRlKiwgSlNBcnJheSopIFdU
Rl9JTlRFUk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhw
RXhlY1N0cmluZyhFeGVjU3RhdGUqLCBSZWdFeHBPYmplY3QqLCBKU1N0cmluZyopIFdURl9JTlRF
Uk5BTDsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlYyhF
eGVjU3RhdGUqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwot
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJpYyhF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY1N0cmluZyhF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEpTU3RyaW5nKikgV1RG
X0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBF
eGVjKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUmVnRXhwRXhlY0dlbmVyaWMoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIC8vIFRoZXNlIGNvbXBhcmlz
b25zIHJldHVybiBhIGJvb2xlYW4gd2l0aGluIGEgc2l6ZV90IHN1Y2ggdGhhdCB0aGUgdmFsdWUg
aXMgemVybyBleHRlbmRlZCB0byBmaWxsIHRoZSByZWdpc3Rlci4KLXNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoRXhlY1N0YXRlKiwgUmVnRXhwT2JqZWN0Kiwg
SlNTdHJpbmcqKSBXVEZfSU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25S
ZWdFeHBUZXN0KEV4ZWNTdGF0ZSosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKSBXVEZf
SU5URVJOQUw7Ci1zaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJp
YyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBKU1N0cmluZyopIFdURl9JTlRF
Uk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOworc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVT
dHJpY3RFcUNlbGwoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEVuY29kZWRKU1ZhbHVlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUwLDcgKzU1MCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgU2tpcFNjb3BlOiB7CisgICAg
ICAgIGNhc2UgU2tpcFNjb3BlOgorICAgICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDogewogICAg
ICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcs
NiArMjA3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAg
IGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNlIEdldFNjb3BlOgogICAgIGNhc2Ug
U2tpcFNjb3BlOgorICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAgIGNhc2UgR2V0Q2xvc3Vy
ZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBHZXRHbG9iYWxWYXI6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MzYsMTAg
KzI4MzYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
IH0KIAogICAgIGNhc2UgUmVnRXhwRXhlYzogewotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkgewotICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKLSAgICAgICAgICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGdsb2JhbE9iamVjdCh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBnbG9iYWxPYmplY3QuZ3By
KCk7CisgICAgICAgIAorICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJl
Z0V4cE9iamVjdFVzZSkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpLnVzZUtpbmQo
KSA9PSBTdHJpbmdVc2UpIHsKKyAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBhcmd1
bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZVJlZ0V4
cE9iamVjdChub2RlLT5jaGlsZDEoKSwgYmFzZUdQUik7CkBAIC0yODQ5LDE2ICsyODUyLDE2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICAgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uUmVnRXhwRXhl
Y1N0cmluZywgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBiYXNlR1BSLAot
ICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEdQUik7CisgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5n
cHIoKSwKKyAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBhcmd1
bWVudEdQUik7CiAgICAgICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZy5ncHIo
KSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRU
YWdHUFIgPSBhcmd1bWVudC50YWdHUFIoKTsKICAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVudFBh
eWxvYWRHUFIgPSBhcmd1bWVudC5wYXlsb2FkR1BSKCk7CkBAIC0yODY4LDE2ICsyODcxLDE2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CiAgICAgICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbigKLSAgICAgICAgICAgICAgICBvcGVyYXRpb25SZWdFeHBFeGVjLCByZXN1bHRUYWcuZ3By
KCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50VGFnR1BSLAotICAgICAg
ICAgICAgICAgIGFyZ3VtZW50UGF5bG9hZEdQUik7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9u
UmVnRXhwRXhlYywgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBnbG9iYWxP
YmplY3RHUFIsIGJhc2VHUFIsCisgICAgICAgICAgICAgICAgYXJndW1lbnRUYWdHUFIsIGFyZ3Vt
ZW50UGF5bG9hZEdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAg
ICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQ
YXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAg
ICBHUFJSZWcgYmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgICAgIEdQUlJlZyBiYXNl
UGF5bG9hZEdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgICAgICBHUFJSZWcgYXJndW1lbnRU
YWdHUFIgPSBhcmd1bWVudC50YWdHUFIoKTsKQEAgLTI4ODYsNyArMjg4OSw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJpYywgcmVzdWx0VGFnLmdwcigpLCBy
ZXN1bHRQYXlsb2FkLmdwcigpLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgYXJndW1lbnRU
YWdHUFIsIGFyZ3VtZW50UGF5bG9hZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24oCisgICAg
ICAgICAgICBvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJpYywgcmVzdWx0VGFnLmdwcigpLCByZXN1
bHRQYXlsb2FkLmdwcigpLCBnbG9iYWxPYmplY3RHUFIsCisgICAgICAgICAgICBiYXNlVGFnR1BS
LCBiYXNlUGF5bG9hZEdQUiwgYXJndW1lbnRUYWdHUFIsIGFyZ3VtZW50UGF5bG9hZEdQUik7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CkBAIC0y
ODk0LDEwICsyODk5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUmVnRXhwVGVzdDogewotICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkgewotICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKLSAgICAgICAg
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGdsb2JhbE9iamVjdCh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBn
bG9iYWxPYmplY3QuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCku
dXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKKyAgICAgICAgICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAg
ICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAg
ICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwogICAgICAgICAgICAgICAg
IHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDEoKSwgYmFzZUdQUik7CkBAIC0yOTA1
LDE1ICsyOTEzLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
ICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcsIHJlc3VsdC5n
cHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24oCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcsIHJlc3Vs
dC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CiAgICAgICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7
CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBH
UFJSZWcgYXJndW1lbnRUYWdHUFIgPSBhcmd1bWVudC50YWdHUFIoKTsKICAgICAgICAgICAgIEdQ
UlJlZyBhcmd1bWVudFBheWxvYWRHUFIgPSBhcmd1bWVudC5wYXlsb2FkR1BSKCk7CkBAIC0yOTIy
LDE1ICsyOTMxLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgICAgIG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJn
dW1lbnRUYWdHUFIsIGFyZ3VtZW50UGF5bG9hZEdQUik7CisgICAgICAgICAgICAgICAgb3BlcmF0
aW9uUmVnRXhwVGVzdCwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIGFy
Z3VtZW50VGFnR1BSLAorICAgICAgICAgICAgICAgIGFyZ3VtZW50UGF5bG9hZEdQUik7CiAgICAg
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgICAgIGJv
b2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQz
KCkpOwogICAgICAgICBHUFJSZWcgYmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgICAg
IEdQUlJlZyBiYXNlUGF5bG9hZEdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgICAgICBHUFJS
ZWcgYXJndW1lbnRUYWdHUFIgPSBhcmd1bWVudC50YWdHUFIoKTsKQEAgLTI5MzgsNyArMjk0OCw5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0R2Vu
ZXJpYywgcmVzdWx0LmdwcigpLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgYXJndW1lbnRU
YWdHUFIsIGFyZ3VtZW50UGF5bG9hZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24oCisgICAg
ICAgICAgICBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYywgcmVzdWx0LmdwcigpLCBnbG9iYWxP
YmplY3RHUFIsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLAorICAgICAgICAgICAgYXJndW1l
bnRUYWdHUFIsIGFyZ3VtZW50UGF5bG9hZEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIAogICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9k
ZSk7CkBAIC0zOTAxLDYgKzM5MTMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAgICBicmVh
azsKICAgICAgICAgCisgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CisgICAgICAgIGNvbXBpbGVH
ZXRHbG9iYWxPYmplY3Qobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKICAgICBjYXNl
IEdldENsb3N1cmVWYXI6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NjIsMTAgKzI5NjIs
MTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KIAog
ICAgIGNhc2UgUmVnRXhwRXhlYzogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnbG9i
YWxPYmplY3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgZ2xvYmFsT2Jq
ZWN0R1BSID0gZ2xvYmFsT2JqZWN0LmdwcigpOworICAgICAgICAKICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGFy
Z3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYmFz
ZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGFyZ3VtZW50R1BSID0g
YXJndW1lbnQuZ3ByKCk7CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRlUmVnRXhwT2JqZWN0KG5v
ZGUtPmNoaWxkMSgpLCBiYXNlR1BSKTsKQEAgLTI5NzMsMzYgKzI5NzYsMzYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uUmVnRXhwRXhlY1N0cmluZywgcmVzdWx0LmdwcigpLCBiYXNlR1BSLCBhcmd1bWVudEdQ
Uik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjU3Ry
aW5nLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgYXJndW1lbnRHUFIp
OwogICAgICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+
Y2hpbGQzKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAg
ICAgICAgICAgR1BSUmVnIGFyZ3VtZW50R1BSID0gYXJndW1lbnQuZ3ByKCk7CiAgICAgICAgICAg
ICBzcGVjdWxhdGVSZWdFeHBPYmplY3Qobm9kZS0+Y2hpbGQxKCksIGJhc2VHUFIpOwogICAgICAg
ICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblJlZ0V4cEV4ZWMsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjLCByZXN1bHQuZ3ByKCks
IGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgYXJndW1lbnRH
UFIgPSBhcmd1bWVudC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJpYywgcmVzdWx0LmdwcigpLCBiYXNl
R1BSLCBhcmd1bWVudEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhw
RXhlY0dlbmVyaWMsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBhcmd1
bWVudEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CkBAIC0zMDEwLDEwICszMDEz
LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAK
ICAgICBjYXNlIFJlZ0V4cFRlc3Q6IHsKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIo
KS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnbG9iYWxPYmplY3QodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gZ2xvYmFsT2JqZWN0LmdwcigpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBP
YmplY3RVc2UpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0g
U3RyaW5nVXNlKSB7CisgICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRH
UFIgPSBhcmd1bWVudC5ncHIoKTsKICAgICAgICAgICAgICAgICBzcGVjdWxhdGVSZWdFeHBPYmpl
Y3Qobm9kZS0+Y2hpbGQxKCksIGJhc2VHUFIpOwpAQCAtMzAyMSw3ICszMDI3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZywgcmVzdWx0LmdwcigpLCBiYXNlR1BSLCBhcmd1bWVu
dEdQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0
U3RyaW5nLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgYXJndW1lbnRH
UFIpOwogICAgICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxz
ZSksIHJlc3VsdC5ncHIoKSk7CkBAIC0zMDI5LDE1ICszMDM1LDE1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBh
cmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9
IGFyZ3VtZW50LmdwcigpOwogICAgICAgICAgICAgc3BlY3VsYXRlUmVnRXhwT2JqZWN0KG5vZGUt
PmNoaWxkMSgpLCBiYXNlR1BSKTsKICAgICAgICAgCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0LCByZXN1bHQuZ3ByKCks
IGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uUmVnRXhwVGVzdCwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIGFy
Z3VtZW50R1BSKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAg
IAogICAgICAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3Vs
dC5ncHIoKSk7CkBAIC0zMDQ1LDE0ICszMDUxLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9
IGFyZ3VtZW50LmdwcigpOwogICAgICAgICAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljLCByZXN1bHQuZ3ByKCksIGJhc2VHUFIs
IGFyZ3VtZW50R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0
R2VuZXJpYywgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIGFyZ3VtZW50
R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAg
IG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwpAQCAt
MzkzMCw2ICszOTM2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIFNraXBTY29wZToKICAgICAgICAgY29tcGlsZVNraXBTY29wZShub2RlKTsK
ICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKKyAgICAgICAgY29t
cGlsZUdldEdsb2JhbE9iamVjdChub2RlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAg
IGNhc2UgR2V0Q2xvc3VyZVZhcjogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTM0Miw2ICs1MzQyLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTa2lwU2Nv
cGUoTm8KICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRHbG9iYWxPYmplY3QoTm9kZSogbm9kZSkKK3sKKyAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBvYmplY3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CisgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUob2JqZWN0LmdwcigpLCByZXN1bHQuZ3ByKCks
IHNjcmF0Y2guZ3ByKCkpOworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
cmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVzdWx0Lmdw
cigpKTsKKyAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7Cit9CisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQogewogICAgIHN3
aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMTcsMTUgKzEyMTcsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUmVvSiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VHUmVvSiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewot
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRVJlb0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VHUmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0xNDQ2LDE0ICsxNDQ2
LDE5IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
U19KSVRPcGVyYXRpb25fRVJlb0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJ
VE9wZXJhdGlvbl9FR0pKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRVJlb0pzcyBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VHUmVvSiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewot
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0
aW9uX0VHUmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIApAQCAtMTQ2Nyw2ICsxNDcy
LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Sl9KSVRPcGVyYXRpb25fRUdKSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgaW50MzJfdCBpbW0pCiAgICAgewogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW1tKSkpKTsKQEAgLTE3MjIsMTQg
KzE3MzIsMTQgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
MlBheWxvYWQsIGFyZzJUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRVJlb0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcg
YXJnMlBheWxvYWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FR1Jlb0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0
UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVn
IGFyZzNQYXlsb2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnKTsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VSZW9Kc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVJlb0pzcyBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
U3NpQ0kgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCkKQEAgLTE4MjksMTQgKzE4MzksMTkgQEAgcHVibGljOgogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJn
MVBheWxvYWQsIGFyZzFUYWcsIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJU
YWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVy
YXRpb25fRVJlb0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VHSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFy
ZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJn
MlRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0g
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FUmVvSnNz
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdSZW9KIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25f
RUdSZW9Kc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBh
eWxvYWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCkBAIC0xODQ0LDYgKzE4
NTksMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFNINF8zMkJJVF9E
VU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdKSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2Fk
LCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0
KSwgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQs
IGFyZzJUYWcpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBh
eWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFy
ZzFQYXlsb2FkLCBhcmcxVGFnLCBTSDRfMzJCSVRfRFVNTVlfQVJHIGltbSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSk7CkBAIC0yMzA5LDYgKzIzMjksNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBjb21waWxlR2V0U2NvcGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNraXBT
Y29wZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlR2V0R2xvYmFsT2JqZWN0KE5vZGUqKTsKIAog
ICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTk3NjI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5D
b21waWxlKE5vZGUqIAogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBM
b29wSGludDoKICAgICBjYXNlIFNraXBTY29wZToKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoK
ICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgog
ICAgIGNhc2UgTmV3RnVuY3Rpb246CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0OCw2
ICs3NDgsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFNraXBTY29wZToKICAgICAgICAgICAg
IGNvbXBpbGVTa2lwU2NvcGUoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdl
dEdsb2JhbE9iamVjdDoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRHbG9iYWxPYmplY3QoKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgICAgICAg
ICBjb21waWxlR2V0Q2xvc3VyZVZhcigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDc1LDYg
KzQ0NzgsMTIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9h
ZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTU2NvcGVfbmV4dCkpOwog
ICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbE9iamVjdCgpCisgICAgeworICAgICAg
ICBMVmFsdWUgc3RydWN0dXJlID0gbG9hZFN0cnVjdHVyZShsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFw
cy5TdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0KSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGls
ZUdldENsb3N1cmVWYXIoKQogICAgIHsKQEAgLTY0NDAsNTIgKzY0NDksNjYgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgY29tcGlsZVJlZ0V4cEV4ZWMoKQogICAgIHsKLSAgICAgICAgaWYgKG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkgewotICAgICAgICAgICAg
TFZhbHVlIGJhc2UgPSBsb3dSZWdFeHBPYmplY3QobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IExWYWx1ZSBnbG9iYWxPYmplY3QgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVj
dFVzZSkgeworICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dSZWdFeHBPYmplY3QobV9ub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtX25vZGUtPmNoaWxk
MigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgYXJn
dW1lbnQgPSBsb3dTdHJpbmcobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBpZiAobV9u
b2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CisgICAgICAgICAgICAgICAg
TFZhbHVlIGFyZ3VtZW50ID0gbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAg
ICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgICAgIEludDY0
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlY1N0cmluZyksIG1fY2FsbEZyYW1l
LCBiYXNlLCBhcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlY1N0cmluZyksIG1fY2FsbEZyYW1lLCBnbG9iYWxPYmpl
Y3QsCisgICAgICAgICAgICAgICAgICAgIGJhc2UsIGFyZ3VtZW50KTsKICAgICAgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZSgKLSAgICAgICAg
ICAgICAgICB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVj
KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGFyZ3VtZW50KSk7CisgICAgICAgICAgICBMVmFsdWUgYXJn
dW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbCgKKyAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvblJlZ0V4cEV4ZWMpLCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBiYXNlLAor
ICAgICAgICAgICAgICAgIGFyZ3VtZW50KTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgTFZh
bHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUg
YXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBzZXRKU1Zh
bHVlKAotICAgICAgICAgICAgdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
UmVnRXhwRXhlY0dlbmVyaWMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgYXJndW1lbnQpKTsKKyAgICAg
ICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBM
VmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKAorICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJpYyksIG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3Qs
IGJhc2UsCisgICAgICAgICAgICBhcmd1bWVudCk7CisgICAgICAgIHNldEpTVmFsdWUocmVzdWx0
KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVSZWdFeHBUZXN0KCkKICAgICB7Ci0gICAgICAg
IGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKLSAg
ICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93UmVnRXhwT2JqZWN0KG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBMVmFsdWUgZ2xvYmFsT2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBS
ZWdFeHBPYmplY3RVc2UpIHsKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93UmVnRXhwT2Jq
ZWN0KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobV9u
b2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICAgICAg
TFZhbHVlIGFyZ3VtZW50ID0gbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAg
ICAgaWYgKG1fbm9kZS0+Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgeworICAgICAg
ICAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMygpKTsK
ICAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgICAg
ICAgICBJbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcpLCBt
X2NhbGxGcmFtZSwgYmFzZSwgYXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBJbnQzMiwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcpLCBtX2NhbGxGcmFtZSwg
Z2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICBiYXNlLCBhcmd1bWVudCk7CiAgICAg
ICAgICAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIHNldEJvb2xlYW4oCi0gICAgICAgICAg
ICAgICAgdm1DYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdCks
IG1fY2FsbEZyYW1lLCBiYXNlLCBhcmd1bWVudCkpOworICAgICAgICAgICAgTFZhbHVlIGFyZ3Vt
ZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSB2bUNhbGwoCisgICAgICAgICAgICAgICAgSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25SZWdFeHBUZXN0KSwgbV9jYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYmFzZSwKKyAg
ICAgICAgICAgICAgICBhcmd1bWVudCk7CisgICAgICAgICAgICBzZXRCb29sZWFuKHJlc3VsdCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBhcmd1bWVudCA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHNldEJvb2xlYW4oCi0gICAg
ICAgICAgICB2bUNhbGwoSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0
R2VuZXJpYyksIG1fY2FsbEZyYW1lLCBiYXNlLCBhcmd1bWVudCkpOworICAgICAgICBMVmFsdWUg
YmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSBhcmd1
bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwoCisgICAgICAgICAgICBJbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
blJlZ0V4cFRlc3RHZW5lcmljKSwgbV9jYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYmFzZSwKKyAg
ICAgICAgICAgIGFyZ3VtZW50KTsKKyAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOwogICAgIH0K
IAogICAgIHZvaWQgY29tcGlsZU5ld1JlZ2V4cCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsx
MjIsOSBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKCiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FQ1opKEV4ZWNT
dGF0ZSosIEpTQ2VsbCosIGludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRURBKShFeGVjU3RhdGUqLCBkb3VibGUsIEpTQXJyYXkq
KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9u
X0VFKShFeGVjU3RhdGUqLCBFeGVjU3RhdGUqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VHUmVvSikoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FR1Jlb0pzcykoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBKU1N0cmluZyopOwordHlwZWRlZiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUdKSikoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwog
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUkp
KEV4ZWNTdGF0ZSosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVy
YXRpb25fRUpaKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCk7CkBAIC0yMDEs
NiArMjA0LDkgQEAgdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJT04gKCpaX0pJVE9wZQogdHlw
ZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJT04gKCpaX0pJVE9wZXJhdGlvbl9FSlpaKShFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIHNpemVfdCBK
SVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBK
U0NlbGwqKTsKIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9F
R0MpKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKik7Cit0eXBlZGVmIHNpemVf
dCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUdKSikoRXhlY1N0YXRlKiwgSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiBzaXpl
X3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VHUmVvSikoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHNp
emVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUdSZW9Kc3MpKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgc2l6
ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUpOwogdHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9u
X0VKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVk
ZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FT0pzcykoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBKU1N0cmluZyopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAw
OSwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJp
Y2hAdXdhdGVybG9vLmNhKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzY0LDcgKzM2NCw4IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIG1fcmVnRXhwUHJvdG90
eXBlLnNldCh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4
cFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5n
ZXQoKSksIGVtcHR5UmVnZXgpKTsKICAgICBtX3JlZ0V4cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlw
ZS5nZXQoKSkpOwotICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhp
cywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKHZtLCAqdGhpcykpOworICAgIG1f
cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlKHZtLCB0aGlzKSk7CisgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlT
bG93UHV0U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U2xv
d1B1dFN0cnVjdHVyZSh2bSwgdGhpcykpOwogCiAgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKQEAgLTc2MSw2ICs3NjIsOSBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0OjpoYXZlQUJhZFRpbWUoVk0mIHZtCiAgICAgLy8gdGhpcyBvYmplY3Qgbm93IGxv
YWQgYSBzdHJ1Y3R1cmUgdGhhdCB1c2VzIFNsb3dQdXQuCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IE51bWJlck9mSW5kZXhpbmdTaGFwZXM7ICsraSkKICAgICAgICAgbV9hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nU2hhcGVEdXJpbmdBbGxvY2F0aW9uW2ldLnNldCh2bSwgdGhpcywgb3Jp
Z2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhTbG93UHV0QXJyYXlT
dG9yYWdlKSk7CisKKyAgICAvLyBTYW1lIGZvciBhbnkgc3BlY2lhbCBhcnJheSBzdHJ1Y3R1cmVz
LgorICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgbV9yZWdF
eHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJlLmdldCgpKTsKICAgICAKICAgICAvLyBNYWtl
IHN1cmUgdGhhdCBhbGwgb2JqZWN0cyB0aGF0IGhhdmUgaW5kZXhlZCBzdG9yYWdlIHN3aXRjaCB0
byB0aGUgc2xvdyBraW5kIG9mCiAgICAgLy8gaW5kZXhlZCBzdG9yYWdlLgpAQCAtOTAwLDYgKzkw
NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNB
cnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhw
TWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbnNvbGVTdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxOTc2
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNzgsNiArMjc4LDcg
QEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faW50ZXJuYWxGdW5j
dGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVz
dWx0T2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVn
RXhwTWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3Byb3h5T2JqZWN0U3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzc2LDcgKzEz
NzYsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEluCiAgICAgLy8g
d2Ugd2FudC4KICAgICBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RmlyZSBk
ZWZlcnJlZFdhdGNocG9pbnRGaXJlOwogICAgIAotICAgIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKAorICAgIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
YWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKAogICAgICAgICB2bSwgc3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCwgc2xvdC5jb250ZXh0KCksICZkZWZlcnJlZFdhdGNo
cG9pbnRGaXJlKTsKICAgICBuZXdTdHJ1Y3R1cmUtPndpbGxTdG9yZVZhbHVlRm9yTmV3VHJhbnNp
dGlvbigKICAgICAgICAgdm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QuY29udGV4dCgpID09
IFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAv
KgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5MywyOCArMjkzLDI3
IEBAIHByaXZhdGU6CiAgICAgICAgIGZpYmVyKDIpLnNldCh2bSwgdGhpcywgczMpOwogICAgIH0K
IAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlJiBleGVjLCBKU1N0cmluZyYgYmFz
ZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIGJhc2UsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKLSAgICAgICAgVk0mIHZtID0gZXhlYy52bSgp
OwogICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIEFTU0VSVCghc3Vt
T3ZlcmZsb3dzPGludDMyX3Q+KG9mZnNldCwgbGVuZ3RoKSk7Ci0gICAgICAgIEFTU0VSVChvZmZz
ZXQgKyBsZW5ndGggPD0gYmFzZS5sZW5ndGgoKSk7CisgICAgICAgIEFTU0VSVChvZmZzZXQgKyBs
ZW5ndGggPD0gYmFzZS0+bGVuZ3RoKCkpOwogICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKLSAg
ICAgICAgc2V0SXM4Qml0KGJhc2UuaXM4Qml0KCkpOworICAgICAgICBzZXRJczhCaXQoYmFzZS0+
aXM4Qml0KCkpOwogICAgICAgICBzZXRJc1N1YnN0cmluZyh0cnVlKTsKLSAgICAgICAgaWYgKGJh
c2UuaXNTdWJzdHJpbmcoKSkgewotICAgICAgICAgICAgSlNSb3BlU3RyaW5nJiBiYXNlUm9wZSA9
IHN0YXRpY19jYXN0PEpTUm9wZVN0cmluZyY+KGJhc2UpOwotICAgICAgICAgICAgc3Vic3RyaW5n
QmFzZSgpLnNldCh2bSwgdGhpcywgYmFzZVJvcGUuc3Vic3RyaW5nQmFzZSgpLmdldCgpKTsKLSAg
ICAgICAgICAgIHN1YnN0cmluZ09mZnNldCgpID0gYmFzZVJvcGUuc3Vic3RyaW5nT2Zmc2V0KCkg
KyBvZmZzZXQ7CisgICAgICAgIGlmIChiYXNlLT5pc1N1YnN0cmluZygpKSB7CisgICAgICAgICAg
ICBKU1JvcGVTdHJpbmcqIGJhc2VSb3BlID0ganNDYXN0PEpTUm9wZVN0cmluZyo+KGJhc2UpOwor
ICAgICAgICAgICAgc3Vic3RyaW5nQmFzZSgpLnNldCh2bSwgdGhpcywgYmFzZVJvcGUtPnN1YnN0
cmluZ0Jhc2UoKS5nZXQoKSk7CisgICAgICAgICAgICBzdWJzdHJpbmdPZmZzZXQoKSA9IGJhc2VS
b3BlLT5zdWJzdHJpbmdPZmZzZXQoKSArIG9mZnNldDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHN1YnN0cmluZ0Jhc2UoKS5zZXQodm0sIHRoaXMsICZiYXNlKTsKKyAgICAgICAgICAg
IHN1YnN0cmluZ0Jhc2UoKS5zZXQodm0sIHRoaXMsIGJhc2UpOwogICAgICAgICAgICAgc3Vic3Ry
aW5nT2Zmc2V0KCkgPSBvZmZzZXQ7CiAKICAgICAgICAgICAgIC8vIEZvciBub3csIGxldCdzIG5v
dCBhbGxvdyBzdWJzdHJpbmdzIHdpdGggYSByb3BlIGJhc2UuCiAgICAgICAgICAgICAvLyBSZXNv
bHZlIG5vbi1zdWJzdHJpbmcgcm9wZSBiYXNlcyBzbyB3ZSBkb24ndCBoYXZlIHRvIGRlYWwgd2l0
aCBpdC4KICAgICAgICAgICAgIC8vIEZJWE1FOiBFdmFsdWF0ZSBpZiB0aGlzIHdvdWxkIGJlIHdv
cnRoIGFkZGluZyBtb3JlIGJyYW5jaGVzLgotICAgICAgICAgICAgaWYgKGJhc2UuaXNSb3BlKCkp
Ci0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SlNSb3BlU3RyaW5nJj4oYmFzZSkucmVzb2x2
ZVJvcGUoJmV4ZWMpOworICAgICAgICAgICAgaWYgKGJhc2UtPmlzUm9wZSgpKQorICAgICAgICAg
ICAgICAgIGpzQ2FzdDxKU1JvcGVTdHJpbmcqPihiYXNlKS0+cmVzb2x2ZVJvcGUoZXhlYyk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTM1NiwxMCArMzU1LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG5ld1N0cmluZzsKICAgICB9CiAKLSAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShF
eGVjU3RhdGUmIGV4ZWMsIEpTU3RyaW5nJiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYywgSlNTdHJpbmcqIGJhc2UsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIHsKLSAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KGV4ZWMudm0oKS5oZWFwKSkgSlNSb3BlU3RyaW5nKGV4
ZWMudm0oKSk7Ci0gICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24oZXhlYywgYmFzZSwg
b2Zmc2V0LCBsZW5ndGgpOworICAgICAgICBKU1JvcGVTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUm9wZVN0cmluZz4odm0uaGVhcCkpIEpTUm9wZVN0cmlu
Zyh2bSk7CisgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWMsIGJhc2Us
IG9mZnNldCwgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICB9CiAKQEAg
LTU0MiwxNyArNTQxLDIxIEBAIGlubGluZSBKU1N0cmluZyoganNTdHJpbmcoVk0qIHZtLCBjb25z
dCAKICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSgqdm0sIHMuaW1wbCgpKTsKIH0KIAotaW5s
aW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKK2lubGluZSBKU1N0cmluZyoganNTdWJz
dHJpbmcoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzLCB1bnNpZ25lZCBvZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBBU1NFUlQob2Zmc2V0IDw9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzLT5sZW5ndGgoKSkpOwogICAgIEFTU0VSVChsZW5ndGggPD0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHMtPmxlbmd0aCgpKSk7CiAgICAgQVNTRVJUKG9mZnNldCArIGxlbmd0aCA8
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy0+bGVuZ3RoKCkpKTsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdz
LmVtcHR5U3RyaW5nKCk7CiAgICAgaWYgKCFvZmZzZXQgJiYgbGVuZ3RoID09IHMtPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gczsKLSAgICByZXR1cm4gSlNSb3BlU3RyaW5nOjpjcmVhdGUoKmV4
ZWMsICpzLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRl
KHZtLCBleGVjLCBzLCBvZmZzZXQsIGxlbmd0aCk7Cit9CisKK2lubGluZSBKU1N0cmluZyoganNT
dWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCit7CisgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGV4ZWMtPnZtKCksIGV4
ZWMsIHMsIG9mZnNldCwgbGVuZ3RoKTsKIH0KIAogaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmlu
ZyhWTSogdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1
bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENhY2hlZFJlc3VsdC5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDcg
KzQ1LDcgQEAgSlNBcnJheSogUmVnRXhwQ2FjaGVkUmVzdWx0OjpsYXN0UmVzdWx0KAogewogICAg
IGlmICghbV9yZWlmaWVkKSB7CiAgICAgICAgIG1fcmVpZmllZElucHV0LnNldChleGVjLT52bSgp
LCBvd25lciwgbV9sYXN0SW5wdXQuZ2V0KCkpOwotICAgICAgICBtX3JlaWZpZWRSZXN1bHQuc2V0
KGV4ZWMtPnZtKCksIG93bmVyLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgbV9sYXN0
SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQoKSwgbV9yZXN1bHQpKTsKKyAgICAgICAgbV9y
ZWlmaWVkUmVzdWx0LnNldChleGVjLT52bSgpLCBvd25lciwgY3JlYXRlUmVnRXhwTWF0Y2hlc0Fy
cmF5KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbV9sYXN0SW5wdXQuZ2V0KCks
IG1fbGFzdFJlZ0V4cC5nZXQoKSwgbV9yZXN1bHQpKTsKICAgICAgICAgbV9yZWlmaWVkID0gdHJ1
ZTsKICAgICB9CiAgICAgcmV0dXJuIG1fcmVpZmllZFJlc3VsdC5nZXQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNw
cAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwTWF0Y2hlc0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDMwICs1MCw1NiBAQCBz
dGF0aWMgSlNBcnJheSogdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlCiAgICAgcmV0dXJuIEpTQXJy
YXk6OmNyZWF0ZVdpdGhCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKIH0KIAot
SlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJp
bmcqIGlucHV0LCBSZWdFeHAqIHJlZ0V4cCwgTWF0Y2hSZXN1bHQgcmVzdWx0KQorSlNBcnJheSog
Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KAorICAgIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIGlucHV0LCBSZWdFeHAqIHJlZ0V4cCwKKyAg
ICBNYXRjaFJlc3VsdCByZXN1bHQpCiB7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdp
b24oImNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSIpOworICAgIAogICAgIEFTU0VSVChyZXN1bHQp
OwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgSlNBcnJheSogYXJyYXkgPSB0cnlDcmVh
dGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlc0FycmF5KHZtLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpLCByZWdFeHAtPm51bVN1YnBh
dHRlcm5zKCkgKyAxKTsKLSAgICBSRUxFQVNFX0FTU0VSVChhcnJheSk7Ci0KLSAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiUmVpZnlpbmcgc3Vic3RyaW5nIHByb3BlcnRpZXMiKTsK
LQotICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIDAsIGpzU3Vic3RyaW5nKGV4ZWMsIGlu
cHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpLCBBcnJheVdpdGhD
b250aWd1b3VzKTsKLQotICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+
bnVtU3VicGF0dGVybnMoKSkgewotICAgICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJl
c3VsdHM7Ci0gICAgICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2godm0sIGlucHV0LT52
YWx1ZShleGVjKSwgcmVzdWx0LnN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90
Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5zdGFy
dCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN1YnBhdHRlcm5SZXN1bHRzWzBdKSk7Ci0gICAgICAg
IEFTU0VSVChyZXN1bHQuZW5kID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0dGVyblJlc3Vs
dHNbMV0pKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRl
cm5zOyArK2kpIHsKLSAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRlcm5SZXN1bHRzWzIg
KiBpXTsKLSAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKQotICAgICAgICAgICAgICAgIGFycmF5
LT5pbml0aWFsaXplSW5kZXgodm0sIGksIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCBzdGFydCwg
c3VicGF0dGVyblJlc3VsdHNbMiAqIGkgKyAxXSAtIHN0YXJ0KSwgQXJyYXlXaXRoQ29udGlndW91
cyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJ
bmRleCh2bSwgaSwganNVbmRlZmluZWQoKSwgQXJyYXlXaXRoQ29udGlndW91cyk7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAgSlNBcnJheSogYXJyYXk7CisgICAgaWYg
KFVOTElLRUxZKGdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSkgeworICAgICAgICBh
cnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+
cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSAr
IDEpOworICAgICAgICAKKyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgMCwganNT
dWJzdHJpbmcodm0sIGV4ZWMsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1
bHQuc3RhcnQpKTsKKyAgICAgICAgCisgICAgICAgIGlmICh1bnNpZ25lZCBudW1TdWJwYXR0ZXJu
cyA9IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgeworICAgICAgICAgICAgVmVjdG9yPGludCwg
MzI+IHN1YnBhdHRlcm5SZXN1bHRzOworICAgICAgICAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhw
LT5tYXRjaCh2bSwgaW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3RhcnQsIHN1YnBhdHRlcm5S
ZXN1bHRzKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49
IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKKyAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQuc3RhcnQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJw
YXR0ZXJuUmVzdWx0c1swXSkpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5lbmQgPT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07
CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAgICAgICAgICAgICAgIGFy
cmF5LT5pbml0aWFsaXplSW5kZXgodm0sIGksIGpzU3Vic3RyaW5nKHZtLCBleGVjLCBpbnB1dCwg
c3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBpICsgMV0gLSBzdGFydCkpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2
bSwgaSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBhcnJheSA9IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVz
QXJyYXkodm0sIGdsb2JhbE9iamVjdC0+cmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCksIHJl
Z0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChhcnJh
eSk7CisgICAgICAgIAorICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCAwLCBqc1N1
YnN0cmluZyh2bSwgZXhlYywgaW5wdXQsIHJlc3VsdC5zdGFydCwgcmVzdWx0LmVuZCAtIHJlc3Vs
dC5zdGFydCksIEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICAKKyAgICAgICAgaWYgKHVu
c2lnbmVkIG51bVN1YnBhdHRlcm5zID0gcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpKSB7CisgICAg
ICAgICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CisgICAgICAgICAgICBp
bnQgcG9zaXRpb24gPSByZWdFeHAtPm1hdGNoKHZtLCBpbnB1dC0+dmFsdWUoZXhlYyksIHJlc3Vs
dC5zdGFydCwgc3VicGF0dGVyblJlc3VsdHMpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChw
b3NpdGlvbiwgcG9zaXRpb24gPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKSA9
PSByZXN1bHQuc3RhcnQpOworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5zdGFydCA9PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KHN1YnBhdHRlcm5SZXN1bHRzWzBdKSk7CisgICAgICAgICAgICBBU1NF
UlQocmVzdWx0LmVuZCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN1YnBhdHRlcm5SZXN1bHRzWzFd
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0g
bnVtU3VicGF0dGVybnM7ICsraSkgeworICAgICAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBh
dHRlcm5SZXN1bHRzWzIgKiBpXTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkKKyAg
ICAgICAgICAgICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgaSwganNTdWJzdHJp
bmcodm0sIGV4ZWMsIGlucHV0LCBzdGFydCwgc3VicGF0dGVyblJlc3VsdHNbMiAqIGkgKyAxXSAt
IHN0YXJ0KSwgQXJyYXlXaXRoQ29udGlndW91cyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCBpLCBqc1VuZGVmaW5l
ZCgpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KIApAQCAtODMsMTUgKzEwOSwyNSBAQCBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJy
YXkoRXhlY1N0CiAgICAgcmV0dXJuIGFycmF5OwogfQogCi1TdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCitzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkKIHsKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyk7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpOwogICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldDsKLSAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPmFkZFByb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5pbmRleCwgMCwgb2Zmc2V0KTsKKyAg
ICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0
dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5pbmRleCwgMCwgb2Zmc2V0KTsKICAgICBBU1NFUlQob2Zm
c2V0ID09IGluZGV4UHJvcGVydHlPZmZzZXQpOwotICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+
YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPmlu
cHV0LCAwLCBvZmZzZXQpOworICAgIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlU
cmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZtLnByb3BlcnR5TmFtZXMtPmlucHV0LCAwLCBvZmZz
ZXQpOwogICAgIEFTU0VSVChvZmZzZXQgPT0gaW5wdXRQcm9wZXJ0eU9mZnNldCk7CiAgICAgcmV0
dXJuIHN0cnVjdHVyZTsKIH0KIAorU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJl
dHVybiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmplY3QsIEFycmF5V2l0aENvbnRp
Z3VvdXMpOworfQorCitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJl
dHVybiBjcmVhdGVTdHJ1Y3R1cmVJbXBsKHZtLCBnbG9iYWxPYmplY3QsIEFycmF5V2l0aFNsb3dQ
dXRBcnJheVN0b3JhZ2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCShyZXZp
c2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRj
aGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtMjYsOCArMjYsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNB
cnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgUmVn
RXhwKiwgTWF0Y2hSZXN1bHQpOwotU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCYpOworSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0
Y2hlc0FycmF5KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqLCBSZWdFeHAq
LCBNYXRjaFJlc3VsdCk7CitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CitTdHJ1Y3R1cmUqIGNyZWF0ZVJlZ0V4cE1hdGNo
ZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCopOwogCiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAko
cmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMiwgMjAxNiBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0x
NTksMjAgKzE1OSwyMCBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
CiAgICAgQmFzZTo6cHV0KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
fQogCi1KU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlYyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5n
KiBzdHJpbmcpCitKU1ZhbHVlIFJlZ0V4cE9iamVjdDo6ZXhlYyhFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpCiB7Ci0gICAgaWYg
KE1hdGNoUmVzdWx0IHJlc3VsdCA9IG1hdGNoKGV4ZWMsIHN0cmluZykpCi0gICAgICAgIHJldHVy
biBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgc3RyaW5nLCByZWdFeHAoKSwgcmVzdWx0
KTsKKyAgICBpZiAoTWF0Y2hSZXN1bHQgcmVzdWx0ID0gbWF0Y2goZXhlYywgZ2xvYmFsT2JqZWN0
LCBzdHJpbmcpKQorICAgICAgICByZXR1cm4gY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RyaW5nLCByZWdFeHAoKSwgcmVzdWx0KTsKICAgICByZXR1cm4ganNO
dWxsKCk7CiB9CiAKIC8vIFNoYXJlZCBpbXBsZW1lbnRhdGlvbiB1c2VkIGJ5IHRlc3QgYW5kIGV4
ZWMuCi1NYXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNT
dHJpbmcqIHN0cmluZykKK01hdGNoUmVzdWx0IFJlZ0V4cE9iamVjdDo6bWF0Y2goRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogc3RyaW5nKQog
ewogICAgIFJlZ0V4cCogcmVnRXhwID0gdGhpcy0+cmVnRXhwKCk7Ci0gICAgUmVnRXhwQ29uc3Ry
dWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5y
ZWdFeHBDb25zdHJ1Y3RvcigpOworICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1
Y3RvciA9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKTsKICAgICBTdHJpbmcgaW5w
dXQgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmICghcmVnRXhwLT5nbG9iYWwoKSkK
ICAgICAgICAgcmV0dXJuIHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2godm0sIHJlZ0V4
cCwgc3RyaW5nLCBpbnB1dCwgMCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsOCAr
NjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2xhc3RJbmRleC5nZXQoKTsKICAgICB9
CiAKLSAgICBib29sIHRlc3QoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5nKSB7IHJl
dHVybiBtYXRjaChleGVjLCBzdHJpbmcpOyB9Ci0gICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSos
IEpTU3RyaW5nKik7CisgICAgYm9vbCB0ZXN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZykgeyByZXR1cm4gbWF0Y2goZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdHJpbmcpOyB9CisgICAgSlNWYWx1ZSBleGVjKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqKTsKIAogICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
Jik7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CkBAIC05Nyw3ICs5Nyw3IEBAIHByb3RlY3Rl
ZDoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKIHByaXZhdGU6Ci0gICAgTWF0Y2hSZXN1bHQgbWF0
Y2goRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKKyAgICBNYXRjaFJlc3VsdCBtYXRjaChFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKik7CiAKICAgICBXcml0ZUJhcnJpZXI8UmVn
RXhwPiBtX3JlZ0V4cDsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9sYXN0SW5kZXg7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTAy
LDcgKzEwMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAg
ICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhl
Yyk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNSZWdF
eHBPYmplY3QodGhpc1ZhbHVlKS0+dGVzdChleGVjLCBzdHJpbmcpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+dGVzdChl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN0cmluZykpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNFeGVjKEV4ZWNTdGF0ZSogZXhl
YykKQEAgLTExMyw3ICsxMTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvCiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5n
T3JOdWxsKGV4ZWMpOwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNSZWdF
eHBPYmplY3QodGhpc1ZhbHVlKS0+ZXhlYyhleGVjLCBzdHJpbmcpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPmV4ZWMoZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzNSw3ICsxMDM1LDggQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRv
U3RyaW5nKGV4ZWMpOwogICAgIFN0cmluZyBzID0gc3RyaW5nLT52YWx1ZShleGVjKTsKLSAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIFZNKiB2bSA9ICZnbG9iYWxPYmplY3Qt
PnZtKCk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAKQEAgLTEwNjcs
MTEgKzEwNjgsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwog
ICAgICAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2Fn
ZSgpKSk7CiAgICAgfQotICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwQ29uc3RydWN0b3IoKTsKKyAgICBS
ZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBnbG9iYWxPYmplY3QtPnJlZ0V4
cENvbnN0cnVjdG9yKCk7CiAgICAgTWF0Y2hSZXN1bHQgcmVzdWx0ID0gcmVnRXhwQ29uc3RydWN0
b3ItPnBlcmZvcm1NYXRjaCgqdm0sIHJlZ0V4cCwgc3RyaW5nLCBzLCAwKTsKICAgICAvLyBjYXNl
IHdpdGhvdXQgJ2cnIGZsYWcgaXMgaGFuZGxlZCBsaWtlIFJlZ0V4cC5wcm90b3R5cGUuZXhlYwog
ICAgIGlmICghZ2xvYmFsKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCA/
IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBzdHJpbmcsIHJlZ0V4cCwgcmVzdWx0KSA6
IGpzTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyBjcmVh
dGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIHJlZ0V4cCwg
cmVzdWx0KSA6IGpzTnVsbCgpKTsKIAogICAgIC8vIHJldHVybiBhcnJheSBvZiBtYXRjaGVzCiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbGlzdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTMtMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDks
IDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0Myw3ICs0NDMsMTggQEAgTm9uUHJvcGVydHlUcmFuc2l0
aW9uIFN0cnVjdHVyZTo6c3VnZ2VzdAogICAgIHJldHVybiBBbGxvY2F0ZUFycmF5U3RvcmFnZTsK
IH0KIAotU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0LCBQdXRQcm9wZXJ0eVNsb3Q6OkNv
bnRleHQgY29udGV4dCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUq
IGRlZmVycmVkKQorU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0KQoreworICAgIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlID0gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVj
dHVyZSgKKyAgICAgICAgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNl
dCk7CisgICAgaWYgKG5ld1N0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIG5ld1N0cnVjdHVyZTsK
KworICAgIHJldHVybiBhZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24oCisgICAgICAgIHZtLCBzdHJ1
Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgb2Zmc2V0LCBQdXRQcm9wZXJ0eVNsb3Q6
OlVua25vd25Db250ZXh0KTsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZE5ld1Byb3Bl
cnR5VHJhbnNpdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYgb2Zmc2V0
LCBQdXRQcm9wZXJ0eVNsb3Q6OkNvbnRleHQgY29udGV4dCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVkKQogewogICAgIEFTU0VSVCghc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24g
MTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9p
ZCBkdW1wU3RhdGlzdGljcygpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVj
dHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYsIFB1dFByb3BlcnR5U2xvdDo6
Q29udGV4dCA9IFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIERlZmVycmVkU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiA9IG51bGxwdHIpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVj
dHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQm
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGROZXdQcm9wZXJ0
eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIFByb3BlcnR5T2Zmc2V0JiwgUHV0UHJvcGVydHlTbG90OjpDb250ZXh0ID0gUHV0UHJv
cGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludEZpcmUqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVy
dHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUNvbmN1cnJlbnRseShTdHJ1Y3R1cmUqLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNl
dCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5
VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9mZnNldCYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlPZmZzZXQmKTsKQEAgLTI0NSw2ICsyNDYsOSBAQCBwdWJsaWM6CiAgICAgTm9u
UHJvcGVydHlUcmFuc2l0aW9uIHN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSBjb25z
dDsKICAgICAgICAgCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CisKKyAgICAvLyBOT1RFOiBUaGlzIG1ldGhv
ZCBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiBzdHJ1Y3R1cmVz
LCBzaW5jZSB0aGUgZ2xvYmFsCisgICAgLy8gb2JqZWN0IG9mIGEgc3RydWN0dXJlIGlzIHByZXN1
bWVkIHRvIGJlIGltbXV0YWJsZSBpbiBhIGJ1bmNoIG9mIHBsYWNlcy4KICAgICB2b2lkIHNldEds
b2JhbE9iamVjdChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIHsgbV9nbG9i
YWxPYmplY3Quc2V0KHZtLCB0aGlzLCBnbG9iYWxPYmplY3QpOyB9CiAgICAgICAgIAogICAgIEpT
VmFsdWUgc3RvcmVkUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm90b3R5cGUuZ2V0KCk7
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNo
ZXMtYXJyYXktYmFkLXRpbWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9yZWdleHAtbWF0Y2hlcy1hcnJheS1iYWQtdGltZS5qcwkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMt
YXJyYXktYmFkLXRpbWUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorKGZ1bmN0
aW9uKCkgeworICAgIHZhciBjb3VudCA9IDExOworCisgICAgdmFyIGFycmF5OworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgICAgICBhcnJheSA9IC9mb28vLmV4ZWMo
ImZvbyIpOworICAgICAgICBpZiAoYXJyYXlbMF0gIT0gImZvbyIpCisgICAgICAgICAgICB0aHJv
dyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyBhcnJheVswXTsKKyAgICB9CisKKyAgICBkZWxldGUg
YXJyYXlbMF07CisKKyAgICBBcnJheS5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXygiMCIsIGZ1
bmN0aW9uKHZhbHVlKSB7IGNvdW50ICs9IHZhbHVlOyB9KTsKKyAgICAKKyAgICBhcnJheVswXSA9
IDQyOworICAgIGlmIChjb3VudCAhPSA1MykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgY291
bnQ6ICIgKyBjb3VudDsKK30pKCk7CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXktc2xvdy1wdXQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZWdleHAtbWF0Y2hlcy1hcnJheS1z
bG93LXB1dC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXktc2xvdy1wdXQuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNSBAQAorKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb3VudCA9IDA7CisgICAgQXJy
YXkucHJvdG90eXBlLl9fZGVmaW5lU2V0dGVyX18oIjAiLCBmdW5jdGlvbih2YWx1ZSkgeyBjb3Vu
dCArPSB2YWx1ZTsgfSk7CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KSB7CisgICAgICAgIHZhciBhcnJheSA9IC9mb28vLmV4ZWMoImZvbyIpOworICAgICAgICBpZiAo
YXJyYXlbMF0gIT0gImZvbyIpCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyBhcnJheVswXTsKKyAgICAgICAgZGVsZXRlIGFycmF5WzBdOworICAgICAgICBhcnJheVsw
XSA9IDQyOworICAgICAgICBpZiAoY291bnQgIT0gKGkgKyAxKSAqIDQyKQorICAgICAgICAgICAg
dGhyb3cgIkVycm9yOiBiYWQgY291bnQgYXQgaSA9ICIgKyBpICsgIjogIiArIGNvdW50OworICAg
IH0KK30pKCk7CisgCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc2MjYpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wMy0wNiAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJh
eSBkb2Vzbid0IGtub3cgaG93IHRvIGhhdmUgYSBiYWQgdGltZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9yZWdyZXNzL3JlZ2V4cC1leGVjLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtZXhlYy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtZXhlYy5q
czogQWRkZWQuCisKIDIwMTYtMDMtMDUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcHJvY2Vzc2luZyB0aGUgYXV0b2ZpbGwgZmllbGQgbmFt
ZSBvdXQgb2YgZm9ybSBjb250cm9sIGVsZW1lbnRzIHVsdGltYXRlbHkgdG8gYWlkIGlucHV0IG1l
dGhvZHMKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLWV4ZWMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLWV4ZWMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAt
ZXhlYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdy
ZXNzL3JlZ2V4cC1leGVjCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5v
IGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1leGVjLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtZXhlYy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtZXhlYy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3JlZ2V4cC1leGVjLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3Jl
Z2V4cC1leGVjLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0
LXRlc3RzL3JlZ2V4cC1leGVjLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLWV4ZWMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw5IEBACisoZnVuY3Rpb24oKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgdmFyIG4gPSAx
MDAwMDAwOworICAgIHZhciByZSA9IC9mb28vOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsg
KytpKQorICAgICAgICByZXN1bHQgKz0gcmUuZXhlYygiZm9vIikubGVuZ3RoOworICAgIGlmIChy
ZXN1bHQgIT0gbikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfSkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273131</attachid>
            <date>2016-03-06 01:25:12 -0800</date>
            <delta_ts>2016-03-06 12:02:29 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>86929</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NjM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMSBA
QAorMjAxNi0wMy0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlZ0V4cE1hdGNoZXNBcnJheSBkb2Vzbid0IGtub3cgaG93IHRvIGhhdmUgYSBiYWQgdGltZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MDY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gdHJ1bmsg
aWYgd2UgYXJlIGhhdmluZyBhIGJhZCB0aW1lLCB0aGUgcmVnZXhwIG1hdGNoZXMgYXJyYXkgaXMg
c3RpbGwgYWxsb2NhdGVkIHdpdGggYQorICAgICAgICBub24tc2xvdy1wdXQgaW5kZXhpbmcgc2hh
cGUsIHdoaWNoIG1ha2VzIGl0IGhhdmUgdGhlIHdyb25nIGJlaGF2aW9yIG9uIGluZGV4ZWQgc2V0
dGVycyBvbgorICAgICAgICB0aGUgcHJvdG90eXBlIGNoYWluLgorCisgICAgICAgIEdldHRpbmcg
dGhpcyB0byB3b3JrIHJpZ2h0IHJlcXVpcmVzIGludHJvZHVjaW5nIGJhZCB0aW1lIGNvZGUgcGF0
aHMgaW50byB0aGUgcmVnZXhwIG1hdGNoZXMKKyAgICAgICAgYXJyYXkuIEl0IGFsc28gcmVxdWly
ZXMgc29tZXRoaW5nIG1vcmUgZHJhc3RpYzogbWFraW5nIHRoaXMgY29kZSBub3QgcGxheSBnYW1l
cyB3aXRoIHRoZQorICAgICAgICBnbG9iYWwgb2JqZWN0LiBUaGUgY29kZSB0aGF0IGNyZWF0ZXMg
dGhlIG1hdGNoZXMgYXJyYXkgbmVlZHMgdG8gaGF2ZSB0aGUgYWN0dWFsIGdsb2JhbAorICAgICAg
ICBvYmplY3Qgb2YgdGhlIHJlZ2V4cCBuYXRpdmUgZnVuY3Rpb24gdGhhdCBpdCdzIGxvZ2ljYWxs
eSBjcmVhdGVkIGJ5LgorCisgICAgICAgIFRoaXMgaXMgdG90YWxseSBkaWZmZXJlbnQgZnJvbSBo
b3cgd2UndmUgaGFuZGxlZCBnbG9iYWwgb2JqZWN0cyBpbiB0aGUgcGFzdCBiZWNhdXNlIGl0IG1l
YW5zCisgICAgICAgIHRoYXQgdGhlIGdsb2JhbCBvYmplY3QgaXMgbm90IGEgY29uc3RhbnQuIE5v
cm1hbGx5IHdlIGNhbiBtYWtlIGl0IGEgY29uc3RhbnQgYmVjYXVzZSBhCisgICAgICAgIHNjcmlw
dCBleGVjdXRhYmxlIHdpbGwga25vdyBpdHMgZ2xvYmFsIG9iamVjdC4gQnV0IHdpdGggbmF0aXZl
IGZ1bmN0aW9ucywgaXQncyB0aGUgZnVuY3Rpb24KKyAgICAgICAgaW5zdGFuY2UgdGhhdCBrbm93
cyB0aGUgZ2xvYmFsIG9iamVjdCAtIG5vdCB0aGUgbmF0aXZlIGV4ZWN1dGFibGUuIFdoZW4gd2Ug
aW5saW5lIGEgbmF0aXZlCisgICAgICAgIGludHJpbnNpYywgd2UgYXJlIGd1YXJhbnRlZWQgdG8g
a25vdyB0aGUgbmF0aXZlIGV4ZWN1dGFibGUgYnV0IHdlJ3JlIG5vdCBndWFyYW50ZWVkIHRvIGtu
b3cKKyAgICAgICAgdGhlIGZ1bmN0b24gaW5zdGFuY2UuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZ2xv
YmFsIG9iamVjdCBtYXkgYmUgYSB2YXJpYWJsZSB0aGF0IGdldHMgY29tcHV0ZWQKKyAgICAgICAg
YnkgbG9va2luZyBhdCB0aGUgaW5zdGFuY2UgYXQgcnVuLXRpbWUuIFNvLCB0aGUgUmVnRXhwRXhl
Yy9SZWdFeHBUZXN0IG5vZGVzIGluIERGRyBJUiBub3cKKyAgICAgICAgdGFrZSBhIGdsb2JhbCBv
YmplY3QgY2hpbGQuIFRoYXQgYWxzbyBtZWFudCBhZGRpbmcgYSBuZXcgbm9kZSB0eXBlLCBHZXRH
bG9iYWxPYmplY3QsIHdoaWNoCisgICAgICAgIGRvZXMgdGhlIHRoaW5nIHRvIHRoZSBjYWxsZWUg
dGhhdCBDYWxsRnJhbWU6OmxleGljYWxHbG9iYWxPYmplY3QoKSB3b3VsZCBoYXZlIGRvbmUuCisg
ICAgICAgIEV2ZW50dWFsbHksIHdlJ2xsIHByb2JhYmx5IGhhdmUgdG8gbWFrZSBvdGhlciBuYXRp
dmUgaW50cmluc2ljcyBhbHNvIHVzZSBHZXRHbG9iYWxPYmplY3QuIEl0CisgICAgICAgIHR1cm5z
IG91dCB0aGF0IHRoaXMgcmVhbGx5IGlzbid0IHNvIGJhZCBiZWNhdXNlIHVzdWFsbHkgaXQncyBj
b25zdGFudC1mb2xkZWQgYW55d2F5LCBzaW5jZQorICAgICAgICBhbHRob3VnaCB0aGUgaW50cmlu
c2ljIGNvZGUgc3VwcG9ydHMgZXhlY3V0YWJsZS1iYXNlZCBpbmxpbmluZyAod2hpY2ggbGVhdmVz
IHRoZSBjYWxsZWUKKyAgICAgICAgaW5zdGFuY2UgYXMgYW4gdW5rbm93biksIGl0IGhhcHBlbnMg
cmFyZWx5IGZvciBpbnRyaW5zaWNzLiBTbywgY29udmV5aW5nIHRoZSBnbG9iYWwgb2JqZWN0Cisg
ICAgICAgIHZpYSBhIGNoaWxkIGlzbid0IGFueSB3b3JzZSB0aGFuIGNvbnZleWluZyBpdCB2aWEg
bWV0YS1kYXRhLCBhbmQgaXQncyBwcm9iYWJseSBiZXR0ZXIgdGhhbgorICAgICAgICB0ZWxsaW5n
IHRoZSBpbmxpbmVyIG5vdCB0byBkbyBleGVjdXRhYmxlLWJhc2VkIGlubGluaW5nIG9mIG5hdGl2
ZSBpbnRyaW5zaWNzLiBUaGF0IHdvdWxkCisgICAgICAgIGhhdmUgYmVlbiBhIGNvbmZ1c2luZyBz
cGVjaWFsLWNhc2UuCisKKyAgICAgICAgVGhpcyBpcyBwZXJmLW5ldXRyYWwgb24gbXkgbWFjaGlu
ZXMgYnV0IGl0IGZpeGVzIGEgYnVnIGFuZCBpdCB1bmxvY2tzIHNvbWUgaW50ZXJlc3RpbmcKKyAg
ICAgICAgcG9zc2liaWxpdGllcy4gRm9yIGV4YW1wbGUsIFJlZ0V4cEV4ZWMgY2FuIG5vdyBtYWtl
IGEgZmlybSBwcm9taXNlIGFib3V0IHRoZSB0eXBlIG9mIGFycmF5CisgICAgICAgIGl0J3MgY3Jl
YXRpbmcuCisKKyAgICAgICAgVGhpcyBhbHNvIGNvbnRhaW5zIHNvbWUgb3RoZXIgY2hhbmdlczoK
KyAgICAgICAgCisgICAgICAgIC0gV2UgYXJlIG5vdyB1c2luZyBTdHJ1Y3R1cmU6OmFkZFByb3Bl
cnR5VHJhbnNpdGlvbigpIGluIGEgbG90IG9mIHBsYWNlcyBldmVuIHRob3VnaCBpdCB3YXMKKyAg
ICAgICAgICBtZWFudCB0byBiZSBhbiBpbnRlcm5hbCBtZXRob2Qgd2l0aCBhIHF1aXJreSBjb250
cmFjdCAtIGZvciBleGFtcGxlIGlmIG9ubHkgd29ya3MgaWYgeW91CisgICAgICAgICAga25vdyB0
aGF0IHRoZXJlIGlzIG5vdCBleGlzdGluZyB0cmFuc2l0aW9uLiBUaGlzIHJlbGF4ZXMgdGhpcyBj
b25zdHJhaW50LgorICAgICAgICAKKyAgICAgICAgLSBSZXN0b3JlcyB0aGUgdXNlIG9mICIqIiBm
b3IgaGVhcCByZWZlcmVuY2VzIGluIEpTU3RyaW5nLmguIEl0J3MgdmVyeSB1bnVzdWFsIHRvIGhh
dmUgaGVhcAorICAgICAgICAgIHJlZmVyZW5jZXMgcG9pbnRlZCBhdCB3aXRoICImIiwgc2luY2Ug
d2UgZG9uJ3QgY3VycmVudGx5IGRvIHRoYXQgYW55d2hlcmUuIFRoZSBmYWN0IHRoYXQKKyAgICAg
ICAgICBpdCB3YXMgdXNpbmcgdGhlIHdyb25nIHJlZmVyZW5jZSB0eXBlIGFsc28gbWVhbnQgdGhh
dCB0aGUgY29kZSBjb3VsZG4ndCBlbGVnYW50bHkgbWFrZSB1c2UKKyAgICAgICAgICBvZiBzb21l
IG91ciBHQyBwb2ludGVyIGhlbHBlcnMgbGlrZSBqc0Nhc3Q8Pi4KKworICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6YXR0ZW1wdFRvSW5saW5lQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXpl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Rv
ZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBy
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdT
YWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVNraXBTY29wZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxs
T3BlcmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2Rl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVNraXBTY29w
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRHbG9i
YWxPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
R2V0Q2xvc3VyZVZhcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVSZWdFeHBFeGVjKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVJlZ0V4cFRlc3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlTmV3UmVnZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpoYXZlQUJhZFRp
bWUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6anNTdWJzdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVz
dWx0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpsYXN0UmVzdWx0KToK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHA6CisgICAgICAgIChKU0M6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAoSlND
OjpjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkpOgorICAgICAgICAoSlNDOjpjcmVhdGVTdHJ1Y3R1
cmVJbXBsKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKiBy
dW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6cHV0
KToKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpleGVjKToKKyAgICAgICAgKEpTQzo6UmVn
RXhwT2JqZWN0OjptYXRjaCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0OjpnZXRMYXN0SW5kZXgpOgorICAgICAgICAoSlNDOjpS
ZWdFeHBPYmplY3Q6OnRlc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVGVzdCk6CisgICAgICAgIChKU0M6OnJl
Z0V4cFByb3RvRnVuY0V4ZWMpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNDb21waWxl
KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY01hdGNoKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlv
bik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3JlZ2V4cC1t
YXRjaGVzLWFycmF5LWJhZC10aW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
cmVnZXhwLW1hdGNoZXMtYXJyYXktc2xvdy1wdXQuanM6IEFkZGVkLgorCiAyMDE2LTAzLTA1ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIG1vc3QgYWdncmVz
c2l2ZSBmb3JtIG9mIFJlZ0V4cFRlc3QvUmVnRXhwRXhlYyBzaG91bGQgc3BlY3VsYXRlIG1vcmUg
YWdncmVzc2l2ZWx5IHRoYW4ganVzdCBjZWxsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZp
c2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NTQsMTcgKzE1NTQsMjkgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICAgICAg
ICAgIAogICAgIGNhc2UgUmVnRXhwRXhlYzoKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKLSAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigp
LnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVz
ZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UKKyAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMygp
LnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgICAgIC8vIFRoaXMgZG9lc24ndCBj
bG9iYmVyIHRoZSB3b3JsZCBzaW5jZSB0aGVyZSBhcmUgbm8gY29udmVyc2lvbnMgdG8gcGVyZm9y
bS4KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwotICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFw
VG9wKCk7CisgICAgICAgIGlmIChKU1ZhbHVlIGdsb2JhbE9iamVjdFZhbHVlID0gZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV92YWx1ZSkgeworICAgICAgICAgICAgaWYgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0VmFsdWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5n
QUJhZFRpbWUoKSkgeworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRzKCku
YWRkTGF6aWx5KGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkpOworICAg
ICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+cmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yTm9k
ZShub2RlKS5zZXQobV9ncmFwaCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgZm9y
Tm9kZShub2RlKS5tZXJnZShTcGVjT3RoZXIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPdGhlciB8IFNwZWNBcnJheSk7CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBSZWdFeHBUZXN0OgotICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQotICAgICAgICAgICAgJiYgbm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgeworICAgICAgICBpZiAobm9kZS0+Y2hp
bGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZQorICAgICAgICAgICAgJiYgbm9kZS0+
Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgLy8gVGhpcyBk
b2Vzbid0IGNsb2JiZXIgdGhlIHdvcmxkIHNpbmNlIHRoZXJlIGFyZSBubyBjb252ZXJzaW9ucyB0
byBwZXJmb3JtLgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CkBAIC0xODgyLDYgKzE4OTQsMzMgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDogeworICAgICAgICBKU1ZhbHVlIGNo
aWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxk
KSB7CisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUoSlNWYWx1
ZShhc09iamVjdChjaGlsZCktPmdsb2JhbE9iamVjdCgpKSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1
Y3R1cmUuaXNGaW5pdGUoKSkgeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG51bGxwdHI7CisgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlLmZvckVhY2goCisgICAgICAgICAg
ICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9
IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGdsb2JhbE9iamVjdCAhPSBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IGlmIChnbG9iYWxPYmplY3QgJiYgb2spIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCAqbV9ncmFwaC5mcmVlemUoSlNWYWx1ZShnbG9iYWxPYmplY3QpKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUobV9ncmFwaCwgU3BlY09iamVjdE90aGVyKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCiAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgICAgICBpZiAoSlNWYWx1ZSB2
YWx1ZSA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRDbG9zdXJlVmFyKGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpLCBub2RlLT5zY29wZU9mZnNldCgpKSkgewogICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwgKm1fZ3JhcGguZnJlZXplKHZhbHVlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuY2VsTGlua2lu
Z0ZvckJsb2NrKElubGluZVN0YWNrRW50cnkqLCBCYXNpY0Jsb2NrKik7IC8vIE9ubHkgd29ya3Mg
d2hlbiB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIGxhc3Qgb25lIHRvIGhhdmUgYmVlbiBhZGRlZCBm
b3IgdGhhdCBpbmxpbmUgc3RhY2sgZW50cnkuCiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5j
dGlvbnMuIFJldHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBw
bGFudCBhIGNhbGwuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KLSAgICBi
b29sIGhhbmRsZUludHJpbnNpY0NhbGwoaW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50
IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNrcyk7Cisg
ICAgYm9vbCBoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgaW50IHJlc3VsdE9wZXJh
bmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3Im
IGluc2VydENoZWNrcyk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tzRnVuY3Rvcj4KICAg
ICBib29sIGhhbmRsZUludHJpbnNpY0dldHRlcihpbnQgcmVzdWx0T3BlcmFuZCwgY29uc3QgR2V0
QnlJZFZhcmlhbnQmIGludHJpbnNpY1ZhcmlhbnQsIE5vZGUqIHRoaXNOb2RlLCBjb25zdCBDaGVj
a3NGdW5jdG9yJiBpbnNlcnRDaGVja3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNrc0Z1
bmN0b3I+CkBAIC0xNjAxLDcgKzE2MDEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0
VG9JbmxpbmVDYWxsCiAgICAgCiAgICAgICAgIEludHJpbnNpYyBpbnRyaW5zaWMgPSBjYWxsZWUu
aW50cmluc2ljRm9yKHNwZWNpYWxpemF0aW9uS2luZCk7CiAgICAgICAgIGlmIChpbnRyaW5zaWMg
IT0gTm9JbnRyaW5zaWMpIHsKLSAgICAgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWNDYWxsKHJl
c3VsdE9wZXJhbmQsIGludHJpbnNpYywgcmVnaXN0ZXJPZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBwcmVkaWN0aW9uLCBpbnNlcnRDaGVja3NXaXRoQWNjb3VudGluZykpIHsKKyAg
ICAgICAgICAgIGlmIChoYW5kbGVJbnRyaW5zaWNDYWxsKGNhbGxUYXJnZXROb2RlLCByZXN1bHRP
cGVyYW5kLCBpbnRyaW5zaWMsIHJlZ2lzdGVyT2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgcHJlZGljdGlvbiwgaW5zZXJ0Q2hlY2tzV2l0aEFjY291bnRpbmcpKSB7CiAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkSW5zZXJ0Q2hlY2tzKTsKICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2RlKTsKICAgICAgICAgICAgICAgICBl
bWl0QXJndW1lbnRQaGFudG9tcyhyZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpOwpAQCAtMTk5MSw3ICsxOTkxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
TWluTWF4KGludCByZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGVja3NGdW5jdG9yPgotYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChpbnQgcmVzdWx0T3BlcmFuZCwg
SW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1
bmN0b3ImIGluc2VydENoZWNrcykKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0NhbGwoTm9kZSogY2FsbGVlLCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljIGludHJpbnNp
YywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIGNvbnN0IENoZWNrc0Z1bmN0b3ImIGluc2VydENoZWNr
cykKIHsKICAgICBzd2l0Y2ggKGludHJpbnNpYykgewogCkBAIC0yMTcyLDcgKzIxNzIsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRDaGVja3MoKTsKLSAgICAgICAgTm9k
ZSogcmVnRXhwRXhlYyA9IGFkZFRvR3JhcGgoUmVnRXhwRXhlYywgT3BJbmZvKDApLCBPcEluZm8o
cHJlZGljdGlvbiksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9m
ZnNldCkpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZzZXQp
KSk7CisgICAgICAgIE5vZGUqIHJlZ0V4cEV4ZWMgPSBhZGRUb0dyYXBoKFJlZ0V4cEV4ZWMsIE9w
SW5mbygwKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBhZGRUb0dyYXBoKEdldEdsb2JhbE9iamVjdCwg
Y2FsbGVlKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0
KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsK
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVnRXhwRXhlYyk7
CiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIxODMsNyArMjE4Myw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIGluc2VydENoZWNrcygpOwotICAgICAgICBOb2Rl
KiByZWdFeHBFeGVjID0gYWRkVG9HcmFwaChSZWdFeHBUZXN0LCBPcEluZm8oMCksIE9wSW5mbyhw
cmVkaWN0aW9uKSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zm
c2V0KSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkp
KTsKKyAgICAgICAgTm9kZSogcmVnRXhwRXhlYyA9IGFkZFRvR3JhcGgoUmVnRXhwVGVzdCwgT3BJ
bmZvKDApLCBPcEluZm8ocHJlZGljdGlvbiksIGFkZFRvR3JhcGgoR2V0R2xvYmFsT2JqZWN0LCBj
YWxsZWUpLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQp
KSwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpOwog
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZWdFeHBFeGVjKTsK
ICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiAr
MTM0LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNh
c2UgQXJpdGhMb2c6CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIFNraXBTY29wZToKKyAg
ICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAg
Y2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgY2FzZSBJc1VuZGVmaW5lZDoKQEAgLTEwNzgsOCAr
MTA3OSw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKIAogICAg
IGNhc2UgUmVnRXhwRXhlYzoKICAgICBjYXNlIFJlZ0V4cFRlc3Q6Ci0gICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlCi0gICAgICAgICAgICAmJiBu
b2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CisgICAgICAgIGlmIChub2Rl
LT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlCisgICAgICAgICAgICAmJiBu
b2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAgICByZWFk
KFJlZ0V4cFN0YXRlKTsKICAgICAgICAgICAgIHdyaXRlKFJlZ0V4cFN0YXRlKTsKICAgICAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJ
KHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBHZXRT
Y29wZToKICAgICBjYXNlIFNraXBTY29wZToKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAg
ICBjYXNlIEdldENsb3N1cmVWYXI6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2Ug
R2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzksMTEg
Kzg3OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgUmVnRXhwRXhl
YzoKICAgICAgICAgY2FzZSBSZWdFeHBUZXN0OiB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZVJlZ0V4cE9iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxSZWdFeHBPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZp
eEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlUmVnRXhwT2JqZWN0KCkp
IHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFJlZ0V4cE9iamVjdFVzZT4obm9kZS0+Y2hpbGQy
KCkpOwogCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxh
dGVTdHJpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCktPnNob3VsZFNw
ZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4o
bm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTEwNDksNyArMTA1MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgICAgICBjYXNlIEdldFNjb3BlOgogICAgICAgICBjYXNlIEdldEdldHRlcjoKLSAg
ICAgICAgY2FzZSBHZXRTZXR0ZXI6IHsKKyAgICAgICAgY2FzZSBHZXRTZXR0ZXI6CisgICAgICAg
IGNhc2UgR2V0R2xvYmFsT2JqZWN0OiB7CiAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE5NzYyNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEyLDYgKzIxMiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAg
bWFjcm8oR2V0U2NvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFNraXBTY29wZSwgTm9k
ZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oR2V0R2xvYmFsT2JqZWN0LCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBtYWNybyhHZXRDbG9zdXJlVmFyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXRD
bG9zdXJlVmFyLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0R2xvYmFsVmFyLCBO
b2RlUmVzdWx0SlMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE5LDE3ICs2MTksMTcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcgogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYXJyYXktPnBvcChleGVjKSk7CiB9CiAgICAgICAgIAotRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBFeGVjU3RyaW5nKEV4ZWNTdGF0ZSogZXhl
YywgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEpTU3RyaW5nKiBhcmd1bWVudCkKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZ0V4cE9iamVjdCogcmVn
RXhwT2JqZWN0LCBKU1N0cmluZyogYXJndW1lbnQpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVnRXhwT2JqZWN0LT5leGVjKGV4ZWMsIGFyZ3VtZW50KSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZWdFeHBPYmplY3QtPmV4ZWMoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmd1bWVu
dCkpOwogfQogICAgICAgICAKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UmVnRXhwRXhlYyhFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnQpCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKICAgICAKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRBcmd1bWVudCk7CkBAIC02MzcsMTIgKzYzNywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAgICAgSlNTdHJpbmcqIGlucHV0ID0gYXJndW1lbnQu
dG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFpbnB1dCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlZ0V4cE9iamVjdC0+ZXhlYyhleGVjLCBpbnB1dCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVnRXhwT2JqZWN0LT5leGVjKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpKTsKIH0K
ICAgICAgICAgCi1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4
ZWNHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSk7CkBAIC02NTQsMjAgKzY1NCwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblJlCiAgICAgSlNTdHJpbmcqIGlucHV0ID0gYXJndW1lbnQudG9TdHJp
bmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFpbnB1dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzUmVn
RXhwT2JqZWN0KGJhc2UpLT5leGVjKGV4ZWMsIGlucHV0KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShhc1JlZ0V4cE9iamVjdChiYXNlKS0+ZXhlYyhleGVjLCBnbG9iYWxPYmplY3QsIGlu
cHV0KSk7CiB9CiAgICAgICAgIAotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhw
VGVzdFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0LCBK
U1N0cmluZyogaW5wdXQpCitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVn
RXhwT2JqZWN0KiByZWdFeHBPYmplY3QsIEpTU3RyaW5nKiBpbnB1dCkKIHsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICByZXR1cm4gcmVnRXhw
T2JqZWN0LT50ZXN0KGV4ZWMsIGlucHV0KTsKKyAgICByZXR1cm4gcmVnRXhwT2JqZWN0LT50ZXN0
KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQpOwogfQogCi1zaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25SZWdFeHBUZXN0KEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwT2JqZWN0KiByZWdFeHBP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudCkKK3NpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEFyZ3VtZW50KQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKIAogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEFyZ3VtZW50KTsKQEAgLTY3NSwxMiArNjc1LDEyIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblJlZ0V4cFRlc3QKICAgICBKU1N0cmluZyogaW5wdXQgPSBhcmd1bWVudC50b1N0
cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIWlucHV0KQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHJlZ0V4cE9iamVjdC0+dGVzdChleGVjLCBpbnB1dCk7CisgICAgcmV0dXJu
IHJlZ0V4cE9iamVjdC0+dGVzdChleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KTsKIH0KIAotc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFy
Z3VtZW50KQorc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50KQogewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAogICAgIEpTVmFs
dWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CkBAIC02OTQsNyArNjk0LDcg
QEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdAogICAgIEpTU3RyaW5n
KiBpbnB1dCA9IGFyZ3VtZW50LnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlmICghaW5wdXQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gYXNSZWdFeHBPYmplY3QoYmFzZSkt
PnRlc3QoZXhlYywgaW5wdXQpOworICAgIHJldHVybiBhc1JlZ0V4cE9iamVjdChiYXNlKS0+dGVz
dChleGVjLCBnbG9iYWxPYmplY3QsIGlucHV0KTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTk3NjI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMSwxMyArMTAxLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQXIKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoRG91
YmxlKEV4ZWNTdGF0ZSosIGRvdWJsZSB2YWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoRXhlY1N0YXRlKiwg
SlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQXJyYXlQb3BBbmRSZWNvdmVyTGVuZ3RoKEV4ZWNTdGF0ZSosIEpTQXJyYXkqKSBXVEZf
SU5URVJOQUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4
ZWNTdHJpbmcoRXhlY1N0YXRlKiwgUmVnRXhwT2JqZWN0KiwgSlNTdHJpbmcqKSBXVEZfSU5URVJO
QUw7Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWMoRXhl
Y1N0YXRlKiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKLUVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWdFeHBPYmplY3QqLCBKU1N0cmluZyopIFdURl9J
TlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwRXhl
YyhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blJlZ0V4cEV4ZWNHZW5lcmljKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiAvLyBUaGVzZSBjb21wYXJpc29u
cyByZXR1cm4gYSBib29sZWFuIHdpdGhpbiBhIHNpemVfdCBzdWNoIHRoYXQgdGhlIHZhbHVlIGlz
IHplcm8gZXh0ZW5kZWQgdG8gZmlsbCB0aGUgcmVnaXN0ZXIuCi1zaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEV4ZWNTdGF0ZSosIFJlZ0V4cE9iamVjdCosIEpT
U3RyaW5nKikgV1RGX0lOVEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVn
RXhwVGVzdChFeGVjU3RhdGUqLCBSZWdFeHBPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOwotc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgSlNTdHJpbmcqKSBXVEZfSU5URVJO
QUw7CitzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0KEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRF
Uk5BTDsKK3NpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
KSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3Ry
aWN0RXFDZWxsKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNvbXBhcmVTdHJpY3RFcShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBFbmNvZGVkSlNWYWx1ZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1MCw3ICs1NTAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIFNraXBTY29wZTogeworICAgICAg
ICBjYXNlIFNraXBTY29wZToKKyAgICAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6IHsKICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYg
KzIwNyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBj
YXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIFNr
aXBTY29wZToKKyAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNlIEdldENsb3N1cmVW
YXI6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgR2V0R2xvYmFsVmFyOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODM2LDQ4ICsy
ODM2LDUxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9
CiAKICAgICBjYXNlIFJlZ0V4cEV4ZWM6IHsKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDIoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBnbG9iYWxPYmplY3QodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gZ2xvYmFsT2JqZWN0Lmdwcigp
OworICAgICAgICAKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBSZWdF
eHBPYmplY3RVc2UpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkg
PT0gU3RyaW5nVXNlKSB7CisgICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgYXJndW1l
bnRHUFIgPSBhcmd1bWVudC5ncHIoKTsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGVSZWdFeHBP
YmplY3Qobm9kZS0+Y2hpbGQxKCksIGJhc2VHUFIpOwotICAgICAgICAgICAgICAgIHNwZWN1bGF0
ZVN0cmluZyhub2RlLT5jaGlsZDIoKSwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAgICAgIHNw
ZWN1bGF0ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDIoKSwgYmFzZUdQUik7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMygpLCBhcmd1bWVudEdQUik7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAg
ICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICAg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uUmVn
RXhwRXhlY1N0cmluZywgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBiYXNl
R1BSLAotICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEdQUik7CisgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5
bG9hZC5ncHIoKSwKKyAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BS
LCBhcmd1bWVudEdQUik7CiAgICAgICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRh
Zy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAg
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYXJn
dW1lbnRUYWdHUFIgPSBhcmd1bWVudC50YWdHUFIoKTsKICAgICAgICAgICAgIEdQUlJlZyBhcmd1
bWVudFBheWxvYWRHUFIgPSBhcmd1bWVudC5wYXlsb2FkR1BSKCk7Ci0gICAgICAgICAgICBzcGVj
dWxhdGVSZWdFeHBPYmplY3Qobm9kZS0+Y2hpbGQxKCksIGJhc2VHUFIpOworICAgICAgICAgICAg
c3BlY3VsYXRlUmVnRXhwT2JqZWN0KG5vZGUtPmNoaWxkMigpLCBiYXNlR1BSKTsKICAgICAgICAg
CiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAg
ICAgICAgICAgICAgIG9wZXJhdGlvblJlZ0V4cEV4ZWMsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0
UGF5bG9hZC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRUYWdHUFIsCi0gICAgICAgICAgICAgICAg
YXJndW1lbnRQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25SZWdFeHBFeGVj
LCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIGdsb2JhbE9iamVjdEdQUiwg
YmFzZUdQUiwKKyAgICAgICAgICAgICAgICBhcmd1bWVudFRhZ0dQUiwgYXJndW1lbnRQYXlsb2Fk
R1BSKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAg
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3By
KCksIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgIEdQUlJlZyBi
YXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkR1BS
ID0gYmFzZS5wYXlsb2FkR1BSKCk7CiAgICAgICAgIEdQUlJlZyBhcmd1bWVudFRhZ0dQUiA9IGFy
Z3VtZW50LnRhZ0dQUigpOwpAQCAtMjg4Niw3ICsyODg5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRoaXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxv
YWQuZ3ByKCksIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCBhcmd1bWVudFRhZ0dQUiwgYXJn
dW1lbnRQYXlsb2FkR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgIG9w
ZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQu
Z3ByKCksIGdsb2JhbE9iamVjdEdQUiwKKyAgICAgICAgICAgIGJhc2VUYWdHUFIsIGJhc2VQYXls
b2FkR1BSLCBhcmd1bWVudFRhZ0dQUiwgYXJndW1lbnRQYXlsb2FkR1BSKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKQEAgLTI4OTQsNDMgKzI4
OTksNDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBSZWdFeHBUZXN0OiB7Ci0gICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlKSB7Ci0gICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewotICAgICAgICAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2xvYmFsT2JqZWN0KHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGdsb2JhbE9iamVj
dC5ncHIoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkg
PT0gUmVnRXhwT2JqZWN0VXNlKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQzKCkudXNl
S2luZCgpID09IFN0cmluZ1VzZSkgeworICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAg
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICAgICAgR1BSUmVn
IGFyZ3VtZW50R1BSID0gYXJndW1lbnQuZ3ByKCk7Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRl
UmVnRXhwT2JqZWN0KG5vZGUtPmNoaWxkMSgpLCBiYXNlR1BSKTsKLSAgICAgICAgICAgICAgICBz
cGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQyKCksIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAg
ICAgICBzcGVjdWxhdGVSZWdFeHBPYmplY3Qobm9kZS0+Y2hpbGQyKCksIGJhc2VHUFIpOworICAg
ICAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZyhub2RlLT5jaGlsZDMoKSwgYXJndW1lbnRHUFIp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZywgcmVzdWx0
LmdwcigpLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZywgcmVz
dWx0LmdwcigpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKICAgICAg
ICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMygp
KTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAg
IEdQUlJlZyBhcmd1bWVudFRhZ0dQUiA9IGFyZ3VtZW50LnRhZ0dQUigpOwogICAgICAgICAgICAg
R1BSUmVnIGFyZ3VtZW50UGF5bG9hZEdQUiA9IGFyZ3VtZW50LnBheWxvYWRHUFIoKTsKLSAgICAg
ICAgICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDEoKSwgYmFzZUdQUik7Cisg
ICAgICAgICAgICBzcGVjdWxhdGVSZWdFeHBPYmplY3Qobm9kZS0+Y2hpbGQyKCksIGJhc2VHUFIp
OwogICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKAotICAgICAgICAgICAgICAgIG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwg
YmFzZUdQUiwgYXJndW1lbnRUYWdHUFIsIGFyZ3VtZW50UGF5bG9hZEdQUik7CisgICAgICAgICAg
ICAgICAgb3BlcmF0aW9uUmVnRXhwVGVzdCwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3RHUFIs
IGJhc2VHUFIsIGFyZ3VtZW50VGFnR1BSLAorICAgICAgICAgICAgICAgIGFyZ3VtZW50UGF5bG9h
ZEdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAg
ICAgICAgICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywg
bm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICBHUFJSZWcgYmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BS
KCk7CiAgICAgICAgIEdQUlJlZyBiYXNlUGF5bG9hZEdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwog
ICAgICAgICBHUFJSZWcgYXJndW1lbnRUYWdHUFIgPSBhcmd1bWVudC50YWdHUFIoKTsKQEAgLTI5
MzgsNyArMjk0OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25S
ZWdFeHBUZXN0R2VuZXJpYywgcmVzdWx0LmdwcigpLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQ
UiwgYXJndW1lbnRUYWdHUFIsIGFyZ3VtZW50UGF5bG9hZEdQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24oCisgICAgICAgICAgICBvcGVyYXRpb25SZWdFeHBUZXN0R2VuZXJpYywgcmVzdWx0Lmdw
cigpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLAorICAgICAg
ICAgICAgYXJndW1lbnRUYWdHUFIsIGFyZ3VtZW50UGF5bG9hZEdQUik7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBib29sZWFuUmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbm9kZSk7CkBAIC0zOTAxLDYgKzM5MTMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwog
ICAgICAgICBicmVhazsKICAgICAgICAgCisgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CisgICAg
ICAgIGNvbXBpbGVHZXRHbG9iYWxPYmplY3Qobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgICAg
ICAKICAgICBjYXNlIEdldENsb3N1cmVWYXI6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHRUYWcodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
NjIsNDcgKzI5NjIsNTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgIH0KIAogICAgIGNhc2UgUmVnRXhwRXhlYzogewotICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkgewotICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKLSAgICAgICAgICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGdsb2JhbE9iamVjdCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBnbG9iYWxPYmpl
Y3QuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgp
ID09IFJlZ0V4cE9iamVjdFVzZSkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMygpLnVz
ZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKKyAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAgICAgICAgIEdQUlJl
ZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwotICAgICAgICAgICAgICAgIHNwZWN1bGF0
ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDEoKSwgYmFzZUdQUik7Ci0gICAgICAgICAgICAgICAg
c3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMigpLCBhcmd1bWVudEdQUik7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRlUmVnRXhwT2JqZWN0KG5vZGUtPmNoaWxkMigpLCBiYXNlR1BSKTsKKyAg
ICAgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQzKCksIGFyZ3VtZW50R1BS
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcsIHJlc3Vs
dC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlY1N0cmluZywgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmpl
Y3RHUFIsIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKICAgICAgICAgICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBh
cmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9
IGFyZ3VtZW50LmdwcigpOwotICAgICAgICAgICAgc3BlY3VsYXRlUmVnRXhwT2JqZWN0KG5vZGUt
PmNoaWxkMSgpLCBiYXNlR1BSKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChu
b2RlLT5jaGlsZDIoKSwgYmFzZUdQUik7CiAgICAgICAgIAogICAgICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
LSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlYywgcmVzdWx0Lmdw
cigpLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblJlZ0V4cEV4ZWMsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BS
LCBhcmd1bWVudEdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAg
ICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
YXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1l
bnQodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwogICAg
ICAgICAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4
cEV4ZWNHZW5lcmljLCByZXN1bHQuZ3ByKCksIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBFeGVjR2VuZXJpYywgcmVzdWx0Lmdwcigp
LCBnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
LmdwcigpLCBub2RlKTsKQEAgLTMwMTAsMTggKzMwMTMsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgUmVnRXhwVGVzdDogewot
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkg
ewotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2Up
IHsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVu
dCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGds
b2JhbE9iamVjdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIgPSBnbG9iYWxPYmplY3QuZ3ByKCk7CisgICAgICAgIAorICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFJlZ0V4cE9iamVjdFVzZSkgeworICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKKyAgICAgICAgICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5j
aGlsZDMoKSk7CiAgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwog
ICAgICAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwotICAg
ICAgICAgICAgICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDEoKSwgYmFzZUdQ
Uik7Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMigpLCBhcmd1
bWVudEdQUik7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlUmVnRXhwT2JqZWN0KG5vZGUtPmNo
aWxkMigpLCBiYXNlR1BSKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+
Y2hpbGQzKCksIGFyZ3VtZW50R1BSKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJl
Z0V4cFRlc3RTdHJpbmcsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOworICAg
ICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZywgcmVz
dWx0LmdwcigpLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKICAgICAg
ICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQu
Z3ByKCkpOwpAQCAtMzAyOSwxNSArMzAzNSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1
bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYXJndW1lbnRHUFIgPSBhcmd1bWVudC5n
cHIoKTsKLSAgICAgICAgICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDEoKSwg
YmFzZUdQUik7CisgICAgICAgICAgICBzcGVjdWxhdGVSZWdFeHBPYmplY3Qobm9kZS0+Y2hpbGQy
KCksIGJhc2VHUFIpOwogICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdC5ncHIoKSwgYmFzZUdQ
UiwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdF
eHBUZXN0LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgYXJndW1lbnRH
UFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAg
ICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0Lmdwcigp
KTsKQEAgLTMwNDUsMTQgKzMwNTEsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIGFyZ3VtZW50R1BSID0gYXJndW1l
bnQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVyaWMsIHJlc3VsdC5ncHIoKSwgYmFzZUdQUiwgYXJndW1l
bnRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmlj
LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgbV9qaXQu
b3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CkBAIC0zOTMwLDYg
KzM5MzYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjb21waWxlU2tpcFNjb3BlKG5vZGUpOwogICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgorICAgICAgICBjb21waWxlR2V0
R2xvYmFsT2JqZWN0KG5vZGUpOworICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBH
ZXRDbG9zdXJlVmFyOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzQy
LDYgKzUzNDIsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNraXBTY29wZShObwog
ICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEdsb2JhbE9iamVjdChOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIG9iamVjdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBt
X2ppdC5lbWl0TG9hZFN0cnVjdHVyZShvYmplY3QuZ3ByKCksIHJlc3VsdC5ncHIoKSwgc2NyYXRj
aC5ncHIoKSk7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQu
Z3ByKCksIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwor
ICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3RoKE5vZGUqIG5vZGUpCiB7CiAgICAgc3dpdGNoIChu
b2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIxNywxNSArMTIxNywxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VSZW9KIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
UmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdS
ZW9Kc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKQEAgLTE0NDYsMTQgKzE0NDYsMTkgQEAg
cHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FUmVvSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0
aW9uX0VHSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FUmVvSnNzIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdS
ZW9Kc3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0xNDY3LDYgKzE0NzIsMTEgQEAg
cHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FR0pKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxLCBpbnQzMl90IGltbSkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTY0KEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbW0pKSkpOwpAQCAtMTcyMiwxNCArMTczMiwx
NCBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcyUGF5bG9h
ZCwgYXJnMlRhZyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FUmVvSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5
bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9u
X0VHUmVvSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2Fk
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczVGFnLCBHUFJSZWcgYXJnM1Bh
eWxvYWQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnM1BheWxvYWQsIGFyZzNUYWcpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJl
c3VsdFRhZyk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVJlb0pzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyBy
ZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR1Jlb0pzcyBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FU3NpQ0kg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKQEAgLTE4MjksMTQgKzE4MzksMTkgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxv
YWQsIGFyZzFUYWcsIFNINF8zMkJJVF9EVU1NWV9BUkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25f
RVJlb0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJU
YWcsIEdQUlJlZyBhcmcyUGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFNfSklUT3BlcmF0aW9uX0VHSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcs
IEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZyk7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywg
U0g0XzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5bG9hZCwgYXJnM1RhZyk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FUmVvSnNzIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnM1Rh
ZywgR1BSUmVnIGFyZzNQYXlsb2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnM1BheWxvYWQsIGFyZzNUYWcpOworICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUdSZW9K
c3Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywg
R1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQs
IEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCkBAIC0xODQ0LDYgKzE4NTksMTEg
QEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFC
SV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFNINF8zMkJJVF9EVU1NWV9B
UkcgYXJnMlBheWxvYWQsIGFyZzJUYWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdKSiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFyZzNUYWcsIEdQUlJl
ZyBhcmczUGF5bG9hZCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgU0g0XzMyQklUX0RVTU1ZX0FSRyBh
cmczUGF5bG9hZCwgYXJnM1RhZyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcsIEdQ
UlJlZyBhcmcxUGF5bG9hZCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMiBpbW0pCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9E
VU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIFNINF8zMkJJVF9EVU1NWV9BUkcgaW1tLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKQEAgLTIzMDksNiArMjMyOSw3IEBAIHB1
YmxpYzoKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRTY29wZShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlU2tpcFNjb3BlKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxPYmplY3Qo
Tm9kZSopOwogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSopOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJh
dG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTExLDYgKzExMSw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShOb2RlKiAKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2UgTG9vcEhp
bnQ6CiAgICAgY2FzZSBTa2lwU2NvcGU6CisgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CiAgICAg
Y2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKICAgICBj
YXNlIE5ld0Z1bmN0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDgsNiArNzQ4
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAgICAgICBjb21w
aWxlU2tpcFNjb3BlKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRHbG9i
YWxPYmplY3Q6CisgICAgICAgICAgICBjb21waWxlR2V0R2xvYmFsT2JqZWN0KCk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRDbG9zdXJlVmFyOgogICAgICAgICAgICAgY29t
cGlsZUdldENsb3N1cmVWYXIoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ3NSw2ICs0NDc4
LDEyIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWRQdHIo
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU1Njb3BlX25leHQpKTsKICAgICB9
CisKKyAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxPYmplY3QoKQorICAgIHsKKyAgICAgICAgTFZh
bHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUobG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSk7
CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3Ry
dWN0dXJlX2dsb2JhbE9iamVjdCkpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRD
bG9zdXJlVmFyKCkKICAgICB7CkBAIC02NDQwLDUyICs2NDQ5LDY2IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGNvbXBpbGVSZWdFeHBFeGVjKCkKICAgICB7Ci0gICAgICAgIGlmIChtX25vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2UpIHsKLSAgICAgICAgICAgIExWYWx1
ZSBiYXNlID0gbG93UmVnRXhwT2JqZWN0KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFs
dWUgZ2xvYmFsT2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBSZWdFeHBPYmplY3RVc2Up
IHsKKyAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93UmVnRXhwT2JqZWN0KG1fbm9kZS0+Y2hp
bGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50
ID0gbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgaWYgKG1fbm9kZS0+
Y2hpbGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgeworICAgICAgICAgICAgICAgIExWYWx1
ZSBhcmd1bWVudCA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgICAgICAgICBJbnQ2NCwgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcpLCBtX2NhbGxGcmFtZSwgYmFz
ZSwgYXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcpLCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LAor
ICAgICAgICAgICAgICAgICAgICBiYXNlLCBhcmd1bWVudCk7CiAgICAgICAgICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUoCi0gICAgICAgICAgICAg
ICAgdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwRXhlYyksIG1f
Y2FsbEZyYW1lLCBiYXNlLCBhcmd1bWVudCkpOworICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwoCisgICAgICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25SZWdFeHBFeGVjKSwgbV9jYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYmFzZSwKKyAgICAg
ICAgICAgICAgICBhcmd1bWVudCk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIExWYWx1ZSBi
YXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIGFyZ3Vt
ZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgc2V0SlNWYWx1ZSgK
LSAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4
cEV4ZWNHZW5lcmljKSwgbV9jYWxsRnJhbWUsIGJhc2UsIGFyZ3VtZW50KSk7CisgICAgICAgIExW
YWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVl
IGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbCgKKyAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uUmVnRXhwRXhlY0dlbmVyaWMpLCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBiYXNl
LAorICAgICAgICAgICAgYXJndW1lbnQpOworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb21waWxlUmVnRXhwVGVzdCgpCiAgICAgewotICAgICAgICBpZiAo
bV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gUmVnRXhwT2JqZWN0VXNlKSB7Ci0gICAgICAg
ICAgICBMVmFsdWUgYmFzZSA9IGxvd1JlZ0V4cE9iamVjdChtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgTFZhbHVlIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gUmVnRXhw
T2JqZWN0VXNlKSB7CisgICAgICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd1JlZ0V4cE9iamVjdCht
X25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1fbm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewotICAgICAgICAgICAgICAgIExWYWx1
ZSBhcmd1bWVudCA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGlm
IChtX25vZGUtPmNoaWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dTdHJpbmcobV9ub2RlLT5jaGlsZDMoKSk7CiAgICAg
ICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAg
SW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKSwgbV9jYWxs
RnJhbWUsIGJhc2UsIGFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgSW50MzIsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nKSwgbV9jYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgYmFzZSwgYXJndW1lbnQpOwogICAgICAgICAg
ICAgICAgIHNldEJvb2xlYW4ocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICBzZXRCb29sZWFuKAotICAgICAgICAgICAgICAg
IHZtQ2FsbChJbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3QpLCBtX2Nh
bGxGcmFtZSwgYmFzZSwgYXJndW1lbnQpKTsKKyAgICAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKAorICAgICAgICAgICAgICAgIEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uUmVnRXhwVGVzdCksIG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGJhc2UsCisgICAgICAg
ICAgICAgICAgYXJndW1lbnQpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihyZXN1bHQpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dK
U1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dK
U1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBzZXRCb29sZWFuKAotICAgICAgICAg
ICAgdm1DYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdEdlbmVy
aWMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgYXJndW1lbnQpKTsKKyAgICAgICAgTFZhbHVlIGJhc2Ug
PSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBMVmFsdWUgYXJndW1lbnQg
PSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKAorICAgICAgICAgICAgSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdF
eHBUZXN0R2VuZXJpYyksIG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGJhc2UsCisgICAgICAg
ICAgICBhcmd1bWVudCk7CisgICAgICAgIHNldEJvb2xlYW4ocmVzdWx0KTsKICAgICB9CiAKICAg
ICB2b2lkIGNvbXBpbGVOZXdSZWdleHAoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDkg
QEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSgogdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUNaKShFeGVjU3RhdGUq
LCBKU0NlbGwqLCBpbnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiAoKkpfSklUT3BlcmF0aW9uX0VEQSkoRXhlY1N0YXRlKiwgZG91YmxlLCBKU0FycmF5Kik7CiB0
eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FRSko
RXhlY1N0YXRlKiwgRXhlY1N0YXRlKik7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FR1Jlb0opKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUdSZW9Kc3MpKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgSlNTdHJpbmcqKTsKK3R5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VHSkopKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VJKShFeGVj
U3RhdGUqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9u
X0VKWikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwpAQCAtMjAxLDYgKzIw
NCw5IEBAIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGUKIHR5cGVkZWYg
aW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRUpaWikoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBzaXplX3QgSklUX09Q
RVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VDQykoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxs
Kik7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUdDKShF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCopOwordHlwZWRlZiBzaXplX3QgSklU
X09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VHSkopKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKK3R5cGVkZWYgc2l6ZV90IEpJ
VF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FR1Jlb0opKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiBzaXplX3Qg
SklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VHUmVvSnNzKShFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFJlZ0V4cE9iamVjdCosIEpTU3RyaW5nKik7CiB0eXBlZGVmIHNpemVfdCBK
SVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlKTsKIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FSkop
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHNp
emVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRU9Kc3MpKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiwgSlNTdHJpbmcqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDA4LCAyMDA5LCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3
YXRlcmxvby5jYSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM2NCw3ICszNjQsOCBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAKICAgICBtX3JlZ0V4cFByb3RvdHlwZS5z
ZXQodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkp
LCBlbXB0eVJlZ2V4KSk7CiAgICAgbV9yZWdFeHBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBSZWdF
eHBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0
KCkpKTsKLSAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNy
ZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2bSwgKnRoaXMpKTsKKyAgICBtX3JlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNB
cnJheVN0cnVjdHVyZSh2bSwgdGhpcykpOworICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U2xvd1B1
dFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRT
dHJ1Y3R1cmUodm0sIHRoaXMpKTsKIAogICAgIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIGpzTnVsbCgpKSk7CkBAIC03NjEsNiArNzYyLDkgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6aGF2ZUFCYWRUaW1lKFZNJiB2bQogICAgIC8vIHRoaXMgb2JqZWN0IG5vdyBsb2FkIGEg
c3RydWN0dXJlIHRoYXQgdXNlcyBTbG93UHV0LgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBOdW1iZXJPZkluZGV4aW5nU2hhcGVzOyArK2kpCiAgICAgICAgIG1fYXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlvbltpXS5zZXQodm0sIHRoaXMsIG9yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFn
ZSkpOworCisgICAgLy8gU2FtZSBmb3IgYW55IHNwZWNpYWwgYXJyYXkgc3RydWN0dXJlcy4KKyAg
ICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIG1fcmVnRXhwTWF0
Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVyZS5nZXQoKSk7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJl
IHRoYXQgYWxsIG9iamVjdHMgdGhhdCBoYXZlIGluZGV4ZWQgc3RvcmFnZSBzd2l0Y2ggdG8gdGhl
IHNsb3cga2luZCBvZgogICAgIC8vIGluZGV4ZWQgc3RvcmFnZS4KQEAgLTkwMCw2ICs5MDQsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNo
ZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTk3NjI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMg
U2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAy
MDA5LCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjc4LDYgKzI3OCw3IEBAIHBy
b3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2ludGVybmFsRnVuY3Rpb25T
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9i
amVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNo
ZXNBcnJheVN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1h
dGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9t
b2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9wcm94eU9iamVjdFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3Niw3ICsxMzc2LDcg
QEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbgogICAgIC8vIHdlIHdh
bnQuCiAgICAgRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUgZGVmZXJy
ZWRXYXRjaHBvaW50RmlyZTsKICAgICAKLSAgICBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdGlvbigKKyAgICBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZE5l
d1Byb3BlcnR5VHJhbnNpdGlvbigKICAgICAgICAgdm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBvZmZzZXQsIHNsb3QuY29udGV4dCgpLCAmZGVmZXJyZWRXYXRjaHBvaW50
RmlyZSk7CiAgICAgbmV3U3RydWN0dXJlLT53aWxsU3RvcmVWYWx1ZUZvck5ld1RyYW5zaXRpb24o
CiAgICAgICAgIHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LmNvbnRleHQoKSA9PSBQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAq
ICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQog
ICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOTMsMjggKzI5MywyNyBAQCBw
cml2YXRlOgogICAgICAgICBmaWJlcigyKS5zZXQodm0sIHRoaXMsIHMzKTsKICAgICB9CiAKLSAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSYgZXhlYywgSlNTdHJpbmcmIGJhc2UsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKICAgICB7Ci0gICAgICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKICAg
ICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICBBU1NFUlQoIXN1bU92ZXJm
bG93czxpbnQzMl90PihvZmZzZXQsIGxlbmd0aCkpOwotICAgICAgICBBU1NFUlQob2Zmc2V0ICsg
bGVuZ3RoIDw9IGJhc2UubGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQob2Zmc2V0ICsgbGVuZ3Ro
IDw9IGJhc2UtPmxlbmd0aCgpKTsKICAgICAgICAgbV9sZW5ndGggPSBsZW5ndGg7Ci0gICAgICAg
IHNldElzOEJpdChiYXNlLmlzOEJpdCgpKTsKKyAgICAgICAgc2V0SXM4Qml0KGJhc2UtPmlzOEJp
dCgpKTsKICAgICAgICAgc2V0SXNTdWJzdHJpbmcodHJ1ZSk7Ci0gICAgICAgIGlmIChiYXNlLmlz
U3Vic3RyaW5nKCkpIHsKLSAgICAgICAgICAgIEpTUm9wZVN0cmluZyYgYmFzZVJvcGUgPSBzdGF0
aWNfY2FzdDxKU1JvcGVTdHJpbmcmPihiYXNlKTsKLSAgICAgICAgICAgIHN1YnN0cmluZ0Jhc2Uo
KS5zZXQodm0sIHRoaXMsIGJhc2VSb3BlLnN1YnN0cmluZ0Jhc2UoKS5nZXQoKSk7Ci0gICAgICAg
ICAgICBzdWJzdHJpbmdPZmZzZXQoKSA9IGJhc2VSb3BlLnN1YnN0cmluZ09mZnNldCgpICsgb2Zm
c2V0OworICAgICAgICBpZiAoYmFzZS0+aXNTdWJzdHJpbmcoKSkgeworICAgICAgICAgICAgSlNS
b3BlU3RyaW5nKiBiYXNlUm9wZSA9IGpzQ2FzdDxKU1JvcGVTdHJpbmcqPihiYXNlKTsKKyAgICAg
ICAgICAgIHN1YnN0cmluZ0Jhc2UoKS5zZXQodm0sIHRoaXMsIGJhc2VSb3BlLT5zdWJzdHJpbmdC
YXNlKCkuZ2V0KCkpOworICAgICAgICAgICAgc3Vic3RyaW5nT2Zmc2V0KCkgPSBiYXNlUm9wZS0+
c3Vic3RyaW5nT2Zmc2V0KCkgKyBvZmZzZXQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBzdWJzdHJpbmdCYXNlKCkuc2V0KHZtLCB0aGlzLCAmYmFzZSk7CisgICAgICAgICAgICBzdWJz
dHJpbmdCYXNlKCkuc2V0KHZtLCB0aGlzLCBiYXNlKTsKICAgICAgICAgICAgIHN1YnN0cmluZ09m
ZnNldCgpID0gb2Zmc2V0OwogCiAgICAgICAgICAgICAvLyBGb3Igbm93LCBsZXQncyBub3QgYWxs
b3cgc3Vic3RyaW5ncyB3aXRoIGEgcm9wZSBiYXNlLgogICAgICAgICAgICAgLy8gUmVzb2x2ZSBu
b24tc3Vic3RyaW5nIHJvcGUgYmFzZXMgc28gd2UgZG9uJ3QgaGF2ZSB0byBkZWFsIHdpdGggaXQu
CiAgICAgICAgICAgICAvLyBGSVhNRTogRXZhbHVhdGUgaWYgdGhpcyB3b3VsZCBiZSB3b3J0aCBh
ZGRpbmcgbW9yZSBicmFuY2hlcy4KLSAgICAgICAgICAgIGlmIChiYXNlLmlzUm9wZSgpKQotICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PEpTUm9wZVN0cmluZyY+KGJhc2UpLnJlc29sdmVSb3Bl
KCZleGVjKTsKKyAgICAgICAgICAgIGlmIChiYXNlLT5pc1JvcGUoKSkKKyAgICAgICAgICAgICAg
ICBqc0Nhc3Q8SlNSb3BlU3RyaW5nKj4oYmFzZSktPnJlc29sdmVSb3BlKGV4ZWMpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0zNTYsMTAgKzM1NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBuZXdTdHJpbmc7CiAgICAgfQogCi0gICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoRXhlY1N0
YXRlJiBleGVjLCBKU1N0cmluZyYgYmFzZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCisgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMs
IEpTU3RyaW5nKiBiYXNlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7
Ci0gICAgICAgIEpTUm9wZVN0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNSb3BlU3RyaW5nPihleGVjLnZtKCkuaGVhcCkpIEpTUm9wZVN0cmluZyhleGVjLnZt
KCkpOwotICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGJhc2UsIG9mZnNl
dCwgbGVuZ3RoKTsKKyAgICAgICAgSlNSb3BlU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1JvcGVTdHJpbmc+KHZtLmhlYXApKSBKU1JvcGVTdHJpbmcodm0p
OworICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjLCBiYXNlLCBvZmZz
ZXQsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgfQogCkBAIC01NDIs
MTcgKzU0MSwyMSBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5nKFZNKiB2bSwgY29uc3QgCiAg
ICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBzLmltcGwoKSk7CiB9CiAKLWlubGluZSBK
U1N0cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5n
KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogcywgdW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKG9mZnNldCA8PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocy0+bGVuZ3RoKCkpKTsKICAgICBBU1NFUlQobGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzLT5sZW5ndGgoKSkpOwogICAgIEFTU0VSVChvZmZzZXQgKyBsZW5ndGggPD0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHMtPmxlbmd0aCgpKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5lbXB0
eVN0cmluZygpOwogICAgIGlmICghb2Zmc2V0ICYmIGxlbmd0aCA9PSBzLT5sZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIHM7Ci0gICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRlKCpleGVjLCAq
cywgb2Zmc2V0LCBsZW5ndGgpOworICAgIHJldHVybiBKU1JvcGVTdHJpbmc6OmNyZWF0ZSh2bSwg
ZXhlYywgcywgb2Zmc2V0LCBsZW5ndGgpOworfQorCitpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIHJldHVybiBqc1N1YnN0cmluZyhleGVjLT52bSgpLCBleGVjLCBz
LCBvZmZzZXQsIGxlbmd0aCk7CiB9CiAKIGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoVk0q
IHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNo
ZWRSZXN1bHQuY3BwCShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw3
IEBAIEpTQXJyYXkqIFJlZ0V4cENhY2hlZFJlc3VsdDo6bGFzdFJlc3VsdCgKIHsKICAgICBpZiAo
IW1fcmVpZmllZCkgewogICAgICAgICBtX3JlaWZpZWRJbnB1dC5zZXQoZXhlYy0+dm0oKSwgb3du
ZXIsIG1fbGFzdElucHV0LmdldCgpKTsKLSAgICAgICAgbV9yZWlmaWVkUmVzdWx0LnNldChleGVj
LT52bSgpLCBvd25lciwgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIG1fbGFzdElucHV0
LmdldCgpLCBtX2xhc3RSZWdFeHAuZ2V0KCksIG1fcmVzdWx0KSk7CisgICAgICAgIG1fcmVpZmll
ZFJlc3VsdC5zZXQoZXhlYy0+dm0oKSwgb3duZXIsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1fbGFzdElucHV0LmdldCgpLCBtX2xh
c3RSZWdFeHAuZ2V0KCksIG1fcmVzdWx0KSk7CiAgICAgICAgIG1fcmVpZmllZCA9IHRydWU7CiAg
ICAgfQogICAgIHJldHVybiBtX3JlaWZpZWRSZXN1bHQuZ2V0KCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAJKHJl
dmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1h
dGNoZXNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCwzMCArNTAsNTYgQEAgc3RhdGlj
IEpTQXJyYXkqIHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZQogICAgIHJldHVybiBKU0FycmF5Ojpj
cmVhdGVXaXRoQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CiB9CiAKLUpTQXJy
YXkqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBp
bnB1dCwgUmVnRXhwKiByZWdFeHAsIE1hdGNoUmVzdWx0IHJlc3VsdCkKK0pTQXJyYXkqIGNyZWF0
ZVJlZ0V4cE1hdGNoZXNBcnJheSgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBpbnB1dCwgUmVnRXhwKiByZWdFeHAsCisgICAgTWF0
Y2hSZXN1bHQgcmVzdWx0KQogeworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJj
cmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkiKTsKKyAgICAKICAgICBBU1NFUlQocmVzdWx0KTsKLSAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIEpTQXJyYXkqIGFycmF5ID0gdHJ5Q3JlYXRlVW5p
bml0aWFsaXplZFJlZ0V4cE1hdGNoZXNBcnJheSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSwgcmVnRXhwLT5udW1TdWJwYXR0ZXJu
cygpICsgMSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwotCi0gICAgU2FtcGxpbmdSZWdp
b24gc2FtcGxpbmdSZWdpb24oIlJlaWZ5aW5nIHN1YnN0cmluZyBwcm9wZXJ0aWVzIik7Ci0KLSAg
ICBhcnJheS0+aW5pdGlhbGl6ZUluZGV4KHZtLCAwLCBqc1N1YnN0cmluZyhleGVjLCBpbnB1dCwg
cmVzdWx0LnN0YXJ0LCByZXN1bHQuZW5kIC0gcmVzdWx0LnN0YXJ0KSwgQXJyYXlXaXRoQ29udGln
dW91cyk7Ci0KLSAgICBpZiAodW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSByZWdFeHAtPm51bVN1
YnBhdHRlcm5zKCkpIHsKLSAgICAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRz
OwotICAgICAgICBpbnQgcG9zaXRpb24gPSByZWdFeHAtPm1hdGNoKHZtLCBpbnB1dC0+dmFsdWUo
ZXhlYyksIHJlc3VsdC5zdGFydCwgc3VicGF0dGVyblJlc3VsdHMpOwotICAgICAgICBBU1NFUlRf
VU5VU0VEKHBvc2l0aW9uLCBwb3NpdGlvbiA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4ocG9z
aXRpb24pID09IHJlc3VsdC5zdGFydCk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQuc3RhcnQgPT0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1swXSkpOwotICAgICAgICBBU1NF
UlQocmVzdWx0LmVuZCA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN1YnBhdHRlcm5SZXN1bHRzWzFd
KSk7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBudW1TdWJwYXR0ZXJuczsg
KytpKSB7Ci0gICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJuUmVzdWx0c1syICogaV07
Ci0gICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkKLSAgICAgICAgICAgICAgICBhcnJheS0+aW5p
dGlhbGl6ZUluZGV4KHZtLCBpLCBqc1N1YnN0cmluZyhleGVjLCBpbnB1dCwgc3RhcnQsIHN1YnBh
dHRlcm5SZXN1bHRzWzIgKiBpICsgMV0gLSBzdGFydCksIEFycmF5V2l0aENvbnRpZ3VvdXMpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgo
dm0sIGksIGpzVW5kZWZpbmVkKCksIEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIEpTQXJyYXkqIGFycmF5OworICAgIGlmIChVTkxJ
S0VMWShnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkpIHsKKyAgICAgICAgYXJyYXkg
PSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPnJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpLCByZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkgKyAxKTsK
KyAgICAgICAgCisgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIDAsIGpzU3Vic3Ry
aW5nKHZtLCBleGVjLCBpbnB1dCwgcmVzdWx0LnN0YXJ0LCByZXN1bHQuZW5kIC0gcmVzdWx0LnN0
YXJ0KSk7CisgICAgICAgIAorICAgICAgICBpZiAodW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSBy
ZWdFeHAtPm51bVN1YnBhdHRlcm5zKCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxpbnQsIDMyPiBz
dWJwYXR0ZXJuUmVzdWx0czsKKyAgICAgICAgICAgIGludCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0
Y2godm0sIGlucHV0LT52YWx1ZShleGVjKSwgcmVzdWx0LnN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0
cyk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHBvc2l0aW9uLCBwb3NpdGlvbiA+PSAwICYm
IHN0YXRpY19jYXN0PHNpemVfdD4ocG9zaXRpb24pID09IHJlc3VsdC5zdGFydCk7CisgICAgICAg
ICAgICBBU1NFUlQocmVzdWx0LnN0YXJ0ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0dGVy
blJlc3VsdHNbMF0pKTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuZW5kID09IHN0YXRpY19j
YXN0PHNpemVfdD4oc3VicGF0dGVyblJlc3VsdHNbMV0pKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBudW1TdWJwYXR0ZXJuczsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gc3VicGF0dGVyblJlc3VsdHNbMiAqIGldOworICAg
ICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKQorICAgICAgICAgICAgICAgICAgICBhcnJheS0+
aW5pdGlhbGl6ZUluZGV4KHZtLCBpLCBqc1N1YnN0cmluZyh2bSwgZXhlYywgaW5wdXQsIHN0YXJ0
LCBzdWJwYXR0ZXJuUmVzdWx0c1syICogaSArIDFdIC0gc3RhcnQpKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIGks
IGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgYXJyYXkgPSB0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlc0FycmF5
KHZtLCBnbG9iYWxPYmplY3QtPnJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpLCByZWdFeHAt
Pm51bVN1YnBhdHRlcm5zKCkgKyAxKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXJyYXkpOwor
ICAgICAgICAKKyAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgMCwganNTdWJzdHJp
bmcodm0sIGV4ZWMsIGlucHV0LCByZXN1bHQuc3RhcnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3Rh
cnQpLCBBcnJheVdpdGhDb250aWd1b3VzKTsKKyAgICAgICAgCisgICAgICAgIGlmICh1bnNpZ25l
ZCBudW1TdWJwYXR0ZXJucyA9IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgeworICAgICAgICAg
ICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOworICAgICAgICAgICAgaW50IHBv
c2l0aW9uID0gcmVnRXhwLT5tYXRjaCh2bSwgaW5wdXQtPnZhbHVlKGV4ZWMpLCByZXN1bHQuc3Rh
cnQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocG9zaXRp
b24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihwb3NpdGlvbikgPT0gcmVz
dWx0LnN0YXJ0KTsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuc3RhcnQgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1swXSkpOworICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdC5lbmQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1
YnBhdHRlcm5zOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBzdWJwYXR0ZXJu
UmVzdWx0c1syICogaV07CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApCisgICAgICAg
ICAgICAgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgodm0sIGksIGpzU3Vic3RyaW5nKHZt
LCBleGVjLCBpbnB1dCwgc3RhcnQsIHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBpICsgMV0gLSBzdGFy
dCksIEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleCh2bSwgaSwganNVbmRlZmluZWQoKSwg
QXJyYXlXaXRoQ29udGlndW91cyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTgzLDE1ICsxMDksMjUgQEAgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4
ZWNTdAogICAgIHJldHVybiBhcnJheTsKIH0KIAotU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRj
aGVzQXJyYXlTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlSW1wbChWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCiB7Ci0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QuYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKTsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQ7Ci0gICAgc3RydWN0dXJlID0gc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSwgdm0ucHJvcGVydHlOYW1lcy0+aW5kZXgsIDAsIG9mZnNldCk7CisgICAgc3Ry
dWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwg
dm0ucHJvcGVydHlOYW1lcy0+aW5kZXgsIDAsIG9mZnNldCk7CiAgICAgQVNTRVJUKG9mZnNldCA9
PSBpbmRleFByb3BlcnR5T2Zmc2V0KTsKLSAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPmFkZFBy
b3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5pbnB1dCwg
MCwgb2Zmc2V0KTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvbih2bSwgc3RydWN0dXJlLCB2bS5wcm9wZXJ0eU5hbWVzLT5pbnB1dCwgMCwgb2Zmc2V0KTsK
ICAgICBBU1NFUlQob2Zmc2V0ID09IGlucHV0UHJvcGVydHlPZmZzZXQpOwogICAgIHJldHVybiBz
dHJ1Y3R1cmU7CiB9CiAKK1N0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4g
Y3JlYXRlU3RydWN0dXJlSW1wbCh2bSwgZ2xvYmFsT2JqZWN0LCBBcnJheVdpdGhDb250aWd1b3Vz
KTsKK30KKworU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4g
Y3JlYXRlU3RydWN0dXJlSW1wbCh2bSwgZ2xvYmFsT2JqZWN0LCBBcnJheVdpdGhTbG93UHV0QXJy
YXlTdG9yYWdlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24g
MTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0Fy
cmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTI2LDggKzI2LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUpTQXJyYXkq
IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqLCBKU1N0cmluZyosIFJlZ0V4cCos
IE1hdGNoUmVzdWx0KTsKLVN0cnVjdHVyZSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QmKTsKK0pTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoZXNB
cnJheShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiwgUmVnRXhwKiwgTWF0
Y2hSZXN1bHQpOworU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCopOworU3RydWN0dXJlKiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJy
YXlTbG93UHV0U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKIAogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlz
aW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTIsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTU5LDIw
ICsxNTksMjAgQEAgdm9pZCBSZWdFeHBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogICAg
IEJhc2U6OnB1dChjZWxsLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAot
SlNWYWx1ZSBSZWdFeHBPYmplY3Q6OmV4ZWMoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3Ry
aW5nKQorSlNWYWx1ZSBSZWdFeHBPYmplY3Q6OmV4ZWMoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogc3RyaW5nKQogewotICAgIGlmIChNYXRj
aFJlc3VsdCByZXN1bHQgPSBtYXRjaChleGVjLCBzdHJpbmcpKQotICAgICAgICByZXR1cm4gY3Jl
YXRlUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMsIHN0cmluZywgcmVnRXhwKCksIHJlc3VsdCk7Cisg
ICAgaWYgKE1hdGNoUmVzdWx0IHJlc3VsdCA9IG1hdGNoKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3Ry
aW5nKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVjLCBnbG9i
YWxPYmplY3QsIHN0cmluZywgcmVnRXhwKCksIHJlc3VsdCk7CiAgICAgcmV0dXJuIGpzTnVsbCgp
OwogfQogCiAvLyBTaGFyZWQgaW1wbGVtZW50YXRpb24gdXNlZCBieSB0ZXN0IGFuZCBleGVjLgot
TWF0Y2hSZXN1bHQgUmVnRXhwT2JqZWN0OjptYXRjaChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5n
KiBzdHJpbmcpCitNYXRjaFJlc3VsdCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZykKIHsKICAg
ICBSZWdFeHAqIHJlZ0V4cCA9IHRoaXMtPnJlZ0V4cCgpOwotICAgIFJlZ0V4cENvbnN0cnVjdG9y
KiByZWdFeHBDb25zdHJ1Y3RvciA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhw
Q29uc3RydWN0b3IoKTsKKyAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3Ig
PSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCk7CiAgICAgU3RyaW5nIGlucHV0ID0g
c3RyaW5nLT52YWx1ZShleGVjKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAoIXJlZ0V4cC0+Z2xvYmFsKCkpCiAgICAg
ICAgIHJldHVybiByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKHZtLCByZWdFeHAsIHN0
cmluZywgaW5wdXQsIDApOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMTk3NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDggKzYxLDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9sYXN0SW5kZXguZ2V0KCk7CiAgICAgfQogCi0g
ICAgYm9vbCB0ZXN0KEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykgeyByZXR1cm4g
bWF0Y2goZXhlYywgc3RyaW5nKTsgfQotICAgIEpTVmFsdWUgZXhlYyhFeGVjU3RhdGUqLCBKU1N0
cmluZyopOworICAgIGJvb2wgdGVzdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpIHsgcmV0dXJuIG1hdGNoKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RyaW5nKTsgfQorICAgIEpTVmFsdWUgZXhlYyhFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIEpTU3RyaW5nKik7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwog
ICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpAQCAtOTcsNyArOTcsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYs
IGJvb2wgc2hvdWxkVGhyb3cpOwogCiBwcml2YXRlOgotICAgIE1hdGNoUmVzdWx0IG1hdGNoKEV4
ZWNTdGF0ZSosIEpTU3RyaW5nKik7CisgICAgTWF0Y2hSZXN1bHQgbWF0Y2goRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyopOwogCiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cD4g
bV9yZWdFeHA7CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fbGFzdEluZGV4OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxOTc2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTEwMiw3ICsx
MDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAgICAgSlNT
dHJpbmcqIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwog
ICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2Jq
ZWN0KHRoaXNWYWx1ZSktPnRlc3QoZXhlYywgc3RyaW5nKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnRlc3QoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzdHJpbmcpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jRXhlYyhFeGVjU3RhdGUqIGV4ZWMpCkBA
IC0xMTMsNyArMTEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90
bwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVs
bChleGVjKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzUmVnRXhwT2Jq
ZWN0KHRoaXNWYWx1ZSktPmV4ZWMoZXhlYywgc3RyaW5nKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5leGVjKGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc3RyaW5nKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzUsNyArMTAzNSw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhleGVjKTsKICAgICBTdHJpbmcgcyA9IHN0cmluZy0+dmFsdWUoZXhlYyk7Ci0gICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBWTSogdm0gPSAmZ2xvYmFsT2JqZWN0LT52bSgp
OwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogCkBAIC0xMDY3LDExICsx
MDY4LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAg
ICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkp
OwogICAgIH0KLSAgICBSZWdFeHBDb25zdHJ1Y3RvciogcmVnRXhwQ29uc3RydWN0b3IgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cENvbnN0cnVjdG9yKCk7CisgICAgUmVnRXhw
Q29uc3RydWN0b3IqIHJlZ0V4cENvbnN0cnVjdG9yID0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25z
dHJ1Y3RvcigpOwogICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5w
ZXJmb3JtTWF0Y2goKnZtLCByZWdFeHAsIHN0cmluZywgcywgMCk7CiAgICAgLy8gY2FzZSB3aXRo
b3V0ICdnJyBmbGFnIGlzIGhhbmRsZWQgbGlrZSBSZWdFeHAucHJvdG90eXBlLmV4ZWMKICAgICBp
ZiAoIWdsb2JhbCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyBjcmVh
dGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgc3RyaW5nLCByZWdFeHAsIHJlc3VsdCkgOiBqc051
bGwoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8gY3JlYXRlUmVn
RXhwTWF0Y2hlc0FycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RyaW5nLCByZWdFeHAsIHJlc3Vs
dCkgOiBqc051bGwoKSk7CiAKICAgICAvLyByZXR1cm4gYXJyYXkgb2YgbWF0Y2hlcwogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE5NzYyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzLTIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEz
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00NDMsNyArNDQzLDE4IEBAIE5vblByb3BlcnR5VHJhbnNpdGlvbiBT
dHJ1Y3R1cmU6OnN1Z2dlc3QKICAgICByZXR1cm4gQWxsb2NhdGVBcnJheVN0b3JhZ2U7CiB9CiAK
LVN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgUHV0UHJvcGVydHlTbG90OjpDb250ZXh0
IGNvbnRleHQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRGaXJlKiBkZWZl
cnJlZCkKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCkKK3sKKyAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSA9IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUo
CisgICAgICAgIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwor
ICAgIGlmIChuZXdTdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7CisKKyAg
ICByZXR1cm4gYWRkTmV3UHJvcGVydHlUcmFuc2l0aW9uKAorICAgICAgICB2bSwgc3RydWN0dXJl
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIG9mZnNldCwgUHV0UHJvcGVydHlTbG90OjpVbmtu
b3duQ29udGV4dCk7Cit9CisKK1N0cnVjdHVyZSogU3RydWN0dXJlOjphZGROZXdQcm9wZXJ0eVRy
YW5zaXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmIG9mZnNldCwgUHV0
UHJvcGVydHlTbG90OjpDb250ZXh0IGNvbnRleHQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlv
bldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNE
aWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDE5NzYy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjgsNyArMTY4LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZHVt
cFN0YXRpc3RpY3MoKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmLCBQdXRQcm9wZXJ0eVNsb3Q6OkNvbnRl
eHQgPSBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBEZWZlcnJlZFN0cnVjdHVyZVRy
YW5zaXRpb25XYXRjaHBvaW50RmlyZSogPSBudWxscHRyKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUq
LCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0Jik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkTmV3UHJvcGVydHlUcmFu
c2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBQcm9wZXJ0eU9mZnNldCYsIFB1dFByb3BlcnR5U2xvdDo6Q29udGV4dCA9IFB1dFByb3BlcnR5
U2xvdDo6VW5rbm93bkNvbnRleHQsIERlZmVycmVkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnRGaXJlKiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJh
bnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVDb25jdXJyZW50bHkoU3RydWN0dXJlKiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5z
aXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgUHJvcGVydHlPZmZzZXQmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5T2Zmc2V0Jik7CkBAIC0yNDUsNiArMjQ2LDkgQEAgcHVibGljOgogICAgIE5vblByb3Bl
cnR5VHJhbnNpdGlvbiBzdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkgY29uc3Q7CiAg
ICAgICAgIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVy
biBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQorCisgICAgLy8gTk9URTogVGhpcyBtZXRob2Qgc2hv
dWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyB0aGUgY3JlYXRpb24gb2Ygc3RydWN0dXJlcywgc2lu
Y2UgdGhlIGdsb2JhbAorICAgIC8vIG9iamVjdCBvZiBhIHN0cnVjdHVyZSBpcyBwcmVzdW1lZCB0
byBiZSBpbW11dGFibGUgaW4gYSBidW5jaCBvZiBwbGFjZXMuCiAgICAgdm9pZCBzZXRHbG9iYWxP
YmplY3QoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSB7IG1fZ2xvYmFsT2Jq
ZWN0LnNldCh2bSwgdGhpcywgZ2xvYmFsT2JqZWN0KTsgfQogICAgICAgICAKICAgICBKU1ZhbHVl
IHN0b3JlZFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG90eXBlLmdldCgpOyB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3JlZ2V4cC1tYXRjaGVzLWFy
cmF5LWJhZC10aW1lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXktYmFkLXRpbWUuanMJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3JlZ2V4cC1tYXRjaGVzLWFycmF5
LWJhZC10aW1lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKKyhmdW5jdGlvbigp
IHsKKyAgICB2YXIgY291bnQgPSAxMTsKKworICAgIHZhciBhcnJheTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgYXJyYXkgPSAvZm9vLy5leGVjKCJmb28i
KTsKKyAgICAgICAgaWYgKGFycmF5WzBdICE9ICJmb28iKQorICAgICAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgcmVzdWx0OiAiICsgYXJyYXlbMF07CisgICAgfQorCisgICAgZGVsZXRlIGFycmF5
WzBdOworCisgICAgQXJyYXkucHJvdG90eXBlLl9fZGVmaW5lU2V0dGVyX18oIjAiLCBmdW5jdGlv
bih2YWx1ZSkgeyBjb3VudCArPSB2YWx1ZTsgfSk7CisgICAgCisgICAgYXJyYXlbMF0gPSA0MjsK
KyAgICBpZiAoY291bnQgIT0gNTMpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGNvdW50OiAi
ICsgY291bnQ7Cit9KSgpOworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3JlZ2V4cC1tYXRjaGVzLWFycmF5LXNsb3ctcHV0LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVnZXhwLW1hdGNoZXMtYXJyYXktc2xvdy1w
dXQuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3JlZ2V4cC1tYXRjaGVzLWFycmF5LXNsb3ctcHV0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTUgQEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIgY291bnQgPSAwOworICAgIEFycmF5LnBy
b3RvdHlwZS5fX2RlZmluZVNldHRlcl9fKCIwIiwgZnVuY3Rpb24odmFsdWUpIHsgY291bnQgKz0g
dmFsdWU7IH0pOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewor
ICAgICAgICB2YXIgYXJyYXkgPSAvZm9vLy5leGVjKCJmb28iKTsKKyAgICAgICAgaWYgKGFycmF5
WzBdICE9ICJmb28iKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
YXJyYXlbMF07CisgICAgICAgIGRlbGV0ZSBhcnJheVswXTsKKyAgICAgICAgYXJyYXlbMF0gPSA0
MjsKKyAgICAgICAgaWYgKGNvdW50ICE9IChpICsgMSkgKiA0MikKKyAgICAgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIGNvdW50IGF0IGkgPSAiICsgaSArICI6ICIgKyBjb3VudDsKKyAgICB9Cit9
KSgpOworIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NjI2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDMtMDYgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkgZG9l
c24ndCBrbm93IGhvdyB0byBoYXZlIGEgYmFkIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTA2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtZXhlYy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLWV4ZWMuaHRtbDogQWRk
ZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLWV4ZWMuanM6IEFk
ZGVkLgorCiAyMDE2LTAzLTA1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHByb2Nlc3NpbmcgdGhlIGF1dG9maWxsIGZpZWxkIG5hbWUgb3V0
IG9mIGZvcm0gY29udHJvbCBlbGVtZW50cyB1bHRpbWF0ZWx5IHRvIGFpZCBpbnB1dCBtZXRob2Rz
CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1leGVjLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1leGVjLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLWV4ZWMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pTUmVncmVzcy9y
ZWdleHAtZXhlYworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNl
cHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtZXhlYy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLWV4ZWMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLWV4ZWMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9yZWdleHAtZXhlYy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAt
ZXhlYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9yZWdleHAtZXhlYy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3JlZ2V4cC1leGVjLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBA
QAorKGZ1bmN0aW9uKCkgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIHZhciBuID0gMTAwMDAw
MDsKKyAgICB2YXIgcmUgPSAvZm9vLzsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkK
KyAgICAgICAgcmVzdWx0ICs9IHJlLmV4ZWMoImZvbyIpLmxlbmd0aDsKKyAgICBpZiAocmVzdWx0
ICE9IG4pCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30p
KCk7Cg==
</data>
<flag name="review"
          id="297733"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>