<?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>210023</bug_id>
          
          <creation_ts>2020-04-05 04:58:16 -0700</creation_ts>
          <short_desc>[JSC] Implement JSMapIterator/JSSetIterator with JSInternalFieldObjectImpl</short_desc>
          <delta_ts>2020-04-16 16:30:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175454</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1637862</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-05 04:58:16 -0700</bug_when>
    <thetext>[JSC] Implement JSMapIterator with JSInternalFieldObjectImpl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637863</commentid>
    <comment_count>1</comment_count>
      <attachid>395500</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-05 05:00:59 -0700</bug_when>
    <thetext>Created attachment 395500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637865</commentid>
    <comment_count>2</comment_count>
      <attachid>395501</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-05 05:13:15 -0700</bug_when>
    <thetext>Created attachment 395501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637867</commentid>
    <comment_count>3</comment_count>
      <attachid>395503</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-05 05:27:12 -0700</bug_when>
    <thetext>Created attachment 395503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638032</commentid>
    <comment_count>4</comment_count>
      <attachid>395546</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-05 22:41:26 -0700</bug_when>
    <thetext>Created attachment 395546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638040</commentid>
    <comment_count>5</comment_count>
      <attachid>395548</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-05 23:06:52 -0700</bug_when>
    <thetext>Created attachment 395548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638046</commentid>
    <comment_count>6</comment_count>
      <attachid>395552</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-06 00:48:50 -0700</bug_when>
    <thetext>Created attachment 395552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638047</commentid>
    <comment_count>7</comment_count>
      <attachid>395553</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-06 00:57:05 -0700</bug_when>
    <thetext>Created attachment 395553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641985</commentid>
    <comment_count>8</comment_count>
      <attachid>395553</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-15 14:22:36 -0700</bug_when>
    <thetext>Comment on attachment 395553
Patch

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

r=me.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3225
&gt; +            // Add the constant before exit becomes invalid because we may want to insert (redundant) checks on it in Fixup.
&gt; +            Node* kindNode = jsConstant(jsNumber(static_cast&lt;uint32_t&gt;(kind)));

Why does exit become invalid here? Seems like nothing here has effects should prevent an exit?

&gt; Source/JavaScriptCore/ftl/FTLOperations.cpp:131
&gt; +                target-&gt;internalField(static_cast&lt;typename JSCellType::Field&gt;(property.location().info())).set(vm, target, JSValue::decode(values[i]));

Maybe add an ASSERT(property.location().info() &lt; typename JSCellType::numberOfInternalFields);?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642217</commentid>
    <comment_count>9</comment_count>
      <attachid>395553</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-16 06:00:42 -0700</bug_when>
    <thetext>Comment on attachment 395553
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3225
&gt;&gt; +            Node* kindNode = jsConstant(jsNumber(static_cast&lt;uint32_t&gt;(kind)));
&gt; 
&gt; Why does exit become invalid here? Seems like nothing here has effects should prevent an exit?

Ah, right. Removed the comment.

&gt;&gt; Source/JavaScriptCore/ftl/FTLOperations.cpp:131
&gt;&gt; +                target-&gt;internalField(static_cast&lt;typename JSCellType::Field&gt;(property.location().info())).set(vm, target, JSValue::decode(values[i]));
&gt; 
&gt; Maybe add an ASSERT(property.location().info() &lt; typename JSCellType::numberOfInternalFields);?

Sounds nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642220</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-16 06:07:55 -0700</bug_when>
    <thetext>Committed r260181: &lt;https://trac.webkit.org/changeset/260181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642221</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-16 06:08:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/61883184&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642500</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-16 16:30:06 -0700</bug_when>
    <thetext>Committed r260226: &lt;https://trac.webkit.org/changeset/260226&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395500</attachid>
            <date>2020-04-05 05:00:59 -0700</date>
            <delta_ts>2020-04-05 05:13:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210023-20200405050058.patch</filename>
            <type>text/plain</type>
            <size>81004</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjVhMmMwZWU3NjJmOTE1MzY2ZTFiMGEwYjI4OGM2NDMxOTJmZjNkLi4yZWVmYTZlMmFjNTk0ZDlj
N2RjYzFhYmI1ZjBhNDNlY2Y4ZjZiODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMjAtMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgSlNNYXBJdGVyYXRvciB3aXRoIEpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDAyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVpbXBsZW1lbnQgSlNNYXBJdGVyYXRvciB3aXRoIEpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGwuCisgICAgICAgIFRoaXMgbWFrZXMgY3VycmVudCBKU0ZpbmFs
T2JqZWN0LWJhc2VkIE1hcEl0ZXJhdG9yIHNpbXBsZSBhbmQgc21hbGwuCisgICAgICAgIEFuZCB3
ZSBhZGQgbmVjZXNzYXJ5IHN1cHBvcnQgb2YgSlNNYXBJdGVyYXRvciBpbiBERkcgLyBGVEwgdG8g
bWFrZQorICAgICAgICBKU01hcEl0ZXJhdG9yIGFsbG9jYXRpb24gZWZmaWNpZW50IGFuZCBvYmpl
Y3QtYWxsb2NhdGlvbi1zaW5raW5nIGF3YXJlLgorCisgICAgICAgIFdlIHdpbGwgZG8gdGhlIHNh
bWUgdGhpbmcgZm9yIEpTU2V0SXRlcmF0b3IgbmV4dC4KKworICAgICAgICAqIGJ1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90eXBlLmpz
OgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5tYXBJdGVyYXRvck5leHQpOgorICAgICAgICAobmV4
dCk6CisgICAgICAgICogYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFs
UHJpdmF0ZS5NYXBJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICh2YWx1ZXMpOiBEZWxldGVk
LgorICAgICAgICAoa2V5cyk6IERlbGV0ZWQuCisgICAgICAgIChlbnRyaWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzTWFwSXRlcmF0b3IpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjptYXBJdGVyYXRvckludGVy
bmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1p
dF9pbnRyaW5zaWNfZ2V0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRNYXBJdGVyYXRvckludGVy
bmFsRmllbGQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGlu
Z1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b21OZXdNYXBJdGVyYXRvcik6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
Ojppc1BoYW50b21BbGxvY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6
CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4
ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdNYXBJdGVyYXRvcik6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZU5ld01hcEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU1hdGVyaWFsaXplTmV3SW50ZXJuYWxGaWVsZE9iamVjdCk6CisgICAgICAgICogZnRs
L0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvblBvcHVsYXRl
T2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXplT2Jq
ZWN0SW5PU1IpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFBy
b3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpjbG9uZU1hcEl0ZXJhdG9yT2JqZWN0KToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmll
cyk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAgKEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAg
ICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVy
YXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclByb3RvdHlwZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclN0cnVjdHVyZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNNYXBJdGVyYXRvcjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMpOgorICAgICAgICAoSlNDOjpK
U01hcEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTWFwSXRlcmF0
b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5h
bCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlTWFwSXRlcmF0b3JPYmplY3QpOgorICAgICAgICAoSlNDOjptYXBQ
cm90b0Z1bmNWYWx1ZXMpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNLZXlzKToKKyAgICAg
ICAgKEpTQzo6bWFwUHJvdG9GdW5jRW50cmllcyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgIChKU0M6OlZNOjpzZXRJdGVyYXRvclN0cnVjdHVyZVNsb3cpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpWTTo6bWFwSXRlcmF0b3JTdHJ1Y3R1cmVTbG93KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpzZXRJdGVyYXRvclN0cnVj
dHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjptYXBJdGVyYXRvclN0cnVjdHVyZSk6
IERlbGV0ZWQuCisKIDIwMjAtMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBKU0FycmF5SXRlcmF0b3IncyBzaXplIGlzIHdyb25nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNTg4MjkyYTkyZTgyNWZmNzQwNTIxODMwMzkzODJiMWMzZmQ2ZTkzNS4uMDc1MzEx
OTI2YjNlMTI3NWIwZDI5MWFiYzZlZjE1ZWUyMmFhNDNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIwLTA0LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gSW1wbGVtZW50IEpTTWFwSXRlcmF0b3Igd2l0aCBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTAwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZSk6CisKIDIwMjAtMDQtMDQgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4K
IAogICAgICAgICBSZW1vdmUgTG9ja0hpc3RvcnkgcGFyYW1ldGVyIGZyb20gbG9hZFdpdGhOYXZp
Z2F0aW9uQWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKaW5kZXggMTk3MGM5ZjQzMDYwODcyMWEyYTMyNTZiMjZlMmU0NmIzYzgzYTZkMi4uNTM1
YzdlMDI2YzgwZjdmNDkxZWRhMTVlNDk5ZDU3ZDdhODZiNTU5NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtODUsNiArODUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBtYWNybyhyZXBlYXRDaGFyYWN0ZXIpIFwKICAgICBtYWNybyhzdGFy
RGVmYXVsdCkgXAogICAgIG1hY3JvKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbikgXAorICAgIG1h
Y3JvKGtleXMpIFwKICAgICBtYWNybyhnZXQpIFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNy
byhzaGlmdCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01h
cEl0ZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01h
cEl0ZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IGZmZmNlZThhMzRjNjA4OTQzZTEwZmY5MDk0YzBj
OWIyYTMxNzA3YTEuLjY5NDAzMWI4YTBkMGU2NDZkYTNmMjYxNGEwYjExMzc5OTIwOWMzODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBJdGVyYXRvclByb3Rv
dHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwSXRlcmF0b3JQ
cm90b3R5cGUuanMKQEAgLTMxLDcgKzMxLDcgQEAgZnVuY3Rpb24gbWFwSXRlcmF0b3JOZXh0KGJ1
Y2tldCwga2luZCkKICAgICB2YXIgdmFsdWU7CiAKICAgICBidWNrZXQgPSBAbWFwQnVja2V0TmV4
dChidWNrZXQpOwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAibWFwQnVja2V0Iiwg
YnVja2V0KTsKKyAgICBAcHV0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBtYXBJdGVy
YXRvckZpZWxkTWFwQnVja2V0LCBidWNrZXQpOwogICAgIHZhciBkb25lID0gYnVja2V0ID09PSBA
c2VudGluZWxNYXBCdWNrZXQ7CiAgICAgaWYgKCFkb25lKSB7CiAgICAgICAgIHZhciBrZXkgPSBA
bWFwQnVja2V0S2V5KGJ1Y2tldCk7CkBAIC00OCwxMSArNDgsMTAgQEAgZnVuY3Rpb24gbmV4dCgp
CiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgaWYgKEBpc1VuZGVmaW5lZE9yTnVsbCh0aGlz
KSkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCIlTWFwSXRlcmF0b3JQcm90b3R5cGUlLm5leHQg
cmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgaWYg
KCFAaXNNYXBJdGVyYXRvcih0aGlzKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCIlTWFwSXRl
cmF0b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgYW4gTWFwIEl0ZXJh
dG9yIGluc3RhbmNlIik7CiAKLSAgICB2YXIgYnVja2V0ID0gQGdldEJ5SWREaXJlY3RQcml2YXRl
KHRoaXMsICJtYXBCdWNrZXQiKTsKLSAgICBpZiAoYnVja2V0ID09PSBAdW5kZWZpbmVkKQotICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoIiVNYXBJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJl
cyB0aGF0IHx0aGlzfCBiZSBhIE1hcCBJdGVyYXRvciBpbnN0YW5jZSIpOwotICAgIHJldHVybiBA
bWFwSXRlcmF0b3JOZXh0LkBjYWxsKHRoaXMsIGJ1Y2tldCwgQGdldEJ5SWREaXJlY3RQcml2YXRl
KHRoaXMsICJtYXBJdGVyYXRvcktpbmQiKSk7CisgICAgdmFyIGJ1Y2tldCA9IEBnZXRNYXBJdGVy
YXRvckludGVybmFsRmllbGQodGhpcywgQG1hcEl0ZXJhdG9yRmllbGRNYXBCdWNrZXQpOworICAg
IHZhciBraW5kID0gQGdldE1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAbWFwSXRlcmF0
b3JGaWVsZEtpbmQpOworICAgIHJldHVybiBAbWFwSXRlcmF0b3JOZXh0LkBjYWxsKHRoaXMsIGJ1
Y2tldCwga2luZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvTWFwUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcFBy
b3RvdHlwZS5qcwppbmRleCA4YTViZDNjMjZmN2VhMTU1NGVjYjA5YTE4MzVmMTRlZGQzZGRkZGM3
Li5jYzZiM2FhZGZmNjU3MTJkODk2MjM2YWI5ZWVkNWE4NmRhZjNlODFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBQcm90b3R5cGUuanMKQEAgLTIzLDQ4ICsyMyw2
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUBjb25zdHJ1Y3RvcgotQGdsb2JhbFByaXZhdGUK
LWZ1bmN0aW9uIE1hcEl0ZXJhdG9yKGl0ZXJhdGVkT2JqZWN0LCBraW5kKQotewotICAgICJ1c2Ug
c3RyaWN0IjsKLQotICAgIEBhc3NlcnQoQGlzTWFwKGl0ZXJhdGVkT2JqZWN0KSk7Ci0gICAgQHB1
dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJpdGVyYXRlZE9iamVjdCIsIGl0ZXJhdGVkT2JqZWN0
KTsKLSAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhpcywgIm1hcEl0ZXJhdG9yS2luZCIsIGtp
bmQpOwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAibWFwQnVja2V0IiwgQG1hcEJ1
Y2tldEhlYWQoaXRlcmF0ZWRPYmplY3QpKTsKLX0KLQotZnVuY3Rpb24gdmFsdWVzKCkKLXsKLSAg
ICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBpc01hcCh0aGlzKSkKLSAgICAgICAgQHRocm93
VHlwZUVycm9yKCJNYXAucHJvdG90eXBlLnZhbHVlcyByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBN
YXAiKTsKLQotICAgIHJldHVybiBuZXcgQE1hcEl0ZXJhdG9yKHRoaXMsIEBpdGVyYXRpb25LaW5k
VmFsdWUpOwotfQotCi1mdW5jdGlvbiBrZXlzKCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAg
ICBpZiAoIUBpc01hcCh0aGlzKSkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJNYXAucHJvdG90
eXBlLmtleXMgcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgTWFwIik7Ci0KLSAgICByZXR1cm4gbmV3
IEBNYXBJdGVyYXRvcih0aGlzLCBAaXRlcmF0aW9uS2luZEtleSk7Ci19Ci0KLWZ1bmN0aW9uIGVu
dHJpZXMoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlzTWFwKHRoaXMpKQot
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk1hcC5wcm90b3R5cGUuZW50cmllcyByZXF1aXJlcyB0
aGF0IHx0aGlzfCBiZSBNYXAiKTsKLQotICAgIHJldHVybiBuZXcgQE1hcEl0ZXJhdG9yKHRoaXMs
IEBpdGVyYXRpb25LaW5kRW50cmllcyk7Ci19Ci0KIGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sg
LyosIHRoaXNBcmcgKi8pCiB7CiAgICAgInVzZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
Y3BwCmluZGV4IDMyYWFmODdmNGM1NmEwNDg2NjQ0OGU0NzljNTM5YTc2M2ExOWNhMTAuLmRiZDVl
MWRjMTUyYjcyZmUzZTVjNGVhOTM5N2ZlNTk0MGIyOTVlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUg
IkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUg
IkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKQEAgLTkyLDYgKzkz
LDggQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eShWTSYgdm0pCiAgICAgbV9hcnJheUl0ZXJhdG9yRmllbGRJdGVyYXRlZE9iamVjdC5zZXQobV92
bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6
SXRlcmF0ZWRPYmplY3QpKSk7CiAgICAgbV9hcnJheUl0ZXJhdG9yRmllbGRJbmRleC5zZXQobV92
bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6
SW5kZXgpKSk7CiAgICAgbV9hcnJheUl0ZXJhdG9yRmllbGRLaW5kLnNldChtX3ZtLCBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpLaW5kKSkpOwor
ICAgIG1fbWFwSXRlcmF0b3JGaWVsZE1hcEJ1Y2tldC5zZXQobV92bSwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNNYXBJdGVyYXRvcjo6RmllbGQ6Ok1hcEJ1Y2tldCkpKTsKKyAgICBt
X21hcEl0ZXJhdG9yRmllbGRLaW5kLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU01hcEl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpKTsKICAgICBtX3N0cmluZ0l0ZXJhdG9y
RmllbGRJbmRleC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNTdHJp
bmdJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSkpOwogICAgIG1fc3RyaW5nSXRlcmF0b3JGaWVsZEl0
ZXJhdGVkU3RyaW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU1N0
cmluZ0l0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRTdHJpbmcpKSk7CiAgICAgbV9hc3luY0dlbmVy
YXRvckZpZWxkU3VzcGVuZFJlYXNvbi5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdXNwZW5kUmVhc29uKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmgKaW5kZXggOWJmMmM0MGUxN2JkMzQ3MTUzYjZiMzk2ZjYyZWZiNmJlOWI0OTA5
MS4uMzIyOTg4M2E1ZGU0N2ZiZTE1ZWNlMWZmOTA2MDdiNzhjODFmYTdjYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6
IGludDMyX3Q7CiAgICAgbWFjcm8oZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAg
ICAgbWFjcm8oZ2V0QXJyYXlJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhnZXRT
dHJpbmdJdGVyYXRvckludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhnZXRNYXBJdGVyYXRvcklu
dGVybmFsRmllbGQpIFwKICAgICBtYWNybyhpZFdpdGhQcm9maWxlKSBcCiAgICAgbWFjcm8oaXNP
YmplY3QpIFwKICAgICBtYWNybyhpc0pTQXJyYXkpIFwKQEAgLTYwLDYgKzYxLDcgQEAgZW51bSBj
bGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhpc1NldCkgXAogICAg
IG1hY3JvKGlzU3RyaW5nSXRlcmF0b3IpIFwKICAgICBtYWNybyhpc0FycmF5SXRlcmF0b3IpIFwK
KyAgICBtYWNybyhpc01hcEl0ZXJhdG9yKSBcCiAgICAgbWFjcm8oaXNVbmRlZmluZWRPck51bGwp
IFwKICAgICBtYWNybyh0YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMpIFwKICAgICBtYWNybyh0aHJv
d1R5cGVFcnJvcikgXApAQCAtNzUsNiArNzcsNyBAQCBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3Rh
bnQgOiBpbnQzMl90OwogICAgIG1hY3JvKHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkg
XAogICAgIG1hY3JvKHB1dEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8o
cHV0U3RyaW5nSXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBcCisgICAgbWFjcm8ocHV0TWFwSXRlcmF0
b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8odG9OdW1iZXIpIFwKICAgICBtYWNybyh0b1N0
cmluZykgXAogICAgIG1hY3JvKHRvT2JqZWN0KSBcCkBAIC0xMjMsOSArMTI2LDEwIEBAIGVudW0g
Y2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAgICAgbWFjcm8oR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQpIFwKICAgICBtYWNybyhHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgXAogICAg
IG1hY3JvKGFycmF5SXRlcmF0b3JGaWVsZEluZGV4KSBcCi0gICAgbWFjcm8oYXJyYXlJdGVyYXRv
ckZpZWxkSXNEb25lKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvckZpZWxkSXRlcmF0ZWRPYmpl
Y3QpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdG9yRmllbGRLaW5kKSBcCisgICAgbWFjcm8obWFw
SXRlcmF0b3JGaWVsZE1hcEJ1Y2tldCkgXAorICAgIG1hY3JvKG1hcEl0ZXJhdG9yRmllbGRLaW5k
KSBcCiAgICAgbWFjcm8oc3RyaW5nSXRlcmF0b3JGaWVsZEluZGV4KSBcCiAgICAgbWFjcm8oc3Ry
aW5nSXRlcmF0b3JGaWVsZEl0ZXJhdGVkU3RyaW5nKSBcCiAgICAgbWFjcm8oYXN5bmNHZW5lcmF0
b3JGaWVsZFN1c3BlbmRSZWFzb24pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyOTg5Mzc0MGE4NWE1ODQ5
ZTM5NzI4ODU2NTAzMmFlNzRiYWZmNTViLi5hMzY5Mjc4MzI4MjE2MzE0YzJmMTE4ZGE2NTc4ZTZm
MmFlYzk3YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC04ODksNiArODg5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1NldChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1NldFR5
cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1N0cmluZ0l0ZXJhdG9yKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0
LCBzcmMsIEpTU3RyaW5nSXRlcmF0b3JUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
SXNBcnJheUl0ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVy
biBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTQXJyYXlJdGVyYXRvclR5cGUpOyB9Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc01hcEl0ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTTWFw
SXRlcmF0b3JUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNPYmplY3QoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNO
dW1iZXIoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0SXNVbmRlZmluZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCmluZGV4IDY0MGIyNDk3NTVlMTBlY2RkOWE4M2I5ZTE0YjA5N2FiMzlmZDA5NGYuLmMyNmI1
ZmY3YTQwODk3MGFmMjEwMDY1NGJmZTA4YzcxNzZjZTRmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKKyNpbmNsdWRlICJKU01hcEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxhYmVs
U2NvcGUuaCIKICNpbmNsdWRlICJMZXhlci5oIgpAQCAtMTE1Myw2ICsxMTU0LDE3IEBAIHN0YXRp
YyBKU1N0cmluZ0l0ZXJhdG9yOjpGaWVsZCBzdHJpbmdJdGVyYXRvckludGVybmFsRmllbGRJbmRl
eChCeXRlY29kZUludHJpbnNpCiAgICAgcmV0dXJuIEpTU3RyaW5nSXRlcmF0b3I6OkZpZWxkOjpJ
bmRleDsKIH0KIAorc3RhdGljIEpTTWFwSXRlcmF0b3I6OkZpZWxkIG1hcEl0ZXJhdG9ySW50ZXJu
YWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
bm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6
RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX21hcEl0ZXJhdG9yRmllbGRNYXBCdWNrZXQpCisg
ICAgICAgIHJldHVybiBKU01hcEl0ZXJhdG9yOjpGaWVsZDo6TWFwQnVja2V0OworICAgIGlmIChu
b2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19tYXBJdGVyYXRvckZpZWxkS2luZCkKKyAgICAgICAgcmV0dXJuIEpTTWFwSXRlcmF0
b3I6OkZpZWxkOjpLaW5kOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpNYXBCdWNrZXQ7Cit9CisKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0UHJvbWlzZUludGVybmFs
RmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewog
ICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0xMjE4
LDYgKzEyMzAsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19nZXRTdHJpbmdJdGVyYXRvckludGVybmFsRmllbGQKICAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCks
IGJhc2UuZ2V0KCksIGluZGV4KTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY19nZXRNYXBJdGVyYXRvckludGVybmFsRmllbGQoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlz
dE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4
dDsKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5tX2V4cHItPmlzQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1hcEl0
ZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KHN0YXRpY19jYXN0PEJ5dGVjb2RlSW50cmluc2ljTm9k
ZSo+KG5vZGUtPm1fZXhwcikpKTsKKyAgICBBU1NFUlQoaW5kZXggPCBKU01hcEl0ZXJhdG9yOjpu
dW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGluZGV4KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hcmd1bWVudChCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9k
ZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTEzNjcsNiArMTM5MiwyMiBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dFN0cmluZ0l0
ZXJhdG9ySW50ZXJuYWxGaWVsZAogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVy
YXRvci5lbWl0UHV0SW50ZXJuYWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkp
KTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19wdXRNYXBJdGVyYXRvckludGVybmFsRmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2Fy
Z3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobm9kZSk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSRUxFQVNFX0FT
U0VSVChub2RlLT5tX2V4cHItPmlzQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKCkpOworICAgIHVuc2ln
bmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVs
ZEluZGV4KHN0YXRpY19jYXN0PEJ5dGVjb2RlSW50cmluc2ljTm9kZSo+KG5vZGUtPm1fZXhwcikp
KTsKKyAgICBBU1NFUlQoaW5kZXggPCBKU01hcEl0ZXJhdG9yOjpudW1iZXJPZkludGVybmFsRmll
bGRzKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKworICAgIEFTU0VSVCghbm9kZS0+bV9u
ZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0UHV0
SW50ZXJuYWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkpKTsKK30KKwogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190YWlsQ2FsbEZv
cndhcmRBcmd1bWVudHMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7
CkBAIC0xNTE2LDYgKzE1NTcsNyBAQCBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhp
c01hcCwgSXNNYXApCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1NldCwgSXNT
ZXQpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1N0cmluZ0l0ZXJhdG9yLCBJ
c1N0cmluZ0l0ZXJhdG9yKQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNBcnJh
eUl0ZXJhdG9yLCBJc0FycmF5SXRlcmF0b3IpCitDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9D
SEVDSyhpc01hcEl0ZXJhdG9yLCBJc01hcEl0ZXJhdG9yKQogQ1JFQVRFX0lOVFJJTlNJQ19GT1Jf
QlJBTkRfQ0hFQ0soaXNVbmRlZmluZWRPck51bGwsIElzVW5kZWZpbmVkT3JOdWxsKQogCiAjdW5k
ZWYgQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRl
eCA5NTNmYmFlZjQ4ZjNhNTU0ZDQ1OWJkOWEyYjNkNmU2M2RhYTdjYWM3Li5kYjA5ODJiMGU0MDZm
NDNhNThkOTRjNGM2ZTE4ODlhNDJkYmFiNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0yODYy
LDYgKzI4NjIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgTmV3R2VuZXJh
dG9yOgogICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6ICAgIAogICAgIGNhc2UgTmV3QXJyYXlJ
dGVyYXRvcjoKKyAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgTmV3T2JqZWN0Ogog
ICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgICAgICBBU1NF
UlQoISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkBAIC0yOTQ2LDYgKzI5NDcsNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZDoK
ICAgICBjYXNlIFBoYW50b21OZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIFBoYW50b21OZXdBcnJh
eUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgUGhh
bnRvbU5ld1JlZ2V4cDoKICAgICBjYXNlIEJvdHRvbVZhbHVlOiB7CiAgICAgICAgIGNsZWFyRm9y
Tm9kZShub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggOTk2MWQ5MDMyZDY4MGQ4NTM0NjU5OGRlNmEyYjhmYWNkNzM0MjdiZC4u
OGEyMDkxZWFhMmM2OTgyYWM1OGZlYjIzOWIwZGEwOGIzMmQzYTZkNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU5LDYgKzU5LDcg
QEAKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTSW50ZXJu
YWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJKU1By
b21pc2VDb25zdHJ1Y3Rvci5oIgpAQCAtMzE3Nyw2ICszMTc4LDQ4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIg
cmVzdWx0LCBJCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCisgICAgICAg
IGNhc2UgSlNNYXBFbnRyaWVzSW50cmluc2ljOgorICAgICAgICBjYXNlIEpTTWFwS2V5c0ludHJp
bnNpYzoKKyAgICAgICAgY2FzZSBKU01hcFZhbHVlc0ludHJpbnNpYzogeworICAgICAgICAgICAg
aW5zZXJ0Q2hlY2tzKCk7CisKKyAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSB8fCBtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRU
eXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIEl0ZXJh
dGlvbktpbmQga2luZDsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50cmluc2ljKSB7CisgICAgICAg
ICAgICBjYXNlIEpTTWFwVmFsdWVzSW50cmluc2ljOgorICAgICAgICAgICAgICAgIGtpbmQgPSBJ
dGVyYXRpb25LaW5kOjpWYWx1ZXM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEpTTWFwS2V5c0ludHJpbnNpYzoKKyAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0
aW9uS2luZDo6S2V5czsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
SlNNYXBFbnRyaWVzSW50cmluc2ljOgorICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25L
aW5kOjpFbnRyaWVzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBOb2RlKiBiYXNl
ID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygwLCByZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVjaywgRWRnZShiYXNlLCBNYXBP
YmplY3RVc2UpKTsKKyAgICAgICAgICAgIE5vZGUqIG1hcEJ1Y2tldCA9IGFkZFRvR3JhcGgoR2V0
TWFwQnVja2V0SGVhZCwgYmFzZSk7CisKKyAgICAgICAgICAgIC8vIEFkZCB0aGUgY29uc3RhbnQg
YmVmb3JlIGV4aXQgYmVjb21lcyBpbnZhbGlkIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0
IChyZWR1bmRhbnQpIGNoZWNrcyBvbiBpdCBpbiBGaXh1cC4KKyAgICAgICAgICAgIE5vZGUqIGtp
bmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2luZCkp
KTsKKworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnROb2RlT3JpZ2luKCkuc2VtYW50aWMpOworICAgICAgICAg
ICAgTm9kZSogaXRlcmF0b3IgPSBhZGRUb0dyYXBoKE5ld01hcEl0ZXJhdG9yLCBPcEluZm8obV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm1hcEl0ZXJhdG9yU3RydWN0dXJl
KCkpKSk7CisKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZv
KHN0YXRpY19jYXN0PHVpbnQzMl90PihKU01hcEl0ZXJhdG9yOjpGaWVsZDo6TWFwQnVja2V0KSks
IGl0ZXJhdG9yLCBtYXBCdWNrZXQpOworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5h
bEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTTWFwSXRlcmF0b3I6OkZpZWxk
OjpJdGVyYXRlZE9iamVjdCkpLCBpdGVyYXRvciwgYmFzZSk7CisgICAgICAgICAgICBhZGRUb0dy
YXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNNYXBJ
dGVyYXRvcjo6RmllbGQ6OktpbmQpKSwgaXRlcmF0b3IsIGtpbmROb2RlKTsKKworICAgICAgICAg
ICAgc2V0UmVzdWx0KGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisKICAgICAgICAgY2FzZSBKU1NldEJ1Y2tldEhlYWRJbnRyaW5zaWM6CiAgICAgICAgIGNh
c2UgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljOiB7CiAgICAgICAgICAgICBBU1NFUlQoYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCmluZGV4IGQxOTUyMmZlZDVlOGU1ZmFmYzVkOTUzZWM4MzIwZWU3ZDY3ZjUy
M2MuLmQzZGE2Zjk1MWMwZDFkZWNlYjViYmU1NmRhNWViZjY3NGYxNGY5YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNTk0LDYgKzE1OTQsNyBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3Rv
ciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2Ug
TmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2Ug
TmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6
CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CkBAIC0xNjA0LDYgKzE2MDUsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVh
ZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAg
Y2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21O
ZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgIGNh
c2UgTWF0ZXJpYWxpemVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbUNy
ZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CmluZGV4IGVlOThmYWMyMzA1MzQ5OTMwNTk0OGE3YzQwMmRmMzhkMmJmMDZkZWIuLjVkYzFiOTgx
YWI1MjIwZjYyNjVlMjIwZGRhZGE1MmExN2Y1NmNkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC02MSw2ICs2MSw3IEBA
IGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgY2FzZSBO
ZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBOZXdS
ZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CkBA
IC03MSw2ICs3Miw3IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAg
Y2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0
ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgTWF0ZXJp
YWxpemVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2
YXRpb246CiAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmlu
ZGV4IDY1MDUzY2ViNWUwODdhMGNkNGEzMTQ4MGFmZGU4ZDY1MTgxZWQxNDMuLmNhZGY0NmUwZmUx
N2MzZjUwZjYxMDM1MDI0YmE4NGE1YmFhNWUyYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xMTAxLDYgKzEx
MDEsNyBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAg
ICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgICAgIGNhc2UgUGhhbnRv
bU5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRv
cjoKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAg
ICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICBjYXNlIFBoYW50b21D
bG9uZWRBcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5k
ZXggNTVkM2M4ZmQ1ZGNmOGZhMmVmYmEzN2Y5NmRjOTA5OWQ0OTcyNTE4MS4uYWEzYzY5NzI3YzVl
YTBjNDVjOTU3YzEwYWFkNzRmNGZlNzhmZWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcApAQCAtMjExLDYgKzIxMSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgIGNh
c2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3
QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKICAgICBjYXNl
IFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50
czoKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgpAQCAtMzU3LDYgKzM1OCw3IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5OgogICAg
IGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOgogICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoKKyAg
ICBjYXNlIE5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgU3ByZWFkOgogICAgIGNhc2UgTmV3QXJy
YXlXaXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggNzlhOWM0ZmFiNTBlNmM2NjU1YTQ2ZDRj
OWExZjk4YmVmM2M3OGYzNy4uOTA5ZmQwMjJhMzVkNDE3NzgwYTg5YWFhYzk3NDgyMWI3YTlkNTNi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0x
OTQwLDYgKzE5NDAsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQ
aGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVy
YXRvcjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CiAgICAgICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3Vt
ZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKQEAgLTI1MzIsNiArMjUzMyw3
IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIE5ld0dl
bmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBO
ZXdBcnJheUl0ZXJhdG9yOgorICAgICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgogICAgICAgICBj
YXNlIE5ld1JlZ2V4cDoKICAgICAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgogICAgICAgICBj
YXNlIElzRW1wdHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRl
eCBiOTI4ODEwZTEwMTU1M2IxOWFmNTEzNDQyYzAzZWJlZWMwNDgwZjJiLi41OTEwYTcwMTAyYzk3
ODEwODhiYjQxMTFlZWU4MGYyYzYzZjRkMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0YXRlKQogICAgIGNhc2UgUHV0SGlu
dDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJ
dGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKICAgICBjYXNlIFB1dFN0
YWNrOgogICAgIGNhc2UgS2lsbFN0YWNrOgogICAgIGNhc2UgR2V0U3RhY2s6CkBAIC0xMzAsNiAr
MTMxLDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBT
dGF0ZVR5cGUmIHN0YXRlKQogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgTmV3
U3ltYm9sOgogICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIE5ld01hcEl0ZXJh
dG9yOgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgY2FzZSBU
b051bWVyaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGJjN2NmYjEyZDBh
OGUyZDMyZTI3Mjk3Zjc0OGE2NTVlMzUxNzI2NzYuLjFhN2NjYTg0YTViNTkxNzRmNGFiZTE4YmQ3
N2Q3NWNiMTk1MjgxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC02NjAs
NiArNjYwLDE3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2hpbGRyZW4gPSBBZGphY2VuY3lM
aXN0KCk7CiAgICAgfQogCisgICAgdm9pZCBjb252ZXJ0VG9QaGFudG9tTmV3TWFwSXRlcmF0b3Io
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gTmV3TWFwSXRlcmF0b3IpOworICAgICAg
ICBtX29wID0gUGhhbnRvbU5ld01hcEl0ZXJhdG9yOworICAgICAgICBtX2ZsYWdzICY9IH5Ob2Rl
SGFzVmFyQXJnczsKKyAgICAgICAgbV9mbGFncyB8PSBOb2RlTXVzdEdlbmVyYXRlOworICAgICAg
ICBtX29wSW5mbyA9IE9wSW5mb1dyYXBwZXIoKTsKKyAgICAgICAgbV9vcEluZm8yID0gT3BJbmZv
V3JhcHBlcigpOworICAgICAgICBjaGlsZHJlbiA9IEFkamFjZW5jeUxpc3QoKTsKKyAgICB9CisK
ICAgICB2b2lkIGNvbnZlcnRUb1BoYW50b21OZXdBc3luY0Z1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX29wID09IE5ld0FzeW5jRnVuY3Rpb24pOwpAQCAtMTk3Nyw2ICsxOTg4LDcg
QEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICAgICAgY2Fz
ZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAg
ICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpAQCAtMjE0Myw2ICsy
MTU1LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0
aW9uOgogICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAg
ICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50b21O
ZXdNYXBJdGVyYXRvcjoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggM2ZlZjZiMzgxODUzZGQ1
ZTcyYzk4YTRmMjhiOTBiYWZmNmM2YmU0YS4uZDQ5YjNmMGY3MGRhOWM2YzBlNmRmZmFlNzNmZWM1
ZTAwMmNjYmQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAt
MzU5LDYgKzM1OSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhOZXdBcnJheVdpdGhTaXplLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oTmV3QXJyYXlCdWZmZXIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld0Fy
cmF5SXRlcmF0b3IsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE5ld01hcEl0ZXJhdG9yLCBO
b2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdUeXBlZEFycmF5LCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTmV3UmVnZXhwLCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBtYWNybyhOZXdTeW1ib2wsIE5vZGVSZXN1bHRKUykgXApAQCAtMzc4LDYgKzM3OSw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQaGFudG9tTmV3QXN5
bmNGdW5jdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGhhbnRvbU5ld0FycmF5SXRlcmF0b3IsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhQaGFudG9tTmV3TWFwSXRlcmF0
b3IsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNYXRlcmlh
bGl6ZU5ld0ludGVybmFsRmllbGRPYmplY3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVIYXNWYXJBcmdz
KSBcCiAgICAgbWFjcm8oUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb24sIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb24s
IE5vZGVSZXN1bHRKUyB8IE5vZGVIYXNWYXJBcmdzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAppbmRleCAwNWFjZGYyMzg3Njk3M2Y4OGU4MmI5YTczYjM0OWVlNzc5YjViOTg0Li44YTVhOTAx
YTIzN2NlMjI5NGNhMjgzN2I0OWNhYmIzYzg2MzlkMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJERkdWYWxpZGF0ZS5oIgogI2luY2x1
ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpc3QuaD4KIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtOTY2LDYgKzk2NywxMSBAQCBjbGFzcyBPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjogeworICAgICAgICAg
ICAgdGFyZ2V0ID0gaGFuZGxlSW50ZXJuYWxGaWVsZENsYXNzPEpTTWFwSXRlcmF0b3I+KG5vZGUs
IHdyaXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ug
TmV3UmVnZXhwOiB7CiAgICAgICAgICAgICB0YXJnZXQgPSAmbV9oZWFwLm5ld0FsbG9jYXRpb24o
bm9kZSwgQWxsb2NhdGlvbjo6S2luZDo6UmVnRXhwT2JqZWN0KTsKIApAQCAtMjA4OCw2ICsyMDk0
LDEwIEBAIGNsYXNzIE9iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbU5ld0FycmF5
SXRlcmF0b3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CisgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLT5jb252ZXJ0VG9QaGFudG9tTmV3TWFwSXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlv
bjoKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21DcmVhdGVB
Y3RpdmF0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDA4Y2U1NDM1ZDNmNzE5MDYz
Y2ZjMDlmZmE3N2RjZjYxMWZmOGY5OTguLjRlZWRkZWQxOTc0Y2QzYWQxMDY4OTZmNGI3N2Q4Yjky
MDFhZDFhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cApAQCAtMjExMyw2ICsyMTEzLDE1IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBcnJheUl0ZXJhdG9yKFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogc3RydWN0CiAgICAgcmV0
dXJuIEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXModm0sIHN0cnVjdHVy
ZSk7CiB9CiAKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdNYXBJdGVyYXRvcihW
TSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBWTSYgdm0gPSAqdm1Q
b2ludGVyOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisKKyAgICByZXR1cm4gSlNNYXBJdGVyYXRvcjo6Y3JlYXRlV2l0aEluaXRpYWxW
YWx1ZXModm0sIHN0cnVjdHVyZSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRp
b25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU1Njb3BlKiBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxlLCBFbmNvZGVkSlNWYWx1ZSBp
bml0aWFsVmFsdWVFbmNvZGVkKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDBjODczZGJlNWZlZWI4ZWJk
ZDAyMzY5YzE5ZjE0NzNlMjU2NjUxNzIuLmNiYjQyMzY3YmVlNzAzNDRkYzNhZTk3NjY0YzdjZDE0
ZWYyMzQ2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBA
IC0xMjYsNiArMTI2LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMy
QXJyYXlXaXRoT25lQXJndW1lbnQoSlNHbG9iYWxPYmplY3QqLCBTdHIKIGNoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBpbnQzMl90LCBjaGFyKikgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IoVk0qLCBTdHJ1Y3R1cmUqKSBX
VEZfSU5URVJOQUw7CitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3TWFwSXRlcmF0
b3IoVk0qLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbFN0cmljdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsTm9uU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDI4ODg1
OGIzOGMxNmE2NWE4YzhlYmRiOWQ0MzcwMTI4MzQ3MmE1MGEuLmY2MDkzYmYyNTE0YzYzYjVjZTI3
NmFjOTUyOGI5NzZhYmE3MjVhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMDYxLDYg
KzEwNjEsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3
QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoKKyAgICAgICAg
Y2FzZSBOZXdNYXBJdGVyYXRvcjoKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVj
dE90aGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkBAIC0xMjg1LDYgKzEy
ODYsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZDoKICAgICAgICAgY2FzZSBQ
aGFudG9tTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0
b3I6CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgICAgICBjYXNlIFBo
YW50b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAg
ICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IGJhZGZlMWIyZDE0MjliMmUwNTY0ZTYwMWEwYzdm
Yzk2NjRiNTVlYWMuLjQxMmFjZWZlMTk0OGFjYTBkODI0OGEzOGNhODRlMjc5ZGFjMDcxOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01NDks
NiArNTQ5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwg
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIE5ld0FycmF5QnVm
ZmVyOgogICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOgogICAgIGNhc2UgTmV3QXJyYXlJdGVy
YXRvcjoKKyAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgU3ByZWFkOgogICAgIGNh
c2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3U3ltYm9sOgpAQCAtNjE5LDYgKzYyMCw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JG
dW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2UgUGhh
bnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CiAg
ICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdSZWdl
eHA6CiAgICAgY2FzZSBQdXRIaW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBjYWE0YmFiNDEwZTZkNTM0ZTA2YTU5NTc2MTlkMzlj
OWM4N2VjMDlkLi5jNjE1ODNmNDhkYTA2NGMyMDg3ODI0YmIxNGJkODk1Mjk2NzJmOWE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAt
NTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50
LmgiCisjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJSZWdFeHBP
YmplY3QuaCIKQEAgLTEzMDE0LDYgKzEzMDE1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdBcnJheUl0ZXJhdG9yKE5vZGUqIG5vZGUpCiAgICAgY29tcGlsZU5ld0ludGVybmFs
RmllbGRPYmplY3Q8SlNBcnJheUl0ZXJhdG9yPihub2RlLCBvcGVyYXRpb25OZXdBcnJheUl0ZXJh
dG9yKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld01hcEl0ZXJhdG9yKE5v
ZGUqIG5vZGUpCit7CisgICAgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3Q8SlNNYXBJdGVy
YXRvcj4obm9kZSwgb3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IpOworfQorCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVG9QcmltaXRpdmUoTm9kZSogbm9kZSkKIHsKICAgICBERkdfQVNTRVJU
KG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGUzZjY3ZTE1OTJjOGVmOWM3MGJiZDA2Mjcy
ZWQzNzZhM2I5Y2QzMmEuLjUwMWUxZjVhMTk4Y2YzNWMxNzkxOGViMzIzODQwZjlhODA2NmYxNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAg
LTE0NjMsNiArMTQ2Myw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBp
bGVOZXdHZW5lcmF0b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld0FzeW5jR2VuZXJhdG9y
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdBcnJheUl0ZXJhdG9yKE5vZGUqKTsKKyAgICB2
b2lkIGNvbXBpbGVOZXdNYXBJdGVyYXRvcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVG9Qcmlt
aXRpdmUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVRvUHJvcGVydHlLZXkoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZVRvTnVtZXJpYyhOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAxMjkwZDE3OTcwM2U4
NjcwMjZmMzAyYmM4MGU3MmEwMjVmNjhiZDI0Li41YmJhNzZmNDA2M2Y1ZTMwMjIyNTRjZDQ2MDhk
NmJiY2Y0MzY5YzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMyNjUsNiArMzI2NSwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld01hcEl0ZXJhdG9y
KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldENhbGxlZTogewog
ICAgICAgICBjb21waWxlR2V0Q2FsbGVlKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQyMTcs
NiArNDIyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRv
bUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAg
ICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKICAgICBjYXNlIFBoYW50b21OZXdSZWdleHA6
CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApp
bmRleCBjNTdhNTRmNWFkZGQ0NTRiYzQ0NjkyZTViNGU1ODdiZjA0YTlmMWQ5Li42ODNjYzQyYzdi
OGU5ZWM1ZDUyMzYwZGY0MWEzZWQ1OTQzMDRiYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM1OTQsNiArMzU5NCwxMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5l
d01hcEl0ZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdl
dENhbGxlZTogewogICAgICAgICBjb21waWxlR2V0Q2FsbGVlKG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTUyNzgsNiArNTI4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2UgUGhh
bnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJ
dGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKICAgICBjYXNlIFBoYW50
b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAgICBjYXNl
IEdldE15QXJndW1lbnRCeVZhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggOTMzZDNhNGQ2
YWE5NzRlMGI5MjBlNTc5YjA2MWE3MDIxNmY5M2U3NS4uNGJiYzIxYzZjYmIzMzE5NDM2NDUyM2Y4
MGFlOWQ5NTlhYzdjMGE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTMzOCw2ICszMzgs
NyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAgICAgICBjYXNlIE5ld0Fy
cmF5QnVmZmVyOgogICAgICAgICAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgICAgICAg
ICAgY2FzZSBOZXdNYXBJdGVyYXRvcjoKICAgICAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheToK
ICAgICAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgogICAgICAgICAgICAgY2FzZSBOZXdTdHJpbmdP
YmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
aW5kZXggNWM2OWQxZDM4YzFjNjEwNTk5ZmQzMDI5OTczNDM2MGNiMjI3YWNiMi4uZmIxNjE1OGFm
MmU1M2I4OTMzZjM2MWRjZjZlOGM3MzBjOWU5N2FlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtODIsNiArODIsNyBAQCBpbmxpbmUgQ2Fw
YWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5Ogog
ICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOgogICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoK
KyAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgU3ByZWFkOgogICAgIGNhc2UgTmV3
QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgpAQCAtMjkyLDYgKzI5Myw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2Ug
UGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5
bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2Ug
UGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246
CiAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgIGNhc2UgUHV0SGludDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA3NzNhMDA2ZTA4
NzQwOTc0ZjAzM2U2YzJkODJkZWFjOGIyZmRjNTQ3Li5iOWIwMTU3MzY1YjAyYzQ5OWU2YzRlODg5
OGVjNDA0YmNiNjA0YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0
ZXJmbHkuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpT
TWFwLmgiCisjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIk9wZXJhbmRzSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVj
dC5oIgpAQCAtMTA3NSw2ICsxMDc2LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
Y2FzZSBOZXdBcnJheUl0ZXJhdG9yOgogICAgICAgICAgICAgY29tcGlsZU5ld0FycmF5SXRlcmF0
b3IoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgor
ICAgICAgICAgICAgY29tcGlsZU5ld01hcEl0ZXJhdG9yKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgICAgICAgICBjb21waWxlTmV3U3Ry
aW5nT2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1OTQsNiArMTU5OCw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld01h
cEl0ZXJhdG9yOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAg
ICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0
ZVJlc3Q6CkBAIC02MzkwLDYgKzYzOTUsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3Q8SlNBcnJheUl0ZXJhdG9yPihvcGVyYXRp
b25OZXdBcnJheUl0ZXJhdG9yKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVOZXdNYXBJdGVy
YXRvcigpCisgICAgeworICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxKU01h
cEl0ZXJhdG9yPihvcGVyYXRpb25OZXdNYXBJdGVyYXRvcik7CisgICAgfQorCiAgICAgdm9pZCBj
b21waWxlTmV3U3RyaW5nT2JqZWN0KCkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9ub2RlLT5zdHJ1Y3R1cmUoKTsKQEAgLTEyMzEwLDYgKzEyMzIwLDkg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBKU0FycmF5SXRlcmF0b3JUeXBl
OgogICAgICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3SW50ZXJuYWxGaWVsZE9iamVjdElt
cGw8SlNBcnJheUl0ZXJhdG9yPihvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yKTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEpTTWFwSXRlcmF0b3JUeXBlOgorICAgICAgICAgICAg
Y29tcGlsZU1hdGVyaWFsaXplTmV3SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8SlNNYXBJdGVyYXRv
cj4ob3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHN0
cnVjdHVyZSIpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVy
YXRpb25zLmNwcAppbmRleCA4ZWYyMzlkNmZjYTVjMDA5Y2Q3NTY1YWZjZTdhZDc2NDMyODc2Mzc4
Li5hODFmNmM1ZTFjZmY4YTRjYjc3Y2Q4MmRmYmUyMDYxODBmZTdiY2NkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNp
bmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0
ZXJmbHkuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpT
TWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKIAogSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJmcmFtZS1hZGRyZXNzIikKQEAgLTEzMSw2ICsxMzIsMTkgQEAgZXh0ZXJuICJD
IiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUihKU0dsb2Jh
bE9iamVjdCogZ2xvYmEKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQaGFudG9t
TmV3TWFwSXRlcmF0b3I6IHsKKyAgICAgICAgSlNNYXBJdGVyYXRvciogbWFwSXRlcmF0b3IgPSBq
c0Nhc3Q8SlNNYXBJdGVyYXRvcio+KEpTVmFsdWU6OmRlY29kZSgqZW5jb2RlZFZhbHVlKSk7CisK
KyAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRvIHBvcHVsYXRlIHRoZSBpdGVyYXRvciB3aXRo
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygp
LnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgY29uc3QgRXhpdFByb3BlcnR5VmFsdWUmIHBy
b3BlcnR5ID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKClbaV07CisgICAgICAgICAgICBp
ZiAocHJvcGVydHkubG9jYXRpb24oKS5raW5kKCkgIT0gSW50ZXJuYWxGaWVsZE9iamVjdFBMb2Mp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBtYXBJdGVyYXRvci0+aW50
ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDxKU01hcEl0ZXJhdG9yOjpGaWVsZD4ocHJvcGVydHkubG9j
YXRpb24oKS5pbmZvKCkpKS5zZXQodm0sIG1hcEl0ZXJhdG9yLCBKU1ZhbHVlOjpkZWNvZGUodmFs
dWVzW2ldKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQ
aGFudG9tTmV3UmVnZXhwOiB7CiAgICAgICAgIFJlZ0V4cE9iamVjdCogcmVnRXhwT2JqZWN0ID0g
anNDYXN0PFJlZ0V4cE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSgqZW5jb2RlZFZhbHVlKSk7CiAK
QEAgLTMxNSw2ICszMjksMjggQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUihKU0dsb2JhbE9iamVjdCoKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjogewor
ICAgICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgc3RydWN0dXJlLgorICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IG51bGxwdHI7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1hdGVyaWFs
aXphdGlvbi0+cHJvcGVydGllcygpLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgY29uc3Qg
RXhpdFByb3BlcnR5VmFsdWUmIHByb3BlcnR5ID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVz
KClbaV07CisgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKSA9PSBQcm9tb3RlZExv
Y2F0aW9uRGVzY3JpcHRvcihTdHJ1Y3R1cmVQTG9jKSkgeworICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pLmFzQ2VsbCgpLT5pbmhlcml0czxT
dHJ1Y3R1cmU+KHZtKSk7CisgICAgICAgICAgICAgICAgc3RydWN0dXJlID0ganNDYXN0PFN0cnVj
dHVyZSo+KEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUpOworCisgICAgICAgIEpTTWFw
SXRlcmF0b3IqIHJlc3VsdCA9IEpTTWFwSXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVz
KHZtLCBzdHJ1Y3R1cmUpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1hdGVyaWFsaXphdGlv
bi0+cHJvcGVydGllcygpLnNpemUoKSAtIDEgPT0gSlNNYXBJdGVyYXRvcjo6bnVtYmVyT2ZJbnRl
cm5hbEZpZWxkcyk7CisKKyAgICAgICAgLy8gVGhlIHJlYWwgdmFsdWVzIHdpbGwgYmUgcHV0IHN1
YnNlcXVlbnRseSBieQorICAgICAgICAvLyBvcGVyYXRpb25Qb3B1bGF0ZU5ld09iamVjdEluT1NS
LiBTZWUgdGhlIFBoYW50b21OZXdPYmplY3QKKyAgICAgICAgLy8gY2FzZSBmb3IgZGV0YWlscy4K
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBjYXNlIFBoYW50b21DcmVhdGVS
ZXN0OgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21D
bG9uZWRBcmd1bWVudHM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggMDgwZmFlZGU4MWEyMjY4MjIx
ZDFjNTA4OTQxZDllZjI3MTI3OWEyMC4uNDE3NTIzZDVkNTc5NjFlN2M5ODk5MWZmOWJmMmVkNTAy
MTA1N2EzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJK
U0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2lu
Y2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpT
UHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpT
U2V0LmgiCkBAIC0zOTcsOSArMzk4LDkgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6
Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAg
ICAgICAgIHJldHVybiBhcnJheTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChpdGVyYXRvck9i
amVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBC
dWNrZXRQcml2YXRlTmFtZSgpKSkgewotICAgICAgICAgICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVl
ID0gaXRlcmF0b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaXRlcmF0ZWRPYmplY3RQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgICAgIEl0ZXJh
dGlvbktpbmQga2luZCA9IHN0YXRpY19jYXN0PEl0ZXJhdGlvbktpbmQ+KGl0ZXJhdG9yT2JqZWN0
LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEl0ZXJh
dG9yS2luZFByaXZhdGVOYW1lKCkpLmFzSW50MzIoKSk7CisgICAgICAgIGlmIChhdXRvKiBtYXBJ
dGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNNYXBJdGVyYXRvcio+KHZtLCBpdGVyYXRvck9iamVj
dCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0ZWRWYWx1ZSA9IG1hcEl0ZXJhdG9yLT5p
dGVyYXRlZE9iamVjdCgpOworICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kID0gbWFwSXRl
cmF0b3ItPmtpbmQoKTsKIAogICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAg
ICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwg
bnVsbHB0ciwgMik7CkBAIC01NDksMTMgKzU1MCwxMCBAQCBzdGF0aWMgSlNPYmplY3QqIGNsb25l
QXJyYXlJdGVyYXRvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0s
CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1zdGF0aWMgSlNPYmplY3QqIGNsb25lTWFwSXRlcmF0
b3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU09iamVjdCog
aXRlcmF0b3JPYmplY3QsIEpTVmFsdWUgbWFwQnVja2V0LCBKU1ZhbHVlIGl0ZXJhdGVkT2JqZWN0
KQorc3RhdGljIEpTT2JqZWN0KiBjbG9uZU1hcEl0ZXJhdG9yT2JqZWN0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNNYXBJdGVyYXRvciogaXRlcmF0b3JPYmplY3QpCiB7
Ci0gICAgQVNTRVJUKGl0ZXJhdG9yT2JqZWN0LT50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlKTsK
LSAgICBKU09iamVjdCogY2xvbmUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3Qs
IE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgTWFwSXRlcmF0
b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPml0ZXJhdG9yUHJvdG90eXBlKCkpKSk7Ci0gICAgY2xvbmUtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXRlcmF0ZWRPYmplY3RQcml2YXRlTmFtZSgp
LCBpdGVyYXRlZE9iamVjdCk7Ci0gICAgY2xvbmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwSXRlcmF0b3JLaW5kUHJpdmF0ZU5hbWUoKSwgaXRlcmF0
b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
bWFwSXRlcmF0b3JLaW5kUHJpdmF0ZU5hbWUoKSkpOwotICAgIGNsb25lLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldFByaXZhdGVOYW1lKCks
IG1hcEJ1Y2tldCk7CisgICAgSlNNYXBJdGVyYXRvciogY2xvbmUgPSBKU01hcEl0ZXJhdG9yOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwganNDYXN0PEpT
TWFwKj4oaXRlcmF0b3JPYmplY3QtPml0ZXJhdGVkT2JqZWN0KCkpLCBpdGVyYXRvck9iamVjdC0+
a2luZCgpKTsKKyAgICBjbG9uZS0+aW50ZXJuYWxGaWVsZChKU01hcEl0ZXJhdG9yOjpGaWVsZDo6
TWFwQnVja2V0KS5zZXQodm0sIGNsb25lLCBpdGVyYXRvck9iamVjdC0+aW50ZXJuYWxGaWVsZChK
U01hcEl0ZXJhdG9yOjpGaWVsZDo6TWFwQnVja2V0KS5nZXQoKSk7CiAgICAgcmV0dXJuIGNsb25l
OwogfQogCkBAIC01OTMsMTIgKzU5MSwxMiBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjppdGVyYXRvckVudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAg
ICAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmlzQXJyYXlQcm90b3R5cGVJdGVyYXRvclBy
b3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKICAgICAgICAgICAgICAgICAgICAgaXRlcmF0
b3IgPSBjbG9uZUFycmF5SXRlcmF0b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCB2bSwgYXJyYXlJdGVy
YXRvcik7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYXV0byogbWFwSXRlcmF0
b3IgPSBqc0R5bmFtaWNDYXN0PEpTTWFwSXRlcmF0b3IqPih2bSwgaXRlcmF0b3JPYmplY3QpKSB7
CisgICAgICAgICAgICBpZiAoanNDYXN0PEpTTWFwKj4obWFwSXRlcmF0b3ItPml0ZXJhdGVkT2Jq
ZWN0KCkpLT5pc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpKQorICAgICAg
ICAgICAgICAgIGl0ZXJhdG9yID0gY2xvbmVNYXBJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3Qs
IHZtLCBtYXBJdGVyYXRvcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBKU1ZhbHVl
IGl0ZXJhdGVkT2JqZWN0ID0gaXRlcmF0b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXRlcmF0ZWRPYmplY3RQcml2YXRlTmFtZSgpKTsKLSAg
ICAgICAgICAgIGlmIChKU1ZhbHVlIG1hcEJ1Y2tldCA9IGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldFByaXZhdGVO
YW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGpzQ2FzdDxKU01hcCo+KGl0ZXJhdGVkT2Jq
ZWN0KS0+aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZU1hcEl0ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVj
dCwgdm0sIGl0ZXJhdG9yT2JqZWN0LCBtYXBCdWNrZXQsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZSBzZXRCdWNrZXQgPSBpdGVyYXRvck9iamVjdC0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRQcml2
YXRlTmFtZSgpKSkgeworICAgICAgICAgICAgaWYgKEpTVmFsdWUgc2V0QnVja2V0ID0gaXRlcmF0
b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
c2V0QnVja2V0UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoanNDYXN0PEpT
U2V0Kj4oaXRlcmF0ZWRPYmplY3QpLT5pc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2
YWJsZSgpKQogICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IGNsb25lU2V0SXRlcmF0b3JP
YmplY3QoZ2xvYmFsT2JqZWN0LCB2bSwgaXRlcmF0b3JPYmplY3QsIHNldEJ1Y2tldCwgaXRlcmF0
ZWRPYmplY3QpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZGYwMWYyYTExODc0MDQxMjYzMmJmMmFk
YWI4YWUwNGYyNmFjOTdkMC4uZTJkYzg4N2IzODQ0MzRlMDUxNjY2YTBiNDI2NTIwMDM4ZjRiNTlm
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCkBAIC05Nyw3ICs5Nyw2IEBACiAgICAgbWFjcm8oZGlzcGxheU5hbWUpIFwKICAgICBt
YWNybyhkb25lKSBcCiAgICAgbWFjcm8oZG90QWxsKSBcCi0gICAgbWFjcm8oZW50cmllcykgXAog
ICAgIG1hY3JvKGVudW1lcmFibGUpIFwKICAgICBtYWNybyhlcmEpIFwKICAgICBtYWNybyhldmFs
KSBcCkBAIC0xMzcsNyArMTM2LDYgQEAKICAgICBtYWNybyhpc1dhdGNocG9pbnQpIFwKICAgICBt
YWNybyhqZXR0aXNvblJlYXNvbikgXAogICAgIG1hY3JvKGpvaW4pIFwKLSAgICBtYWNybyhrZXlz
KSBcCiAgICAgbWFjcm8obGFzdEluZGV4KSBcCiAgICAgbWFjcm8obGVuZ3RoKSBcCiAgICAgbWFj
cm8obGluZSkgXApAQCAtMTk5LDcgKzE5Nyw2IEBACiAgICAgbWFjcm8odW5pY29kZSkgXAogICAg
IG1hY3JvKHVzYWdlKSBcCiAgICAgbWFjcm8odmFsdWUpIFwKLSAgICBtYWNybyh2YWx1ZXMpIFwK
ICAgICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFjcm8od2Vla2RheSkgXAogICAgIG1hY3JvKHdy
aXRhYmxlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApp
bmRleCAzNTM1OTA5MDQ5MWNlMGFmZGNkOGJiYjRmODc1YmIzODE4YzIyZDNlLi5hMGMxOGRhYWQw
ZGExYjZkN2NlNDJmNWQzZDhkYTU5ZmIzODFmYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTIwNyw2ICsyMDcsMTIgQEAgY29uc3QgY2hhciog
aW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIkpTTWFw
SGFzSW50cmluc2ljIjsKICAgICBjYXNlIEpTTWFwU2V0SW50cmluc2ljOgogICAgICAgICByZXR1
cm4gIkpTTWFwU2V0SW50cmluc2ljIjsKKyAgICBjYXNlIEpTTWFwVmFsdWVzSW50cmluc2ljOgor
ICAgICAgICByZXR1cm4gIkpTTWFwVmFsdWVzSW50cmluc2ljIjsKKyAgICBjYXNlIEpTTWFwS2V5
c0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJKU01hcEtleXNJbnRyaW5zaWMiOworICAgIGNh
c2UgSlNNYXBFbnRyaWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gIkpTTWFwRW50cmllc0lu
dHJpbnNpYyI7CiAgICAgY2FzZSBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWM6CiAgICAgICAgIHJl
dHVybiAiSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljIjsKICAgICBjYXNlIEpTTWFwQnVja2V0TmV4
dEludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5k
ZXggNmJmZmY5MDA2M2NlMmQ3ZDhhYzIwNTQyZThhOGQ3ZTE4YzQyYmFlOS4uMGE3YjI2YmRlNzhl
NjI1ZDY2Nzg5OTE4MGMyMTRmMDgyYWQyMWY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmgKQEAgLTExOCw2ICsxMTgsOSBAQCBlbnVtIEludHJpbnNpYyA6IHVp
bnQ4X3QgewogICAgIEpTTWFwR2V0SW50cmluc2ljLAogICAgIEpTTWFwSGFzSW50cmluc2ljLAog
ICAgIEpTTWFwU2V0SW50cmluc2ljLAorICAgIEpTTWFwVmFsdWVzSW50cmluc2ljLAorICAgIEpT
TWFwS2V5c0ludHJpbnNpYywKKyAgICBKU01hcEVudHJpZXNJbnRyaW5zaWMsCiAgICAgSlNNYXBC
dWNrZXRIZWFkSW50cmluc2ljLAogICAgIEpTTWFwQnVja2V0TmV4dEludHJpbnNpYywKICAgICBK
U01hcEJ1Y2tldEtleUludHJpbnNpYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUl0ZXJhdG9yLmgKaW5kZXggNTk5ZTc3NGIwM2RkM2U1YmE2ZDRkN2ZhMzRiYjk4
YTk2ODdlYzYwOS4uYWZkOWViMmU1ZDY2Yjg1M2EwYzc3MDQyYWNhZTQ5OWQwNjczZjE4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKQEAg
LTY0LDcgKzY0LDcgQEAgY2xhc3MgSlNBcnJheUl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGw8Mz4gewogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3du
PiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgY29uc3QgeyByZXR1cm4gQmFzZTo6aW50ZXJu
YWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQogICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgeyByZXR1cm4gQmFzZTo6aW50
ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQogCi0gICAgSXRlcmF0
aW9uS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlcmF0aW9uS2luZD4o
aW50ZXJuYWxGaWVsZChGaWVsZDo6S2luZCkuZ2V0KCkuYXNVSW50MzIoKSk7IH0KKyAgICBJdGVy
YXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVyYXRpb25LaW5k
PihpbnRlcm5hbEZpZWxkKEZpZWxkOjpLaW5kKS5nZXQoKS5hc1VJbnQzMkFzQW55SW50KCkpOyB9
CiAgICAgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0KCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpT
T2JqZWN0Kj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6SXRlcmF0ZWRPYmplY3QpLmdldCgpKTsgfQog
CiAgICAgc3RhdGljIEpTQXJyYXlJdGVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNP
YmplY3QqIGl0ZXJhdGVkT2JqZWN0LCBKU1ZhbHVlIGtpbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDZjZTE4NGFlMTU5ZTQ4
MmYxMWUwMzBmNmQzOWVjODU2MDJiZTk2MGUuLjU0Mjk3MDVmZjkyYTc3ZGNlMTQ5NDM5NmY4OGI1
NTViODIwNDY4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTEwNiw2ICsxMDYsNyBAQAogI2luY2x1ZGUgIkpTTGV4aWNhbEVu
dmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNp
bmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNNaWNyb3Rhc2suaCIKICNpbmNs
dWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVMb2FkZXIuaCIK
QEAgLTU2NCw3ICs1NjUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAg
ICAgICAgfSk7CiAgICAgbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uaW5pdExhdGVyKAogICAg
ICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBp
bml0LnZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1
ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIGFycmF5UHJvdG9G
dW5jVmFsdWVzLCBBcnJheVZhbHVlc0ludHJpbnNpYykpOwogICAgICAgICB9KTsKIAogICAgIG1f
aXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmluaXRMYXRlcigKQEAgLTc2NSw2ICs3NjYsMTAgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9hcnJheUl0ZXJhdG9yUHJv
dG90eXBlLnNldCh2bSwgdGhpcywgYXJyYXlJdGVyYXRvclByb3RvdHlwZSk7CiAgICAgbV9hcnJh
eUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIGFycmF5SXRlcmF0b3JQcm90b3R5cGUpKTsKIAorICAgIGF1dG8q
IG1hcEl0ZXJhdG9yUHJvdG90eXBlID0gTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
dGhpcywgTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9p
dGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGUuc2V0
KHZtLCB0aGlzLCBtYXBJdGVyYXRvclByb3RvdHlwZSk7CisgICAgbV9tYXBJdGVyYXRvclN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIEpTTWFwSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbWFwSXRlcmF0b3JQcm90b3R5cGUpKTsKKwogICAgIEpTRnVuY3Rpb24qIGRlZmF1bHRQcm9t
aXNlVGhlbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgcHJvbWlzZVByb3RvdHlwZVRoZW5Db2Rl
R2VuZXJhdG9yKHZtKSwgdGhpcyk7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZGVmYXVsdFByb21pc2VUaGVuKV0uc2V0KHZt
LCB0aGlzLCBkZWZhdWx0UHJvbWlzZVRoZW4pOwogCkBAIC0xMDA2LDkgKzEwMTEsNiBAQCBjYXBp
dGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVy
ZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIEpTT2JqZWN0KiBhc3luY0Zyb21TeW5jSXRlcmF0b3JQ
cm90b3R5cGUgPSBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhp
cywgQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBqc0Nhc3Q8SlNPYmplY3QqPihs
aW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OkFzeW5jRnJvbVN5bmNJdGVyYXRvcikp
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXN5bmNGcm9tU3lu
Y0l0ZXJhdG9yUHJvdG90eXBlKTsKIAotICAgIEpTT2JqZWN0KiBtYXBJdGVyYXRvclByb3RvdHlw
ZSA9IE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIE1hcEl0ZXJhdG9yUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0
KCkpKTsKLSAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29u
c3RhbnQ6Ok1hcEl0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBtYXBJdGVyYXRvclByb3RvdHlwZSk7Ci0KICAgICBKU09iamVjdCogcmVnRXhwU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUgPSBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3Jl
YXRlKHZtLCB0aGlzLCBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CiAgICAganNDYXN0PEpT
T2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpSZWdFeHBTdHJpbmdJ
dGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVn
RXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUpOwogCkBAIC0xNzc1LDYgKzE3NzcsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0
b3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXJyYXlJdGVy
YXRvclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tYXBJdGVy
YXRvclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0Z1
bmN0aW9uUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5j
R2VuZXJhdG9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Fz
eW5jSXRlcmF0b3JQcm90b3R5cGUpOwpAQCAtMTgyNiw2ICsxODI5LDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5SXRlcmF0b3JTdHJ1Y3R1
cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWFwSXRlcmF0b3JTdHJ1Y3R1
cmUpOwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRj
aGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0
dXJlLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggMWU3NmMwYjM0NmU2N2RkYTM1YzRlOTU1YjUxMmY2ZjU5MzE0
NDIwNC4uYjBmYTc4ZTE1YjIwOGEzYmY1NTdmNTBlMDZmMzZkMThiOTA2ODg2NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMDAsNiAr
MTAwLDcgQEAgY2xhc3MgSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOwogY2xhc3MgSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZTsKIGNsYXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlOwogY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTWFwSXRlcmF0b3JQcm90b3R5cGU7CiBjbGFz
cyBNYXBQcm90b3R5cGU7CiBjbGFzcyBNaWNyb3Rhc2s7CiBjbGFzcyBNb2R1bGVMb2FkZXI7CkBA
IC0zMjMsNiArMzI0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvclByb3RvdHlwZT4g
bV9nZW5lcmF0b3JQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5jR2VuZXJhdG9yUHJv
dG90eXBlPiBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxBcnJh
eUl0ZXJhdG9yUHJvdG90eXBlPiBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGU7CisgICAgV3JpdGVC
YXJyaWVyPE1hcEl0ZXJhdG9yUHJvdG90eXBlPiBtX21hcEl0ZXJhdG9yUHJvdG90eXBlOwogCiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGVidWdnZXJTY29w
ZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV93aXRoU2NvcGVTdHJ1Y3R1cmU7CkBAIC0zNzgsNiArMzgwLDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9tYXBJdGVyYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRT
dHJ1Y3R1cmU7CkBAIC02NDksNiArNjUyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBn
ZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5n
ZXQoKTsgfQogICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KICAg
ICBBcnJheUl0ZXJhdG9yUHJvdG90eXBlKiBhcnJheUl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgTWFwSXRlcmF0
b3JQcm90b3R5cGUqIG1hcEl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBJ
dGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEpTT2JqZWN0KiBtYXBQcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KICAgICAvLyBX
b3JrYXJvdW5kIGZvciB0aGUgbmFtZSBjb25mbGljdCBiZXR3ZWVuIEpTQ2VsbDo6c2V0UHJvdG90
eXBlLgogICAgIEpTT2JqZWN0KiBqc1NldFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0
U3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsgfQpAQCAtNzU3LDYgKzc2MSw3IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0
cnVjdHVyZSogYXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXN5bmNHZW5lcmF0b3JG
dW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXJyYXlJdGVyYXRvclN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfSAgICAK
KyAgICBTdHJ1Y3R1cmUqIG1hcEl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9t
YXBJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIGl0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAg
ICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCmluZGV4IGY4MGIzNDAxMGQzNWIy
NmZkMzk2ZmU4ZGQ1OWQwZDQ3NDRlN2IzYmEuLjUxNTc5NmEwYzliMjZmNTA2NjRhZDdmMzZhOTFi
M2JhNTU1YjUyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TWFwSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFw
SXRlcmF0b3IuY3BwCkBAIC0zMSwyMiArMzEsMzYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNv
bnN0IENsYXNzSW5mbyBKU01hcEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJNYXAgSXRlcmF0b3IiLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTWFwSXRlcmF0
b3IpIH07Citjb25zdCBDbGFzc0luZm8gSlNNYXBJdGVyYXRvcjo6c19pbmZvID0geyAiTWFwSXRl
cmF0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTTWFwSXRlcmF0b3IpIH07CiAKLXZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU01hcCogaXRlcmF0ZWRPYmplY3QpCitKU01hcEl0ZXJhdG9yKiBKU01hcEl0
ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQoreworICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNNYXBJdGVyYXRvcj4odm0uaGVhcCkpIEpTTWFwSXRlcmF0b3Iodm0sIHN0cnVj
dHVyZSk7CisgICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gaXRl
cmF0b3I7Cit9CisKK3ZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U01hcCogaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKK3sKKyAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6TWFwQnVja2V0KS5z
ZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0LT5oZWFkKCkpOworICAgIGludGVybmFsRmllbGQo
RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsKKyAg
ICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpLaW5kKS5zZXQodm0sIHRoaXMsIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KGtpbmQpKSk7Cit9CisKK3ZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBt
X21hcC5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBzZXRJdGVyYXRvcih2bSwg
bV9tYXAtPmhlYWQoKSk7CisgICAgYXV0byB2YWx1ZXMgPSBpbml0aWFsVmFsdWVzKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUoKTsgKytpbmRleCkK
KyAgICAgICAgQmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0KHZtLCB0aGlzLCB2YWx1ZXNb
aW5kZXhdKTsKIH0KIAogdm9pZCBKU01hcEl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNNYXBJdGVyYXRvciogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CisgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tYXAp
OwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faXRlcik7CiB9CiAKIEpTVmFsdWUg
SlNNYXBJdGVyYXRvcjo6Y3JlYXRlUGFpcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTWFwSXRlcmF0b3IuaAppbmRleCA2ZTFmYTBjZmM2ODVlNGJhMzVjZWEzOWZmN2UyZWU3
ZmFhNmQ5Yjk4Li5lMjE4YjY1YTQ5MjVhYjYwYTk2M2FkZTQzM2E0OTI4NDk1MWRjNmQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5oCkBAIC0zMSwx
NiArMzEsMzIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLS8vIE5vdywgaXQgaXMgb25seSB1c2Vk
IGZvciBzZXJpYWxpemF0aW9uLgotLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbCB0byBpbXBsZW1lbnQgcmVhbCBKU01hcEl0ZXJhdG9yIHVzZWQgaW4gSlND
LgotLy8gQ3VycmVudGx5LCBKU0MgaXMgdXNpbmcgZmluYWwgb2JqZWN0cyB0byBpbXBsZW1lbnQg
TWFwSXRlcmF0b3IuCi1jbGFzcyBKU01hcEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
Ci0gICAgdHlwZWRlZiBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5VmFsdWU+IEhh
c2hNYXBCdWNrZXRUeXBlOworY2xhc3MgSlNNYXBJdGVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsPDM+IHsKIHB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlND
ZWxsOworICAgIHVzaW5nIEhhc2hNYXBCdWNrZXRUeXBlID0gSGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleVZhbHVlPjsKKyAgICB1c2luZyBCYXNlID0gSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbDwzPjsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKKyAgICBlbnVtIGNsYXNz
IEZpZWxkIDogdWludDhfdCB7CisgICAgICAgIE1hcEJ1Y2tldCA9IDAsCisgICAgICAgIEl0ZXJh
dGVkT2JqZWN0LAorICAgICAgICBLaW5kLAorICAgIH07CisgICAgc3RhdGljX2Fzc2VydChudW1i
ZXJPZkludGVybmFsRmllbGRzID09IDMpOworCisgICAgc3RhdGljIHN0ZDo6YXJyYXk8SlNWYWx1
ZSwgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz4gaW5pdGlhbFZhbHVlcygpCisgICAgeworICAgICAg
ICByZXR1cm4geyB7CisgICAgICAgICAgICBqc051bGwoKSwKKyAgICAgICAgICAgIGpzTnVsbCgp
LAorICAgICAgICAgICAganNOdW1iZXIoMCksCisgICAgICAgIH0gfTsKKyAgICB9CisKKyAgICBj
b25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmllbGQgZmllbGQpIGNv
bnN0IHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZp
ZWxkKSk7IH0KKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmllbGQg
ZmllbGQpIHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGZpZWxkKSk7IH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2VzcyBtb2RlPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQog
ICAgIHsKQEAgLTQ5LDUwICs2NSw1OCBAQCBjbGFzcyBKU01hcEl0ZXJhdG9yIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKEpTTWFwSXRlcmF0b3JUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiAgICAgfQogCiAgICAgc3RhdGljIEpTTWFwSXRlcmF0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU01hcCogaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2lu
ZCkKICAgICB7Ci0gICAgICAgIEpTTWFwSXRlcmF0b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNNYXBJdGVyYXRvcj4odm0uaGVhcCkpIEpTTWFwSXRlcmF0b3Iodm0s
IHN0cnVjdHVyZSwgaXRlcmF0ZWRPYmplY3QsIGtpbmQpOwotICAgICAgICBpbnN0YW5jZS0+Zmlu
aXNoQ3JlYXRpb24odm0sIGl0ZXJhdGVkT2JqZWN0KTsKKyAgICAgICAgSlNNYXBJdGVyYXRvciog
aW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01hcEl0ZXJhdG9yPih2bS5o
ZWFwKSkgSlNNYXBJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgaW5zdGFuY2UtPmZp
bmlzaENyZWF0aW9uKHZtLCBpdGVyYXRlZE9iamVjdCwga2luZCk7CiAgICAgICAgIHJldHVybiBp
bnN0YW5jZTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIEhhc2hNYXBCdWNrZXRUeXBlKiBh
ZHZhbmNlSXRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKU01h
cEl0ZXJhdG9yKiBjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYsIFN0cnVjdHVyZSopOworCisg
ICAgQUxXQVlTX0lOTElORSBIYXNoTWFwQnVja2V0VHlwZSogYWR2YW5jZUl0ZXIoVk0mIHZtKQog
ICAgIHsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIHByZXYgPSBtX2l0ZXIuZ2V0KCk7Ci0g
ICAgICAgIGlmICghcHJldikKKyAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIHByZXYgPSBpdGVy
YXRvcigpOworICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogc2VudGluZWwgPSBqc0Nhc3Q8SGFz
aE1hcEJ1Y2tldFR5cGUqPih2bS5zZW50aW5lbE1hcEJ1Y2tldCgpKTsKKyAgICAgICAgaWYgKHBy
ZXYgPT0gc2VudGluZWwpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgVk0m
IHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1
Y2tldCA9IG1faXRlci0+bmV4dCgpOworICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0
ID0gcHJldi0+bmV4dCgpOwogICAgICAgICB3aGlsZSAoYnVja2V0ICYmIGJ1Y2tldC0+ZGVsZXRl
ZCgpKQogICAgICAgICAgICAgYnVja2V0ID0gYnVja2V0LT5uZXh0KCk7CiAgICAgICAgIGlmICgh
YnVja2V0KSB7Ci0gICAgICAgICAgICBzZXRJdGVyYXRvcih2bSwgbnVsbHB0cik7CisgICAgICAg
ICAgICBzZXRJdGVyYXRvcih2bSwgc2VudGluZWwpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KLSAgICAgICAgc2V0SXRlcmF0b3Iodm0sIGJ1Y2tldCk7IC8vIFdlIGtl
ZXAgbV9pdGVyIG9uIHRoZSBsYXN0IHZhbHVlIHNpbmNlIHRoZSBmaXJzdCB0aGluZyB3ZSBkbyBp
biB0aGlzIGZ1bmN0aW9uIGlzIGNhbGwgbmV4dCgpLgorICAgICAgICBzZXRJdGVyYXRvcih2bSwg
YnVja2V0KTsgLy8gV2Uga2VlcCBpdGVyYXRvciBvbiB0aGUgbGFzdCB2YWx1ZSBzaW5jZSB0aGUg
Zmlyc3QgdGhpbmcgd2UgZG8gaW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsIG5leHQoKS4KICAgICAg
ICAgcmV0dXJuIGJ1Y2tldDsKICAgICB9CisKICAgICBib29sIG5leHQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSYgdmFsdWUpCiAgICAgewotICAgICAgICBIYXNoTWFwQnVj
a2V0VHlwZSogYnVja2V0ID0gYWR2YW5jZUl0ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgSGFz
aE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IGFkdmFuY2VJdGVyKGdldFZNKGdsb2JhbE9iamVjdCkp
OwogICAgICAgICBpZiAoIWJ1Y2tldCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICBpZiAobV9raW5kID09IEl0ZXJhdGlvbktpbmQ6OlZhbHVlcykKKyAgICAgICAgc3dpdGNo
IChraW5kKCkpIHsKKyAgICAgICAgY2FzZSBJdGVyYXRpb25LaW5kOjpWYWx1ZXM6CiAgICAgICAg
ICAgICB2YWx1ZSA9IGJ1Y2tldC0+dmFsdWUoKTsKLSAgICAgICAgZWxzZSBpZiAobV9raW5kID09
IEl0ZXJhdGlvbktpbmQ6OktleXMpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJ
dGVyYXRpb25LaW5kOjpLZXlzOgogICAgICAgICAgICAgdmFsdWUgPSBidWNrZXQtPmtleSgpOwot
ICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJdGVyYXRpb25L
aW5kOjpFbnRyaWVzOgogICAgICAgICAgICAgdmFsdWUgPSBjcmVhdGVQYWlyKGdsb2JhbE9iamVj
dCwgYnVja2V0LT5rZXkoKSwgYnVja2V0LT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGJvb2wgbmV4dEtl
eVZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUmIGtleSwgSlNWYWx1
ZSYgdmFsdWUpCiAgICAgewotICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0ID0gYWR2
YW5jZUl0ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tl
dCA9IGFkdmFuY2VJdGVyKGdldFZNKGdsb2JhbE9iamVjdCkpOwogICAgICAgICBpZiAoIWJ1Y2tl
dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTAxLDI3ICsxMjUsMjQgQEAgY2xh
c3MgSlNNYXBJdGVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBt
X2tpbmQ7IH0KLSAgICBKU1ZhbHVlIGl0ZXJhdGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX21h
cC5nZXQoKTsgfQorICAgIEl0ZXJhdGlvbktpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEl0ZXJhdGlvbktpbmQ+KGludGVybmFsRmllbGQoRmllbGQ6OktpbmQpLmdldCgpLmFz
VUludDMyQXNBbnlJbnQoKSk7IH0KKyAgICBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QoKSBjb25z
dCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpJdGVyYXRl
ZE9iamVjdCkuZ2V0KCkpOyB9CisgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGl0ZXJhdG9yKCkgY29u
c3QgeyByZXR1cm4ganNDYXN0PEhhc2hNYXBCdWNrZXRUeXBlKj4oaW50ZXJuYWxGaWVsZChGaWVs
ZDo6TWFwQnVja2V0KS5nZXQoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBKU01hcEl0ZXJhdG9yKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTWFwKiwgSXRlcmF0aW9uS2luZCBraW5kKQor
ICAgIEpTTWFwSXRlcmF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCi0gICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgeyB9CiAK
ICAgICB2b2lkIHNldEl0ZXJhdG9yKFZNJiB2bSwgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCkK
ICAgICB7Ci0gICAgICAgIG1faXRlci5zZXRNYXlCZU51bGwodm0sIHRoaXMsIGJ1Y2tldCk7Cisg
ICAgICAgIGludGVybmFsRmllbGQoRmllbGQ6Ok1hcEJ1Y2tldCkuc2V0KHZtLCB0aGlzLCBidWNr
ZXQpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBKU01hcCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBKU01hcCosIEl0ZXJhdGlvbktpbmQpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKICAgICBKU1ZhbHVlIGNyZWF0ZVBhaXIoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1Zh
bHVlKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7Ci0KLSAgICBXcml0ZUJhcnJpZXI8SlNNYXA+IG1fbWFwOwotICAgIFdyaXRlQmFycmllcjxI
YXNoTWFwQnVja2V0VHlwZT4gbV9pdGVyOwotICAgIEl0ZXJhdGlvbktpbmQgbV9raW5kOwogfTsK
IFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU01hcEl0ZXJhdG9yKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXggYjAyYjM0N2Q2
YTUwMDQ1NTNiNTkyZWM2NGI0YzE0NGUzMDhkZDBjZi4uMTdmN2E1YzcxNjA2ZTY1YjZiMDYyMmYw
NGI5MDY0ZGVlN2I5ZjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUu
Y3BwCkBAIC0xMDAsNiArMTAwLDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShKU0dlbmVyYXRvclR5cGUpCiAgICAgQ0FT
RShKU0FzeW5jR2VuZXJhdG9yVHlwZSkKICAgICBDQVNFKEpTQXJyYXlJdGVyYXRvclR5cGUpCisg
ICAgQ0FTRShKU01hcEl0ZXJhdG9yVHlwZSkKICAgICBDQVNFKEpTU3RyaW5nSXRlcmF0b3JUeXBl
KQogICAgIENBU0UoSlNQcm9taXNlVHlwZSkKICAgICBDQVNFKEpTTWFwVHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggNDgzNmY5MWIwYmI0YjM2NGVmN2UxNGUz
YzNlOWIxMmEzZjYxMDFmMC4uMWIxNjY3YzA3ZWU3YzYxZWIyYjQyNDhkMmYzNDIzZjgzZjE4MWZi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTExMiw2ICsxMTIs
NyBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIEpTR2VuZXJhdG9yVHlwZSwKICAgICBK
U0FzeW5jR2VuZXJhdG9yVHlwZSwKICAgICBKU0FycmF5SXRlcmF0b3JUeXBlLAorICAgIEpTTWFw
SXRlcmF0b3JUeXBlLAogICAgIEpTU3RyaW5nSXRlcmF0b3JUeXBlLAogICAgIEpTUHJvbWlzZVR5
cGUsCiAgICAgSlNNYXBUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAppbmRleCAyOWExMTY3MGIy
NWMxYjBlM2EzYzZmZDc4OWMwYjZjMTc4MGQwNmY4Li5mMmJmYjczNGQ2MGJiZmY4Zjk4OGVhNmZl
MTk1OWQ4OGEwMzQyYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcApAQCAtMzM1LDcgKzMzNSw3
IEBAIHZvaWQgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKCJldmVyeSIsIHR5cGVkQXJyYXlQcm90b3R5cGVFdmVyeUNvZGVHZW5l
cmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImZpbHRlciIs
IHR5cGVkQXJyYXlQcm90b3R5cGVGaWx0ZXJDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJzb3J0IiwgdHlwZWRBcnJheVByb3RvdHlwZVNvcnRD
b2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7Ci0gICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIHR5cGVkQXJyYXlQcm90b1ZpZXdGdW5j
RW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIDAsIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJ
TlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgdHlwZWRBcnJheVByb3RvVmlld0Z1bmNFbnRy
aWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
MCwgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKCJpbmNsdWRlcyIsIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5j
bHVkZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCAxKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImZpbGwi
LCB0eXBlZEFycmF5UHJvdG90eXBlRmlsbENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImZpbmQiLCB0eXBlZEFycmF5UHJvdG90eXBlRmluZENv
ZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAg
IEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5mb3JFYWNoLCB0eXBlZEFycmF5UHJvdG90eXBlRm9yRWFjaENvZGVHZW5lcmF0b3IsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiaW5kZXhPZiIsIHR5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jSW5kZXhPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmpvaW4sIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9p
biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEp
OwotICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0tleXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwLCBUeXBlZEFy
cmF5S2V5c0ludHJpbnNpYyk7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJs
aWNOYW1lKCksIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jS2V5cywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIFR5cGVkQXJyYXlLZXlzSW50cmlu
c2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigibGFzdElu
ZGV4T2YiLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElW
RV9JTlRSSU5TSUNfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSwgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYyk7CiAgICAgSlNDX0JVSUxUSU5f
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJtYXAiLCB0eXBlZEFycmF5UHJvdG90eXBlTWFw
Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOwpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgSlNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAg
ICAgR2V0dGVyU2V0dGVyKiB0b1N0cmluZ1RhZ0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgdG9TdHJpbmdUYWdGdW5jdGlvbiwgbnVsbHB0cik7CiAgICAg
cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwgdG9TdHJpbmdUYWdBY2Nlc3NvciwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKIAotICAgIEpTRnVuY3Rpb24qIHZhbHVlc0Z1bmN0aW9u
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFt
ZXMtPnZhbHVlcy5zdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNWYWx1ZXMsIFR5cGVk
QXJyYXlWYWx1ZXNJbnRyaW5zaWMpOworICAgIEpTRnVuY3Rpb24qIHZhbHVlc0Z1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgdHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNWYWx1ZXMsIFR5cGVkQXJyYXlWYWx1ZXNJbnRyaW5zaWMpOwogCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVzRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlc0Z1
bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApp
bmRleCAzYmFlODdlYjU0NjlkZDY5YjQwYmY1ZDEzYmE0N2Q5MTA1M2QxNjYyLi5kMDJmNWY1YTJi
MjgxZWY2N2YyNzdiZmM2NzBhOTA1MDg5YjZiMzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9va3Vw
LmgiCiAKICNpbmNsdWRlICJNYXBQcm90b3R5cGUubHV0LmgiCkBAIC00Myw4ICs0NCw2IEBAIGNv
bnN0IENsYXNzSW5mbyBNYXBQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1hcCIsICZCYXNlOjpzX2lu
Zm8sICZtYXBQcm90b3R5cGVUYWJsCiAvKiBTb3VyY2UgZm9yIE1hcFByb3RvdHlwZS5sdXQuaAog
QGJlZ2luIG1hcFByb3RvdHlwZVRhYmxlCiAgIGZvckVhY2ggICBKU0J1aWx0aW4gIERvbnRFbnVt
fEZ1bmN0aW9uIDAKLSAgdmFsdWVzICAgIEpTQnVpbHRpbiAgRG9udEVudW18RnVuY3Rpb24gMAot
ICBrZXlzICAgICAgSlNCdWlsdGluICBEb250RW51bXxGdW5jdGlvbiAwCiBAZW5kCiAqLwogCkBA
IC01Myw2ICs1Miw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFBy
b3RvRnVuY0RlbGV0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNHZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVu
Y0hhcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNWYWx1
ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0tleXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0VudHJp
ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOwogICAgIApAQCAtNjYsMTEgKzY4LDEzIEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05B
VElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmdldCwgbWFwUHJvdG9GdW5jR2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNNYXBHZXRJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJ
VkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5oYXMsIG1hcFByb3RvRnVuY0hhcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDEsIEpTTWFwSGFzSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZF
X0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
c2V0LCBtYXBQcm90b0Z1bmNTZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAyLCBKU01hcFNldEludHJpbnNpYyk7CisgICAgSlNDX05BVElWRV9J
TlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCksIG1hcFByb3RvRnVuY0tleXMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwLCBKU01hcEtleXNJ
bnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1l
KCksIG1hcFByb3RvRnVuY1ZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDAsIEpTTWFwVmFsdWVzSW50cmluc2ljKTsKIAogICAgIEpTQ19O
QVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpLCBtYXBQcm90b0Z1bmNHZXQsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU01h
cEdldEludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldFByaXZhdGVO
YW1lKCksIG1hcFByb3RvRnVuY1NldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDIsIEpTTWFwU2V0SW50cmluc2ljKTsKIAotICAgIEpTRnVuY3Rp
b24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIG1hcFByb3RvdHlwZUVudHJpZXND
b2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiBlbnRyaWVz
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIG1hcFByb3Rv
RnVuY0VudHJpZXMsIEpTTWFwRW50cmllc0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQ
dWJsaWNOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIk1hcCJfcyksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CkBAIC0xNDAsNiArMTQ0LDMyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUp
OwogfQogCitpbmxpbmUgSlNWYWx1ZSBjcmVhdGVNYXBJdGVyYXRvck9iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZCBr
aW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOworICAgIEpTTWFwKiBtYXAgPSBnZXRNYXAoZ2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUpOworICAgIGlmICghbWFwKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICByZXR1cm4gSlNNYXBJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPm1h
cEl0ZXJhdG9yU3RydWN0dXJlKCksIG1hcCwga2luZCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y3JlYXRlTWFwSXRlcmF0b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIEl0ZXJhdGlv
bktpbmQ6OlZhbHVlcykpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFBy
b3RvRnVuY0tleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVNYXBJdGVyYXRvck9i
amVjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZDo6S2V5cykpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0VudHJpZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVNYXBJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZDo6RW50cmllcykpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgSlNNYXAqIG1hcCA9IGdldE1hcChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCmluZGV4IDY5ZTUyZWE2NjdjMjU0MjliZTA5NjVmYjQyMWQ5Yjg4Yzk3MDI2
ZGUuLmIwMjAwNDkxYTg5ZTg3MWU4ODZkZmYwZDUwNGZjYzllYzQyYmZkNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTE1NDksMjAgKzE1NDksNiBAQCBEWU5BTUlDX1NQ
QUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3Bh
Y2UsIGRlc3RydWN0aQogCiAjdW5kZWYgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVJfU0xPVwogCi1TdHJ1Y3R1cmUqIFZNOjpzZXRJdGVyYXRvclN0cnVjdHVyZVNsb3coKQotewot
ICAgIEFTU0VSVCghbV9zZXRJdGVyYXRvclN0cnVjdHVyZSk7Ci0gICAgbV9zZXRJdGVyYXRvclN0
cnVjdHVyZS5zZXQoKnRoaXMsIEpTU2V0SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKLSAgICByZXR1cm4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsK
LX0KLQotU3RydWN0dXJlKiBWTTo6bWFwSXRlcmF0b3JTdHJ1Y3R1cmVTbG93KCkKLXsKLSAgICBB
U1NFUlQoIW1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUpOwotICAgIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU01hcEl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7Ci0gICAgcmV0dXJuIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7Ci19Ci0K
IEpTQ2VsbCogVk06OnNlbnRpbmVsU2V0QnVja2V0U2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3Nl
bnRpbmVsU2V0QnVja2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDllOThk
NTNjNTNhNGY3ZmZkYTRmMDZlZGFmZDc3OTM1Mjk0NDliMzguLmYwYTQ5MzFlODIxNjk2MmI1ZmU1
MDQ3NmQ2YmRkNDYyNzdiMDI5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAt
Njk4LDkgKzY5OCw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZN
PiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gYmlnSW50U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4ZWN1dGFibGVUb0Nv
ZGVCbG9ja0VkZ2VTdHJ1Y3R1cmU7CiAKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBtX3NldEl0ZXJh
dG9yU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1fbWFwSXRlcmF0b3JTdHJ1Y3R1
cmU7Ci0KICAgICBTdHJvbmc8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yPiBtX2VtcHR5UHJvcGVy
dHlOYW1lRW51bWVyYXRvcjsKIAogICAgIFN0cm9uZzxKU0NlbGw+IG1fc2VudGluZWxTZXRCdWNr
ZXQ7CkBAIC03MzMsMjAgKzczMCw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAKICAgICBTdHJv
bmc8SlNCaWdJbnQ+IGJpZ0ludENvbnN0YW50T25lOwogCi0gICAgU3RydWN0dXJlKiBzZXRJdGVy
YXRvclN0cnVjdHVyZSgpCi0gICAgewotICAgICAgICBpZiAoTElLRUxZKG1fc2V0SXRlcmF0b3JT
dHJ1Y3R1cmUpKQotICAgICAgICAgICAgcmV0dXJuIG1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0
KCk7Ci0gICAgICAgIHJldHVybiBzZXRJdGVyYXRvclN0cnVjdHVyZVNsb3coKTsKLSAgICB9Ci0K
LSAgICBTdHJ1Y3R1cmUqIG1hcEl0ZXJhdG9yU3RydWN0dXJlKCkKLSAgICB7Ci0gICAgICAgIGlm
IChMSUtFTFkobV9tYXBJdGVyYXRvclN0cnVjdHVyZSkpCi0gICAgICAgICAgICByZXR1cm4gbV9t
YXBJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAgcmV0dXJuIG1hcEl0ZXJhdG9yU3Ry
dWN0dXJlU2xvdygpOwotICAgIH0KLQogICAgIEpTQ2VsbCogc2VudGluZWxTZXRCdWNrZXQoKQog
ICAgIHsKICAgICAgICAgaWYgKExJS0VMWShtX3NlbnRpbmVsU2V0QnVja2V0KSkKQEAgLTExMjcs
OCArMTExMCw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwg
cHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgc3RhdGljIFZNKiYgc2hhcmVk
SW5zdGFuY2VJbnRlcm5hbCgpOwogICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKIAotICAg
IEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSogc2V0SXRlcmF0b3JTdHJ1Y3R1cmVTbG93KCk7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKiBtYXBJdGVyYXRvclN0cnVjdHVyZVNs
b3coKTsKICAgICBKU0NlbGwqIHNlbnRpbmVsU2V0QnVja2V0U2xvdygpOwogICAgIEpTQ2VsbCog
c2VudGluZWxNYXBCdWNrZXRTbG93KCk7CiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBl
bXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3JTbG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA4NGMxNjRkYTNl
MjBhNWYyNzNjODExZjc4YTM4NzdiYjcyNjM5YzBjLi41Yzg4NDQzN2Y1MTk3ODE3NjAxZGZkNTNi
NmVkZjEzN2Y4MmQ5ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE2OTksNyArMTY5OSw3IEBAIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAg
ICAgICAgICAgICAgICAgSlNNYXAqIGluTWFwID0ganNDYXN0PEpTTWFwKj4oaW5WYWx1ZSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFzdGFydE1hcChpbk1hcCkpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0gSlNNYXBJ
dGVyYXRvcjo6Y3JlYXRlKHZtLCB2bS5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCBpbk1hcCwgSXRl
cmF0aW9uS2luZDo6RW50cmllcyk7CisgICAgICAgICAgICAgICAgSlNNYXBJdGVyYXRvciogaXRl
cmF0b3IgPSBKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIG1fbGV4aWNhbEdsb2JhbE9iamVjdC0+
bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaW5NYXAsIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXMpOwog
ICAgICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhpbk1h
cCk7CiAgICAgICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93
KGl0ZXJhdG9yKTsKICAgICAgICAgICAgICAgICBtYXBJdGVyYXRvclN0YWNrLmFwcGVuZChpdGVy
YXRvcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395501</attachid>
            <date>2020-04-05 05:13:15 -0700</date>
            <delta_ts>2020-04-05 05:27:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210023-20200405051314.patch</filename>
            <type>text/plain</type>
            <size>79280</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjVhMmMwZWU3NjJmOTE1MzY2ZTFiMGEwYjI4OGM2NDMxOTJmZjNkLi4yZWVmYTZlMmFjNTk0ZDlj
N2RjYzFhYmI1ZjBhNDNlY2Y4ZjZiODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMjAtMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgSlNNYXBJdGVyYXRvciB3aXRoIEpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDAyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVpbXBsZW1lbnQgSlNNYXBJdGVyYXRvciB3aXRoIEpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGwuCisgICAgICAgIFRoaXMgbWFrZXMgY3VycmVudCBKU0ZpbmFs
T2JqZWN0LWJhc2VkIE1hcEl0ZXJhdG9yIHNpbXBsZSBhbmQgc21hbGwuCisgICAgICAgIEFuZCB3
ZSBhZGQgbmVjZXNzYXJ5IHN1cHBvcnQgb2YgSlNNYXBJdGVyYXRvciBpbiBERkcgLyBGVEwgdG8g
bWFrZQorICAgICAgICBKU01hcEl0ZXJhdG9yIGFsbG9jYXRpb24gZWZmaWNpZW50IGFuZCBvYmpl
Y3QtYWxsb2NhdGlvbi1zaW5raW5nIGF3YXJlLgorCisgICAgICAgIFdlIHdpbGwgZG8gdGhlIHNh
bWUgdGhpbmcgZm9yIEpTU2V0SXRlcmF0b3IgbmV4dC4KKworICAgICAgICAqIGJ1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90eXBlLmpz
OgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5tYXBJdGVyYXRvck5leHQpOgorICAgICAgICAobmV4
dCk6CisgICAgICAgICogYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFs
UHJpdmF0ZS5NYXBJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICh2YWx1ZXMpOiBEZWxldGVk
LgorICAgICAgICAoa2V5cyk6IERlbGV0ZWQuCisgICAgICAgIChlbnRyaWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzTWFwSXRlcmF0b3IpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjptYXBJdGVyYXRvckludGVy
bmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1p
dF9pbnRyaW5zaWNfZ2V0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRNYXBJdGVyYXRvckludGVy
bmFsRmllbGQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGlu
Z1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b21OZXdNYXBJdGVyYXRvcik6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
Ojppc1BoYW50b21BbGxvY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6
CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4
ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdNYXBJdGVyYXRvcik6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZU5ld01hcEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU1hdGVyaWFsaXplTmV3SW50ZXJuYWxGaWVsZE9iamVjdCk6CisgICAgICAgICogZnRs
L0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvblBvcHVsYXRl
T2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXplT2Jq
ZWN0SW5PU1IpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFBy
b3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpjbG9uZU1hcEl0ZXJhdG9yT2JqZWN0KToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmll
cyk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAgKEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAg
ICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVy
YXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclByb3RvdHlwZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclN0cnVjdHVyZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNNYXBJdGVyYXRvcjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMpOgorICAgICAgICAoSlNDOjpK
U01hcEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTWFwSXRlcmF0
b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5h
bCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlTWFwSXRlcmF0b3JPYmplY3QpOgorICAgICAgICAoSlNDOjptYXBQ
cm90b0Z1bmNWYWx1ZXMpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNLZXlzKToKKyAgICAg
ICAgKEpTQzo6bWFwUHJvdG9GdW5jRW50cmllcyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgIChKU0M6OlZNOjpzZXRJdGVyYXRvclN0cnVjdHVyZVNsb3cpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpWTTo6bWFwSXRlcmF0b3JTdHJ1Y3R1cmVTbG93KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpzZXRJdGVyYXRvclN0cnVj
dHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjptYXBJdGVyYXRvclN0cnVjdHVyZSk6
IERlbGV0ZWQuCisKIDIwMjAtMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBKU0FycmF5SXRlcmF0b3IncyBzaXplIGlzIHdyb25nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMTk3MGM5
ZjQzMDYwODcyMWEyYTMyNTZiMjZlMmU0NmIzYzgzYTZkMi4uNTM1YzdlMDI2YzgwZjdmNDkxZWRh
MTVlNDk5ZDU3ZDdhODZiNTU5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaApAQCAtODUsNiArODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBt
YWNybyhyZXBlYXRDaGFyYWN0ZXIpIFwKICAgICBtYWNybyhzdGFyRGVmYXVsdCkgXAogICAgIG1h
Y3JvKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbikgXAorICAgIG1hY3JvKGtleXMpIFwKICAgICBt
YWNybyhnZXQpIFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaGlmdCkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90eXBl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90eXBl
LmpzCmluZGV4IGZmZmNlZThhMzRjNjA4OTQzZTEwZmY5MDk0YzBjOWIyYTMxNzA3YTEuLjY5NDAz
MWI4YTBkMGU2NDZkYTNmMjYxNGEwYjExMzc5OTIwOWMzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBJdGVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwSXRlcmF0b3JQcm90b3R5cGUuanMKQEAgLTMx
LDcgKzMxLDcgQEAgZnVuY3Rpb24gbWFwSXRlcmF0b3JOZXh0KGJ1Y2tldCwga2luZCkKICAgICB2
YXIgdmFsdWU7CiAKICAgICBidWNrZXQgPSBAbWFwQnVja2V0TmV4dChidWNrZXQpOwotICAgIEBw
dXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAibWFwQnVja2V0IiwgYnVja2V0KTsKKyAgICBAcHV0
TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBtYXBJdGVyYXRvckZpZWxkTWFwQnVja2V0
LCBidWNrZXQpOwogICAgIHZhciBkb25lID0gYnVja2V0ID09PSBAc2VudGluZWxNYXBCdWNrZXQ7
CiAgICAgaWYgKCFkb25lKSB7CiAgICAgICAgIHZhciBrZXkgPSBAbWFwQnVja2V0S2V5KGJ1Y2tl
dCk7CkBAIC00OCwxMSArNDgsMTAgQEAgZnVuY3Rpb24gbmV4dCgpCiB7CiAgICAgInVzZSBzdHJp
Y3QiOwogCi0gICAgaWYgKEBpc1VuZGVmaW5lZE9yTnVsbCh0aGlzKSkKLSAgICAgICAgQHRocm93
VHlwZUVycm9yKCIlTWFwSXRlcmF0b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMgdGhhdCB8dGhp
c3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgaWYgKCFAaXNNYXBJdGVyYXRvcih0
aGlzKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCIlTWFwSXRlcmF0b3JQcm90b3R5cGUlLm5l
eHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgYW4gTWFwIEl0ZXJhdG9yIGluc3RhbmNlIik7CiAK
LSAgICB2YXIgYnVja2V0ID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJtYXBCdWNrZXQi
KTsKLSAgICBpZiAoYnVja2V0ID09PSBAdW5kZWZpbmVkKQotICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoIiVNYXBJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBh
IE1hcCBJdGVyYXRvciBpbnN0YW5jZSIpOwotICAgIHJldHVybiBAbWFwSXRlcmF0b3JOZXh0LkBj
YWxsKHRoaXMsIGJ1Y2tldCwgQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJtYXBJdGVyYXRv
cktpbmQiKSk7CisgICAgdmFyIGJ1Y2tldCA9IEBnZXRNYXBJdGVyYXRvckludGVybmFsRmllbGQo
dGhpcywgQG1hcEl0ZXJhdG9yRmllbGRNYXBCdWNrZXQpOworICAgIHZhciBraW5kID0gQGdldE1h
cEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAbWFwSXRlcmF0b3JGaWVsZEtpbmQpOworICAg
IHJldHVybiBAbWFwSXRlcmF0b3JOZXh0LkBjYWxsKHRoaXMsIGJ1Y2tldCwga2luZCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcFByb3RvdHlwZS5qcwppbmRleCA4
YTViZDNjMjZmN2VhMTU1NGVjYjA5YTE4MzVmMTRlZGQzZGRkZGM3Li5jYzZiM2FhZGZmNjU3MTJk
ODk2MjM2YWI5ZWVkNWE4NmRhZjNlODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9NYXBQcm90b3R5cGUuanMKQEAgLTIzLDQ4ICsyMyw2IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLUBjb25zdHJ1Y3RvcgotQGdsb2JhbFByaXZhdGUKLWZ1bmN0aW9uIE1hcEl0ZXJh
dG9yKGl0ZXJhdGVkT2JqZWN0LCBraW5kKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIEBh
c3NlcnQoQGlzTWFwKGl0ZXJhdGVkT2JqZWN0KSk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRl
KHRoaXMsICJpdGVyYXRlZE9iamVjdCIsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBAcHV0QnlJZERp
cmVjdFByaXZhdGUodGhpcywgIm1hcEl0ZXJhdG9yS2luZCIsIGtpbmQpOwotICAgIEBwdXRCeUlk
RGlyZWN0UHJpdmF0ZSh0aGlzLCAibWFwQnVja2V0IiwgQG1hcEJ1Y2tldEhlYWQoaXRlcmF0ZWRP
YmplY3QpKTsKLX0KLQotZnVuY3Rpb24gdmFsdWVzKCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0K
LSAgICBpZiAoIUBpc01hcCh0aGlzKSkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJNYXAucHJv
dG90eXBlLnZhbHVlcyByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBNYXAiKTsKLQotICAgIHJldHVy
biBuZXcgQE1hcEl0ZXJhdG9yKHRoaXMsIEBpdGVyYXRpb25LaW5kVmFsdWUpOwotfQotCi1mdW5j
dGlvbiBrZXlzKCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBpc01hcCh0aGlz
KSkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJNYXAucHJvdG90eXBlLmtleXMgcmVxdWlyZXMg
dGhhdCB8dGhpc3wgYmUgTWFwIik7Ci0KLSAgICByZXR1cm4gbmV3IEBNYXBJdGVyYXRvcih0aGlz
LCBAaXRlcmF0aW9uS2luZEtleSk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJpZXMoKQotewotICAgICJ1
c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlzTWFwKHRoaXMpKQotICAgICAgICBAdGhyb3dUeXBl
RXJyb3IoIk1hcC5wcm90b3R5cGUuZW50cmllcyByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBNYXAi
KTsKLQotICAgIHJldHVybiBuZXcgQE1hcEl0ZXJhdG9yKHRoaXMsIEBpdGVyYXRpb25LaW5kRW50
cmllcyk7Ci19Ci0KIGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiB7
CiAgICAgInVzZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IDMyYWFmODdm
NGM1NmEwNDg2NjQ0OGU0NzljNTM5YTc2M2ExOWNhMTAuLmRiZDVlMWRjMTUyYjcyZmUzZTVjNGVh
OTM5N2ZlNTk0MGIyOTVlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKQEAgLTkyLDYgKzkzLDggQEAgQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiAgICAgbV9h
cnJheUl0ZXJhdG9yRmllbGRJdGVyYXRlZE9iamVjdC5zZXQobV92bSwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRPYmplY3QpKSk7
CiAgICAgbV9hcnJheUl0ZXJhdG9yRmllbGRJbmRleC5zZXQobV92bSwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSk7CiAgICAgbV9h
cnJheUl0ZXJhdG9yRmllbGRLaW5kLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpLaW5kKSkpOworICAgIG1fbWFwSXRlcmF0b3JG
aWVsZE1hcEJ1Y2tldC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNN
YXBJdGVyYXRvcjo6RmllbGQ6Ok1hcEJ1Y2tldCkpKTsKKyAgICBtX21hcEl0ZXJhdG9yRmllbGRL
aW5kLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU01hcEl0ZXJhdG9y
OjpGaWVsZDo6S2luZCkpKTsKICAgICBtX3N0cmluZ0l0ZXJhdG9yRmllbGRJbmRleC5zZXQobV92
bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNTdHJpbmdJdGVyYXRvcjo6RmllbGQ6
OkluZGV4KSkpOwogICAgIG1fc3RyaW5nSXRlcmF0b3JGaWVsZEl0ZXJhdGVkU3RyaW5nLnNldCht
X3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU1N0cmluZ0l0ZXJhdG9yOjpGaWVs
ZDo6SXRlcmF0ZWRTdHJpbmcpKSk7CiAgICAgbV9hc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJl
YXNvbi5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQXN5bmNHZW5l
cmF0b3I6OkZpZWxkOjpTdXNwZW5kUmVhc29uKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXgg
OWJmMmM0MGUxN2JkMzQ3MTUzYjZiMzk2ZjYyZWZiNmJlOWI0OTA5MS4uMzIyOTg4M2E1ZGU0N2Zi
ZTE1ZWNlMWZmOTA2MDdiNzhjODFmYTdjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC00Nyw2
ICs0Nyw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAgICAgbWFj
cm8oZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8oZ2V0QXJyYXlJ
dGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhnZXRTdHJpbmdJdGVyYXRvckludGVy
bmFsRmllbGQpIFwKKyAgICBtYWNybyhnZXRNYXBJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAg
ICBtYWNybyhpZFdpdGhQcm9maWxlKSBcCiAgICAgbWFjcm8oaXNPYmplY3QpIFwKICAgICBtYWNy
byhpc0pTQXJyYXkpIFwKQEAgLTYwLDYgKzYxLDcgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0
YW50IDogaW50MzJfdDsKICAgICBtYWNybyhpc1NldCkgXAogICAgIG1hY3JvKGlzU3RyaW5nSXRl
cmF0b3IpIFwKICAgICBtYWNybyhpc0FycmF5SXRlcmF0b3IpIFwKKyAgICBtYWNybyhpc01hcEl0
ZXJhdG9yKSBcCiAgICAgbWFjcm8oaXNVbmRlZmluZWRPck51bGwpIFwKICAgICBtYWNybyh0YWls
Q2FsbEZvcndhcmRBcmd1bWVudHMpIFwKICAgICBtYWNybyh0aHJvd1R5cGVFcnJvcikgXApAQCAt
NzUsNiArNzcsNyBAQCBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90OwogICAg
IG1hY3JvKHB1dEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKHB1dEFy
cmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8ocHV0U3RyaW5nSXRlcmF0b3JJ
bnRlcm5hbEZpZWxkKSBcCisgICAgbWFjcm8ocHV0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBc
CiAgICAgbWFjcm8odG9OdW1iZXIpIFwKICAgICBtYWNybyh0b1N0cmluZykgXAogICAgIG1hY3Jv
KHRvT2JqZWN0KSBcCkBAIC0xMjMsOSArMTI2LDEwIEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25z
dGFudCA6IGludDMyX3Q7CiAgICAgbWFjcm8oR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpIFwKICAg
ICBtYWNybyhHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0
b3JGaWVsZEluZGV4KSBcCi0gICAgbWFjcm8oYXJyYXlJdGVyYXRvckZpZWxkSXNEb25lKSBcCiAg
ICAgbWFjcm8oYXJyYXlJdGVyYXRvckZpZWxkSXRlcmF0ZWRPYmplY3QpIFwKICAgICBtYWNybyhh
cnJheUl0ZXJhdG9yRmllbGRLaW5kKSBcCisgICAgbWFjcm8obWFwSXRlcmF0b3JGaWVsZE1hcEJ1
Y2tldCkgXAorICAgIG1hY3JvKG1hcEl0ZXJhdG9yRmllbGRLaW5kKSBcCiAgICAgbWFjcm8oc3Ry
aW5nSXRlcmF0b3JGaWVsZEluZGV4KSBcCiAgICAgbWFjcm8oc3RyaW5nSXRlcmF0b3JGaWVsZEl0
ZXJhdGVkU3RyaW5nKSBcCiAgICAgbWFjcm8oYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFz
b24pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAyOTg5Mzc0MGE4NWE1ODQ5ZTM5NzI4ODU2NTAzMmFlNzRi
YWZmNTViLi5hMzY5Mjc4MzI4MjE2MzE0YzJmMTE4ZGE2NTc4ZTZmMmFlYzk3YjgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC04ODksNiArODg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRJc1NldChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1
cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1NldFR5cGUpOyB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJc1N0cmluZ0l0ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTU3RyaW5nSXRl
cmF0b3JUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNBcnJheUl0ZXJhdG9yKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5
cGUoZHN0LCBzcmMsIEpTQXJyYXlJdGVyYXRvclR5cGUpOyB9CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJc01hcEl0ZXJhdG9yKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJl
dHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTTWFwSXRlcmF0b3JUeXBlKTsgfQog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNPYmplY3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBzcmMpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNOdW1iZXIoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNVbmRlZmlu
ZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDY0MGIyNDk3
NTVlMTBlY2RkOWE4M2I5ZTE0YjA5N2FiMzlmZDA5NGYuLmMyNmI1ZmY3YTQwODk3MGFmMjEwMDY1
NGJmZTA4YzcxNzZjZTRmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJK
U0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNJ
bW11dGFibGVCdXR0ZXJmbHkuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNTdHJpbmdJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRl
ICJMZXhlci5oIgpAQCAtMTE1Myw2ICsxMTU0LDE3IEBAIHN0YXRpYyBKU1N0cmluZ0l0ZXJhdG9y
OjpGaWVsZCBzdHJpbmdJdGVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNp
CiAgICAgcmV0dXJuIEpTU3RyaW5nSXRlcmF0b3I6OkZpZWxkOjpJbmRleDsKIH0KIAorc3RhdGlj
IEpTTWFwSXRlcmF0b3I6OkZpZWxkIG1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVj
b2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50eXBl
KCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYg
KG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX21hcEl0ZXJhdG9yRmllbGRNYXBCdWNrZXQpCisgICAgICAgIHJldHVybiBKU01h
cEl0ZXJhdG9yOjpGaWVsZDo6TWFwQnVja2V0OworICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0
ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19tYXBJdGVyYXRv
ckZpZWxkS2luZCkKKyAgICAgICAgcmV0dXJuIEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpLaW5kOwor
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEpTTWFwSXRlcmF0
b3I6OkZpZWxkOjpNYXBCdWNrZXQ7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0UHJvbWlzZUludGVybmFsRmllbGQoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5v
ZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0xMjE4LDYgKzEyMzAsMTkgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRTdHJpbmdJ
dGVyYXRvckludGVybmFsRmllbGQKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5h
bEZpZWxkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGluZGV4
KTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19nZXRNYXBJdGVyYXRvckludGVybmFsRmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2Fy
Z3MtPm1fbGlzdE5vZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobm9kZSk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSRUxFQVNFX0FT
U0VSVChub2RlLT5tX2V4cHItPmlzQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKCkpOworICAgIHVuc2ln
bmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVs
ZEluZGV4KHN0YXRpY19jYXN0PEJ5dGVjb2RlSW50cmluc2ljTm9kZSo+KG5vZGUtPm1fZXhwcikp
KTsKKyAgICBBU1NFUlQoaW5kZXggPCBKU01hcEl0ZXJhdG9yOjpudW1iZXJPZkludGVybmFsRmll
bGRzKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGJh
c2UuZ2V0KCksIGluZGV4KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19hcmd1bWVudChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+
bV9saXN0Tm9kZTsKQEAgLTEzNjcsNiArMTM5MiwyMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dFN0cmluZ0l0ZXJhdG9ySW50ZXJuYWxGaWVs
ZAogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0UHV0SW50ZXJu
YWxGaWVsZChiYXNlLmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkpKTsKIH0KIAorUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRNYXBJdGVyYXRvcklu
dGVybmFsRmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7Cisg
ICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5tX2V4cHIt
PmlzQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KHN0YXRpY19jYXN0
PEJ5dGVjb2RlSW50cmluc2ljTm9kZSo+KG5vZGUtPm1fZXhwcikpKTsKKyAgICBBU1NFUlQoaW5k
ZXggPCBKU01hcEl0ZXJhdG9yOjpudW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBub2RlID0g
bm9kZS0+bV9uZXh0OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5l
bWl0Tm9kZShub2RlKTsKKworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVy
biBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0UHV0SW50ZXJuYWxGaWVsZChiYXNl
LmdldCgpLCBpbmRleCwgdmFsdWUuZ2V0KCkpKTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190YWlsQ2FsbEZvcndhcmRBcmd1bWVudHMoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3Vt
ZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0xNTE2LDYgKzE1NTcs
NyBAQCBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc01hcCwgSXNNYXApCiBDUkVB
VEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1NldCwgSXNTZXQpCiBDUkVBVEVfSU5UUklO
U0lDX0ZPUl9CUkFORF9DSEVDSyhpc1N0cmluZ0l0ZXJhdG9yLCBJc1N0cmluZ0l0ZXJhdG9yKQog
Q1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNBcnJheUl0ZXJhdG9yLCBJc0FycmF5
SXRlcmF0b3IpCitDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc01hcEl0ZXJhdG9y
LCBJc01hcEl0ZXJhdG9yKQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNVbmRl
ZmluZWRPck51bGwsIElzVW5kZWZpbmVkT3JOdWxsKQogCiAjdW5kZWYgQ1JFQVRFX0lOVFJJTlNJ
Q19GT1JfQlJBTkRfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA5NTNmYmFlZjQ4ZjNhNTU0
ZDQ1OWJkOWEyYjNkNmU2M2RhYTdjYWM3Li5kYjA5ODJiMGU0MDZmNDNhNThkOTRjNGM2ZTE4ODlh
NDJkYmFiNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0yODYyLDYgKzI4NjIsNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1
bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2UgTmV3
QXN5bmNHZW5lcmF0b3I6ICAgIAogICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNl
IE5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxp
emVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgICAgICBBU1NFUlQoISFub2RlLT5zdHJ1Y3R1
cmUoKS5nZXQoKSk7CkBAIC0yOTQ2LDYgKzI5NDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNlIFBoYW50b21O
ZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgIGNh
c2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAg
ICBjYXNlIEJvdHRvbVZhbHVlOiB7CiAgICAgICAgIGNsZWFyRm9yTm9kZShub2RlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggOTk2
MWQ5MDMyZDY4MGQ4NTM0NjU5OGRlNmEyYjhmYWNkNzM0MjdiZC4uNDI4ZTZmYzE5ZmYyMzA1MGE0
MDRmZTg5YzBhYjUxZWViZTRhMjBjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJKU0lt
bXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5j
bHVkZSAiSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTTWFwSXRl
cmF0b3IuaCIKICNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb21pc2VDb25zdHJ1Y3Rvci5o
IgpAQCAtMzE3Nyw2ICszMTc4LDQ4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgSlNNYXBFbnRyaWVz
SW50cmluc2ljOgorICAgICAgICBjYXNlIEpTTWFwS2V5c0ludHJpbnNpYzoKKyAgICAgICAgY2Fz
ZSBKU01hcFZhbHVlc0ludHJpbnNpYzogeworICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisK
KyAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIEl0ZXJhdGlvbktpbmQga2luZDsKKyAg
ICAgICAgICAgIHN3aXRjaCAoaW50cmluc2ljKSB7CisgICAgICAgICAgICBjYXNlIEpTTWFwVmFs
dWVzSW50cmluc2ljOgorICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpWYWx1
ZXM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEpTTWFwS2V5c0lu
dHJpbnNpYzoKKyAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0aW9uS2luZDo6S2V5czsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSlNNYXBFbnRyaWVzSW50cmlu
c2ljOgorICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygwLCByZWdpc3Rlck9mZnNldCkpOworICAgICAg
ICAgICAgYWRkVG9HcmFwaChDaGVjaywgRWRnZShiYXNlLCBNYXBPYmplY3RVc2UpKTsKKyAgICAg
ICAgICAgIE5vZGUqIG1hcEJ1Y2tldCA9IGFkZFRvR3JhcGgoR2V0TWFwQnVja2V0SGVhZCwgRWRn
ZShiYXNlLCBNYXBPYmplY3RVc2UpKTsKKworICAgICAgICAgICAgLy8gQWRkIHRoZSBjb25zdGFu
dCBiZWZvcmUgZXhpdCBiZWNvbWVzIGludmFsaWQgYmVjYXVzZSB3ZSBtYXkgd2FudCB0byBpbnNl
cnQgKHJlZHVuZGFudCkgY2hlY2tzIG9uIGl0IGluIEZpeHVwLgorICAgICAgICAgICAgTm9kZSog
a2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVtYmVyKHN0YXRpY19jYXN0PHVpbnQzMl90PihraW5k
KSkpOworCisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY3VycmVudE5vZGVPcmlnaW4oKS5zZW1hbnRpYyk7CisgICAgICAg
ICAgICBOb2RlKiBpdGVyYXRvciA9IGFkZFRvR3JhcGgoTmV3TWFwSXRlcmF0b3IsIE9wSW5mbyht
X2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+bWFwSXRlcmF0b3JTdHJ1Y3R1
cmUoKSkpKTsKKworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcElu
Zm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpNYXBCdWNrZXQp
KSwgaXRlcmF0b3IsIG1hcEJ1Y2tldCk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVy
bmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNNYXBJdGVyYXRvcjo6Rmll
bGQ6Okl0ZXJhdGVkT2JqZWN0KSksIGl0ZXJhdG9yLCBiYXNlKTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU01h
cEl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpLCBpdGVyYXRvciwga2luZE5vZGUpOworCisgICAgICAg
ICAgICBzZXRSZXN1bHQoaXRlcmF0b3IpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIEpTU2V0QnVja2V0SGVhZEludHJpbnNpYzoKICAgICAgICAg
Y2FzZSBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWM6IHsKICAgICAgICAgICAgIEFTU0VSVChhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9PSAyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKaW5kZXggZDE5NTIyZmVkNWU4ZTVmYWZjNWQ5NTNlYzgzMjBlZTdkNjdm
NTIzYy4uZDNkYTZmOTUxYzBkMWRlY2ViNWJiZTU2ZGE1ZWJmNjc0ZjE0ZjlhZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTE1OTQsNiArMTU5NCw3IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5j
dG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgY2Fz
ZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgY2Fz
ZSBOZXdNYXBJdGVyYXRvcjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJv
bDoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKQEAgLTE2MDQsNiArMTYwNSw3IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAg
ICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRv
bU5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CiAgICAg
Y2FzZSBNYXRlcmlhbGl6ZU5ld0ludGVybmFsRmllbGRPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9t
Q3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5j
cHAKaW5kZXggZWU5OGZhYzIzMDUzNDk5MzA1OTQ4YTdjNDAyZGYzOGQyYmYwNmRlYi4uNWRjMWI5
ODFhYjUyMjBmNjI2NWUyMjBkZGFkYTUyYTE3ZjU2Y2Q1MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTYxLDYgKzYxLDcg
QEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICBjYXNl
IE5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjoKICAgICBjYXNlIE5l
d1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoK
QEAgLTcxLDYgKzcyLDcgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKICAg
ICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5
SXRlcmF0b3I6CisgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBNYXRl
cmlhbGl6ZU5ld0ludGVybmFsRmllbGRPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAK
aW5kZXggNjUwNTNjZWI1ZTA4N2EwY2Q0YTMxNDgwYWZkZThkNjUxODFlZDE0My4uY2FkZjQ2ZTBm
ZTE3YzNmNTBmNjEwMzUwMjRiYTg0YTViYWE1ZTJiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTExMDEsNiAr
MTEwMSw3IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAg
ICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBQaGFu
dG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJh
dG9yOgogICAgICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgUGhhbnRv
bUNsb25lZEFyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApp
bmRleCA1NWQzYzhmZDVkY2Y4ZmEyZWZiYTM3Zjk2ZGM5MDk5ZDQ5NzI1MTgxLi5hYTNjNjk3Mjdj
NWVhMGM0NWM5NTdjMTBhYWQ3NGY0ZmU3OGZlYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCkBAIC0yMTEsNiArMjExLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAg
Y2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21O
ZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgIGNh
c2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1l
bnRzOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CkBAIC0zNTcsNiArMzU4LDcgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXk6CiAg
ICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgor
ICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBTcHJlYWQ6CiAgICAgY2FzZSBOZXdB
cnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA3OWE5YzRmYWI1MGU2YzY2NTVhNDZk
NGM5YTFmOThiZWYzYzc4ZjM3Li45MDlmZDAyMmEzNWQ0MTc3ODBhODlhYWFjOTc0ODIxYjdhOWQ1
M2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAg
LTE5NDAsNiArMTk0MCw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICBjYXNl
IFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0
ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKICAgICAgICAgY2Fz
ZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJn
dW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgpAQCAtMjUzMiw2ICsyNTMz
LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNl
IE5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CiAgICAgICAg
IGNhc2UgTmV3UmVnZXhwOgogICAgICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAgICAg
IGNhc2UgSXNFbXB0eToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmlu
ZGV4IGI5Mjg4MTBlMTAxNTUzYjE5YWY1MTM0NDJjMDNlYmVlYzA0ODBmMmIuLjU5MTBhNzAxMDJj
OTc4MTA4OGJiNDExMWVlZTgwZjJjNjNmNGQwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcApAQCAtNzIsNiArNzIsNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIFN0YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBQdXRI
aW50OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdBcnJh
eUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgUHV0
U3RhY2s6CiAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKQEAgLTEzMCw2
ICsxMzEsNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IFN0YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBO
ZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgTmV3TWFwSXRl
cmF0b3I6CiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBUb051bWJlcjoKICAgICBjYXNl
IFRvTnVtZXJpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggYmM3Y2ZiMTJk
MGE4ZTJkMzJlMjcyOTdmNzQ4YTY1NWUzNTE3MjY3Ni4uMWE3Y2NhODRhNWI1OTE3NGY0YWJlMThi
ZDc3ZDc1Y2IxOTUyODEwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTY2
MCw2ICs2NjAsMTcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjaGlsZHJlbiA9IEFkamFjZW5j
eUxpc3QoKTsKICAgICB9CiAKKyAgICB2b2lkIGNvbnZlcnRUb1BoYW50b21OZXdNYXBJdGVyYXRv
cigpCisgICAgeworICAgICAgICBBU1NFUlQobV9vcCA9PSBOZXdNYXBJdGVyYXRvcik7CisgICAg
ICAgIG1fb3AgPSBQaGFudG9tTmV3TWFwSXRlcmF0b3I7CisgICAgICAgIG1fZmxhZ3MgJj0gfk5v
ZGVIYXNWYXJBcmdzOworICAgICAgICBtX2ZsYWdzIHw9IE5vZGVNdXN0R2VuZXJhdGU7CisgICAg
ICAgIG1fb3BJbmZvID0gT3BJbmZvV3JhcHBlcigpOworICAgICAgICBtX29wSW5mbzIgPSBPcElu
Zm9XcmFwcGVyKCk7CisgICAgICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgpOworICAgIH0K
KwogICAgIHZvaWQgY29udmVydFRvUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fb3AgPT0gTmV3QXN5bmNGdW5jdGlvbik7CkBAIC0xOTc3LDYgKzE5ODgs
NyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgICAgICBj
YXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6Cisg
ICAgICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0
OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yMTQzLDYg
KzIxNTUsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVu
Y3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAg
ICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2UgUGhhbnRv
bU5ld01hcEl0ZXJhdG9yOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgog
ICAgICAgICBjYXNlIFBoYW50b21OZXdSZWdleHA6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAzZmVmNmIzODE4NTNk
ZDVlNzJjOThhNGYyOGI5MGJhZmY2YzZiZTRhLi5kNDliM2YwZjcwZGE5YzZjMGU2ZGZmYWU3M2Zl
YzVlMDAyY2NiZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBA
IC0zNTksNiArMzU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1h
Y3JvKE5ld0FycmF5V2l0aFNpemUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhOZXdBcnJheUJ1ZmZlciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3
QXJyYXlJdGVyYXRvciwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3TWFwSXRlcmF0b3Is
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1R5cGVkQXJyYXksIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOZXdSZWdleHAsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKE5ld1N5bWJvbCwgTm9kZVJlc3VsdEpTKSBcCkBAIC0zNzgsNiArMzc5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFBoYW50b21OZXdB
c3luY0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTmV3QXJyYXlJdGVyYXRvciwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFBoYW50b21OZXdNYXBJdGVy
YXRvciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE1hdGVy
aWFsaXplTmV3SW50ZXJuYWxGaWVsZE9iamVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFy
Z3MpIFwKICAgICBtYWNybyhQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlv
biwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2Uu
Y3BwCmluZGV4IDA1YWNkZjIzODc2OTczZjg4ZTgyYjlhNzNiMzQ5ZWU3NzliNWI5ODQuLjhhNWE5
MDFhMjM3Y2UyMjk0Y2EyODM3YjQ5Y2FiYjNjODYzOWQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkRGR1ZhbGlkYXRlLmgiCiAjaW5j
bHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGlzdC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkBAIC05NjYsNiArOTY3LDExIEBAIGNsYXNzIE9iamVj
dEFsbG9jYXRpb25TaW5raW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOiB7CisgICAgICAg
ICAgICB0YXJnZXQgPSBoYW5kbGVJbnRlcm5hbEZpZWxkQ2xhc3M8SlNNYXBJdGVyYXRvcj4obm9k
ZSwgd3JpdGVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBOZXdSZWdleHA6IHsKICAgICAgICAgICAgIHRhcmdldCA9ICZtX2hlYXAubmV3QWxsb2NhdGlv
bihub2RlLCBBbGxvY2F0aW9uOjpLaW5kOjpSZWdFeHBPYmplY3QpOwogCkBAIC0yMDg4LDYgKzIw
OTQsMTAgQEAgY2xhc3MgT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tTmV3QXJy
YXlJdGVyYXRvcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjoKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdNYXBJdGVyYXRvcigpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0
aW9uOgogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbUNyZWF0
ZUFjdGl2YXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMDhjZTU0MzVkM2Y3MTkw
NjNjZmMwOWZmYTc3ZGNmNjExZmY4Zjk5OC4uNGVlZGRlZDE5NzRjZDNhZDEwNjg5NmY0Yjc3ZDhi
OTIwMWFkMWEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCkBAIC0yMTEzLDYgKzIxMTMsMTUgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0FycmF5SXRlcmF0b3IoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICBy
ZXR1cm4gSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyh2bSwgc3RydWN0
dXJlKTsKIH0KIAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9y
KFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9ICp2
bVBvaW50ZXI7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbEZyYW1lKTsKKworICAgIHJldHVybiBKU01hcEl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlh
bFZhbHVlcyh2bSwgc3RydWN0dXJlKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIEVuY29kZWRKU1ZhbHVl
IGluaXRpYWxWYWx1ZUVuY29kZWQpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggMGM4NzNkYmU1ZmVlYjhl
YmRkMDIzNjljMTlmMTQ3M2UyNTY2NTE3Mi4uY2JiNDIzNjdiZWU3MDM0NGRjM2FlOTc2NjRjN2Nk
MTRlZjIzNDZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
QEAgLTEyNiw2ICsxMjYsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0
MzJBcnJheVdpdGhPbmVBcmd1bWVudChKU0dsb2JhbE9iamVjdCosIFN0cgogY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvcihWTSosIFN0cnVjdHVyZSop
IFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdNYXBJdGVy
YXRvcihWTSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlWYWxOb25TdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjg4
ODU4YjM4YzE2YTY1YThjOGViZGI5ZDQzNzAxMjgzNDcyYTUwYS4uZjYwOTNiZjI1MTRjNjNiNWNl
Mjc2YWM5NTI4Yjk3NmFiYTcyNWFkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEwNjEs
NiArMTA2MSw3IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgY2FzZSBDcmVhdGVBc3luY0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBO
ZXdBc3luY0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgICAg
ICBjYXNlIE5ld01hcEl0ZXJhdG9yOgogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2Jq
ZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTEyODUsNiAr
MTI4Niw3IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgogICAgICAgICBjYXNl
IFBoYW50b21OZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVy
YXRvcjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CiAgICAgICAgIGNhc2Ug
UGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgog
ICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYmFkZmUxYjJkMTQyOWIyZTA1NjRlNjAxYTBj
N2ZjOTY2NGI1NWVhYy4uNDEyYWNlZmUxOTQ4YWNhMGQ4MjQ4YTM4Y2E4NGUyNzlkYWMwNzE4YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTU0
OSw2ICs1NDksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRl
LCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgTmV3QXJyYXlC
dWZmZXI6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBOZXdBcnJheUl0
ZXJhdG9yOgorICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBTcHJlYWQ6CiAgICAg
Y2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CkBAIC02MTksNiArNjIwLDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQ
aGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoK
ICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld1Jl
Z2V4cDoKICAgICBjYXNlIFB1dEhpbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGNhYTRiYWI0MTBlNmQ1MzRlMDZhNTk1NzYxOWQz
OWM5Yzg3ZWMwOWQuLmM2MTU4M2Y0OGRhMDY0YzIwODc4MjRiYjE0YmQ4OTUyOTY3MmY5YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBA
IC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1l
bnQuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlJlZ0V4
cE9iamVjdC5oIgpAQCAtMTMwMTQsNiArMTMwMTUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU5ld0FycmF5SXRlcmF0b3IoTm9kZSogbm9kZSkKICAgICBjb21waWxlTmV3SW50ZXJu
YWxGaWVsZE9iamVjdDxKU0FycmF5SXRlcmF0b3I+KG5vZGUsIG9wZXJhdGlvbk5ld0FycmF5SXRl
cmF0b3IpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3TWFwSXRlcmF0b3Io
Tm9kZSogbm9kZSkKK3sKKyAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxKU01hcEl0
ZXJhdG9yPihub2RlLCBvcGVyYXRpb25OZXdNYXBJdGVyYXRvcik7Cit9CisKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUb1ByaW1pdGl2ZShOb2RlKiBub2RlKQogewogICAgIERGR19BU1NF
UlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlw
ZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZTNmNjdlMTU5MmM4ZWY5YzcwYmJkMDYy
NzJlZDM3NmEzYjljZDMyYS4uNTAxZTFmNWExOThjZjM1YzE3OTE4ZWIzMjM4NDBmOWE4MDY2ZjE0
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApA
QCAtMTQ2Myw2ICsxNDYzLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29t
cGlsZU5ld0dlbmVyYXRvcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3QXN5bmNHZW5lcmF0
b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5SXRlcmF0b3IoTm9kZSopOworICAg
IHZvaWQgY29tcGlsZU5ld01hcEl0ZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVUb1By
aW1pdGl2ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVG9Qcm9wZXJ0eUtleShOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlVG9OdW1lcmljKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDEyOTBkMTc5NzAz
ZTg2NzAyNmYzMDJiYzgwZTcyYTAyNWY2OGJkMjQuLjViYmE3NmY0MDYzZjVlMzAyMjI1NGNkNDYw
OGQ2YmJjZjQzNjljMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzI2NSw2ICszMjY1LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjogeworICAgICAgICBjb21waWxlTmV3TWFwSXRlcmF0
b3Iobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0Q2FsbGVlOiB7
CiAgICAgICAgIGNvbXBpbGVHZXRDYWxsZWUobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDIx
Nyw2ICs0MjIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFu
dG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgor
ICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4
cDoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IGM1N2E1NGY1YWRkZDQ1NGJjNDQ2OTJlNWI0ZTU4N2JmMDRhOWYxZDkuLjY4M2NjNDJj
N2I4ZTllYzVkNTIzNjBkZjQxYTNlZDU5NDMwNGJjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzU5NCw2ICszNTk0LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjogeworICAgICAgICBjb21waWxl
TmV3TWFwSXRlcmF0b3Iobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2Ug
R2V0Q2FsbGVlOiB7CiAgICAgICAgIGNvbXBpbGVHZXRDYWxsZWUobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtNTI3OCw2ICs1MjgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQ
aGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBcnJh
eUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgUGhh
bnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgIGNh
c2UgR2V0TXlBcmd1bWVudEJ5VmFsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA5MzNkM2E0
ZDZhYTk3NGUwYjkyMGU1NzliMDYxYTcwMjE2ZjkzZTc1Li40YmJjMjFjNmNiYjMzMTk0MzY0NTIz
ZjgwYWU5ZDk1OWFjN2MwYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMzM4LDYgKzMz
OCw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsK
ICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICAgICAgICAgIGNhc2UgTmV3
QXJyYXlCdWZmZXI6CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgICAg
ICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgogICAgICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5
OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgICAgICBjYXNlIE5ld1N0cmlu
Z09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCA1YzY5ZDFkMzhjMWM2MTA1OTlmZDMwMjk5NzM0MzYwY2IyMjdhY2IyLi5mYjE2MTU4
YWYyZTUzYjg5MzNmMzYxZGNmNmU4YzczMGM5ZTk3YWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC04Miw2ICs4Miw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXk6
CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9y
OgorICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBTcHJlYWQ6CiAgICAgY2FzZSBO
ZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CkBAIC0yOTIsNiArMjkzLDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdB
c3luY0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgY2Fz
ZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlv
bjoKICAgICBjYXNlIFBoYW50b21OZXdSZWdleHA6CiAgICAgY2FzZSBQdXRIaW50OgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDc3M2EwMDZl
MDg3NDA5NzRmMDMzZTZjMmQ4MmRlYWM4YjJmZGM1NDcuLmI5YjAxNTczNjViMDJjNDk5ZTZjNGU4
ODk4ZWM0MDRiY2I2MDRhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1
dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNNYXAuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2Jq
ZWN0LmgiCkBAIC0xMDc1LDYgKzEwNzYsOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CiAgICAgICAgICAgICBjb21waWxlTmV3QXJyYXlJdGVy
YXRvcigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6
CisgICAgICAgICAgICBjb21waWxlTmV3TWFwSXRlcmF0b3IoKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICAgICAgICAgIGNvbXBpbGVOZXdT
dHJpbmdPYmplY3QoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU5NCw2ICsxNTk4LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0
b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICAg
ICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3
TWFwSXRlcmF0b3I6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAg
ICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ3Jl
YXRlUmVzdDoKQEAgLTYzOTAsNiArNjM5NSwxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxKU0FycmF5SXRlcmF0b3I+KG9wZXJh
dGlvbk5ld0FycmF5SXRlcmF0b3IpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU5ld01hcEl0
ZXJhdG9yKCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0PEpT
TWFwSXRlcmF0b3I+KG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yKTsKKyAgICB9CisKICAgICB2b2lk
IGNvbXBpbGVOZXdTdHJpbmdPYmplY3QoKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUgPSBtX25vZGUtPnN0cnVjdHVyZSgpOwpAQCAtMTIzMTAsNiArMTIzMjAs
OSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIEpTQXJyYXlJdGVyYXRvclR5
cGU6CiAgICAgICAgICAgICBjb21waWxlTWF0ZXJpYWxpemVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbDxKU0FycmF5SXRlcmF0b3I+KG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSlNNYXBJdGVyYXRvclR5cGU6CisgICAgICAgICAg
ICBjb21waWxlTWF0ZXJpYWxpemVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDxKU01hcEl0ZXJh
dG9yPihvcGVyYXRpb25OZXdNYXBJdGVyYXRvcik7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQg
c3RydWN0dXJlIik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9w
ZXJhdGlvbnMuY3BwCmluZGV4IDhlZjIzOWQ2ZmNhNWMwMDljZDc1NjVhZmNlN2FkNzY0MzI4NzYz
NzguLmE4MWY2YzVlMWNmZjhhNGNiNzdjZDgyZGZiZTIwNjE4MGZlN2JjY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcApAQCAtNDQsNiArNDQsNyBAQAog
I2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1
dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAi
SlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogCiBJR05PUkVfV0FS
TklOR1NfQkVHSU4oImZyYW1lLWFkZHJlc3MiKQpAQCAtMTMxLDYgKzEzMiwxOSBAQCBleHRlcm4g
IkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFBoYW50
b21OZXdNYXBJdGVyYXRvcjogeworICAgICAgICBKU01hcEl0ZXJhdG9yKiBtYXBJdGVyYXRvciA9
IGpzQ2FzdDxKU01hcEl0ZXJhdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKCplbmNvZGVkVmFsdWUpKTsK
KworICAgICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgdG8gcG9wdWxhdGUgdGhlIGl0ZXJhdG9yIHdp
dGgKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVz
KCkuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBjb25zdCBFeGl0UHJvcGVydHlWYWx1ZSYg
cHJvcGVydHkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKVtpXTsKKyAgICAgICAgICAg
IGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpLmtpbmQoKSAhPSBJbnRlcm5hbEZpZWxkT2JqZWN0UExv
YykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIG1hcEl0ZXJhdG9yLT5p
bnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PEpTTWFwSXRlcmF0b3I6OkZpZWxkPihwcm9wZXJ0eS5s
b2NhdGlvbigpLmluZm8oKSkpLnNldCh2bSwgbWFwSXRlcmF0b3IsIEpTVmFsdWU6OmRlY29kZSh2
YWx1ZXNbaV0pKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IFBoYW50b21OZXdSZWdleHA6IHsKICAgICAgICAgUmVnRXhwT2JqZWN0KiByZWdFeHBPYmplY3Qg
PSBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKCplbmNvZGVkVmFsdWUpKTsK
IApAQCAtMzE1LDYgKzMyOSwyOCBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOiB7
CisgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBzdHJ1Y3R1cmUuCisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF0ZXJp
YWxpemF0aW9uLT5wcm9wZXJ0aWVzKCkuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBjb25z
dCBFeGl0UHJvcGVydHlWYWx1ZSYgcHJvcGVydHkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRp
ZXMoKVtpXTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpID09IFByb21vdGVk
TG9jYXRpb25EZXNjcmlwdG9yKFN0cnVjdHVyZVBMb2MpKSB7CisgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkuYXNDZWxsKCktPmluaGVyaXRz
PFN0cnVjdHVyZT4odm0pKTsKKyAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBqc0Nhc3Q8U3Ry
dWN0dXJlKj4oSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZSk7CisKKyAgICAgICAgSlNN
YXBJdGVyYXRvciogcmVzdWx0ID0gSlNNYXBJdGVyYXRvcjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1
ZXModm0sIHN0cnVjdHVyZSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobWF0ZXJpYWxpemF0
aW9uLT5wcm9wZXJ0aWVzKCkuc2l6ZSgpIC0gMSA9PSBKU01hcEl0ZXJhdG9yOjpudW1iZXJPZklu
dGVybmFsRmllbGRzKTsKKworICAgICAgICAvLyBUaGUgcmVhbCB2YWx1ZXMgd2lsbCBiZSBwdXQg
c3Vic2VxdWVudGx5IGJ5CisgICAgICAgIC8vIG9wZXJhdGlvblBvcHVsYXRlTmV3T2JqZWN0SW5P
U1IuIFNlZSB0aGUgUGhhbnRvbU5ld09iamVjdAorICAgICAgICAvLyBjYXNlIGZvciBkZXRhaWxz
LgorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIGNhc2UgUGhhbnRvbUNyZWF0
ZVJlc3Q6CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgUGhhbnRv
bUNsb25lZEFyZ3VtZW50czogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCAwODBmYWVkZTgxYTIyNjgy
MjFkMWM1MDg5NDFkOWVmMjcxMjc5YTIwLi40MTc1MjNkNWQ1Nzk2MWU3Yzk4OTkxZmY5YmYyZWQ1
MDIxMDU3YTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUg
IkpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAj
aW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
SlNTZXQuaCIKQEAgLTM5Nyw5ICszOTgsOSBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAg
ICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGl0ZXJhdG9y
T2JqZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1h
cEJ1Y2tldFByaXZhdGVOYW1lKCkpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGl0ZXJhdGVkVmFs
dWUgPSBpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5pdGVyYXRlZE9iamVjdFByaXZhdGVOYW1lKCkpOwotICAgICAgICAgICAgSXRl
cmF0aW9uS2luZCBraW5kID0gc3RhdGljX2Nhc3Q8SXRlcmF0aW9uS2luZD4oaXRlcmF0b3JPYmpl
Y3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwSXRl
cmF0b3JLaW5kUHJpdmF0ZU5hbWUoKSkuYXNJbnQzMigpKTsKKyAgICAgICAgaWYgKGF1dG8qIG1h
cEl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU01hcEl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yT2Jq
ZWN0KSkgeworICAgICAgICAgICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlID0gbWFwSXRlcmF0b3It
Pml0ZXJhdGVkT2JqZWN0KCk7CisgICAgICAgICAgICBJdGVyYXRpb25LaW5kIGtpbmQgPSBtYXBJ
dGVyYXRvci0+a2luZCgpOwogCiAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAg
ICAgICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0
LCBudWxscHRyLCAyKTsKQEAgLTU0OSwxMyArNTUwLDEwIEBAIHN0YXRpYyBKU09iamVjdCogY2xv
bmVBcnJheUl0ZXJhdG9yT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2
bSwKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLXN0YXRpYyBKU09iamVjdCogY2xvbmVNYXBJdGVy
YXRvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTT2JqZWN0
KiBpdGVyYXRvck9iamVjdCwgSlNWYWx1ZSBtYXBCdWNrZXQsIEpTVmFsdWUgaXRlcmF0ZWRPYmpl
Y3QpCitzdGF0aWMgSlNPYmplY3QqIGNsb25lTWFwSXRlcmF0b3JPYmplY3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU01hcEl0ZXJhdG9yKiBpdGVyYXRvck9iamVjdCkK
IHsKLSAgICBBU1NFUlQoaXRlcmF0b3JPYmplY3QtPnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUp
OwotICAgIEpTT2JqZWN0KiBjbG9uZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVj
dCwgTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBNYXBJdGVy
YXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+aXRlcmF0b3JQcm90b3R5cGUoKSkpKTsKLSAgICBjbG9uZS0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZE9iamVjdFByaXZhdGVOYW1l
KCksIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBjbG9uZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBJdGVyYXRvcktpbmRQcml2YXRlTmFtZSgpLCBpdGVy
YXRvck9iamVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5tYXBJdGVyYXRvcktpbmRQcml2YXRlTmFtZSgpKSk7Ci0gICAgY2xvbmUtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0UHJpdmF0ZU5hbWUo
KSwgbWFwQnVja2V0KTsKKyAgICBKU01hcEl0ZXJhdG9yKiBjbG9uZSA9IEpTTWFwSXRlcmF0b3I6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCBqc0Nhc3Q8
SlNNYXAqPihpdGVyYXRvck9iamVjdC0+aXRlcmF0ZWRPYmplY3QoKSksIGl0ZXJhdG9yT2JqZWN0
LT5raW5kKCkpOworICAgIGNsb25lLT5pbnRlcm5hbEZpZWxkKEpTTWFwSXRlcmF0b3I6OkZpZWxk
OjpNYXBCdWNrZXQpLnNldCh2bSwgY2xvbmUsIGl0ZXJhdG9yT2JqZWN0LT5pbnRlcm5hbEZpZWxk
KEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpNYXBCdWNrZXQpLmdldCgpKTsKICAgICByZXR1cm4gY2xv
bmU7CiB9CiAKQEAgLTU5MywxMiArNTkxLDEyIEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhv
c3Q6Oml0ZXJhdG9yRW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAg
ICAgICAgICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aXNBcnJheVByb3RvdHlwZUl0ZXJhdG9y
UHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpKQogICAgICAgICAgICAgICAgICAgICBpdGVy
YXRvciA9IGNsb25lQXJyYXlJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3QsIHZtLCBhcnJheUl0
ZXJhdG9yKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBtYXBJdGVy
YXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNNYXBJdGVyYXRvcio+KHZtLCBpdGVyYXRvck9iamVjdCkp
IHsKKyAgICAgICAgICAgIGlmIChqc0Nhc3Q8SlNNYXAqPihtYXBJdGVyYXRvci0+aXRlcmF0ZWRP
YmplY3QoKSktPmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCkpCisgICAg
ICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZU1hcEl0ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVj
dCwgdm0sIG1hcEl0ZXJhdG9yKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEpTVmFs
dWUgaXRlcmF0ZWRPYmplY3QgPSBpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZE9iamVjdFByaXZhdGVOYW1lKCkpOwot
ICAgICAgICAgICAgaWYgKEpTVmFsdWUgbWFwQnVja2V0ID0gaXRlcmF0b3JPYmplY3QtPmdldERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0UHJpdmF0
ZU5hbWUoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoanNDYXN0PEpTTWFwKj4oaXRlcmF0ZWRP
YmplY3QpLT5pc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpKQotICAgICAg
ICAgICAgICAgICAgICBpdGVyYXRvciA9IGNsb25lTWFwSXRlcmF0b3JPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCB2bSwgaXRlcmF0b3JPYmplY3QsIG1hcEJ1Y2tldCwgaXRlcmF0ZWRPYmplY3QpOwotICAg
ICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVlIHNldEJ1Y2tldCA9IGl0ZXJhdG9yT2JqZWN0LT5n
ZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tldFBy
aXZhdGVOYW1lKCkpKSB7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSBzZXRCdWNrZXQgPSBpdGVy
YXRvck9iamVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5zZXRCdWNrZXRQcml2YXRlTmFtZSgpKSkgewogICAgICAgICAgICAgICAgIGlmIChqc0Nhc3Q8
SlNTZXQqPihpdGVyYXRlZE9iamVjdCktPmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNl
cnZhYmxlKCkpCiAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gY2xvbmVTZXRJdGVyYXRv
ck9iamVjdChnbG9iYWxPYmplY3QsIHZtLCBpdGVyYXRvck9iamVjdCwgc2V0QnVja2V0LCBpdGVy
YXRlZE9iamVjdCk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBkZjAxZjJhMTE4NzQwNDEyNjMyYmYy
YWRhYjhhZTA0ZjI2YWM5N2QwLi5lMmRjODg3YjM4NDQzNGUwNTE2NjZhMGI0MjY1MjAwMzhmNGI1
OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKQEAgLTk3LDcgKzk3LDYgQEAKICAgICBtYWNybyhkaXNwbGF5TmFtZSkgXAogICAg
IG1hY3JvKGRvbmUpIFwKICAgICBtYWNybyhkb3RBbGwpIFwKLSAgICBtYWNybyhlbnRyaWVzKSBc
CiAgICAgbWFjcm8oZW51bWVyYWJsZSkgXAogICAgIG1hY3JvKGVyYSkgXAogICAgIG1hY3JvKGV2
YWwpIFwKQEAgLTEzNyw3ICsxMzYsNiBAQAogICAgIG1hY3JvKGlzV2F0Y2hwb2ludCkgXAogICAg
IG1hY3JvKGpldHRpc29uUmVhc29uKSBcCiAgICAgbWFjcm8oam9pbikgXAotICAgIG1hY3JvKGtl
eXMpIFwKICAgICBtYWNybyhsYXN0SW5kZXgpIFwKICAgICBtYWNybyhsZW5ndGgpIFwKICAgICBt
YWNybyhsaW5lKSBcCkBAIC0xOTksNyArMTk3LDYgQEAKICAgICBtYWNybyh1bmljb2RlKSBcCiAg
ICAgbWFjcm8odXNhZ2UpIFwKICAgICBtYWNybyh2YWx1ZSkgXAotICAgIG1hY3JvKHZhbHVlcykg
XAogICAgIG1hY3JvKHZhbHVlT2YpIFwKICAgICBtYWNybyh3ZWVrZGF5KSBcCiAgICAgbWFjcm8o
d3JpdGFibGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3Bw
CmluZGV4IDM1MzU5MDkwNDkxY2UwYWZkY2Q4YmJiNGY4NzViYjM4MThjMjJkM2UuLmEwYzE4ZGFh
ZDBkYTFiNmQ3Y2U0MmY1ZDNkOGRhNTlmYjM4MWZhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMjA3LDYgKzIwNywxMiBAQCBjb25zdCBjaGFy
KiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiAiSlNN
YXBIYXNJbnRyaW5zaWMiOwogICAgIGNhc2UgSlNNYXBTZXRJbnRyaW5zaWM6CiAgICAgICAgIHJl
dHVybiAiSlNNYXBTZXRJbnRyaW5zaWMiOworICAgIGNhc2UgSlNNYXBWYWx1ZXNJbnRyaW5zaWM6
CisgICAgICAgIHJldHVybiAiSlNNYXBWYWx1ZXNJbnRyaW5zaWMiOworICAgIGNhc2UgSlNNYXBL
ZXlzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gIkpTTWFwS2V5c0ludHJpbnNpYyI7CisgICAg
Y2FzZSBKU01hcEVudHJpZXNJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiSlNNYXBFbnRyaWVz
SW50cmluc2ljIjsKICAgICBjYXNlIEpTTWFwQnVja2V0SGVhZEludHJpbnNpYzoKICAgICAgICAg
cmV0dXJuICJKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWMiOwogICAgIGNhc2UgSlNNYXBCdWNrZXRO
ZXh0SW50cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaApp
bmRleCA2YmZmZjkwMDYzY2UyZDdkOGFjMjA1NDJlOGE4ZDdlMThjNDJiYWU5Li4wYTdiMjZiZGU3
OGU2MjVkNjY3ODk5MTgwYzIxNGYwODJhZDIxZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuaApAQCAtMTE4LDYgKzExOCw5IEBAIGVudW0gSW50cmluc2ljIDog
dWludDhfdCB7CiAgICAgSlNNYXBHZXRJbnRyaW5zaWMsCiAgICAgSlNNYXBIYXNJbnRyaW5zaWMs
CiAgICAgSlNNYXBTZXRJbnRyaW5zaWMsCisgICAgSlNNYXBWYWx1ZXNJbnRyaW5zaWMsCisgICAg
SlNNYXBLZXlzSW50cmluc2ljLAorICAgIEpTTWFwRW50cmllc0ludHJpbnNpYywKICAgICBKU01h
cEJ1Y2tldEhlYWRJbnRyaW5zaWMsCiAgICAgSlNNYXBCdWNrZXROZXh0SW50cmluc2ljLAogICAg
IEpTTWFwQnVja2V0S2V5SW50cmluc2ljLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5SXRlcmF0b3IuaAppbmRleCA1OTllNzc0YjAzZGQzZTViYTZkNGQ3ZmEzNGJi
OThhOTY4N2VjNjA5Li5hZmQ5ZWIyZTVkNjZiODUzYTBjNzcwNDJhY2FlNDk5ZDA2NzNmMThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApA
QCAtNjQsNyArNjQsNyBAQCBjbGFzcyBKU0FycmF5SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwzPiB7CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25v
d24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRl
cm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CiAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSB7IHJldHVybiBCYXNlOjpp
bnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CiAKLSAgICBJdGVy
YXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVyYXRpb25LaW5k
PihpbnRlcm5hbEZpZWxkKEZpZWxkOjpLaW5kKS5nZXQoKS5hc1VJbnQzMigpKTsgfQorICAgIEl0
ZXJhdGlvbktpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZXJhdGlvbktp
bmQ+KGludGVybmFsRmllbGQoRmllbGQ6OktpbmQpLmdldCgpLmFzVUludDMyQXNBbnlJbnQoKSk7
IH0KICAgICBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8
SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpJdGVyYXRlZE9iamVjdCkuZ2V0KCkpOyB9
CiAKICAgICBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBK
U09iamVjdCogaXRlcmF0ZWRPYmplY3QsIEpTVmFsdWUga2luZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNmNlMTg0YWUxNTll
NDgyZjExZTAzMGY2ZDM5ZWM4NTYwMmJlOTYwZS4uNTQyOTcwNWZmOTJhNzdkY2UxNDk0Mzk2Zjg4
YjU1NWI4MjA0NjgzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtMTA2LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAiSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5oIgor
I2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU01pY3JvdGFzay5oIgogI2lu
Y2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5o
IgpAQCAtNTY0LDcgKzU2NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQog
ICAgICAgICB9KTsKICAgICBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5pbml0TGF0ZXIoCiAg
ICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewotICAgICAg
ICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAs
IGluaXQudm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCBhcnJheVByb3RvRnVuY1Zh
bHVlcywgQXJyYXlWYWx1ZXNJbnRyaW5zaWMpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVu
Y3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgYXJyYXlQcm90
b0Z1bmNWYWx1ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7CiAgICAgICAgIH0pOwogCiAgICAg
bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKApAQCAtNzY1LDYgKzc2NiwxMCBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2FycmF5SXRlcmF0b3JQ
cm90b3R5cGUuc2V0KHZtLCB0aGlzLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlKTsKICAgICBtX2Fy
cmF5SXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0FycmF5SXRlcmF0b3I6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgdGhpcywgYXJyYXlJdGVyYXRvclByb3RvdHlwZSkpOwogCisgICAgYXV0
byogbWFwSXRlcmF0b3JQcm90b3R5cGUgPSBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZS5z
ZXQodm0sIHRoaXMsIG1hcEl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBtX21hcEl0ZXJhdG9yU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtYXBJdGVyYXRvclByb3RvdHlwZSkpOworCiAgICAgSlNGdW5jdGlvbiogZGVmYXVsdFBy
b21pc2VUaGVuID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlUHJvdG90eXBlVGhlbkNv
ZGVHZW5lcmF0b3Iodm0pLCB0aGlzKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpkZWZhdWx0UHJvbWlzZVRoZW4pXS5zZXQo
dm0sIHRoaXMsIGRlZmF1bHRQcm9taXNlVGhlbik7CiAKQEAgLTEwMDYsOSArMTAxMSw2IEBAIGNh
cGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0
dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgSlNPYmplY3QqIGFzeW5jRnJvbVN5bmNJdGVyYXRv
clByb3RvdHlwZSA9IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0
aGlzLCBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwogICAgIGpzQ2FzdDxKU09iamVjdCo+
KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6QXN5bmNGcm9tU3luY0l0ZXJhdG9y
KSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBhc3luY0Zyb21T
eW5jSXRlcmF0b3JQcm90b3R5cGUpOwogCi0gICAgSlNPYmplY3QqIG1hcEl0ZXJhdG9yUHJvdG90
eXBlID0gTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgTWFwSXRlcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5n
ZXQoKSkpOwotICAgIGpzQ2FzdDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVD
b25zdGFudDo6TWFwSXRlcmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIG1hcEl0ZXJhdG9yUHJvdG90eXBlKTsKLQogICAgIEpTT2JqZWN0KiByZWdFeHBT
dHJpbmdJdGVyYXRvclByb3RvdHlwZSA9IFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpj
cmVhdGUodm0sIHRoaXMsIFJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBqc0Nhc3Q8
SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cFN0cmlu
Z0l0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBy
ZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSk7CiAKQEAgLTE3NzUsNiArMTc3Nyw3IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVy
YXRvclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hcnJheUl0
ZXJhdG9yUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21hcEl0
ZXJhdG9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5j
RnVuY3Rpb25Qcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5
bmNHZW5lcmF0b3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
YXN5bmNJdGVyYXRvclByb3RvdHlwZSk7CkBAIC0xODI2LDYgKzE4MjksNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JTdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXJyYXlJdGVyYXRvclN0cnVj
dHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tYXBJdGVyYXRvclN0cnVj
dHVyZSk7CiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZSk7CiAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1
Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCAxZTc2YzBiMzQ2ZTY3ZGRhMzVjNGU5NTViNTEyZjZmNTkz
MTQ0MjA0Li5iMGZhNzhlMTViMjA4YTNiZjU1N2Y1MGUwNmYzNmQxOGI5MDY4ODY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEwMCw2
ICsxMDAsNyBAQCBjbGFzcyBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I7CiBjbGFzcyBKU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlOwogY2xhc3MgRGlyZWN0RXZhbEV4ZWN1dGFibGU7CiBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitjbGFzcyBNYXBJdGVyYXRvclByb3RvdHlwZTsKIGNs
YXNzIE1hcFByb3RvdHlwZTsKIGNsYXNzIE1pY3JvdGFzazsKIGNsYXNzIE1vZHVsZUxvYWRlcjsK
QEAgLTMyMyw2ICszMjQsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8R2VuZXJhdG9yUHJvdG90eXBl
PiBtX2dlbmVyYXRvclByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXN5bmNHZW5lcmF0b3JQ
cm90b3R5cGU+IG1fYXN5bmNHZW5lcmF0b3JQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFy
cmF5SXRlcmF0b3JQcm90b3R5cGU+IG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZTsKKyAgICBXcml0
ZUJhcnJpZXI8TWFwSXRlcmF0b3JQcm90b3R5cGU+IG1fbWFwSXRlcmF0b3JQcm90b3R5cGU7CiAK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNj
b3BlU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJl
PiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKQEAgLTM3OCw2ICszODAsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvclN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fYXJyYXlJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX21hcEl0ZXJhdG9yU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX21vZHVsZVJlY29y
ZFN0cnVjdHVyZTsKQEAgLTY0OSw2ICs2NTIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBHZW5lcmF0b3JQcm90b3R5cGUq
IGdlbmVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yUHJvdG90eXBl
LmdldCgpOyB9CiAgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3Rv
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQog
ICAgIEFycmF5SXRlcmF0b3JQcm90b3R5cGUqIGFycmF5SXRlcmF0b3JQcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KKyAgICBNYXBJdGVy
YXRvclByb3RvdHlwZSogbWFwSXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX21h
cEl0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSlNPYmplY3QqIG1hcFByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsgfQogICAgIC8v
IFdvcmthcm91bmQgZm9yIHRoZSBuYW1lIGNvbmZsaWN0IGJldHdlZW4gSlNDZWxsOjpzZXRQcm90
b3R5cGUuCiAgICAgSlNPYmplY3QqIGpzU2V0UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXRTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CkBAIC03NTcsNiArNzYxLDcgQEAgY2xhc3Mg
SlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAg
U3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hc3lu
Y0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhc3luY0dlbmVyYXRv
ckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0dlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhcnJheUl0ZXJhdG9yU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheUl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9ICAg
IAorICAgIFN0cnVjdHVyZSogbWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X21hcEl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmpl
Y3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ09iamVjdFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogaXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQog
ICAgIFN0cnVjdHVyZSogcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAKaW5kZXggZjgwYjM0MDEwZDM1
YjI2ZmQzOTZmZThkZDU5ZDBkNDc0NGU3YjNiYS4uNTE1Nzk2YTBjOWIyNmY1MDY2NGFkN2YzNmE5
MWIzYmE1NTViNTJkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNYXBJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
YXBJdGVyYXRvci5jcHAKQEAgLTMxLDIyICszMSwzNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
Y29uc3QgQ2xhc3NJbmZvIEpTTWFwSXRlcmF0b3I6OnNfaW5mbyA9IHsgIk1hcCBJdGVyYXRvciIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNYXBJdGVy
YXRvcikgfTsKK2NvbnN0IENsYXNzSW5mbyBKU01hcEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJNYXBJ
dGVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNNYXBJdGVyYXRvcikgfTsKIAotdm9pZCBKU01hcEl0ZXJhdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTTWFwKiBpdGVyYXRlZE9iamVjdCkKK0pTTWFwSXRlcmF0b3IqIEpTTWFw
SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCit7CisgICAgSlNNYXBJdGVyYXRvciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU01hcEl0ZXJhdG9yPih2bS5oZWFwKSkgSlNNYXBJdGVyYXRvcih2bSwgc3Ry
dWN0dXJlKTsKKyAgICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBp
dGVyYXRvcjsKK30KKwordm9pZCBKU01hcEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTTWFwKiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpNYXBCdWNrZXQp
LnNldCh2bSwgdGhpcywgaXRlcmF0ZWRPYmplY3QtPmhlYWQoKSk7CisgICAgaW50ZXJuYWxGaWVs
ZChGaWVsZDo6SXRlcmF0ZWRPYmplY3QpLnNldCh2bSwgdGhpcywgaXRlcmF0ZWRPYmplY3QpOwor
ICAgIGludGVybmFsRmllbGQoRmllbGQ6OktpbmQpLnNldCh2bSwgdGhpcywganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oa2luZCkpKTsKK30KKwordm9pZCBKU01hcEl0ZXJhdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAg
IG1fbWFwLnNldCh2bSwgdGhpcywgaXRlcmF0ZWRPYmplY3QpOwotICAgIHNldEl0ZXJhdG9yKHZt
LCBtX21hcC0+aGVhZCgpKTsKKyAgICBhdXRvIHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4
KQorICAgICAgICBCYXNlOjppbnRlcm5hbEZpZWxkKGluZGV4KS5zZXQodm0sIHRoaXMsIHZhbHVl
c1tpbmRleF0pOwogfQogCiB2b2lkIEpTTWFwSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBKU01hcEl0ZXJhdG9yKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTTWFwSXRlcmF0b3IqPihjZWxsKTsKKyAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTTWFwSXRlcmF0b3IqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21h
cCk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pdGVyKTsKIH0KIAogSlNWYWx1
ZSBKU01hcEl0ZXJhdG9yOjpjcmVhdGVQYWlyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUga2V5LCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNYXBJdGVyYXRvci5oCmluZGV4IDZlMWZhMGNmYzY4NWU0YmEzNWNlYTM5ZmY3ZTJl
ZTdmYWE2ZDliOTguLmUyMThiNjVhNDkyNWFiNjBhOTYzYWRlNDMzYTQ5Mjg0OTUxZGM2ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmgKQEAgLTMx
LDE2ICszMSwzMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotLy8gTm93LCBpdCBpcyBvbmx5IHVz
ZWQgZm9yIHNlcmlhbGl6YXRpb24uCi0vLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsIHRvIGltcGxlbWVudCByZWFsIEpTTWFwSXRlcmF0b3IgdXNlZCBpbiBK
U0MuCi0vLyBDdXJyZW50bHksIEpTQyBpcyB1c2luZyBmaW5hbCBvYmplY3RzIHRvIGltcGxlbWVu
dCBNYXBJdGVyYXRvci4KLWNsYXNzIEpTTWFwSXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKLSAgICB0eXBlZGVmIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT4g
SGFzaE1hcEJ1Y2tldFR5cGU7CitjbGFzcyBKU01hcEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Mz4gewogcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBK
U0NlbGw7CisgICAgdXNpbmcgSGFzaE1hcEJ1Y2tldFR5cGUgPSBIYXNoTWFwQnVja2V0PEhhc2hN
YXBCdWNrZXREYXRhS2V5VmFsdWU+OworICAgIHVzaW5nIEJhc2UgPSBKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsPDM+OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAorICAgIGVudW0gY2xh
c3MgRmllbGQgOiB1aW50OF90IHsKKyAgICAgICAgTWFwQnVja2V0ID0gMCwKKyAgICAgICAgSXRl
cmF0ZWRPYmplY3QsCisgICAgICAgIEtpbmQsCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51
bWJlck9mSW50ZXJuYWxGaWVsZHMgPT0gMyk7CisKKyAgICBzdGF0aWMgc3RkOjphcnJheTxKU1Zh
bHVlLCBudW1iZXJPZkludGVybmFsRmllbGRzPiBpbml0aWFsVmFsdWVzKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB7IHsKKyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAgICAgICAganNOdWxs
KCksCisgICAgICAgICAgICBqc051bWJlcigwKSwKKyAgICAgICAgfSB9OworICAgIH0KKworICAg
IGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkg
Y29uc3QgeyByZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4o
ZmllbGQpKTsgfQorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVs
ZCBmaWVsZCkgeyByZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJf
dD4oZmllbGQpKTsgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0p
CiAgICAgewpAQCAtNDksNTAgKzY1LDU4IEBAIGNsYXNzIEpTTWFwSXRlcmF0b3IgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oSlNNYXBJdGVyYXRvclR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNNYXBJdGVyYXRvciogY3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTWFwKiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBr
aW5kKQogICAgIHsKLSAgICAgICAgSlNNYXBJdGVyYXRvciogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU01hcEl0ZXJhdG9yPih2bS5oZWFwKSkgSlNNYXBJdGVyYXRvcih2
bSwgc3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwga2luZCk7Ci0gICAgICAgIGluc3RhbmNlLT5m
aW5pc2hDcmVhdGlvbih2bSwgaXRlcmF0ZWRPYmplY3QpOworICAgICAgICBKU01hcEl0ZXJhdG9y
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTWFwSXRlcmF0b3I+KHZt
LmhlYXApKSBKU01hcEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBpbnN0YW5jZS0+
ZmluaXNoQ3JlYXRpb24odm0sIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKICAgICAgICAgcmV0dXJu
IGluc3RhbmNlOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1Y2tldFR5cGUq
IGFkdmFuY2VJdGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpT
TWFwSXRlcmF0b3IqIGNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiwgU3RydWN0dXJlKik7CisK
KyAgICBBTFdBWVNfSU5MSU5FIEhhc2hNYXBCdWNrZXRUeXBlKiBhZHZhbmNlSXRlcihWTSYgdm0p
CiAgICAgewotICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogcHJldiA9IG1faXRlci5nZXQoKTsK
LSAgICAgICAgaWYgKCFwcmV2KQorICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogcHJldiA9IGl0
ZXJhdG9yKCk7CisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBzZW50aW5lbCA9IGpzQ2FzdDxI
YXNoTWFwQnVja2V0VHlwZSo+KHZtLnNlbnRpbmVsTWFwQnVja2V0KCkpOworICAgICAgICBpZiAo
cHJldiA9PSBzZW50aW5lbCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBW
TSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSog
YnVja2V0ID0gbV9pdGVyLT5uZXh0KCk7CisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNr
ZXQgPSBwcmV2LT5uZXh0KCk7CiAgICAgICAgIHdoaWxlIChidWNrZXQgJiYgYnVja2V0LT5kZWxl
dGVkKCkpCiAgICAgICAgICAgICBidWNrZXQgPSBidWNrZXQtPm5leHQoKTsKICAgICAgICAgaWYg
KCFidWNrZXQpIHsKLSAgICAgICAgICAgIHNldEl0ZXJhdG9yKHZtLCBudWxscHRyKTsKKyAgICAg
ICAgICAgIHNldEl0ZXJhdG9yKHZtLCBzZW50aW5lbCk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQotICAgICAgICBzZXRJdGVyYXRvcih2bSwgYnVja2V0KTsgLy8gV2Ug
a2VlcCBtX2l0ZXIgb24gdGhlIGxhc3QgdmFsdWUgc2luY2UgdGhlIGZpcnN0IHRoaW5nIHdlIGRv
IGluIHRoaXMgZnVuY3Rpb24gaXMgY2FsbCBuZXh0KCkuCisgICAgICAgIHNldEl0ZXJhdG9yKHZt
LCBidWNrZXQpOyAvLyBXZSBrZWVwIGl0ZXJhdG9yIG9uIHRoZSBsYXN0IHZhbHVlIHNpbmNlIHRo
ZSBmaXJzdCB0aGluZyB3ZSBkbyBpbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGwgbmV4dCgpLgogICAg
ICAgICByZXR1cm4gYnVja2V0OwogICAgIH0KKwogICAgIGJvb2wgbmV4dChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXBC
dWNrZXRUeXBlKiBidWNrZXQgPSBhZHZhbmNlSXRlcihnbG9iYWxPYmplY3QpOworICAgICAgICBI
YXNoTWFwQnVja2V0VHlwZSogYnVja2V0ID0gYWR2YW5jZUl0ZXIoZ2V0Vk0oZ2xvYmFsT2JqZWN0
KSk7CiAgICAgICAgIGlmICghYnVja2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIGlmIChtX2tpbmQgPT0gSXRlcmF0aW9uS2luZDo6VmFsdWVzKQorICAgICAgICBzd2l0
Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIEl0ZXJhdGlvbktpbmQ6OlZhbHVlczoKICAgICAg
ICAgICAgIHZhbHVlID0gYnVja2V0LT52YWx1ZSgpOwotICAgICAgICBlbHNlIGlmIChtX2tpbmQg
PT0gSXRlcmF0aW9uS2luZDo6S2V5cykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEl0ZXJhdGlvbktpbmQ6OktleXM6CiAgICAgICAgICAgICB2YWx1ZSA9IGJ1Y2tldC0+a2V5KCk7
Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEl0ZXJhdGlv
bktpbmQ6OkVudHJpZXM6CiAgICAgICAgICAgICB2YWx1ZSA9IGNyZWF0ZVBhaXIoZ2xvYmFsT2Jq
ZWN0LCBidWNrZXQtPmtleSgpLCBidWNrZXQtPnZhbHVlKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgYm9vbCBuZXh0
S2V5VmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSYga2V5LCBKU1Zh
bHVlJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBh
ZHZhbmNlSXRlcihnbG9iYWxPYmplY3QpOworICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVj
a2V0ID0gYWR2YW5jZUl0ZXIoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGlmICghYnVj
a2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDEsMjcgKzEyNSwyNCBAQCBj
bGFzcyBKU01hcEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIEl0ZXJhdGlvbktpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJu
IG1fa2luZDsgfQotICAgIEpTVmFsdWUgaXRlcmF0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwLmdldCgpOyB9CisgICAgSXRlcmF0aW9uS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SXRlcmF0aW9uS2luZD4oaW50ZXJuYWxGaWVsZChGaWVsZDo6S2luZCkuZ2V0KCku
YXNVSW50MzJBc0FueUludCgpKTsgfQorICAgIEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmllbGQ6Okl0ZXJh
dGVkT2JqZWN0KS5nZXQoKSk7IH0KKyAgICBIYXNoTWFwQnVja2V0VHlwZSogaXRlcmF0b3IoKSBj
b25zdCB7IHJldHVybiBqc0Nhc3Q8SGFzaE1hcEJ1Y2tldFR5cGUqPihpbnRlcm5hbEZpZWxkKEZp
ZWxkOjpNYXBCdWNrZXQpLmdldCgpKTsgfQogCiBwcml2YXRlOgotICAgIEpTTWFwSXRlcmF0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNNYXAqLCBJdGVyYXRpb25LaW5kIGtpbmQp
CisgICAgSlNNYXBJdGVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAgICAgICAgLCBtX2tpbmQoa2luZCkKICAgICB7IH0K
IAogICAgIHZvaWQgc2V0SXRlcmF0b3IoVk0mIHZtLCBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0
KQogICAgIHsKLSAgICAgICAgbV9pdGVyLnNldE1heUJlTnVsbCh2bSwgdGhpcywgYnVja2V0KTsK
KyAgICAgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6TWFwQnVja2V0KS5zZXQodm0sIHRoaXMsIGJ1
Y2tldCk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTTWFwKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTTWFwKiwgSXRlcmF0aW9uS2luZCk7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYpOwogICAgIEpTVmFsdWUgY3JlYXRlUGFpcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpT
VmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKLQotICAgIFdyaXRlQmFycmllcjxKU01hcD4gbV9tYXA7Ci0gICAgV3JpdGVCYXJyaWVy
PEhhc2hNYXBCdWNrZXRUeXBlPiBtX2l0ZXI7Ci0gICAgSXRlcmF0aW9uS2luZCBtX2tpbmQ7CiB9
OwogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTTWFwSXRlcmF0b3Ip
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAppbmRleCBiMDJiMzQ3
ZDZhNTAwNDU1M2I1OTJlYzY0YjRjMTQ0ZTMwOGRkMGNmLi4xN2Y3YTVjNzE2MDZlNjViNmIwNjIy
ZjA0YjkwNjRkZWU3YjlmNDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgSlNDOjpKU1R5cGUgdHlwZSkKICAgICBDQVNFKEpTR2VuZXJhdG9yVHlwZSkKICAgICBD
QVNFKEpTQXN5bmNHZW5lcmF0b3JUeXBlKQogICAgIENBU0UoSlNBcnJheUl0ZXJhdG9yVHlwZSkK
KyAgICBDQVNFKEpTTWFwSXRlcmF0b3JUeXBlKQogICAgIENBU0UoSlNTdHJpbmdJdGVyYXRvclR5
cGUpCiAgICAgQ0FTRShKU1Byb21pc2VUeXBlKQogICAgIENBU0UoSlNNYXBUeXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA0ODM2ZjkxYjBiYjRiMzY0ZWY3ZTE0
ZTNjM2U5YjEyYTNmNjEwMWYwLi4xYjE2NjdjMDdlZTdjNjFlYjJiNDI0OGQyZjM0MjNmODNmMTgx
ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtMTEyLDYgKzEx
Miw3IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgSlNHZW5lcmF0b3JUeXBlLAogICAg
IEpTQXN5bmNHZW5lcmF0b3JUeXBlLAogICAgIEpTQXJyYXlJdGVyYXRvclR5cGUsCisgICAgSlNN
YXBJdGVyYXRvclR5cGUsCiAgICAgSlNTdHJpbmdJdGVyYXRvclR5cGUsCiAgICAgSlNQcm9taXNl
VHlwZSwKICAgICBKU01hcFR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDI5YTExNjcw
YjI1YzFiMGUzYTNjNmZkNzg5YzBiNmMxNzgwZDA2ZjguLmYyYmZiNzM0ZDYwYmJmZjhmOTg4ZWE2
ZmUxOTU5ZDg4YTAzNDJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCkBAIC0zMzUsNyArMzM1
LDcgQEAgdm9pZCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oImV2ZXJ5IiwgdHlwZWRBcnJheVByb3RvdHlwZUV2ZXJ5Q29kZUdl
bmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZmlsdGVy
IiwgdHlwZWRBcnJheVByb3RvdHlwZUZpbHRlckNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNvcnQiLCB0eXBlZEFycmF5UHJvdG90eXBlU29y
dENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKLSAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgdHlwZWRBcnJheVByb3RvVmlld0Z1
bmNFbnRyaWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMCwgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVfSU5U
UklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCB0eXBlZEFycmF5UHJvdG9WaWV3RnVuY0Vu
dHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCAwLCBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04oImluY2x1ZGVzIiwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJ
bmNsdWRlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIDEpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZmls
bCIsIHR5cGVkQXJyYXlQcm90b3R5cGVGaWxsQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19CVUlMVElOX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZmluZCIsIHR5cGVkQXJyYXlQcm90b3R5cGVGaW5k
Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSlNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAg
ICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmZvckVhY2gsIHR5cGVkQXJyYXlQcm90b3R5cGVGb3JFYWNoQ29kZUdlbmVyYXRvciwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJpbmRleE9mIiwgdHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNJbmRleE9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+am9pbiwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNK
b2luLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
MSk7Ci0gICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jS2V5cywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIFR5cGVk
QXJyYXlLZXlzSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1
YmxpY05hbWUoKSwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNLZXlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgVHlwZWRBcnJheUtleXNJbnRy
aW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJsYXN0
SW5kZXhPZiIsIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0NfTkFU
SVZFX0lOVFJJTlNJQ19HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5LCBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljKTsKICAgICBKU0NfQlVJTFRJ
Tl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oIm1hcCIsIHR5cGVkQXJyYXlQcm90b3R5cGVN
YXBDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBKU1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
ICAgICBHZXR0ZXJTZXR0ZXIqIHRvU3RyaW5nVGFnQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0b1N0cmluZ1RhZ0Z1bmN0aW9uLCBudWxscHRyKTsKICAg
ICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCB0b1N0cmluZ1RhZ0FjY2Vzc29yLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCi0gICAgSlNGdW5jdGlvbiogdmFsdWVzRnVuY3Rp
b24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlO
YW1lcy0+dmFsdWVzLnN0cmluZygpLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1ZhbHVlcywgVHlw
ZWRBcnJheVZhbHVlc0ludHJpbnNpYyk7CisgICAgSlNGdW5jdGlvbiogdmFsdWVzRnVuY3Rpb24g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpLnN0cmluZygpLCB0eXBlZEFycmF5
Vmlld1Byb3RvRnVuY1ZhbHVlcywgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYyk7CiAKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkudmFsdWVzUHVibGljTmFtZSgpLCB2YWx1ZXNGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgdmFsdWVz
RnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3Bw
CmluZGV4IDNiYWU4N2ViNTQ2OWRkNjliNDBiZjVkMTNiYTQ3ZDkxMDUzZDE2NjIuLmRkZmEzZmVl
ZDMyNjAyODk1NWI0ZGE0MWZlNzAwMWE2Mzc1MDliZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMb29r
dXAuaCIKIAogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5sdXQuaCIKQEAgLTQzLDggKzQ0LDYgQEAg
Y29uc3QgQ2xhc3NJbmZvIE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6OnNf
aW5mbywgJm1hcFByb3RvdHlwZVRhYmwKIC8qIFNvdXJjZSBmb3IgTWFwUHJvdG90eXBlLmx1dC5o
CiBAYmVnaW4gbWFwUHJvdG90eXBlVGFibGUKICAgZm9yRWFjaCAgIEpTQnVpbHRpbiAgRG9udEVu
dW18RnVuY3Rpb24gMAotICB2YWx1ZXMgICAgSlNCdWlsdGluICBEb250RW51bXxGdW5jdGlvbiAw
Ci0gIGtleXMgICAgICBKU0J1aWx0aW4gIERvbnRFbnVtfEZ1bmN0aW9uIDAKIEBlbmQKICovCiAK
QEAgLTUzLDYgKzUyLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFw
UHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW0KIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9G
dW5jSGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1Zh
bHVlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jS2V5cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRW50
cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiAgICAgCkBAIC02NiwxMSArNjgsMTMgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0Nf
TkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+Z2V0LCBtYXBQcm90b0Z1bmNHZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU01hcEdldEludHJpbnNpYyk7CiAgICAgSlNDX05B
VElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmhhcywgbWFwUHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNNYXBIYXNJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJ
VkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5zZXQsIG1hcFByb3RvRnVuY1NldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDIsIEpTTWFwU2V0SW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZF
X0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgbWFwUHJvdG9GdW5jS2V5cywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIEpTTWFwS2V5
c0ludHJpbnNpYyk7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05h
bWUoKSwgbWFwUHJvdG9GdW5jVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgSlNNYXBWYWx1ZXNJbnRyaW5zaWMpOwogCiAgICAgSlND
X05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCksIG1hcFByb3RvRnVuY0dldCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpT
TWFwR2V0SW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0UHJpdmF0
ZU5hbWUoKSwgbWFwUHJvdG9GdW5jU2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMiwgSlNNYXBTZXRJbnRyaW5zaWMpOwogCi0gICAgSlNGdW5j
dGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgbWFwUHJvdG90eXBlRW50cmll
c0NvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVuY3Rpb24qIGVudHJp
ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgbWFwUHJv
dG9GdW5jRW50cmllcywgSlNNYXBFbnRyaWVzSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmll
c1B1YmxpY05hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNO
b250cml2aWFsU3RyaW5nKHZtLCAiTWFwIl9zKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKQEAgLTE0MCw2ICsxNDQsMzEgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEYKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1
ZSk7CiB9CiAKK2lubGluZSBKU1ZhbHVlIGNyZWF0ZU1hcEl0ZXJhdG9yT2JqZWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBJdGVyYXRpb25LaW5k
IGtpbmQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKKyAgICBKU01hcCogbWFwID0gZ2V0
TWFwKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICBpZiAoIW1hcCkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCBtYXAsIGtpbmQpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1ZhbHVlcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZU1hcEl0ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBJdGVyYXRpb25LaW5kOjpWYWx1ZXMpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNLZXlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY3Jl
YXRlTWFwSXRlcmF0b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIEl0ZXJhdGlvbktp
bmQ6OktleXMpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1
bmNFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY3JlYXRlTWFwSXRlcmF0b3JPYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXMpKTsKK30K
KwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIEpTTWFw
KiBtYXAgPSBnZXRNYXAoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA2OWU1MmVhNjY3YzI1NDI5YmUwOTY1
ZmI0MjFkOWI4OGM5NzAyNmRlLi5iMDIwMDQ5MWE4OWU4NzFlODg2ZGZmMGQ1MDRmY2M5ZWM0MmJm
ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNTQ5LDIwICsxNTQ5
LDYgQEAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGkKIAogI3VuZGVmIERZTkFNSUNfU1BBQ0VfQU5E
X1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKIAotU3RydWN0dXJlKiBWTTo6c2V0SXRlcmF0b3JTdHJ1
Y3R1cmVTbG93KCkKLXsKLSAgICBBU1NFUlQoIW1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUpOwotICAg
IG1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NldEl0ZXJhdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgcmV0dXJuIG1fc2V0SXRlcmF0b3JT
dHJ1Y3R1cmUuZ2V0KCk7Ci19Ci0KLVN0cnVjdHVyZSogVk06Om1hcEl0ZXJhdG9yU3RydWN0dXJl
U2xvdygpCi17Ci0gICAgQVNTRVJUKCFtX21hcEl0ZXJhdG9yU3RydWN0dXJlKTsKLSAgICBtX21h
cEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHJldHVybiBtX21hcEl0ZXJhdG9yU3RydWN0
dXJlLmdldCgpOwotfQotCiBKU0NlbGwqIFZNOjpzZW50aW5lbFNldEJ1Y2tldFNsb3coKQogewog
ICAgIEFTU0VSVCghbV9zZW50aW5lbFNldEJ1Y2tldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCA5ZTk4ZDUzYzUzYTRmN2ZmZGE0ZjA2ZWRhZmQ3NzkzNTI5NDQ5YjM4Li5mMGE0
OTMxZTgyMTY5NjJiNWZlNTA0NzZkNmJkZDQ2Mjc3YjAyOTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTY5OCw5ICs2OTgsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGJpZ0ludFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3RydWN0dXJlOwogCi0gICAgU3Ryb25nPFN0cnVj
dHVyZT4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBtX21h
cEl0ZXJhdG9yU3RydWN0dXJlOwotCiAgICAgU3Ryb25nPEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cj4gbV9lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAKICAgICBTdHJvbmc8SlNDZWxsPiBt
X3NlbnRpbmVsU2V0QnVja2V0OwpAQCAtNzMzLDIwICs3MzAsNiBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxW
TT4gewogCiAgICAgU3Ryb25nPEpTQmlnSW50PiBiaWdJbnRDb25zdGFudE9uZTsKIAotICAgIFN0
cnVjdHVyZSogc2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKQotICAgIHsKLSAgICAgICAgaWYgKExJS0VM
WShtX3NldEl0ZXJhdG9yU3RydWN0dXJlKSkKLSAgICAgICAgICAgIHJldHVybiBtX3NldEl0ZXJh
dG9yU3RydWN0dXJlLmdldCgpOwotICAgICAgICByZXR1cm4gc2V0SXRlcmF0b3JTdHJ1Y3R1cmVT
bG93KCk7Ci0gICAgfQotCi0gICAgU3RydWN0dXJlKiBtYXBJdGVyYXRvclN0cnVjdHVyZSgpCi0g
ICAgewotICAgICAgICBpZiAoTElLRUxZKG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUpKQotICAgICAg
ICAgICAgcmV0dXJuIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7Ci0gICAgICAgIHJldHVy
biBtYXBJdGVyYXRvclN0cnVjdHVyZVNsb3coKTsKLSAgICB9Ci0KICAgICBKU0NlbGwqIHNlbnRp
bmVsU2V0QnVja2V0KCkKICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkobV9zZW50aW5lbFNldEJ1
Y2tldCkpCkBAIC0xMTI3LDggKzExMTAsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIHN0
YXRpYyBWTSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICB2b2lkIGNyZWF0ZU5hdGl2
ZVRodW5rKCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIHNldEl0ZXJhdG9y
U3RydWN0dXJlU2xvdygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSogbWFwSXRl
cmF0b3JTdHJ1Y3R1cmVTbG93KCk7CiAgICAgSlNDZWxsKiBzZW50aW5lbFNldEJ1Y2tldFNsb3co
KTsKICAgICBKU0NlbGwqIHNlbnRpbmVsTWFwQnVja2V0U2xvdygpOwogICAgIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvciogZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU2xvdygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395503</attachid>
            <date>2020-04-05 05:27:12 -0700</date>
            <delta_ts>2020-04-05 22:41:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210023-20200405052711.patch</filename>
            <type>text/plain</type>
            <size>85857</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjVhMmMwZWU3NjJmOTE1MzY2ZTFiMGEwYjI4OGM2NDMxOTJmZjNkLi4yZWVmYTZlMmFjNTk0ZDlj
N2RjYzFhYmI1ZjBhNDNlY2Y4ZjZiODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMjAtMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgSlNNYXBJdGVyYXRvciB3aXRoIEpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMDAyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVpbXBsZW1lbnQgSlNNYXBJdGVyYXRvciB3aXRoIEpTSW50
ZXJuYWxGaWVsZE9iamVjdEltcGwuCisgICAgICAgIFRoaXMgbWFrZXMgY3VycmVudCBKU0ZpbmFs
T2JqZWN0LWJhc2VkIE1hcEl0ZXJhdG9yIHNpbXBsZSBhbmQgc21hbGwuCisgICAgICAgIEFuZCB3
ZSBhZGQgbmVjZXNzYXJ5IHN1cHBvcnQgb2YgSlNNYXBJdGVyYXRvciBpbiBERkcgLyBGVEwgdG8g
bWFrZQorICAgICAgICBKU01hcEl0ZXJhdG9yIGFsbG9jYXRpb24gZWZmaWNpZW50IGFuZCBvYmpl
Y3QtYWxsb2NhdGlvbi1zaW5raW5nIGF3YXJlLgorCisgICAgICAgIFdlIHdpbGwgZG8gdGhlIHNh
bWUgdGhpbmcgZm9yIEpTU2V0SXRlcmF0b3IgbmV4dC4KKworICAgICAgICAqIGJ1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90eXBlLmpz
OgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5tYXBJdGVyYXRvck5leHQpOgorICAgICAgICAobmV4
dCk6CisgICAgICAgICogYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFs
UHJpdmF0ZS5NYXBJdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICh2YWx1ZXMpOiBEZWxldGVk
LgorICAgICAgICAoa2V5cyk6IERlbGV0ZWQuCisgICAgICAgIChlbnRyaWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdElzTWFwSXRlcmF0b3IpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjptYXBJdGVyYXRvckludGVy
bmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1p
dF9pbnRyaW5zaWNfZ2V0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRNYXBJdGVyYXRvckludGVy
bmFsRmllbGQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGlu
Z1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b21OZXdNYXBJdGVyYXRvcik6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
Ojppc1BoYW50b21BbGxvY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6
CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4
ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdNYXBJdGVyYXRvcik6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZU5ld01hcEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU1hdGVyaWFsaXplTmV3SW50ZXJuYWxGaWVsZE9iamVjdCk6CisgICAgICAgICogZnRs
L0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvblBvcHVsYXRl
T2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXplT2Jq
ZWN0SW5PU1IpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFBy
b3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpjbG9uZU1hcEl0ZXJhdG9yT2JqZWN0KToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmll
cyk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAgKEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAg
ICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVy
YXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclByb3RvdHlwZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXBJdGVyYXRvclN0cnVjdHVyZSBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNNYXBJdGVyYXRvcjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMpOgorICAgICAgICAoSlNDOjpK
U01hcEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTWFwSXRlcmF0
b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5h
bCk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlTWFwSXRlcmF0b3JPYmplY3QpOgorICAgICAgICAoSlNDOjptYXBQ
cm90b0Z1bmNWYWx1ZXMpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNLZXlzKToKKyAgICAg
ICAgKEpTQzo6bWFwUHJvdG9GdW5jRW50cmllcyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgIChKU0M6OlZNOjpzZXRJdGVyYXRvclN0cnVjdHVyZVNsb3cpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpWTTo6bWFwSXRlcmF0b3JTdHJ1Y3R1cmVTbG93KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpzZXRJdGVyYXRvclN0cnVj
dHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjptYXBJdGVyYXRvclN0cnVjdHVyZSk6
IERlbGV0ZWQuCisKIDIwMjAtMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBKU0FycmF5SXRlcmF0b3IncyBzaXplIGlzIHdyb25nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNTg4MjkyYTkyZTgyNWZmNzQwNTIxODMwMzkzODJiMWMzZmQ2ZTkzNS4uZjViZjJk
NzEwNTI0MmU2YjgzM2FkOTllYTg4Nzk4NTJjMDhhYjBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDIwLTA0LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gSW1wbGVtZW50IEpTTWFwSXRlcmF0b3Igd2l0aCBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTAwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisKKzIwMjAtMDQtMDUgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQg
SlNNYXBJdGVyYXRvciB3aXRoIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDAyMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKwogMjAyMC0wNC0w
NCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBMb2NrSGlz
dG9yeSBwYXJhbWV0ZXIgZnJvbSBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCAxOTcwYzlmNDMwNjA4
NzIxYTJhMzI1NmIyNmUyZTQ2YjNjODNhNmQyLi41MzVjN2UwMjZjODBmN2Y0OTFlZGExNWU0OTlk
NTdkN2E4NmI1NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCkBAIC04NSw2ICs4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHJl
cGVhdENoYXJhY3RlcikgXAogICAgIG1hY3JvKHN0YXJEZWZhdWx0KSBcCiAgICAgbWFjcm8oSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uKSBcCisgICAgbWFjcm8oa2V5cykgXAogICAgIG1hY3JvKGdl
dCkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3JvKHNoaWZ0KSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwSXRlcmF0b3JQcm90b3R5cGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwSXRlcmF0b3JQcm90b3R5cGUuanMKaW5k
ZXggZmZmY2VlOGEzNGM2MDg5NDNlMTBmZjkwOTRjMGM5YjJhMzE3MDdhMS4uNjk0MDMxYjhhMGQw
ZTY0NmRhM2YyNjE0YTBiMTEzNzk5MjA5YzM4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9NYXBJdGVyYXRvclByb3RvdHlwZS5qcwpAQCAtMzEsNyArMzEs
NyBAQCBmdW5jdGlvbiBtYXBJdGVyYXRvck5leHQoYnVja2V0LCBraW5kKQogICAgIHZhciB2YWx1
ZTsKIAogICAgIGJ1Y2tldCA9IEBtYXBCdWNrZXROZXh0KGJ1Y2tldCk7Ci0gICAgQHB1dEJ5SWRE
aXJlY3RQcml2YXRlKHRoaXMsICJtYXBCdWNrZXQiLCBidWNrZXQpOworICAgIEBwdXRNYXBJdGVy
YXRvckludGVybmFsRmllbGQodGhpcywgQG1hcEl0ZXJhdG9yRmllbGRNYXBCdWNrZXQsIGJ1Y2tl
dCk7CiAgICAgdmFyIGRvbmUgPSBidWNrZXQgPT09IEBzZW50aW5lbE1hcEJ1Y2tldDsKICAgICBp
ZiAoIWRvbmUpIHsKICAgICAgICAgdmFyIGtleSA9IEBtYXBCdWNrZXRLZXkoYnVja2V0KTsKQEAg
LTQ4LDExICs0OCwxMCBAQCBmdW5jdGlvbiBuZXh0KCkKIHsKICAgICAidXNlIHN0cmljdCI7CiAK
LSAgICBpZiAoQGlzVW5kZWZpbmVkT3JOdWxsKHRoaXMpKQotICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoIiVNYXBJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3Qg
YmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICBpZiAoIUBpc01hcEl0ZXJhdG9yKHRoaXMpKQor
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVNYXBJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1
aXJlcyB0aGF0IHx0aGlzfCBiZSBhbiBNYXAgSXRlcmF0b3IgaW5zdGFuY2UiKTsKIAotICAgIHZh
ciBidWNrZXQgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgIm1hcEJ1Y2tldCIpOwotICAg
IGlmIChidWNrZXQgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiJU1h
cEl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEgTWFwIEl0
ZXJhdG9yIGluc3RhbmNlIik7Ci0gICAgcmV0dXJuIEBtYXBJdGVyYXRvck5leHQuQGNhbGwodGhp
cywgYnVja2V0LCBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgIm1hcEl0ZXJhdG9yS2luZCIp
KTsKKyAgICB2YXIgYnVja2V0ID0gQGdldE1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBA
bWFwSXRlcmF0b3JGaWVsZE1hcEJ1Y2tldCk7CisgICAgdmFyIGtpbmQgPSBAZ2V0TWFwSXRlcmF0
b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBtYXBJdGVyYXRvckZpZWxkS2luZCk7CisgICAgcmV0dXJu
IEBtYXBJdGVyYXRvck5leHQuQGNhbGwodGhpcywgYnVja2V0LCBraW5kKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBQcm90b3R5cGUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpzCmluZGV4IDhhNWJkM2My
NmY3ZWExNTU0ZWNiMDlhMTgzNWYxNGVkZDNkZGRkYzcuLmNjNmIzYWFkZmY2NTcxMmQ4OTYyMzZh
YjllZWQ1YTg2ZGFmM2U4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9NYXBQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L01hcFByb3RvdHlwZS5qcwpAQCAtMjMsNDggKzIzLDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotQGNvbnN0cnVjdG9yCi1AZ2xvYmFsUHJpdmF0ZQotZnVuY3Rpb24gTWFwSXRlcmF0b3IoaXRl
cmF0ZWRPYmplY3QsIGtpbmQpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgQGFzc2VydChA
aXNNYXAoaXRlcmF0ZWRPYmplY3QpKTsKLSAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhpcywg
Iml0ZXJhdGVkT2JqZWN0IiwgaXRlcmF0ZWRPYmplY3QpOwotICAgIEBwdXRCeUlkRGlyZWN0UHJp
dmF0ZSh0aGlzLCAibWFwSXRlcmF0b3JLaW5kIiwga2luZCk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQ
cml2YXRlKHRoaXMsICJtYXBCdWNrZXQiLCBAbWFwQnVja2V0SGVhZChpdGVyYXRlZE9iamVjdCkp
OwotfQotCi1mdW5jdGlvbiB2YWx1ZXMoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlm
ICghQGlzTWFwKHRoaXMpKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk1hcC5wcm90b3R5cGUu
dmFsdWVzIHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIE1hcCIpOwotCi0gICAgcmV0dXJuIG5ldyBA
TWFwSXRlcmF0b3IodGhpcywgQGl0ZXJhdGlvbktpbmRWYWx1ZSk7Ci19Ci0KLWZ1bmN0aW9uIGtl
eXMoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlzTWFwKHRoaXMpKQotICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoIk1hcC5wcm90b3R5cGUua2V5cyByZXF1aXJlcyB0aGF0IHx0
aGlzfCBiZSBNYXAiKTsKLQotICAgIHJldHVybiBuZXcgQE1hcEl0ZXJhdG9yKHRoaXMsIEBpdGVy
YXRpb25LaW5kS2V5KTsKLX0KLQotZnVuY3Rpb24gZW50cmllcygpCi17Ci0gICAgInVzZSBzdHJp
Y3QiOwotCi0gICAgaWYgKCFAaXNNYXAodGhpcykpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigi
TWFwLnByb3RvdHlwZS5lbnRyaWVzIHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIE1hcCIpOwotCi0g
ICAgcmV0dXJuIG5ldyBATWFwSXRlcmF0b3IodGhpcywgQGl0ZXJhdGlvbktpbmRFbnRyaWVzKTsK
LX0KLQogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKIHsKICAgICAi
dXNlIHN0cmljdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggMzJhYWY4N2Y0YzU2YTA0
ODY2NDQ4ZTQ3OWM1MzlhNzYzYTE5Y2ExMC4uZGJkNWUxZGMxNTJiNzJmZTNlNWM0ZWE5Mzk3ZmU1
OTQwYjI5NWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmdJdGVyYXRvci5oIgpAQCAtOTIsNiArOTMsOCBAQCBCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZNJiB2bSkKICAgICBtX2FycmF5SXRl
cmF0b3JGaWVsZEl0ZXJhdGVkT2JqZWN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJdGVyYXRlZE9iamVjdCkpKTsKICAgICBt
X2FycmF5SXRlcmF0b3JGaWVsZEluZGV4LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpKTsKICAgICBtX2FycmF5SXRl
cmF0b3JGaWVsZEtpbmQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
QXJyYXlJdGVyYXRvcjo6RmllbGQ6OktpbmQpKSk7CisgICAgbV9tYXBJdGVyYXRvckZpZWxkTWFw
QnVja2V0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU01hcEl0ZXJh
dG9yOjpGaWVsZDo6TWFwQnVja2V0KSkpOworICAgIG1fbWFwSXRlcmF0b3JGaWVsZEtpbmQuc2V0
KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTTWFwSXRlcmF0b3I6OkZpZWxk
OjpLaW5kKSkpOwogICAgIG1fc3RyaW5nSXRlcmF0b3JGaWVsZEluZGV4LnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU1N0cmluZ0l0ZXJhdG9yOjpGaWVsZDo6SW5kZXgp
KSk7CiAgICAgbV9zdHJpbmdJdGVyYXRvckZpZWxkSXRlcmF0ZWRTdHJpbmcuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTU3RyaW5nSXRlcmF0b3I6OkZpZWxkOjpJdGVy
YXRlZFN0cmluZykpKTsKICAgICBtX2FzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uLnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNBc3luY0dlbmVyYXRvcjo6
RmllbGQ6OlN1c3BlbmRSZWFzb24pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAppbmRleCA5YmYyYzQw
ZTE3YmQzNDcxNTNiNmIzOTZmNjJlZmI2YmU5YjQ5MDkxLi4zMjI5ODgzYTVkZTQ3ZmJlMTVlY2Ux
ZmY5MDYwN2I3OGM4MWZhN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKQEAgLTQ3LDYgKzQ3LDcg
QEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhnZXRB
c3luY0dlbmVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhnZXRBcnJheUl0ZXJhdG9y
SW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGdldFN0cmluZ0l0ZXJhdG9ySW50ZXJuYWxGaWVs
ZCkgXAorICAgIG1hY3JvKGdldE1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3Jv
KGlkV2l0aFByb2ZpbGUpIFwKICAgICBtYWNybyhpc09iamVjdCkgXAogICAgIG1hY3JvKGlzSlNB
cnJheSkgXApAQCAtNjAsNiArNjEsNyBAQCBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBp
bnQzMl90OwogICAgIG1hY3JvKGlzU2V0KSBcCiAgICAgbWFjcm8oaXNTdHJpbmdJdGVyYXRvcikg
XAogICAgIG1hY3JvKGlzQXJyYXlJdGVyYXRvcikgXAorICAgIG1hY3JvKGlzTWFwSXRlcmF0b3Ip
IFwKICAgICBtYWNybyhpc1VuZGVmaW5lZE9yTnVsbCkgXAogICAgIG1hY3JvKHRhaWxDYWxsRm9y
d2FyZEFyZ3VtZW50cykgXAogICAgIG1hY3JvKHRocm93VHlwZUVycm9yKSBcCkBAIC03NSw2ICs3
Nyw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAgICAgbWFjcm8o
cHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8ocHV0QXJyYXlJdGVy
YXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhwdXRTdHJpbmdJdGVyYXRvckludGVybmFs
RmllbGQpIFwKKyAgICBtYWNybyhwdXRNYXBJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBt
YWNybyh0b051bWJlcikgXAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCiAgICAgbWFjcm8odG9PYmpl
Y3QpIFwKQEAgLTEyMyw5ICsxMjYsMTAgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDog
aW50MzJfdDsKICAgICBtYWNybyhHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCkgXAogICAgIG1hY3Jv
KEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvckZpZWxk
SW5kZXgpIFwKLSAgICBtYWNybyhhcnJheUl0ZXJhdG9yRmllbGRJc0RvbmUpIFwKICAgICBtYWNy
byhhcnJheUl0ZXJhdG9yRmllbGRJdGVyYXRlZE9iamVjdCkgXAogICAgIG1hY3JvKGFycmF5SXRl
cmF0b3JGaWVsZEtpbmQpIFwKKyAgICBtYWNybyhtYXBJdGVyYXRvckZpZWxkTWFwQnVja2V0KSBc
CisgICAgbWFjcm8obWFwSXRlcmF0b3JGaWVsZEtpbmQpIFwKICAgICBtYWNybyhzdHJpbmdJdGVy
YXRvckZpZWxkSW5kZXgpIFwKICAgICBtYWNybyhzdHJpbmdJdGVyYXRvckZpZWxkSXRlcmF0ZWRT
dHJpbmcpIFwKICAgICBtYWNybyhhc3luY0dlbmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbikgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCmluZGV4IDI5ODkzNzQwYTg1YTU4NDllMzk3Mjg4NTY1MDMyYWU3NGJhZmY1NWIu
LmEzNjkyNzgzMjgyMTYzMTRjMmYxMThkYTY1NzhlNmYyYWVjOTdiODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
QEAgLTg4OSw2ICs4ODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdElzU2V0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0
SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTU2V0VHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdElzU3RyaW5nSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMp
IHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNTdHJpbmdJdGVyYXRvclR5
cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0FycmF5SXRlcmF0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3Qs
IHNyYywgSlNBcnJheUl0ZXJhdG9yVHlwZSk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElz
TWFwSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVt
aXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNNYXBJdGVyYXRvclR5cGUpOyB9CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJc09iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
Yyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc051bWJlcihSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1VuZGVmaW5lZChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNjQwYjI0OTc1NWUxMGVj
ZGQ5YTgzYjllMTRiMDk3YWIzOWZkMDk0Zi4uYzI2YjVmZjdhNDA4OTcwYWYyMTAwNjU0YmZlMDhj
NzE3NmNlNGYwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkpTR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0ltbXV0YWJs
ZUJ1dHRlcmZseS5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0
cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgogI2luY2x1ZGUgIkxleGVy
LmgiCkBAIC0xMTUzLDYgKzExNTQsMTcgQEAgc3RhdGljIEpTU3RyaW5nSXRlcmF0b3I6OkZpZWxk
IHN0cmluZ0l0ZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2kKICAgICBy
ZXR1cm4gSlNTdHJpbmdJdGVyYXRvcjo6RmllbGQ6OkluZGV4OwogfQogCitzdGF0aWMgSlNNYXBJ
dGVyYXRvcjo6RmllbGQgbWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9kZS0+
ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfbWFwSXRlcmF0b3JGaWVsZE1hcEJ1Y2tldCkKKyAgICAgICAgcmV0dXJuIEpTTWFwSXRlcmF0
b3I6OkZpZWxkOjpNYXBCdWNrZXQ7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09
ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX21hcEl0ZXJhdG9yRmllbGRL
aW5kKQorICAgICAgICByZXR1cm4gSlNNYXBJdGVyYXRvcjo6RmllbGQ6OktpbmQ7CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSlNNYXBJdGVyYXRvcjo6Rmll
bGQ6Ok1hcEJ1Y2tldDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19nZXRQcm9taXNlSW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9k
ZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTEyMTgsNiArMTIzMCwxOSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFN0cmluZ0l0ZXJhdG9y
SW50ZXJuYWxGaWVsZAogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQo
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOwogfQog
CitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldE1h
cEl0ZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9s
aXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShub2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJFTEVBU0VfQVNTRVJUKG5v
ZGUtPm1fZXhwci0+aXNCeXRlY29kZUludHJpbnNpY05vZGUoKSk7CisgICAgdW5zaWduZWQgaW5k
ZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgo
c3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOworICAg
IEFTU0VSVChpbmRleCA8IEpTTWFwSXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOwor
ICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdl
dEludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSwgaW5kZXgpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRf
aW50cmluc2ljX2FyZ3VtZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3RO
b2RlOwpAQCAtMTM2Nyw2ICsxMzkyLDIyIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0U3RyaW5nSXRlcmF0b3JJbnRlcm5hbEZpZWxkCiAgICAg
cmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxk
KGJhc2UuZ2V0KCksIGluZGV4LCB2YWx1ZS5nZXQoKSkpOwogfQogCitSZWdpc3RlcklEKiBCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dE1hcEl0ZXJhdG9ySW50ZXJuYWxG
aWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7Cisg
ICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2Rl
ID0gbm9kZS0+bV9uZXh0OworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNCeXRl
Y29kZUludHJpbnNpY05vZGUoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpT
TWFwSXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIG5vZGUgPSBub2RlLT5t
X25leHQ7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG5vZGUpOworCisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVy
YXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCks
IGluZGV4LCB2YWx1ZS5nZXQoKSkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cyhCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0
Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTE1MTYsNiArMTU1Nyw3IEBAIENS
RUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzTWFwLCBJc01hcCkKIENSRUFURV9JTlRS
SU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzU2V0LCBJc1NldCkKIENSRUFURV9JTlRSSU5TSUNfRk9S
X0JSQU5EX0NIRUNLKGlzU3RyaW5nSXRlcmF0b3IsIElzU3RyaW5nSXRlcmF0b3IpCiBDUkVBVEVf
SU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc0FycmF5SXRlcmF0b3IsIElzQXJyYXlJdGVyYXRv
cikKK0NSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzTWFwSXRlcmF0b3IsIElzTWFw
SXRlcmF0b3IpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1VuZGVmaW5lZE9y
TnVsbCwgSXNVbmRlZmluZWRPck51bGwpCiAKICN1bmRlZiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9C
UkFORF9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDk1M2ZiYWVmNDhmM2E1NTRkNDU5YmQ5
YTJiM2Q2ZTYzZGFhN2NhYzcuLmRiMDk4MmIwZTQwNmY0M2E1OGQ5NGM0YzZlMTg4OWE0MmRiYWI2
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTI4NjIsNiArMjg2Miw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBc3luY0dl
bmVyYXRvcjogICAgCiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgTmV3TWFw
SXRlcmF0b3I6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld0lu
dGVybmFsRmllbGRPYmplY3Q6CiAgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVyZSgpLmdl
dCgpKTsKQEAgLTI5NDYsNiArMjk0Nyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
Y2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5
QnVmZmVyOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBQaGFu
dG9tTmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgIGNhc2Ug
Qm90dG9tVmFsdWU6IHsKICAgICAgICAgY2xlYXJGb3JOb2RlKG5vZGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA5OTYxZDkwMzJk
NjgwZDg1MzQ2NTk4ZGU2YTJiOGZhY2Q3MzQyN2JkLi40MjhlNmZjMTlmZjIzMDUwYTQwNGZlODlj
MGFiNTFlZWJlNGEyMGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIkpTSW1tdXRhYmxl
QnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCkBAIC0z
MTc3LDYgKzMxNzgsNDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdpc3RlciByZXN1bHQsIEkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBKU01hcEVudHJpZXNJbnRyaW5z
aWM6CisgICAgICAgIGNhc2UgSlNNYXBLZXlzSW50cmluc2ljOgorICAgICAgICBjYXNlIEpTTWFw
VmFsdWVzSW50cmluc2ljOiB7CisgICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKKworICAgICAg
ICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZENlbGwpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kOworICAgICAgICAg
ICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICAgICAgICAgIGNhc2UgSlNNYXBWYWx1ZXNJbnRy
aW5zaWM6CisgICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSlNNYXBLZXlzSW50cmluc2lj
OgorICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpLZXlzOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBKU01hcEVudHJpZXNJbnRyaW5zaWM6Cisg
ICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnRJbmNsdWRpbmdUaGlzKDAsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrLCBFZGdlKGJhc2UsIE1hcE9iamVjdFVzZSkpOworICAgICAgICAgICAg
Tm9kZSogbWFwQnVja2V0ID0gYWRkVG9HcmFwaChHZXRNYXBCdWNrZXRIZWFkLCBFZGdlKGJhc2Us
IE1hcE9iamVjdFVzZSkpOworCisgICAgICAgICAgICAvLyBBZGQgdGhlIGNvbnN0YW50IGJlZm9y
ZSBleGl0IGJlY29tZXMgaW52YWxpZCBiZWNhdXNlIHdlIG1heSB3YW50IHRvIGluc2VydCAocmVk
dW5kYW50KSBjaGVja3Mgb24gaXQgaW4gRml4dXAuCisgICAgICAgICAgICBOb2RlKiBraW5kTm9k
ZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtpbmQpKSk7CisK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjdXJyZW50Tm9kZU9yaWdpbigpLnNlbWFudGljKTsKKyAgICAgICAgICAgIE5v
ZGUqIGl0ZXJhdG9yID0gYWRkVG9HcmFwaChOZXdNYXBJdGVyYXRvciwgT3BJbmZvKG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpKSkp
OworCisgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0
aWNfY2FzdDx1aW50MzJfdD4oSlNNYXBJdGVyYXRvcjo6RmllbGQ6Ok1hcEJ1Y2tldCkpLCBpdGVy
YXRvciwgbWFwQnVja2V0KTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVs
ZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU01hcEl0ZXJhdG9yOjpGaWVsZDo6SXRl
cmF0ZWRPYmplY3QpKSwgaXRlcmF0b3IsIGJhc2UpOworICAgICAgICAgICAgYWRkVG9HcmFwaChQ
dXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTTWFwSXRlcmF0
b3I6OkZpZWxkOjpLaW5kKSksIGl0ZXJhdG9yLCBraW5kTm9kZSk7CisKKyAgICAgICAgICAgIHNl
dFJlc3VsdChpdGVyYXRvcik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
CiAgICAgICAgIGNhc2UgSlNTZXRCdWNrZXRIZWFkSW50cmluc2ljOgogICAgICAgICBjYXNlIEpT
TWFwQnVja2V0SGVhZEludHJpbnNpYzogewogICAgICAgICAgICAgQVNTRVJUKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID09IDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAppbmRleCBkMTk1MjJmZWQ1ZThlNWZhZmM1ZDk1M2VjODMyMGVlN2Q2N2Y1MjNjLi5k
M2RhNmY5NTFjMGQxZGVjZWI1YmJlNTZkYTVlYmY2NzRmMTRmOWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTU5NCw2ICsxNTk0LDcgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJl
YWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld0Fz
eW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIE5ld01h
cEl0ZXJhdG9yOgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3U3ltYm9sOgogICAg
IGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpAQCAtMTYwNCw2ICsxNjA1LDcgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNv
bnN0IFdyaXRlRnUKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2Ug
UGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXJy
YXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKICAgICBjYXNlIE1h
dGVyaWFsaXplTmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKICAgICBjYXNlIFBoYW50b21DcmVhdGVB
Y3RpdmF0aW9uOgogICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRl
eCBlZTk4ZmFjMjMwNTM0OTkzMDU5NDhhN2M0MDJkZjM4ZDJiZjA2ZGViLi41ZGMxYjk4MWFiNTIy
MGY2MjY1ZTIyMGRkYWRhNTJhMTdmNTZjZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtNjEsNiArNjEsNyBAQCBib29s
IGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5l
d0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3QXJy
YXlJdGVyYXRvcjoKKyAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgogICAgIGNhc2UgTmV3UmVnZXhw
OgogICAgIGNhc2UgTmV3U3ltYm9sOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpAQCAtNzEs
NiArNzIsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2Ug
UGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRv
cjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKICAgICBjYXNlIE1hdGVyaWFsaXpl
TmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9u
OgogICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCA2
NTA1M2NlYjVlMDg3YTBjZDRhMzE0ODBhZmRlOGQ2NTE4MWVkMTQzLi5jYWRmNDZlMGZlMTdjM2Y1
MGY2MTAzNTAyNGJhODRhNWJhYTVlMmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMTEwMSw2ICsxMTAxLDcg
QEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgICAgIGNh
c2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdB
cnJheUl0ZXJhdG9yOgorICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CiAg
ICAgICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgY2Fz
ZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVk
QXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU1
ZDNjOGZkNWRjZjhmYTJlZmJhMzdmOTZkYzkwOTlkNDk3MjUxODEuLmFhM2M2OTcyN2M1ZWEwYzQ1
Yzk1N2MxMGFhZDc0ZjRmZTc4ZmViZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKQEAgLTIxMSw2ICsyMTEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBo
YW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5
SXRlcmF0b3I6CisgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBQaGFu
dG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAg
ICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKQEAgLTM1Nyw2ICszNTgsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNl
IE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgY2Fz
ZSBOZXdNYXBJdGVyYXRvcjoKICAgICBjYXNlIFNwcmVhZDoKICAgICBjYXNlIE5ld0FycmF5V2l0
aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDc5YTljNGZhYjUwZTZjNjY1NWE0NmQ0YzlhMWY5
OGJlZjNjNzhmMzcuLjkwOWZkMDIyYTM1ZDQxNzc4MGE4OWFhYWM5NzQ4MjFiN2E5ZDUzYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTk0MCw2
ICsxOTQwLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNh
c2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRv
bU5ld0FzeW5jRnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6
CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgICAgICBjYXNlIFBoYW50
b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6
CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CkBAIC0yNTMyLDYgKzI1MzMsNyBAQCBj
bGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0
b3I6CiAgICAgICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3QXJy
YXlJdGVyYXRvcjoKKyAgICAgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjoKICAgICAgICAgY2FzZSBO
ZXdSZWdleHA6CiAgICAgICAgIGNhc2UgSXNUeXBlZEFycmF5VmlldzoKICAgICAgICAgY2FzZSBJ
c0VtcHR5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXggYjky
ODgxMGUxMDE1NTNiMTlhZjUxMzQ0MmMwM2ViZWVjMDQ4MGYyYi4uNTkxMGE3MDEwMmM5NzgxMDg4
YmI0MTExZWVlODBmMmM2M2Y0ZDAxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCkBAIC03Miw2ICs3Miw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBjYXNlIFB1dEhpbnQ6CiAg
ICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0
b3I6CisgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBQdXRTdGFjazoK
ICAgICBjYXNlIEtpbGxTdGFjazoKICAgICBjYXNlIEdldFN0YWNrOgpAQCAtMTMwLDYgKzEzMSw3
IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVU
eXBlJiBzdGF0ZSkKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIE5ld1N5bWJv
bDoKICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjoK
ICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2UgVG9OdW1l
cmljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBiYzdjZmIxMmQwYThlMmQz
MmUyNzI5N2Y3NDhhNjU1ZTM1MTcyNjc2Li4xYTdjY2E4NGE1YjU5MTc0ZjRhYmUxOGJkNzdkNzVj
YjE5NTI4MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNjYwLDYgKzY2
MCwxNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgp
OwogICAgIH0KIAorICAgIHZvaWQgY29udmVydFRvUGhhbnRvbU5ld01hcEl0ZXJhdG9yKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX29wID09IE5ld01hcEl0ZXJhdG9yKTsKKyAgICAgICAgbV9v
cCA9IFBoYW50b21OZXdNYXBJdGVyYXRvcjsKKyAgICAgICAgbV9mbGFncyAmPSB+Tm9kZUhhc1Zh
ckFyZ3M7CisgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKKyAgICAgICAgbV9v
cEluZm8gPSBPcEluZm9XcmFwcGVyKCk7CisgICAgICAgIG1fb3BJbmZvMiA9IE9wSW5mb1dyYXBw
ZXIoKTsKKyAgICAgICAgY2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CisgICAgfQorCiAgICAg
dm9pZCBjb252ZXJ0VG9QaGFudG9tTmV3QXN5bmNGdW5jdGlvbigpCiAgICAgewogICAgICAgICBB
U1NFUlQobV9vcCA9PSBOZXdBc3luY0Z1bmN0aW9uKTsKQEAgLTE5NzcsNiArMTk4OCw3IEBAIHN0
cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3
QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoKKyAgICAgICAg
Y2FzZSBOZXdNYXBJdGVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKQEAgLTIxNDMsNiArMjE1NSw3
IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoK
ICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAg
Y2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3TWFw
SXRlcmF0b3I6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDNmZWY2YjM4MTg1M2RkNWU3MmM5
OGE0ZjI4YjkwYmFmZjZjNmJlNGEuLmQ0OWIzZjBmNzBkYTljNmMwZTZkZmZhZTczZmVjNWUwMDJj
Y2JkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM1OSw2
ICszNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTmV3
QXJyYXlXaXRoU2l6ZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKE5ld0FycmF5QnVmZmVyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdBcnJheUl0
ZXJhdG9yLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhOZXdNYXBJdGVyYXRvciwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oTmV3U3ltYm9sLCBOb2RlUmVzdWx0SlMpIFwKQEAgLTM3OCw2ICszNzksNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUGhhbnRvbU5ld0FzeW5jRnVu
Y3Rpb24sIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFu
dG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21OZXdBcnJheUl0ZXJhdG9yLCBOb2RlUmVzdWx0SlMg
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUGhhbnRvbU5ld01hcEl0ZXJhdG9yLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTWF0ZXJpYWxpemVO
ZXdJbnRlcm5hbEZpZWxkT2JqZWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykgXAog
ICAgIG1hY3JvKFBoYW50b21DcmVhdGVBY3RpdmF0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKaW5k
ZXggMDVhY2RmMjM4NzY5NzNmODhlODJiOWE3M2IzNDllZTc3OWI1Yjk4NC4uOGE1YTkwMWEyMzdj
ZTIyOTRjYTI4MzdiNDljYWJiM2M4NjM5ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiREZHVmFsaWRhdGUuaCIKICNpbmNsdWRlICJK
U0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNN
YXBJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaXN0Lmg+CiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKQEAgLTk2Niw2ICs5NjcsMTEgQEAgY2xhc3MgT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6IHsKKyAgICAgICAgICAgIHRh
cmdldCA9IGhhbmRsZUludGVybmFsRmllbGRDbGFzczxKU01hcEl0ZXJhdG9yPihub2RlLCB3cml0
ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIE5ld1Jl
Z2V4cDogewogICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUs
IEFsbG9jYXRpb246OktpbmQ6OlJlZ0V4cE9iamVjdCk7CiAKQEAgLTIwODgsNiArMjA5NCwxMCBA
QCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdBcnJheUl0ZXJh
dG9yKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgICAg
ICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbU5ld01hcEl0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKwogICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZh
dGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAwOGNlNTQzNWQzZjcxOTA2M2NmYzA5
ZmZhNzdkY2Y2MTFmZjhmOTk4Li40ZWVkZGVkMTk3NGNkM2FkMTA2ODk2ZjRiNzdkOGI5MjAxYWQx
YTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAg
LTIxMTMsNiArMjExMywxNSBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
YXlJdGVyYXRvcihWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgIHJldHVybiBK
U0FycmF5SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKHZtLCBzdHJ1Y3R1cmUpOwog
fQogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IoVk0qIHZt
UG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0gKnZtUG9pbnRl
cjsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworCisgICAgcmV0dXJuIEpTTWFwSXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVz
KHZtLCBzdHJ1Y3R1cmUpOworfQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3Jl
YXRlQWN0aXZhdGlvbkRpcmVjdChWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5jb2RlZEpTVmFsdWUgaW5pdGlh
bFZhbHVlRW5jb2RlZCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAwYzg3M2RiZTVmZWViOGViZGQwMjM2
OWMxOWYxNDczZTI1NjY1MTcyLi5jYmI0MjM2N2JlZTcwMzQ0ZGMzYWU5NzY2NGM3Y2QxNGVmMjM0
NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTI2
LDYgKzEyNiw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5
V2l0aE9uZUFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyCiBjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgaW50MzJfdCwgY2hhciopIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yKFZNKiwgU3RydWN0dXJlKikgV1RGX0lO
VEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yKFZN
KiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlWYWxTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eVZhbE5vblN0cmljdChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyODg4NThiMzhj
MTZhNjVhOGM4ZWJkYjlkNDM3MDEyODM0NzJhNTBhLi5mNjA5M2JmMjUxNGM2M2I1Y2UyNzZhYzk1
MjhiOTc2YWJhNzI1YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTA2MSw2ICsxMDYx
LDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0FzeW5j
R2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2Ug
TmV3TWFwSXRlcmF0b3I6CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhl
cik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTI4NSw2ICsxMjg2LDcg
QEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICBjYXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgICAgIGNhc2UgUGhhbnRv
bU5ld0FycmF5QnVmZmVyOgogICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgor
ICAgICAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKICAgICAgICAgY2FzZSBQaGFudG9t
Q2xvbmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21OZXdSZWdleHA6CiAgICAgICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAppbmRleCBiYWRmZTFiMmQxNDI5YjJlMDU2NGU2MDFhMGM3ZmM5NjY0
YjU1ZWFjLi40MTJhY2VmZTE5NDhhY2EwZDgyNDhhMzhjYTg0ZTI3OWRhYzA3MThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNTQ5LDYgKzU0
OSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoK
ICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6
CisgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjoKICAgICBjYXNlIFNwcmVhZDoKICAgICBjYXNlIE5l
d1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKQEAgLTYxOSw2ICs2MjAsNyBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b246CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21O
ZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgogICAgIGNh
c2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgog
ICAgIGNhc2UgUHV0SGludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggY2FhNGJhYjQxMGU2ZDUzNGUwNmE1OTU3NjE5ZDM5YzljODdl
YzA5ZC4uYzYxNTgzZjQ4ZGEwNjRjMjA4NzgyNGJiMTRiZDg5NTI5NjcyZjlhNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTU4LDYg
KzU4LDcgQEAKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJ
bW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgor
I2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0
LmgiCkBAIC0xMzAxNCw2ICsxMzAxNSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TmV3QXJyYXlJdGVyYXRvcihOb2RlKiBub2RlKQogICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxk
T2JqZWN0PEpTQXJyYXlJdGVyYXRvcj4obm9kZSwgb3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvcik7
CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdNYXBJdGVyYXRvcihOb2RlKiBu
b2RlKQoreworICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0PEpTTWFwSXRlcmF0b3I+
KG5vZGUsIG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5vZGUpCiB7CiAgICAgREZHX0FTU0VSVChtX2pp
dC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwg
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBlM2Y2N2UxNTkyYzhlZjljNzBiYmQwNjI3MmVkMzc2
YTNiOWNkMzJhLi41MDFlMWY1YTE5OGNmMzVjMTc5MThlYjMyMzg0MGY5YTgwNjZmMTQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDYz
LDYgKzE0NjMsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlTmV3
R2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcihOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlTmV3QXJyYXlJdGVyYXRvcihOb2RlKik7CisgICAgdm9pZCBj
b21waWxlTmV3TWFwSXRlcmF0b3IoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVRvUHJpbWl0aXZl
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVUb1Byb3BlcnR5S2V5KE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVUb051bWVyaWMoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMTI5MGQxNzk3MDNlODY3MDI2
ZjMwMmJjODBlNzJhMDI1ZjY4YmQyNC4uNWJiYTc2ZjQwNjNmNWUzMDIyMjU0Y2Q0NjA4ZDZiYmNm
NDM2OWMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zMjY1LDYgKzMyNjUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBj
YXNlIE5ld01hcEl0ZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVOZXdNYXBJdGVyYXRvcihub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6IHsKICAgICAg
ICAgY29tcGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00MjE3LDYgKzQy
MjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21DcmVh
dGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgY2Fz
ZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAg
IGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXgg
YzU3YTU0ZjVhZGRkNDU0YmM0NDY5MmU1YjRlNTg3YmYwNGE5ZjFkOS4uNjgzY2M0MmM3YjhlOWVj
NWQ1MjM2MGRmNDFhM2VkNTk0MzA0YmMxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNTk0LDYgKzM1OTQsMTEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAg
ICB9CiAKKyAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVOZXdNYXBJ
dGVyYXRvcihub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxs
ZWU6IHsKICAgICAgICAgY29tcGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CkBA
IC01Mjc4LDYgKzUyODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21O
ZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0
b3I6CisgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CiAgICAgY2FzZSBQaGFudG9tQ3Jl
YXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdSZWdleHA6CiAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IDkzM2QzYTRkNmFhOTc0
ZTBiOTIwZTU3OWIwNjFhNzAyMTZmOTNlNzUuLjRiYmMyMWM2Y2JiMzMxOTQzNjQ1MjNmODBhZTlk
OTU5YWM3YzBhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC0zMzgsNiArMzM4LDcgQEAg
Y2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1
ZmZlcjoKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoKKyAgICAgICAgICAgIGNh
c2UgTmV3TWFwSXRlcmF0b3I6CiAgICAgICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAg
ICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4
IDVjNjlkMWQzOGMxYzYxMDU5OWZkMzAyOTk3MzQzNjBjYjIyN2FjYjIuLmZiMTYxNThhZjJlNTNi
ODkzM2YzNjFkY2Y2ZThjNzMwYzllOTdhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTgyLDYgKzgyLDcgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheToKICAgICBj
YXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAg
Y2FzZSBOZXdNYXBJdGVyYXRvcjoKICAgICBjYXNlIFNwcmVhZDoKICAgICBjYXNlIE5ld0FycmF5
QnVmZmVyOgogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKQEAgLTI5Miw2ICsyOTMsNyBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50
b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVu
Y3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50
b21OZXdNYXBJdGVyYXRvcjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAg
IGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAgICBjYXNlIFB1dEhpbnQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNzczYTAwNmUwODc0MDk3
NGYwMzNlNmMyZDgyZGVhYzhiMmZkYzU0Ny4uYjliMDE1NzM2NWIwMmM0OTllNmM0ZTg4OThlYzQw
NGJjYjYwNGExNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcApAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5
LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01hcC5o
IgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMu
aCIKICNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIK
QEAgLTEwNzUsNiArMTA3Niw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2Ug
TmV3QXJyYXlJdGVyYXRvcjoKICAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheUl0ZXJhdG9yKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjoKKyAgICAg
ICAgICAgIGNvbXBpbGVOZXdNYXBJdGVyYXRvcigpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgICAgICAgICAgY29tcGlsZU5ld1N0cmluZ09i
amVjdCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTk0LDYgKzE1OTgsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0
aW9uOgogICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICBjYXNl
IFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVy
YXRvcjoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2Fz
ZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0
OgpAQCAtNjM5MCw2ICs2Mzk1LDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNv
bXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0PEpTQXJyYXlJdGVyYXRvcj4ob3BlcmF0aW9uTmV3
QXJyYXlJdGVyYXRvcik7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlTmV3TWFwSXRlcmF0b3Io
KQorICAgIHsKKyAgICAgICAgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3Q8SlNNYXBJdGVy
YXRvcj4ob3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IpOworICAgIH0KKwogICAgIHZvaWQgY29tcGls
ZU5ld1N0cmluZ09iamVjdCgpCiAgICAgewogICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSA9IG1fbm9kZS0+c3RydWN0dXJlKCk7CkBAIC0xMjMxMCw2ICsxMjMyMCw5IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgSlNBcnJheUl0ZXJhdG9yVHlwZToKICAg
ICAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld0ludGVybmFsRmllbGRPYmplY3RJbXBsPEpT
QXJyYXlJdGVyYXRvcj4ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvcik7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBKU01hcEl0ZXJhdG9yVHlwZToKKyAgICAgICAgICAgIGNvbXBp
bGVNYXRlcmlhbGl6ZU5ld0ludGVybmFsRmllbGRPYmplY3RJbXBsPEpTTWFwSXRlcmF0b3I+KG9w
ZXJhdGlvbk5ld01hcEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBzdHJ1Y3R1
cmUiKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9u
cy5jcHAKaW5kZXggOGVmMjM5ZDZmY2E1YzAwOWNkNzU2NWFmY2U3YWQ3NjQzMjg3NjM3OC4uYTgx
ZjZjNWUxY2ZmOGE0Y2I3N2NkODJkZmJlMjA2MTgwZmU3YmNjZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVk
ZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5
LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01hcEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigiZnJhbWUtYWRkcmVzcyIpCkBAIC0xMzEsNiArMTMyLDE5IEBAIGV4dGVybiAiQyIgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUGhhbnRvbU5ld01h
cEl0ZXJhdG9yOiB7CisgICAgICAgIEpTTWFwSXRlcmF0b3IqIG1hcEl0ZXJhdG9yID0ganNDYXN0
PEpTTWFwSXRlcmF0b3IqPihKU1ZhbHVlOjpkZWNvZGUoKmVuY29kZWRWYWx1ZSkpOworCisgICAg
ICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0byBwb3B1bGF0ZSB0aGUgaXRlcmF0b3Igd2l0aAorICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0
eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOworICAgICAgICAgICAgaWYgKHBy
b3BlcnR5LmxvY2F0aW9uKCkua2luZCgpICE9IEludGVybmFsRmllbGRPYmplY3RQTG9jKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgbWFwSXRlcmF0b3ItPmludGVybmFs
RmllbGQoc3RhdGljX2Nhc3Q8SlNNYXBJdGVyYXRvcjo6RmllbGQ+KHByb3BlcnR5LmxvY2F0aW9u
KCkuaW5mbygpKSkuc2V0KHZtLCBtYXBJdGVyYXRvciwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tp
XSkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUGhhbnRv
bU5ld1JlZ2V4cDogewogICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cE9iamVjdCA9IGpzQ2Fz
dDxSZWdFeHBPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUoKmVuY29kZWRWYWx1ZSkpOwogCkBAIC0z
MTUsNiArMzI5LDI4IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCisgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6IHsKKyAgICAg
ICAgLy8gRmlndXJlIG91dCB3aGF0IHN0cnVjdHVyZS4KKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBudWxscHRyOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRp
b24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4aXRQ
cm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ld
OworICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlv
bkRlc2NyaXB0b3IoU3RydWN0dXJlUExvYykpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKS5hc0NlbGwoKS0+aW5oZXJpdHM8U3RydWN0
dXJlPih2bSkpOworICAgICAgICAgICAgICAgIHN0cnVjdHVyZSA9IGpzQ2FzdDxTdHJ1Y3R1cmUq
PihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlKTsKKworICAgICAgICBKU01hcEl0ZXJh
dG9yKiByZXN1bHQgPSBKU01hcEl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyh2bSwg
c3RydWN0dXJlKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXRlcmlhbGl6YXRpb24tPnBy
b3BlcnRpZXMoKS5zaXplKCkgLSAxID09IEpTTWFwSXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxG
aWVsZHMpOworCisgICAgICAgIC8vIFRoZSByZWFsIHZhbHVlcyB3aWxsIGJlIHB1dCBzdWJzZXF1
ZW50bHkgYnkKKyAgICAgICAgLy8gb3BlcmF0aW9uUG9wdWxhdGVOZXdPYmplY3RJbk9TUi4gU2Vl
IHRoZSBQaGFudG9tTmV3T2JqZWN0CisgICAgICAgIC8vIGNhc2UgZm9yIGRldGFpbHMuCisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoK
ICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVk
QXJndW1lbnRzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDA4MGZhZWRlODFhMjI2ODIyMWQxYzUw
ODk0MWQ5ZWYyNzEyNzlhMjAuLjQxNzUyM2Q1ZDU3OTYxZTdjOTg5OTFmZjliZjJlZDUwMjEwNTdh
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRl
ICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1Byb21p
c2UuaCIKICNpbmNsdWRlICJKU1Byb21pc2VQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU1NldC5o
IgpAQCAtMzk3LDkgKzM5OCw5IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldElu
dGVybmFsUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXRlcmF0b3JPYmplY3Qt
PmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0
UHJpdmF0ZU5hbWUoKSkpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0ZWRWYWx1ZSA9IGl0
ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLml0ZXJhdGVkT2JqZWN0UHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgICAgICBJdGVyYXRpb25L
aW5kIGtpbmQgPSBzdGF0aWNfY2FzdDxJdGVyYXRpb25LaW5kPihpdGVyYXRvck9iamVjdC0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBJdGVyYXRvcktp
bmRQcml2YXRlTmFtZSgpKS5hc0ludDMyKCkpOworICAgICAgICBpZiAoYXV0byogbWFwSXRlcmF0
b3IgPSBqc0R5bmFtaWNDYXN0PEpTTWFwSXRlcmF0b3IqPih2bSwgaXRlcmF0b3JPYmplY3QpKSB7
CisgICAgICAgICAgICBKU1ZhbHVlIGl0ZXJhdGVkVmFsdWUgPSBtYXBJdGVyYXRvci0+aXRlcmF0
ZWRPYmplY3QoKTsKKyAgICAgICAgICAgIEl0ZXJhdGlvbktpbmQga2luZCA9IG1hcEl0ZXJhdG9y
LT5raW5kKCk7CiAKICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICAgICAgICAg
IEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxw
dHIsIDIpOwpAQCAtNTQ5LDEzICs1NTAsMTAgQEAgc3RhdGljIEpTT2JqZWN0KiBjbG9uZUFycmF5
SXRlcmF0b3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLAogICAg
IHJldHVybiBjbG9uZTsKIH0KIAotc3RhdGljIEpTT2JqZWN0KiBjbG9uZU1hcEl0ZXJhdG9yT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNPYmplY3QqIGl0ZXJh
dG9yT2JqZWN0LCBKU1ZhbHVlIG1hcEJ1Y2tldCwgSlNWYWx1ZSBpdGVyYXRlZE9iamVjdCkKK3N0
YXRpYyBKU09iamVjdCogY2xvbmVNYXBJdGVyYXRvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yT2JqZWN0KQogewotICAg
IEFTU0VSVChpdGVyYXRvck9iamVjdC0+dHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZSk7Ci0gICAg
SlNPYmplY3QqIGNsb25lID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LCBNYXBJ
dGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIE1hcEl0ZXJhdG9yUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5p
dGVyYXRvclByb3RvdHlwZSgpKSkpOwotICAgIGNsb25lLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLml0ZXJhdGVkT2JqZWN0UHJpdmF0ZU5hbWUoKSwgaXRl
cmF0ZWRPYmplY3QpOwotICAgIGNsb25lLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLm1hcEl0ZXJhdG9yS2luZFByaXZhdGVOYW1lKCksIGl0ZXJhdG9yT2Jq
ZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEl0
ZXJhdG9yS2luZFByaXZhdGVOYW1lKCkpKTsKLSAgICBjbG9uZS0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXRQcml2YXRlTmFtZSgpLCBtYXBC
dWNrZXQpOworICAgIEpTTWFwSXRlcmF0b3IqIGNsb25lID0gSlNNYXBJdGVyYXRvcjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIGpzQ2FzdDxKU01hcCo+
KGl0ZXJhdG9yT2JqZWN0LT5pdGVyYXRlZE9iamVjdCgpKSwgaXRlcmF0b3JPYmplY3QtPmtpbmQo
KSk7CisgICAgY2xvbmUtPmludGVybmFsRmllbGQoSlNNYXBJdGVyYXRvcjo6RmllbGQ6Ok1hcEJ1
Y2tldCkuc2V0KHZtLCBjbG9uZSwgaXRlcmF0b3JPYmplY3QtPmludGVybmFsRmllbGQoSlNNYXBJ
dGVyYXRvcjo6RmllbGQ6Ok1hcEJ1Y2tldCkuZ2V0KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0K
IApAQCAtNTkzLDEyICs1OTEsMTIgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aXRl
cmF0b3JFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAgICAg
ICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5pc0FycmF5UHJvdG90eXBlSXRlcmF0b3JQcm90b2Nv
bEZhc3RBbmROb25PYnNlcnZhYmxlKCkpCiAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0g
Y2xvbmVBcnJheUl0ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgdm0sIGFycmF5SXRlcmF0b3Ip
OwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIG1hcEl0ZXJhdG9yID0g
anNEeW5hbWljQ2FzdDxKU01hcEl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yT2JqZWN0KSkgeworICAg
ICAgICAgICAgaWYgKGpzQ2FzdDxKU01hcCo+KG1hcEl0ZXJhdG9yLT5pdGVyYXRlZE9iamVjdCgp
KS0+aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKKyAgICAgICAgICAg
ICAgICBpdGVyYXRvciA9IGNsb25lTWFwSXRlcmF0b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCB2bSwg
bWFwSXRlcmF0b3IpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgSlNWYWx1ZSBpdGVy
YXRlZE9iamVjdCA9IGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLml0ZXJhdGVkT2JqZWN0UHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAg
ICAgICBpZiAoSlNWYWx1ZSBtYXBCdWNrZXQgPSBpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXRQcml2YXRlTmFtZSgp
KSkgewotICAgICAgICAgICAgICAgIGlmIChqc0Nhc3Q8SlNNYXAqPihpdGVyYXRlZE9iamVjdCkt
PmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGl0ZXJhdG9yID0gY2xvbmVNYXBJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3QsIHZt
LCBpdGVyYXRvck9iamVjdCwgbWFwQnVja2V0LCBpdGVyYXRlZE9iamVjdCk7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKEpTVmFsdWUgc2V0QnVja2V0ID0gaXRlcmF0b3JPYmplY3QtPmdldERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0QnVja2V0UHJpdmF0ZU5h
bWUoKSkpIHsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHNldEJ1Y2tldCA9IGl0ZXJhdG9yT2Jq
ZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1
Y2tldFByaXZhdGVOYW1lKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGpzQ2FzdDxKU1NldCo+
KGl0ZXJhdGVkT2JqZWN0KS0+aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUo
KSkKICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZVNldEl0ZXJhdG9yT2JqZWN0
KGdsb2JhbE9iamVjdCwgdm0sIGl0ZXJhdG9yT2JqZWN0LCBzZXRCdWNrZXQsIGl0ZXJhdGVkT2Jq
ZWN0KTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGRmMDFmMmExMTg3NDA0MTI2MzJiZjJhZGFiOGFl
MDRmMjZhYzk3ZDAuLmUyZGM4ODdiMzg0NDM0ZTA1MTY2NmEwYjQyNjUyMDAzOGY0YjU5ZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aApAQCAtOTcsNyArOTcsNiBAQAogICAgIG1hY3JvKGRpc3BsYXlOYW1lKSBcCiAgICAgbWFjcm8o
ZG9uZSkgXAogICAgIG1hY3JvKGRvdEFsbCkgXAotICAgIG1hY3JvKGVudHJpZXMpIFwKICAgICBt
YWNybyhlbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8oZXJhKSBcCiAgICAgbWFjcm8oZXZhbCkgXApA
QCAtMTM3LDcgKzEzNiw2IEBACiAgICAgbWFjcm8oaXNXYXRjaHBvaW50KSBcCiAgICAgbWFjcm8o
amV0dGlzb25SZWFzb24pIFwKICAgICBtYWNybyhqb2luKSBcCi0gICAgbWFjcm8oa2V5cykgXAog
ICAgIG1hY3JvKGxhc3RJbmRleCkgXAogICAgIG1hY3JvKGxlbmd0aCkgXAogICAgIG1hY3JvKGxp
bmUpIFwKQEAgLTE5OSw3ICsxOTcsNiBAQAogICAgIG1hY3JvKHVuaWNvZGUpIFwKICAgICBtYWNy
byh1c2FnZSkgXAogICAgIG1hY3JvKHZhbHVlKSBcCi0gICAgbWFjcm8odmFsdWVzKSBcCiAgICAg
bWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdlZWtkYXkpIFwKICAgICBtYWNybyh3cml0YWJs
ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2lj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXgg
MzUzNTkwOTA0OTFjZTBhZmRjZDhiYmI0Zjg3NWJiMzgxOGMyMmQzZS4uYTBjMThkYWFkMGRhMWI2
ZDdjZTQyZjVkM2Q4ZGE1OWZiMzgxZmExMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRyaW5zaWMuY3BwCkBAIC0yMDcsNiArMjA3LDEyIEBAIGNvbnN0IGNoYXIqIGludHJp
bnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJuICJKU01hcEhhc0lu
dHJpbnNpYyI7CiAgICAgY2FzZSBKU01hcFNldEludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJK
U01hcFNldEludHJpbnNpYyI7CisgICAgY2FzZSBKU01hcFZhbHVlc0ludHJpbnNpYzoKKyAgICAg
ICAgcmV0dXJuICJKU01hcFZhbHVlc0ludHJpbnNpYyI7CisgICAgY2FzZSBKU01hcEtleXNJbnRy
aW5zaWM6CisgICAgICAgIHJldHVybiAiSlNNYXBLZXlzSW50cmluc2ljIjsKKyAgICBjYXNlIEpT
TWFwRW50cmllc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJKU01hcEVudHJpZXNJbnRyaW5z
aWMiOwogICAgIGNhc2UgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljOgogICAgICAgICByZXR1cm4g
IkpTTWFwQnVja2V0SGVhZEludHJpbnNpYyI7CiAgICAgY2FzZSBKU01hcEJ1Y2tldE5leHRJbnRy
aW5zaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDZi
ZmZmOTAwNjNjZTJkN2Q4YWMyMDU0MmU4YThkN2UxOGM0MmJhZTkuLjBhN2IyNmJkZTc4ZTYyNWQ2
Njc4OTkxODBjMjE0ZjA4MmFkMjFmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5oCkBAIC0xMTgsNiArMTE4LDkgQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90
IHsKICAgICBKU01hcEdldEludHJpbnNpYywKICAgICBKU01hcEhhc0ludHJpbnNpYywKICAgICBK
U01hcFNldEludHJpbnNpYywKKyAgICBKU01hcFZhbHVlc0ludHJpbnNpYywKKyAgICBKU01hcEtl
eXNJbnRyaW5zaWMsCisgICAgSlNNYXBFbnRyaWVzSW50cmluc2ljLAogICAgIEpTTWFwQnVja2V0
SGVhZEludHJpbnNpYywKICAgICBKU01hcEJ1Y2tldE5leHRJbnRyaW5zaWMsCiAgICAgSlNNYXBC
dWNrZXRLZXlJbnRyaW5zaWMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5SXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlJdGVyYXRvci5oCmluZGV4IDU5OWU3NzRiMDNkZDNlNWJhNmQ0ZDdmYTM0YmI5OGE5Njg3
ZWM2MDkuLmFmZDllYjJlNWQ2NmI4NTNhMGM3NzA0MmFjYWU0OTlkMDY3M2YxOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCkBAIC02NCw3
ICs2NCw3IEBAIGNsYXNzIEpTQXJyYXlJdGVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsPDM+IHsKICAgICBjb25zdCBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGlu
dGVybmFsRmllbGQoRmllbGQgZmllbGQpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmll
bGQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZpZWxkKSk7IH0KICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4mIGludGVybmFsRmllbGQoRmllbGQgZmllbGQpIHsgcmV0dXJuIEJhc2U6OmludGVybmFs
RmllbGQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZpZWxkKSk7IH0KIAotICAgIEl0ZXJhdGlvbktp
bmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZXJhdGlvbktpbmQ+KGludGVy
bmFsRmllbGQoRmllbGQ6OktpbmQpLmdldCgpLmFzVUludDMyKCkpOyB9CisgICAgSXRlcmF0aW9u
S2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlcmF0aW9uS2luZD4oaW50
ZXJuYWxGaWVsZChGaWVsZDo6S2luZCkuZ2V0KCkuYXNVSW50MzJBc0FueUludCgpKTsgfQogICAg
IEpTT2JqZWN0KiBpdGVyYXRlZE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVj
dCo+KGludGVybmFsRmllbGQoRmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5nZXQoKSk7IH0KIAogICAg
IHN0YXRpYyBKU0FycmF5SXRlcmF0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTT2JqZWN0
KiBpdGVyYXRlZE9iamVjdCwgSlNWYWx1ZSBraW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA2Y2UxODRhZTE1OWU0ODJmMTFl
MDMwZjZkMzllYzg1NjAyYmU5NjBlLi41NDI5NzA1ZmY5MmE3N2RjZTE0OTQzOTZmODhiNTU1Yjgy
MDQ2ODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC0xMDYsNiArMTA2LDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVk
ZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTTWljcm90YXNrLmgiCiAjaW5jbHVkZSAi
SlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTG9hZGVyLmgiCkBAIC01
NjQsNyArNTY1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAg
IH0pOwogICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmluaXRMYXRlcigKICAgICAgICAg
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTRnVuY3Rpb24+JiBpbml0KSB7Ci0gICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5pdC52
bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVmFsdWVzLCBB
cnJheVZhbHVlc0ludHJpbnNpYykpOworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpLnN0cmluZygpLCBhcnJheVByb3RvRnVuY1Zh
bHVlcywgQXJyYXlWYWx1ZXNJbnRyaW5zaWMpKTsKICAgICAgICAgfSk7CiAKICAgICBtX2l0ZXJh
dG9yUHJvdG9jb2xGdW5jdGlvbi5pbml0TGF0ZXIoCkBAIC03NjUsNiArNzY2LDEwIEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlw
ZS5zZXQodm0sIHRoaXMsIGFycmF5SXRlcmF0b3JQcm90b3R5cGUpOwogICAgIG1fYXJyYXlJdGVy
YXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlKSk7CiAKKyAgICBhdXRvKiBtYXBJ
dGVyYXRvclByb3RvdHlwZSA9IE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMs
IE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0
b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlLnNldCh2bSwg
dGhpcywgbWFwSXRlcmF0b3JQcm90b3R5cGUpOworICAgIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU01hcEl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1h
cEl0ZXJhdG9yUHJvdG90eXBlKSk7CisKICAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0UHJvbWlzZVRo
ZW4gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHByb21pc2VQcm90b3R5cGVUaGVuQ29kZUdlbmVy
YXRvcih2bSksIHRoaXMpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmRlZmF1bHRQcm9taXNlVGhlbildLnNldCh2bSwgdGhp
cywgZGVmYXVsdFByb21pc2VUaGVuKTsKIApAQCAtMTAwNiw5ICsxMDExLDYgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKICAgICBKU09iamVjdCogYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90
eXBlID0gQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEFz
eW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CiAgICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1Rp
bWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpBc3luY0Zyb21TeW5jSXRlcmF0b3IpKS0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFzeW5jRnJvbVN5bmNJdGVy
YXRvclByb3RvdHlwZSk7CiAKLSAgICBKU09iamVjdCogbWFwSXRlcmF0b3JQcm90b3R5cGUgPSBN
YXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBNYXBJdGVyYXRvclByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7
Ci0gICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50
OjpNYXBJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgbWFwSXRlcmF0b3JQcm90b3R5cGUpOwotCiAgICAgSlNPYmplY3QqIHJlZ0V4cFN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlID0gUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2
bSwgdGhpcywgUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwogICAgIGpzQ2FzdDxKU09iamVj
dCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6UmVnRXhwU3RyaW5nSXRlcmF0
b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHJlZ0V4cFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlKTsKIApAQCAtMTc3NSw2ICsxNzc3LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJv
dG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5SXRlcmF0b3JQ
cm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWFwSXRlcmF0b3JQ
cm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNGdW5jdGlv
blByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0dlbmVy
YXRvclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0l0
ZXJhdG9yUHJvdG90eXBlKTsKQEAgLTE4MjYsNiArMTgyOSw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvclN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hcnJheUl0ZXJhdG9yU3RydWN0dXJlKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21hcEl0ZXJhdG9yU3RydWN0dXJlKTsK
ICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZp
c2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlKTsKICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDFlNzZjMGIzNDZlNjdkZGEzNWM0ZTk1NWI1MTJmNmY1OTMxNDQyMDQu
LmIwZmE3OGUxNWIyMDhhM2JmNTU3ZjUwZTA2ZjM2ZDE4YjkwNjg4NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTAwLDYgKzEwMCw3
IEBAIGNsYXNzIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjsKIGNsYXNzIEpTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGU7CiBjbGFzcyBEaXJlY3RFdmFsRXhlY3V0YWJsZTsKIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIE1hcEl0ZXJhdG9yUHJvdG90eXBlOwogY2xhc3MgTWFw
UHJvdG90eXBlOwogY2xhc3MgTWljcm90YXNrOwogY2xhc3MgTW9kdWxlTG9hZGVyOwpAQCAtMzIz
LDYgKzMyNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2Vu
ZXJhdG9yUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxBc3luY0dlbmVyYXRvclByb3RvdHlw
ZT4gbV9hc3luY0dlbmVyYXRvclByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlJdGVy
YXRvclByb3RvdHlwZT4gbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmll
cjxNYXBJdGVyYXRvclByb3RvdHlwZT4gbV9tYXBJdGVyYXRvclByb3RvdHlwZTsKIAogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1
Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fd2l0
aFNjb3BlU3RydWN0dXJlOwpAQCAtMzc4LDYgKzM4MCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9hcnJheUl0ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgTGF6
eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0
dXJlOwpAQCAtNjQ5LDYgKzY1Miw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJh
dG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7
IH0KICAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9hc3luY0Z1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CiAgICAgQXJy
YXlJdGVyYXRvclByb3RvdHlwZSogYXJyYXlJdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQorICAgIE1hcEl0ZXJhdG9yUHJv
dG90eXBlKiBtYXBJdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSXRlcmF0
b3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBKU09iamVjdCogbWFwUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CiAgICAgLy8gV29ya2Fy
b3VuZCBmb3IgdGhlIG5hbWUgY29uZmxpY3QgYmV0d2VlbiBKU0NlbGw6OnNldFByb3RvdHlwZS4K
ICAgICBKU09iamVjdCoganNTZXRQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVj
dHVyZS5wcm90b3R5cGUodGhpcyk7IH0KQEAgLTc1Nyw2ICs3NjEsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1
cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5jR2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0gICAgCisgICAg
U3RydWN0dXJlKiBtYXBJdGVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSXRl
cmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiBpdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3Ry
dWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Jl
Z0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcAppbmRleCBmODBiMzQwMTBkMzViMjZmZDM5
NmZlOGRkNTlkMGQ0NzQ0ZTdiM2JhLi4wMWVjNmVmNDhjNjRlMjRhODg5NDQ5MWIyMTNiYjAzMGJk
ZmIxODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJh
dG9yLmNwcApAQCAtMjcsMjYgKzI3LDQxIEBACiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgog
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LWNvbnN0IENsYXNzSW5mbyBKU01hcEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJNYXAgSXRlcmF0b3Ii
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTWFwSXRl
cmF0b3IpIH07Citjb25zdCBDbGFzc0luZm8gSlNNYXBJdGVyYXRvcjo6c19pbmZvID0geyAiTWFw
SXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTTWFwSXRlcmF0b3IpIH07CiAKLXZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU01hcCogaXRlcmF0ZWRPYmplY3QpCitKU01hcEl0ZXJhdG9yKiBKU01h
cEl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNNYXBJdGVyYXRvcj4odm0uaGVhcCkpIEpTTWFwSXRlcmF0b3Iodm0sIHN0
cnVjdHVyZSk7CisgICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4g
aXRlcmF0b3I7Cit9CisKK3ZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU01hcCogaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKK3sKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6TWFwQnVja2V0
KS5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0LT5oZWFkKCkpOworICAgIGludGVybmFsRmll
bGQoRmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsK
KyAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpLaW5kKS5zZXQodm0sIHRoaXMsIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KGtpbmQpKSk7Cit9CisKK3ZvaWQgSlNNYXBJdGVyYXRvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAg
ICBtX21hcC5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBzZXRJdGVyYXRvcih2
bSwgbV9tYXAtPmhlYWQoKSk7CisgICAgYXV0byB2YWx1ZXMgPSBpbml0aWFsVmFsdWVzKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUoKTsgKytpbmRl
eCkKKyAgICAgICAgQmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0KHZtLCB0aGlzLCB2YWx1
ZXNbaW5kZXhdKTsKIH0KIAogdm9pZCBKU01hcEl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNNYXBJdGVyYXRvciogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CisgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9t
YXApOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faXRlcik7CiB9CiAKIEpTVmFs
dWUgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlUGFpcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTWFwSXRlcmF0b3IuaAppbmRleCA2ZTFmYTBjZmM2ODVlNGJhMzVjZWEzOWZmN2Uy
ZWU3ZmFhNmQ5Yjk4Li42MTVjNDBhMzUxMmJlZjAyNDZlOTYwMjIxYWNlYTRjZDVhMDdkZjEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5oCkBAIC0y
NiwyMSArMjYsMzcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSXRlcmF0aW9uS2luZC5o
IgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKICNpbmNsdWRlICJKU01h
cC5oIgotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0vLyBOb3cs
IGl0IGlzIG9ubHkgdXNlZCBmb3Igc2VyaWFsaXphdGlvbi4KLS8vIEZJWE1FOiBXZSBzaG91bGQg
dXNlIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwgdG8gaW1wbGVtZW50IHJlYWwgSlNNYXBJdGVy
YXRvciB1c2VkIGluIEpTQy4KLS8vIEN1cnJlbnRseSwgSlNDIGlzIHVzaW5nIGZpbmFsIG9iamVj
dHMgdG8gaW1wbGVtZW50IE1hcEl0ZXJhdG9yLgotY2xhc3MgSlNNYXBJdGVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewotICAgIHR5cGVkZWYgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0
RGF0YUtleVZhbHVlPiBIYXNoTWFwQnVja2V0VHlwZTsKK2NsYXNzIEpTTWFwSXRlcmF0b3IgZmlu
YWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwzPiB7CiBwdWJsaWM6Ci0gICAg
dXNpbmcgQmFzZSA9IEpTQ2VsbDsKKyAgICB1c2luZyBIYXNoTWFwQnVja2V0VHlwZSA9IEhhc2hN
YXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT47CisgICAgdXNpbmcgQmFzZSA9IEpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Mz47CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
CisgICAgZW51bSBjbGFzcyBGaWVsZCA6IHVpbnQ4X3QgeworICAgICAgICBNYXBCdWNrZXQgPSAw
LAorICAgICAgICBJdGVyYXRlZE9iamVjdCwKKyAgICAgICAgS2luZCwKKyAgICB9OworICAgIHN0
YXRpY19hc3NlcnQobnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSAzKTsKKworICAgIHN0YXRpYyBz
dGQ6OmFycmF5PEpTVmFsdWUsIG51bWJlck9mSW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgeworICAgICAgICAgICAganNOdWxsKCksCisgICAg
ICAgICAgICBqc051bGwoKSwKKyAgICAgICAgICAgIGpzTnVtYmVyKDApLAorICAgICAgICB9IH07
CisgICAgfQorCisgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxk
KEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19j
YXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRl
cm5hbEZpZWxkKEZpZWxkIGZpZWxkKSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CkBAIC00OSw1MCArNjUsNTggQEAgY2xhc3MgSlNNYXBJdGVy
YXRvciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU01hcEl0ZXJhdG9yVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU01hcEl0ZXJhdG9yKiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNNYXAqIGl0ZXJhdGVkT2JqZWN0LCBJ
dGVyYXRpb25LaW5kIGtpbmQpCiAgICAgewotICAgICAgICBKU01hcEl0ZXJhdG9yKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTWFwSXRlcmF0b3I+KHZtLmhlYXApKSBK
U01hcEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKLSAgICAg
ICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBpdGVyYXRlZE9iamVjdCk7CisgICAgICAg
IEpTTWFwSXRlcmF0b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNN
YXBJdGVyYXRvcj4odm0uaGVhcCkpIEpTTWFwSXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAg
ICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgaXRlcmF0ZWRPYmplY3QsIGtpbmQpOwog
ICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBIYXNo
TWFwQnVja2V0VHlwZSogYWR2YW5jZUl0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICBzdGF0aWMgSlNNYXBJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBT
dHJ1Y3R1cmUqKTsKKworICAgIEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1Y2tldFR5cGUqIGFkdmFu
Y2VJdGVyKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBwcmV2ID0g
bV9pdGVyLmdldCgpOwotICAgICAgICBpZiAoIXByZXYpCisgICAgICAgIEhhc2hNYXBCdWNrZXRU
eXBlKiBwcmV2ID0gaXRlcmF0b3IoKTsKKyAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIHNlbnRp
bmVsID0ganNDYXN0PEhhc2hNYXBCdWNrZXRUeXBlKj4odm0uc2VudGluZWxNYXBCdWNrZXQoKSk7
CisgICAgICAgIGlmIChwcmV2ID09IHNlbnRpbmVsKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIEhhc2hN
YXBCdWNrZXRUeXBlKiBidWNrZXQgPSBtX2l0ZXItPm5leHQoKTsKKyAgICAgICAgSGFzaE1hcEJ1
Y2tldFR5cGUqIGJ1Y2tldCA9IHByZXYtPm5leHQoKTsKICAgICAgICAgd2hpbGUgKGJ1Y2tldCAm
JiBidWNrZXQtPmRlbGV0ZWQoKSkKICAgICAgICAgICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgp
OwogICAgICAgICBpZiAoIWJ1Y2tldCkgewotICAgICAgICAgICAgc2V0SXRlcmF0b3Iodm0sIG51
bGxwdHIpOworICAgICAgICAgICAgc2V0SXRlcmF0b3Iodm0sIHNlbnRpbmVsKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIHNldEl0ZXJhdG9yKHZtLCBi
dWNrZXQpOyAvLyBXZSBrZWVwIG1faXRlciBvbiB0aGUgbGFzdCB2YWx1ZSBzaW5jZSB0aGUgZmly
c3QgdGhpbmcgd2UgZG8gaW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsIG5leHQoKS4KKyAgICAgICAg
c2V0SXRlcmF0b3Iodm0sIGJ1Y2tldCk7IC8vIFdlIGtlZXAgaXRlcmF0b3Igb24gdGhlIGxhc3Qg
dmFsdWUgc2luY2UgdGhlIGZpcnN0IHRoaW5nIHdlIGRvIGluIHRoaXMgZnVuY3Rpb24gaXMgY2Fs
bCBuZXh0KCkuCiAgICAgICAgIHJldHVybiBidWNrZXQ7CiAgICAgfQorCiAgICAgYm9vbCBuZXh0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUmIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IGFkdmFuY2VJdGVyKGdsb2JhbE9iamVj
dCk7CisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBhZHZhbmNlSXRlcihnZXRW
TShnbG9iYWxPYmplY3QpKTsKICAgICAgICAgaWYgKCFidWNrZXQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKG1fa2luZCA9PSBJdGVyYXRpb25LaW5kOjpWYWx1ZXMp
CisgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6
VmFsdWVzOgogICAgICAgICAgICAgdmFsdWUgPSBidWNrZXQtPnZhbHVlKCk7Ci0gICAgICAgIGVs
c2UgaWYgKG1fa2luZCA9PSBJdGVyYXRpb25LaW5kOjpLZXlzKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6S2V5czoKICAgICAgICAgICAgIHZhbHVlID0g
YnVja2V0LT5rZXkoKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgSXRlcmF0aW9uS2luZDo6RW50cmllczoKICAgICAgICAgICAgIHZhbHVlID0gY3JlYXRl
UGFpcihnbG9iYWxPYmplY3QsIGJ1Y2tldC0+a2V5KCksIGJ1Y2tldC0+dmFsdWUoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBib29sIG5leHRLZXlWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlJiBrZXksIEpTVmFsdWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldFR5
cGUqIGJ1Y2tldCA9IGFkdmFuY2VJdGVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgIEhhc2hNYXBC
dWNrZXRUeXBlKiBidWNrZXQgPSBhZHZhbmNlSXRlcihnZXRWTShnbG9iYWxPYmplY3QpKTsKICAg
ICAgICAgaWYgKCFidWNrZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwMSwy
NyArMTI1LDI0IEBAIGNsYXNzIEpTTWFwSXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uS2luZCBraW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9raW5kOyB9Ci0gICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9tYXAuZ2V0KCk7IH0KKyAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVyYXRpb25LaW5kPihpbnRlcm5hbEZpZWxkKEZpZWxk
OjpLaW5kKS5nZXQoKS5hc1VJbnQzMkFzQW55SW50KCkpOyB9CisgICAgSlNPYmplY3QqIGl0ZXJh
dGVkT2JqZWN0KCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oaW50ZXJuYWxGaWVs
ZChGaWVsZDo6SXRlcmF0ZWRPYmplY3QpLmdldCgpKTsgfQorICAgIEhhc2hNYXBCdWNrZXRUeXBl
KiBpdGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxIYXNoTWFwQnVja2V0VHlwZSo+KGlu
dGVybmFsRmllbGQoRmllbGQ6Ok1hcEJ1Y2tldCkuZ2V0KCkpOyB9CiAKIHByaXZhdGU6Ci0gICAg
SlNNYXBJdGVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU01hcCosIEl0ZXJh
dGlvbktpbmQga2luZCkKKyAgICBKU01hcEl0ZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAgICAgICAsIG1fa2luZChr
aW5kKQogICAgIHsgfQogCiAgICAgdm9pZCBzZXRJdGVyYXRvcihWTSYgdm0sIEhhc2hNYXBCdWNr
ZXRUeXBlKiBidWNrZXQpCiAgICAgewotICAgICAgICBtX2l0ZXIuc2V0TWF5QmVOdWxsKHZtLCB0
aGlzLCBidWNrZXQpOworICAgICAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpNYXBCdWNrZXQpLnNl
dCh2bSwgdGhpcywgYnVja2V0KTsKICAgICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNNYXAqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNNYXAqLCBJdGVyYXRpb25LaW5kKTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CiAgICAgSlNWYWx1ZSBjcmVhdGVQYWlyKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwotCi0gICAgV3JpdGVCYXJyaWVyPEpTTWFwPiBtX21hcDsKLSAg
ICBXcml0ZUJhcnJpZXI8SGFzaE1hcEJ1Y2tldFR5cGU+IG1faXRlcjsKLSAgICBJdGVyYXRpb25L
aW5kIG1fa2luZDsKIH07CiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SlNNYXBJdGVyYXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3Bw
CmluZGV4IGIwMmIzNDdkNmE1MDA0NTUzYjU5MmVjNjRiNGMxNDRlMzA4ZGQwY2YuLjE3ZjdhNWM3
MTYwNmU2NWI2YjA2MjJmMDRiOTA2NGRlZTdiOWY0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmNwcApAQCAtMTAwLDYgKzEwMCw3IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0eXBlKQogICAgIENBU0UoSlNHZW5lcmF0
b3JUeXBlKQogICAgIENBU0UoSlNBc3luY0dlbmVyYXRvclR5cGUpCiAgICAgQ0FTRShKU0FycmF5
SXRlcmF0b3JUeXBlKQorICAgIENBU0UoSlNNYXBJdGVyYXRvclR5cGUpCiAgICAgQ0FTRShKU1N0
cmluZ0l0ZXJhdG9yVHlwZSkKICAgICBDQVNFKEpTUHJvbWlzZVR5cGUpCiAgICAgQ0FTRShKU01h
cFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDQ4MzZmOTFi
MGJiNGIzNjRlZjdlMTRlM2MzZTliMTJhM2Y2MTAxZjAuLjFiMTY2N2MwN2VlN2M2MWViMmI0MjQ4
ZDJmMzQyM2Y4M2YxODFmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5o
CkBAIC0xMTIsNiArMTEyLDcgQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBKU0dlbmVy
YXRvclR5cGUsCiAgICAgSlNBc3luY0dlbmVyYXRvclR5cGUsCiAgICAgSlNBcnJheUl0ZXJhdG9y
VHlwZSwKKyAgICBKU01hcEl0ZXJhdG9yVHlwZSwKICAgICBKU1N0cmluZ0l0ZXJhdG9yVHlwZSwK
ICAgICBKU1Byb21pc2VUeXBlLAogICAgIEpTTWFwVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAK
aW5kZXggMjlhMTE2NzBiMjVjMWIwZTNhM2M2ZmQ3ODljMGI2YzE3ODBkMDZmOC4uZjJiZmI3MzRk
NjBiYmZmOGY5ODhlYTZmZTE5NTlkODhhMDM0MmIyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAK
QEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIEpTQ19CVUlM
VElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZXZlcnkiLCB0eXBlZEFycmF5UHJvdG90
eXBlRXZlcnlDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKCJmaWx0ZXIiLCB0eXBlZEFycmF5UHJvdG90eXBlRmlsdGVyQ29kZUdlbmVyYXRvciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAg
IEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigic29ydCIsIHR5cGVkQXJy
YXlQcm90b3R5cGVTb3J0Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCB0eXBlZEFy
cmF5UHJvdG9WaWV3RnVuY0VudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCAwLCBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYyk7CisgICAg
SlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCksIHR5cGVkQXJyYXlQ
cm90b1ZpZXdGdW5jRW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDAsIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljKTsKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiaW5jbHVkZXMiLCB0eXBlZEFycmF5
Vmlld1Byb3RvRnVuY0luY2x1ZGVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKCJmaWxsIiwgdHlwZWRBcnJheVByb3RvdHlwZUZpbGxDb2RlR2VuZXJhdG9yLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAg
SlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJmaW5kIiwgdHlwZWRBcnJh
eVByb3RvdHlwZUZpbmRDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBKU1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmoKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+Zm9yRWFjaCwgdHlwZWRBcnJheVByb3RvdHlwZUZvckVhY2hDb2Rl
R2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImluZGV4
T2YiLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5qb2luLCB0eXBlZEFycmF5
Vmlld1Byb3RvRnVuY0pvaW4sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAxKTsKLSAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgdHlwZWRBcnJheVZpZXdQcm90
b0Z1bmNLZXlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMCwgVHlwZWRBcnJheUtleXNJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVfSU5UUklO
U0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0tleXMsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwLCBUeXBl
ZEFycmF5S2V5c0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04oImxhc3RJbmRleE9mIiwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhP
Ziwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEp
OwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0
aCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHksIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMpOwog
ICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigibWFwIiwgdHlwZWRB
cnJheVByb3RvdHlwZU1hcENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lkIEpTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogICAgIEdldHRlclNldHRlciogdG9TdHJpbmdUYWdBY2Nlc3NvciA9IEdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRvU3RyaW5nVGFnRnVuY3Rpb24s
IG51bGxwdHIpOwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIHRvU3RyaW5nVGFnQWNj
ZXNzb3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3Nvcik7CiAKLSAgICBKU0Z1bmN0aW9u
KiB2YWx1ZXNGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAw
LCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMuc3RyaW5nKCksIHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jVmFsdWVzLCBUeXBlZEFycmF5VmFsdWVzSW50cmluc2ljKTsKKyAgICBKU0Z1bmN0aW9uKiB2
YWx1ZXNGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkuc3RyaW5n
KCksIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jVmFsdWVzLCBUeXBlZEFycmF5VmFsdWVzSW50cmlu
c2ljKTsKIAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIHZhbHVlc0Z1bmN0aW9uLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sLCB2YWx1ZXNGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cFByb3RvdHlwZS5jcHAKaW5kZXggM2JhZTg3ZWI1NDY5ZGQ2OWI0MGJmNWQxM2JhNDdkOTEwNTNk
MTY2Mi4uZGRmYTNmZWVkMzI2MDI4OTU1YjRkYTQxZmU3MDAxYTYzNzUwOWJlOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiSXRlcmF0b3JPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkxvb2t1cC5oIgogCiAjaW5jbHVkZSAiTWFwUHJvdG90eXBlLmx1dC5oIgpAQCAt
NDMsOCArNDQsNiBAQCBjb25zdCBDbGFzc0luZm8gTWFwUHJvdG90eXBlOjpzX2luZm8gPSB7ICJN
YXAiLCAmQmFzZTo6c19pbmZvLCAmbWFwUHJvdG90eXBlVGFibAogLyogU291cmNlIGZvciBNYXBQ
cm90b3R5cGUubHV0LmgKIEBiZWdpbiBtYXBQcm90b3R5cGVUYWJsZQogICBmb3JFYWNoICAgSlNC
dWlsdGluICBEb250RW51bXxGdW5jdGlvbiAwCi0gIHZhbHVlcyAgICBKU0J1aWx0aW4gIERvbnRF
bnVtfEZ1bmN0aW9uIDAKLSAga2V5cyAgICAgIEpTQnVpbHRpbiAgRG9udEVudW18RnVuY3Rpb24g
MAogQGVuZAogKi8KIApAQCAtNTMsNiArNTIsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNEZWxldGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbQog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jR2V0KEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtYXBQcm90b0Z1bmNIYXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJvdG9GdW5jVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNLZXlzKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXBQcm90b0Z1bmNFbnRyaWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NpemUoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKICAgICAKQEAgLTY2LDExICs2OCwxMyBAQCB2b2lkIE1hcFBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5nZXQsIG1hcFByb3RvRnVuY0dldCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpTTWFwR2V0SW50cmluc2lj
KTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+aGFzLCBtYXBQcm90b0Z1bmNIYXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU01hcEhhc0ludHJpbnNpYyk7
CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPnNldCwgbWFwUHJvdG9GdW5jU2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMiwgSlNNYXBTZXRJbnRyaW5zaWMpOwor
ICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLCBtYXBQcm90b0Z1
bmNLZXlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMCwgSlNNYXBLZXlzSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
dmFsdWVzUHVibGljTmFtZSgpLCBtYXBQcm90b0Z1bmNWYWx1ZXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAwLCBKU01hcFZhbHVlc0ludHJpbnNp
Yyk7CiAKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2V0UHJpdmF0ZU5hbWUoKSwgbWFw
UHJvdG9GdW5jR2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMSwgSlNNYXBHZXRJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lD
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5zZXRQcml2YXRlTmFtZSgpLCBtYXBQcm90b0Z1bmNTZXQsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyLCBKU01hcFNldEludHJpbnNpYyk7
CiAKLSAgICBKU0Z1bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBtYXBQ
cm90b3R5cGVFbnRyaWVzQ29kZUdlbmVyYXRvcih2bSksIGdsb2JhbE9iamVjdCk7CisgICAgSlNG
dW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAw
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLnN0
cmluZygpLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBKU01hcEVudHJpZXNJbnRyaW5zaWMpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCBlbnRyaWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBlbnRyaWVzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5n
VGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJNYXAiX3MpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwpAQCAtMTQwLDYg
KzE0NCwzMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhpc1ZhbHVlKTsKIH0KIAoraW5saW5lIEpTVmFsdWUgY3JlYXRlTWFwSXRlcmF0b3JP
YmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEl0ZXJhdGlvbktpbmQga2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOworICAgIEpT
TWFwKiBtYXAgPSBnZXRNYXAoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpOworICAgIGlmICghbWFw
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gSlNNYXBJdGVyYXRv
cjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIG1hcCwg
a2luZCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jVmFs
dWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
eworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY3JlYXRlTWFwSXRlcmF0b3JPYmplY3QoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlcykpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0tleXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjcmVhdGVNYXBJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSwgSXRlcmF0aW9uS2luZDo6S2V5cykpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hcFByb3RvRnVuY0VudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVN
YXBJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZDo6
RW50cmllcykpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVu
Y1NpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgSlNNYXAqIG1hcCA9IGdldE1hcChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDY5ZTUyZWE2
NjdjMjU0MjliZTA5NjVmYjQyMWQ5Yjg4Yzk3MDI2ZGUuLmIwMjAwNDkxYTg5ZTg3MWU4ODZkZmYw
ZDUwNGZjYzllYzQyYmZkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAg
LTE1NDksMjAgKzE1NDksNiBAQCBEWU5BTUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9T
TE9XKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3BhY2UsIGRlc3RydWN0aQogCiAjdW5kZWYgRFlO
QU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVwogCi1TdHJ1Y3R1cmUqIFZNOjpz
ZXRJdGVyYXRvclN0cnVjdHVyZVNsb3coKQotewotICAgIEFTU0VSVCghbV9zZXRJdGVyYXRvclN0
cnVjdHVyZSk7Ci0gICAgbV9zZXRJdGVyYXRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU2V0SXRl
cmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICByZXR1cm4g
bV9zZXRJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsKLX0KLQotU3RydWN0dXJlKiBWTTo6bWFwSXRl
cmF0b3JTdHJ1Y3R1cmVTbG93KCkKLXsKLSAgICBBU1NFUlQoIW1fbWFwSXRlcmF0b3JTdHJ1Y3R1
cmUpOwotICAgIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU01hcEl0ZXJhdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgcmV0dXJuIG1fbWFw
SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7Ci19Ci0KIEpTQ2VsbCogVk06OnNlbnRpbmVsU2V0QnVj
a2V0U2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3NlbnRpbmVsU2V0QnVja2V0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IDllOThkNTNjNTNhNGY3ZmZkYTRmMDZlZGFmZDc3OTM1
Mjk0NDliMzguLmYwYTQ5MzFlODIxNjk2MmI1ZmU1MDQ3NmQ2YmRkNDYyNzdiMDI5NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNjk4LDkgKzY5OCw2IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3RO
b2RlPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gYmlnSW50U3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IGV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2VTdHJ1Y3R1cmU7CiAKLSAg
ICBTdHJvbmc8U3RydWN0dXJlPiBtX3NldEl0ZXJhdG9yU3RydWN0dXJlOwotICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmU7Ci0KICAgICBTdHJvbmc8SlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yPiBtX2VtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcjsKIAogICAgIFN0
cm9uZzxKU0NlbGw+IG1fc2VudGluZWxTZXRCdWNrZXQ7CkBAIC03MzMsMjAgKzczMCw2IEBAIGNs
YXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxp
bmtlZExpc3ROb2RlPFZNPiB7CiAKICAgICBTdHJvbmc8SlNCaWdJbnQ+IGJpZ0ludENvbnN0YW50
T25lOwogCi0gICAgU3RydWN0dXJlKiBzZXRJdGVyYXRvclN0cnVjdHVyZSgpCi0gICAgewotICAg
ICAgICBpZiAoTElLRUxZKG1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUpKQotICAgICAgICAgICAgcmV0
dXJuIG1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7Ci0gICAgICAgIHJldHVybiBzZXRJdGVy
YXRvclN0cnVjdHVyZVNsb3coKTsKLSAgICB9Ci0KLSAgICBTdHJ1Y3R1cmUqIG1hcEl0ZXJhdG9y
U3RydWN0dXJlKCkKLSAgICB7Ci0gICAgICAgIGlmIChMSUtFTFkobV9tYXBJdGVyYXRvclN0cnVj
dHVyZSkpCi0gICAgICAgICAgICByZXR1cm4gbV9tYXBJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsK
LSAgICAgICAgcmV0dXJuIG1hcEl0ZXJhdG9yU3RydWN0dXJlU2xvdygpOwotICAgIH0KLQogICAg
IEpTQ2VsbCogc2VudGluZWxTZXRCdWNrZXQoKQogICAgIHsKICAgICAgICAgaWYgKExJS0VMWSht
X3NlbnRpbmVsU2V0QnVja2V0KSkKQEAgLTExMjcsOCArMTExMCw2IEBAIGNsYXNzIFZNIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2Rl
PFZNPiB7CiAgICAgc3RhdGljIFZNKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgIHZv
aWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVy
ZSogc2V0SXRlcmF0b3JTdHJ1Y3R1cmVTbG93KCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgU3Ry
dWN0dXJlKiBtYXBJdGVyYXRvclN0cnVjdHVyZVNsb3coKTsKICAgICBKU0NlbGwqIHNlbnRpbmVs
U2V0QnVja2V0U2xvdygpOwogICAgIEpTQ2VsbCogc2VudGluZWxNYXBCdWNrZXRTbG93KCk7CiAg
ICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3JT
bG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcAppbmRleCA4NGMxNjRkYTNlMjBhNWYyNzNjODExZjc4YTM4NzdiYjcyNjM5
YzBjLi41Yzg4NDQzN2Y1MTk3ODE3NjAxZGZkNTNiNmVkZjEzN2Y4MmQ5ZWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
QEAgLTE2OTksNyArMTY5OSw3IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFs
aXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgSlNNYXAqIGluTWFw
ID0ganNDYXN0PEpTTWFwKj4oaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdGFydE1h
cChpbk1hcCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIEpT
TWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0gSlNNYXBJdGVyYXRvcjo6Y3JlYXRlKHZtLCB2bS5tYXBJ
dGVyYXRvclN0cnVjdHVyZSgpLCBpbk1hcCwgSXRlcmF0aW9uS2luZDo6RW50cmllcyk7CisgICAg
ICAgICAgICAgICAgSlNNYXBJdGVyYXRvciogaXRlcmF0b3IgPSBKU01hcEl0ZXJhdG9yOjpjcmVh
dGUodm0sIG1fbGV4aWNhbEdsb2JhbE9iamVjdC0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaW5N
YXAsIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXMpOwogICAgICAgICAgICAgICAgIG1fZ2NCdWZmZXIu
YXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhpbk1hcCk7CiAgICAgICAgICAgICAgICAgbV9nY0J1
ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KGl0ZXJhdG9yKTsKICAgICAgICAgICAgICAg
ICBtYXBJdGVyYXRvclN0YWNrLmFwcGVuZChpdGVyYXRvcik7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxOGZkNmViNTU5ODA1ZDhjOTU5
NDgwNTBlOTZmMjUyMjE2YzZmYTkuLmFmMDY2MjE2YzNmYmJiZTg0M2I5NTAwMzljMDFjZWQxZWU5
NGI1YmQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgSlNNYXBJdGVyYXRvciB3aXRo
IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDAyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3RyZXNzL21hcC1pdGVyYXRpb24tb2FzLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9t
YXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
VGhyb3cpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorICAgICAgICAqIHN0
cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRUaHJvdyk6CisgICAgICAgIChpLnNob3VsZFRocm93KToKKyAgICAgICAgKHRlc3QyKToKKyAg
ICAgICAgKHRlc3QzKToKKwogMjAyMC0wNC0wNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CiAKICAgICAgICAgT2N0YWwgZXNjYXBlcyBzaG91bGQgYmUgbWF4IDMgZGln
aXRzIGFuZCBzeW50YXggZXJyb3JzIGluIFVuaWNvZGUgcGF0dGVybnMKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL21hcC1pdGVyYXRpb24tb2FzLmpzIGIvSlNUZXN0cy9zdHJlc3MvbWFwLWl0
ZXJhdGlvbi1vYXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY2MWM0ZjRkNDQ4YWY1MmY0OTY5MGMzMDIxYWM2
ZDdhZDVmZmEyNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL21hcC1pdGVyYXRp
b24tb2FzLmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCisKK3ZhciBtYXAgPSBuZXcgTWFw
OworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKKyAgICBtYXAuc2V0KGksIGkpOworCitm
dW5jdGlvbiB0ZXN0KG1hcCkgeworICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAobGV0IFth
LCBiXSBvZiBtYXApIHsKKyAgICAgICAgcmVzdWx0ICs9IGE7CisgICAgfQorICAgIHJldHVybiBy
ZXN1bHQ7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsr
aSkKKyAgICBzaG91bGRCZSh0ZXN0KG1hcCksIDQ5NTApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvbWFwLWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwtZGZnLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
bWFwLWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwtZGZnLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMDA2NjdjNDJi
YjhlM2M4MTliYTIxNzAyN2Q3YjgzM2EzMjg5MWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanMKQEAgLTAsMCArMSw1NCBA
QAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVy
cm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAg
ICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRy
dWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJv
cikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6
ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gdGVzdDEobWFwKQoreworICAgIE1h
cC5wcm90b3R5cGUudmFsdWVzLmNhbGwobWFwKTsKK30KK25vSW5saW5lKHRlc3QxKTsKKwordmFy
IG1hcCA9IG5ldyBNYXAoKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgdGVz
dDEobWFwKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIHRlc3QxKHt9KTsKK30sIGBUeXBl
RXJyb3I6IE1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2JqZWN0YCk7CisKK2Z1bmN0
aW9uIHRlc3QyKG1hcCkKK3sKKyAgICBNYXAucHJvdG90eXBlLmtleXMuY2FsbChtYXApOworfQor
bm9JbmxpbmUodGVzdDIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHRl
c3QyKG1hcCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICB0ZXN0Mih7fSk7Cit9LCBgVHlw
ZUVycm9yOiBNYXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVjdGApOworCitmdW5j
dGlvbiB0ZXN0MyhtYXApCit7CisgICAgTWFwLnByb3RvdHlwZS5lbnRyaWVzLmNhbGwobWFwKTsK
K30KK25vSW5saW5lKHRlc3QzKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAg
ICB0ZXN0MyhtYXApOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgdGVzdDMoe30pOworfSwg
YFR5cGVFcnJvcjogTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3RgKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL21hcC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLmpzIGIv
SlNUZXN0cy9zdHJlc3MvbWFwLWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGI4ZTNkZjU0ZjZlMDgyNjg4NWUzZDRiZTEzZjI3MzAyNGU2MzFkOAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL21hcC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLmpzCkBAIC0wLDAg
KzEsNTAgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAg
IHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5
IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJv
d24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJv
d24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJp
bmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkKK3sKKyAg
ICBNYXAucHJvdG90eXBlLnZhbHVlcy5jYWxsKHt9KTsKK30KK25vSW5saW5lKHRlc3QxKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgIHNob3VsZFRocm93KCgpID0+IHsK
KyAgICAgICAgdGVzdDEoKTsKKyAgICB9LCBgVHlwZUVycm9yOiBNYXAgb3BlcmF0aW9uIGNhbGxl
ZCBvbiBub24tTWFwIG9iamVjdGApOworfQorCitmdW5jdGlvbiB0ZXN0MigpCit7CisgICAgTWFw
LnByb3RvdHlwZS5rZXlzLmNhbGwoe30pOworfQorbm9JbmxpbmUodGVzdDIpOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAg
ICB0ZXN0MigpOworICAgIH0sIGBUeXBlRXJyb3I6IE1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5v
bi1NYXAgb2JqZWN0YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QzKCkKK3sKKyAgICBNYXAucHJvdG90
eXBlLmVudHJpZXMuY2FsbCh7fSk7Cit9Citub0lubGluZSh0ZXN0Myk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIHRl
c3QzKCk7CisgICAgfSwgYFR5cGVFcnJvcjogTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1h
cCBvYmplY3RgKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395546</attachid>
            <date>2020-04-05 22:41:26 -0700</date>
            <delta_ts>2020-04-05 23:06:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210023-20200405224125.patch</filename>
            <type>text/plain</type>
            <size>120780</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjVhMmMwZWU3NjJmOTE1MzY2ZTFiMGEwYjI4OGM2NDMxOTJmZjNkLi40NzBhNGJmYThlMjEyNzNj
MGRmMzIxZDUyYThiZDBhNjg5NzA5YzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMjAtMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgSlNNYXBJdGVyYXRvci9KU1NldEl0ZXJhdG9y
IHdpdGggSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWltcGxlbWVudCBKU01hcEl0ZXJh
dG9yL0pTU2V0SXRlcmF0b3Igd2l0aCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLgorICAgICAg
ICBUaGlzIG1ha2VzIGN1cnJlbnQgSlNGaW5hbE9iamVjdC1iYXNlZCBNYXAvU2V0SXRlcmF0b3Ig
c2ltcGxlIGFuZCBzbWFsbC4KKyAgICAgICAgQW5kIHdlIGFkZCBuZWNlc3Nhcnkgc3VwcG9ydCBv
ZiBKU01hcEl0ZXJhdG9yL0pTU2V0SXRlcmF0b3IgaW4gREZHIC8gRlRMIHRvIG1ha2UKKyAgICAg
ICAgYWxsb2NhdGlvbiBlZmZpY2llbnQgYW5kIG9iamVjdC1hbGxvY2F0aW9uLXNpbmtpbmcgYXdh
cmUuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWls
dGlucy9NYXBJdGVyYXRvclByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubWFw
SXRlcmF0b3JOZXh0KToKKyAgICAgICAgKG5leHQpOgorICAgICAgICAqIGJ1aWx0aW5zL01hcFBy
b3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuTWFwSXRlcmF0b3IpOiBEZWxldGVk
LgorICAgICAgICAodmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKGtleXMpOiBEZWxldGVkLgor
ICAgICAgICAoZW50cmllcyk6IERlbGV0ZWQuCisgICAgICAgICogYnVpbHRpbnMvU2V0SXRlcmF0
b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnNldEl0ZXJhdG9yTmV4dCk6
CisgICAgICAgIChuZXh0KToKKyAgICAgICAgKiBidWlsdGlucy9TZXRQcm90b3R5cGUuanM6Cisg
ICAgICAgIChnbG9iYWxQcml2YXRlLlNldEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKHZh
bHVlcyk6IERlbGV0ZWQuCisgICAgICAgIChlbnRyaWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdElzTWFwSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdElzU2V0SXRlcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjptYXBJdGVyYXRvckludGVybmFsRmllbGRJbmRleCk6
CisgICAgICAgIChKU0M6OnNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRNYXBJdGVyYXRv
ckludGVybmFsRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVt
aXRfaW50cmluc2ljX2dldFNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0TWFwSXRlcmF0b3JJbnRl
cm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19wdXRTZXRJdGVyYXRvckludGVybmFsRmllbGQpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0
YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50
b21OZXdNYXBJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUGhh
bnRvbU5ld1NldEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzUGhhbnRvbUFsbG9jYXRpb24pOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5ld01hcEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU5ld1NldEl0ZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
YW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3TWFwSXRlcmF0b3IpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3U2V0SXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVO
ZXdJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUik6CisgICAg
ICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUik6CisgICAgICAg
ICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFsUHJvcGVydGllcyk6CisgICAgICAg
IChJbnNwZWN0b3I6OmNsb25lTWFwSXRlcmF0b3JPYmplY3QpOgorICAgICAgICAoSW5zcGVjdG9y
OjpjbG9uZVNldEl0ZXJhdG9yT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmllcyk6CisgICAgICAgICogcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAg
KEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpt
YXBJdGVyYXRvclByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpzZXRJdGVyYXRvclByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjptYXBJdGVyYXRvclN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0OjpzZXRJdGVyYXRvclN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U01hcEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNYXBJdGVyYXRvcjo6Y3JlYXRlV2l0
aEluaXRpYWxWYWx1ZXMpOgorICAgICAgICAoSlNDOjpKU01hcEl0ZXJhdG9yOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkpTTWFwSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTZXRJ
dGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTU2V0SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0
aWFsVmFsdWVzKToKKyAgICAgICAgKEpTQzo6SlNTZXRJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpKU1NldEl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTU2V0SXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6
CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
Lmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNyZWF0ZU1hcEl0ZXJhdG9y
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6bWFwUHJvdG9GdW5jVmFsdWVzKToKKyAgICAgICAgKEpT
Qzo6bWFwUHJvdG9GdW5jS2V5cyk6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0VudHJpZXMp
OgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNyZWF0ZVNldEl0ZXJh
dG9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6c2V0UHJvdG9GdW5jVmFsdWVzKToKKyAgICAgICAg
KEpTQzo6c2V0UHJvdG9GdW5jRW50cmllcyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjpzZXRJdGVyYXRvclN0cnVjdHVyZVNsb3cpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpWTTo6bWFwSXRlcmF0b3JTdHJ1Y3R1cmVTbG93KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpzZXRJdGVyYXRvclN0cnVjdHVy
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjptYXBJdGVyYXRvclN0cnVjdHVyZSk6IERl
bGV0ZWQuCisKIDIwMjAtMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBKU0FycmF5SXRlcmF0b3IncyBzaXplIGlzIHdyb25nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNTg4MjkyYTkyZTgyNWZmNzQwNTIxODMwMzkzODJiMWMzZmQ2ZTkzNS4uYTJjZjUzMDZi
MGUyNGM3NzBkYTg3MWVmNjQ2MTU1ZGNmODRhNmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIwLTA0LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gSW1wbGVtZW50IEpTTWFwSXRlcmF0b3IvSlNTZXRJdGVyYXRvciB3aXRoIEpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMDAyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKwogMjAyMC0w
NC0wNCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBMb2Nr
SGlzdG9yeSBwYXJhbWV0ZXIgZnJvbSBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCAxOTcwYzlmNDMw
NjA4NzIxYTJhMzI1NmIyNmUyZTQ2YjNjODNhNmQyLi5mZDdiZWQ2ZTU1MDExMjJiMzAwM2ZjMzEy
YTE5NDkzNDZiMTUyMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oCkBAIC04NSw2ICs4NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3Jv
KHJlcGVhdENoYXJhY3RlcikgXAogICAgIG1hY3JvKHN0YXJEZWZhdWx0KSBcCiAgICAgbWFjcm8o
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKSBcCisgICAgbWFjcm8oa2V5cykgXAorICAgIG1hY3Jv
KHZhbHVlcykgXAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3Jv
KHNoaWZ0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFw
SXRlcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFw
SXRlcmF0b3JQcm90b3R5cGUuanMKaW5kZXggZmZmY2VlOGEzNGM2MDg5NDNlMTBmZjkwOTRjMGM5
YjJhMzE3MDdhMS4uNjk0MDMxYjhhMGQwZTY0NmRhM2YyNjE0YTBiMTEzNzk5MjA5YzM4NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90
eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBJdGVyYXRvclBy
b3RvdHlwZS5qcwpAQCAtMzEsNyArMzEsNyBAQCBmdW5jdGlvbiBtYXBJdGVyYXRvck5leHQoYnVj
a2V0LCBraW5kKQogICAgIHZhciB2YWx1ZTsKIAogICAgIGJ1Y2tldCA9IEBtYXBCdWNrZXROZXh0
KGJ1Y2tldCk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJtYXBCdWNrZXQiLCBi
dWNrZXQpOworICAgIEBwdXRNYXBJdGVyYXRvckludGVybmFsRmllbGQodGhpcywgQG1hcEl0ZXJh
dG9yRmllbGRNYXBCdWNrZXQsIGJ1Y2tldCk7CiAgICAgdmFyIGRvbmUgPSBidWNrZXQgPT09IEBz
ZW50aW5lbE1hcEJ1Y2tldDsKICAgICBpZiAoIWRvbmUpIHsKICAgICAgICAgdmFyIGtleSA9IEBt
YXBCdWNrZXRLZXkoYnVja2V0KTsKQEAgLTQ4LDExICs0OCwxMCBAQCBmdW5jdGlvbiBuZXh0KCkK
IHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAoQGlzVW5kZWZpbmVkT3JOdWxsKHRoaXMp
KQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVNYXBJdGVyYXRvclByb3RvdHlwZSUubmV4dCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICBpZiAo
IUBpc01hcEl0ZXJhdG9yKHRoaXMpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVNYXBJdGVy
YXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhbiBNYXAgSXRlcmF0
b3IgaW5zdGFuY2UiKTsKIAotICAgIHZhciBidWNrZXQgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUo
dGhpcywgIm1hcEJ1Y2tldCIpOwotICAgIGlmIChidWNrZXQgPT09IEB1bmRlZmluZWQpCi0gICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiJU1hcEl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0IHJlcXVpcmVz
IHRoYXQgfHRoaXN8IGJlIGEgTWFwIEl0ZXJhdG9yIGluc3RhbmNlIik7Ci0gICAgcmV0dXJuIEBt
YXBJdGVyYXRvck5leHQuQGNhbGwodGhpcywgYnVja2V0LCBAZ2V0QnlJZERpcmVjdFByaXZhdGUo
dGhpcywgIm1hcEl0ZXJhdG9yS2luZCIpKTsKKyAgICB2YXIgYnVja2V0ID0gQGdldE1hcEl0ZXJh
dG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAbWFwSXRlcmF0b3JGaWVsZE1hcEJ1Y2tldCk7CisgICAg
dmFyIGtpbmQgPSBAZ2V0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBtYXBJdGVyYXRv
ckZpZWxkS2luZCk7CisgICAgcmV0dXJuIEBtYXBJdGVyYXRvck5leHQuQGNhbGwodGhpcywgYnVj
a2V0LCBraW5kKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9NYXBQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwUHJv
dG90eXBlLmpzCmluZGV4IDhhNWJkM2MyNmY3ZWExNTU0ZWNiMDlhMTgzNWYxNGVkZDNkZGRkYzcu
LmNjNmIzYWFkZmY2NTcxMmQ4OTYyMzZhYjllZWQ1YTg2ZGFmM2U4MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBQcm90b3R5cGUuanMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcFByb3RvdHlwZS5qcwpAQCAtMjMsNDggKzIzLDYg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotQGNvbnN0cnVjdG9yCi1AZ2xvYmFsUHJpdmF0ZQot
ZnVuY3Rpb24gTWFwSXRlcmF0b3IoaXRlcmF0ZWRPYmplY3QsIGtpbmQpCi17Ci0gICAgInVzZSBz
dHJpY3QiOwotCi0gICAgQGFzc2VydChAaXNNYXAoaXRlcmF0ZWRPYmplY3QpKTsKLSAgICBAcHV0
QnlJZERpcmVjdFByaXZhdGUodGhpcywgIml0ZXJhdGVkT2JqZWN0IiwgaXRlcmF0ZWRPYmplY3Qp
OwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAibWFwSXRlcmF0b3JLaW5kIiwga2lu
ZCk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJtYXBCdWNrZXQiLCBAbWFwQnVj
a2V0SGVhZChpdGVyYXRlZE9iamVjdCkpOwotfQotCi1mdW5jdGlvbiB2YWx1ZXMoKQotewotICAg
ICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlzTWFwKHRoaXMpKQotICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoIk1hcC5wcm90b3R5cGUudmFsdWVzIHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIE1h
cCIpOwotCi0gICAgcmV0dXJuIG5ldyBATWFwSXRlcmF0b3IodGhpcywgQGl0ZXJhdGlvbktpbmRW
YWx1ZSk7Ci19Ci0KLWZ1bmN0aW9uIGtleXMoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAg
IGlmICghQGlzTWFwKHRoaXMpKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk1hcC5wcm90b3R5
cGUua2V5cyByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBNYXAiKTsKLQotICAgIHJldHVybiBuZXcg
QE1hcEl0ZXJhdG9yKHRoaXMsIEBpdGVyYXRpb25LaW5kS2V5KTsKLX0KLQotZnVuY3Rpb24gZW50
cmllcygpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXNNYXAodGhpcykpCi0g
ICAgICAgIEB0aHJvd1R5cGVFcnJvcigiTWFwLnByb3RvdHlwZS5lbnRyaWVzIHJlcXVpcmVzIHRo
YXQgfHRoaXN8IGJlIE1hcCIpOwotCi0gICAgcmV0dXJuIG5ldyBATWFwSXRlcmF0b3IodGhpcywg
QGl0ZXJhdGlvbktpbmRFbnRyaWVzKTsKLX0KLQogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAv
KiwgdGhpc0FyZyAqLykKIHsKICAgICAidXNlIHN0cmljdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5cGUuanMKaW5kZXggZTlj
ZThmMGE2N2MwNzVlMjRjOGEyMjFjZjQxYjA5MWVkN2NjNmUwMS4uOWJiMGVkOWU4ZjMyNWNmNzM2
NjRlNTA2MTY4OGQxZjVkYTc4ZjcyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1NldEl0ZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9TZXRJdGVyYXRvclByb3RvdHlwZS5qcwpAQCAtMzEsNyArMzEsNyBAQCBm
dW5jdGlvbiBzZXRJdGVyYXRvck5leHQoYnVja2V0LCBraW5kKQogICAgIHZhciB2YWx1ZTsKIAog
ICAgIGJ1Y2tldCA9IEBzZXRCdWNrZXROZXh0KGJ1Y2tldCk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQ
cml2YXRlKHRoaXMsICJzZXRCdWNrZXQiLCBidWNrZXQpOworICAgIEBwdXRTZXRJdGVyYXRvcklu
dGVybmFsRmllbGQodGhpcywgQHNldEl0ZXJhdG9yRmllbGRTZXRCdWNrZXQsIGJ1Y2tldCk7CiAg
ICAgdmFyIGRvbmUgPSBidWNrZXQgPT09IEBzZW50aW5lbFNldEJ1Y2tldDsKICAgICBpZiAoIWRv
bmUpIHsKICAgICAgICAgdmFsdWUgPSBAc2V0QnVja2V0S2V5KGJ1Y2tldCk7CkBAIC00NSwxMSAr
NDUsMTAgQEAgZnVuY3Rpb24gbmV4dCgpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgaWYg
KEBpc1VuZGVmaW5lZE9yTnVsbCh0aGlzKSkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCIlU2V0
SXRlcmF0b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwg
b3IgdW5kZWZpbmVkIik7Ci0KLSAgICB2YXIgYnVja2V0ID0gQGdldEJ5SWREaXJlY3RQcml2YXRl
KHRoaXMsICJzZXRCdWNrZXQiKTsKLSAgICBpZiAoYnVja2V0ID09PSBAdW5kZWZpbmVkKQorICAg
IGlmICghQGlzU2V0SXRlcmF0b3IodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiJVNl
dEl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEgU2V0IEl0
ZXJhdG9yIGluc3RhbmNlIik7Ci0gICAgcmV0dXJuIEBzZXRJdGVyYXRvck5leHQuQGNhbGwodGhp
cywgYnVja2V0LCBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgInNldEl0ZXJhdG9yS2luZCIp
KTsKKworICAgIHZhciBidWNrZXQgPSBAZ2V0U2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMs
IEBzZXRJdGVyYXRvckZpZWxkU2V0QnVja2V0KTsKKyAgICB2YXIga2luZCA9IEBnZXRTZXRJdGVy
YXRvckludGVybmFsRmllbGQodGhpcywgQHNldEl0ZXJhdG9yRmllbGRLaW5kKTsKKyAgICByZXR1
cm4gQHNldEl0ZXJhdG9yTmV4dC5AY2FsbCh0aGlzLCBidWNrZXQsIGtpbmQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TZXRQcm90b3R5cGUuanMKaW5kZXggNmRmOGU4
ZmRkOTlkMWQzMTY1YTFmMWU0MDE0ZjM1YjIzMWFjMTc1ZC4uZmNiNDY4OGFiMjkxYWJhOTRjZDZi
MGYyYjczOTcwMjAxMTljZThhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1NldFByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvU2V0UHJvdG90eXBlLmpzCkBAIC0yMywzOCArMjMsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1AY29uc3RydWN0b3IKLUBnbG9iYWxQcml2YXRlCi1mdW5jdGlvbiBTZXRJdGVyYXRvcihp
dGVyYXRlZE9iamVjdCwga2luZCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBAYXNzZXJ0
KEBpc1NldChpdGVyYXRlZE9iamVjdCkpOwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlz
LCAiaXRlcmF0ZWRPYmplY3QiLCBpdGVyYXRlZE9iamVjdCk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQ
cml2YXRlKHRoaXMsICJzZXRJdGVyYXRvcktpbmQiLCBraW5kKTsKLSAgICBAcHV0QnlJZERpcmVj
dFByaXZhdGUodGhpcywgInNldEJ1Y2tldCIsIEBzZXRCdWNrZXRIZWFkKGl0ZXJhdGVkT2JqZWN0
KSk7Ci19Ci0KLWZ1bmN0aW9uIHZhbHVlcygpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAg
aWYgKCFAaXNTZXQodGhpcykpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU2V0LnByb3RvdHlw
ZS52YWx1ZXMgcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgU2V0Iik7Ci0KLSAgICByZXR1cm4gbmV3
IEBTZXRJdGVyYXRvcih0aGlzLCBAaXRlcmF0aW9uS2luZFZhbHVlKTsKLX0KLQotZnVuY3Rpb24g
ZW50cmllcygpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXNTZXQodGhpcykp
Ci0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU2V0LnByb3RvdHlwZS5lbnRyaWVzIHJlcXVpcmVz
IHRoYXQgfHRoaXN8IGJlIFNldCIpOwotCi0gICAgcmV0dXJuIG5ldyBAU2V0SXRlcmF0b3IodGhp
cywgQGl0ZXJhdGlvbktpbmRFbnRyaWVzKTsKLX0KLQogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFj
ayAvKiwgdGhpc0FyZyAqLykKIHsKICAgICAidXNlIHN0cmljdCI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5jcHAKaW5kZXggMzJhYWY4N2Y0YzU2YTA0ODY2NDQ4ZTQ3OWM1MzlhNzYzYTE5Y2ExMC4uYWY4
M2UzMTJmMDE1Yzk4YjdjNTg3NzRjNzhkNjRlNWFlYTk1ZGZhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmNwcApAQCAtMzYsOCArMzYsMTAgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1
ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgogI2luY2x1
ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJTdHJvbmdJ
bmxpbmVzLmgiCkBAIC05Miw2ICs5NCwxMCBAQCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZNJiB2bSkKICAgICBtX2FycmF5SXRlcmF0b3JGaWVs
ZEl0ZXJhdGVkT2JqZWN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJdGVyYXRlZE9iamVjdCkpKTsKICAgICBtX2FycmF5SXRl
cmF0b3JGaWVsZEluZGV4LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpKTsKICAgICBtX2FycmF5SXRlcmF0b3JGaWVs
ZEtpbmQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXJyYXlJdGVy
YXRvcjo6RmllbGQ6OktpbmQpKSk7CisgICAgbV9tYXBJdGVyYXRvckZpZWxkTWFwQnVja2V0LnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU01hcEl0ZXJhdG9yOjpGaWVs
ZDo6TWFwQnVja2V0KSkpOworICAgIG1fbWFwSXRlcmF0b3JGaWVsZEtpbmQuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpLaW5kKSkp
OworICAgIG1fc2V0SXRlcmF0b3JGaWVsZFNldEJ1Y2tldC5zZXQobV92bSwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNTZXRJdGVyYXRvcjo6RmllbGQ6OlNldEJ1Y2tldCkpKTsKKyAg
ICBtX3NldEl0ZXJhdG9yRmllbGRLaW5kLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU1NldEl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpKTsKICAgICBtX3N0cmluZ0l0ZXJh
dG9yRmllbGRJbmRleC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNT
dHJpbmdJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSkpOwogICAgIG1fc3RyaW5nSXRlcmF0b3JGaWVs
ZEl0ZXJhdGVkU3RyaW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U1N0cmluZ0l0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRTdHJpbmcpKSk7CiAgICAgbV9hc3luY0dl
bmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbi5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdXNwZW5kUmVhc29uKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5LmgKaW5kZXggOWJmMmM0MGUxN2JkMzQ3MTUzYjZiMzk2ZjYyZWZiNmJlOWI0
OTA5MS4uNjcwZWI4ZWI3YWVhMmVhNDM3ZDE5MGFhYTI4OTYwNzVmYWY1MjcxOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5oCkBAIC00Nyw2ICs0Nyw4IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFu
dCA6IGludDMyX3Q7CiAgICAgbWFjcm8oZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBc
CiAgICAgbWFjcm8oZ2V0QXJyYXlJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhn
ZXRTdHJpbmdJdGVyYXRvckludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhnZXRNYXBJdGVyYXRv
ckludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhnZXRTZXRJdGVyYXRvckludGVybmFsRmllbGQp
IFwKICAgICBtYWNybyhpZFdpdGhQcm9maWxlKSBcCiAgICAgbWFjcm8oaXNPYmplY3QpIFwKICAg
ICBtYWNybyhpc0pTQXJyYXkpIFwKQEAgLTYwLDYgKzYyLDggQEAgZW51bSBjbGFzcyBMaW5rVGlt
ZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhpc1NldCkgXAogICAgIG1hY3JvKGlzU3Ry
aW5nSXRlcmF0b3IpIFwKICAgICBtYWNybyhpc0FycmF5SXRlcmF0b3IpIFwKKyAgICBtYWNybyhp
c01hcEl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXNTZXRJdGVyYXRvcikgXAogICAgIG1hY3JvKGlz
VW5kZWZpbmVkT3JOdWxsKSBcCiAgICAgbWFjcm8odGFpbENhbGxGb3J3YXJkQXJndW1lbnRzKSBc
CiAgICAgbWFjcm8odGhyb3dUeXBlRXJyb3IpIFwKQEAgLTc1LDYgKzc5LDggQEAgZW51bSBjbGFz
cyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhwdXRBc3luY0dlbmVyYXRv
ckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhwdXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVs
ZCkgXAogICAgIG1hY3JvKHB1dFN0cmluZ0l0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1h
Y3JvKHB1dE1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKHB1dFNldEl0ZXJh
dG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKHRvTnVtYmVyKSBcCiAgICAgbWFjcm8odG9T
dHJpbmcpIFwKICAgICBtYWNybyh0b09iamVjdCkgXApAQCAtMTIzLDkgKzEyOSwxMiBAQCBlbnVt
IGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90OwogICAgIG1hY3JvKEdlbmVyYXRvclN0
YXRlQ29tcGxldGVkKSBcCiAgICAgbWFjcm8oR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIFwKICAg
ICBtYWNybyhhcnJheUl0ZXJhdG9yRmllbGRJbmRleCkgXAotICAgIG1hY3JvKGFycmF5SXRlcmF0
b3JGaWVsZElzRG9uZSkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JGaWVsZEl0ZXJhdGVkT2Jq
ZWN0KSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvckZpZWxkS2luZCkgXAorICAgIG1hY3JvKG1h
cEl0ZXJhdG9yRmllbGRNYXBCdWNrZXQpIFwKKyAgICBtYWNybyhtYXBJdGVyYXRvckZpZWxkS2lu
ZCkgXAorICAgIG1hY3JvKHNldEl0ZXJhdG9yRmllbGRTZXRCdWNrZXQpIFwKKyAgICBtYWNybyhz
ZXRJdGVyYXRvckZpZWxkS2luZCkgXAogICAgIG1hY3JvKHN0cmluZ0l0ZXJhdG9yRmllbGRJbmRl
eCkgXAogICAgIG1hY3JvKHN0cmluZ0l0ZXJhdG9yRmllbGRJdGVyYXRlZFN0cmluZykgXAogICAg
IG1hY3JvKGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggMjk4OTM3NDBhODVhNTg0OWUzOTcyODg1NjUwMzJhZTc0YmFmZjU1Yi4uZWMwM2Y2OTcyYzdl
ZjgzM2VlZjg5ZjI0NGRhNzA3NDAxMTEyNmVjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODg5LDYgKzg4
OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNTZXQoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlw
ZShkc3QsIHNyYywgSlNTZXRUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNTdHJp
bmdJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1p
dElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1N0cmluZ0l0ZXJhdG9yVHlwZSk7IH0KICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdElzQXJyYXlJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0FycmF5
SXRlcmF0b3JUeXBlKTsgfQorICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNNYXBJdGVyYXRvcihS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhU
eXBlKGRzdCwgc3JjLCBKU01hcEl0ZXJhdG9yVHlwZSk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdElzU2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0
dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNTZXRJdGVyYXRvclR5cGUpOyB9CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc09iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc051bWJlcihSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1VuZGVmaW5l
ZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNjQwYjI0OTc1
NWUxMGVjZGQ5YTgzYjllMTRiMDk3YWIzOWZkMDk0Zi4uYTQ3YjFjM2E3MDJmMjA4YTdkNzM5NWU3
NzAwNmQ3N2U1NmRhZWNlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgIkpT
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0lt
bXV0YWJsZUJ1dHRlcmZseS5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJMZXhlci5oIgpAQCAtMTE1Myw2ICsxMTU1LDI4
IEBAIHN0YXRpYyBKU1N0cmluZ0l0ZXJhdG9yOjpGaWVsZCBzdHJpbmdJdGVyYXRvckludGVybmFs
RmllbGRJbmRleChCeXRlY29kZUludHJpbnNpCiAgICAgcmV0dXJuIEpTU3RyaW5nSXRlcmF0b3I6
OkZpZWxkOjpJbmRleDsKIH0KIAorc3RhdGljIEpTTWFwSXRlcmF0b3I6OkZpZWxkIG1hcEl0ZXJh
dG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX21hcEl0ZXJhdG9yRmllbGRNYXBC
dWNrZXQpCisgICAgICAgIHJldHVybiBKU01hcEl0ZXJhdG9yOjpGaWVsZDo6TWFwQnVja2V0Owor
ICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19tYXBJdGVyYXRvckZpZWxkS2luZCkKKyAgICAgICAgcmV0dXJuIEpT
TWFwSXRlcmF0b3I6OkZpZWxkOjpLaW5kOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpNYXBCdWNrZXQ7Cit9CisKK3N0
YXRpYyBKU1NldEl0ZXJhdG9yOjpGaWVsZCBzZXRJdGVyYXRvckludGVybmFsRmllbGRJbmRleChC
eXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCku
dHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOworICAg
IGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19zZXRJdGVyYXRvckZpZWxkU2V0QnVja2V0KQorICAgICAgICByZXR1cm4g
SlNTZXRJdGVyYXRvcjo6RmllbGQ6OlNldEJ1Y2tldDsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5l
bWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfc2V0SXRl
cmF0b3JGaWVsZEtpbmQpCisgICAgICAgIHJldHVybiBKU1NldEl0ZXJhdG9yOjpGaWVsZDo6S2lu
ZDsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBKU1NldEl0
ZXJhdG9yOjpGaWVsZDo6U2V0QnVja2V0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFByb21pc2VJbnRlcm5hbEZpZWxkKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExp
c3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTIxOCw2ICsxMjQyLDMyIEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0U3Ry
aW5nSXRlcmF0b3JJbnRlcm5hbEZpZWxkCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0SW50
ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBp
bmRleCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfZ2V0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0g
bV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFT
RV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1
bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtYXBJdGVyYXRvckludGVybmFs
RmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4
cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNNYXBJdGVyYXRvcjo6bnVtYmVyT2ZJbnRlcm5h
bEZpZWxkcyk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpLCBpbmRleCk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0U2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExp
c3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25l
eHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2lj
Tm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzZXRJ
dGVyYXRvckludGVybmFsRmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05v
ZGUqPihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNTZXRJdGVyYXRvcjo6
bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBpbmRleCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXJndW1lbnQoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5v
ZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0xMzY3LDYgKzE0MTcsMzggQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRTdHJpbmdJ
dGVyYXRvckludGVybmFsRmllbGQKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5l
cmF0b3IuZW1pdFB1dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdldCgp
KSk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfcHV0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9h
cmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9B
U1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNp
Z25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtYXBJdGVyYXRvckludGVybmFsRmll
bGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4cHIp
KSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNNYXBJdGVyYXRvcjo6bnVtYmVyT2ZJbnRlcm5hbEZp
ZWxkcyk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisKKyAgICBBU1NFUlQoIW5vZGUtPm1f
bmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdFB1
dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdldCgpKSk7Cit9CisKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0U2V0SXRl
cmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3RO
b2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5v
ZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+
bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzZXRJdGVyYXRvckludGVybmFsRmllbGRJbmRleChzdGF0
aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNT
RVJUKGluZGV4IDwgSlNTZXRJdGVyYXRvcjo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CisgICAg
bm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdE5vZGUobm9kZSk7CisKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdFB1dEludGVybmFsRmll
bGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdldCgpKSk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdGFpbENhbGxGb3J3YXJkQXJndW1l
bnRzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAg
ICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTUxNiw2
ICsxNTk4LDggQEAgQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNNYXAsIElzTWFw
KQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNTZXQsIElzU2V0KQogQ1JFQVRF
X0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNTdHJpbmdJdGVyYXRvciwgSXNTdHJpbmdJdGVy
YXRvcikKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzQXJyYXlJdGVyYXRvciwg
SXNBcnJheUl0ZXJhdG9yKQorQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNNYXBJ
dGVyYXRvciwgSXNNYXBJdGVyYXRvcikKK0NSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNL
KGlzU2V0SXRlcmF0b3IsIElzU2V0SXRlcmF0b3IpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFO
RF9DSEVDSyhpc1VuZGVmaW5lZE9yTnVsbCwgSXNVbmRlZmluZWRPck51bGwpCiAKICN1bmRlZiBD
UkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDk1
M2ZiYWVmNDhmM2E1NTRkNDU5YmQ5YTJiM2Q2ZTYzZGFhN2NhYzcuLmEzMDAyM2JjZmMwNjY1ZjQ5
NjdiNjQxNjU0OGRlZjc1NWExMDY0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTI4NjIsNiAr
Mjg2Miw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6
CiAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjogICAgCiAgICAgY2FzZSBOZXdBcnJheUl0ZXJh
dG9yOgorICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CisgICAgY2FzZSBOZXdTZXRJdGVyYXRvcjoK
ICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3SW50ZXJuYWxGaWVs
ZE9iamVjdDoKICAgICAgICAgQVNTRVJUKCEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwpAQCAt
Mjk0Niw2ICsyOTQ4LDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIFBoYW50
b21OZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlCdWZmZXI6CiAg
ICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJ
dGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIFBoYW50
b21OZXdSZWdleHA6CiAgICAgY2FzZSBCb3R0b21WYWx1ZTogewogICAgICAgICBjbGVhckZvck5v
ZGUobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCmluZGV4IDk5NjFkOTAzMmQ2ODBkODUzNDY1OThkZTZhMmI4ZmFjZDczNDI3YmQuLjAx
YTZlYjZiYWVmMjA4NjA4ODA2NTM5NjJlNzAxN2ZmZWE4NmM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01OSw5ICs1OSwxMSBA
QAogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5h
bFByb21pc2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJv
bWlzZUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUg
Ik51bWJlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJPcGNvZGVJbmxpbmVzLmgiCkBAIC0zMTc3LDYgKzMxNzksODYgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIEkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBKU01hcEVudHJpZXNJbnRyaW5zaWM6CisgICAgICAgIGNhc2UgSlNNYXBLZXlz
SW50cmluc2ljOgorICAgICAgICBjYXNlIEpTTWFwVmFsdWVzSW50cmluc2ljOiB7CisgICAgICAg
ICAgICBpbnNlcnRDaGVja3MoKTsKKworICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpIHx8IG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZFR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
SXRlcmF0aW9uS2luZCBraW5kOworICAgICAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAg
ICAgICAgICAgIGNhc2UgSlNNYXBWYWx1ZXNJbnRyaW5zaWM6CisgICAgICAgICAgICAgICAga2lu
ZCA9IEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgSlNNYXBLZXlzSW50cmluc2ljOgorICAgICAgICAgICAgICAgIGtpbmQgPSBJ
dGVyYXRpb25LaW5kOjpLZXlzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBKU01hcEVudHJpZXNJbnRyaW5zaWM6CisgICAgICAgICAgICAgICAga2luZCA9IEl0ZXJh
dGlvbktpbmQ6OkVudHJpZXM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDAsIHJl
Z2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrLCBFZGdlKGJhc2Us
IE1hcE9iamVjdFVzZSkpOworICAgICAgICAgICAgTm9kZSogbWFwQnVja2V0ID0gYWRkVG9HcmFw
aChHZXRNYXBCdWNrZXRIZWFkLCBFZGdlKGJhc2UsIE1hcE9iamVjdFVzZSkpOworCisgICAgICAg
ICAgICAvLyBBZGQgdGhlIGNvbnN0YW50IGJlZm9yZSBleGl0IGJlY29tZXMgaW52YWxpZCBiZWNh
dXNlIHdlIG1heSB3YW50IHRvIGluc2VydCAocmVkdW5kYW50KSBjaGVja3Mgb24gaXQgaW4gRml4
dXAuCisgICAgICAgICAgICBOb2RlKiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGtpbmQpKSk7CisKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjdXJyZW50Tm9kZU9yaWdp
bigpLnNlbWFudGljKTsKKyAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gYWRkVG9HcmFwaChO
ZXdNYXBJdGVyYXRvciwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpKSkpOworCisgICAgICAgICAgICBhZGRUb0dyYXBo
KFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNNYXBJdGVy
YXRvcjo6RmllbGQ6Ok1hcEJ1Y2tldCkpLCBpdGVyYXRvciwgbWFwQnVja2V0KTsKKyAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihKU01hcEl0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRPYmplY3QpKSwgaXRlcmF0b3IsIGJh
c2UpOworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpLaW5kKSksIGl0ZXJhdG9y
LCBraW5kTm9kZSk7CisKKyAgICAgICAgICAgIHNldFJlc3VsdChpdGVyYXRvcik7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgSlNTZXRFbnRyaWVz
SW50cmluc2ljOgorICAgICAgICBjYXNlIEpTU2V0VmFsdWVzSW50cmluc2ljOiB7CisgICAgICAg
ICAgICBpbnNlcnRDaGVja3MoKTsKKworICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpIHx8IG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZFR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
SXRlcmF0aW9uS2luZCBraW5kOworICAgICAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAg
ICAgICAgICAgIGNhc2UgSlNTZXRWYWx1ZXNJbnRyaW5zaWM6CisgICAgICAgICAgICAgICAga2lu
ZCA9IEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgSlNTZXRFbnRyaWVzSW50cmluc2ljOgorICAgICAgICAgICAgICAgIGtpbmQg
PSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBOb2RlKiBiYXNlID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhp
cygwLCByZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVjaywgRWRn
ZShiYXNlLCBTZXRPYmplY3RVc2UpKTsKKyAgICAgICAgICAgIE5vZGUqIHNldEJ1Y2tldCA9IGFk
ZFRvR3JhcGgoR2V0TWFwQnVja2V0SGVhZCwgRWRnZShiYXNlLCBTZXRPYmplY3RVc2UpKTsKKwor
ICAgICAgICAgICAgLy8gQWRkIHRoZSBjb25zdGFudCBiZWZvcmUgZXhpdCBiZWNvbWVzIGludmFs
aWQgYmVjYXVzZSB3ZSBtYXkgd2FudCB0byBpbnNlcnQgKHJlZHVuZGFudCkgY2hlY2tzIG9uIGl0
IGluIEZpeHVwLgorICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVt
YmVyKHN0YXRpY19jYXN0PHVpbnQzMl90PihraW5kKSkpOworCisgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY3VycmVudE5v
ZGVPcmlnaW4oKS5zZW1hbnRpYyk7CisgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGFkZFRv
R3JhcGgoTmV3U2V0SXRlcmF0b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSkpKTsKKworICAgICAgICAgICAgYWRk
VG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpT
U2V0SXRlcmF0b3I6OkZpZWxkOjpTZXRCdWNrZXQpKSwgaXRlcmF0b3IsIHNldEJ1Y2tldCk7Cisg
ICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oSlNTZXRJdGVyYXRvcjo6RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KSksIGl0ZXJh
dG9yLCBiYXNlKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJ
bmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU1NldEl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpLCBp
dGVyYXRvciwga2luZE5vZGUpOworCisgICAgICAgICAgICBzZXRSZXN1bHQoaXRlcmF0b3IpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIEpTU2V0
QnVja2V0SGVhZEludHJpbnNpYzoKICAgICAgICAgY2FzZSBKU01hcEJ1Y2tldEhlYWRJbnRyaW5z
aWM6IHsKICAgICAgICAgICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9PSAy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZDE5NTIy
ZmVkNWU4ZTVmYWZjNWQ5NTNlYzgzMjBlZTdkNjdmNTIzYy4uOTMwNGMyMDJjODY4NDhlMTMxMGZh
ODI2MjAzYWE5N2EwZTBhOTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKQEAgLTE1OTQsNiArMTU5NCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICBj
YXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjoKKyAgICBjYXNl
IE5ld1NldEl0ZXJhdG9yOgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3U3ltYm9s
OgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpAQCAtMTYwNCw2ICsxNjA2LDggQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJl
YWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAg
IGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9t
TmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKKyAgICBj
YXNlIFBoYW50b21OZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3SW50ZXJu
YWxGaWVsZE9iamVjdDoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNh
c2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCBlZTk4ZmFjMjMwNTM0OTkz
MDU5NDhhN2M0MDJkZjM4ZDJiZjA2ZGViLi4yMTYzMWVjZjlmMDNiYmFlNjU0MjJhODg4Njk0OGJm
ODg4ZjE4YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcApAQCAtNjEsNiArNjEsOCBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBj
YXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBj
YXNlIE5ld01hcEl0ZXJhdG9yOgorICAgIGNhc2UgTmV3U2V0SXRlcmF0b3I6CiAgICAgY2FzZSBO
ZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6
CkBAIC03MSw2ICs3Myw4IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAg
ICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBcnJh
eUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgorICAgIGNhc2UgUGhh
bnRvbU5ld1NldEl0ZXJhdG9yOgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdJbnRlcm5hbEZpZWxk
T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBNYXRl
cmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDY1MDUzY2ViNWUwODdhMGNk
NGEzMTQ4MGFmZGU4ZDY1MTgxZWQxNDMuLjY3N2M0MDhlOTgwZGI5NDgwOThhY2ZmOGU3NzEzZDUy
Y2YzYzkxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xMTAxLDYgKzExMDEsOCBAQCBjbGFzcyBDb25zdGFu
dEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNlIFBoYW50b21O
ZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5
bmNGdW5jdGlvbjoKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6Cisg
ICAgICAgICAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKKyAgICAgICAgICAgIGNhc2Ug
UGhhbnRvbU5ld1NldEl0ZXJhdG9yOgogICAgICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAg
ICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAppbmRleCA1NWQzYzhmZDVkY2Y4ZmEyZWZiYTM3Zjk2ZGM5MDk5ZDQ5
NzI1MTgxLi5mY2Y0OWY1MzI3MmUzODFjN2NmZDU1MmM0YjVmNmU2NmY2YjFmOGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yMTEsNiArMjExLDggQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbU5ld0Fz
eW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoK
ICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01h
cEl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld1NldEl0ZXJhdG9yOgogICAgIGNhc2UgUGhh
bnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgog
ICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CkBAIC0zNTcsNiArMzU5LDggQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgY2Fz
ZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNh
c2UgTmV3TWFwSXRlcmF0b3I6CisgICAgY2FzZSBOZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIFNw
cmVhZDoKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZl
cjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDc5
YTljNGZhYjUwZTZjNjY1NWE0NmQ0YzlhMWY5OGJlZjNjNzhmMzcuLjMxNzRmZjNjZDFkOWU1Njg3
ODNhZGQ5ZDg5NGQ1YWUxMGQxZGJkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcApAQCAtMTk0MCw2ICsxOTQwLDggQEAgY2xhc3MgRml4dXBQaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgICAgIGNh
c2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0
ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50b21OZXdTZXRJdGVyYXRvcjoKICAgICAgICAgY2Fz
ZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJn
dW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgpAQCAtMjUzMiw2ICsyNTM0
LDggQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNl
IE5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CisgICAgICAg
IGNhc2UgTmV3U2V0SXRlcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgogICAgICAgICBj
YXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAgICAgIGNhc2UgSXNFbXB0eToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4MTBlMTAxNTUzYjE5YWY1MTM0
NDJjMDNlYmVlYzA0ODBmMmIuLjUyNTU2OGRjZWEwZTYzNjM2MDQ4MDljMjhkYjljMGI1N2I4MDJk
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtNzIsNiAr
NzIsOCBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIFN0
YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgUGhhbnRvbU5ld09i
amVjdDoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRv
bU5ld01hcEl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld1NldEl0ZXJhdG9yOgogICAgIGNh
c2UgUHV0U3RhY2s6CiAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKQEAg
LTEzMCw2ICsxMzIsOCBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIFN0YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAg
Y2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgTmV3
TWFwSXRlcmF0b3I6CisgICAgY2FzZSBOZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIE5ld1JlZ2V4
cDoKICAgICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2UgVG9OdW1lcmljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAppbmRleCBiYzdjZmIxMmQwYThlMmQzMmUyNzI5N2Y3NDhhNjU1ZTM1
MTcyNjc2Li43NDIyNmM4NTYzMTRlYTdjOGVhYWQ5YjAxOTQwNzk1MGNiZGY1NzIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNjYwLDYgKzY2MCwyOCBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgpOwogICAgIH0KIAorICAgIHZv
aWQgY29udmVydFRvUGhhbnRvbU5ld01hcEl0ZXJhdG9yKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX29wID09IE5ld01hcEl0ZXJhdG9yKTsKKyAgICAgICAgbV9vcCA9IFBoYW50b21OZXdNYXBJ
dGVyYXRvcjsKKyAgICAgICAgbV9mbGFncyAmPSB+Tm9kZUhhc1ZhckFyZ3M7CisgICAgICAgIG1f
ZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKKyAgICAgICAgbV9vcEluZm8gPSBPcEluZm9XcmFw
cGVyKCk7CisgICAgICAgIG1fb3BJbmZvMiA9IE9wSW5mb1dyYXBwZXIoKTsKKyAgICAgICAgY2hp
bGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CisgICAgfQorCisgICAgdm9pZCBjb252ZXJ0VG9QaGFu
dG9tTmV3U2V0SXRlcmF0b3IoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gTmV3U2V0
SXRlcmF0b3IpOworICAgICAgICBtX29wID0gUGhhbnRvbU5ld1NldEl0ZXJhdG9yOworICAgICAg
ICBtX2ZsYWdzICY9IH5Ob2RlSGFzVmFyQXJnczsKKyAgICAgICAgbV9mbGFncyB8PSBOb2RlTXVz
dEdlbmVyYXRlOworICAgICAgICBtX29wSW5mbyA9IE9wSW5mb1dyYXBwZXIoKTsKKyAgICAgICAg
bV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigpOworICAgICAgICBjaGlsZHJlbiA9IEFkamFjZW5j
eUxpc3QoKTsKKyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRUb1BoYW50b21OZXdBc3luY0Z1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX29wID09IE5ld0FzeW5jRnVuY3Rpb24pOwpA
QCAtMTk3Nyw2ICsxOTk5LDggQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIE5ld0dlbmVy
YXRvcjoKICAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdB
cnJheUl0ZXJhdG9yOgorICAgICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgorICAgICAgICBjYXNl
IE5ld1NldEl0ZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpAQCAtMjE0Myw2ICsyMTY3LDggQEAg
c3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICBjYXNl
IFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVy
YXRvcjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3U2V0SXRlcmF0b3I6CiAgICAgICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCmluZGV4IDNmZWY2YjM4MTg1M2RkNWU3MmM5OGE0ZjI4YjkwYmFmZjZjNmJlNGEuLjNh
NDE1ZTRhNjM2MTRhNmJhZmMxYmQ4ZTAzYWE5ZGEyYzg5ZTA1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM1OSw2ICszNTksOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTmV3QXJyYXlXaXRoU2l6ZSwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld0FycmF5QnVmZmVyLCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdBcnJheUl0ZXJhdG9yLCBOb2RlUmVzdWx0SlMpIFwK
KyAgICBtYWNybyhOZXdNYXBJdGVyYXRvciwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3
U2V0SXRlcmF0b3IsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1R5cGVkQXJyYXksIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOZXdSZWdleHAsIE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1N5bWJvbCwgTm9kZVJlc3VsdEpTKSBcCkBAIC0z
NzgsNiArMzgwLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3Jv
KFBoYW50b21OZXdBc3luY0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTmV3QXJyYXlJdGVy
YXRvciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFBoYW50
b21OZXdNYXBJdGVyYXRvciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKFBoYW50b21OZXdTZXRJdGVyYXRvciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKE1hdGVyaWFsaXplTmV3SW50ZXJuYWxGaWVsZE9iamVjdCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQaGFudG9tQ3JlYXRlQWN0
aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE1h
dGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3Mp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVj
dEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDA1YWNkZjIzODc2OTczZjg4ZTgyYjlh
NzNiMzQ5ZWU3NzliNWI5ODQuLjcxMDY3ODExYTI0OTM2ZmFhYWZlZDRjY2UyNjdlZDIxN2RmZDE4
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1
ZGUgIkRGR1ZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJK
U1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpc3QuaD4KIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewpAQCAtOTY2LDYgKzk2OCwxNiBAQCBjbGFzcyBPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjogeworICAgICAgICAgICAg
dGFyZ2V0ID0gaGFuZGxlSW50ZXJuYWxGaWVsZENsYXNzPEpTTWFwSXRlcmF0b3I+KG5vZGUsIHdy
aXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgTmV3
U2V0SXRlcmF0b3I6IHsKKyAgICAgICAgICAgIHRhcmdldCA9IGhhbmRsZUludGVybmFsRmllbGRD
bGFzczxKU1NldEl0ZXJhdG9yPihub2RlLCB3cml0ZXMpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIE5ld1JlZ2V4cDogewogICAgICAgICAgICAgdGFyZ2V0
ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OlJlZ0V4cE9i
amVjdCk7CiAKQEAgLTIwODgsNiArMjEwMCwxNCBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb1BoYW50b21OZXdBcnJheUl0ZXJhdG9yKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKIAorICAgICAgICAgICAgICAgICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgor
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbU5ld01hcEl0ZXJh
dG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
ICAgICBjYXNlIE5ld1NldEl0ZXJhdG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbU5ld1NldEl0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKwogICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZh
dGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAwOGNlNTQzNWQzZjcxOTA2M2NmYzA5
ZmZhNzdkY2Y2MTFmZjhmOTk4Li44YzBhZTk1NGJkYzIyY2ViOGNjMjViNzBjYmYxNWE4YmM4YjZk
NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAg
LTIxMTMsNiArMjExMywyNCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
YXlJdGVyYXRvcihWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgIHJldHVybiBK
U0FycmF5SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKHZtLCBzdHJ1Y3R1cmUpOwog
fQogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IoVk0qIHZt
UG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0gKnZtUG9pbnRl
cjsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworCisgICAgcmV0dXJuIEpTTWFwSXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVz
KHZtLCBzdHJ1Y3R1cmUpOworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
U2V0SXRlcmF0b3IoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAg
Vk0mIHZtID0gKnZtUG9pbnRlcjsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgcmV0dXJuIEpTU2V0SXRlcmF0b3I6OmNyZWF0
ZVdpdGhJbml0aWFsVmFsdWVzKHZtLCBzdHJ1Y3R1cmUpOworfQorCiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChWTSogdm1Qb2ludGVyLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5j
b2RlZEpTVmFsdWUgaW5pdGlhbFZhbHVlRW5jb2RlZCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2lu
dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAwYzg3
M2RiZTVmZWViOGViZGQwMjM2OWMxOWYxNDczZTI1NjY1MTcyLi5hOGE0Y2JkMjBlNjdkZmY2NDA2
Y2VkZWExZjFlNGEwN2U3N2NkOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaApAQCAtMTI2LDYgKzEyNiw4IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyCiBj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopIFdURl9JTlRFUk5BTDsKIGNo
YXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yKFZNKiwg
U3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld01hcEl0ZXJhdG9yKFZNKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1NldEl0ZXJhdG9yKFZNKiwgU3RydWN0dXJlKikgV1RG
X0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3Qo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFM
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyODg4NThiMzhjMTZhNjVhOGM4ZWJkYjlkNDM3
MDEyODM0NzJhNTBhLi5jNGRlYmYyNzAzMjM4MzE1NTViYzRhYTQ3ZTg4ZTE4YTNmNWMwMDg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTA2MSw2ICsxMDYxLDggQEAgY2xhc3MgUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIENyZWF0
ZUFzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAg
ICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6Cisg
ICAgICAgIGNhc2UgTmV3U2V0SXRlcmF0b3I6CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNw
ZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTI4
NSw2ICsxMjg3LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld0FycmF5QnVmZmVyOgogICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJh
eUl0ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKKyAgICAgICAg
Y2FzZSBQaGFudG9tTmV3U2V0SXRlcmF0b3I6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFy
Z3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgICAgICBjYXNlIEdl
dE15QXJndW1lbnRCeVZhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKaW5kZXggYmFkZmUxYjJkMTQyOWIyZTA1NjRlNjAxYTBjN2ZjOTY2NGI1NWVhYy4u
Y2Y1ZDEwNjA2NmUyYmQxNThkMmU3NGZiNGQ5YWE3ZDk3NzU1NTY4NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTU0OSw2ICs1NDksOCBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2Fz
ZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNh
c2UgTmV3TWFwSXRlcmF0b3I6CisgICAgY2FzZSBOZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIFNw
cmVhZDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKQEAgLTYxOSw2
ICs2MjEsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUGhhbnRvbU5ld0Fz
eW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoK
ICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01h
cEl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld1NldEl0ZXJhdG9yOgogICAgIGNhc2UgUGhh
bnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgIGNh
c2UgUHV0SGludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggY2FhNGJhYjQxMGU2ZDUzNGUwNmE1OTU3NjE5ZDM5YzljODdlYzA5ZC4u
OTQ2N2UyNjJkMWViNDc4YzM3MTBmZTRlYTM1YmQ5YzBhNDZmMjQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTU4LDcgKzU4LDkg
QEAKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFi
bGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1
ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCIKKyNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgog
I2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgpA
QCAtMTMwMTQsNiArMTMwMTYsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Fy
cmF5SXRlcmF0b3IoTm9kZSogbm9kZSkKICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVj
dDxKU0FycmF5SXRlcmF0b3I+KG5vZGUsIG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IpOwogfQog
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3TWFwSXRlcmF0b3IoTm9kZSogbm9kZSkK
K3sKKyAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxKU01hcEl0ZXJhdG9yPihub2Rl
LCBvcGVyYXRpb25OZXdNYXBJdGVyYXRvcik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdTZXRJdGVyYXRvcihOb2RlKiBub2RlKQoreworICAgIGNvbXBpbGVOZXdJbnRlcm5h
bEZpZWxkT2JqZWN0PEpTU2V0SXRlcmF0b3I+KG5vZGUsIG9wZXJhdGlvbk5ld1NldEl0ZXJhdG9y
KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5v
ZGUpCiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBlM2Y2
N2UxNTkyYzhlZjljNzBiYmQwNjI3MmVkMzc2YTNiOWNkMzJhLi45MmM5Y2ZlY2FkZmU2YzQ5YTA1
MDZkMGQ0NzkyZmU5MzIxMTI2Y2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDYzLDYgKzE0NjMsOCBAQCBjbGFzcyBTcGVjdWxhdGl2
ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVOZXdBc3luY0dlbmVyYXRvcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3QXJyYXlJ
dGVyYXRvcihOb2RlKik7CisgICAgdm9pZCBjb21waWxlTmV3TWFwSXRlcmF0b3IoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZU5ld1NldEl0ZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVU
b1ByaW1pdGl2ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVG9Qcm9wZXJ0eUtleShOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlVG9OdW1lcmljKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDEyOTBkMTc5
NzAzZTg2NzAyNmYzMDJiYzgwZTcyYTAyNWY2OGJkMjQuLjVlYzlhOWEyZDE1ZWYwYTczYjAyMWRi
ZGRiODk5OGE0YmNiMTEzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzI2NSw2ICszMjY1LDE2IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCisgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjogeworICAgICAgICBjb21waWxlTmV3TWFwSXRl
cmF0b3Iobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgTmV3U2V0SXRl
cmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld1NldEl0ZXJhdG9yKG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldENhbGxlZTogewogICAgICAgICBjb21waWxlR2V0
Q2FsbGVlKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQyMTcsNiArNDIyNyw4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdB
c3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246
CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdN
YXBJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIFBo
YW50b21OZXdSZWdleHA6CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmVJbW1lZGlhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAppbmRleCBjNTdhNTRmNWFkZGQ0NTRiYzQ0NjkyZTViNGU1ODdiZjA0YTlm
MWQ5Li42YmZlMTEzZGEyMWEzMmZjZTQ4NTgzYjQ5MDhiNTZkNjNmZmZlY2QwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM1
OTQsNiArMzU5NCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6IHsKKyAg
ICAgICAgY29tcGlsZU5ld01hcEl0ZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBjYXNlIE5ld1NldEl0ZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVOZXdTZXRJdGVy
YXRvcihub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6
IHsKICAgICAgICAgY29tcGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01
Mjc4LDYgKzUyODgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdB
c3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6
CisgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CisgICAgY2FzZSBQaGFudG9tTmV3U2V0
SXRlcmF0b3I6CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBo
YW50b21OZXdSZWdleHA6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCmluZGV4IDkzM2QzYTRkNmFhOTc0ZTBiOTIwZTU3OWIwNjFhNzAyMTZmOTNlNzUu
LmMyYjg3MmYwNzZmMDZmZDNmYzI5Zjc2YzI4NDAzNDNhYmM4ZGIyZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCkBAIC0zMzgsNiArMzM4LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXpl
OgogICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgICAgIGNhc2UgTmV3
QXJyYXlJdGVyYXRvcjoKKyAgICAgICAgICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CisgICAgICAg
ICAgICBjYXNlIE5ld1NldEl0ZXJhdG9yOgogICAgICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5
OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgICAgICBjYXNlIE5ld1N0cmlu
Z09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCA1YzY5ZDFkMzhjMWM2MTA1OTlmZDMwMjk5NzM0MzYwY2IyMjdhY2IyLi43MWY0NjJl
NDRjZjc1ZjdlMWE5M2YxZTQxNTY1OTRiNmVlMTE3OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC04Miw2ICs4Miw4IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXk6
CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9y
OgorICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CisgICAgY2FzZSBOZXdTZXRJdGVyYXRvcjoKICAg
ICBjYXNlIFNwcmVhZDoKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3VHlw
ZWRBcnJheToKQEAgLTI5Miw2ICsyOTQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0
aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9t
TmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKKyAgICBj
YXNlIFBoYW50b21OZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0
aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAgICBjYXNlIFB1dEhpbnQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNzczYTAw
NmUwODc0MDk3NGYwMzNlNmMyZDgyZGVhYzhiMmZkYzU0Ny4uN2RmNWVlNzkxYjZhZDFmYzI0MWRk
ZWVmMDYwZDk0YjAzYmYzMDAwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcApAQCAtODYsNiArODYsOCBAQAogI2luY2x1ZGUgIkpTSW1tdXRhYmxl
QnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRl
ICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1NldEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvYmVD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCkBAIC0xMDc1LDYgKzEwNzcsMTIg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgog
ICAgICAgICAgICAgY29tcGlsZU5ld0FycmF5SXRlcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgorICAgICAgICAgICAgY29tcGlsZU5ld01h
cEl0ZXJhdG9yKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOZXdTZXRJdGVy
YXRvcjoKKyAgICAgICAgICAgIGNvbXBpbGVOZXdTZXRJdGVyYXRvcigpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgICAgICAgICAgY29tcGls
ZU5ld1N0cmluZ09iamVjdCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTk0LDYgKzE2MDIs
OCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dl
bmVyYXRvckZ1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgog
ICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50
b21OZXdNYXBJdGVyYXRvcjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3U2V0SXRlcmF0b3I6CiAg
ICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhhbnRv
bURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKQEAgLTYz
OTAsNiArNjQwMCwxNiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjb21waWxlTmV3
SW50ZXJuYWxGaWVsZE9iamVjdDxKU0FycmF5SXRlcmF0b3I+KG9wZXJhdGlvbk5ld0FycmF5SXRl
cmF0b3IpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU5ld01hcEl0ZXJhdG9yKCkKKyAgICB7
CisgICAgICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0PEpTTWFwSXRlcmF0b3I+KG9w
ZXJhdGlvbk5ld01hcEl0ZXJhdG9yKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVOZXdTZXRJ
dGVyYXRvcigpCisgICAgeworICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxK
U1NldEl0ZXJhdG9yPihvcGVyYXRpb25OZXdTZXRJdGVyYXRvcik7CisgICAgfQorCiAgICAgdm9p
ZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KCkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9ub2RlLT5zdHJ1Y3R1cmUoKTsKQEAgLTEyMzEwLDYgKzEyMzMw
LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgSlNBcnJheUl0ZXJhdG9y
VHlwZToKICAgICAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPEpTQXJyYXlJdGVyYXRvcj4ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvcik7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBKU01hcEl0ZXJhdG9yVHlwZToKKyAgICAgICAg
ICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld0ludGVybmFsRmllbGRPYmplY3RJbXBsPEpTTWFwSXRl
cmF0b3I+KG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEpTU2V0SXRlcmF0b3JUeXBlOgorICAgICAgICAgICAgY29tcGlsZU1hdGVyaWFs
aXplTmV3SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8SlNTZXRJdGVyYXRvcj4ob3BlcmF0aW9uTmV3
U2V0SXRlcmF0b3IpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHN0cnVjdHVyZSIpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRl
eCA4ZWYyMzlkNmZjYTVjMDA5Y2Q3NTY1YWZjZTdhZDc2NDMyODc2Mzc4Li5jZGNjODgyMmFlYjFm
NGRkN2I5NDNiMzUzYTU5YjczNDNlMmY2YzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAKICNpbmNsdWRlICJKU0dlbmVy
YXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNs
dWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIK
KyNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCkBAIC0xMzEsNiArMTMzLDMy
IEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0
SW5PU1IoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAg
IGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOiB7CisgICAgICAgIEpTTWFwSXRlcmF0b3IqIG1h
cEl0ZXJhdG9yID0ganNDYXN0PEpTTWFwSXRlcmF0b3IqPihKU1ZhbHVlOjpkZWNvZGUoKmVuY29k
ZWRWYWx1ZSkpOworCisgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0byBwb3B1bGF0ZSB0aGUg
aXRlcmF0b3Igd2l0aAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9w
ZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwor
ICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkua2luZCgpICE9IEludGVybmFsRmll
bGRPYmplY3RQTG9jKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgbWFw
SXRlcmF0b3ItPmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8SlNNYXBJdGVyYXRvcjo6RmllbGQ+
KHByb3BlcnR5LmxvY2F0aW9uKCkuaW5mbygpKSkuc2V0KHZtLCBtYXBJdGVyYXRvciwgSlNWYWx1
ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGNhc2UgUGhhbnRvbU5ld1NldEl0ZXJhdG9yOiB7CisgICAgICAgIEpTU2V0SXRlcmF0
b3IqIHNldEl0ZXJhdG9yID0ganNDYXN0PEpTU2V0SXRlcmF0b3IqPihKU1ZhbHVlOjpkZWNvZGUo
KmVuY29kZWRWYWx1ZSkpOworCisgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0byBwb3B1bGF0
ZSB0aGUgaXRlcmF0b3Igd2l0aAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6
YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4
aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygp
W2ldOworICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkua2luZCgpICE9IEludGVy
bmFsRmllbGRPYmplY3RQTG9jKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgc2V0SXRlcmF0b3ItPmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8SlNTZXRJdGVyYXRvcjo6
RmllbGQ+KHByb3BlcnR5LmxvY2F0aW9uKCkuaW5mbygpKSkuc2V0KHZtLCBzZXRJdGVyYXRvciwg
SlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDogewogICAgICAgICBSZWdFeHBPYmpl
Y3QqIHJlZ0V4cE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUo
KmVuY29kZWRWYWx1ZSkpOwogCkBAIC0zMTUsNiArMzQzLDUwIEBAIGV4dGVybiAiQyIgSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoSlNHbG9iYWxP
YmplY3QqCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgY2FzZSBQaGFudG9t
TmV3TWFwSXRlcmF0b3I6IHsKKyAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHN0cnVjdHVyZS4K
KyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsK
KyAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFs
aXphdGlvbi0+cHJvcGVydGllcygpW2ldOworICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0
aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoU3RydWN0dXJlUExvYykpIHsKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKS5h
c0NlbGwoKS0+aW5oZXJpdHM8U3RydWN0dXJlPih2bSkpOworICAgICAgICAgICAgICAgIHN0cnVj
dHVyZSA9IGpzQ2FzdDxTdHJ1Y3R1cmUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJl
KTsKKworICAgICAgICBKU01hcEl0ZXJhdG9yKiByZXN1bHQgPSBKU01hcEl0ZXJhdG9yOjpjcmVh
dGVXaXRoSW5pdGlhbFZhbHVlcyh2bSwgc3RydWN0dXJlKTsKKworICAgICAgICBSRUxFQVNFX0FT
U0VSVChtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCkgLSAxID09IEpTTWFwSXRl
cmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworCisgICAgICAgIC8vIFRoZSByZWFsIHZh
bHVlcyB3aWxsIGJlIHB1dCBzdWJzZXF1ZW50bHkgYnkKKyAgICAgICAgLy8gb3BlcmF0aW9uUG9w
dWxhdGVOZXdPYmplY3RJbk9TUi4gU2VlIHRoZSBQaGFudG9tTmV3T2JqZWN0CisgICAgICAgIC8v
IGNhc2UgZm9yIGRldGFpbHMuCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
Y2FzZSBQaGFudG9tTmV3U2V0SXRlcmF0b3I6IHsKKyAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0
IHN0cnVjdHVyZS4KKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0
eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOworICAgICAgICAgICAgaWYgKHBy
b3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoU3RydWN0dXJl
UExvYykpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChKU1ZhbHVlOjpkZWNvZGUo
dmFsdWVzW2ldKS5hc0NlbGwoKS0+aW5oZXJpdHM8U3RydWN0dXJlPih2bSkpOworICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZSA9IGpzQ2FzdDxTdHJ1Y3R1cmUqPihKU1ZhbHVlOjpkZWNvZGUodmFs
dWVzW2ldKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc3RydWN0dXJlKTsKKworICAgICAgICBKU1NldEl0ZXJhdG9yKiByZXN1bHQgPSBKU1NldEl0
ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyh2bSwgc3RydWN0dXJlKTsKKworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCkgLSAx
ID09IEpTU2V0SXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworCisgICAgICAgIC8v
IFRoZSByZWFsIHZhbHVlcyB3aWxsIGJlIHB1dCBzdWJzZXF1ZW50bHkgYnkKKyAgICAgICAgLy8g
b3BlcmF0aW9uUG9wdWxhdGVOZXdPYmplY3RJbk9TUi4gU2VlIHRoZSBQaGFudG9tTmV3T2JqZWN0
CisgICAgICAgIC8vIGNhc2UgZm9yIGRldGFpbHMuCisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21EaXJl
Y3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuY3BwCmluZGV4IDA4MGZhZWRlODFhMjI2ODIyMWQxYzUwODk0MWQ5ZWYyNzEyNzlhMjAuLjI3
ZDA0YWQxNDViN2RkNjQxZTU2NTU2Mjg2MmM3Yzg1MTA3OGQ0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
CkBAIC01MSw5ICs1MSwxMSBAQAogI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRl
ICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQ
cm9taXNlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1NldEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVHlw
ZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKQEAgLTM5Nyw5ICszOTksOSBAQCBK
U1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldFByaXZhdGVOYW1lKCkpKSB7Ci0gICAg
ICAgICAgICBKU1ZhbHVlIGl0ZXJhdGVkVmFsdWUgPSBpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZE9iamVjdFByaXZh
dGVOYW1lKCkpOwotICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kID0gc3RhdGljX2Nhc3Q8
SXRlcmF0aW9uS2luZD4oaXRlcmF0b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwSXRlcmF0b3JLaW5kUHJpdmF0ZU5hbWUoKSkuYXNJbnQz
MigpKTsKKyAgICAgICAgaWYgKGF1dG8qIG1hcEl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU01h
cEl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yT2JqZWN0KSkgeworICAgICAgICAgICAgSlNWYWx1ZSBp
dGVyYXRlZFZhbHVlID0gbWFwSXRlcmF0b3ItPml0ZXJhdGVkT2JqZWN0KCk7CisgICAgICAgICAg
ICBJdGVyYXRpb25LaW5kIGtpbmQgPSBtYXBJdGVyYXRvci0+a2luZCgpOwogCiAgICAgICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0
cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCAyKTsKQEAgLTQxMSw5ICs0MTMs
OSBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICAgICAgcmV0dXJuIGFycmF5Owog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tldFByaXZhdGVOYW1lKCkpKSB7
Ci0gICAgICAgICAgICBKU1ZhbHVlIGl0ZXJhdGVkVmFsdWUgPSBpdGVyYXRvck9iamVjdC0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZE9iamVj
dFByaXZhdGVOYW1lKCkpOwotICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kID0gc3RhdGlj
X2Nhc3Q8SXRlcmF0aW9uS2luZD4oaXRlcmF0b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0SXRlcmF0b3JLaW5kUHJpdmF0ZU5hbWUoKSku
YXNJbnQzMigpKTsKKyAgICAgICAgaWYgKGF1dG8qIHNldEl0ZXJhdG9yID0ganNEeW5hbWljQ2Fz
dDxKU1NldEl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yT2JqZWN0KSkgeworICAgICAgICAgICAgSlNW
YWx1ZSBpdGVyYXRlZFZhbHVlID0gc2V0SXRlcmF0b3ItPml0ZXJhdGVkT2JqZWN0KCk7CisgICAg
ICAgICAgICBJdGVyYXRpb25LaW5kIGtpbmQgPSBzZXRJdGVyYXRvci0+a2luZCgpOwogCiAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCAyKTsKQEAgLTU0OSwy
MyArNTUxLDE3IEBAIHN0YXRpYyBKU09iamVjdCogY2xvbmVBcnJheUl0ZXJhdG9yT2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwKICAgICByZXR1cm4gY2xvbmU7CiB9
CiAKLXN0YXRpYyBKU09iamVjdCogY2xvbmVNYXBJdGVyYXRvck9iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTT2JqZWN0KiBpdGVyYXRvck9iamVjdCwgSlNWYWx1
ZSBtYXBCdWNrZXQsIEpTVmFsdWUgaXRlcmF0ZWRPYmplY3QpCitzdGF0aWMgSlNPYmplY3QqIGNs
b25lTWFwSXRlcmF0b3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZt
LCBKU01hcEl0ZXJhdG9yKiBpdGVyYXRvck9iamVjdCkKIHsKLSAgICBBU1NFUlQoaXRlcmF0b3JP
YmplY3QtPnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOwotICAgIEpTT2JqZWN0KiBjbG9uZSA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgTWFwSXRlcmF0b3JQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQcm90b3R5cGUo
KSkpKTsKLSAgICBjbG9uZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pdGVyYXRlZE9iamVjdFByaXZhdGVOYW1lKCksIGl0ZXJhdGVkT2JqZWN0KTsKLSAg
ICBjbG9uZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5t
YXBJdGVyYXRvcktpbmRQcml2YXRlTmFtZSgpLCBpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBJdGVyYXRvcktpbmRQcml2YXRl
TmFtZSgpKSk7Ci0gICAgY2xvbmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkubWFwQnVja2V0UHJpdmF0ZU5hbWUoKSwgbWFwQnVja2V0KTsKKyAgICBKU01h
cEl0ZXJhdG9yKiBjbG9uZSA9IEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCBqc0Nhc3Q8SlNNYXAqPihpdGVyYXRvck9iamVjdC0+
aXRlcmF0ZWRPYmplY3QoKSksIGl0ZXJhdG9yT2JqZWN0LT5raW5kKCkpOworICAgIGNsb25lLT5p
bnRlcm5hbEZpZWxkKEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpNYXBCdWNrZXQpLnNldCh2bSwgY2xv
bmUsIGl0ZXJhdG9yT2JqZWN0LT5pbnRlcm5hbEZpZWxkKEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpN
YXBCdWNrZXQpLmdldCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLXN0YXRpYyBKU09iamVj
dCogY2xvbmVTZXRJdGVyYXRvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIEpTT2JqZWN0KiBpdGVyYXRvck9iamVjdCwgSlNWYWx1ZSBzZXRCdWNrZXQsIEpTVmFs
dWUgaXRlcmF0ZWRPYmplY3QpCitzdGF0aWMgSlNPYmplY3QqIGNsb25lU2V0SXRlcmF0b3JPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1NldEl0ZXJhdG9yKiBp
dGVyYXRvck9iamVjdCkKIHsKLSAgICBBU1NFUlQoaXRlcmF0b3JPYmplY3QtPnR5cGUoKSA9PSBG
aW5hbE9iamVjdFR5cGUpOwotICAgIEpTT2JqZWN0KiBjbG9uZSA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGdsb2JhbE9iamVjdCwgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBTZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQcm90b3R5cGUoKSkpKTsKLSAgICBjbG9uZS0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZE9i
amVjdFByaXZhdGVOYW1lKCksIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBjbG9uZS0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRJdGVyYXRvcktpbmRQcml2
YXRlTmFtZSgpLCBpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5zZXRJdGVyYXRvcktpbmRQcml2YXRlTmFtZSgpKSk7Ci0gICAgY2xv
bmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0QnVj
a2V0UHJpdmF0ZU5hbWUoKSwgc2V0QnVja2V0KTsKKyAgICBKU1NldEl0ZXJhdG9yKiBjbG9uZSA9
IEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5zZXRJdGVyYXRvclN0cnVj
dHVyZSgpLCBqc0Nhc3Q8SlNTZXQqPihpdGVyYXRvck9iamVjdC0+aXRlcmF0ZWRPYmplY3QoKSks
IGl0ZXJhdG9yT2JqZWN0LT5raW5kKCkpOworICAgIGNsb25lLT5pbnRlcm5hbEZpZWxkKEpTU2V0
SXRlcmF0b3I6OkZpZWxkOjpTZXRCdWNrZXQpLnNldCh2bSwgY2xvbmUsIGl0ZXJhdG9yT2JqZWN0
LT5pbnRlcm5hbEZpZWxkKEpTU2V0SXRlcmF0b3I6OkZpZWxkOjpTZXRCdWNrZXQpLmdldCgpKTsK
ICAgICByZXR1cm4gY2xvbmU7CiB9CiAKQEAgLTU5MywxNSArNTg5LDEyIEBAIEpTVmFsdWUgSlNJ
bmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsCiAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aXNBcnJheVBy
b3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpKQogICAgICAgICAg
ICAgICAgICAgICBpdGVyYXRvciA9IGNsb25lQXJyYXlJdGVyYXRvck9iamVjdChnbG9iYWxPYmpl
Y3QsIHZtLCBhcnJheUl0ZXJhdG9yKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0ZWRPYmplY3QgPSBpdGVyYXRvck9iamVjdC0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZE9iamVj
dFByaXZhdGVOYW1lKCkpOwotICAgICAgICAgICAgaWYgKEpTVmFsdWUgbWFwQnVja2V0ID0gaXRl
cmF0b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkubWFwQnVja2V0UHJpdmF0ZU5hbWUoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoanNDYXN0
PEpTTWFwKj4oaXRlcmF0ZWRPYmplY3QpLT5pc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2Jz
ZXJ2YWJsZSgpKQotICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IGNsb25lTWFwSXRlcmF0
b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCB2bSwgaXRlcmF0b3JPYmplY3QsIG1hcEJ1Y2tldCwgaXRl
cmF0ZWRPYmplY3QpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVlIHNldEJ1Y2tldCA9
IGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnNldEJ1Y2tldFByaXZhdGVOYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGpz
Q2FzdDxKU1NldCo+KGl0ZXJhdGVkT2JqZWN0KS0+aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5v
bk9ic2VydmFibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZVNldEl0
ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgdm0sIGl0ZXJhdG9yT2JqZWN0LCBzZXRCdWNrZXQs
IGl0ZXJhdGVkT2JqZWN0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChhdXRv
KiBtYXBJdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNNYXBJdGVyYXRvcio+KHZtLCBpdGVyYXRv
ck9iamVjdCkpIHsKKyAgICAgICAgICAgIGlmIChqc0Nhc3Q8SlNNYXAqPihtYXBJdGVyYXRvci0+
aXRlcmF0ZWRPYmplY3QoKSktPmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxl
KCkpCisgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZU1hcEl0ZXJhdG9yT2JqZWN0KGds
b2JhbE9iamVjdCwgdm0sIG1hcEl0ZXJhdG9yKTsKKyAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBz
ZXRJdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNTZXRJdGVyYXRvcio+KHZtLCBpdGVyYXRvck9i
amVjdCkpIHsKKyAgICAgICAgICAgIGlmIChqc0Nhc3Q8SlNTZXQqPihzZXRJdGVyYXRvci0+aXRl
cmF0ZWRPYmplY3QoKSktPmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCkp
CisgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZVNldEl0ZXJhdG9yT2JqZWN0KGdsb2Jh
bE9iamVjdCwgdm0sIHNldEl0ZXJhdG9yKTsKICAgICAgICAgfQogICAgIH0KICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZGYwMWYyYTExODc0MDQxMjYzMmJmMmFk
YWI4YWUwNGYyNmFjOTdkMC4uZTJkYzg4N2IzODQ0MzRlMDUxNjY2YTBiNDI2NTIwMDM4ZjRiNTlm
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCkBAIC05Nyw3ICs5Nyw2IEBACiAgICAgbWFjcm8oZGlzcGxheU5hbWUpIFwKICAgICBt
YWNybyhkb25lKSBcCiAgICAgbWFjcm8oZG90QWxsKSBcCi0gICAgbWFjcm8oZW50cmllcykgXAog
ICAgIG1hY3JvKGVudW1lcmFibGUpIFwKICAgICBtYWNybyhlcmEpIFwKICAgICBtYWNybyhldmFs
KSBcCkBAIC0xMzcsNyArMTM2LDYgQEAKICAgICBtYWNybyhpc1dhdGNocG9pbnQpIFwKICAgICBt
YWNybyhqZXR0aXNvblJlYXNvbikgXAogICAgIG1hY3JvKGpvaW4pIFwKLSAgICBtYWNybyhrZXlz
KSBcCiAgICAgbWFjcm8obGFzdEluZGV4KSBcCiAgICAgbWFjcm8obGVuZ3RoKSBcCiAgICAgbWFj
cm8obGluZSkgXApAQCAtMTk5LDcgKzE5Nyw2IEBACiAgICAgbWFjcm8odW5pY29kZSkgXAogICAg
IG1hY3JvKHVzYWdlKSBcCiAgICAgbWFjcm8odmFsdWUpIFwKLSAgICBtYWNybyh2YWx1ZXMpIFwK
ICAgICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFjcm8od2Vla2RheSkgXAogICAgIG1hY3JvKHdy
aXRhYmxlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApp
bmRleCAzNTM1OTA5MDQ5MWNlMGFmZGNkOGJiYjRmODc1YmIzODE4YzIyZDNlLi4yZTFiNWYyOTZl
MzMyMDNlOTg0ZmU5NjdhNzgxMTE4YjBkNjk2MWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTIwNyw2ICsyMDcsMTIgQEAgY29uc3QgY2hhciog
aW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIkpTTWFw
SGFzSW50cmluc2ljIjsKICAgICBjYXNlIEpTTWFwU2V0SW50cmluc2ljOgogICAgICAgICByZXR1
cm4gIkpTTWFwU2V0SW50cmluc2ljIjsKKyAgICBjYXNlIEpTTWFwVmFsdWVzSW50cmluc2ljOgor
ICAgICAgICByZXR1cm4gIkpTTWFwVmFsdWVzSW50cmluc2ljIjsKKyAgICBjYXNlIEpTTWFwS2V5
c0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJKU01hcEtleXNJbnRyaW5zaWMiOworICAgIGNh
c2UgSlNNYXBFbnRyaWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gIkpTTWFwRW50cmllc0lu
dHJpbnNpYyI7CiAgICAgY2FzZSBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWM6CiAgICAgICAgIHJl
dHVybiAiSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljIjsKICAgICBjYXNlIEpTTWFwQnVja2V0TmV4
dEludHJpbnNpYzoKQEAgLTIxOSw2ICsyMjUsMTAgQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFt
ZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIkpTU2V0SGFzSW50cmluc2lj
IjsKICAgICBjYXNlIEpTU2V0QWRkSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIkpTU2V0QWRk
SW50cmluc2ljIjsKKyAgICBjYXNlIEpTU2V0VmFsdWVzSW50cmluc2ljOgorICAgICAgICByZXR1
cm4gIkpTU2V0VmFsdWVzSW50cmluc2ljIjsKKyAgICBjYXNlIEpTU2V0RW50cmllc0ludHJpbnNp
YzoKKyAgICAgICAgcmV0dXJuICJKU1NldEVudHJpZXNJbnRyaW5zaWMiOwogICAgIGNhc2UgSlNT
ZXRCdWNrZXRIZWFkSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIkpTU2V0QnVja2V0SGVhZElu
dHJpbnNpYyI7CiAgICAgY2FzZSBKU1NldEJ1Y2tldE5leHRJbnRyaW5zaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDZiZmZmOTAwNjNjZTJkN2Q4YWMy
MDU0MmU4YThkN2UxOGM0MmJhZTkuLjMzZWNhYmM4MWZjODE4NDBiNGRmN2E2OTY2MmRiMTNmNTY2
MmNiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC0x
MTgsMTIgKzExOCwxNyBAQCBlbnVtIEludHJpbnNpYyA6IHVpbnQ4X3QgewogICAgIEpTTWFwR2V0
SW50cmluc2ljLAogICAgIEpTTWFwSGFzSW50cmluc2ljLAogICAgIEpTTWFwU2V0SW50cmluc2lj
LAorICAgIEpTTWFwVmFsdWVzSW50cmluc2ljLAorICAgIEpTTWFwS2V5c0ludHJpbnNpYywKKyAg
ICBKU01hcEVudHJpZXNJbnRyaW5zaWMsCiAgICAgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljLAog
ICAgIEpTTWFwQnVja2V0TmV4dEludHJpbnNpYywKICAgICBKU01hcEJ1Y2tldEtleUludHJpbnNp
YywKICAgICBKU01hcEJ1Y2tldFZhbHVlSW50cmluc2ljLAogICAgIEpTU2V0SGFzSW50cmluc2lj
LAogICAgIEpTU2V0QWRkSW50cmluc2ljLAorICAgIEpTU2V0VmFsdWVzSW50cmluc2ljLAorICAg
IEpTU2V0RW50cmllc0ludHJpbnNpYywKICAgICBKU1NldEJ1Y2tldEhlYWRJbnRyaW5zaWMsCiAg
ICAgSlNTZXRCdWNrZXROZXh0SW50cmluc2ljLAogICAgIEpTU2V0QnVja2V0S2V5SW50cmluc2lj
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApp
bmRleCA1OTllNzc0YjAzZGQzZTViYTZkNGQ3ZmEzNGJiOThhOTY4N2VjNjA5Li5hZmQ5ZWIyZTVk
NjZiODUzYTBjNzcwNDJhY2FlNDk5ZDA2NzNmMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBK
U0FycmF5SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwz
PiB7CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxk
IGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVp
bnQzMl90PihmaWVsZCkpOyB9CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZp
ZWxkKEZpZWxkIGZpZWxkKSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0
PHVpbnQzMl90PihmaWVsZCkpOyB9CiAKLSAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxJdGVyYXRpb25LaW5kPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpL
aW5kKS5nZXQoKS5hc1VJbnQzMigpKTsgfQorICAgIEl0ZXJhdGlvbktpbmQga2luZCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZXJhdGlvbktpbmQ+KGludGVybmFsRmllbGQoRmllbGQ6
OktpbmQpLmdldCgpLmFzVUludDMyQXNBbnlJbnQoKSk7IH0KICAgICBKU09iamVjdCogaXRlcmF0
ZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihpbnRlcm5hbEZpZWxk
KEZpZWxkOjpJdGVyYXRlZE9iamVjdCkuZ2V0KCkpOyB9CiAKICAgICBzdGF0aWMgSlNBcnJheUl0
ZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogaXRlcmF0ZWRPYmplY3Qs
IEpTVmFsdWUga2luZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggNmNlMTg0YWUxNTllNDgyZjExZTAzMGY2ZDM5ZWM4NTYwMmJl
OTYwZS4uNmExMzBkOWY5MThlMjQ4N2FiMDFjNTYyMDVkMWNhYTY2ZWFlNWI3OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTA2
LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRl
ICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJKU01pY3JvdGFzay5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1l
bnQuaCIKICNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgpAQCAtMTE3LDYgKzExOCw3IEBACiAj
aW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1Byb21pc2VQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5Q29u
c3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIgpAQCAtNTY0
LDcgKzU2Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICB9
KTsKICAgICBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewotICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIGluaXQudm0u
cHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCBhcnJheVByb3RvRnVuY1ZhbHVlcywgQXJy
YXlWYWx1ZXNJbnRyaW5zaWMpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1
ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7CiAgICAgICAgIH0pOwogCiAgICAgbV9pdGVyYXRv
clByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKApAQCAtNzY1LDYgKzc2NywxNCBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlKTsKICAgICBtX2FycmF5SXRlcmF0
b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgYXJyYXlJdGVyYXRvclByb3RvdHlwZSkpOwogCisgICAgYXV0byogbWFwSXRl
cmF0b3JQcm90b3R5cGUgPSBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBN
YXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9y
UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRo
aXMsIG1hcEl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBtX21hcEl0ZXJhdG9yU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtYXBJ
dGVyYXRvclByb3RvdHlwZSkpOworCisgICAgYXV0byogc2V0SXRlcmF0b3JQcm90b3R5cGUgPSBT
ZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBTZXRJdGVyYXRvclByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7
CisgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIHNldEl0ZXJhdG9yUHJv
dG90eXBlKTsKKyAgICBtX3NldEl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNTZXRJ
dGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBzZXRJdGVyYXRvclByb3RvdHlwZSkp
OworCiAgICAgSlNGdW5jdGlvbiogZGVmYXVsdFByb21pc2VUaGVuID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBwcm9taXNlUHJvdG90eXBlVGhlbkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKTsKICAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpkZWZhdWx0UHJvbWlzZVRoZW4pXS5zZXQodm0sIHRoaXMsIGRlZmF1bHRQcm9taXNlVGhl
bik7CiAKQEAgLTEwMDYsMTUgKzEwMTYsOSBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rvciog
bG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAg
IEpTT2JqZWN0KiBhc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBBc3luY0Zyb21TeW5j
SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgQXN5bmNGcm9tU3luY0l0ZXJhdG9y
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUu
Z2V0KCkpKTsKICAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6OkFzeW5jRnJvbVN5bmNJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlKTsKIAot
ICAgIEpTT2JqZWN0KiBtYXBJdGVyYXRvclByb3RvdHlwZSA9IE1hcEl0ZXJhdG9yUHJvdG90eXBl
OjpjcmVhdGUodm0sIHRoaXMsIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBqc0Nhc3Q8SlNPYmpl
Y3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Ok1hcEl0ZXJhdG9yKSktPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtYXBJdGVyYXRvclByb3Rv
dHlwZSk7Ci0KICAgICBKU09iamVjdCogcmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUgPSBS
ZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9y
UHJvdG90eXBlLmdldCgpKSk7CiAgICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFu
dChMaW5rVGltZUNvbnN0YW50OjpSZWdFeHBTdHJpbmdJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGUpOwogCi0gICAgSlNPYmplY3QqIHNldEl0ZXJhdG9yUHJvdG90eXBlID0gU2V0SXRlcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIGpzQ2Fz
dDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6U2V0SXRlcmF0
b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNldEl0ZXJh
dG9yUHJvdG90eXBlKTsKLQogICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMuCiAgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U2V0
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAg
ICAgICAgICBpbml0LnNldChqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKS0+c2V0
Q29uc3RydWN0b3IoKSk7CkBAIC0xNzc1LDYgKzE3NzksOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JQcm90b3R5cGUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXJyYXlJdGVyYXRvclByb3RvdHlwZSk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tYXBJdGVyYXRvclByb3RvdHlwZSk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zZXRJdGVyYXRvclByb3RvdHlwZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0Z1bmN0aW9uUHJvdG90eXBl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2VuZXJhdG9yUHJvdG90
eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jSXRlcmF0b3JQcm90
b3R5cGUpOwpAQCAtMTgyNiw2ICsxODMyLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmUpOworICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUpOworICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUpOwogICAgIHRoaXNP
YmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggMWU3NmMwYjM0NmU2N2RkYTM1YzRlOTU1YjUxMmY2ZjU5MzE0NDIwNC4uYmFkNjQ2MzVi
ZmNmNDk1YjU5Mjg5NGU0NzM4MWVjMzViNzEzYmNjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMDAsNiArMTAwLDcgQEAgY2xhc3Mg
SlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOwogY2xhc3MgSlNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZTsKIGNsYXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworY2xhc3MgTWFwSXRlcmF0b3JQcm90b3R5cGU7CiBjbGFzcyBNYXBQcm90b3R5cGU7
CiBjbGFzcyBNaWNyb3Rhc2s7CiBjbGFzcyBNb2R1bGVMb2FkZXI7CkBAIC0xMTIsNiArMTEzLDcg
QEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xh
c3MgUmVnRXhwQ29uc3RydWN0b3I7CiBjbGFzcyBSZWdFeHBQcm90b3R5cGU7CitjbGFzcyBTZXRJ
dGVyYXRvclByb3RvdHlwZTsKIGNsYXNzIFNldFByb3RvdHlwZTsKIGNsYXNzIFNvdXJjZUNvZGU7
CiBjbGFzcyBTb3VyY2VPcmlnaW47CkBAIC0zMjMsNiArMzI1LDggQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJy
aWVyPEdlbmVyYXRvclByb3RvdHlwZT4gbV9nZW5lcmF0b3JQcm90b3R5cGU7CiAgICAgV3JpdGVC
YXJyaWVyPEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlPiBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBl
OwogICAgIFdyaXRlQmFycmllcjxBcnJheUl0ZXJhdG9yUHJvdG90eXBlPiBtX2FycmF5SXRlcmF0
b3JQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPE1hcEl0ZXJhdG9yUHJvdG90eXBlPiBtX21h
cEl0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxTZXRJdGVyYXRvclByb3RvdHlw
ZT4gbV9zZXRJdGVyYXRvclByb3RvdHlwZTsKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgU3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAt
Mzc4LDYgKzM4Miw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9y
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXN5bmNHZW5lcmF0b3JT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJheUl0ZXJhdG9yU3Ry
dWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbWFwSXRlcmF0b3JTdHJ1Y3R1
cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZTsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pdGVyYXRvclJl
c3VsdE9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7CkBAIC02NDksNiArNjU1LDggQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KICAgICBBcnJheUl0ZXJhdG9yUHJvdG90eXBlKiBhcnJh
eUl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheUl0ZXJhdG9yUHJvdG90
eXBlLmdldCgpOyB9CisgICAgTWFwSXRlcmF0b3JQcm90b3R5cGUqIG1hcEl0ZXJhdG9yUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBJdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQorICAg
IFNldEl0ZXJhdG9yUHJvdG90eXBlKiBzZXRJdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2V0SXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBKU09iamVjdCogbWFwUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9
CiAgICAgLy8gV29ya2Fyb3VuZCBmb3IgdGhlIG5hbWUgY29uZmxpY3QgYmV0d2VlbiBKU0NlbGw6
OnNldFByb3RvdHlwZS4KICAgICBKU09iamVjdCoganNTZXRQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3NldFN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KQEAgLTc1Nyw2ICs3NjUsOCBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5j
R2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJh
dG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFycmF5SXRlcmF0
b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0
KCk7IH0gICAgCisgICAgU3RydWN0dXJlKiBtYXBJdGVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIHNl
dEl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRJdGVyYXRvclN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IGl0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRv
clJlc3VsdE9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTWFwSXRlcmF0b3IuY3BwCmluZGV4IGY4MGIzNDAxMGQzNWIyNmZkMzk2ZmU4ZGQ1OWQwZDQ3
NDRlN2IzYmEuLjU2NDhmODdkMzUxOGUwMzRiYWUxNTQ2YWI1ZDQ1YzgyNjk2NjYyNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCkBAIC0y
NywyNiArMjcsNDEgQEAKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMu
aCIKICNpbmNsdWRlICJKU01hcC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJ
bmZvIEpTTWFwSXRlcmF0b3I6OnNfaW5mbyA9IHsgIk1hcCBJdGVyYXRvciIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNYXBJdGVyYXRvcikgfTsKK2Nv
bnN0IENsYXNzSW5mbyBKU01hcEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJNYXAgSXRlcmF0b3IiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTWFw
SXRlcmF0b3IpIH07CiAKLXZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU01hcCogaXRlcmF0ZWRPYmplY3QpCitKU01hcEl0ZXJhdG9yKiBKU01hcEl0ZXJhdG9yOjpj
cmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorewor
ICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNNYXBJdGVyYXRvcj4odm0uaGVhcCkpIEpTTWFwSXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7Cisg
ICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9
CisKK3ZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU01hcCogaXRl
cmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6TWFwQnVja2V0KS5zZXQodm0sIHRo
aXMsIGl0ZXJhdGVkT2JqZWN0LT5oZWFkKCkpOworICAgIGludGVybmFsRmllbGQoRmllbGQ6Okl0
ZXJhdGVkT2JqZWN0KS5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsKKyAgICBpbnRlcm5h
bEZpZWxkKEZpZWxkOjpLaW5kKS5zZXQodm0sIHRoaXMsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KGtpbmQpKSk7Cit9CisKK3ZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBtX21hcC5zZXQo
dm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBzZXRJdGVyYXRvcih2bSwgbV9tYXAtPmhl
YWQoKSk7CisgICAgYXV0byB2YWx1ZXMgPSBpbml0aWFsVmFsdWVzKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAg
QmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0KHZtLCB0aGlzLCB2YWx1ZXNbaW5kZXhdKTsK
IH0KIAogdm9pZCBKU01hcEl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNNYXBJdGVyYXRvciogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tYXApOwotICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faXRlcik7CiB9CiAKIEpTVmFsdWUgSlNNYXBJdGVy
YXRvcjo6Y3JlYXRlUGFpcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtl
eSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTWFwSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFw
SXRlcmF0b3IuaAppbmRleCA2ZTFmYTBjZmM2ODVlNGJhMzVjZWEzOWZmN2UyZWU3ZmFhNmQ5Yjk4
Li42MTVjNDBhMzUxMmJlZjAyNDZlOTYwMjIxYWNlYTRjZDVhMDdkZjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5oCkBAIC0yNiwyMSArMjYsMzcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSXRlcmF0aW9uS2luZC5oIgorI2luY2x1ZGUg
IkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKICNpbmNsdWRlICJKU01hcC5oIgotI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0vLyBOb3csIGl0IGlzIG9ubHkg
dXNlZCBmb3Igc2VyaWFsaXphdGlvbi4KLS8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIEpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGwgdG8gaW1wbGVtZW50IHJlYWwgSlNNYXBJdGVyYXRvciB1c2VkIGlu
IEpTQy4KLS8vIEN1cnJlbnRseSwgSlNDIGlzIHVzaW5nIGZpbmFsIG9iamVjdHMgdG8gaW1wbGVt
ZW50IE1hcEl0ZXJhdG9yLgotY2xhc3MgSlNNYXBJdGVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewotICAgIHR5cGVkZWYgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVl
PiBIYXNoTWFwQnVja2V0VHlwZTsKK2NsYXNzIEpTTWFwSXRlcmF0b3IgZmluYWwgOiBwdWJsaWMg
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwzPiB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9
IEpTQ2VsbDsKKyAgICB1c2luZyBIYXNoTWFwQnVja2V0VHlwZSA9IEhhc2hNYXBCdWNrZXQ8SGFz
aE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT47CisgICAgdXNpbmcgQmFzZSA9IEpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGw8Mz47CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCisgICAgZW51bSBj
bGFzcyBGaWVsZCA6IHVpbnQ4X3QgeworICAgICAgICBNYXBCdWNrZXQgPSAwLAorICAgICAgICBJ
dGVyYXRlZE9iamVjdCwKKyAgICAgICAgS2luZCwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQo
bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSAzKTsKKworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpT
VmFsdWUsIG51bWJlck9mSW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHsgeworICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgICAgICBqc051
bGwoKSwKKyAgICAgICAgICAgIGpzTnVtYmVyKDApLAorICAgICAgICB9IH07CisgICAgfQorCisg
ICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxk
KSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90
PihmaWVsZCkpOyB9CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZp
ZWxkIGZpZWxkKSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihmaWVsZCkpOyB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CkBAIC00OSw1MCArNjUsNTggQEAgY2xhc3MgSlNNYXBJdGVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhKU01hcEl0ZXJhdG9yVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU01hcEl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNNYXAqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5k
IGtpbmQpCiAgICAgewotICAgICAgICBKU01hcEl0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTTWFwSXRlcmF0b3I+KHZtLmhlYXApKSBKU01hcEl0ZXJhdG9y
KHZtLCBzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKLSAgICAgICAgaW5zdGFuY2Ut
PmZpbmlzaENyZWF0aW9uKHZtLCBpdGVyYXRlZE9iamVjdCk7CisgICAgICAgIEpTTWFwSXRlcmF0
b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNYXBJdGVyYXRvcj4o
dm0uaGVhcCkpIEpTTWFwSXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGluc3RhbmNl
LT5maW5pc2hDcmVhdGlvbih2bSwgaXRlcmF0ZWRPYmplY3QsIGtpbmQpOwogICAgICAgICByZXR1
cm4gaW5zdGFuY2U7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBIYXNoTWFwQnVja2V0VHlw
ZSogYWR2YW5jZUl0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMg
SlNNYXBJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsK
KworICAgIEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1Y2tldFR5cGUqIGFkdmFuY2VJdGVyKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBwcmV2ID0gbV9pdGVyLmdldCgp
OwotICAgICAgICBpZiAoIXByZXYpCisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBwcmV2ID0g
aXRlcmF0b3IoKTsKKyAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIHNlbnRpbmVsID0ganNDYXN0
PEhhc2hNYXBCdWNrZXRUeXBlKj4odm0uc2VudGluZWxNYXBCdWNrZXQoKSk7CisgICAgICAgIGlm
IChwcmV2ID09IHNlbnRpbmVsKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBl
KiBidWNrZXQgPSBtX2l0ZXItPm5leHQoKTsKKyAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1
Y2tldCA9IHByZXYtPm5leHQoKTsKICAgICAgICAgd2hpbGUgKGJ1Y2tldCAmJiBidWNrZXQtPmRl
bGV0ZWQoKSkKICAgICAgICAgICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgpOwogICAgICAgICBp
ZiAoIWJ1Y2tldCkgewotICAgICAgICAgICAgc2V0SXRlcmF0b3Iodm0sIG51bGxwdHIpOworICAg
ICAgICAgICAgc2V0SXRlcmF0b3Iodm0sIHNlbnRpbmVsKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIHNldEl0ZXJhdG9yKHZtLCBidWNrZXQpOyAvLyBX
ZSBrZWVwIG1faXRlciBvbiB0aGUgbGFzdCB2YWx1ZSBzaW5jZSB0aGUgZmlyc3QgdGhpbmcgd2Ug
ZG8gaW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsIG5leHQoKS4KKyAgICAgICAgc2V0SXRlcmF0b3Io
dm0sIGJ1Y2tldCk7IC8vIFdlIGtlZXAgaXRlcmF0b3Igb24gdGhlIGxhc3QgdmFsdWUgc2luY2Ug
dGhlIGZpcnN0IHRoaW5nIHdlIGRvIGluIHRoaXMgZnVuY3Rpb24gaXMgY2FsbCBuZXh0KCkuCiAg
ICAgICAgIHJldHVybiBidWNrZXQ7CiAgICAgfQorCiAgICAgYm9vbCBuZXh0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgSGFzaE1h
cEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IGFkdmFuY2VJdGVyKGdsb2JhbE9iamVjdCk7CisgICAgICAg
IEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBhZHZhbmNlSXRlcihnZXRWTShnbG9iYWxPYmpl
Y3QpKTsKICAgICAgICAgaWYgKCFidWNrZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgaWYgKG1fa2luZCA9PSBJdGVyYXRpb25LaW5kOjpWYWx1ZXMpCisgICAgICAgIHN3
aXRjaCAoa2luZCgpKSB7CisgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6VmFsdWVzOgogICAg
ICAgICAgICAgdmFsdWUgPSBidWNrZXQtPnZhbHVlKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1fa2lu
ZCA9PSBJdGVyYXRpb25LaW5kOjpLZXlzKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgSXRlcmF0aW9uS2luZDo6S2V5czoKICAgICAgICAgICAgIHZhbHVlID0gYnVja2V0LT5rZXko
KTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSXRlcmF0
aW9uS2luZDo6RW50cmllczoKICAgICAgICAgICAgIHZhbHVlID0gY3JlYXRlUGFpcihnbG9iYWxP
YmplY3QsIGJ1Y2tldC0+a2V5KCksIGJ1Y2tldC0+dmFsdWUoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBib29sIG5l
eHRLZXlWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlJiBrZXksIEpT
VmFsdWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9
IGFkdmFuY2VJdGVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBi
dWNrZXQgPSBhZHZhbmNlSXRlcihnZXRWTShnbG9iYWxPYmplY3QpKTsKICAgICAgICAgaWYgKCFi
dWNrZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwMSwyNyArMTI1LDI0IEBA
IGNsYXNzIEpTTWFwSXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uS2luZCBraW5kKCkgY29uc3QgeyByZXR1
cm4gbV9raW5kOyB9Ci0gICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9tYXAuZ2V0KCk7IH0KKyAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxJdGVyYXRpb25LaW5kPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpLaW5kKS5nZXQo
KS5hc1VJbnQzMkFzQW55SW50KCkpOyB9CisgICAgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6SXRl
cmF0ZWRPYmplY3QpLmdldCgpKTsgfQorICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBpdGVyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxIYXNoTWFwQnVja2V0VHlwZSo+KGludGVybmFsRmllbGQo
RmllbGQ6Ok1hcEJ1Y2tldCkuZ2V0KCkpOyB9CiAKIHByaXZhdGU6Ci0gICAgSlNNYXBJdGVyYXRv
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU01hcCosIEl0ZXJhdGlvbktpbmQga2lu
ZCkKKyAgICBKU01hcEl0ZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAgICAgICAsIG1fa2luZChraW5kKQogICAgIHsg
fQogCiAgICAgdm9pZCBzZXRJdGVyYXRvcihWTSYgdm0sIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNr
ZXQpCiAgICAgewotICAgICAgICBtX2l0ZXIuc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBidWNrZXQp
OworICAgICAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpNYXBCdWNrZXQpLnNldCh2bSwgdGhpcywg
YnVja2V0KTsKICAgICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNNYXAqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNNYXAqLCBJdGVyYXRpb25LaW5kKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CiAgICAgSlNWYWx1ZSBjcmVhdGVQYWlyKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwg
SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwotCi0gICAgV3JpdGVCYXJyaWVyPEpTTWFwPiBtX21hcDsKLSAgICBXcml0ZUJhcnJp
ZXI8SGFzaE1hcEJ1Y2tldFR5cGU+IG1faXRlcjsKLSAgICBJdGVyYXRpb25LaW5kIG1fa2luZDsK
IH07CiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNNYXBJdGVyYXRv
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRl
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5j
cHAKaW5kZXggNTA5N2IyMDA1ZmE1OGQ1ZmNhZjhmZjI0MDlhZmFmY2JjNTljYjViZC4uZjk3MDVk
M2MwYmQ2N2E4YjQ3MDZjN2Y5NzE1MWUzYWIzZmU1OTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKQEAgLTI3LDI2ICsyNyw0MSBAQAog
I2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKIAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNp
bmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
U2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gSlNTZXRJdGVyYXRv
cjo6c19pbmZvID0geyAiU2V0IEl0ZXJhdG9yIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1NldEl0ZXJhdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpT
U2V0SXRlcmF0b3I6OnNfaW5mbyA9IHsgIlNldCBJdGVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNTZXRJdGVyYXRvcikgfTsKIAot
dm9pZCBKU1NldEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTU2V0KiBpdGVyYXRl
ZE9iamVjdCkKK0pTU2V0SXRlcmF0b3IqIEpTU2V0SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFs
VmFsdWVzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNTZXRJdGVyYXRv
ciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NldEl0ZXJhdG9yPih2
bS5oZWFwKSkgSlNTZXRJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsKKyAgICBpdGVyYXRvci0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBpdGVyYXRvcjsKK30KKwordm9pZCBKU1NldEl0
ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTU2V0KiBpdGVyYXRlZE9iamVjdCwgSXRl
cmF0aW9uS2luZCBraW5kKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBp
bnRlcm5hbEZpZWxkKEZpZWxkOjpTZXRCdWNrZXQpLnNldCh2bSwgdGhpcywgaXRlcmF0ZWRPYmpl
Y3QtPmhlYWQoKSk7CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6SXRlcmF0ZWRPYmplY3QpLnNl
dCh2bSwgdGhpcywgaXRlcmF0ZWRPYmplY3QpOworICAgIGludGVybmFsRmllbGQoRmllbGQ6Oktp
bmQpLnNldCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oa2luZCkpKTsK
K30KKwordm9pZCBKU1NldEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIG1fc2V0LnNldCh2bSwgdGhpcywgaXRlcmF0
ZWRPYmplY3QpOwotICAgIHNldEl0ZXJhdG9yKHZtLCBtX3NldC0+aGVhZCgpKTsKKyAgICBhdXRv
IHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjppbnRlcm5hbEZp
ZWxkKGluZGV4KS5zZXQodm0sIHRoaXMsIHZhbHVlc1tpbmRleF0pOwogfQogCiB2b2lkIEpTU2V0
SXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBKU1NldEl0ZXJhdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU2V0SXRlcmF0
b3IqPihjZWxsKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU2V0SXRlcmF0b3Iq
PihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NldCk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9pdGVyKTsKIH0KIAogSlNWYWx1ZSBKU1NldEl0ZXJhdG9yOjpjcmVhdGVQYWly
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5oCmluZGV4
IDJiMTUyNWVlMmI0ZTQzNWY5YzVlZDFkZGZiNzU0MWQ3ZTI5OWI0MmIuLmVlMzhkNmEwYzRlNjFk
MWQ3ZmY4NWIxYTNhNTBhYWM5NjI5MTIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1NldEl0ZXJhdG9yLmgKQEAgLTI2LDIxICsyNiwzNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJJdGVyYXRpb25LaW5kLmgiCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLS8vIE5vdywgaXQgaXMgb25seSB1c2VkIGZvciBzZXJpYWxp
emF0aW9uLgotLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bCB0byBpbXBsZW1lbnQgcmVhbCBKU1NldEl0ZXJhdG9yIHVzZWQgaW4gSlNDLgotLy8gQ3VycmVu
dGx5LCBKU0MgaXMgdXNpbmcgZmluYWwgb2JqZWN0cyB0byBpbXBsZW1lbnQgU2V0SXRlcmF0b3Iu
Ci1jbGFzcyBKU1NldEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7Ci0gICAgdHlwZWRl
ZiBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5PiBIYXNoTWFwQnVja2V0VHlwZTsK
K2NsYXNzIEpTU2V0SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbDwzPiB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsKKyAgICB1c2luZyBI
YXNoTWFwQnVja2V0VHlwZSA9IEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Owor
ICAgIHVzaW5nIEJhc2UgPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDM+OwogCiAgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKIAorICAgIGVudW0gY2xhc3MgRmllbGQgOiB1aW50OF90IHsKKyAg
ICAgICAgU2V0QnVja2V0ID0gMCwKKyAgICAgICAgSXRlcmF0ZWRPYmplY3QsCisgICAgICAgIEtp
bmQsCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPT0g
Myk7CisKKyAgICBzdGF0aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1iZXJPZkludGVybmFsRmll
bGRzPiBpbml0aWFsVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHsKKyAgICAgICAg
ICAgIGpzTnVsbCgpLAorICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgICAgICBqc051bWJl
cigwKSwKKyAgICAgICAgfSB9OworICAgIH0KKworICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtu
b3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgY29uc3QgeyByZXR1cm4gQmFzZTo6aW50
ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQorICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgeyByZXR1cm4gQmFzZTo6
aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQorCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewpAQCAtNDksNjggKzY1LDcy
IEBAIGNsYXNzIEpTU2V0SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2Vs
bFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNTZXRJdGVy
YXRvclR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNTZXRJdGVyYXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2V0
KiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgSlNT
ZXRJdGVyYXRvciogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NldEl0
ZXJhdG9yPih2bS5oZWFwKSkgSlNTZXRJdGVyYXRvcih2bSwgc3RydWN0dXJlLCBpdGVyYXRlZE9i
amVjdCwga2luZCk7Ci0gICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgaXRlcmF0
ZWRPYmplY3QpOworICAgICAgICBKU1NldEl0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTU2V0SXRlcmF0b3I+KHZtLmhlYXApKSBKU1NldEl0ZXJhdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGl0ZXJh
dGVkT2JqZWN0LCBraW5kKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAg
IEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1Y2tldFR5cGUqIGFkdmFuY2VJdGVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpTU2V0SXRlcmF0b3IqIGNyZWF0ZVdpdGhJ
bml0aWFsVmFsdWVzKFZNJiwgU3RydWN0dXJlKik7CisKKyAgICBBTFdBWVNfSU5MSU5FIEhhc2hN
YXBCdWNrZXRUeXBlKiBhZHZhbmNlSXRlcihWTSYgdm0pCiAgICAgewotICAgICAgICBIYXNoTWFw
QnVja2V0VHlwZSogcHJldiA9IG1faXRlci5nZXQoKTsKLSAgICAgICAgaWYgKCFwcmV2KQorICAg
ICAgICBIYXNoTWFwQnVja2V0VHlwZSogcHJldiA9IGl0ZXJhdG9yKCk7CisgICAgICAgIEhhc2hN
YXBCdWNrZXRUeXBlKiBzZW50aW5lbCA9IGpzQ2FzdDxIYXNoTWFwQnVja2V0VHlwZSo+KHZtLnNl
bnRpbmVsU2V0QnVja2V0KCkpOworICAgICAgICBpZiAocHJldiA9PSBzZW50aW5lbCkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmpl
Y3QpOwotICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0ID0gbV9pdGVyLT5uZXh0KCk7
CisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBwcmV2LT5uZXh0KCk7CiAgICAg
ICAgIHdoaWxlIChidWNrZXQgJiYgYnVja2V0LT5kZWxldGVkKCkpCiAgICAgICAgICAgICBidWNr
ZXQgPSBidWNrZXQtPm5leHQoKTsKICAgICAgICAgaWYgKCFidWNrZXQpIHsKLSAgICAgICAgICAg
IHNldEl0ZXJhdG9yKHZtLCBudWxscHRyKTsKKyAgICAgICAgICAgIHNldEl0ZXJhdG9yKHZtLCBz
ZW50aW5lbCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAg
ICBzZXRJdGVyYXRvcih2bSwgYnVja2V0KTsgLy8gV2Uga2VlcCBtX2l0ZXIgb24gdGhlIGxhc3Qg
dmFsdWUgc2luY2UgdGhlIGZpcnN0IHRoaW5nIHdlIGRvIGluIHRoaXMgZnVuY3Rpb24gaXMgY2Fs
bCBuZXh0KCkuCisgICAgICAgIHNldEl0ZXJhdG9yKHZtLCBidWNrZXQpOyAvLyBXZSBrZWVwIGl0
ZXJhdG9yIG9uIHRoZSBsYXN0IHZhbHVlIHNpbmNlIHRoZSBmaXJzdCB0aGluZyB3ZSBkbyBpbiB0
aGlzIGZ1bmN0aW9uIGlzIGNhbGwgbmV4dCgpLgogICAgICAgICByZXR1cm4gYnVja2V0OwogICAg
IH0KIAogICAgIGJvb2wgbmV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
JiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBhZHZh
bmNlSXRlcihnbG9iYWxPYmplY3QpOworICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0
ID0gYWR2YW5jZUl0ZXIoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGlmICghYnVja2V0
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChtX2tpbmQgPT0gSXRl
cmF0aW9uS2luZDo6VmFsdWVzIHx8IG1fa2luZCA9PSBJdGVyYXRpb25LaW5kOjpLZXlzKQorICAg
ICAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIEl0ZXJhdGlvbktpbmQ6OlZhbHVl
czoKKyAgICAgICAgY2FzZSBJdGVyYXRpb25LaW5kOjpLZXlzOgogICAgICAgICAgICAgdmFsdWUg
PSBidWNrZXQtPmtleSgpOwotICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOgogICAgICAgICAgICAgdmFsdWUgPSBjcmVh
dGVQYWlyKGdsb2JhbE9iamVjdCwgYnVja2V0LT5rZXkoKSwgYnVja2V0LT5rZXkoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBK
U1ZhbHVlIGl0ZXJhdGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAg
IEl0ZXJhdGlvbktpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZXJhdGlv
bktpbmQ+KGludGVybmFsRmllbGQoRmllbGQ6OktpbmQpLmdldCgpLmFzVUludDMyQXNBbnlJbnQo
KSk7IH0KKyAgICBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc0Nh
c3Q8SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpJdGVyYXRlZE9iamVjdCkuZ2V0KCkp
OyB9CisgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGl0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4ganND
YXN0PEhhc2hNYXBCdWNrZXRUeXBlKj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6U2V0QnVja2V0KS5n
ZXQoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBKU1NldEl0ZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTU2V0KiwgSXRlcmF0aW9uS2luZCBraW5kKQorICAgIEpTU2V0SXRlcmF0
b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCi0gICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgewogICAgIH0KIAogICAgIHZvaWQg
c2V0SXRlcmF0b3IoVk0mIHZtLCBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0KQogICAgIHsKLSAg
ICAgICAgbV9pdGVyLnNldE1heUJlTnVsbCh2bSwgdGhpcywgYnVja2V0KTsgCisgICAgICAgIGlu
dGVybmFsRmllbGQoRmllbGQ6OlNldEJ1Y2tldCkuc2V0KHZtLCB0aGlzLCBidWNrZXQpOwogICAg
IH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1Nl
dCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1Nl
dCosIEl0ZXJhdGlvbktpbmQpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNyZWF0ZVBhaXIoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7Ci0KLSAgICBXcml0ZUJhcnJpZXI8SlNTZXQ+IG1fc2V0OwotICAgIFdyaXRl
QmFycmllcjxIYXNoTWFwQnVja2V0VHlwZT4gbV9pdGVyOwotICAgIEl0ZXJhdGlvbktpbmQgbV9r
aW5kOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU1NldEl0
ZXJhdG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXgg
YjAyYjM0N2Q2YTUwMDQ1NTNiNTkyZWM2NGI0YzE0NGUzMDhkZDBjZi4uNmIzZGM5NjdjNDI5Zjli
MzczMjgwM2ZmMjUwMzY1YzZhODI5MDQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuY3BwCkBAIC0xMDAsNiArMTAwLDggQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShKU0dlbmVyYXRvclR5cGUp
CiAgICAgQ0FTRShKU0FzeW5jR2VuZXJhdG9yVHlwZSkKICAgICBDQVNFKEpTQXJyYXlJdGVyYXRv
clR5cGUpCisgICAgQ0FTRShKU01hcEl0ZXJhdG9yVHlwZSkKKyAgICBDQVNFKEpTU2V0SXRlcmF0
b3JUeXBlKQogICAgIENBU0UoSlNTdHJpbmdJdGVyYXRvclR5cGUpCiAgICAgQ0FTRShKU1Byb21p
c2VUeXBlKQogICAgIENBU0UoSlNNYXBUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaAppbmRleCA0ODM2ZjkxYjBiYjRiMzY0ZWY3ZTE0ZTNjM2U5YjEyYTNmNjEwMWYwLi5i
N2FhYzI1NjJjZWFkZDcyNjY3YjVhYWE4OGEyMjMyZWRjMTQ2ZmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtMTEyLDYgKzExMiw4IEBAIGVudW0gSlNUeXBlIDog
dWludDhfdCB7CiAgICAgSlNHZW5lcmF0b3JUeXBlLAogICAgIEpTQXN5bmNHZW5lcmF0b3JUeXBl
LAogICAgIEpTQXJyYXlJdGVyYXRvclR5cGUsCisgICAgSlNNYXBJdGVyYXRvclR5cGUsCisgICAg
SlNTZXRJdGVyYXRvclR5cGUsCiAgICAgSlNTdHJpbmdJdGVyYXRvclR5cGUsCiAgICAgSlNQcm9t
aXNlVHlwZSwKICAgICBKU01hcFR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDI5YTEx
NjcwYjI1YzFiMGUzYTNjNmZkNzg5YzBiNmMxNzgwZDA2ZjguLmYyYmZiNzM0ZDYwYmJmZjhmOTg4
ZWE2ZmUxOTU5ZDg4YTAzNDJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCkBAIC0zMzUsNyAr
MzM1LDcgQEAgdm9pZCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBKU0NfQlVJTFRJTl9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04oImV2ZXJ5IiwgdHlwZWRBcnJheVByb3RvdHlwZUV2ZXJ5Q29k
ZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZmls
dGVyIiwgdHlwZWRBcnJheVByb3RvdHlwZUZpbHRlckNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJ
Tl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNvcnQiLCB0eXBlZEFycmF5UHJvdG90eXBl
U29ydENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKLSAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VU
X1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgdHlwZWRBcnJheVByb3RvVmll
d0Z1bmNFbnRyaWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMCwgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVf
SU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCB0eXBlZEFycmF5UHJvdG9WaWV3RnVu
Y0VudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAwLCBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImluY2x1ZGVzIiwgdHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNJbmNsdWRlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigi
ZmlsbCIsIHR5cGVkQXJyYXlQcm90b3R5cGVGaWxsQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19CVUlMVElO
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZmluZCIsIHR5cGVkQXJyYXlQcm90b3R5cGVG
aW5kQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSlNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmZvckVhY2gsIHR5cGVkQXJyYXlQcm90b3R5cGVGb3JFYWNoQ29kZUdlbmVyYXRvciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJpbmRleE9mIiwgdHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmRleE9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VU
X1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+am9pbiwgdHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNKb2luLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMSk7Ci0gICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jS2V5cywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIFR5
cGVkQXJyYXlLZXlzSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5
c1B1YmxpY05hbWUoKSwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNLZXlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgVHlwZWRBcnJheUtleXNJ
bnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJs
YXN0SW5kZXhPZiIsIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0Nf
TkFUSVZFX0lOVFJJTlNJQ19HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5LCBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljKTsKICAgICBKU0NfQlVJ
TFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oIm1hcCIsIHR5cGVkQXJyYXlQcm90b3R5
cGVNYXBDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmoKICAgICBHZXR0ZXJTZXR0ZXIqIHRvU3RyaW5nVGFnQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0b1N0cmluZ1RhZ0Z1bmN0aW9uLCBudWxscHRyKTsK
ICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCB0b1N0cmluZ1RhZ0FjY2Vzc29yLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCi0gICAgSlNGdW5jdGlvbiogdmFsdWVzRnVu
Y3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVy
dHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1ZhbHVlcywg
VHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYyk7CisgICAgSlNGdW5jdGlvbiogdmFsdWVzRnVuY3Rp
b24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpLnN0cmluZygpLCB0eXBlZEFy
cmF5Vmlld1Byb3RvRnVuY1ZhbHVlcywgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYyk7CiAKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpLCB2YWx1ZXNGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgdmFs
dWVzRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCmluZGV4IDNiYWU4N2ViNTQ2OWRkNjliNDBiZjVkMTNiYTQ3ZDkxMDUzZDE2NjIuLjA5NWZi
ZDZiM2Q4Y2M4NjQxMDcxMjk2NDYzNWE0ZTlkNDliZDVhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJM
b29rdXAuaCIKIAogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5sdXQuaCIKQEAgLTQzLDggKzQ0LDYg
QEAgY29uc3QgQ2xhc3NJbmZvIE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6
OnNfaW5mbywgJm1hcFByb3RvdHlwZVRhYmwKIC8qIFNvdXJjZSBmb3IgTWFwUHJvdG90eXBlLmx1
dC5oCiBAYmVnaW4gbWFwUHJvdG90eXBlVGFibGUKICAgZm9yRWFjaCAgIEpTQnVpbHRpbiAgRG9u
dEVudW18RnVuY3Rpb24gMAotICB2YWx1ZXMgICAgSlNCdWlsdGluICBEb250RW51bXxGdW5jdGlv
biAwCi0gIGtleXMgICAgICBKU0J1aWx0aW4gIERvbnRFbnVtfEZ1bmN0aW9uIDAKIEBlbmQKICov
CiAKQEAgLTUzLDYgKzUyLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW0KIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJv
dG9GdW5jSGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVu
Y1ZhbHVlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jS2V5cyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5j
RW50cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAgICAgCkBAIC02NiwxNCArNjgsMTYgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBK
U0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+Z2V0LCBtYXBQcm90b0Z1bmNHZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU01hcEdldEludHJpbnNpYyk7CiAgICAgSlND
X05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmhhcywgbWFwUHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNNYXBIYXNJbnRyaW5zaWMpOwogICAgIEpTQ19O
QVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5zZXQsIG1hcFByb3RvRnVuY1NldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDIsIEpTTWFwU2V0SW50cmluc2ljKTsKKyAgICBKU0NfTkFU
SVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgbWFwUHJvdG9GdW5jS2V5cywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIEpTTWFw
S2V5c0ludHJpbnNpYyk7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1Ymxp
Y05hbWUoKSwgbWFwUHJvdG9GdW5jVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgSlNNYXBWYWx1ZXNJbnRyaW5zaWMpOwogCiAgICAg
SlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCksIG1hcFByb3RvRnVuY0dl
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEs
IEpTTWFwR2V0SW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0UHJp
dmF0ZU5hbWUoKSwgbWFwUHJvdG9GdW5jU2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMiwgSlNNYXBTZXRJbnRyaW5zaWMpOwogCi0gICAgSlNG
dW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgbWFwUHJvdG90eXBlRW50
cmllc0NvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVuY3Rpb24qIGVu
dHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgbWFw
UHJvdG9GdW5jRW50cmllcywgSlNNYXBFbnRyaWVzSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50
cmllc1B1YmxpY05hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwg
anNOb250cml2aWFsU3RyaW5nKHZtLCAiTWFwIl9zKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgdm0ucHJvcGVydHlOYW1lcy0+TWFwLnN0cmluZygpKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAog
ICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5zaXplLCBtYXBQcm90b0Z1bmNTaXplLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCkBAIC0xNDAsNiArMTQ0LDMxIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUp
OwogfQogCitpbmxpbmUgSlNWYWx1ZSBjcmVhdGVNYXBJdGVyYXRvck9iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZCBr
aW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CisgICAgSlNNYXAqIG1hcCA9IGdldE1h
cChnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgaWYgKCFtYXApCisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdC0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgbWFwLCBraW5kKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNWYWx1ZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjcmVhdGVNYXBJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWFwUHJvdG9GdW5jS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0
ZU1hcEl0ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBJdGVyYXRpb25LaW5k
OjpLZXlzKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5j
RW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZU1hcEl0ZXJhdG9yT2JqZWN0
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBJdGVyYXRpb25LaW5kOjpFbnRyaWVzKSk7Cit9CisK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBKU01hcCog
bWFwID0gZ2V0TWFwKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRleCA3MTc1
OWQ0YTIyMGQ1NDUwYmMwZTMzMDQxODM0OGNiY2Y3ZWI0YzRmLi4wMGJmYWJlOGU3MGExYzQ1NzM0
NTE0M2QxN2ZiMTFhNDYyZjdhM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJdGVyYXRv
ck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTZXQu
aCIKKyNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAKICNp
bmNsdWRlICJTZXRQcm90b3R5cGUubHV0LmgiCkBAIC00Myw3ICs0NCw2IEBAIGNvbnN0IENsYXNz
SW5mbyBTZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNldCIsICZCYXNlOjpzX2luZm8sICZzZXRQ
cm90b3R5cGVUYWJsCiAvKiBTb3VyY2UgZm9yIFNldEl0ZXJhdG9yUHJvdG90eXBlLmx1dC5oCiBA
YmVnaW4gc2V0UHJvdG90eXBlVGFibGUKICAgZm9yRWFjaCAgIEpTQnVpbHRpbiAgRG9udEVudW18
RnVuY3Rpb24gMAotICBlbnRyaWVzICAgSlNCdWlsdGluICBEb250RW51bXxGdW5jdGlvbiAwCiBA
ZW5kCiAqLwogCkBAIC01MSw3ICs1MSw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHNldFByb3RvRnVuY0FkZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNDbGVhcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc2V0UHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNIYXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKLQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc2V0UHJvdG9GdW5jVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNFbnRyaWVzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHNldFByb3RvRnVuY1NpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIApA
QCAtNjQsMTQgKzY1LDE1IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+Y2xlYXIsIHNldFByb3RvRnVu
Y0NsZWFyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+ZGVsZXRlS2V5d29yZCwgc2V0UHJvdG9GdW5jRGVsZXRlLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05B
VElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmhhcywgc2V0UHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNTZXRIYXNJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJ
VkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCBzZXRQcm90b0Z1bmNFbnRyaWVz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwg
SlNTZXRFbnRyaWVzSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFz
UHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNTZXRIYXNJbnRyaW5zaWMpOwogICAgIEpT
Q19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hZGRQcml2YXRlTmFtZSgpLCBzZXRQcm90b0Z1bmNBZGQs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBK
U1NldEFkZEludHJpbnNpYyk7CiAKLSAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHNldFByb3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxP
YmplY3QpOworICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQ
dWJsaWNOYW1lKCkuc3RyaW5nKCksIHNldFByb3RvRnVuY1ZhbHVlcywgSlNTZXRWYWx1ZXNJbnRy
aW5zaWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5r
ZXlzUHVibGljTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNO
b250cml2aWFsU3RyaW5nKHZtLCAiU2V0Il9zKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuU2V0UHVibGlj
TmFtZSgpLnN0cmluZygpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLCBzZXRQcm90b0Z1bmNTaXplLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCkBA
IC0xMzcsNCArMTM5LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9G
dW5jU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihzZXQtPnNpemUoKSkpOwogfQogCitpbmxpbmUgSlNWYWx1
ZSBjcmVhdGVTZXRJdGVyYXRvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZCBraW5kKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7CisgICAgSlNTZXQqIHNldCA9IGdldFNldChnbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSk7CisgICAgaWYgKCFzZXQpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IHJldHVybiBKU1NldEl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c2V0SXRlcmF0
b3JTdHJ1Y3R1cmUoKSwgc2V0LCBraW5kKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzZXRQcm90b0Z1bmNWYWx1ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVT
ZXRJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZDo6
VmFsdWVzKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5j
RW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZVNldEl0ZXJhdG9yT2JqZWN0
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBJdGVyYXRpb25LaW5kOjpFbnRyaWVzKSk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA2OWU1MmVhNjY3YzI1NDI5
YmUwOTY1ZmI0MjFkOWI4OGM5NzAyNmRlLi5iMDIwMDQ5MWE4OWU4NzFlODg2ZGZmMGQ1MDRmY2M5
ZWM0MmJmZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNTQ5LDIw
ICsxNTQ5LDYgQEAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGkKIAogI3VuZGVmIERZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKIAotU3RydWN0dXJlKiBWTTo6c2V0SXRlcmF0
b3JTdHJ1Y3R1cmVTbG93KCkKLXsKLSAgICBBU1NFUlQoIW1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUp
OwotICAgIG1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NldEl0ZXJhdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgcmV0dXJuIG1fc2V0SXRl
cmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7Ci19Ci0KLVN0cnVjdHVyZSogVk06Om1hcEl0ZXJhdG9yU3Ry
dWN0dXJlU2xvdygpCi17Ci0gICAgQVNTRVJUKCFtX21hcEl0ZXJhdG9yU3RydWN0dXJlKTsKLSAg
ICBtX21hcEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNNYXBJdGVyYXRvcjo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHJldHVybiBtX21hcEl0ZXJhdG9y
U3RydWN0dXJlLmdldCgpOwotfQotCiBKU0NlbGwqIFZNOjpzZW50aW5lbFNldEJ1Y2tldFNsb3co
KQogewogICAgIEFTU0VSVCghbV9zZW50aW5lbFNldEJ1Y2tldCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAppbmRleCA5ZTk4ZDUzYzUzYTRmN2ZmZGE0ZjA2ZWRhZmQ3NzkzNTI5NDQ5YjM4
Li5mMGE0OTMxZTgyMTY5NjJiNWZlNTA0NzZkNmJkZDQ2Mjc3YjAyOTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY5OCw5ICs2OTgsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4g
ewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGJpZ0ludFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3RydWN0dXJlOwogCi0gICAgU3Ryb25n
PFN0cnVjdHVyZT4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJl
PiBtX21hcEl0ZXJhdG9yU3RydWN0dXJlOwotCiAgICAgU3Ryb25nPEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcj4gbV9lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAKICAgICBTdHJvbmc8SlND
ZWxsPiBtX3NlbnRpbmVsU2V0QnVja2V0OwpAQCAtNzMzLDIwICs3MzAsNiBAQCBjbGFzcyBWTSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0
Tm9kZTxWTT4gewogCiAgICAgU3Ryb25nPEpTQmlnSW50PiBiaWdJbnRDb25zdGFudE9uZTsKIAot
ICAgIFN0cnVjdHVyZSogc2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKQotICAgIHsKLSAgICAgICAgaWYg
KExJS0VMWShtX3NldEl0ZXJhdG9yU3RydWN0dXJlKSkKLSAgICAgICAgICAgIHJldHVybiBtX3Nl
dEl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOwotICAgICAgICByZXR1cm4gc2V0SXRlcmF0b3JTdHJ1
Y3R1cmVTbG93KCk7Ci0gICAgfQotCi0gICAgU3RydWN0dXJlKiBtYXBJdGVyYXRvclN0cnVjdHVy
ZSgpCi0gICAgewotICAgICAgICBpZiAoTElLRUxZKG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUpKQot
ICAgICAgICAgICAgcmV0dXJuIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7Ci0gICAgICAg
IHJldHVybiBtYXBJdGVyYXRvclN0cnVjdHVyZVNsb3coKTsKLSAgICB9Ci0KICAgICBKU0NlbGwq
IHNlbnRpbmVsU2V0QnVja2V0KCkKICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkobV9zZW50aW5l
bFNldEJ1Y2tldCkpCkBAIC0xMTI3LDggKzExMTAsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewog
ICAgIHN0YXRpYyBWTSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICB2b2lkIGNyZWF0
ZU5hdGl2ZVRodW5rKCk7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIHNldEl0
ZXJhdG9yU3RydWN0dXJlU2xvdygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZSog
bWFwSXRlcmF0b3JTdHJ1Y3R1cmVTbG93KCk7CiAgICAgSlNDZWxsKiBzZW50aW5lbFNldEJ1Y2tl
dFNsb3coKTsKICAgICBKU0NlbGwqIHNlbnRpbmVsTWFwQnVja2V0U2xvdygpOwogICAgIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvciogZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU2xvdygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKaW5kZXggODRjMTY0ZGEzZTIwYTVmMjczYzgxMWY3OGEzODc3YmI3MjYzOWMwYy4uMTJj
NzZjZjA3MjA4YzQ0OThhMjI3MjA2MmNjNGI0ODA2N2ZlNjAzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xNjk5
LDcgKzE2OTksNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgIEpTTWFwKiBpbk1hcCA9IGpzQ2Fz
dDxKU01hcCo+KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghc3RhcnRNYXAoaW5NYXAp
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBKU01hcEl0ZXJh
dG9yKiBpdGVyYXRvciA9IEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwgdm0ubWFwSXRlcmF0b3JT
dHJ1Y3R1cmUoKSwgaW5NYXAsIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXMpOworICAgICAgICAgICAg
ICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0gSlNNYXBJdGVyYXRvcjo6Y3JlYXRlKHZtLCBt
X2xleGljYWxHbG9iYWxPYmplY3QtPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIGluTWFwLCBJdGVy
YXRpb25LaW5kOjpFbnRyaWVzKTsKICAgICAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZFdp
dGhDcmFzaE9uT3ZlcmZsb3coaW5NYXApOwogICAgICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBw
ZW5kV2l0aENyYXNoT25PdmVyZmxvdyhpdGVyYXRvcik7CiAgICAgICAgICAgICAgICAgbWFwSXRl
cmF0b3JTdGFjay5hcHBlbmQoaXRlcmF0b3IpOwpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgU2VyaWFs
aXphdGlvblJldHVybkNvZGUgQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikK
ICAgICAgICAgICAgICAgICBKU1NldCogaW5TZXQgPSBqc0Nhc3Q8SlNTZXQqPihpblZhbHVlKTsK
ICAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0U2V0KGluU2V0KSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgSlNTZXRJdGVyYXRvciogaXRlcmF0b3IgPSBKU1Nl
dEl0ZXJhdG9yOjpjcmVhdGUodm0sIHZtLnNldEl0ZXJhdG9yU3RydWN0dXJlKCksIGluU2V0LCBJ
dGVyYXRpb25LaW5kOjpLZXlzKTsKKyAgICAgICAgICAgICAgICBKU1NldEl0ZXJhdG9yKiBpdGVy
YXRvciA9IEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2bSwgbV9sZXhpY2FsR2xvYmFsT2JqZWN0LT5z
ZXRJdGVyYXRvclN0cnVjdHVyZSgpLCBpblNldCwgSXRlcmF0aW9uS2luZDo6S2V5cyk7CiAgICAg
ICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KGluU2V0KTsK
ICAgICAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3coaXRl
cmF0b3IpOwogICAgICAgICAgICAgICAgIHNldEl0ZXJhdG9yU3RhY2suYXBwZW5kKGl0ZXJhdG9y
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZjE4ZmQ2ZWI1NTk4MDVkOGM5NTk0ODA1MGU5NmYyNTIyMTZjNmZhOS4uOGQxZjM4YmUzNzEy
ZWFhNWNjOGNlNGNhZGZjMWI2ZDRmYmI1ZDIyNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wNC0wNSAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxl
bWVudCBKU01hcEl0ZXJhdG9yL0pTU2V0SXRlcmF0b3Igd2l0aCBKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTAwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9tYXAtaXRlcmF0aW9uLW9hcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvbWFwLWl0ZXJhdG9yLWNyZWF0aW9u
LWZhaWwtZGZnLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRl
c3QyKToKKyAgICAgICAgKHRlc3QzKToKKyAgICAgICAgKiBzdHJlc3MvbWFwLWl0ZXJhdG9yLWNy
ZWF0aW9uLWZhaWwuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAo
aS5zaG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0Myk6CisgICAg
ICAgICogc3RyZXNzL3NldC1pdGVyYXRpb24tb2FzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKiBzdHJlc3Mvc2V0LWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwtZGZnLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNldCBzaG91bGRUaHJv
dyk6CisgICAgICAgICogc3RyZXNzL3NldC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGkuc2hvdWxkVGhyb3cpOgorICAg
ICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorCiAyMDIwLTA0LTA1ICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBPY3RhbCBlc2NhcGVzIHNo
b3VsZCBiZSBtYXggMyBkaWdpdHMgYW5kIHN5bnRheCBlcnJvcnMgaW4gVW5pY29kZSBwYXR0ZXJu
cwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWFwLWl0ZXJhdGlvbi1vYXMuanMgYi9KU1Rl
c3RzL3N0cmVzcy9tYXAtaXRlcmF0aW9uLW9hcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjYxYzRmNGQ0NDhh
ZjUyZjQ5NjkwYzMwMjFhYzZkN2FkNWZmYTI0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvbWFwLWl0ZXJhdGlvbi1vYXMuanMKQEAgLTAsMCArMSwyMSBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKwor
dmFyIG1hcCA9IG5ldyBNYXA7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgIG1h
cC5zZXQoaSwgaSk7CisKK2Z1bmN0aW9uIHRlc3QobWFwKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7
CisgICAgZm9yIChsZXQgW2EsIGJdIG9mIG1hcCkgeworICAgICAgICByZXN1bHQgKz0gYTsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKHRlc3QobWFwKSwgNDk1MCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjIwMDY2N2M0MmJiOGUzYzgxOWJhMjE3MDI3ZDdiODMzYTMyODkxYwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL21hcC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLWRmZy5q
cwpAQCAtMCwwICsxLDU0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3Nh
Z2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxs
OworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAo
IWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAg
ICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiB0ZXN0
MShtYXApCit7CisgICAgTWFwLnByb3RvdHlwZS52YWx1ZXMuY2FsbChtYXApOworfQorbm9Jbmxp
bmUodGVzdDEpOworCit2YXIgbWFwID0gbmV3IE1hcCgpOworZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTY7ICsraSkKKyAgICB0ZXN0MShtYXApOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgdGVz
dDEoe30pOworfSwgYFR5cGVFcnJvcjogTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBv
YmplY3RgKTsKKworZnVuY3Rpb24gdGVzdDIobWFwKQoreworICAgIE1hcC5wcm90b3R5cGUua2V5
cy5jYWxsKG1hcCk7Cit9Citub0lubGluZSh0ZXN0Mik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWU2OyArK2kpCisgICAgdGVzdDIobWFwKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIHRl
c3QyKHt9KTsKK30sIGBUeXBlRXJyb3I6IE1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAg
b2JqZWN0YCk7CisKK2Z1bmN0aW9uIHRlc3QzKG1hcCkKK3sKKyAgICBNYXAucHJvdG90eXBlLmVu
dHJpZXMuY2FsbChtYXApOworfQorbm9JbmxpbmUodGVzdDMpOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDFlMzsgKytpKQorICAgIHRlc3QzKG1hcCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAg
ICB0ZXN0Myh7fSk7Cit9LCBgVHlwZUVycm9yOiBNYXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24t
TWFwIG9iamVjdGApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWFwLWl0ZXJhdG9yLWNy
ZWF0aW9uLWZhaWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFp
bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wYjhlM2RmNTRmNmUwODI2ODg1ZTNkNGJlMTNmMjczMDI0ZTYzMWQ4
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvbWFwLWl0ZXJhdG9yLWNyZWF0aW9u
LWZhaWwuanMKQEAgLTAsMCArMSw1MCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJy
b3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9y
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9Cisg
ICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3du
Jyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rp
b24gdGVzdDEoKQoreworICAgIE1hcC5wcm90b3R5cGUudmFsdWVzLmNhbGwoe30pOworfQorbm9J
bmxpbmUodGVzdDEpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4geworICAgICAgICB0ZXN0MSgpOworICAgIH0sIGBUeXBlRXJyb3I6IE1h
cCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2JqZWN0YCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3QyKCkKK3sKKyAgICBNYXAucHJvdG90eXBlLmtleXMuY2FsbCh7fSk7Cit9Citub0lubGluZSh0
ZXN0Mik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICBzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgICAgIHRlc3QyKCk7CisgICAgfSwgYFR5cGVFcnJvcjogTWFwIG9wZXJh
dGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3RgKTsKK30KKworZnVuY3Rpb24gdGVzdDMoKQor
eworICAgIE1hcC5wcm90b3R5cGUuZW50cmllcy5jYWxsKHt9KTsKK30KK25vSW5saW5lKHRlc3Qz
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgIHNob3VsZFRocm93KCgp
ID0+IHsKKyAgICAgICAgdGVzdDMoKTsKKyAgICB9LCBgVHlwZUVycm9yOiBNYXAgb3BlcmF0aW9u
IGNhbGxlZCBvbiBub24tTWFwIG9iamVjdGApOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3Mvc2V0LWl0ZXJhdGlvbi1vYXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0aW9uLW9h
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ODI4YjA1ZjJiYTcwNjgwNjY1M2E0NDAyNzY2NDg0YjQzOThkOTlh
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0ZXJhdGlvbi1vYXMuanMK
QEAgLTAsMCArMSwyMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKwordmFyIHNldCA9IG5ldyBTZXQ7Citmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgIHNldC5hZGQoaSk7CisKK2Z1bmN0aW9uIHRlc3Qo
c2V0KSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgYSBvZiBzZXQpIHsKKyAg
ICAgICAgcmVzdWx0ICs9IGE7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9Citub0lubGlu
ZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0
ZXN0KHNldCksIDQ5NTApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0ZXJhdG9y
LWNyZWF0aW9uLWZhaWwtZGZnLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0ZXJhdG9yLWNyZWF0
aW9uLWZhaWwtZGZnLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzUzZDQ2ODQ2YjFhZDQ4MGY1NjlhNzA4ODE0
ZTY1NTJkYmExMTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0
b3ItY3JlYXRpb24tZmFpbC1kZmcuanMKQEAgLTAsMCArMSw1NCBAQAorZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7
CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1g
KTsKK30KKworZnVuY3Rpb24gdGVzdDEoc2V0KQoreworICAgIFNldC5wcm90b3R5cGUudmFsdWVz
LmNhbGwoc2V0KTsKK30KK25vSW5saW5lKHRlc3QxKTsKKwordmFyIHNldCA9IG5ldyBTZXQoKTsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgdGVzdDEoc2V0KTsKKworc2hvdWxk
VGhyb3coKCkgPT4geworICAgIHRlc3QxKHt9KTsKK30sIGBUeXBlRXJyb3I6IFNldCBvcGVyYXRp
b24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0YCk7CisKK2Z1bmN0aW9uIHRlc3QyKHNldCkKK3sK
KyAgICBTZXQucHJvdG90eXBlLmtleXMuY2FsbChzZXQpOworfQorbm9JbmxpbmUodGVzdDIpOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHRlc3QyKHNldCk7CisKK3Nob3Vs
ZFRocm93KCgpID0+IHsKKyAgICB0ZXN0Mih7fSk7Cit9LCBgVHlwZUVycm9yOiBTZXQgb3BlcmF0
aW9uIGNhbGxlZCBvbiBub24tU2V0IG9iamVjdGApOworCitmdW5jdGlvbiB0ZXN0MyhzZXQpCit7
CisgICAgU2V0LnByb3RvdHlwZS5lbnRyaWVzLmNhbGwoc2V0KTsKK30KK25vSW5saW5lKHRlc3Qz
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICB0ZXN0MyhzZXQpOworCitz
aG91bGRUaHJvdygoKSA9PiB7CisgICAgdGVzdDMoe30pOworfSwgYFR5cGVFcnJvcjogU2V0IG9w
ZXJhdGlvbiBjYWxsZWQgb24gbm9uLVNldCBvYmplY3RgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3NldC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2V0
LWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFhYTk5NzE5ODExYzNlMzVl
OTU2ZDNiMGUyYjk3YmViZjI3YTFiOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3NldC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLmpzCkBAIC0wLDAgKzEsNTAgQEAKK2Z1bmN0aW9u
IHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9
IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAg
ICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJv
ck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhl
cnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkKK3sKKyAgICBTZXQucHJvdG90eXBlLnZh
bHVlcy5jYWxsKHt9KTsKK30KK25vSW5saW5lKHRlc3QxKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTM7ICsraSkgeworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgdGVzdDEoKTsK
KyAgICB9LCBgVHlwZUVycm9yOiBTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tU2V0IG9iamVj
dGApOworfQorCitmdW5jdGlvbiB0ZXN0MigpCit7CisgICAgU2V0LnByb3RvdHlwZS5rZXlzLmNh
bGwoe30pOworfQorbm9JbmxpbmUodGVzdDIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsg
KytpKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICB0ZXN0MigpOworICAgIH0s
IGBUeXBlRXJyb3I6IFNldCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0YCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3QzKCkKK3sKKyAgICBTZXQucHJvdG90eXBlLmVudHJpZXMuY2FsbCh7
fSk7Cit9Citub0lubGluZSh0ZXN0Myk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kp
IHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIHRlc3QzKCk7CisgICAgfSwgYFR5
cGVFcnJvcjogU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLVNldCBvYmplY3RgKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395548</attachid>
            <date>2020-04-05 23:06:52 -0700</date>
            <delta_ts>2020-04-06 00:48:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210023-20200405230651.patch</filename>
            <type>text/plain</type>
            <size>120926</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjVhMmMwZWU3NjJmOTE1MzY2ZTFiMGEwYjI4OGM2NDMxOTJmZjNkLi40NzBhNGJmYThlMjEyNzNj
MGRmMzIxZDUyYThiZDBhNjg5NzA5YzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMjAtMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgSlNNYXBJdGVyYXRvci9KU1NldEl0ZXJhdG9y
IHdpdGggSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWltcGxlbWVudCBKU01hcEl0ZXJh
dG9yL0pTU2V0SXRlcmF0b3Igd2l0aCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLgorICAgICAg
ICBUaGlzIG1ha2VzIGN1cnJlbnQgSlNGaW5hbE9iamVjdC1iYXNlZCBNYXAvU2V0SXRlcmF0b3Ig
c2ltcGxlIGFuZCBzbWFsbC4KKyAgICAgICAgQW5kIHdlIGFkZCBuZWNlc3Nhcnkgc3VwcG9ydCBv
ZiBKU01hcEl0ZXJhdG9yL0pTU2V0SXRlcmF0b3IgaW4gREZHIC8gRlRMIHRvIG1ha2UKKyAgICAg
ICAgYWxsb2NhdGlvbiBlZmZpY2llbnQgYW5kIG9iamVjdC1hbGxvY2F0aW9uLXNpbmtpbmcgYXdh
cmUuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWls
dGlucy9NYXBJdGVyYXRvclByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubWFw
SXRlcmF0b3JOZXh0KToKKyAgICAgICAgKG5leHQpOgorICAgICAgICAqIGJ1aWx0aW5zL01hcFBy
b3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuTWFwSXRlcmF0b3IpOiBEZWxldGVk
LgorICAgICAgICAodmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKGtleXMpOiBEZWxldGVkLgor
ICAgICAgICAoZW50cmllcyk6IERlbGV0ZWQuCisgICAgICAgICogYnVpbHRpbnMvU2V0SXRlcmF0
b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnNldEl0ZXJhdG9yTmV4dCk6
CisgICAgICAgIChuZXh0KToKKyAgICAgICAgKiBidWlsdGlucy9TZXRQcm90b3R5cGUuanM6Cisg
ICAgICAgIChnbG9iYWxQcml2YXRlLlNldEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKHZh
bHVlcyk6IERlbGV0ZWQuCisgICAgICAgIChlbnRyaWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdElzTWFwSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdElzU2V0SXRlcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjptYXBJdGVyYXRvckludGVybmFsRmllbGRJbmRleCk6
CisgICAgICAgIChKU0M6OnNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRNYXBJdGVyYXRv
ckludGVybmFsRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVt
aXRfaW50cmluc2ljX2dldFNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0TWFwSXRlcmF0b3JJbnRl
cm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19wdXRTZXRJdGVyYXRvckludGVybmFsRmllbGQpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0
YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50
b21OZXdNYXBJdGVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUGhh
bnRvbU5ld1NldEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzUGhhbnRvbUFsbG9jYXRpb24pOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5ld01hcEl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU5ld1NldEl0ZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
YW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3TWFwSXRlcmF0b3IpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3U2V0SXRlcmF0b3IpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVO
ZXdJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKiBmdGwvRlRMT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUik6CisgICAg
ICAgIChKU0M6OkZUTDo6b3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUik6CisgICAgICAg
ICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFsUHJvcGVydGllcyk6CisgICAgICAg
IChJbnNwZWN0b3I6OmNsb25lTWFwSXRlcmF0b3JPYmplY3QpOgorICAgICAgICAoSW5zcGVjdG9y
OjpjbG9uZVNldEl0ZXJhdG9yT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmllcyk6CisgICAgICAgICogcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAgICAg
KEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpt
YXBJdGVyYXRvclByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpzZXRJdGVyYXRvclByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjptYXBJdGVyYXRvclN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0OjpzZXRJdGVyYXRvclN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U01hcEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNYXBJdGVyYXRvcjo6Y3JlYXRlV2l0
aEluaXRpYWxWYWx1ZXMpOgorICAgICAgICAoSlNDOjpKU01hcEl0ZXJhdG9yOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkpTTWFwSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTZXRJ
dGVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTU2V0SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0
aWFsVmFsdWVzKToKKyAgICAgICAgKEpTQzo6SlNTZXRJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpKU1NldEl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0pTU2V0SXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5jcHA6
CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
Lmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNyZWF0ZU1hcEl0ZXJhdG9y
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6bWFwUHJvdG9GdW5jVmFsdWVzKToKKyAgICAgICAgKEpT
Qzo6bWFwUHJvdG9GdW5jS2V5cyk6CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY0VudHJpZXMp
OgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OmNyZWF0ZVNldEl0ZXJh
dG9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6c2V0UHJvdG9GdW5jVmFsdWVzKToKKyAgICAgICAg
KEpTQzo6c2V0UHJvdG9GdW5jRW50cmllcyk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjpzZXRJdGVyYXRvclN0cnVjdHVyZVNsb3cpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpWTTo6bWFwSXRlcmF0b3JTdHJ1Y3R1cmVTbG93KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpzZXRJdGVyYXRvclN0cnVjdHVy
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlZNOjptYXBJdGVyYXRvclN0cnVjdHVyZSk6IERl
bGV0ZWQuCisKIDIwMjAtMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSlNDXSBKU0FycmF5SXRlcmF0b3IncyBzaXplIGlzIHdyb25nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNTg4MjkyYTkyZTgyNWZmNzQwNTIxODMwMzkzODJiMWMzZmQ2ZTkzNS4uYTJjZjUzMDZi
MGUyNGM3NzBkYTg3MWVmNjQ2MTU1ZGNmODRhNmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIwLTA0LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gSW1wbGVtZW50IEpTTWFwSXRlcmF0b3IvSlNTZXRJdGVyYXRvciB3aXRoIEpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMDAyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKwogMjAyMC0w
NC0wNCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBMb2Nr
SGlzdG9yeSBwYXJhbWV0ZXIgZnJvbSBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCAxOTcwYzlmNDMw
NjA4NzIxYTJhMzI1NmIyNmUyZTQ2YjNjODNhNmQyLi5mZDdiZWQ2ZTU1MDExMjJiMzAwM2ZjMzEy
YTE5NDkzNDZiMTUyMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oCkBAIC04NSw2ICs4NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3Jv
KHJlcGVhdENoYXJhY3RlcikgXAogICAgIG1hY3JvKHN0YXJEZWZhdWx0KSBcCiAgICAgbWFjcm8o
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKSBcCisgICAgbWFjcm8oa2V5cykgXAorICAgIG1hY3Jv
KHZhbHVlcykgXAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKHNldCkgXAogICAgIG1hY3Jv
KHNoaWZ0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFw
SXRlcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFw
SXRlcmF0b3JQcm90b3R5cGUuanMKaW5kZXggZmZmY2VlOGEzNGM2MDg5NDNlMTBmZjkwOTRjMGM5
YjJhMzE3MDdhMS4uNjk0MDMxYjhhMGQwZTY0NmRhM2YyNjE0YTBiMTEzNzk5MjA5YzM4NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90
eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBJdGVyYXRvclBy
b3RvdHlwZS5qcwpAQCAtMzEsNyArMzEsNyBAQCBmdW5jdGlvbiBtYXBJdGVyYXRvck5leHQoYnVj
a2V0LCBraW5kKQogICAgIHZhciB2YWx1ZTsKIAogICAgIGJ1Y2tldCA9IEBtYXBCdWNrZXROZXh0
KGJ1Y2tldCk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJtYXBCdWNrZXQiLCBi
dWNrZXQpOworICAgIEBwdXRNYXBJdGVyYXRvckludGVybmFsRmllbGQodGhpcywgQG1hcEl0ZXJh
dG9yRmllbGRNYXBCdWNrZXQsIGJ1Y2tldCk7CiAgICAgdmFyIGRvbmUgPSBidWNrZXQgPT09IEBz
ZW50aW5lbE1hcEJ1Y2tldDsKICAgICBpZiAoIWRvbmUpIHsKICAgICAgICAgdmFyIGtleSA9IEBt
YXBCdWNrZXRLZXkoYnVja2V0KTsKQEAgLTQ4LDExICs0OCwxMCBAQCBmdW5jdGlvbiBuZXh0KCkK
IHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBpZiAoQGlzVW5kZWZpbmVkT3JOdWxsKHRoaXMp
KQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVNYXBJdGVyYXRvclByb3RvdHlwZSUubmV4dCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICBpZiAo
IUBpc01hcEl0ZXJhdG9yKHRoaXMpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVNYXBJdGVy
YXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhbiBNYXAgSXRlcmF0
b3IgaW5zdGFuY2UiKTsKIAotICAgIHZhciBidWNrZXQgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUo
dGhpcywgIm1hcEJ1Y2tldCIpOwotICAgIGlmIChidWNrZXQgPT09IEB1bmRlZmluZWQpCi0gICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiJU1hcEl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0IHJlcXVpcmVz
IHRoYXQgfHRoaXN8IGJlIGEgTWFwIEl0ZXJhdG9yIGluc3RhbmNlIik7Ci0gICAgcmV0dXJuIEBt
YXBJdGVyYXRvck5leHQuQGNhbGwodGhpcywgYnVja2V0LCBAZ2V0QnlJZERpcmVjdFByaXZhdGUo
dGhpcywgIm1hcEl0ZXJhdG9yS2luZCIpKTsKKyAgICB2YXIgYnVja2V0ID0gQGdldE1hcEl0ZXJh
dG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAbWFwSXRlcmF0b3JGaWVsZE1hcEJ1Y2tldCk7CisgICAg
dmFyIGtpbmQgPSBAZ2V0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBtYXBJdGVyYXRv
ckZpZWxkS2luZCk7CisgICAgcmV0dXJuIEBtYXBJdGVyYXRvck5leHQuQGNhbGwodGhpcywgYnVj
a2V0LCBraW5kKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9NYXBQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwUHJv
dG90eXBlLmpzCmluZGV4IDhhNWJkM2MyNmY3ZWExNTU0ZWNiMDlhMTgzNWYxNGVkZDNkZGRkYzcu
LmNjNmIzYWFkZmY2NTcxMmQ4OTYyMzZhYjllZWQ1YTg2ZGFmM2U4MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBQcm90b3R5cGUuanMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcFByb3RvdHlwZS5qcwpAQCAtMjMsNDggKzIzLDYg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotQGNvbnN0cnVjdG9yCi1AZ2xvYmFsUHJpdmF0ZQot
ZnVuY3Rpb24gTWFwSXRlcmF0b3IoaXRlcmF0ZWRPYmplY3QsIGtpbmQpCi17Ci0gICAgInVzZSBz
dHJpY3QiOwotCi0gICAgQGFzc2VydChAaXNNYXAoaXRlcmF0ZWRPYmplY3QpKTsKLSAgICBAcHV0
QnlJZERpcmVjdFByaXZhdGUodGhpcywgIml0ZXJhdGVkT2JqZWN0IiwgaXRlcmF0ZWRPYmplY3Qp
OwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAibWFwSXRlcmF0b3JLaW5kIiwga2lu
ZCk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJtYXBCdWNrZXQiLCBAbWFwQnVj
a2V0SGVhZChpdGVyYXRlZE9iamVjdCkpOwotfQotCi1mdW5jdGlvbiB2YWx1ZXMoKQotewotICAg
ICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlzTWFwKHRoaXMpKQotICAgICAgICBAdGhyb3dU
eXBlRXJyb3IoIk1hcC5wcm90b3R5cGUudmFsdWVzIHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIE1h
cCIpOwotCi0gICAgcmV0dXJuIG5ldyBATWFwSXRlcmF0b3IodGhpcywgQGl0ZXJhdGlvbktpbmRW
YWx1ZSk7Ci19Ci0KLWZ1bmN0aW9uIGtleXMoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAg
IGlmICghQGlzTWFwKHRoaXMpKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk1hcC5wcm90b3R5
cGUua2V5cyByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBNYXAiKTsKLQotICAgIHJldHVybiBuZXcg
QE1hcEl0ZXJhdG9yKHRoaXMsIEBpdGVyYXRpb25LaW5kS2V5KTsKLX0KLQotZnVuY3Rpb24gZW50
cmllcygpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXNNYXAodGhpcykpCi0g
ICAgICAgIEB0aHJvd1R5cGVFcnJvcigiTWFwLnByb3RvdHlwZS5lbnRyaWVzIHJlcXVpcmVzIHRo
YXQgfHRoaXN8IGJlIE1hcCIpOwotCi0gICAgcmV0dXJuIG5ldyBATWFwSXRlcmF0b3IodGhpcywg
QGl0ZXJhdGlvbktpbmRFbnRyaWVzKTsKLX0KLQogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAv
KiwgdGhpc0FyZyAqLykKIHsKICAgICAidXNlIHN0cmljdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5cGUuanMKaW5kZXggZTlj
ZThmMGE2N2MwNzVlMjRjOGEyMjFjZjQxYjA5MWVkN2NjNmUwMS4uOWJiMGVkOWU4ZjMyNWNmNzM2
NjRlNTA2MTY4OGQxZjVkYTc4ZjcyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1NldEl0ZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9TZXRJdGVyYXRvclByb3RvdHlwZS5qcwpAQCAtMzEsNyArMzEsNyBAQCBm
dW5jdGlvbiBzZXRJdGVyYXRvck5leHQoYnVja2V0LCBraW5kKQogICAgIHZhciB2YWx1ZTsKIAog
ICAgIGJ1Y2tldCA9IEBzZXRCdWNrZXROZXh0KGJ1Y2tldCk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQ
cml2YXRlKHRoaXMsICJzZXRCdWNrZXQiLCBidWNrZXQpOworICAgIEBwdXRTZXRJdGVyYXRvcklu
dGVybmFsRmllbGQodGhpcywgQHNldEl0ZXJhdG9yRmllbGRTZXRCdWNrZXQsIGJ1Y2tldCk7CiAg
ICAgdmFyIGRvbmUgPSBidWNrZXQgPT09IEBzZW50aW5lbFNldEJ1Y2tldDsKICAgICBpZiAoIWRv
bmUpIHsKICAgICAgICAgdmFsdWUgPSBAc2V0QnVja2V0S2V5KGJ1Y2tldCk7CkBAIC00NSwxMSAr
NDUsMTAgQEAgZnVuY3Rpb24gbmV4dCgpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgaWYg
KEBpc1VuZGVmaW5lZE9yTnVsbCh0aGlzKSkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCIlU2V0
SXRlcmF0b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwg
b3IgdW5kZWZpbmVkIik7Ci0KLSAgICB2YXIgYnVja2V0ID0gQGdldEJ5SWREaXJlY3RQcml2YXRl
KHRoaXMsICJzZXRCdWNrZXQiKTsKLSAgICBpZiAoYnVja2V0ID09PSBAdW5kZWZpbmVkKQorICAg
IGlmICghQGlzU2V0SXRlcmF0b3IodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiJVNl
dEl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIGEgU2V0IEl0
ZXJhdG9yIGluc3RhbmNlIik7Ci0gICAgcmV0dXJuIEBzZXRJdGVyYXRvck5leHQuQGNhbGwodGhp
cywgYnVja2V0LCBAZ2V0QnlJZERpcmVjdFByaXZhdGUodGhpcywgInNldEl0ZXJhdG9yS2luZCIp
KTsKKworICAgIHZhciBidWNrZXQgPSBAZ2V0U2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMs
IEBzZXRJdGVyYXRvckZpZWxkU2V0QnVja2V0KTsKKyAgICB2YXIga2luZCA9IEBnZXRTZXRJdGVy
YXRvckludGVybmFsRmllbGQodGhpcywgQHNldEl0ZXJhdG9yRmllbGRLaW5kKTsKKyAgICByZXR1
cm4gQHNldEl0ZXJhdG9yTmV4dC5AY2FsbCh0aGlzLCBidWNrZXQsIGtpbmQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TZXRQcm90b3R5cGUuanMKaW5kZXggNmRmOGU4
ZmRkOTlkMWQzMTY1YTFmMWU0MDE0ZjM1YjIzMWFjMTc1ZC4uZmNiNDY4OGFiMjkxYWJhOTRjZDZi
MGYyYjczOTcwMjAxMTljZThhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1NldFByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvU2V0UHJvdG90eXBlLmpzCkBAIC0yMywzOCArMjMsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1AY29uc3RydWN0b3IKLUBnbG9iYWxQcml2YXRlCi1mdW5jdGlvbiBTZXRJdGVyYXRvcihp
dGVyYXRlZE9iamVjdCwga2luZCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBAYXNzZXJ0
KEBpc1NldChpdGVyYXRlZE9iamVjdCkpOwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlz
LCAiaXRlcmF0ZWRPYmplY3QiLCBpdGVyYXRlZE9iamVjdCk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQ
cml2YXRlKHRoaXMsICJzZXRJdGVyYXRvcktpbmQiLCBraW5kKTsKLSAgICBAcHV0QnlJZERpcmVj
dFByaXZhdGUodGhpcywgInNldEJ1Y2tldCIsIEBzZXRCdWNrZXRIZWFkKGl0ZXJhdGVkT2JqZWN0
KSk7Ci19Ci0KLWZ1bmN0aW9uIHZhbHVlcygpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAg
aWYgKCFAaXNTZXQodGhpcykpCi0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU2V0LnByb3RvdHlw
ZS52YWx1ZXMgcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgU2V0Iik7Ci0KLSAgICByZXR1cm4gbmV3
IEBTZXRJdGVyYXRvcih0aGlzLCBAaXRlcmF0aW9uS2luZFZhbHVlKTsKLX0KLQotZnVuY3Rpb24g
ZW50cmllcygpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXNTZXQodGhpcykp
Ci0gICAgICAgIEB0aHJvd1R5cGVFcnJvcigiU2V0LnByb3RvdHlwZS5lbnRyaWVzIHJlcXVpcmVz
IHRoYXQgfHRoaXN8IGJlIFNldCIpOwotCi0gICAgcmV0dXJuIG5ldyBAU2V0SXRlcmF0b3IodGhp
cywgQGl0ZXJhdGlvbktpbmRFbnRyaWVzKTsKLX0KLQogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFj
ayAvKiwgdGhpc0FyZyAqLykKIHsKICAgICAidXNlIHN0cmljdCI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5jcHAKaW5kZXggMzJhYWY4N2Y0YzU2YTA0ODY2NDQ4ZTQ3OWM1MzlhNzYzYTE5Y2ExMC4uYWY4
M2UzMTJmMDE1Yzk4YjdjNTg3NzRjNzhkNjRlNWFlYTk1ZGZhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5LmNwcApAQCAtMzYsOCArMzYsMTAgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1
ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgogI2luY2x1
ZGUgIkpTUHJvbWlzZS5oIgorI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJTdHJvbmdJ
bmxpbmVzLmgiCkBAIC05Miw2ICs5NCwxMCBAQCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZNJiB2bSkKICAgICBtX2FycmF5SXRlcmF0b3JGaWVs
ZEl0ZXJhdGVkT2JqZWN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJdGVyYXRlZE9iamVjdCkpKTsKICAgICBtX2FycmF5SXRl
cmF0b3JGaWVsZEluZGV4LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpKTsKICAgICBtX2FycmF5SXRlcmF0b3JGaWVs
ZEtpbmQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXJyYXlJdGVy
YXRvcjo6RmllbGQ6OktpbmQpKSk7CisgICAgbV9tYXBJdGVyYXRvckZpZWxkTWFwQnVja2V0LnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU01hcEl0ZXJhdG9yOjpGaWVs
ZDo6TWFwQnVja2V0KSkpOworICAgIG1fbWFwSXRlcmF0b3JGaWVsZEtpbmQuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpLaW5kKSkp
OworICAgIG1fc2V0SXRlcmF0b3JGaWVsZFNldEJ1Y2tldC5zZXQobV92bSwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNTZXRJdGVyYXRvcjo6RmllbGQ6OlNldEJ1Y2tldCkpKTsKKyAg
ICBtX3NldEl0ZXJhdG9yRmllbGRLaW5kLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU1NldEl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpKTsKICAgICBtX3N0cmluZ0l0ZXJh
dG9yRmllbGRJbmRleC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNT
dHJpbmdJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSkpOwogICAgIG1fc3RyaW5nSXRlcmF0b3JGaWVs
ZEl0ZXJhdGVkU3RyaW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U1N0cmluZ0l0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRTdHJpbmcpKSk7CiAgICAgbV9hc3luY0dl
bmVyYXRvckZpZWxkU3VzcGVuZFJlYXNvbi5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdXNwZW5kUmVhc29uKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5LmgKaW5kZXggOWJmMmM0MGUxN2JkMzQ3MTUzYjZiMzk2ZjYyZWZiNmJlOWI0
OTA5MS4uNjcwZWI4ZWI3YWVhMmVhNDM3ZDE5MGFhYTI4OTYwNzVmYWY1MjcxOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5oCkBAIC00Nyw2ICs0Nyw4IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFu
dCA6IGludDMyX3Q7CiAgICAgbWFjcm8oZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBc
CiAgICAgbWFjcm8oZ2V0QXJyYXlJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhn
ZXRTdHJpbmdJdGVyYXRvckludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhnZXRNYXBJdGVyYXRv
ckludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhnZXRTZXRJdGVyYXRvckludGVybmFsRmllbGQp
IFwKICAgICBtYWNybyhpZFdpdGhQcm9maWxlKSBcCiAgICAgbWFjcm8oaXNPYmplY3QpIFwKICAg
ICBtYWNybyhpc0pTQXJyYXkpIFwKQEAgLTYwLDYgKzYyLDggQEAgZW51bSBjbGFzcyBMaW5rVGlt
ZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhpc1NldCkgXAogICAgIG1hY3JvKGlzU3Ry
aW5nSXRlcmF0b3IpIFwKICAgICBtYWNybyhpc0FycmF5SXRlcmF0b3IpIFwKKyAgICBtYWNybyhp
c01hcEl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXNTZXRJdGVyYXRvcikgXAogICAgIG1hY3JvKGlz
VW5kZWZpbmVkT3JOdWxsKSBcCiAgICAgbWFjcm8odGFpbENhbGxGb3J3YXJkQXJndW1lbnRzKSBc
CiAgICAgbWFjcm8odGhyb3dUeXBlRXJyb3IpIFwKQEAgLTc1LDYgKzc5LDggQEAgZW51bSBjbGFz
cyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhwdXRBc3luY0dlbmVyYXRv
ckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhwdXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVs
ZCkgXAogICAgIG1hY3JvKHB1dFN0cmluZ0l0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1h
Y3JvKHB1dE1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKHB1dFNldEl0ZXJh
dG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKHRvTnVtYmVyKSBcCiAgICAgbWFjcm8odG9T
dHJpbmcpIFwKICAgICBtYWNybyh0b09iamVjdCkgXApAQCAtMTIzLDkgKzEyOSwxMiBAQCBlbnVt
IGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90OwogICAgIG1hY3JvKEdlbmVyYXRvclN0
YXRlQ29tcGxldGVkKSBcCiAgICAgbWFjcm8oR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIFwKICAg
ICBtYWNybyhhcnJheUl0ZXJhdG9yRmllbGRJbmRleCkgXAotICAgIG1hY3JvKGFycmF5SXRlcmF0
b3JGaWVsZElzRG9uZSkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0b3JGaWVsZEl0ZXJhdGVkT2Jq
ZWN0KSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvckZpZWxkS2luZCkgXAorICAgIG1hY3JvKG1h
cEl0ZXJhdG9yRmllbGRNYXBCdWNrZXQpIFwKKyAgICBtYWNybyhtYXBJdGVyYXRvckZpZWxkS2lu
ZCkgXAorICAgIG1hY3JvKHNldEl0ZXJhdG9yRmllbGRTZXRCdWNrZXQpIFwKKyAgICBtYWNybyhz
ZXRJdGVyYXRvckZpZWxkS2luZCkgXAogICAgIG1hY3JvKHN0cmluZ0l0ZXJhdG9yRmllbGRJbmRl
eCkgXAogICAgIG1hY3JvKHN0cmluZ0l0ZXJhdG9yRmllbGRJdGVyYXRlZFN0cmluZykgXAogICAg
IG1hY3JvKGFzeW5jR2VuZXJhdG9yRmllbGRTdXNwZW5kUmVhc29uKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggMjk4OTM3NDBhODVhNTg0OWUzOTcyODg1NjUwMzJhZTc0YmFmZjU1Yi4uZWMwM2Y2OTcyYzdl
ZjgzM2VlZjg5ZjI0NGRhNzA3NDAxMTEyNmVjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtODg5LDYgKzg4
OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNTZXQoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlw
ZShkc3QsIHNyYywgSlNTZXRUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNTdHJp
bmdJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1p
dElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1N0cmluZ0l0ZXJhdG9yVHlwZSk7IH0KICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdElzQXJyYXlJdGVyYXRvcihSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU0FycmF5
SXRlcmF0b3JUeXBlKTsgfQorICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNNYXBJdGVyYXRvcihS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdElzQ2VsbFdpdGhU
eXBlKGRzdCwgc3JjLCBKU01hcEl0ZXJhdG9yVHlwZSk7IH0KKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdElzU2V0SXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0
dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNTZXRJdGVyYXRvclR5cGUpOyB9CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc09iamVjdChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc051bWJlcihSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1VuZGVmaW5l
ZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNjQwYjI0OTc1
NWUxMGVjZGQ5YTgzYjllMTRiMDk3YWIzOWZkMDk0Zi4uYTQ3YjFjM2E3MDJmMjA4YTdkNzM5NWU3
NzAwNmQ3N2U1NmRhZWNlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgIkpT
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0lt
bXV0YWJsZUJ1dHRlcmZseS5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgogI2luY2x1
ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJMZXhlci5oIgpAQCAtMTE1Myw2ICsxMTU1LDI4
IEBAIHN0YXRpYyBKU1N0cmluZ0l0ZXJhdG9yOjpGaWVsZCBzdHJpbmdJdGVyYXRvckludGVybmFs
RmllbGRJbmRleChCeXRlY29kZUludHJpbnNpCiAgICAgcmV0dXJuIEpTU3RyaW5nSXRlcmF0b3I6
OkZpZWxkOjpJbmRleDsKIH0KIAorc3RhdGljIEpTTWFwSXRlcmF0b3I6OkZpZWxkIG1hcEl0ZXJh
dG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZC
eXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX21hcEl0ZXJhdG9yRmllbGRNYXBC
dWNrZXQpCisgICAgICAgIHJldHVybiBKU01hcEl0ZXJhdG9yOjpGaWVsZDo6TWFwQnVja2V0Owor
ICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19tYXBJdGVyYXRvckZpZWxkS2luZCkKKyAgICAgICAgcmV0dXJuIEpT
TWFwSXRlcmF0b3I6OkZpZWxkOjpLaW5kOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpNYXBCdWNrZXQ7Cit9CisKK3N0
YXRpYyBKU1NldEl0ZXJhdG9yOjpGaWVsZCBzZXRJdGVyYXRvckludGVybmFsRmllbGRJbmRleChC
eXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCku
dHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOworICAg
IGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY19zZXRJdGVyYXRvckZpZWxkU2V0QnVja2V0KQorICAgICAgICByZXR1cm4g
SlNTZXRJdGVyYXRvcjo6RmllbGQ6OlNldEJ1Y2tldDsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5l
bWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfc2V0SXRl
cmF0b3JGaWVsZEtpbmQpCisgICAgICAgIHJldHVybiBKU1NldEl0ZXJhdG9yOjpGaWVsZDo6S2lu
ZDsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBKU1NldEl0
ZXJhdG9yOjpGaWVsZDo6U2V0QnVja2V0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJp
bnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFByb21pc2VJbnRlcm5hbEZpZWxkKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExp
c3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTIxOCw2ICsxMjQyLDMyIEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0U3Ry
aW5nSXRlcmF0b3JJbnRlcm5hbEZpZWxkCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0SW50
ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBp
bmRleCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfZ2V0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0g
bV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFT
RV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1
bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtYXBJdGVyYXRvckludGVybmFs
RmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4
cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNNYXBJdGVyYXRvcjo6bnVtYmVyT2ZJbnRlcm5h
bEZpZWxkcyk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpLCBpbmRleCk7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0U2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExp
c3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25l
eHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2lj
Tm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzZXRJ
dGVyYXRvckludGVybmFsRmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05v
ZGUqPihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNTZXRJdGVyYXRvcjo6
bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBpbmRleCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXJndW1lbnQoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50TGlzdE5v
ZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC0xMzY3LDYgKzE0MTcsMzggQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRTdHJpbmdJ
dGVyYXRvckludGVybmFsRmllbGQKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5l
cmF0b3IuZW1pdFB1dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdldCgp
KSk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5z
aWNfcHV0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9h
cmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9y
LmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9B
U1NFUlQobm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNp
Z25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtYXBJdGVyYXRvckludGVybmFsRmll
bGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4cHIp
KSk7CisgICAgQVNTRVJUKGluZGV4IDwgSlNNYXBJdGVyYXRvcjo6bnVtYmVyT2ZJbnRlcm5hbEZp
ZWxkcyk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisKKyAgICBBU1NFUlQoIW5vZGUtPm1f
bmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdFB1
dEludGVybmFsRmllbGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdldCgpKSk7Cit9CisKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0U2V0SXRl
cmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3RO
b2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5v
ZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+
bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzZXRJdGVyYXRvckludGVybmFsRmllbGRJbmRleChzdGF0
aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4cHIpKSk7CisgICAgQVNT
RVJUKGluZGV4IDwgSlNTZXRJdGVyYXRvcjo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CisgICAg
bm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdE5vZGUobm9kZSk7CisKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdFB1dEludGVybmFsRmll
bGQoYmFzZS5nZXQoKSwgaW5kZXgsIHZhbHVlLmdldCgpKSk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdGFpbENhbGxGb3J3YXJkQXJndW1l
bnRzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAg
ICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtMTUxNiw2
ICsxNTk4LDggQEAgQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNNYXAsIElzTWFw
KQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNTZXQsIElzU2V0KQogQ1JFQVRF
X0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNTdHJpbmdJdGVyYXRvciwgSXNTdHJpbmdJdGVy
YXRvcikKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzQXJyYXlJdGVyYXRvciwg
SXNBcnJheUl0ZXJhdG9yKQorQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNNYXBJ
dGVyYXRvciwgSXNNYXBJdGVyYXRvcikKK0NSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNL
KGlzU2V0SXRlcmF0b3IsIElzU2V0SXRlcmF0b3IpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFO
RF9DSEVDSyhpc1VuZGVmaW5lZE9yTnVsbCwgSXNVbmRlZmluZWRPck51bGwpCiAKICN1bmRlZiBD
UkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDk1
M2ZiYWVmNDhmM2E1NTRkNDU5YmQ5YTJiM2Q2ZTYzZGFhN2NhYzcuLmEzMDAyM2JjZmMwNjY1ZjQ5
NjdiNjQxNjU0OGRlZjc1NWExMDY0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTI4NjIsNiAr
Mjg2Miw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBOZXdHZW5lcmF0b3I6
CiAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjogICAgCiAgICAgY2FzZSBOZXdBcnJheUl0ZXJh
dG9yOgorICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CisgICAgY2FzZSBOZXdTZXRJdGVyYXRvcjoK
ICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3SW50ZXJuYWxGaWVs
ZE9iamVjdDoKICAgICAgICAgQVNTRVJUKCEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwpAQCAt
Mjk0Niw2ICsyOTQ4LDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIFBoYW50
b21OZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlCdWZmZXI6CiAg
ICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJ
dGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIFBoYW50
b21OZXdSZWdleHA6CiAgICAgY2FzZSBCb3R0b21WYWx1ZTogewogICAgICAgICBjbGVhckZvck5v
ZGUobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCmluZGV4IDk5NjFkOTAzMmQ2ODBkODUzNDY1OThkZTZhMmI4ZmFjZDczNDI3YmQuLjAx
YTZlYjZiYWVmMjA4NjA4ODA2NTM5NjJlNzAxN2ZmZWE4NmM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01OSw5ICs1OSwxMSBA
QAogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5h
bFByb21pc2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmgiCisj
aW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTUHJv
bWlzZUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUg
Ik51bWJlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJPcGNvZGVJbmxpbmVzLmgiCkBAIC0zMTc3LDYgKzMxNzksODYgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIFZpcnR1YWxSZWdp
c3RlciByZXN1bHQsIEkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBKU01hcEVudHJpZXNJbnRyaW5zaWM6CisgICAgICAgIGNhc2UgSlNNYXBLZXlz
SW50cmluc2ljOgorICAgICAgICBjYXNlIEpTTWFwVmFsdWVzSW50cmluc2ljOiB7CisgICAgICAg
ICAgICBpbnNlcnRDaGVja3MoKTsKKworICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpIHx8IG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZFR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
SXRlcmF0aW9uS2luZCBraW5kOworICAgICAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAg
ICAgICAgICAgIGNhc2UgSlNNYXBWYWx1ZXNJbnRyaW5zaWM6CisgICAgICAgICAgICAgICAga2lu
ZCA9IEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgSlNNYXBLZXlzSW50cmluc2ljOgorICAgICAgICAgICAgICAgIGtpbmQgPSBJ
dGVyYXRpb25LaW5kOjpLZXlzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBKU01hcEVudHJpZXNJbnRyaW5zaWM6CisgICAgICAgICAgICAgICAga2luZCA9IEl0ZXJh
dGlvbktpbmQ6OkVudHJpZXM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDAsIHJl
Z2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrLCBFZGdlKGJhc2Us
IE1hcE9iamVjdFVzZSkpOworICAgICAgICAgICAgTm9kZSogbWFwQnVja2V0ID0gYWRkVG9HcmFw
aChHZXRNYXBCdWNrZXRIZWFkLCBFZGdlKGJhc2UsIE1hcE9iamVjdFVzZSkpOworCisgICAgICAg
ICAgICAvLyBBZGQgdGhlIGNvbnN0YW50IGJlZm9yZSBleGl0IGJlY29tZXMgaW52YWxpZCBiZWNh
dXNlIHdlIG1heSB3YW50IHRvIGluc2VydCAocmVkdW5kYW50KSBjaGVja3Mgb24gaXQgaW4gRml4
dXAuCisgICAgICAgICAgICBOb2RlKiBraW5kTm9kZSA9IGpzQ29uc3RhbnQoanNOdW1iZXIoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGtpbmQpKSk7CisKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjdXJyZW50Tm9kZU9yaWdp
bigpLnNlbWFudGljKTsKKyAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gYWRkVG9HcmFwaChO
ZXdNYXBJdGVyYXRvciwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpKSkpOworCisgICAgICAgICAgICBhZGRUb0dyYXBo
KFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNNYXBJdGVy
YXRvcjo6RmllbGQ6Ok1hcEJ1Y2tldCkpLCBpdGVyYXRvciwgbWFwQnVja2V0KTsKKyAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihKU01hcEl0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRPYmplY3QpKSwgaXRlcmF0b3IsIGJh
c2UpOworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpLaW5kKSksIGl0ZXJhdG9y
LCBraW5kTm9kZSk7CisKKyAgICAgICAgICAgIHNldFJlc3VsdChpdGVyYXRvcik7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgSlNTZXRFbnRyaWVz
SW50cmluc2ljOgorICAgICAgICBjYXNlIEpTU2V0VmFsdWVzSW50cmluc2ljOiB7CisgICAgICAg
ICAgICBpbnNlcnRDaGVja3MoKTsKKworICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpIHx8IG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZFR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
SXRlcmF0aW9uS2luZCBraW5kOworICAgICAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAg
ICAgICAgICAgIGNhc2UgSlNTZXRWYWx1ZXNJbnRyaW5zaWM6CisgICAgICAgICAgICAgICAga2lu
ZCA9IEl0ZXJhdGlvbktpbmQ6OlZhbHVlczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgSlNTZXRFbnRyaWVzSW50cmluc2ljOgorICAgICAgICAgICAgICAgIGtpbmQg
PSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBOb2RlKiBiYXNlID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhp
cygwLCByZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVjaywgRWRn
ZShiYXNlLCBTZXRPYmplY3RVc2UpKTsKKyAgICAgICAgICAgIE5vZGUqIHNldEJ1Y2tldCA9IGFk
ZFRvR3JhcGgoR2V0TWFwQnVja2V0SGVhZCwgRWRnZShiYXNlLCBTZXRPYmplY3RVc2UpKTsKKwor
ICAgICAgICAgICAgLy8gQWRkIHRoZSBjb25zdGFudCBiZWZvcmUgZXhpdCBiZWNvbWVzIGludmFs
aWQgYmVjYXVzZSB3ZSBtYXkgd2FudCB0byBpbnNlcnQgKHJlZHVuZGFudCkgY2hlY2tzIG9uIGl0
IGluIEZpeHVwLgorICAgICAgICAgICAgTm9kZSoga2luZE5vZGUgPSBqc0NvbnN0YW50KGpzTnVt
YmVyKHN0YXRpY19jYXN0PHVpbnQzMl90PihraW5kKSkpOworCisgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY3VycmVudE5v
ZGVPcmlnaW4oKS5zZW1hbnRpYyk7CisgICAgICAgICAgICBOb2RlKiBpdGVyYXRvciA9IGFkZFRv
R3JhcGgoTmV3U2V0SXRlcmF0b3IsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSkpKTsKKworICAgICAgICAgICAgYWRk
VG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpT
U2V0SXRlcmF0b3I6OkZpZWxkOjpTZXRCdWNrZXQpKSwgaXRlcmF0b3IsIHNldEJ1Y2tldCk7Cisg
ICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oSlNTZXRJdGVyYXRvcjo6RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KSksIGl0ZXJh
dG9yLCBiYXNlKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJ
bmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU1NldEl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpLCBp
dGVyYXRvciwga2luZE5vZGUpOworCisgICAgICAgICAgICBzZXRSZXN1bHQoaXRlcmF0b3IpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIEpTU2V0
QnVja2V0SGVhZEludHJpbnNpYzoKICAgICAgICAgY2FzZSBKU01hcEJ1Y2tldEhlYWRJbnRyaW5z
aWM6IHsKICAgICAgICAgICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9PSAy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZDE5NTIy
ZmVkNWU4ZTVmYWZjNWQ5NTNlYzgzMjBlZTdkNjdmNTIzYy4uOTMwNGMyMDJjODY4NDhlMTMxMGZh
ODI2MjAzYWE5N2EwZTBhOTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKQEAgLTE1OTQsNiArMTU5NCw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICBj
YXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjoKKyAgICBjYXNl
IE5ld1NldEl0ZXJhdG9yOgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3U3ltYm9s
OgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpAQCAtMTYwNCw2ICsxNjA2LDggQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJl
YWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAg
IGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9t
TmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKKyAgICBj
YXNlIFBoYW50b21OZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3SW50ZXJu
YWxGaWVsZE9iamVjdDoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNh
c2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCBlZTk4ZmFjMjMwNTM0OTkz
MDU5NDhhN2M0MDJkZjM4ZDJiZjA2ZGViLi4yMTYzMWVjZjlmMDNiYmFlNjU0MjJhODg4Njk0OGJm
ODg4ZjE4YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcApAQCAtNjEsNiArNjEsOCBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBj
YXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBj
YXNlIE5ld01hcEl0ZXJhdG9yOgorICAgIGNhc2UgTmV3U2V0SXRlcmF0b3I6CiAgICAgY2FzZSBO
ZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6
CkBAIC03MSw2ICs3Myw4IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAg
ICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBcnJh
eUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOgorICAgIGNhc2UgUGhh
bnRvbU5ld1NldEl0ZXJhdG9yOgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdJbnRlcm5hbEZpZWxk
T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBNYXRl
cmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDY1MDUzY2ViNWUwODdhMGNk
NGEzMTQ4MGFmZGU4ZDY1MTgxZWQxNDMuLjY3N2M0MDhlOTgwZGI5NDgwOThhY2ZmOGU3NzEzZDUy
Y2YzYzkxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xMTAxLDYgKzExMDEsOCBAQCBjbGFzcyBDb25zdGFu
dEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNlIFBoYW50b21O
ZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5
bmNGdW5jdGlvbjoKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6Cisg
ICAgICAgICAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKKyAgICAgICAgICAgIGNhc2Ug
UGhhbnRvbU5ld1NldEl0ZXJhdG9yOgogICAgICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAg
ICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAppbmRleCA1NWQzYzhmZDVkY2Y4ZmEyZWZiYTM3Zjk2ZGM5MDk5ZDQ5
NzI1MTgxLi5mY2Y0OWY1MzI3MmUzODFjN2NmZDU1MmM0YjVmNmU2NmY2YjFmOGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yMTEsNiArMjExLDggQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbU5ld0Fz
eW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoK
ICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01h
cEl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld1NldEl0ZXJhdG9yOgogICAgIGNhc2UgUGhh
bnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgog
ICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CkBAIC0zNTcsNiArMzU5LDggQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgY2Fz
ZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNh
c2UgTmV3TWFwSXRlcmF0b3I6CisgICAgY2FzZSBOZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIFNw
cmVhZDoKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZl
cjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDc5
YTljNGZhYjUwZTZjNjY1NWE0NmQ0YzlhMWY5OGJlZjNjNzhmMzcuLjMxNzRmZjNjZDFkOWU1Njg3
ODNhZGQ5ZDg5NGQ1YWUxMGQxZGJkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcApAQCAtMTk0MCw2ICsxOTQwLDggQEAgY2xhc3MgRml4dXBQaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgICAgIGNh
c2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld01hcEl0
ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50b21OZXdTZXRJdGVyYXRvcjoKICAgICAgICAgY2Fz
ZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJn
dW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgpAQCAtMjUzMiw2ICsyNTM0
LDggQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNl
IE5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CisgICAgICAg
IGNhc2UgTmV3U2V0SXRlcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgogICAgICAgICBj
YXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAgICAgIGNhc2UgSXNFbXB0eToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4MTBlMTAxNTUzYjE5YWY1MTM0
NDJjMDNlYmVlYzA0ODBmMmIuLjUyNTU2OGRjZWEwZTYzNjM2MDQ4MDljMjhkYjljMGI1N2I4MDJk
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtNzIsNiAr
NzIsOCBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIFN0
YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgUGhhbnRvbU5ld09i
amVjdDoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRv
bU5ld01hcEl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld1NldEl0ZXJhdG9yOgogICAgIGNh
c2UgUHV0U3RhY2s6CiAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgY2FzZSBHZXRTdGFjazoKQEAg
LTEzMCw2ICsxMzIsOCBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIFN0YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAg
Y2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgTmV3
TWFwSXRlcmF0b3I6CisgICAgY2FzZSBOZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIE5ld1JlZ2V4
cDoKICAgICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2UgVG9OdW1lcmljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAppbmRleCBiYzdjZmIxMmQwYThlMmQzMmUyNzI5N2Y3NDhhNjU1ZTM1
MTcyNjc2Li43NDIyNmM4NTYzMTRlYTdjOGVhYWQ5YjAxOTQwNzk1MGNiZGY1NzIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNjYwLDYgKzY2MCwyOCBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgpOwogICAgIH0KIAorICAgIHZv
aWQgY29udmVydFRvUGhhbnRvbU5ld01hcEl0ZXJhdG9yKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX29wID09IE5ld01hcEl0ZXJhdG9yKTsKKyAgICAgICAgbV9vcCA9IFBoYW50b21OZXdNYXBJ
dGVyYXRvcjsKKyAgICAgICAgbV9mbGFncyAmPSB+Tm9kZUhhc1ZhckFyZ3M7CisgICAgICAgIG1f
ZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKKyAgICAgICAgbV9vcEluZm8gPSBPcEluZm9XcmFw
cGVyKCk7CisgICAgICAgIG1fb3BJbmZvMiA9IE9wSW5mb1dyYXBwZXIoKTsKKyAgICAgICAgY2hp
bGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CisgICAgfQorCisgICAgdm9pZCBjb252ZXJ0VG9QaGFu
dG9tTmV3U2V0SXRlcmF0b3IoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gTmV3U2V0
SXRlcmF0b3IpOworICAgICAgICBtX29wID0gUGhhbnRvbU5ld1NldEl0ZXJhdG9yOworICAgICAg
ICBtX2ZsYWdzICY9IH5Ob2RlSGFzVmFyQXJnczsKKyAgICAgICAgbV9mbGFncyB8PSBOb2RlTXVz
dEdlbmVyYXRlOworICAgICAgICBtX29wSW5mbyA9IE9wSW5mb1dyYXBwZXIoKTsKKyAgICAgICAg
bV9vcEluZm8yID0gT3BJbmZvV3JhcHBlcigpOworICAgICAgICBjaGlsZHJlbiA9IEFkamFjZW5j
eUxpc3QoKTsKKyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRUb1BoYW50b21OZXdBc3luY0Z1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX29wID09IE5ld0FzeW5jRnVuY3Rpb24pOwpA
QCAtMTk3Nyw2ICsxOTk5LDggQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIE5ld0dlbmVy
YXRvcjoKICAgICAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICAgICAgY2FzZSBOZXdB
cnJheUl0ZXJhdG9yOgorICAgICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgorICAgICAgICBjYXNl
IE5ld1NldEl0ZXJhdG9yOgogICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpAQCAtMjE0Myw2ICsyMTY3LDggQEAg
c3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICBjYXNl
IFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVy
YXRvcjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3U2V0SXRlcmF0b3I6CiAgICAgICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCmluZGV4IDNmZWY2YjM4MTg1M2RkNWU3MmM5OGE0ZjI4YjkwYmFmZjZjNmJlNGEuLjNh
NDE1ZTRhNjM2MTRhNmJhZmMxYmQ4ZTAzYWE5ZGEyYzg5ZTA1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM1OSw2ICszNTksOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTmV3QXJyYXlXaXRoU2l6ZSwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld0FycmF5QnVmZmVyLCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdBcnJheUl0ZXJhdG9yLCBOb2RlUmVzdWx0SlMpIFwK
KyAgICBtYWNybyhOZXdNYXBJdGVyYXRvciwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3
U2V0SXRlcmF0b3IsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1R5cGVkQXJyYXksIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOZXdSZWdleHAsIE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1N5bWJvbCwgTm9kZVJlc3VsdEpTKSBcCkBAIC0z
NzgsNiArMzgwLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3Jv
KFBoYW50b21OZXdBc3luY0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTmV3QXJyYXlJdGVy
YXRvciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFBoYW50
b21OZXdNYXBJdGVyYXRvciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKFBoYW50b21OZXdTZXRJdGVyYXRvciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKE1hdGVyaWFsaXplTmV3SW50ZXJuYWxGaWVsZE9iamVjdCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQaGFudG9tQ3JlYXRlQWN0
aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE1h
dGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3Mp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVj
dEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4IDA1YWNkZjIzODc2OTczZjg4ZTgyYjlh
NzNiMzQ5ZWU3NzliNWI5ODQuLjcxMDY3ODExYTI0OTM2ZmFhYWZlZDRjY2UyNjdlZDIxN2RmZDE4
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1
ZGUgIkRGR1ZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJK
U1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpc3QuaD4KIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewpAQCAtOTY2LDYgKzk2OCwxNiBAQCBjbGFzcyBPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjogeworICAgICAgICAgICAg
dGFyZ2V0ID0gaGFuZGxlSW50ZXJuYWxGaWVsZENsYXNzPEpTTWFwSXRlcmF0b3I+KG5vZGUsIHdy
aXRlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgTmV3
U2V0SXRlcmF0b3I6IHsKKyAgICAgICAgICAgIHRhcmdldCA9IGhhbmRsZUludGVybmFsRmllbGRD
bGFzczxKU1NldEl0ZXJhdG9yPihub2RlLCB3cml0ZXMpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIE5ld1JlZ2V4cDogewogICAgICAgICAgICAgdGFyZ2V0
ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OlJlZ0V4cE9i
amVjdCk7CiAKQEAgLTIwODgsNiArMjEwMCwxNCBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb1BoYW50b21OZXdBcnJheUl0ZXJhdG9yKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKIAorICAgICAgICAgICAgICAgICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgor
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbU5ld01hcEl0ZXJh
dG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
ICAgICBjYXNlIE5ld1NldEl0ZXJhdG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvUGhhbnRvbU5ld1NldEl0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKwogICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZh
dGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAwOGNlNTQzNWQzZjcxOTA2M2NmYzA5
ZmZhNzdkY2Y2MTFmZjhmOTk4Li44YzBhZTk1NGJkYzIyY2ViOGNjMjViNzBjYmYxNWE4YmM4YjZk
NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAg
LTIxMTMsNiArMjExMywyNCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
YXlJdGVyYXRvcihWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgIHJldHVybiBK
U0FycmF5SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKHZtLCBzdHJ1Y3R1cmUpOwog
fQogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IoVk0qIHZt
UG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0gKnZtUG9pbnRl
cjsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Cisg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOworCisgICAgcmV0dXJuIEpTTWFwSXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVz
KHZtLCBzdHJ1Y3R1cmUpOworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
U2V0SXRlcmF0b3IoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAg
Vk0mIHZtID0gKnZtUG9pbnRlcjsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgcmV0dXJuIEpTU2V0SXRlcmF0b3I6OmNyZWF0
ZVdpdGhJbml0aWFsVmFsdWVzKHZtLCBzdHJ1Y3R1cmUpOworfQorCiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChWTSogdm1Qb2ludGVyLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5j
b2RlZEpTVmFsdWUgaW5pdGlhbFZhbHVlRW5jb2RlZCkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2lu
dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAwYzg3
M2RiZTVmZWViOGViZGQwMjM2OWMxOWYxNDczZTI1NjY1MTcyLi5hOGE0Y2JkMjBlNjdkZmY2NDA2
Y2VkZWExZjFlNGEwN2U3N2NkOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaApAQCAtMTI2LDYgKzEyNiw4IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiwgU3RyCiBj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopIFdURl9JTlRFUk5BTDsKIGNo
YXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yKFZNKiwg
U3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld01hcEl0ZXJhdG9yKFZNKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1NldEl0ZXJhdG9yKFZNKiwgU3RydWN0dXJlKikgV1RG
X0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3Qo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFM
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyODg4NThiMzhjMTZhNjVhOGM4ZWJkYjlkNDM3
MDEyODM0NzJhNTBhLi5jNGRlYmYyNzAzMjM4MzE1NTViYzRhYTQ3ZTg4ZTE4YTNmNWMwMDg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTA2MSw2ICsxMDYxLDggQEAgY2xhc3MgUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIENyZWF0
ZUFzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgICAg
ICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6Cisg
ICAgICAgIGNhc2UgTmV3U2V0SXRlcmF0b3I6CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNw
ZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTI4
NSw2ICsxMjg3LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld0FycmF5QnVmZmVyOgogICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJh
eUl0ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKKyAgICAgICAg
Y2FzZSBQaGFudG9tTmV3U2V0SXRlcmF0b3I6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFy
Z3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgICAgICBjYXNlIEdl
dE15QXJndW1lbnRCeVZhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKaW5kZXggYmFkZmUxYjJkMTQyOWIyZTA1NjRlNjAxYTBjN2ZjOTY2NGI1NWVhYy4u
Y2Y1ZDEwNjA2NmUyYmQxNThkMmU3NGZiNGQ5YWE3ZDk3NzU1NTY4NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTU0OSw2ICs1NDksOCBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2Fz
ZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNh
c2UgTmV3TWFwSXRlcmF0b3I6CisgICAgY2FzZSBOZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIFNw
cmVhZDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKQEAgLTYxOSw2
ICs2MjEsOCBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgUGhhbnRvbU5ld0Fz
eW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoK
ICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld01h
cEl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld1NldEl0ZXJhdG9yOgogICAgIGNhc2UgUGhh
bnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgIGNh
c2UgUHV0SGludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggY2FhNGJhYjQxMGU2ZDUzNGUwNmE1OTU3NjE5ZDM5YzljODdlYzA5ZC4u
OTQ2N2UyNjJkMWViNDc4YzM3MTBmZTRlYTM1YmQ5YzBhNDZmMjQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTU4LDcgKzU4LDkg
QEAKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFi
bGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1
ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCIKKyNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgog
I2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgpA
QCAtMTMwMTQsNiArMTMwMTYsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Fy
cmF5SXRlcmF0b3IoTm9kZSogbm9kZSkKICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVj
dDxKU0FycmF5SXRlcmF0b3I+KG5vZGUsIG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IpOwogfQog
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3TWFwSXRlcmF0b3IoTm9kZSogbm9kZSkK
K3sKKyAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxKU01hcEl0ZXJhdG9yPihub2Rl
LCBvcGVyYXRpb25OZXdNYXBJdGVyYXRvcik7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdTZXRJdGVyYXRvcihOb2RlKiBub2RlKQoreworICAgIGNvbXBpbGVOZXdJbnRlcm5h
bEZpZWxkT2JqZWN0PEpTU2V0SXRlcmF0b3I+KG5vZGUsIG9wZXJhdGlvbk5ld1NldEl0ZXJhdG9y
KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5v
ZGUpCiB7CiAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBlM2Y2
N2UxNTkyYzhlZjljNzBiYmQwNjI3MmVkMzc2YTNiOWNkMzJhLi45MmM5Y2ZlY2FkZmU2YzQ5YTA1
MDZkMGQ0NzkyZmU5MzIxMTI2Y2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDYzLDYgKzE0NjMsOCBAQCBjbGFzcyBTcGVjdWxhdGl2
ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVOZXdBc3luY0dlbmVyYXRvcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTmV3QXJyYXlJ
dGVyYXRvcihOb2RlKik7CisgICAgdm9pZCBjb21waWxlTmV3TWFwSXRlcmF0b3IoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZU5ld1NldEl0ZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVU
b1ByaW1pdGl2ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVG9Qcm9wZXJ0eUtleShOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlVG9OdW1lcmljKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDEyOTBkMTc5
NzAzZTg2NzAyNmYzMDJiYzgwZTcyYTAyNWY2OGJkMjQuLjVlYzlhOWEyZDE1ZWYwYTczYjAyMWRi
ZGRiODk5OGE0YmNiMTEzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzI2NSw2ICszMjY1LDE2IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCisgICAgY2FzZSBOZXdNYXBJdGVyYXRvcjogeworICAgICAgICBjb21waWxlTmV3TWFwSXRl
cmF0b3Iobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgTmV3U2V0SXRl
cmF0b3I6IHsKKyAgICAgICAgY29tcGlsZU5ld1NldEl0ZXJhdG9yKG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldENhbGxlZTogewogICAgICAgICBjb21waWxlR2V0
Q2FsbGVlKG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQyMTcsNiArNDIyNyw4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdB
c3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246
CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdN
YXBJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIFBo
YW50b21OZXdSZWdleHA6CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmVJbW1lZGlhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAppbmRleCBjNTdhNTRmNWFkZGQ0NTRiYzQ0NjkyZTViNGU1ODdiZjA0YTlm
MWQ5Li42YmZlMTEzZGEyMWEzMmZjZTQ4NTgzYjQ5MDhiNTZkNjNmZmZlY2QwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM1
OTQsNiArMzU5NCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6IHsKKyAg
ICAgICAgY29tcGlsZU5ld01hcEl0ZXJhdG9yKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBjYXNlIE5ld1NldEl0ZXJhdG9yOiB7CisgICAgICAgIGNvbXBpbGVOZXdTZXRJdGVy
YXRvcihub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRDYWxsZWU6
IHsKICAgICAgICAgY29tcGlsZUdldENhbGxlZShub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01
Mjc4LDYgKzUyODgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdB
c3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6
CisgICAgY2FzZSBQaGFudG9tTmV3TWFwSXRlcmF0b3I6CisgICAgY2FzZSBQaGFudG9tTmV3U2V0
SXRlcmF0b3I6CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBo
YW50b21OZXdSZWdleHA6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCmluZGV4IDkzM2QzYTRkNmFhOTc0ZTBiOTIwZTU3OWIwNjFhNzAyMTZmOTNlNzUu
LmMyYjg3MmYwNzZmMDZmZDNmYzI5Zjc2YzI4NDAzNDNhYmM4ZGIyZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UuY3BwCkBAIC0zMzgsNiArMzM4LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXpl
OgogICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgICAgIGNhc2UgTmV3
QXJyYXlJdGVyYXRvcjoKKyAgICAgICAgICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CisgICAgICAg
ICAgICBjYXNlIE5ld1NldEl0ZXJhdG9yOgogICAgICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5
OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgICAgICBjYXNlIE5ld1N0cmlu
Z09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCA1YzY5ZDFkMzhjMWM2MTA1OTlmZDMwMjk5NzM0MzYwY2IyMjdhY2IyLi43MWY0NjJl
NDRjZjc1ZjdlMWE5M2YxZTQxNTY1OTRiNmVlMTE3OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC04Miw2ICs4Miw4IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXk6
CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9y
OgorICAgIGNhc2UgTmV3TWFwSXRlcmF0b3I6CisgICAgY2FzZSBOZXdTZXRJdGVyYXRvcjoKICAg
ICBjYXNlIFNwcmVhZDoKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3VHlw
ZWRBcnJheToKQEAgLTI5Miw2ICsyOTQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0
aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9t
TmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdNYXBJdGVyYXRvcjoKKyAgICBj
YXNlIFBoYW50b21OZXdTZXRJdGVyYXRvcjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0
aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAgICBjYXNlIFB1dEhpbnQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNzczYTAw
NmUwODc0MDk3NGYwMzNlNmMyZDgyZGVhYzhiMmZkYzU0Ny4uN2RmNWVlNzkxYjZhZDFmYzI0MWRk
ZWVmMDYwZDk0YjAzYmYzMDAwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcApAQCAtODYsNiArODYsOCBAQAogI2luY2x1ZGUgIkpTSW1tdXRhYmxl
QnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRl
ICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1NldEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvYmVD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCkBAIC0xMDc1LDYgKzEwNzcsMTIg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgog
ICAgICAgICAgICAgY29tcGlsZU5ld0FycmF5SXRlcmF0b3IoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIE5ld01hcEl0ZXJhdG9yOgorICAgICAgICAgICAgY29tcGlsZU5ld01h
cEl0ZXJhdG9yKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOZXdTZXRJdGVy
YXRvcjoKKyAgICAgICAgICAgIGNvbXBpbGVOZXdTZXRJdGVyYXRvcigpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgICAgICAgICAgY29tcGls
ZU5ld1N0cmluZ09iamVjdCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTk0LDYgKzE2MDIs
OCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dl
bmVyYXRvckZ1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgog
ICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50
b21OZXdNYXBJdGVyYXRvcjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3U2V0SXRlcmF0b3I6CiAg
ICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNhc2UgUGhhbnRv
bURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKQEAgLTYz
OTAsNiArNjQwMCwxNiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjb21waWxlTmV3
SW50ZXJuYWxGaWVsZE9iamVjdDxKU0FycmF5SXRlcmF0b3I+KG9wZXJhdGlvbk5ld0FycmF5SXRl
cmF0b3IpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZU5ld01hcEl0ZXJhdG9yKCkKKyAgICB7
CisgICAgICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0PEpTTWFwSXRlcmF0b3I+KG9w
ZXJhdGlvbk5ld01hcEl0ZXJhdG9yKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVOZXdTZXRJ
dGVyYXRvcigpCisgICAgeworICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxK
U1NldEl0ZXJhdG9yPihvcGVyYXRpb25OZXdTZXRJdGVyYXRvcik7CisgICAgfQorCiAgICAgdm9p
ZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KCkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9ub2RlLT5zdHJ1Y3R1cmUoKTsKQEAgLTEyMzEwLDYgKzEyMzMw
LDEyIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgSlNBcnJheUl0ZXJhdG9y
VHlwZToKICAgICAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsPEpTQXJyYXlJdGVyYXRvcj4ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvcik7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBKU01hcEl0ZXJhdG9yVHlwZToKKyAgICAgICAg
ICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld0ludGVybmFsRmllbGRPYmplY3RJbXBsPEpTTWFwSXRl
cmF0b3I+KG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEpTU2V0SXRlcmF0b3JUeXBlOgorICAgICAgICAgICAgY29tcGlsZU1hdGVyaWFs
aXplTmV3SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8SlNTZXRJdGVyYXRvcj4ob3BlcmF0aW9uTmV3
U2V0SXRlcmF0b3IpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHN0cnVjdHVyZSIpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRl
eCA4ZWYyMzlkNmZjYTVjMDA5Y2Q3NTY1YWZjZTdhZDc2NDMyODc2Mzc4Li5jZGNjODgyMmFlYjFm
NGRkN2I5NDNiMzUzYTU5YjczNDNlMmY2YzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3BlcmF0aW9ucy5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAKICNpbmNsdWRlICJKU0dlbmVy
YXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNs
dWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIK
KyNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAK
IElHTk9SRV9XQVJOSU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCkBAIC0xMzEsNiArMTMzLDMy
IEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblBvcHVsYXRlT2JqZWN0
SW5PU1IoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAg
IGNhc2UgUGhhbnRvbU5ld01hcEl0ZXJhdG9yOiB7CisgICAgICAgIEpTTWFwSXRlcmF0b3IqIG1h
cEl0ZXJhdG9yID0ganNDYXN0PEpTTWFwSXRlcmF0b3IqPihKU1ZhbHVlOjpkZWNvZGUoKmVuY29k
ZWRWYWx1ZSkpOworCisgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0byBwb3B1bGF0ZSB0aGUg
aXRlcmF0b3Igd2l0aAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9w
ZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwor
ICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkua2luZCgpICE9IEludGVybmFsRmll
bGRPYmplY3RQTG9jKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgbWFw
SXRlcmF0b3ItPmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8SlNNYXBJdGVyYXRvcjo6RmllbGQ+
KHByb3BlcnR5LmxvY2F0aW9uKCkuaW5mbygpKSkuc2V0KHZtLCBtYXBJdGVyYXRvciwgSlNWYWx1
ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGNhc2UgUGhhbnRvbU5ld1NldEl0ZXJhdG9yOiB7CisgICAgICAgIEpTU2V0SXRlcmF0
b3IqIHNldEl0ZXJhdG9yID0ganNDYXN0PEpTU2V0SXRlcmF0b3IqPihKU1ZhbHVlOjpkZWNvZGUo
KmVuY29kZWRWYWx1ZSkpOworCisgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0byBwb3B1bGF0
ZSB0aGUgaXRlcmF0b3Igd2l0aAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6
YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4
aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygp
W2ldOworICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkua2luZCgpICE9IEludGVy
bmFsRmllbGRPYmplY3RQTG9jKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgc2V0SXRlcmF0b3ItPmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8SlNTZXRJdGVyYXRvcjo6
RmllbGQ+KHByb3BlcnR5LmxvY2F0aW9uKCkuaW5mbygpKSkuc2V0KHZtLCBzZXRJdGVyYXRvciwg
SlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDogewogICAgICAgICBSZWdFeHBPYmpl
Y3QqIHJlZ0V4cE9iamVjdCA9IGpzQ2FzdDxSZWdFeHBPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUo
KmVuY29kZWRWYWx1ZSkpOwogCkBAIC0zMTUsNiArMzQzLDUwIEBAIGV4dGVybiAiQyIgSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoSlNHbG9iYWxP
YmplY3QqCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgY2FzZSBQaGFudG9t
TmV3TWFwSXRlcmF0b3I6IHsKKyAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHN0cnVjdHVyZS4K
KyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsK
KyAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFs
aXphdGlvbi0+cHJvcGVydGllcygpW2ldOworICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0
aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoU3RydWN0dXJlUExvYykpIHsKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKS5h
c0NlbGwoKS0+aW5oZXJpdHM8U3RydWN0dXJlPih2bSkpOworICAgICAgICAgICAgICAgIHN0cnVj
dHVyZSA9IGpzQ2FzdDxTdHJ1Y3R1cmUqPihKU1ZhbHVlOjpkZWNvZGUodmFsdWVzW2ldKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJl
KTsKKworICAgICAgICBKU01hcEl0ZXJhdG9yKiByZXN1bHQgPSBKU01hcEl0ZXJhdG9yOjpjcmVh
dGVXaXRoSW5pdGlhbFZhbHVlcyh2bSwgc3RydWN0dXJlKTsKKworICAgICAgICBSRUxFQVNFX0FT
U0VSVChtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCkgLSAxID09IEpTTWFwSXRl
cmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworCisgICAgICAgIC8vIFRoZSByZWFsIHZh
bHVlcyB3aWxsIGJlIHB1dCBzdWJzZXF1ZW50bHkgYnkKKyAgICAgICAgLy8gb3BlcmF0aW9uUG9w
dWxhdGVOZXdPYmplY3RJbk9TUi4gU2VlIHRoZSBQaGFudG9tTmV3T2JqZWN0CisgICAgICAgIC8v
IGNhc2UgZm9yIGRldGFpbHMuCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
Y2FzZSBQaGFudG9tTmV3U2V0SXRlcmF0b3I6IHsKKyAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0
IHN0cnVjdHVyZS4KKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXpl
KCk7IGktLTspIHsKKyAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZhbHVlJiBwcm9wZXJ0
eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOworICAgICAgICAgICAgaWYgKHBy
b3BlcnR5LmxvY2F0aW9uKCkgPT0gUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoU3RydWN0dXJl
UExvYykpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChKU1ZhbHVlOjpkZWNvZGUo
dmFsdWVzW2ldKS5hc0NlbGwoKS0+aW5oZXJpdHM8U3RydWN0dXJlPih2bSkpOworICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZSA9IGpzQ2FzdDxTdHJ1Y3R1cmUqPihKU1ZhbHVlOjpkZWNvZGUodmFs
dWVzW2ldKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc3RydWN0dXJlKTsKKworICAgICAgICBKU1NldEl0ZXJhdG9yKiByZXN1bHQgPSBKU1NldEl0
ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyh2bSwgc3RydWN0dXJlKTsKKworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCkgLSAx
ID09IEpTU2V0SXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworCisgICAgICAgIC8v
IFRoZSByZWFsIHZhbHVlcyB3aWxsIGJlIHB1dCBzdWJzZXF1ZW50bHkgYnkKKyAgICAgICAgLy8g
b3BlcmF0aW9uUG9wdWxhdGVOZXdPYmplY3RJbk9TUi4gU2VlIHRoZSBQaGFudG9tTmV3T2JqZWN0
CisgICAgICAgIC8vIGNhc2UgZm9yIGRldGFpbHMuCisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21EaXJl
Y3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzOiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuY3BwCmluZGV4IDA4MGZhZWRlODFhMjI2ODIyMWQxYzUwODk0MWQ5ZWYyNzEyNzlhMjAuLjI3
ZDA0YWQxNDViN2RkNjQxZTU2NTU2Mjg2MmM3Yzg1MTA3OGQ0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
CkBAIC01MSw5ICs1MSwxMSBAQAogI2luY2x1ZGUgIkpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRl
ICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQ
cm9taXNlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1NldEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVHlw
ZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIKQEAgLTM5Nyw5ICszOTksOSBAQCBK
U1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldFByaXZhdGVOYW1lKCkpKSB7Ci0gICAg
ICAgICAgICBKU1ZhbHVlIGl0ZXJhdGVkVmFsdWUgPSBpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZE9iamVjdFByaXZh
dGVOYW1lKCkpOwotICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kID0gc3RhdGljX2Nhc3Q8
SXRlcmF0aW9uS2luZD4oaXRlcmF0b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwSXRlcmF0b3JLaW5kUHJpdmF0ZU5hbWUoKSkuYXNJbnQz
MigpKTsKKyAgICAgICAgaWYgKGF1dG8qIG1hcEl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU01h
cEl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yT2JqZWN0KSkgeworICAgICAgICAgICAgSlNWYWx1ZSBp
dGVyYXRlZFZhbHVlID0gbWFwSXRlcmF0b3ItPml0ZXJhdGVkT2JqZWN0KCk7CisgICAgICAgICAg
ICBJdGVyYXRpb25LaW5kIGtpbmQgPSBtYXBJdGVyYXRvci0+a2luZCgpOwogCiAgICAgICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0
cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCAyKTsKQEAgLTQxMSw5ICs0MTMs
OSBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICAgICAgcmV0dXJuIGFycmF5Owog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tldFByaXZhdGVOYW1lKCkpKSB7
Ci0gICAgICAgICAgICBKU1ZhbHVlIGl0ZXJhdGVkVmFsdWUgPSBpdGVyYXRvck9iamVjdC0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZE9iamVj
dFByaXZhdGVOYW1lKCkpOwotICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kID0gc3RhdGlj
X2Nhc3Q8SXRlcmF0aW9uS2luZD4oaXRlcmF0b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0SXRlcmF0b3JLaW5kUHJpdmF0ZU5hbWUoKSku
YXNJbnQzMigpKTsKKyAgICAgICAgaWYgKGF1dG8qIHNldEl0ZXJhdG9yID0ganNEeW5hbWljQ2Fz
dDxKU1NldEl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yT2JqZWN0KSkgeworICAgICAgICAgICAgSlNW
YWx1ZSBpdGVyYXRlZFZhbHVlID0gc2V0SXRlcmF0b3ItPml0ZXJhdGVkT2JqZWN0KCk7CisgICAg
ICAgICAgICBJdGVyYXRpb25LaW5kIGtpbmQgPSBzZXRJdGVyYXRvci0+a2luZCgpOwogCiAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCAyKTsKQEAgLTU0OSwy
MyArNTUxLDE3IEBAIHN0YXRpYyBKU09iamVjdCogY2xvbmVBcnJheUl0ZXJhdG9yT2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwKICAgICByZXR1cm4gY2xvbmU7CiB9
CiAKLXN0YXRpYyBKU09iamVjdCogY2xvbmVNYXBJdGVyYXRvck9iamVjdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTT2JqZWN0KiBpdGVyYXRvck9iamVjdCwgSlNWYWx1
ZSBtYXBCdWNrZXQsIEpTVmFsdWUgaXRlcmF0ZWRPYmplY3QpCitzdGF0aWMgSlNPYmplY3QqIGNs
b25lTWFwSXRlcmF0b3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZt
LCBKU01hcEl0ZXJhdG9yKiBpdGVyYXRvck9iamVjdCkKIHsKLSAgICBBU1NFUlQoaXRlcmF0b3JP
YmplY3QtPnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOwotICAgIEpTT2JqZWN0KiBjbG9uZSA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgTWFwSXRlcmF0b3JQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQcm90b3R5cGUo
KSkpKTsKLSAgICBjbG9uZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pdGVyYXRlZE9iamVjdFByaXZhdGVOYW1lKCksIGl0ZXJhdGVkT2JqZWN0KTsKLSAg
ICBjbG9uZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5t
YXBJdGVyYXRvcktpbmRQcml2YXRlTmFtZSgpLCBpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBJdGVyYXRvcktpbmRQcml2YXRl
TmFtZSgpKSk7Ci0gICAgY2xvbmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkubWFwQnVja2V0UHJpdmF0ZU5hbWUoKSwgbWFwQnVja2V0KTsKKyAgICBKU01h
cEl0ZXJhdG9yKiBjbG9uZSA9IEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCBqc0Nhc3Q8SlNNYXAqPihpdGVyYXRvck9iamVjdC0+
aXRlcmF0ZWRPYmplY3QoKSksIGl0ZXJhdG9yT2JqZWN0LT5raW5kKCkpOworICAgIGNsb25lLT5p
bnRlcm5hbEZpZWxkKEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpNYXBCdWNrZXQpLnNldCh2bSwgY2xv
bmUsIGl0ZXJhdG9yT2JqZWN0LT5pbnRlcm5hbEZpZWxkKEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpN
YXBCdWNrZXQpLmdldCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLXN0YXRpYyBKU09iamVj
dCogY2xvbmVTZXRJdGVyYXRvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBW
TSYgdm0sIEpTT2JqZWN0KiBpdGVyYXRvck9iamVjdCwgSlNWYWx1ZSBzZXRCdWNrZXQsIEpTVmFs
dWUgaXRlcmF0ZWRPYmplY3QpCitzdGF0aWMgSlNPYmplY3QqIGNsb25lU2V0SXRlcmF0b3JPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1NldEl0ZXJhdG9yKiBp
dGVyYXRvck9iamVjdCkKIHsKLSAgICBBU1NFUlQoaXRlcmF0b3JPYmplY3QtPnR5cGUoKSA9PSBG
aW5hbE9iamVjdFR5cGUpOwotICAgIEpTT2JqZWN0KiBjbG9uZSA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGdsb2JhbE9iamVjdCwgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBTZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQcm90b3R5cGUoKSkpKTsKLSAgICBjbG9uZS0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZE9i
amVjdFByaXZhdGVOYW1lKCksIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBjbG9uZS0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRJdGVyYXRvcktpbmRQcml2
YXRlTmFtZSgpLCBpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5zZXRJdGVyYXRvcktpbmRQcml2YXRlTmFtZSgpKSk7Ci0gICAgY2xv
bmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0QnVj
a2V0UHJpdmF0ZU5hbWUoKSwgc2V0QnVja2V0KTsKKyAgICBKU1NldEl0ZXJhdG9yKiBjbG9uZSA9
IEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5zZXRJdGVyYXRvclN0cnVj
dHVyZSgpLCBqc0Nhc3Q8SlNTZXQqPihpdGVyYXRvck9iamVjdC0+aXRlcmF0ZWRPYmplY3QoKSks
IGl0ZXJhdG9yT2JqZWN0LT5raW5kKCkpOworICAgIGNsb25lLT5pbnRlcm5hbEZpZWxkKEpTU2V0
SXRlcmF0b3I6OkZpZWxkOjpTZXRCdWNrZXQpLnNldCh2bSwgY2xvbmUsIGl0ZXJhdG9yT2JqZWN0
LT5pbnRlcm5hbEZpZWxkKEpTU2V0SXRlcmF0b3I6OkZpZWxkOjpTZXRCdWNrZXQpLmdldCgpKTsK
ICAgICByZXR1cm4gY2xvbmU7CiB9CiAKQEAgLTU5MywxNSArNTg5LDEyIEBAIEpTVmFsdWUgSlNJ
bmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsCiAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbE9iamVjdC0+aXNBcnJheVBy
b3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpKQogICAgICAgICAg
ICAgICAgICAgICBpdGVyYXRvciA9IGNsb25lQXJyYXlJdGVyYXRvck9iamVjdChnbG9iYWxPYmpl
Y3QsIHZtLCBhcnJheUl0ZXJhdG9yKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0ZWRPYmplY3QgPSBpdGVyYXRvck9iamVjdC0+Z2V0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZE9iamVj
dFByaXZhdGVOYW1lKCkpOwotICAgICAgICAgICAgaWYgKEpTVmFsdWUgbWFwQnVja2V0ID0gaXRl
cmF0b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkubWFwQnVja2V0UHJpdmF0ZU5hbWUoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoanNDYXN0
PEpTTWFwKj4oaXRlcmF0ZWRPYmplY3QpLT5pc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2Jz
ZXJ2YWJsZSgpKQotICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IGNsb25lTWFwSXRlcmF0
b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCB2bSwgaXRlcmF0b3JPYmplY3QsIG1hcEJ1Y2tldCwgaXRl
cmF0ZWRPYmplY3QpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVlIHNldEJ1Y2tldCA9
IGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnNldEJ1Y2tldFByaXZhdGVOYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGpz
Q2FzdDxKU1NldCo+KGl0ZXJhdGVkT2JqZWN0KS0+aXNJdGVyYXRvclByb3RvY29sRmFzdEFuZE5v
bk9ic2VydmFibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZVNldEl0
ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgdm0sIGl0ZXJhdG9yT2JqZWN0LCBzZXRCdWNrZXQs
IGl0ZXJhdGVkT2JqZWN0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChhdXRv
KiBtYXBJdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNNYXBJdGVyYXRvcio+KHZtLCBpdGVyYXRv
ck9iamVjdCkpIHsKKyAgICAgICAgICAgIGlmIChqc0Nhc3Q8SlNNYXAqPihtYXBJdGVyYXRvci0+
aXRlcmF0ZWRPYmplY3QoKSktPmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxl
KCkpCisgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZU1hcEl0ZXJhdG9yT2JqZWN0KGds
b2JhbE9iamVjdCwgdm0sIG1hcEl0ZXJhdG9yKTsKKyAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBz
ZXRJdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNTZXRJdGVyYXRvcio+KHZtLCBpdGVyYXRvck9i
amVjdCkpIHsKKyAgICAgICAgICAgIGlmIChqc0Nhc3Q8SlNTZXQqPihzZXRJdGVyYXRvci0+aXRl
cmF0ZWRPYmplY3QoKSktPmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCkp
CisgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZVNldEl0ZXJhdG9yT2JqZWN0KGdsb2Jh
bE9iamVjdCwgdm0sIHNldEl0ZXJhdG9yKTsKICAgICAgICAgfQogICAgIH0KICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZGYwMWYyYTExODc0MDQxMjYzMmJmMmFk
YWI4YWUwNGYyNmFjOTdkMC4uZTJkYzg4N2IzODQ0MzRlMDUxNjY2YTBiNDI2NTIwMDM4ZjRiNTlm
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCkBAIC05Nyw3ICs5Nyw2IEBACiAgICAgbWFjcm8oZGlzcGxheU5hbWUpIFwKICAgICBt
YWNybyhkb25lKSBcCiAgICAgbWFjcm8oZG90QWxsKSBcCi0gICAgbWFjcm8oZW50cmllcykgXAog
ICAgIG1hY3JvKGVudW1lcmFibGUpIFwKICAgICBtYWNybyhlcmEpIFwKICAgICBtYWNybyhldmFs
KSBcCkBAIC0xMzcsNyArMTM2LDYgQEAKICAgICBtYWNybyhpc1dhdGNocG9pbnQpIFwKICAgICBt
YWNybyhqZXR0aXNvblJlYXNvbikgXAogICAgIG1hY3JvKGpvaW4pIFwKLSAgICBtYWNybyhrZXlz
KSBcCiAgICAgbWFjcm8obGFzdEluZGV4KSBcCiAgICAgbWFjcm8obGVuZ3RoKSBcCiAgICAgbWFj
cm8obGluZSkgXApAQCAtMTk5LDcgKzE5Nyw2IEBACiAgICAgbWFjcm8odW5pY29kZSkgXAogICAg
IG1hY3JvKHVzYWdlKSBcCiAgICAgbWFjcm8odmFsdWUpIFwKLSAgICBtYWNybyh2YWx1ZXMpIFwK
ICAgICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFjcm8od2Vla2RheSkgXAogICAgIG1hY3JvKHdy
aXRhYmxlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApp
bmRleCAzNTM1OTA5MDQ5MWNlMGFmZGNkOGJiYjRmODc1YmIzODE4YzIyZDNlLi4yZTFiNWYyOTZl
MzMyMDNlOTg0ZmU5NjdhNzgxMTE4YjBkNjk2MWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTIwNyw2ICsyMDcsMTIgQEAgY29uc3QgY2hhciog
aW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIkpTTWFw
SGFzSW50cmluc2ljIjsKICAgICBjYXNlIEpTTWFwU2V0SW50cmluc2ljOgogICAgICAgICByZXR1
cm4gIkpTTWFwU2V0SW50cmluc2ljIjsKKyAgICBjYXNlIEpTTWFwVmFsdWVzSW50cmluc2ljOgor
ICAgICAgICByZXR1cm4gIkpTTWFwVmFsdWVzSW50cmluc2ljIjsKKyAgICBjYXNlIEpTTWFwS2V5
c0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJKU01hcEtleXNJbnRyaW5zaWMiOworICAgIGNh
c2UgSlNNYXBFbnRyaWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gIkpTTWFwRW50cmllc0lu
dHJpbnNpYyI7CiAgICAgY2FzZSBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWM6CiAgICAgICAgIHJl
dHVybiAiSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljIjsKICAgICBjYXNlIEpTTWFwQnVja2V0TmV4
dEludHJpbnNpYzoKQEAgLTIxOSw2ICsyMjUsMTAgQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFt
ZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIkpTU2V0SGFzSW50cmluc2lj
IjsKICAgICBjYXNlIEpTU2V0QWRkSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIkpTU2V0QWRk
SW50cmluc2ljIjsKKyAgICBjYXNlIEpTU2V0VmFsdWVzSW50cmluc2ljOgorICAgICAgICByZXR1
cm4gIkpTU2V0VmFsdWVzSW50cmluc2ljIjsKKyAgICBjYXNlIEpTU2V0RW50cmllc0ludHJpbnNp
YzoKKyAgICAgICAgcmV0dXJuICJKU1NldEVudHJpZXNJbnRyaW5zaWMiOwogICAgIGNhc2UgSlNT
ZXRCdWNrZXRIZWFkSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIkpTU2V0QnVja2V0SGVhZElu
dHJpbnNpYyI7CiAgICAgY2FzZSBKU1NldEJ1Y2tldE5leHRJbnRyaW5zaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDZiZmZmOTAwNjNjZTJkN2Q4YWMy
MDU0MmU4YThkN2UxOGM0MmJhZTkuLjMzZWNhYmM4MWZjODE4NDBiNGRmN2E2OTY2MmRiMTNmNTY2
MmNiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC0x
MTgsMTIgKzExOCwxNyBAQCBlbnVtIEludHJpbnNpYyA6IHVpbnQ4X3QgewogICAgIEpTTWFwR2V0
SW50cmluc2ljLAogICAgIEpTTWFwSGFzSW50cmluc2ljLAogICAgIEpTTWFwU2V0SW50cmluc2lj
LAorICAgIEpTTWFwVmFsdWVzSW50cmluc2ljLAorICAgIEpTTWFwS2V5c0ludHJpbnNpYywKKyAg
ICBKU01hcEVudHJpZXNJbnRyaW5zaWMsCiAgICAgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljLAog
ICAgIEpTTWFwQnVja2V0TmV4dEludHJpbnNpYywKICAgICBKU01hcEJ1Y2tldEtleUludHJpbnNp
YywKICAgICBKU01hcEJ1Y2tldFZhbHVlSW50cmluc2ljLAogICAgIEpTU2V0SGFzSW50cmluc2lj
LAogICAgIEpTU2V0QWRkSW50cmluc2ljLAorICAgIEpTU2V0VmFsdWVzSW50cmluc2ljLAorICAg
IEpTU2V0RW50cmllc0ludHJpbnNpYywKICAgICBKU1NldEJ1Y2tldEhlYWRJbnRyaW5zaWMsCiAg
ICAgSlNTZXRCdWNrZXROZXh0SW50cmluc2ljLAogICAgIEpTU2V0QnVja2V0S2V5SW50cmluc2lj
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApp
bmRleCA1OTllNzc0YjAzZGQzZTViYTZkNGQ3ZmEzNGJiOThhOTY4N2VjNjA5Li5hZmQ5ZWIyZTVk
NjZiODUzYTBjNzcwNDJhY2FlNDk5ZDA2NzNmMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBK
U0FycmF5SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwz
PiB7CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxk
IGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVp
bnQzMl90PihmaWVsZCkpOyB9CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZp
ZWxkKEZpZWxkIGZpZWxkKSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0
PHVpbnQzMl90PihmaWVsZCkpOyB9CiAKLSAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxJdGVyYXRpb25LaW5kPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpL
aW5kKS5nZXQoKS5hc1VJbnQzMigpKTsgfQorICAgIEl0ZXJhdGlvbktpbmQga2luZCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZXJhdGlvbktpbmQ+KGludGVybmFsRmllbGQoRmllbGQ6
OktpbmQpLmdldCgpLmFzVUludDMyQXNBbnlJbnQoKSk7IH0KICAgICBKU09iamVjdCogaXRlcmF0
ZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihpbnRlcm5hbEZpZWxk
KEZpZWxkOjpJdGVyYXRlZE9iamVjdCkuZ2V0KCkpOyB9CiAKICAgICBzdGF0aWMgSlNBcnJheUl0
ZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogaXRlcmF0ZWRPYmplY3Qs
IEpTVmFsdWUga2luZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggNmNlMTg0YWUxNTllNDgyZjExZTAzMGY2ZDM5ZWM4NTYwMmJl
OTYwZS4uNmExMzBkOWY5MThlMjQ4N2FiMDFjNTYyMDVkMWNhYTY2ZWFlNWI3OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTA2
LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRl
ICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJKU01pY3JvdGFzay5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1l
bnQuaCIKICNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgpAQCAtMTE3LDYgKzExOCw3IEBACiAj
aW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1Byb21pc2VQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5Q29u
c3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIgpAQCAtNTY0
LDcgKzU2Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICB9
KTsKICAgICBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5pbml0TGF0ZXIoCiAgICAgICAgIFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewotICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIsIDAsIGluaXQudm0u
cHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCBhcnJheVByb3RvRnVuY1ZhbHVlcywgQXJy
YXlWYWx1ZXNJbnRyaW5zaWMpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1
ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7CiAgICAgICAgIH0pOwogCiAgICAgbV9pdGVyYXRv
clByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKApAQCAtNzY1LDYgKzc2NywxNCBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlKTsKICAgICBtX2FycmF5SXRlcmF0
b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgYXJyYXlJdGVyYXRvclByb3RvdHlwZSkpOwogCisgICAgYXV0byogbWFwSXRl
cmF0b3JQcm90b3R5cGUgPSBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBN
YXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9y
UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRo
aXMsIG1hcEl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBtX21hcEl0ZXJhdG9yU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtYXBJ
dGVyYXRvclByb3RvdHlwZSkpOworCisgICAgYXV0byogc2V0SXRlcmF0b3JQcm90b3R5cGUgPSBT
ZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBTZXRJdGVyYXRvclByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7
CisgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIHNldEl0ZXJhdG9yUHJv
dG90eXBlKTsKKyAgICBtX3NldEl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNTZXRJ
dGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBzZXRJdGVyYXRvclByb3RvdHlwZSkp
OworCiAgICAgSlNGdW5jdGlvbiogZGVmYXVsdFByb21pc2VUaGVuID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBwcm9taXNlUHJvdG90eXBlVGhlbkNvZGVHZW5lcmF0b3Iodm0pLCB0aGlzKTsKICAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpkZWZhdWx0UHJvbWlzZVRoZW4pXS5zZXQodm0sIHRoaXMsIGRlZmF1bHRQcm9taXNlVGhl
bik7CiAKQEAgLTEwMDYsMTUgKzEwMTYsOSBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rvciog
bG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAg
IEpTT2JqZWN0KiBhc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBBc3luY0Zyb21TeW5j
SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgQXN5bmNGcm9tU3luY0l0ZXJhdG9y
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUu
Z2V0KCkpKTsKICAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1l
Q29uc3RhbnQ6OkFzeW5jRnJvbVN5bmNJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlKTsKIAot
ICAgIEpTT2JqZWN0KiBtYXBJdGVyYXRvclByb3RvdHlwZSA9IE1hcEl0ZXJhdG9yUHJvdG90eXBl
OjpjcmVhdGUodm0sIHRoaXMsIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBqc0Nhc3Q8SlNPYmpl
Y3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Ok1hcEl0ZXJhdG9yKSktPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtYXBJdGVyYXRvclByb3Rv
dHlwZSk7Ci0KICAgICBKU09iamVjdCogcmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUgPSBS
ZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9y
UHJvdG90eXBlLmdldCgpKSk7CiAgICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFu
dChMaW5rVGltZUNvbnN0YW50OjpSZWdFeHBTdHJpbmdJdGVyYXRvcikpLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGUpOwogCi0gICAgSlNPYmplY3QqIHNldEl0ZXJhdG9yUHJvdG90eXBlID0gU2V0SXRlcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwotICAgIGpzQ2Fz
dDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6U2V0SXRlcmF0
b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNldEl0ZXJh
dG9yUHJvdG90eXBlKTsKLQogICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMuCiAgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U2V0
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAg
ICAgICAgICBpbml0LnNldChqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKS0+c2V0
Q29uc3RydWN0b3IoKSk7CkBAIC0xNzc1LDYgKzE3NzksOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JQcm90b3R5cGUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXJyYXlJdGVyYXRvclByb3RvdHlwZSk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tYXBJdGVyYXRvclByb3RvdHlwZSk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zZXRJdGVyYXRvclByb3RvdHlwZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0Z1bmN0aW9uUHJvdG90eXBl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2VuZXJhdG9yUHJvdG90
eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jSXRlcmF0b3JQcm90
b3R5cGUpOwpAQCAtMTgyNiw2ICsxODMyLDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmUpOworICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUpOworICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUpOwogICAgIHRoaXNP
YmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggMWU3NmMwYjM0NmU2N2RkYTM1YzRlOTU1YjUxMmY2ZjU5MzE0NDIwNC4uYmFkNjQ2MzVi
ZmNmNDk1YjU5Mjg5NGU0NzM4MWVjMzViNzEzYmNjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMDAsNiArMTAwLDcgQEAgY2xhc3Mg
SlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOwogY2xhc3MgSlNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZTsKIGNsYXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworY2xhc3MgTWFwSXRlcmF0b3JQcm90b3R5cGU7CiBjbGFzcyBNYXBQcm90b3R5cGU7
CiBjbGFzcyBNaWNyb3Rhc2s7CiBjbGFzcyBNb2R1bGVMb2FkZXI7CkBAIC0xMTIsNiArMTEzLDcg
QEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogY2xh
c3MgUmVnRXhwQ29uc3RydWN0b3I7CiBjbGFzcyBSZWdFeHBQcm90b3R5cGU7CitjbGFzcyBTZXRJ
dGVyYXRvclByb3RvdHlwZTsKIGNsYXNzIFNldFByb3RvdHlwZTsKIGNsYXNzIFNvdXJjZUNvZGU7
CiBjbGFzcyBTb3VyY2VPcmlnaW47CkBAIC0zMjMsNiArMzI1LDggQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJy
aWVyPEdlbmVyYXRvclByb3RvdHlwZT4gbV9nZW5lcmF0b3JQcm90b3R5cGU7CiAgICAgV3JpdGVC
YXJyaWVyPEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlPiBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBl
OwogICAgIFdyaXRlQmFycmllcjxBcnJheUl0ZXJhdG9yUHJvdG90eXBlPiBtX2FycmF5SXRlcmF0
b3JQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPE1hcEl0ZXJhdG9yUHJvdG90eXBlPiBtX21h
cEl0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxTZXRJdGVyYXRvclByb3RvdHlw
ZT4gbV9zZXRJdGVyYXRvclByb3RvdHlwZTsKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgU3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwpAQCAt
Mzc4LDYgKzM4Miw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9y
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXN5bmNHZW5lcmF0b3JT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJheUl0ZXJhdG9yU3Ry
dWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbWFwSXRlcmF0b3JTdHJ1Y3R1
cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZTsK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pdGVyYXRvclJl
c3VsdE9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7CkBAIC02NDksNiArNjU1LDggQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KICAgICBBcnJheUl0ZXJhdG9yUHJvdG90eXBlKiBhcnJh
eUl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheUl0ZXJhdG9yUHJvdG90
eXBlLmdldCgpOyB9CisgICAgTWFwSXRlcmF0b3JQcm90b3R5cGUqIG1hcEl0ZXJhdG9yUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBJdGVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQorICAg
IFNldEl0ZXJhdG9yUHJvdG90eXBlKiBzZXRJdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2V0SXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBKU09iamVjdCogbWFwUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9
CiAgICAgLy8gV29ya2Fyb3VuZCBmb3IgdGhlIG5hbWUgY29uZmxpY3QgYmV0d2VlbiBKU0NlbGw6
OnNldFByb3RvdHlwZS4KICAgICBKU09iamVjdCoganNTZXRQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3NldFN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KQEAgLTc1Nyw2ICs3NjUsOCBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFzeW5j
R2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jR2VuZXJh
dG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFycmF5SXRlcmF0
b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0
KCk7IH0gICAgCisgICAgU3RydWN0dXJlKiBtYXBJdGVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIHNl
dEl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRJdGVyYXRvclN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IGl0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRv
clJlc3VsdE9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTWFwSXRlcmF0b3IuY3BwCmluZGV4IGY4MGIzNDAxMGQzNWIyNmZkMzk2ZmU4ZGQ1OWQwZDQ3
NDRlN2IzYmEuLjU2NDhmODdkMzUxOGUwMzRiYWUxNTQ2YWI1ZDQ1YzgyNjk2NjYyNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCkBAIC0y
NywyNiArMjcsNDEgQEAKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMu
aCIKICNpbmNsdWRlICJKU01hcC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJ
bmZvIEpTTWFwSXRlcmF0b3I6OnNfaW5mbyA9IHsgIk1hcCBJdGVyYXRvciIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNYXBJdGVyYXRvcikgfTsKK2Nv
bnN0IENsYXNzSW5mbyBKU01hcEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJNYXAgSXRlcmF0b3IiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTWFw
SXRlcmF0b3IpIH07CiAKLXZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU01hcCogaXRlcmF0ZWRPYmplY3QpCitKU01hcEl0ZXJhdG9yKiBKU01hcEl0ZXJhdG9yOjpj
cmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorewor
ICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNNYXBJdGVyYXRvcj4odm0uaGVhcCkpIEpTTWFwSXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7Cisg
ICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9
CisKK3ZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU01hcCogaXRl
cmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6TWFwQnVja2V0KS5zZXQodm0sIHRo
aXMsIGl0ZXJhdGVkT2JqZWN0LT5oZWFkKCkpOworICAgIGludGVybmFsRmllbGQoRmllbGQ6Okl0
ZXJhdGVkT2JqZWN0KS5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsKKyAgICBpbnRlcm5h
bEZpZWxkKEZpZWxkOjpLaW5kKS5zZXQodm0sIHRoaXMsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KGtpbmQpKSk7Cit9CisKK3ZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBtX21hcC5zZXQo
dm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBzZXRJdGVyYXRvcih2bSwgbV9tYXAtPmhl
YWQoKSk7CisgICAgYXV0byB2YWx1ZXMgPSBpbml0aWFsVmFsdWVzKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAg
QmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0KHZtLCB0aGlzLCB2YWx1ZXNbaW5kZXhdKTsK
IH0KIAogdm9pZCBKU01hcEl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNNYXBJdGVyYXRvciogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tYXApOwotICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faXRlcik7CiB9CiAKIEpTVmFsdWUgSlNNYXBJdGVy
YXRvcjo6Y3JlYXRlUGFpcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtl
eSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTWFwSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFw
SXRlcmF0b3IuaAppbmRleCA2ZTFmYTBjZmM2ODVlNGJhMzVjZWEzOWZmN2UyZWU3ZmFhNmQ5Yjk4
Li42MTVjNDBhMzUxMmJlZjAyNDZlOTYwMjIxYWNlYTRjZDVhMDdkZjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5oCkBAIC0yNiwyMSArMjYsMzcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSXRlcmF0aW9uS2luZC5oIgorI2luY2x1ZGUg
IkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKICNpbmNsdWRlICJKU01hcC5oIgotI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0vLyBOb3csIGl0IGlzIG9ubHkg
dXNlZCBmb3Igc2VyaWFsaXphdGlvbi4KLS8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIEpTSW50ZXJu
YWxGaWVsZE9iamVjdEltcGwgdG8gaW1wbGVtZW50IHJlYWwgSlNNYXBJdGVyYXRvciB1c2VkIGlu
IEpTQy4KLS8vIEN1cnJlbnRseSwgSlNDIGlzIHVzaW5nIGZpbmFsIG9iamVjdHMgdG8gaW1wbGVt
ZW50IE1hcEl0ZXJhdG9yLgotY2xhc3MgSlNNYXBJdGVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0Nl
bGwgewotICAgIHR5cGVkZWYgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVl
PiBIYXNoTWFwQnVja2V0VHlwZTsKK2NsYXNzIEpTTWFwSXRlcmF0b3IgZmluYWwgOiBwdWJsaWMg
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwzPiB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9
IEpTQ2VsbDsKKyAgICB1c2luZyBIYXNoTWFwQnVja2V0VHlwZSA9IEhhc2hNYXBCdWNrZXQ8SGFz
aE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT47CisgICAgdXNpbmcgQmFzZSA9IEpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGw8Mz47CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCisgICAgZW51bSBj
bGFzcyBGaWVsZCA6IHVpbnQ4X3QgeworICAgICAgICBNYXBCdWNrZXQgPSAwLAorICAgICAgICBJ
dGVyYXRlZE9iamVjdCwKKyAgICAgICAgS2luZCwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQo
bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSAzKTsKKworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpT
VmFsdWUsIG51bWJlck9mSW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHsgeworICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgICAgICBqc051
bGwoKSwKKyAgICAgICAgICAgIGpzTnVtYmVyKDApLAorICAgICAgICB9IH07CisgICAgfQorCisg
ICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxk
KSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90
PihmaWVsZCkpOyB9CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxkKEZp
ZWxkIGZpZWxkKSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihmaWVsZCkpOyB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKICAgICB7CkBAIC00OSw1MCArNjUsNTggQEAgY2xhc3MgSlNNYXBJdGVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhKU01hcEl0ZXJhdG9yVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU01hcEl0ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNNYXAqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5k
IGtpbmQpCiAgICAgewotICAgICAgICBKU01hcEl0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTTWFwSXRlcmF0b3I+KHZtLmhlYXApKSBKU01hcEl0ZXJhdG9y
KHZtLCBzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKLSAgICAgICAgaW5zdGFuY2Ut
PmZpbmlzaENyZWF0aW9uKHZtLCBpdGVyYXRlZE9iamVjdCk7CisgICAgICAgIEpTTWFwSXRlcmF0
b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNYXBJdGVyYXRvcj4o
dm0uaGVhcCkpIEpTTWFwSXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGluc3RhbmNl
LT5maW5pc2hDcmVhdGlvbih2bSwgaXRlcmF0ZWRPYmplY3QsIGtpbmQpOwogICAgICAgICByZXR1
cm4gaW5zdGFuY2U7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBIYXNoTWFwQnVja2V0VHlw
ZSogYWR2YW5jZUl0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMg
SlNNYXBJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBTdHJ1Y3R1cmUqKTsK
KworICAgIEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1Y2tldFR5cGUqIGFkdmFuY2VJdGVyKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBwcmV2ID0gbV9pdGVyLmdldCgp
OwotICAgICAgICBpZiAoIXByZXYpCisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBwcmV2ID0g
aXRlcmF0b3IoKTsKKyAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIHNlbnRpbmVsID0ganNDYXN0
PEhhc2hNYXBCdWNrZXRUeXBlKj4odm0uc2VudGluZWxNYXBCdWNrZXQoKSk7CisgICAgICAgIGlm
IChwcmV2ID09IHNlbnRpbmVsKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBl
KiBidWNrZXQgPSBtX2l0ZXItPm5leHQoKTsKKyAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1
Y2tldCA9IHByZXYtPm5leHQoKTsKICAgICAgICAgd2hpbGUgKGJ1Y2tldCAmJiBidWNrZXQtPmRl
bGV0ZWQoKSkKICAgICAgICAgICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgpOwogICAgICAgICBp
ZiAoIWJ1Y2tldCkgewotICAgICAgICAgICAgc2V0SXRlcmF0b3Iodm0sIG51bGxwdHIpOworICAg
ICAgICAgICAgc2V0SXRlcmF0b3Iodm0sIHNlbnRpbmVsKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIHNldEl0ZXJhdG9yKHZtLCBidWNrZXQpOyAvLyBX
ZSBrZWVwIG1faXRlciBvbiB0aGUgbGFzdCB2YWx1ZSBzaW5jZSB0aGUgZmlyc3QgdGhpbmcgd2Ug
ZG8gaW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsIG5leHQoKS4KKyAgICAgICAgc2V0SXRlcmF0b3Io
dm0sIGJ1Y2tldCk7IC8vIFdlIGtlZXAgaXRlcmF0b3Igb24gdGhlIGxhc3QgdmFsdWUgc2luY2Ug
dGhlIGZpcnN0IHRoaW5nIHdlIGRvIGluIHRoaXMgZnVuY3Rpb24gaXMgY2FsbCBuZXh0KCkuCiAg
ICAgICAgIHJldHVybiBidWNrZXQ7CiAgICAgfQorCiAgICAgYm9vbCBuZXh0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgSGFzaE1h
cEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IGFkdmFuY2VJdGVyKGdsb2JhbE9iamVjdCk7CisgICAgICAg
IEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBhZHZhbmNlSXRlcihnZXRWTShnbG9iYWxPYmpl
Y3QpKTsKICAgICAgICAgaWYgKCFidWNrZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgaWYgKG1fa2luZCA9PSBJdGVyYXRpb25LaW5kOjpWYWx1ZXMpCisgICAgICAgIHN3
aXRjaCAoa2luZCgpKSB7CisgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6VmFsdWVzOgogICAg
ICAgICAgICAgdmFsdWUgPSBidWNrZXQtPnZhbHVlKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1fa2lu
ZCA9PSBJdGVyYXRpb25LaW5kOjpLZXlzKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgSXRlcmF0aW9uS2luZDo6S2V5czoKICAgICAgICAgICAgIHZhbHVlID0gYnVja2V0LT5rZXko
KTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSXRlcmF0
aW9uS2luZDo6RW50cmllczoKICAgICAgICAgICAgIHZhbHVlID0gY3JlYXRlUGFpcihnbG9iYWxP
YmplY3QsIGJ1Y2tldC0+a2V5KCksIGJ1Y2tldC0+dmFsdWUoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBib29sIG5l
eHRLZXlWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlJiBrZXksIEpT
VmFsdWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9
IGFkdmFuY2VJdGVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBi
dWNrZXQgPSBhZHZhbmNlSXRlcihnZXRWTShnbG9iYWxPYmplY3QpKTsKICAgICAgICAgaWYgKCFi
dWNrZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwMSwyNyArMTI1LDI0IEBA
IGNsYXNzIEpTTWFwSXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uS2luZCBraW5kKCkgY29uc3QgeyByZXR1
cm4gbV9raW5kOyB9Ci0gICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9tYXAuZ2V0KCk7IH0KKyAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxJdGVyYXRpb25LaW5kPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpLaW5kKS5nZXQo
KS5hc1VJbnQzMkFzQW55SW50KCkpOyB9CisgICAgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6SXRl
cmF0ZWRPYmplY3QpLmdldCgpKTsgfQorICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBpdGVyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxIYXNoTWFwQnVja2V0VHlwZSo+KGludGVybmFsRmllbGQo
RmllbGQ6Ok1hcEJ1Y2tldCkuZ2V0KCkpOyB9CiAKIHByaXZhdGU6Ci0gICAgSlNNYXBJdGVyYXRv
cihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU01hcCosIEl0ZXJhdGlvbktpbmQga2lu
ZCkKKyAgICBKU01hcEl0ZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAgICAgICAsIG1fa2luZChraW5kKQogICAgIHsg
fQogCiAgICAgdm9pZCBzZXRJdGVyYXRvcihWTSYgdm0sIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNr
ZXQpCiAgICAgewotICAgICAgICBtX2l0ZXIuc2V0TWF5QmVOdWxsKHZtLCB0aGlzLCBidWNrZXQp
OworICAgICAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpNYXBCdWNrZXQpLnNldCh2bSwgdGhpcywg
YnVja2V0KTsKICAgICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNNYXAqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNNYXAqLCBJdGVyYXRpb25LaW5kKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CiAgICAgSlNWYWx1ZSBjcmVhdGVQYWlyKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwg
SlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwotCi0gICAgV3JpdGVCYXJyaWVyPEpTTWFwPiBtX21hcDsKLSAgICBXcml0ZUJhcnJp
ZXI8SGFzaE1hcEJ1Y2tldFR5cGU+IG1faXRlcjsKLSAgICBJdGVyYXRpb25LaW5kIG1fa2luZDsK
IH07CiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNNYXBJdGVyYXRv
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRl
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5j
cHAKaW5kZXggNTA5N2IyMDA1ZmE1OGQ1ZmNhZjhmZjI0MDlhZmFmY2JjNTljYjViZC4uZjk3MDVk
M2MwYmQ2N2E4YjQ3MDZjN2Y5NzE1MWUzYWIzZmU1OTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKQEAgLTI3LDI2ICsyNyw0MSBAQAog
I2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKIAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNp
bmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
U2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gSlNTZXRJdGVyYXRv
cjo6c19pbmZvID0geyAiU2V0IEl0ZXJhdG9yIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1NldEl0ZXJhdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpT
U2V0SXRlcmF0b3I6OnNfaW5mbyA9IHsgIlNldCBJdGVyYXRvciIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNTZXRJdGVyYXRvcikgfTsKIAot
dm9pZCBKU1NldEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTU2V0KiBpdGVyYXRl
ZE9iamVjdCkKK0pTU2V0SXRlcmF0b3IqIEpTU2V0SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFs
VmFsdWVzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNTZXRJdGVyYXRv
ciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NldEl0ZXJhdG9yPih2
bS5oZWFwKSkgSlNTZXRJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsKKyAgICBpdGVyYXRvci0+Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBpdGVyYXRvcjsKK30KKwordm9pZCBKU1NldEl0
ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTU2V0KiBpdGVyYXRlZE9iamVjdCwgSXRl
cmF0aW9uS2luZCBraW5kKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBp
bnRlcm5hbEZpZWxkKEZpZWxkOjpTZXRCdWNrZXQpLnNldCh2bSwgdGhpcywgaXRlcmF0ZWRPYmpl
Y3QtPmhlYWQoKSk7CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6SXRlcmF0ZWRPYmplY3QpLnNl
dCh2bSwgdGhpcywgaXRlcmF0ZWRPYmplY3QpOworICAgIGludGVybmFsRmllbGQoRmllbGQ6Oktp
bmQpLnNldCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oa2luZCkpKTsK
K30KKwordm9pZCBKU1NldEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIG1fc2V0LnNldCh2bSwgdGhpcywgaXRlcmF0
ZWRPYmplY3QpOwotICAgIHNldEl0ZXJhdG9yKHZtLCBtX3NldC0+aGVhZCgpKTsKKyAgICBhdXRv
IHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjppbnRlcm5hbEZp
ZWxkKGluZGV4KS5zZXQodm0sIHRoaXMsIHZhbHVlc1tpbmRleF0pOwogfQogCiB2b2lkIEpTU2V0
SXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBKU1NldEl0ZXJhdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU2V0SXRlcmF0
b3IqPihjZWxsKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU2V0SXRlcmF0b3Iq
PihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NldCk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9pdGVyKTsKIH0KIAogSlNWYWx1ZSBKU1NldEl0ZXJhdG9yOjpjcmVhdGVQYWly
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5oCmluZGV4
IDJiMTUyNWVlMmI0ZTQzNWY5YzVlZDFkZGZiNzU0MWQ3ZTI5OWI0MmIuLmVlMzhkNmEwYzRlNjFk
MWQ3ZmY4NWIxYTNhNTBhYWM5NjI5MTIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1NldEl0ZXJhdG9yLmgKQEAgLTI2LDIxICsyNiwzNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJJdGVyYXRpb25LaW5kLmgiCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLS8vIE5vdywgaXQgaXMgb25seSB1c2VkIGZvciBzZXJpYWxp
emF0aW9uLgotLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bCB0byBpbXBsZW1lbnQgcmVhbCBKU1NldEl0ZXJhdG9yIHVzZWQgaW4gSlNDLgotLy8gQ3VycmVu
dGx5LCBKU0MgaXMgdXNpbmcgZmluYWwgb2JqZWN0cyB0byBpbXBsZW1lbnQgU2V0SXRlcmF0b3Iu
Ci1jbGFzcyBKU1NldEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7Ci0gICAgdHlwZWRl
ZiBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5PiBIYXNoTWFwQnVja2V0VHlwZTsK
K2NsYXNzIEpTU2V0SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbDwzPiB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsKKyAgICB1c2luZyBI
YXNoTWFwQnVja2V0VHlwZSA9IEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Owor
ICAgIHVzaW5nIEJhc2UgPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDM+OwogCiAgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKIAorICAgIGVudW0gY2xhc3MgRmllbGQgOiB1aW50OF90IHsKKyAg
ICAgICAgU2V0QnVja2V0ID0gMCwKKyAgICAgICAgSXRlcmF0ZWRPYmplY3QsCisgICAgICAgIEtp
bmQsCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPT0g
Myk7CisKKyAgICBzdGF0aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1iZXJPZkludGVybmFsRmll
bGRzPiBpbml0aWFsVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHsKKyAgICAgICAg
ICAgIGpzTnVsbCgpLAorICAgICAgICAgICAganNOdWxsKCksCisgICAgICAgICAgICBqc051bWJl
cigwKSwKKyAgICAgICAgfSB9OworICAgIH0KKworICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtu
b3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgY29uc3QgeyByZXR1cm4gQmFzZTo6aW50
ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQorICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgeyByZXR1cm4gQmFzZTo6
aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQorCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewpAQCAtNDksNjggKzY1LDcy
IEBAIGNsYXNzIEpTU2V0SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2Vs
bFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNTZXRJdGVy
YXRvclR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAgICBzdGF0aWMg
SlNTZXRJdGVyYXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2V0
KiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgSlNT
ZXRJdGVyYXRvciogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NldEl0
ZXJhdG9yPih2bS5oZWFwKSkgSlNTZXRJdGVyYXRvcih2bSwgc3RydWN0dXJlLCBpdGVyYXRlZE9i
amVjdCwga2luZCk7Ci0gICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgaXRlcmF0
ZWRPYmplY3QpOworICAgICAgICBKU1NldEl0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTU2V0SXRlcmF0b3I+KHZtLmhlYXApKSBKU1NldEl0ZXJhdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGl0ZXJh
dGVkT2JqZWN0LCBraW5kKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAg
IEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1Y2tldFR5cGUqIGFkdmFuY2VJdGVyKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpTU2V0SXRlcmF0b3IqIGNyZWF0ZVdpdGhJ
bml0aWFsVmFsdWVzKFZNJiwgU3RydWN0dXJlKik7CisKKyAgICBBTFdBWVNfSU5MSU5FIEhhc2hN
YXBCdWNrZXRUeXBlKiBhZHZhbmNlSXRlcihWTSYgdm0pCiAgICAgewotICAgICAgICBIYXNoTWFw
QnVja2V0VHlwZSogcHJldiA9IG1faXRlci5nZXQoKTsKLSAgICAgICAgaWYgKCFwcmV2KQorICAg
ICAgICBIYXNoTWFwQnVja2V0VHlwZSogcHJldiA9IGl0ZXJhdG9yKCk7CisgICAgICAgIEhhc2hN
YXBCdWNrZXRUeXBlKiBzZW50aW5lbCA9IGpzQ2FzdDxIYXNoTWFwQnVja2V0VHlwZSo+KHZtLnNl
bnRpbmVsU2V0QnVja2V0KCkpOworICAgICAgICBpZiAocHJldiA9PSBzZW50aW5lbCkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmpl
Y3QpOwotICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0ID0gbV9pdGVyLT5uZXh0KCk7
CisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBwcmV2LT5uZXh0KCk7CiAgICAg
ICAgIHdoaWxlIChidWNrZXQgJiYgYnVja2V0LT5kZWxldGVkKCkpCiAgICAgICAgICAgICBidWNr
ZXQgPSBidWNrZXQtPm5leHQoKTsKICAgICAgICAgaWYgKCFidWNrZXQpIHsKLSAgICAgICAgICAg
IHNldEl0ZXJhdG9yKHZtLCBudWxscHRyKTsKKyAgICAgICAgICAgIHNldEl0ZXJhdG9yKHZtLCBz
ZW50aW5lbCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAg
ICBzZXRJdGVyYXRvcih2bSwgYnVja2V0KTsgLy8gV2Uga2VlcCBtX2l0ZXIgb24gdGhlIGxhc3Qg
dmFsdWUgc2luY2UgdGhlIGZpcnN0IHRoaW5nIHdlIGRvIGluIHRoaXMgZnVuY3Rpb24gaXMgY2Fs
bCBuZXh0KCkuCisgICAgICAgIHNldEl0ZXJhdG9yKHZtLCBidWNrZXQpOyAvLyBXZSBrZWVwIGl0
ZXJhdG9yIG9uIHRoZSBsYXN0IHZhbHVlIHNpbmNlIHRoZSBmaXJzdCB0aGluZyB3ZSBkbyBpbiB0
aGlzIGZ1bmN0aW9uIGlzIGNhbGwgbmV4dCgpLgogICAgICAgICByZXR1cm4gYnVja2V0OwogICAg
IH0KIAogICAgIGJvb2wgbmV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
JiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBhZHZh
bmNlSXRlcihnbG9iYWxPYmplY3QpOworICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0
ID0gYWR2YW5jZUl0ZXIoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGlmICghYnVja2V0
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChtX2tpbmQgPT0gSXRl
cmF0aW9uS2luZDo6VmFsdWVzIHx8IG1fa2luZCA9PSBJdGVyYXRpb25LaW5kOjpLZXlzKQorICAg
ICAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIEl0ZXJhdGlvbktpbmQ6OlZhbHVl
czoKKyAgICAgICAgY2FzZSBJdGVyYXRpb25LaW5kOjpLZXlzOgogICAgICAgICAgICAgdmFsdWUg
PSBidWNrZXQtPmtleSgpOwotICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOgogICAgICAgICAgICAgdmFsdWUgPSBjcmVh
dGVQYWlyKGdsb2JhbE9iamVjdCwgYnVja2V0LT5rZXkoKSwgYnVja2V0LT5rZXkoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBK
U1ZhbHVlIGl0ZXJhdGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorICAg
IEl0ZXJhdGlvbktpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZXJhdGlv
bktpbmQ+KGludGVybmFsRmllbGQoRmllbGQ6OktpbmQpLmdldCgpLmFzVUludDMyQXNBbnlJbnQo
KSk7IH0KKyAgICBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc0Nh
c3Q8SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpJdGVyYXRlZE9iamVjdCkuZ2V0KCkp
OyB9CisgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGl0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4ganND
YXN0PEhhc2hNYXBCdWNrZXRUeXBlKj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6U2V0QnVja2V0KS5n
ZXQoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBKU1NldEl0ZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTU2V0KiwgSXRlcmF0aW9uS2luZCBraW5kKQorICAgIEpTU2V0SXRlcmF0
b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCi0gICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgewogICAgIH0KIAogICAgIHZvaWQg
c2V0SXRlcmF0b3IoVk0mIHZtLCBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0KQogICAgIHsKLSAg
ICAgICAgbV9pdGVyLnNldE1heUJlTnVsbCh2bSwgdGhpcywgYnVja2V0KTsgCisgICAgICAgIGlu
dGVybmFsRmllbGQoRmllbGQ6OlNldEJ1Y2tldCkuc2V0KHZtLCB0aGlzLCBidWNrZXQpOwogICAg
IH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1Nl
dCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1Nl
dCosIEl0ZXJhdGlvbktpbmQpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNyZWF0ZVBhaXIoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7Ci0KLSAgICBXcml0ZUJhcnJpZXI8SlNTZXQ+IG1fc2V0OwotICAgIFdyaXRl
QmFycmllcjxIYXNoTWFwQnVja2V0VHlwZT4gbV9pdGVyOwotICAgIEl0ZXJhdGlvbktpbmQgbV9r
aW5kOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU1NldEl0
ZXJhdG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKaW5kZXgg
YjAyYjM0N2Q2YTUwMDQ1NTNiNTkyZWM2NGI0YzE0NGUzMDhkZDBjZi4uNmIzZGM5NjdjNDI5Zjli
MzczMjgwM2ZmMjUwMzY1YzZhODI5MDQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuY3BwCkBAIC0xMDAsNiArMTAwLDggQEAgdm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShKU0dlbmVyYXRvclR5cGUp
CiAgICAgQ0FTRShKU0FzeW5jR2VuZXJhdG9yVHlwZSkKICAgICBDQVNFKEpTQXJyYXlJdGVyYXRv
clR5cGUpCisgICAgQ0FTRShKU01hcEl0ZXJhdG9yVHlwZSkKKyAgICBDQVNFKEpTU2V0SXRlcmF0
b3JUeXBlKQogICAgIENBU0UoSlNTdHJpbmdJdGVyYXRvclR5cGUpCiAgICAgQ0FTRShKU1Byb21p
c2VUeXBlKQogICAgIENBU0UoSlNNYXBUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaAppbmRleCA0ODM2ZjkxYjBiYjRiMzY0ZWY3ZTE0ZTNjM2U5YjEyYTNmNjEwMWYwLi5i
N2FhYzI1NjJjZWFkZDcyNjY3YjVhYWE4OGEyMjMyZWRjMTQ2ZmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtMTEyLDYgKzExMiw4IEBAIGVudW0gSlNUeXBlIDog
dWludDhfdCB7CiAgICAgSlNHZW5lcmF0b3JUeXBlLAogICAgIEpTQXN5bmNHZW5lcmF0b3JUeXBl
LAogICAgIEpTQXJyYXlJdGVyYXRvclR5cGUsCisgICAgSlNNYXBJdGVyYXRvclR5cGUsCisgICAg
SlNTZXRJdGVyYXRvclR5cGUsCiAgICAgSlNTdHJpbmdJdGVyYXRvclR5cGUsCiAgICAgSlNQcm9t
aXNlVHlwZSwKICAgICBKU01hcFR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDI5YTEx
NjcwYjI1YzFiMGUzYTNjNmZkNzg5YzBiNmMxNzgwZDA2ZjguLmYyYmZiNzM0ZDYwYmJmZjhmOTg4
ZWE2ZmUxOTU5ZDg4YTAzNDJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCkBAIC0zMzUsNyAr
MzM1LDcgQEAgdm9pZCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBKU0NfQlVJTFRJTl9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04oImV2ZXJ5IiwgdHlwZWRBcnJheVByb3RvdHlwZUV2ZXJ5Q29k
ZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZmls
dGVyIiwgdHlwZWRBcnJheVByb3RvdHlwZUZpbHRlckNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJ
Tl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNvcnQiLCB0eXBlZEFycmF5UHJvdG90eXBl
U29ydENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKLSAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VU
X1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgdHlwZWRBcnJheVByb3RvVmll
d0Z1bmNFbnRyaWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMCwgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVf
SU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCB0eXBlZEFycmF5UHJvdG9WaWV3RnVu
Y0VudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAwLCBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImluY2x1ZGVzIiwgdHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNJbmNsdWRlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigi
ZmlsbCIsIHR5cGVkQXJyYXlQcm90b3R5cGVGaWxsQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19CVUlMVElO
X0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZmluZCIsIHR5cGVkQXJyYXlQcm90b3R5cGVG
aW5kQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSkpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSlNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmZvckVhY2gsIHR5cGVkQXJyYXlQcm90b3R5cGVGb3JFYWNoQ29kZUdlbmVyYXRvciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAg
IEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJpbmRleE9mIiwgdHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmRleE9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VU
X1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+am9pbiwgdHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNKb2luLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMSk7Ci0gICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jS2V5cywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIFR5
cGVkQXJyYXlLZXlzSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5
c1B1YmxpY05hbWUoKSwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNLZXlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgVHlwZWRBcnJheUtleXNJ
bnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJs
YXN0SW5kZXhPZiIsIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0Nf
TkFUSVZFX0lOVFJJTlNJQ19HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5LCBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljKTsKICAgICBKU0NfQlVJ
TFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oIm1hcCIsIHR5cGVkQXJyYXlQcm90b3R5
cGVNYXBDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBKU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmoKICAgICBHZXR0ZXJTZXR0ZXIqIHRvU3RyaW5nVGFnQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0b1N0cmluZ1RhZ0Z1bmN0aW9uLCBudWxscHRyKTsK
ICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCB0b1N0cmluZ1RhZ0FjY2Vzc29yLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCi0gICAgSlNGdW5jdGlvbiogdmFsdWVzRnVu
Y3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVy
dHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1ZhbHVlcywg
VHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYyk7CisgICAgSlNGdW5jdGlvbiogdmFsdWVzRnVuY3Rp
b24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpLnN0cmluZygpLCB0eXBlZEFy
cmF5Vmlld1Byb3RvRnVuY1ZhbHVlcywgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYyk7CiAKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpLCB2YWx1ZXNGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgdmFs
dWVzRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCmluZGV4IDNiYWU4N2ViNTQ2OWRkNjliNDBiZjVkMTNiYTQ3ZDkxMDUzZDE2NjIuLjA5NWZi
ZDZiM2Q4Y2M4NjQxMDcxMjk2NDYzNWE0ZTlkNDliZDVhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJM
b29rdXAuaCIKIAogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5sdXQuaCIKQEAgLTQzLDggKzQ0LDYg
QEAgY29uc3QgQ2xhc3NJbmZvIE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAiTWFwIiwgJkJhc2U6
OnNfaW5mbywgJm1hcFByb3RvdHlwZVRhYmwKIC8qIFNvdXJjZSBmb3IgTWFwUHJvdG90eXBlLmx1
dC5oCiBAYmVnaW4gbWFwUHJvdG90eXBlVGFibGUKICAgZm9yRWFjaCAgIEpTQnVpbHRpbiAgRG9u
dEVudW18RnVuY3Rpb24gMAotICB2YWx1ZXMgICAgSlNCdWlsdGluICBEb250RW51bXxGdW5jdGlv
biAwCi0gIGtleXMgICAgICBKU0J1aWx0aW4gIERvbnRFbnVtfEZ1bmN0aW9uIDAKIEBlbmQKICov
CiAKQEAgLTUzLDYgKzUyLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW0KIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJv
dG9GdW5jSGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVu
Y1ZhbHVlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jS2V5cyhKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5j
RW50cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CiAgICAgCkBAIC02NiwxNCArNjgsMTYgQEAgdm9pZCBNYXBQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBK
U0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+Z2V0LCBtYXBQcm90b0Z1bmNHZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU01hcEdldEludHJpbnNpYyk7CiAgICAgSlND
X05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmhhcywgbWFwUHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNNYXBIYXNJbnRyaW5zaWMpOwogICAgIEpTQ19O
QVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5zZXQsIG1hcFByb3RvRnVuY1NldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIDIsIEpTTWFwU2V0SW50cmluc2ljKTsKKyAgICBKU0NfTkFU
SVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgbWFwUHJvdG9GdW5jS2V5cywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIEpTTWFw
S2V5c0ludHJpbnNpYyk7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1Ymxp
Y05hbWUoKSwgbWFwUHJvdG9GdW5jVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgSlNNYXBWYWx1ZXNJbnRyaW5zaWMpOwogCiAgICAg
SlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCksIG1hcFByb3RvRnVuY0dl
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEs
IEpTTWFwR2V0SW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0UHJp
dmF0ZU5hbWUoKSwgbWFwUHJvdG9GdW5jU2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMiwgSlNNYXBTZXRJbnRyaW5zaWMpOwogCi0gICAgSlNG
dW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgbWFwUHJvdG90eXBlRW50
cmllc0NvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVuY3Rpb24qIGVu
dHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgbWFw
UHJvdG9GdW5jRW50cmllcywgSlNNYXBFbnRyaWVzSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50
cmllc1B1YmxpY05hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwg
anNOb250cml2aWFsU3RyaW5nKHZtLCAiTWFwIl9zKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgdm0ucHJvcGVydHlOYW1lcy0+TWFwLnN0cmluZygpKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAog
ICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5zaXplLCBtYXBQcm90b0Z1bmNTaXplLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCkBAIC0xNDAsNiArMTQ0LDMxIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUp
OwogfQogCitpbmxpbmUgSlNWYWx1ZSBjcmVhdGVNYXBJdGVyYXRvck9iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZCBr
aW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CisgICAgSlNNYXAqIG1hcCA9IGdldE1h
cChnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgaWYgKCFtYXApCisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdC0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgbWFwLCBraW5kKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNWYWx1ZXMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjcmVhdGVNYXBJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbWFwUHJvdG9GdW5jS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0
ZU1hcEl0ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBJdGVyYXRpb25LaW5k
OjpLZXlzKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5j
RW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZU1hcEl0ZXJhdG9yT2JqZWN0
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBJdGVyYXRpb25LaW5kOjpFbnRyaWVzKSk7Cit9CisK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBKU01hcCog
bWFwID0gZ2V0TWFwKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRleCA3MTc1
OWQ0YTIyMGQ1NDUwYmMwZTMzMDQxODM0OGNiY2Y3ZWI0YzRmLi4wMGJmYWJlOGU3MGExYzQ1NzM0
NTE0M2QxN2ZiMTFhNDYyZjdhM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJdGVyYXRv
ck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTZXQu
aCIKKyNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAKICNp
bmNsdWRlICJTZXRQcm90b3R5cGUubHV0LmgiCkBAIC00Myw3ICs0NCw2IEBAIGNvbnN0IENsYXNz
SW5mbyBTZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNldCIsICZCYXNlOjpzX2luZm8sICZzZXRQ
cm90b3R5cGVUYWJsCiAvKiBTb3VyY2UgZm9yIFNldEl0ZXJhdG9yUHJvdG90eXBlLmx1dC5oCiBA
YmVnaW4gc2V0UHJvdG90eXBlVGFibGUKICAgZm9yRWFjaCAgIEpTQnVpbHRpbiAgRG9udEVudW18
RnVuY3Rpb24gMAotICBlbnRyaWVzICAgSlNCdWlsdGluICBEb250RW51bXxGdW5jdGlvbiAwCiBA
ZW5kCiAqLwogCkBAIC01MSw3ICs1MSw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHNldFByb3RvRnVuY0FkZChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNDbGVhcihKU0dsb2Jh
bE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc2V0UHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNIYXMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKLQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc2V0UHJvdG9GdW5jVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNFbnRyaWVzKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHNldFByb3RvRnVuY1NpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIApA
QCAtNjQsMTQgKzY1LDE1IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+Y2xlYXIsIHNldFByb3RvRnVu
Y0NsZWFyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+ZGVsZXRlS2V5d29yZCwgc2V0UHJvdG9GdW5jRGVsZXRlLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05B
VElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmhhcywgc2V0UHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNTZXRIYXNJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJ
VkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCBzZXRQcm90b0Z1bmNFbnRyaWVz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwg
SlNTZXRFbnRyaWVzSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaGFz
UHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNTZXRIYXNJbnRyaW5zaWMpOwogICAgIEpT
Q19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hZGRQcml2YXRlTmFtZSgpLCBzZXRQcm90b0Z1bmNBZGQs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBK
U1NldEFkZEludHJpbnNpYyk7CiAKLSAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIHNldFByb3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxP
YmplY3QpOworICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQ
dWJsaWNOYW1lKCkuc3RyaW5nKCksIHNldFByb3RvRnVuY1ZhbHVlcywgSlNTZXRWYWx1ZXNJbnRy
aW5zaWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIHZhbHVlcywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5r
ZXlzUHVibGljTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNO
b250cml2aWFsU3RyaW5nKHZtLCAiU2V0Il9zKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuU2V0UHVibGlj
TmFtZSgpLnN0cmluZygpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLCBzZXRQcm90b0Z1bmNTaXplLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCkBA
IC0xMzcsNCArMTM5LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9G
dW5jU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihzZXQtPnNpemUoKSkpOwogfQogCitpbmxpbmUgSlNWYWx1
ZSBjcmVhdGVTZXRJdGVyYXRvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZCBraW5kKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCk7CisgICAgSlNTZXQqIHNldCA9IGdldFNldChnbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSk7CisgICAgaWYgKCFzZXQpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IHJldHVybiBKU1NldEl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c2V0SXRlcmF0
b3JTdHJ1Y3R1cmUoKSwgc2V0LCBraW5kKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzZXRQcm90b0Z1bmNWYWx1ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVT
ZXRJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZDo6
VmFsdWVzKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5j
RW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZVNldEl0ZXJhdG9yT2JqZWN0
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBJdGVyYXRpb25LaW5kOjpFbnRyaWVzKSk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA2OWU1MmVhNjY3YzI1NDI5
YmUwOTY1ZmI0MjFkOWI4OGM5NzAyNmRlLi5iMDIwMDQ5MWE4OWU4NzFlODg2ZGZmMGQ1MDRmY2M5
ZWM0MmJmZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNTQ5LDIw
ICsxNTQ5LDYgQEAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1CRVJfU0xPVyhtb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGkKIAogI3VuZGVmIERZTkFNSUNfU1BB
Q0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKIAotU3RydWN0dXJlKiBWTTo6c2V0SXRlcmF0
b3JTdHJ1Y3R1cmVTbG93KCkKLXsKLSAgICBBU1NFUlQoIW1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUp
OwotICAgIG1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NldEl0ZXJhdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgcmV0dXJuIG1fc2V0SXRl
cmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7Ci19Ci0KLVN0cnVjdHVyZSogVk06Om1hcEl0ZXJhdG9yU3Ry
dWN0dXJlU2xvdygpCi17Ci0gICAgQVNTRVJUKCFtX21hcEl0ZXJhdG9yU3RydWN0dXJlKTsKLSAg
ICBtX21hcEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNNYXBJdGVyYXRvcjo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHJldHVybiBtX21hcEl0ZXJhdG9y
U3RydWN0dXJlLmdldCgpOwotfQotCiBKU0NlbGwqIFZNOjpzZW50aW5lbFNldEJ1Y2tldFNsb3co
KQogewogICAgIEFTU0VSVCghbV9zZW50aW5lbFNldEJ1Y2tldCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAppbmRleCA5ZTk4ZDUzYzUzYTRmN2ZmZGE0ZjA2ZWRhZmQ3NzkzNTI5NDQ5YjM4
Li5kYjQxZjBiZDAyYTFiMDY5YjRiMzA1OTk1MGEwYTE3MmI0OTY3YWZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY5OCw5ICs2OTgsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4g
ewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGJpZ0ludFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3RydWN0dXJlOwogCi0gICAgU3Ryb25n
PFN0cnVjdHVyZT4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJl
PiBtX21hcEl0ZXJhdG9yU3RydWN0dXJlOwotCiAgICAgU3Ryb25nPEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcj4gbV9lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAKICAgICBTdHJvbmc8SlND
ZWxsPiBtX3NlbnRpbmVsU2V0QnVja2V0OwpAQCAtNzMzLDIwICs3MzAsNiBAQCBjbGFzcyBWTSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0
Tm9kZTxWTT4gewogCiAgICAgU3Ryb25nPEpTQmlnSW50PiBiaWdJbnRDb25zdGFudE9uZTsKIAot
ICAgIFN0cnVjdHVyZSogc2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKQotICAgIHsKLSAgICAgICAgaWYg
KExJS0VMWShtX3NldEl0ZXJhdG9yU3RydWN0dXJlKSkKLSAgICAgICAgICAgIHJldHVybiBtX3Nl
dEl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOwotICAgICAgICByZXR1cm4gc2V0SXRlcmF0b3JTdHJ1
Y3R1cmVTbG93KCk7Ci0gICAgfQotCi0gICAgU3RydWN0dXJlKiBtYXBJdGVyYXRvclN0cnVjdHVy
ZSgpCi0gICAgewotICAgICAgICBpZiAoTElLRUxZKG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUpKQot
ICAgICAgICAgICAgcmV0dXJuIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7Ci0gICAgICAg
IHJldHVybiBtYXBJdGVyYXRvclN0cnVjdHVyZVNsb3coKTsKLSAgICB9Ci0KICAgICBKU0NlbGwq
IHNlbnRpbmVsU2V0QnVja2V0KCkKICAgICB7CiAgICAgICAgIGlmIChMSUtFTFkobV9zZW50aW5l
bFNldEJ1Y2tldCkpCkBAIC0xMTI3LDEwICsxMTEwLDggQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsK
ICAgICBzdGF0aWMgVk0qJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgdm9pZCBjcmVh
dGVOYXRpdmVUaHVuaygpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKiBzZXRJ
dGVyYXRvclN0cnVjdHVyZVNsb3coKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUq
IG1hcEl0ZXJhdG9yU3RydWN0dXJlU2xvdygpOwotICAgIEpTQ2VsbCogc2VudGluZWxTZXRCdWNr
ZXRTbG93KCk7Ci0gICAgSlNDZWxsKiBzZW50aW5lbE1hcEJ1Y2tldFNsb3coKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU0NlbGwqIHNlbnRpbmVsU2V0QnVja2V0U2xvdygpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTQ2VsbCogc2VudGluZWxNYXBCdWNrZXRTbG93KCk7CiAgICAgSlNQcm9w
ZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3JTbG93KCk7CiAK
ICAgICB2b2lkIHVwZGF0ZVN0YWNrTGltaXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA4NGMxNjRkYTNlMjBh
NWYyNzNjODExZjc4YTM4NzdiYjcyNjM5YzBjLi4xMmM3NmNmMDcyMDhjNDQ5OGEyMjcyMDYyY2M0
YjQ4MDY3ZmU2MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE2OTksNyArMTY5OSw3IEBAIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAg
ICAgICAgICAgICAgSlNNYXAqIGluTWFwID0ganNDYXN0PEpTTWFwKj4oaW5WYWx1ZSk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFzdGFydE1hcChpbk1hcCkpCiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0gSlNNYXBJdGVy
YXRvcjo6Y3JlYXRlKHZtLCB2bS5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCBpbk1hcCwgSXRlcmF0
aW9uS2luZDo6RW50cmllcyk7CisgICAgICAgICAgICAgICAgSlNNYXBJdGVyYXRvciogaXRlcmF0
b3IgPSBKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIG1fbGV4aWNhbEdsb2JhbE9iamVjdC0+bWFw
SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaW5NYXAsIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXMpOwogICAg
ICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhpbk1hcCk7
CiAgICAgICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KGl0
ZXJhdG9yKTsKICAgICAgICAgICAgICAgICBtYXBJdGVyYXRvclN0YWNrLmFwcGVuZChpdGVyYXRv
cik7CkBAIC0xNzQzLDcgKzE3NDMsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgIEpTU2V0KiBp
blNldCA9IGpzQ2FzdDxKU1NldCo+KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghc3Rh
cnRTZXQoaW5TZXQpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBKU1NldEl0ZXJhdG9yKiBpdGVyYXRvciA9IEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2bSwgdm0u
c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaW5TZXQsIEl0ZXJhdGlvbktpbmQ6OktleXMpOworICAg
ICAgICAgICAgICAgIEpTU2V0SXRlcmF0b3IqIGl0ZXJhdG9yID0gSlNTZXRJdGVyYXRvcjo6Y3Jl
YXRlKHZtLCBtX2xleGljYWxHbG9iYWxPYmplY3QtPnNldEl0ZXJhdG9yU3RydWN0dXJlKCksIGlu
U2V0LCBJdGVyYXRpb25LaW5kOjpLZXlzKTsKICAgICAgICAgICAgICAgICBtX2djQnVmZmVyLmFw
cGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3coaW5TZXQpOwogICAgICAgICAgICAgICAgIG1fZ2NCdWZm
ZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhpdGVyYXRvcik7CiAgICAgICAgICAgICAgICAg
c2V0SXRlcmF0b3JTdGFjay5hcHBlbmQoaXRlcmF0b3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmMThmZDZlYjU1OTgwNWQ4Yzk1OTQ4
MDUwZTk2ZjI1MjIxNmM2ZmE5Li44ZDFmMzhiZTM3MTJlYWE1Y2M4Y2U0Y2FkZmMxYjZkNGZiYjVk
MjI0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA0LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IEpTTWFwSXRlcmF0b3IvSlNTZXRJ
dGVyYXRvciB3aXRoIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDAyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL21hcC1pdGVyYXRpb24tb2Fz
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgor
ICAgICAgICAqIHN0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChpLnNob3VsZFRocm93KToKKyAgICAgICAg
KHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToKKyAgICAgICAgKiBzdHJlc3Mvc2V0LWl0ZXJhdGlv
bi1vYXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9z
ZXQtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
VGhyb3cpOgorICAgICAgICAoc2V0IHNob3VsZFRocm93KToKKyAgICAgICAgKiBzdHJlc3Mvc2V0
LWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAoaS5zaG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0
ZXN0Myk6CisKIDIwMjAtMDQtMDUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwu
Y29tPgogCiAgICAgICAgIE9jdGFsIGVzY2FwZXMgc2hvdWxkIGJlIG1heCAzIGRpZ2l0cyBhbmQg
c3ludGF4IGVycm9ycyBpbiBVbmljb2RlIHBhdHRlcm5zCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9tYXAtaXRlcmF0aW9uLW9hcy5qcyBiL0pTVGVzdHMvc3RyZXNzL21hcC1pdGVyYXRpb24t
b2FzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY2NjFjNGY0ZDQ0OGFmNTJmNDk2OTBjMzAyMWFjNmQ3YWQ1ZmZh
MjQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9tYXAtaXRlcmF0aW9uLW9hcy5q
cwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCit2YXIgbWFwID0gbmV3IE1hcDsKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgbWFwLnNldChpLCBpKTsKKworZnVuY3Rpb24g
dGVzdChtYXApIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBbYSwgYl0gb2Yg
bWFwKSB7CisgICAgICAgIHJlc3VsdCArPSBhOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAg
c2hvdWxkQmUodGVzdChtYXApLCA0OTUwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL21h
cC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLWRmZy5qcyBiL0pTVGVzdHMvc3RyZXNzL21hcC1pdGVy
YXRvci1jcmVhdGlvbi1mYWlsLWRmZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjAwNjY3YzQyYmI4ZTNjODE5
YmEyMTcwMjdkN2I4MzNhMzI4OTFjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
bWFwLWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwtZGZnLmpzCkBAIC0wLDAgKzEsNTQgQEAKK2Z1bmN0
aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93
biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVu
YygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAg
ICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBl
cnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmlu
ZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKG1hcCkKK3sKKyAgICBNYXAucHJvdG90
eXBlLnZhbHVlcy5jYWxsKG1hcCk7Cit9Citub0lubGluZSh0ZXN0MSk7CisKK3ZhciBtYXAgPSBu
ZXcgTWFwKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHRlc3QxKG1hcCk7
CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICB0ZXN0MSh7fSk7Cit9LCBgVHlwZUVycm9yOiBN
YXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVjdGApOworCitmdW5jdGlvbiB0ZXN0
MihtYXApCit7CisgICAgTWFwLnByb3RvdHlwZS5rZXlzLmNhbGwobWFwKTsKK30KK25vSW5saW5l
KHRlc3QyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICB0ZXN0MihtYXAp
OworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgdGVzdDIoe30pOworfSwgYFR5cGVFcnJvcjog
TWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3RgKTsKKworZnVuY3Rpb24gdGVz
dDMobWFwKQoreworICAgIE1hcC5wcm90b3R5cGUuZW50cmllcy5jYWxsKG1hcCk7Cit9Citub0lu
bGluZSh0ZXN0Myk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgdGVzdDMo
bWFwKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIHRlc3QzKHt9KTsKK30sIGBUeXBlRXJy
b3I6IE1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2JqZWN0YCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC5qcyBiL0pTVGVzdHMv
c3RyZXNzL21hcC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOGUzZGY1
NGY2ZTA4MjY4ODVlM2Q0YmUxM2YyNzMwMjRlNjMxZDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC5qcwpAQCAtMCwwICsxLDUwIEBA
CitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJy
b3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAg
ICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1
ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9y
KSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjog
JHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiB0ZXN0MSgpCit7CisgICAgTWFwLnBy
b3RvdHlwZS52YWx1ZXMuY2FsbCh7fSk7Cit9Citub0lubGluZSh0ZXN0MSk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAg
IHRlc3QxKCk7CisgICAgfSwgYFR5cGVFcnJvcjogTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9u
LU1hcCBvYmplY3RgKTsKK30KKworZnVuY3Rpb24gdGVzdDIoKQoreworICAgIE1hcC5wcm90b3R5
cGUua2V5cy5jYWxsKHt9KTsKK30KK25vSW5saW5lKHRlc3QyKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTM7ICsraSkgeworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgdGVzdDIo
KTsKKyAgICB9LCBgVHlwZUVycm9yOiBNYXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9i
amVjdGApOworfQorCitmdW5jdGlvbiB0ZXN0MygpCit7CisgICAgTWFwLnByb3RvdHlwZS5lbnRy
aWVzLmNhbGwoe30pOworfQorbm9JbmxpbmUodGVzdDMpOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDFlMzsgKytpKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICB0ZXN0MygpOwor
ICAgIH0sIGBUeXBlRXJyb3I6IE1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2JqZWN0
YCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0aW9uLW9hcy5qcyBi
L0pTVGVzdHMvc3RyZXNzL3NldC1pdGVyYXRpb24tb2FzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4MjhiMDVm
MmJhNzA2ODA2NjUzYTQ0MDI3NjY0ODRiNDM5OGQ5OWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9zZXQtaXRlcmF0aW9uLW9hcy5qcwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KworCit2YXIgc2V0ID0gbmV3IFNldDsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisg
ICAgc2V0LmFkZChpKTsKKworZnVuY3Rpb24gdGVzdChzZXQpIHsKKyAgICB2YXIgcmVzdWx0ID0g
MDsKKyAgICBmb3IgKGxldCBhIG9mIHNldCkgeworICAgICAgICByZXN1bHQgKz0gYTsKKyAgICB9
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKHRlc3Qoc2V0KSwgNDk1MCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanMgYi9K
U1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2Q3NTNkNDY4NDZiMWFkNDgwZjU2OWE3MDg4MTRlNjU1MmRiYTExMgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3NldC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLWRmZy5qcwpA
QCAtMCwwICsxLDU0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2Up
IHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOwor
ICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVy
cm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVy
cm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBp
ZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiB0ZXN0MShz
ZXQpCit7CisgICAgU2V0LnByb3RvdHlwZS52YWx1ZXMuY2FsbChzZXQpOworfQorbm9JbmxpbmUo
dGVzdDEpOworCit2YXIgc2V0ID0gbmV3IFNldCgpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7
ICsraSkKKyAgICB0ZXN0MShzZXQpOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgdGVzdDEo
e30pOworfSwgYFR5cGVFcnJvcjogU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLVNldCBvYmpl
Y3RgKTsKKworZnVuY3Rpb24gdGVzdDIoc2V0KQoreworICAgIFNldC5wcm90b3R5cGUua2V5cy5j
YWxsKHNldCk7Cit9Citub0lubGluZSh0ZXN0Mik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2
OyArK2kpCisgICAgdGVzdDIoc2V0KTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIHRlc3Qy
KHt9KTsKK30sIGBUeXBlRXJyb3I6IFNldCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2Jq
ZWN0YCk7CisKK2Z1bmN0aW9uIHRlc3QzKHNldCkKK3sKKyAgICBTZXQucHJvdG90eXBlLmVudHJp
ZXMuY2FsbChzZXQpOworfQorbm9JbmxpbmUodGVzdDMpOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDFlMzsgKytpKQorICAgIHRlc3QzKHNldCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICB0
ZXN0Myh7fSk7Cit9LCBgVHlwZUVycm9yOiBTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tU2V0
IG9iamVjdGApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0ZXJhdG9yLWNyZWF0
aW9uLWZhaWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lMWFhOTk3MTk4MTFjM2UzNWU5NTZkM2IwZTJiOTdiZWJmMjdhMWI4Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0ZXJhdG9yLWNyZWF0aW9uLWZh
aWwuanMKQEAgLTAsMCArMSw1MCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JN
ZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAg
aWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7
CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24g
dGVzdDEoKQoreworICAgIFNldC5wcm90b3R5cGUudmFsdWVzLmNhbGwoe30pOworfQorbm9Jbmxp
bmUodGVzdDEpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgc2hvdWxk
VGhyb3coKCkgPT4geworICAgICAgICB0ZXN0MSgpOworICAgIH0sIGBUeXBlRXJyb3I6IFNldCBv
cGVyYXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qy
KCkKK3sKKyAgICBTZXQucHJvdG90eXBlLmtleXMuY2FsbCh7fSk7Cit9Citub0lubGluZSh0ZXN0
Mik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICBzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgICAgIHRlc3QyKCk7CisgICAgfSwgYFR5cGVFcnJvcjogU2V0IG9wZXJhdGlv
biBjYWxsZWQgb24gbm9uLVNldCBvYmplY3RgKTsKK30KKworZnVuY3Rpb24gdGVzdDMoKQorewor
ICAgIFNldC5wcm90b3R5cGUuZW50cmllcy5jYWxsKHt9KTsKK30KK25vSW5saW5lKHRlc3QzKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgIHNob3VsZFRocm93KCgpID0+
IHsKKyAgICAgICAgdGVzdDMoKTsKKyAgICB9LCBgVHlwZUVycm9yOiBTZXQgb3BlcmF0aW9uIGNh
bGxlZCBvbiBub24tU2V0IG9iamVjdGApOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395552</attachid>
            <date>2020-04-06 00:48:50 -0700</date>
            <delta_ts>2020-04-06 00:57:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210023-20200406004849.patch</filename>
            <type>text/plain</type>
            <size>126638</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjVhMmMwZWU3NjJmOTE1MzY2ZTFiMGEwYjI4OGM2NDMxOTJmZjNkLi41ODlmZWU0OWY4ZTZjNjRl
YWQzMTM1YjkxZmYwYjdhNTU0NjEyM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDggQEAKKzIwMjAtMDQtMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgSlNNYXBJdGVyYXRvci9KU1NldEl0ZXJhdG9y
IHdpdGggSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWltcGxlbWVudCBKU01hcEl0ZXJh
dG9yL0pTU2V0SXRlcmF0b3Igd2l0aCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLgorICAgICAg
ICBUaGlzIG1ha2VzIGN1cnJlbnQgSlNGaW5hbE9iamVjdC1iYXNlZCBNYXAvU2V0SXRlcmF0b3Ig
c2ltcGxlIGFuZCBzbWFsbC4KKyAgICAgICAgV2UgZ2VuZXJhbGl6ZSBOZXdBcnJheUl0ZXJhdG9y
L1BoYW50b21OZXdBcnJheUl0ZXJhdG9yIHRvIGNvbnZlcnQgdGhlbSB0byBOZXdJbnRlcm5hbEZp
ZWxkT2JqZWN0L1BoYW50b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0CisgICAgICAgIHRvIHN1cHBv
cnQgSlNNYXBJdGVyYXRvci9KU1NldEl0ZXJhdG9yIHRvbyBpbiBERkcgLyBGVEwuIFRoaXMgbWFr
ZXMgYWxsb2NhdGlvbiBlZmZpY2llbnQgYW5kIG9iamVjdC1hbGxvY2F0aW9uLXNpbmtpbmcgYXdh
cmUuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWls
dGlucy9NYXBJdGVyYXRvclByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubWFw
SXRlcmF0b3JOZXh0KToKKyAgICAgICAgKG5leHQpOgorICAgICAgICAqIGJ1aWx0aW5zL01hcFBy
b3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuTWFwSXRlcmF0b3IpOiBEZWxldGVk
LgorICAgICAgICAodmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKGtleXMpOiBEZWxldGVkLgor
ICAgICAgICAoZW50cmllcyk6IERlbGV0ZWQuCisgICAgICAgICogYnVpbHRpbnMvU2V0SXRlcmF0
b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnNldEl0ZXJhdG9yTmV4dCk6
CisgICAgICAgIChuZXh0KToKKyAgICAgICAgKiBidWlsdGlucy9TZXRQcm90b3R5cGUuanM6Cisg
ICAgICAgIChnbG9iYWxQcml2YXRlLlNldEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKHZh
bHVlcyk6IERlbGV0ZWQuCisgICAgICAgIChlbnRyaWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdElzTWFwSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdElzU2V0SXRlcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjptYXBJdGVyYXRvckludGVybmFsRmllbGRJbmRleCk6
CisgICAgICAgIChKU0M6OnNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRNYXBJdGVyYXRv
ckludGVybmFsRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVt
aXRfaW50cmluc2ljX2dldFNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0TWFwSXRlcmF0b3JJbnRl
cm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19wdXRTZXRJdGVyYXRvckludGVybmFsRmllbGQpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0
YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50
b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzUGhhbnRvbUFsbG9jYXRpb24p
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b21OZXdBcnJheUl0ZXJh
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBk
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RG
R09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAg
ICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXN5bmNHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3SW50ZXJuYWxG
aWVsZE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdBcnJheUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVj
dEltcGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZU5ld0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5
SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAg
KEpTQzo6RlRMOjpvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0luamVjdGVkU2NyaXB0SG9zdDo6c3VidHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpjbG9uZU1hcEl0ZXJhdG9yT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6Y2xvbmVT
ZXRJdGVyYXRvck9iamVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjppdGVyYXRvckVudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6Omlu
dHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5SXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWFwSXRlcmF0
b3JQcm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2V0SXRl
cmF0b3JQcm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWFw
SXRlcmF0b3JTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
c2V0SXRlcmF0b3JTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTTWFwSXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFs
VmFsdWVzKToKKyAgICAgICAgKEpTQzo6SlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpKU01hcEl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0pTTWFwSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2V0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKU1NldEl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVl
cyk6CisgICAgICAgIChKU0M6OkpTU2V0SXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNTZXRJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9KU1NldEl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuY3BwOgorICAgICAg
ICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjcmVhdGVNYXBJdGVyYXRvck9iamVjdCk6
CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgIChKU0M6Om1hcFBy
b3RvRnVuY0tleXMpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNFbnRyaWVzKToKKyAgICAg
ICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlNldFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjcmVhdGVTZXRJdGVyYXRvck9iamVj
dCk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgIChKU0M6OnNl
dFByb3RvRnVuY0VudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6c2V0SXRlcmF0b3JTdHJ1Y3R1cmVTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Vk06Om1hcEl0ZXJhdG9yU3RydWN0dXJlU2xvdyk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6c2V0SXRlcmF0b3JTdHJ1Y3R1cmUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpWTTo6bWFwSXRlcmF0b3JTdHJ1Y3R1cmUpOiBEZWxldGVkLgor
CiAyMDIwLTA0LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gSlNBcnJheUl0ZXJhdG9yJ3Mgc2l6ZSBpcyB3cm9uZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU4
ODI5MmE5MmU4MjVmZjc0MDUyMTgzMDM5MzgyYjFjM2ZkNmU5MzUuLjBmZjliYTVlMjMwMjNiMGIw
ODdkOTgwODg4M2ZhNjlhOTA3NTdmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MC0wNC0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtK
U0NdIEltcGxlbWVudCBKU01hcEl0ZXJhdG9yL0pTU2V0SXRlcmF0b3Igd2l0aCBKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTAwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisKIDIwMjAtMDQtMDQgIFJv
YiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgTG9ja0hpc3Rvcnkg
cGFyYW1ldGVyIGZyb20gbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMTk3MGM5ZjQzMDYwODcyMWEy
YTMyNTZiMjZlMmU0NmIzYzgzYTZkMi4uOTE1N2VjNWZlMzdjNTkxNmRjNzM0OWExOWY3ZGVjNWQ2
MGM3YWZmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuaApAQCAtODUsNiArODUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhyZXBlYXRD
aGFyYWN0ZXIpIFwKICAgICBtYWNybyhzdGFyRGVmYXVsdCkgXAogICAgIG1hY3JvKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbikgXAorICAgIG1hY3JvKGtleXMpIFwKKyAgICBtYWNybyh2YWx1ZXMp
IFwKICAgICBtYWNybyhnZXQpIFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaGlmdCkg
XApAQCAtMTI4LDE3ICsxMzAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8ocmVwbGFj
ZVVzaW5nU3RyaW5nU2VhcmNoKSBcCiAgICAgbWFjcm8ocmVwbGFjZUFsbFVzaW5nU3RyaW5nU2Vh
cmNoKSBcCiAgICAgbWFjcm8obWFrZVR5cGVFcnJvcikgXAotICAgIG1hY3JvKG1hcEJ1Y2tldCkg
XAogICAgIG1hY3JvKG1hcEJ1Y2tldEhlYWQpIFwKICAgICBtYWNybyhtYXBCdWNrZXROZXh0KSBc
CiAgICAgbWFjcm8obWFwQnVja2V0S2V5KSBcCiAgICAgbWFjcm8obWFwQnVja2V0VmFsdWUpIFwK
LSAgICBtYWNybyhtYXBJdGVyYXRvcktpbmQpIFwKLSAgICBtYWNybyhzZXRCdWNrZXQpIFwKICAg
ICBtYWNybyhzZXRCdWNrZXRIZWFkKSBcCiAgICAgbWFjcm8oc2V0QnVja2V0TmV4dCkgXAogICAg
IG1hY3JvKHNldEJ1Y2tldEtleSkgXAotICAgIG1hY3JvKHNldEl0ZXJhdG9yS2luZCkgXAogICAg
IG1hY3JvKHJlZ0V4cEJ1aWx0aW5FeGVjKSBcCiAgICAgbWFjcm8ocmVnRXhwTWF0Y2hGYXN0KSBc
CiAgICAgbWFjcm8ocmVnRXhwUHJvdG9GbGFnc0dldHRlcikgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IGZm
ZmNlZThhMzRjNjA4OTQzZTEwZmY5MDk0YzBjOWIyYTMxNzA3YTEuLjY5NDAzMWI4YTBkMGU2NDZk
YTNmMjYxNGEwYjExMzc5OTIwOWMzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9NYXBJdGVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvTWFwSXRlcmF0b3JQcm90b3R5cGUuanMKQEAgLTMxLDcgKzMxLDcgQEAg
ZnVuY3Rpb24gbWFwSXRlcmF0b3JOZXh0KGJ1Y2tldCwga2luZCkKICAgICB2YXIgdmFsdWU7CiAK
ICAgICBidWNrZXQgPSBAbWFwQnVja2V0TmV4dChidWNrZXQpOwotICAgIEBwdXRCeUlkRGlyZWN0
UHJpdmF0ZSh0aGlzLCAibWFwQnVja2V0IiwgYnVja2V0KTsKKyAgICBAcHV0TWFwSXRlcmF0b3JJ
bnRlcm5hbEZpZWxkKHRoaXMsIEBtYXBJdGVyYXRvckZpZWxkTWFwQnVja2V0LCBidWNrZXQpOwog
ICAgIHZhciBkb25lID0gYnVja2V0ID09PSBAc2VudGluZWxNYXBCdWNrZXQ7CiAgICAgaWYgKCFk
b25lKSB7CiAgICAgICAgIHZhciBrZXkgPSBAbWFwQnVja2V0S2V5KGJ1Y2tldCk7CkBAIC00OCwx
MSArNDgsMTAgQEAgZnVuY3Rpb24gbmV4dCgpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAg
aWYgKEBpc1VuZGVmaW5lZE9yTnVsbCh0aGlzKSkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCIl
TWFwSXRlcmF0b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwgb3IgdW5kZWZpbmVkIik7CisgICAgaWYgKCFAaXNNYXBJdGVyYXRvcih0aGlzKSkKKyAgICAg
ICAgQHRocm93VHlwZUVycm9yKCIlTWFwSXRlcmF0b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMg
dGhhdCB8dGhpc3wgYmUgYW4gTWFwIEl0ZXJhdG9yIGluc3RhbmNlIik7CiAKLSAgICB2YXIgYnVj
a2V0ID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJtYXBCdWNrZXQiKTsKLSAgICBpZiAo
YnVja2V0ID09PSBAdW5kZWZpbmVkKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVNYXBJdGVy
YXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhIE1hcCBJdGVyYXRv
ciBpbnN0YW5jZSIpOwotICAgIHJldHVybiBAbWFwSXRlcmF0b3JOZXh0LkBjYWxsKHRoaXMsIGJ1
Y2tldCwgQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJtYXBJdGVyYXRvcktpbmQiKSk7Cisg
ICAgdmFyIGJ1Y2tldCA9IEBnZXRNYXBJdGVyYXRvckludGVybmFsRmllbGQodGhpcywgQG1hcEl0
ZXJhdG9yRmllbGRNYXBCdWNrZXQpOworICAgIHZhciBraW5kID0gQGdldE1hcEl0ZXJhdG9ySW50
ZXJuYWxGaWVsZCh0aGlzLCBAbWFwSXRlcmF0b3JGaWVsZEtpbmQpOworICAgIHJldHVybiBAbWFw
SXRlcmF0b3JOZXh0LkBjYWxsKHRoaXMsIGJ1Y2tldCwga2luZCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcFByb3RvdHlwZS5qcwppbmRleCA4YTViZDNjMjZmN2Vh
MTU1NGVjYjA5YTE4MzVmMTRlZGQzZGRkZGM3Li5jYzZiM2FhZGZmNjU3MTJkODk2MjM2YWI5ZWVk
NWE4NmRhZjNlODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
TWFwUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBQ
cm90b3R5cGUuanMKQEAgLTIzLDQ4ICsyMyw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUBj
b25zdHJ1Y3RvcgotQGdsb2JhbFByaXZhdGUKLWZ1bmN0aW9uIE1hcEl0ZXJhdG9yKGl0ZXJhdGVk
T2JqZWN0LCBraW5kKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIEBhc3NlcnQoQGlzTWFw
KGl0ZXJhdGVkT2JqZWN0KSk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJpdGVy
YXRlZE9iamVjdCIsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUo
dGhpcywgIm1hcEl0ZXJhdG9yS2luZCIsIGtpbmQpOwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZSh0aGlzLCAibWFwQnVja2V0IiwgQG1hcEJ1Y2tldEhlYWQoaXRlcmF0ZWRPYmplY3QpKTsKLX0K
LQotZnVuY3Rpb24gdmFsdWVzKCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBp
c01hcCh0aGlzKSkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJNYXAucHJvdG90eXBlLnZhbHVl
cyByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBNYXAiKTsKLQotICAgIHJldHVybiBuZXcgQE1hcEl0
ZXJhdG9yKHRoaXMsIEBpdGVyYXRpb25LaW5kVmFsdWUpOwotfQotCi1mdW5jdGlvbiBrZXlzKCkK
LXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBpc01hcCh0aGlzKSkKLSAgICAgICAg
QHRocm93VHlwZUVycm9yKCJNYXAucHJvdG90eXBlLmtleXMgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
YmUgTWFwIik7Ci0KLSAgICByZXR1cm4gbmV3IEBNYXBJdGVyYXRvcih0aGlzLCBAaXRlcmF0aW9u
S2luZEtleSk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJpZXMoKQotewotICAgICJ1c2Ugc3RyaWN0IjsK
LQotICAgIGlmICghQGlzTWFwKHRoaXMpKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk1hcC5w
cm90b3R5cGUuZW50cmllcyByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBNYXAiKTsKLQotICAgIHJl
dHVybiBuZXcgQE1hcEl0ZXJhdG9yKHRoaXMsIEBpdGVyYXRpb25LaW5kRW50cmllcyk7Ci19Ci0K
IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiB7CiAgICAgInVzZSBz
dHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NldEl0
ZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NldEl0
ZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IGU5Y2U4ZjBhNjdjMDc1ZTI0YzhhMjIxY2Y0MWIwOTFl
ZDdjYzZlMDEuLjliYjBlZDllOGYzMjVjZjczNjY0ZTUwNjE2ODhkMWY1ZGE3OGY3MjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TZXRJdGVyYXRvclByb3RvdHlw
ZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90
b3R5cGUuanMKQEAgLTMxLDcgKzMxLDcgQEAgZnVuY3Rpb24gc2V0SXRlcmF0b3JOZXh0KGJ1Y2tl
dCwga2luZCkKICAgICB2YXIgdmFsdWU7CiAKICAgICBidWNrZXQgPSBAc2V0QnVja2V0TmV4dChi
dWNrZXQpOwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic2V0QnVja2V0IiwgYnVj
a2V0KTsKKyAgICBAcHV0U2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBzZXRJdGVyYXRv
ckZpZWxkU2V0QnVja2V0LCBidWNrZXQpOwogICAgIHZhciBkb25lID0gYnVja2V0ID09PSBAc2Vu
dGluZWxTZXRCdWNrZXQ7CiAgICAgaWYgKCFkb25lKSB7CiAgICAgICAgIHZhbHVlID0gQHNldEJ1
Y2tldEtleShidWNrZXQpOwpAQCAtNDUsMTEgKzQ1LDEwIEBAIGZ1bmN0aW9uIG5leHQoKQogewog
ICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmIChAaXNVbmRlZmluZWRPck51bGwodGhpcykpCi0g
ICAgICAgIEB0aHJvd1R5cGVFcnJvcigiJVNldEl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0IHJlcXVp
cmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwotCi0gICAgdmFyIGJ1
Y2tldCA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic2V0QnVja2V0Iik7Ci0gICAgaWYg
KGJ1Y2tldCA9PT0gQHVuZGVmaW5lZCkKKyAgICBpZiAoIUBpc1NldEl0ZXJhdG9yKHRoaXMpKQog
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVTZXRJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1
aXJlcyB0aGF0IHx0aGlzfCBiZSBhIFNldCBJdGVyYXRvciBpbnN0YW5jZSIpOwotICAgIHJldHVy
biBAc2V0SXRlcmF0b3JOZXh0LkBjYWxsKHRoaXMsIGJ1Y2tldCwgQGdldEJ5SWREaXJlY3RQcml2
YXRlKHRoaXMsICJzZXRJdGVyYXRvcktpbmQiKSk7CisKKyAgICB2YXIgYnVja2V0ID0gQGdldFNl
dEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAc2V0SXRlcmF0b3JGaWVsZFNldEJ1Y2tldCk7
CisgICAgdmFyIGtpbmQgPSBAZ2V0U2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBzZXRJ
dGVyYXRvckZpZWxkS2luZCk7CisgICAgcmV0dXJuIEBzZXRJdGVyYXRvck5leHQuQGNhbGwodGhp
cywgYnVja2V0LCBraW5kKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9TZXRQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
U2V0UHJvdG90eXBlLmpzCmluZGV4IDZkZjhlOGZkZDk5ZDFkMzE2NWExZjFlNDAxNGYzNWIyMzFh
YzE3NWQuLmZjYjQ2ODhhYjI5MWFiYTk0Y2Q2YjBmMmI3Mzk3MDIwMTE5Y2U4YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TZXRQcm90b3R5cGUuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcwpAQCAtMjMsMzgg
KzIzLDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotQGNvbnN0cnVjdG9yCi1AZ2xvYmFsUHJp
dmF0ZQotZnVuY3Rpb24gU2V0SXRlcmF0b3IoaXRlcmF0ZWRPYmplY3QsIGtpbmQpCi17Ci0gICAg
InVzZSBzdHJpY3QiOwotCi0gICAgQGFzc2VydChAaXNTZXQoaXRlcmF0ZWRPYmplY3QpKTsKLSAg
ICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhpcywgIml0ZXJhdGVkT2JqZWN0IiwgaXRlcmF0ZWRP
YmplY3QpOwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic2V0SXRlcmF0b3JLaW5k
Iiwga2luZCk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJzZXRCdWNrZXQiLCBA
c2V0QnVja2V0SGVhZChpdGVyYXRlZE9iamVjdCkpOwotfQotCi1mdW5jdGlvbiB2YWx1ZXMoKQot
ewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlzU2V0KHRoaXMpKQotICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIlNldC5wcm90b3R5cGUudmFsdWVzIHJlcXVpcmVzIHRoYXQgfHRoaXN8
IGJlIFNldCIpOwotCi0gICAgcmV0dXJuIG5ldyBAU2V0SXRlcmF0b3IodGhpcywgQGl0ZXJhdGlv
bktpbmRWYWx1ZSk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJpZXMoKQotewotICAgICJ1c2Ugc3RyaWN0
IjsKLQotICAgIGlmICghQGlzU2V0KHRoaXMpKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlNl
dC5wcm90b3R5cGUuZW50cmllcyByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBTZXQiKTsKLQotICAg
IHJldHVybiBuZXcgQFNldEl0ZXJhdG9yKHRoaXMsIEBpdGVyYXRpb25LaW5kRW50cmllcyk7Ci19
Ci0KIGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiB7CiAgICAgInVz
ZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IDMyYWFmODdmNGM1NmEwNDg2
NjQ0OGU0NzljNTM5YTc2M2ExOWNhMTAuLmFmODNlMzEyZjAxNWM5OGI3YzU4Nzc0Yzc4ZDY0ZTVh
ZWE5NWRmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTM2LDggKzM2LDEwIEBACiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNNb2R1bGVMb2FkZXIuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJK
U1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgogI2luY2x1ZGUg
Ik5vZGVzLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgpAQCAtOTIsNiArOTQsMTAgQEAg
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYg
dm0pCiAgICAgbV9hcnJheUl0ZXJhdG9yRmllbGRJdGVyYXRlZE9iamVjdC5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0
ZWRPYmplY3QpKSk7CiAgICAgbV9hcnJheUl0ZXJhdG9yRmllbGRJbmRleC5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgp
KSk7CiAgICAgbV9hcnJheUl0ZXJhdG9yRmllbGRLaW5kLnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpLaW5kKSkpOworICAgIG1f
bWFwSXRlcmF0b3JGaWVsZE1hcEJ1Y2tldC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNNYXBJdGVyYXRvcjo6RmllbGQ6Ok1hcEJ1Y2tldCkpKTsKKyAgICBtX21hcEl0
ZXJhdG9yRmllbGRLaW5kLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U01hcEl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpKTsKKyAgICBtX3NldEl0ZXJhdG9yRmllbGRTZXRC
dWNrZXQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTU2V0SXRlcmF0
b3I6OkZpZWxkOjpTZXRCdWNrZXQpKSk7CisgICAgbV9zZXRJdGVyYXRvckZpZWxkS2luZC5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNTZXRJdGVyYXRvcjo6RmllbGQ6
OktpbmQpKSk7CiAgICAgbV9zdHJpbmdJdGVyYXRvckZpZWxkSW5kZXguc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTU3RyaW5nSXRlcmF0b3I6OkZpZWxkOjpJbmRleCkp
KTsKICAgICBtX3N0cmluZ0l0ZXJhdG9yRmllbGRJdGVyYXRlZFN0cmluZy5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNTdHJpbmdJdGVyYXRvcjo6RmllbGQ6Okl0ZXJh
dGVkU3RyaW5nKSkpOwogICAgIG1fYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24uc2V0
KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0FzeW5jR2VuZXJhdG9yOjpG
aWVsZDo6U3VzcGVuZFJlYXNvbikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCmluZGV4IDliZjJjNDBl
MTdiZDM0NzE1M2I2YjM5NmY2MmVmYjZiZTliNDkwOTEuLjY3MGViOGViN2FlYTJlYTQzN2QxOTBh
YWEyODk2MDc1ZmFmNTI3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaApAQCAtNDcsNiArNDcsOCBA
QCBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90OwogICAgIG1hY3JvKGdldEFz
eW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGdldEFycmF5SXRlcmF0b3JJ
bnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8oZ2V0U3RyaW5nSXRlcmF0b3JJbnRlcm5hbEZpZWxk
KSBcCisgICAgbWFjcm8oZ2V0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBcCisgICAgbWFjcm8o
Z2V0U2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8oaWRXaXRoUHJvZmlsZSkg
XAogICAgIG1hY3JvKGlzT2JqZWN0KSBcCiAgICAgbWFjcm8oaXNKU0FycmF5KSBcCkBAIC02MCw2
ICs2Miw4IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAgICAgbWFj
cm8oaXNTZXQpIFwKICAgICBtYWNybyhpc1N0cmluZ0l0ZXJhdG9yKSBcCiAgICAgbWFjcm8oaXNB
cnJheUl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXNNYXBJdGVyYXRvcikgXAorICAgIG1hY3JvKGlz
U2V0SXRlcmF0b3IpIFwKICAgICBtYWNybyhpc1VuZGVmaW5lZE9yTnVsbCkgXAogICAgIG1hY3Jv
KHRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cykgXAogICAgIG1hY3JvKHRocm93VHlwZUVycm9yKSBc
CkBAIC03NSw2ICs3OSw4IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7
CiAgICAgbWFjcm8ocHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8o
cHV0QXJyYXlJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhwdXRTdHJpbmdJdGVy
YXRvckludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhwdXRNYXBJdGVyYXRvckludGVybmFsRmll
bGQpIFwKKyAgICBtYWNybyhwdXRTZXRJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNy
byh0b051bWJlcikgXAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCiAgICAgbWFjcm8odG9PYmplY3Qp
IFwKQEAgLTEyMyw5ICsxMjksMTIgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50
MzJfdDsKICAgICBtYWNybyhHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCkgXAogICAgIG1hY3JvKEdl
bmVyYXRvclN0YXRlRXhlY3V0aW5nKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvckZpZWxkSW5k
ZXgpIFwKLSAgICBtYWNybyhhcnJheUl0ZXJhdG9yRmllbGRJc0RvbmUpIFwKICAgICBtYWNybyhh
cnJheUl0ZXJhdG9yRmllbGRJdGVyYXRlZE9iamVjdCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0
b3JGaWVsZEtpbmQpIFwKKyAgICBtYWNybyhtYXBJdGVyYXRvckZpZWxkTWFwQnVja2V0KSBcCisg
ICAgbWFjcm8obWFwSXRlcmF0b3JGaWVsZEtpbmQpIFwKKyAgICBtYWNybyhzZXRJdGVyYXRvckZp
ZWxkU2V0QnVja2V0KSBcCisgICAgbWFjcm8oc2V0SXRlcmF0b3JGaWVsZEtpbmQpIFwKICAgICBt
YWNybyhzdHJpbmdJdGVyYXRvckZpZWxkSW5kZXgpIFwKICAgICBtYWNybyhzdHJpbmdJdGVyYXRv
ckZpZWxkSXRlcmF0ZWRTdHJpbmcpIFwKICAgICBtYWNybyhhc3luY0dlbmVyYXRvckZpZWxkU3Vz
cGVuZFJlYXNvbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDI5ODkzNzQwYTg1YTU4NDllMzk3Mjg4NTY1
MDMyYWU3NGJhZmY1NWIuLmVjMDNmNjk3MmM3ZWY4MzNlZWY4OWYyNDRkYTcwNzQwMTExMjZlYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKQEAgLTg4OSw2ICs4ODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdElzU2V0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3Jj
KSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTU2V0VHlwZSk7IH0KICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU3RyaW5nSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNT
dHJpbmdJdGVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0FycmF5SXRl
cmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0Nl
bGxXaXRoVHlwZShkc3QsIHNyYywgSlNBcnJheUl0ZXJhdG9yVHlwZSk7IH0KKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdElzTWFwSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
cmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNNYXBJdGVyYXRvclR5
cGUpOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1NldEl0ZXJhdG9yKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBz
cmMsIEpTU2V0SXRlcmF0b3JUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNPYmpl
Y3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SXNOdW1iZXIoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0SXNVbmRlZmluZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDY0MGIyNDk3NTVlMTBlY2RkOWE4M2I5ZTE0YjA5N2FiMzlmZDA5
NGYuLmE0N2IxYzNhNzAyZjIwOGE3ZDczOTVlNzcwMDZkNzdlNTZkYWVjZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAg
LTQwLDYgKzQwLDggQEAKICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKKyNpbmNsdWRl
ICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAi
TGV4ZXIuaCIKQEAgLTExNTMsNiArMTE1NSwyOCBAQCBzdGF0aWMgSlNTdHJpbmdJdGVyYXRvcjo6
RmllbGQgc3RyaW5nSXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaQog
ICAgIHJldHVybiBKU1N0cmluZ0l0ZXJhdG9yOjpGaWVsZDo6SW5kZXg7CiB9CiAKK3N0YXRpYyBK
U01hcEl0ZXJhdG9yOjpGaWVsZCBtYXBJdGVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29k
ZUludHJpbnNpY05vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgp
ID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOworICAgIGlmIChu
b2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19tYXBJdGVyYXRvckZpZWxkTWFwQnVja2V0KQorICAgICAgICByZXR1cm4gSlNNYXBJ
dGVyYXRvcjo6RmllbGQ6Ok1hcEJ1Y2tldDsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVy
KCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfbWFwSXRlcmF0b3JG
aWVsZEtpbmQpCisgICAgICAgIHJldHVybiBKU01hcEl0ZXJhdG9yOjpGaWVsZDo6S2luZDsKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBKU01hcEl0ZXJhdG9y
OjpGaWVsZDo6TWFwQnVja2V0OworfQorCitzdGF0aWMgSlNTZXRJdGVyYXRvcjo6RmllbGQgc2V0
SXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQor
eworICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkg
PT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfc2V0SXRlcmF0b3JGaWVs
ZFNldEJ1Y2tldCkKKyAgICAgICAgcmV0dXJuIEpTU2V0SXRlcmF0b3I6OkZpZWxkOjpTZXRCdWNr
ZXQ7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX3NldEl0ZXJhdG9yRmllbGRLaW5kKQorICAgICAgICByZXR1
cm4gSlNTZXRJdGVyYXRvcjo6RmllbGQ6OktpbmQ7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gSlNTZXRJdGVyYXRvcjo6RmllbGQ6OlNldEJ1Y2tldDsKK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRQ
cm9taXNlSW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0
Tm9kZTsKQEAgLTEyMTgsNiArMTI0MiwzMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dldFN0cmluZ0l0ZXJhdG9ySW50ZXJuYWxGaWVsZAogICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOwogfQogCitSZWdpc3RlcklEKiBCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldE1hcEl0ZXJhdG9ySW50ZXJuYWxG
aWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7Cisg
ICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2Rl
ID0gbm9kZS0+bV9uZXh0OworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNCeXRl
Y29kZUludHJpbnNpY05vZGUoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpT
TWFwSXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIEFTU0VSVCghbm9kZS0+
bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOworfQorCitS
ZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFNldEl0
ZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0
Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShu
b2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUt
Pm1fZXhwci0+aXNCeXRlY29kZUludHJpbnNpY05vZGUoKSk7CisgICAgdW5zaWduZWQgaW5kZXgg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3Rh
dGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFT
U0VSVChpbmRleCA8IEpTU2V0SXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAg
IEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldElu
dGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwg
aW5kZXgpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2FyZ3VtZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKIHsKICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OwpAQCAtMTM2Nyw2ICsxNDE3LDM4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfcHV0U3RyaW5nSXRlcmF0b3JJbnRlcm5hbEZpZWxkCiAgICAgcmV0
dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJh
c2UuZ2V0KCksIGluZGV4LCB2YWx1ZS5nZXQoKSkpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dE1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVs
ZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAg
QXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0g
bm9kZS0+bV9uZXh0OworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNCeXRlY29k
ZUludHJpbnNpY05vZGUoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpTTWFw
SXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIG5vZGUgPSBub2RlLT5tX25l
eHQ7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5v
ZGUpOworCisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRv
ci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGlu
ZGV4LCB2YWx1ZS5nZXQoKSkpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX3B1dFNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0
Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0
OworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNCeXRlY29kZUludHJpbnNpY05v
ZGUoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2V0SXRl
cmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
Kj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpTU2V0SXRlcmF0b3I6Om51
bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworCisgICAg
QVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwg
Z2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGluZGV4LCB2YWx1ZS5n
ZXQoKSkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1f
YXJncy0+bV9saXN0Tm9kZTsKQEAgLTE1MTYsNiArMTU5OCw4IEBAIENSRUFURV9JTlRSSU5TSUNf
Rk9SX0JSQU5EX0NIRUNLKGlzTWFwLCBJc01hcCkKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5E
X0NIRUNLKGlzU2V0LCBJc1NldCkKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlz
U3RyaW5nSXRlcmF0b3IsIElzU3RyaW5nSXRlcmF0b3IpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9C
UkFORF9DSEVDSyhpc0FycmF5SXRlcmF0b3IsIElzQXJyYXlJdGVyYXRvcikKK0NSRUFURV9JTlRS
SU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzTWFwSXRlcmF0b3IsIElzTWFwSXRlcmF0b3IpCitDUkVB
VEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1NldEl0ZXJhdG9yLCBJc1NldEl0ZXJhdG9y
KQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNVbmRlZmluZWRPck51bGwsIElz
VW5kZWZpbmVkT3JOdWxsKQogCiAjdW5kZWYgQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hF
Q0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAppbmRleCA5NTNmYmFlZjQ4ZjNhNTU0ZDQ1OWJkOWEyYjNkNmU2
M2RhYTdjYWM3Li41ZTk5ZTY4NGNiZDlkZTkzOWEyZTQ5OGRlNTczMmM0MjRiZDViN2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCkBAIC0yODYxLDcgKzI4NjEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVy
TGltaQogICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBj
YXNlIE5ld0FzeW5jR2VuZXJhdG9yOiAgICAKLSAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6Cisg
ICAgY2FzZSBOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAg
IGNhc2UgTWF0ZXJpYWxpemVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgICAgICBBU1NFUlQo
ISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkBAIC0yOTQ1LDcgKzI5NDUsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNp
Z25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKICAgICBjYXNlIFBoYW50
b21OZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlCdWZmZXI6Ci0g
ICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdJbnRl
cm5hbEZpZWxkT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAgICBjYXNlIEJv
dHRvbVZhbHVlOiB7CiAgICAgICAgIGNsZWFyRm9yTm9kZShub2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggOTk2MWQ5MDMyZDY4
MGQ4NTM0NjU5OGRlNmEyYjhmYWNkNzM0MjdiZC4uNGE5MzBlZjY2NWY2OTVlYTIyZTM5M2IwY2Q2
MDJiNzc1YjhjMzA3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTU5LDkgKzU5LDExIEBACiAjaW5jbHVkZSAiSlNJbW11dGFibGVC
dXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpT
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wY29kZUlubGluZXMuaCIK
QEAgLTI0MTIsNyArMjQxNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgICAg
ICBOb2RlKiBvYmplY3QgPSBhZGRUb0dyYXBoKFRvT2JqZWN0LCBPcEluZm8oZXJyb3JTdHJpbmdJ
bmRleCksIE9wSW5mbyhTcGVjTm9uZSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoMCwgcmVnaXN0ZXJPZmZzZXQpKSk7CiAKICAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjdXJyZW50Tm9k
ZU9yaWdpbigpLnNlbWFudGljKTsKLSAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gYWRkVG9H
cmFwaChOZXdBcnJheUl0ZXJhdG9yLCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShn
bG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgICAgIE5v
ZGUqIGl0ZXJhdG9yID0gYWRkVG9HcmFwaChOZXdJbnRlcm5hbEZpZWxkT2JqZWN0LCBPcEluZm8o
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1
Y3R1cmUoKSkpKTsKIAogICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBP
cEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6Okl0ZXJh
dGVkT2JqZWN0KSksIGl0ZXJhdG9yLCBvYmplY3QpOwogICAgICAgICAgICAgYWRkVG9HcmFwaChQ
dXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVy
YXRvcjo6RmllbGQ6OktpbmQpKSwgaXRlcmF0b3IsIGtpbmROb2RlKTsKQEAgLTMxNzcsNiArMzE3
OSw4NiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNh
bGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEpTTWFwRW50cmllc0ludHJpbnNpYzoKKyAgICAg
ICAgY2FzZSBKU01hcEtleXNJbnRyaW5zaWM6CisgICAgICAgIGNhc2UgSlNNYXBWYWx1ZXNJbnRy
aW5zaWM6IHsKKyAgICAgICAgICAgIGluc2VydENoZWNrcygpOworCisgICAgICAgICAgICBpZiAo
bV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRl
eCwgQmFkQ2VsbCkgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgICAgICBJdGVyYXRpb25LaW5kIGtpbmQ7CisgICAgICAgICAgICBzd2l0Y2gg
KGludHJpbnNpYykgeworICAgICAgICAgICAgY2FzZSBKU01hcFZhbHVlc0ludHJpbnNpYzoKKyAg
ICAgICAgICAgICAgICBraW5kID0gSXRlcmF0aW9uS2luZDo6VmFsdWVzOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBKU01hcEtleXNJbnRyaW5zaWM6CisgICAgICAg
ICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OktleXM7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEpTTWFwRW50cmllc0ludHJpbnNpYzoKKyAgICAgICAgICAg
ICAgICBraW5kID0gSXRlcmF0aW9uS2luZDo6RW50cmllczsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoMCwgcmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
Q2hlY2ssIEVkZ2UoYmFzZSwgTWFwT2JqZWN0VXNlKSk7CisgICAgICAgICAgICBOb2RlKiBtYXBC
dWNrZXQgPSBhZGRUb0dyYXBoKEdldE1hcEJ1Y2tldEhlYWQsIEVkZ2UoYmFzZSwgTWFwT2JqZWN0
VXNlKSk7CisKKyAgICAgICAgICAgIC8vIEFkZCB0aGUgY29uc3RhbnQgYmVmb3JlIGV4aXQgYmVj
b21lcyBpbnZhbGlkIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0IChyZWR1bmRhbnQpIGNo
ZWNrcyBvbiBpdCBpbiBGaXh1cC4KKyAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25z
dGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2luZCkpKTsKKworICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGN1cnJlbnROb2RlT3JpZ2luKCkuc2VtYW50aWMpOworICAgICAgICAgICAgTm9kZSogaXRlcmF0
b3IgPSBhZGRUb0dyYXBoKE5ld0ludGVybmFsRmllbGRPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSkpKTsK
KworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpNYXBCdWNrZXQpKSwgaXRlcmF0
b3IsIG1hcEJ1Y2tldCk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQs
IE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNNYXBJdGVyYXRvcjo6RmllbGQ6Okl0ZXJh
dGVkT2JqZWN0KSksIGl0ZXJhdG9yLCBiYXNlKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0
SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90PihKU01hcEl0ZXJhdG9y
OjpGaWVsZDo6S2luZCkpLCBpdGVyYXRvciwga2luZE5vZGUpOworCisgICAgICAgICAgICBzZXRS
ZXN1bHQoaXRlcmF0b3IpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIEpTU2V0RW50cmllc0ludHJpbnNpYzoKKyAgICAgICAgY2FzZSBKU1NldFZh
bHVlc0ludHJpbnNpYzogeworICAgICAgICAgICAgaW5zZXJ0Q2hlY2tzKCk7CisKKyAgICAgICAg
ICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3Vy
cmVudEluZGV4LCBCYWRDZWxsKSB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgIEl0ZXJhdGlvbktpbmQga2luZDsKKyAgICAgICAgICAg
IHN3aXRjaCAoaW50cmluc2ljKSB7CisgICAgICAgICAgICBjYXNlIEpTU2V0VmFsdWVzSW50cmlu
c2ljOgorICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpWYWx1ZXM7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEpTU2V0RW50cmllc0ludHJpbnNp
YzoKKyAgICAgICAgICAgICAgICBraW5kID0gSXRlcmF0aW9uS2luZDo6RW50cmllczsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldCh2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMCwgcmVnaXN0ZXJPZmZzZXQpKTsKKyAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQ2hlY2ssIEVkZ2UoYmFzZSwgU2V0T2JqZWN0VXNlKSk7CisgICAgICAg
ICAgICBOb2RlKiBzZXRCdWNrZXQgPSBhZGRUb0dyYXBoKEdldE1hcEJ1Y2tldEhlYWQsIEVkZ2Uo
YmFzZSwgU2V0T2JqZWN0VXNlKSk7CisKKyAgICAgICAgICAgIC8vIEFkZCB0aGUgY29uc3RhbnQg
YmVmb3JlIGV4aXQgYmVjb21lcyBpbnZhbGlkIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0
IChyZWR1bmRhbnQpIGNoZWNrcyBvbiBpdCBpbiBGaXh1cC4KKyAgICAgICAgICAgIE5vZGUqIGtp
bmROb2RlID0ganNDb25zdGFudChqc051bWJlcihzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2luZCkp
KTsKKworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnROb2RlT3JpZ2luKCkuc2VtYW50aWMpOworICAgICAgICAg
ICAgTm9kZSogaXRlcmF0b3IgPSBhZGRUb0dyYXBoKE5ld0ludGVybmFsRmllbGRPYmplY3QsIE9w
SW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+c2V0SXRlcmF0b3JT
dHJ1Y3R1cmUoKSkpKTsKKworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxk
LCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTU2V0SXRlcmF0b3I6OkZpZWxkOjpTZXRC
dWNrZXQpKSwgaXRlcmF0b3IsIHNldEJ1Y2tldCk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFB1
dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNTZXRJdGVyYXRv
cjo6RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KSksIGl0ZXJhdG9yLCBiYXNlKTsKKyAgICAgICAgICAg
IGFkZFRvR3JhcGgoUHV0SW50ZXJuYWxGaWVsZCwgT3BJbmZvKHN0YXRpY19jYXN0PHVpbnQzMl90
PihKU1NldEl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpLCBpdGVyYXRvciwga2luZE5vZGUpOworCisg
ICAgICAgICAgICBzZXRSZXN1bHQoaXRlcmF0b3IpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIEpTU2V0QnVja2V0SGVhZEludHJpbnNpYzoKICAg
ICAgICAgY2FzZSBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWM6IHsKICAgICAgICAgICAgIEFTU0VS
VChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9PSAyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZDE5NTIyZmVkNWU4ZTVmYWZjNWQ5NTNlYzgzMjBl
ZTdkNjdmNTIzYy4uMjA2MDgwMjFhYzUxN2ZkY2IxMWY1N2Q4NDAzNDRhMzRjZjYzYjY5MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTE1OTMsNyArMTU5
Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBOZXdQcm9taXNlOgogICAg
IGNhc2UgTmV3R2VuZXJhdG9yOgogICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6Ci0gICAgY2Fz
ZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgTmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKICAg
ICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIE5ld1N0cmlu
Z09iamVjdDoKQEAgLTE2MDMsNyArMTYwMyw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAg
ICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3
QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9u
OgotICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBQaGFudG9tTmV3
SW50ZXJuYWxGaWVsZE9iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3SW50ZXJuYWxGaWVs
ZE9iamVjdDoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgTWF0
ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCBlZTk4ZmFjMjMwNTM0OTkzMDU5NDhh
N2M0MDJkZjM4ZDJiZjA2ZGViLi5mMDVjYWM4ZTliOWM0MWQyYzEzOGU5Y2YzMjE0NjU3NTkyYTVl
OWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld1Byb21pc2U6CiAgICAgY2FzZSBOZXdH
ZW5lcmF0b3I6CiAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKLSAgICBjYXNlIE5ld0FycmF5
SXRlcmF0b3I6CisgICAgY2FzZSBOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgIGNhc2UgTmV3
UmVnZXhwOgogICAgIGNhc2UgTmV3U3ltYm9sOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpA
QCAtNzAsNyArNzAsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNl
IFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0Fz
eW5jRnVuY3Rpb246Ci0gICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNl
IFBoYW50b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdJ
bnRlcm5hbEZpZWxkT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAg
ICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDY1MDUz
Y2ViNWUwODdhMGNkNGEzMTQ4MGFmZGU4ZDY1MTgxZWQxNDMuLjFmMjU0YWVkMjg0ZDVmNDA5NTM3
YTE2ZGQ4MmQ4MjEyZjYyMjYyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCBj
bGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBj
YXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgICAgIGNhc2UgUGhhbnRv
bU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdB
c3luY0Z1bmN0aW9uOgotICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoK
KyAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0ludGVybmFsRmllbGRPYmplY3Q6CiAgICAgICAg
ICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgY2FzZSBQaGFu
dG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJndW1l
bnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU1ZDNjOGZk
NWRjZjhmYTJlZmJhMzdmOTZkYzkwOTlkNDk3MjUxODEuLmMzZTM3MjEwMzQ1ZTIxYzM0YzVlMGFi
Yjc3NWYxZGQzNTk0NzMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFu
dG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1
bmN0aW9uOgotICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBQaGFu
dG9tTmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0
aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21D
cmVhdGVSZXN0OgpAQCAtMzU2LDcgKzM1Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgogICAgIGNhc2UgTmV3QXJy
YXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAgY2FzZSBOZXdBcnJheUl0ZXJh
dG9yOgorICAgIGNhc2UgTmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKICAgICBjYXNlIFNwcmVhZDoK
ICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDc5YTljNGZh
YjUwZTZjNjY1NWE0NmQ0YzlhMWY5OGJlZjNjNzhmMzcuLjIzOGRiNTAxYmUyOWIxYTBlOGY0MmFk
MDhiNDQwZDhkYWVlMmJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcApAQCAtMTkzOSw3ICsxOTM5LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAg
ICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICBjYXNl
IFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgotICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0
ZXJhdG9yOgorICAgICAgICBjYXNlIFBoYW50b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAg
ICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21E
aXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CkBAIC0yNTMx
LDcgKzI1MzEsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
Y2FzZSBOZXdQcm9taXNlOgogICAgICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICAgICAgY2Fz
ZSBOZXdBc3luY0dlbmVyYXRvcjoKLSAgICAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAg
ICAgICBjYXNlIE5ld0ludGVybmFsRmllbGRPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhw
OgogICAgICAgICBjYXNlIElzVHlwZWRBcnJheVZpZXc6CiAgICAgICAgIGNhc2UgSXNFbXB0eToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGI5Mjg4MTBlMTAx
NTUzYjE5YWY1MTM0NDJjMDNlYmVlYzA0ODBmMmIuLjk1MTJhNzA2MGM4Y2VkNDc3NGVlNTg1M2Ix
ZWYyMDlkOTlmMDI5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNw
cApAQCAtNzEsNyArNzEsNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIFN0YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICBj
YXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgotICAgIGNhc2UgUGhhbnRv
bU5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBQaGFudG9tTmV3SW50ZXJuYWxGaWVsZE9iamVj
dDoKICAgICBjYXNlIFB1dFN0YWNrOgogICAgIGNhc2UgS2lsbFN0YWNrOgogICAgIGNhc2UgR2V0
U3RhY2s6CkBAIC0xMjksNyArMTI5LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0YXRlKQogICAgIGNhc2UgTmV3QXN5bmNHZW5l
cmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIE5ld1N5
bWJvbDoKLSAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBOZXdJbnRlcm5hbEZp
ZWxkT2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgVG9OdW1iZXI6CiAgICAg
Y2FzZSBUb051bWVyaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGJjN2Nm
YjEyZDBhOGUyZDMyZTI3Mjk3Zjc0OGE2NTVlMzUxNzI2NzYuLmE1MGY2YWE0MTQ4YjNkOThkMDRj
ZjUxYzFiODVjMzJiZmQ3ZGE2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC02NDksMTAgKzY0OSwxMCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNoaWxkcmVuID0gQWRq
YWNlbmN5TGlzdCgpOwogICAgIH0KIAotICAgIHZvaWQgY29udmVydFRvUGhhbnRvbU5ld0FycmF5
SXRlcmF0b3IoKQorICAgIHZvaWQgY29udmVydFRvUGhhbnRvbU5ld0ludGVybmFsRmllbGRPYmpl
Y3QoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0gTmV3QXJyYXlJdGVyYXRvcik7Ci0g
ICAgICAgIG1fb3AgPSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjsKKyAgICAgICAgQVNTRVJUKG1f
b3AgPT0gTmV3SW50ZXJuYWxGaWVsZE9iamVjdCk7CisgICAgICAgIG1fb3AgPSBQaGFudG9tTmV3
SW50ZXJuYWxGaWVsZE9iamVjdDsKICAgICAgICAgbV9mbGFncyAmPSB+Tm9kZUhhc1ZhckFyZ3M7
CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAgICAgICAgbV9vcEluZm8g
PSBPcEluZm9XcmFwcGVyKCk7CkBAIC0xOTc2LDcgKzE5NzYsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAg
ICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6Ci0gICAgICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRv
cjoKKyAgICAgICAgY2FzZSBOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgICAgICBjYXNlIE5l
d1N0cmluZ09iamVjdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0
OgpAQCAtMjE0Miw3ICsyMTQyLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFBoYW50
b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5j
dGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKLSAg
ICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICAgICAgY2FzZSBQaGFudG9t
TmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZh
dGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggM2ZlZjZi
MzgxODUzZGQ1ZTcyYzk4YTRmMjhiOTBiYWZmNmM2YmU0YS4uODc2ZGY5Y2RhM2QzMTA3Y2E0MmNm
YTFkMzliOGYwYWVhYTAwY2U4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaApAQCAtMzU4LDcgKzM1OCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhOZXdBcnJheVdpdGhTcHJlYWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVIYXNWYXJB
cmdzKSBcCiAgICAgbWFjcm8oTmV3QXJyYXlXaXRoU2l6ZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld0FycmF5QnVmZmVyLCBOb2RlUmVzdWx0SlMpIFwK
LSAgICBtYWNybyhOZXdBcnJheUl0ZXJhdG9yLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhO
ZXdJbnRlcm5hbEZpZWxkT2JqZWN0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdUeXBl
ZEFycmF5LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTmV3
UmVnZXhwLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdTeW1ib2wsIE5vZGVSZXN1bHRK
UykgXApAQCAtMzc3LDcgKzM3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTmV3QXN5bmNGdW5jdGlvbiwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21OZXdBc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0g
ICAgbWFjcm8oUGhhbnRvbU5ld0FycmF5SXRlcmF0b3IsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKKyAgICBtYWNybyhQaGFudG9tTmV3SW50ZXJuYWxGaWVsZE9iamVjdCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE1hdGVyaWFsaXplTmV3
SW50ZXJuYWxGaWVsZE9iamVjdCwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAg
ICBtYWNybyhQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJl
c3VsdEpTIHwgTm9kZUhhc1ZhckFyZ3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4
IDA1YWNkZjIzODc2OTczZjg4ZTgyYjlhNzNiMzQ5ZWU3NzliNWI5ODQuLjJiN2NjMmZlY2I5YzBh
N2UyMWU0NGExZjdkN2JlMGE1OWMxNTE2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApA
QCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgIkRGR1ZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiSlNB
cnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTWFw
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1N0
ZExpc3QuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtOTYxLDggKzk2
MywyMCBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBOZXdBcnJh
eUl0ZXJhdG9yOiB7Ci0gICAgICAgICAgICB0YXJnZXQgPSBoYW5kbGVJbnRlcm5hbEZpZWxkQ2xh
c3M8SlNBcnJheUl0ZXJhdG9yPihub2RlLCB3cml0ZXMpOworICAgICAgICBjYXNlIE5ld0ludGVy
bmFsRmllbGRPYmplY3Q6IHsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkudHlwZSgpKSB7CisgICAgICAgICAgICBjYXNlIEpTQXJyYXlJdGVyYXRvclR5
cGU6CisgICAgICAgICAgICAgICAgdGFyZ2V0ID0gaGFuZGxlSW50ZXJuYWxGaWVsZENsYXNzPEpT
QXJyYXlJdGVyYXRvcj4obm9kZSwgd3JpdGVzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgSlNNYXBJdGVyYXRvclR5cGU6CisgICAgICAgICAgICAgICAgdGFyZ2V0
ID0gaGFuZGxlSW50ZXJuYWxGaWVsZENsYXNzPEpTTWFwSXRlcmF0b3I+KG5vZGUsIHdyaXRlcyk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEpTU2V0SXRlcmF0b3JU
eXBlOgorICAgICAgICAgICAgICAgIHRhcmdldCA9IGhhbmRsZUludGVybmFsRmllbGRDbGFzczxK
U1NldEl0ZXJhdG9yPihub2RlLCB3cml0ZXMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbm9k
ZSwgIkJhZCBzdHJ1Y3R1cmUiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKQEAgLTIwODQsOCArMjA5OCw4IEBAIGNsYXNzIE9iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb24oKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRv
cjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdBcnJh
eUl0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3SW50ZXJuYWxGaWVsZE9i
amVjdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdJ
bnRlcm5hbEZpZWxkT2JqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAwOGNlNTQzNWQzZjcxOTA2M2Nm
YzA5ZmZhNzdkY2Y2MTFmZjhmOTk4Li44YzBhZTk1NGJkYzIyY2ViOGNjMjViNzBjYmYxNWE4YmM4
YjZkNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
QEAgLTIxMTMsNiArMjExMywyNCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
QXJyYXlJdGVyYXRvcihWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgIHJldHVy
biBKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKHZtLCBzdHJ1Y3R1cmUp
OwogfQogCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3TWFwSXRlcmF0b3IoVk0q
IHZtUG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgVk0mIHZtID0gKnZtUG9p
bnRlcjsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworCisgICAgcmV0dXJuIEpTTWFwSXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFs
dWVzKHZtLCBzdHJ1Y3R1cmUpOworfQorCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3U2V0SXRlcmF0b3IoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7Cisg
ICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgcmV0dXJuIEpTU2V0SXRlcmF0b3I6OmNy
ZWF0ZVdpdGhJbml0aWFsVmFsdWVzKHZtLCBzdHJ1Y3R1cmUpOworfQorCiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChWTSogdm1Qb2ludGVyLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwg
RW5jb2RlZEpTVmFsdWUgaW5pdGlhbFZhbHVlRW5jb2RlZCkKIHsKICAgICBWTSYgdm0gPSAqdm1Q
b2ludGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAw
Yzg3M2RiZTVmZWViOGViZGQwMjM2OWMxOWYxNDczZTI1NjY1MTcyLi5hOGE0Y2JkMjBlNjdkZmY2
NDA2Y2VkZWExZjFlNGEwN2U3N2NkOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaApAQCAtMTI2LDYgKzEyNiw4IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KEpTR2xvYmFsT2JqZWN0KiwgU3Ry
CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50MzJfdCwgY2hhciopIFdURl9JTlRFUk5BTDsK
IGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3Vt
ZW50KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRF
Uk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yKFZN
KiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld01hcEl0ZXJhdG9yKFZNKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOworSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1NldEl0ZXJhdG9yKFZNKiwgU3RydWN0dXJlKikg
V1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxTdHJp
Y3QoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9J
TlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdChK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVS
TkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyODg4NThiMzhjMTZhNjVhOGM4ZWJkYjlk
NDM3MDEyODM0NzJhNTBhLi42ZjNhNzFhNWIyZWQxYzJlZWUxMjI3YmY0MjhmNjhkOTE3N2U2YTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTA2MCw5ICsxMDYwLDEyIEBAIGNsYXNzIFBy
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBO
ZXdHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgQ3JlYXRlQXN5bmNHZW5lcmF0b3I6CiAgICAgICAg
IGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6Ci0gICAgICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoK
ICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdE90aGVyKTsKICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgTmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKKyAgICAgICAg
ICAgIHNldFByZWRpY3Rpb24oc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKG1fY3VycmVudE5vZGUt
PnN0cnVjdHVyZSgpLmdldCgpKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEFycmF5U2xpY2U6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFk
OgpAQCAtMTI4NCw3ICsxMjg3LDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIFBoYW50b21TcHJlYWQ6CiAgICAgICAgIGNh
c2UgUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZDoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJy
YXlCdWZmZXI6Ci0gICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgICAg
IGNhc2UgUGhhbnRvbU5ld0ludGVybmFsRmllbGRPYmplY3Q6CiAgICAgICAgIGNhc2UgUGhhbnRv
bUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgICAg
ICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYmFkZmUxYjJkMTQyOWIyZTA1NjRlNjAxYTBjN2ZjOTY2
NGI1NWVhYy4uZTY1MmQzNTI2NmI4Njc3YTkwMjE5ZjQ5YWIxNjA1NWM5ODIyMWI2OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTU0OCw3ICs1
NDgsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6
ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFk
OgotICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIE5ld0ludGVybmFsRmllbGRP
YmplY3Q6CiAgICAgY2FzZSBTcHJlYWQ6CiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgY2FzZSBO
ZXdTeW1ib2w6CkBAIC02MTgsNyArNjE4LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAg
ICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdB
c3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246
Ci0gICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdJ
bnRlcm5hbEZpZWxkT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAg
ICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgIGNhc2UgUHV0SGludDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggY2FhNGJhYjQx
MGU2ZDUzNGUwNmE1OTU3NjE5ZDM5YzljODdlYzA5ZC4uNTFjOGRhNzIxODcxMTA3ZGFjMmJjMzVi
OGUzNDkyN2E5OGVjZGViMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTU4LDcgKzU4LDkgQEAKICNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRl
ICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKKyNpbmNsdWRlICJKU1NldEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5o
IgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgpAQCAtMTI5NzMsNyArMTI5NzUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3UHJvbWlzZShOb2RlKiBub2RlKQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBPcGVyYXRpb24+Ci12b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiBub2RlLCBPcGVy
YXRpb24gb3BlcmF0aW9uKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0ludGVybmFs
RmllbGRPYmplY3RJbXBsKE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyYXRpb24pCiB7CiAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhp
cyk7CkBAIC0xMzAwMSwxNyArMTMwMDMsMjkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld0ludGVybmFsRmllbGRPYmplY3QoTm9kZSogbm9kZSwgT3BlcmF0aW9uIG9wZXJhdGkKIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvcihOb2RlKiBub2RlKQogewot
ICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0PEpTR2VuZXJhdG9yPihub2RlLCBvcGVy
YXRpb25OZXdHZW5lcmF0b3IpOworICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0SW1w
bDxKU0dlbmVyYXRvcj4obm9kZSwgb3BlcmF0aW9uTmV3R2VuZXJhdG9yKTsKIH0KIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0FzeW5jR2VuZXJhdG9yKE5vZGUqIG5vZGUpCiB7Ci0g
ICAgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3Q8SlNBc3luY0dlbmVyYXRvcj4obm9kZSwg
b3BlcmF0aW9uTmV3QXN5bmNHZW5lcmF0b3IpOworICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbDxKU0FzeW5jR2VuZXJhdG9yPihub2RlLCBvcGVyYXRpb25OZXdBc3luY0dlbmVy
YXRvcik7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdBcnJheUl0ZXJhdG9y
KE5vZGUqIG5vZGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3SW50ZXJuYWxGaWVs
ZE9iamVjdChOb2RlKiBub2RlKQogewotICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0
PEpTQXJyYXlJdGVyYXRvcj4obm9kZSwgb3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvcik7CisgICAg
c3dpdGNoIChub2RlLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpIHsKKyAgICBjYXNl
IEpTQXJyYXlJdGVyYXRvclR5cGU6CisgICAgICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbDxKU0FycmF5SXRlcmF0b3I+KG5vZGUsIG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3Ip
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEpTTWFwSXRlcmF0b3JUeXBlOgorICAgICAgICBj
b21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8SlNNYXBJdGVyYXRvcj4obm9kZSwgb3Bl
cmF0aW9uTmV3TWFwSXRlcmF0b3IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEpTU2V0SXRl
cmF0b3JUeXBlOgorICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8SlNT
ZXRJdGVyYXRvcj4obm9kZSwgb3BlcmF0aW9uTmV3U2V0SXRlcmF0b3IpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgIkJhZCBz
dHJ1Y3R1cmUiKTsKKyAgICB9CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1By
aW1pdGl2ZShOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IGUzZjY3ZTE1OTJjOGVmOWM3MGJiZDA2MjcyZWQzNzZhM2I5Y2Qz
MmEuLjQ0NDVjNTFjYTY4MjZiMzZjYmExYzVlNDVhZmUyZGEyOWE0MzdhNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE0NjIsNyArMTQ2
Miw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVOZXdQcm9taXNl
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3IoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZU5ld0FzeW5jR2VuZXJhdG9yKE5vZGUqKTsKLSAgICB2b2lkIGNvbXBpbGVOZXdBcnJh
eUl0ZXJhdG9yKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVUb1ByaW1pdGl2ZShOb2RlKik7CiAgICAgdm9pZCBj
b21waWxlVG9Qcm9wZXJ0eUtleShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlVG9OdW1lcmljKE5v
ZGUqKTsKQEAgLTE0NzgsNyArMTQ3OCw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBPcGVyYXRpb24+CiAgICAgdm9pZCBj
b21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiwgT3BlcmF0aW9uKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBPcGVyYXRpb24+Ci0gICAgdm9pZCBj
b21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiwgT3BlcmF0aW9uKTsKKyAgICB2b2lk
IGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbChOb2RlKiwgT3BlcmF0aW9uKTsKIAog
ICAgIHZvaWQgbW92ZVRydWVUbyhHUFJSZWcpOwogICAgIHZvaWQgbW92ZUZhbHNlVG8oR1BSUmVn
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCmluZGV4IDEyOTBkMTc5NzAzZTg2NzAyNmYzMDJiYzgwZTcyYTAyNWY2OGJkMjQu
LjFmOGFjZWIzOTAwZDAxOGJlNWUzMjY5MjU1NDZjMzY1NTlhOTJmMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAt
MzI2MCw4ICszMjYwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6IHsK
LSAgICAgICAgY29tcGlsZU5ld0FycmF5SXRlcmF0b3Iobm9kZSk7CisgICAgY2FzZSBOZXdJbnRl
cm5hbEZpZWxkT2JqZWN0OiB7CisgICAgICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0
KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQyMTYsNyArNDIxNiw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21O
ZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKLSAgICBjYXNlIFBoYW50b21O
ZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld0ludGVybmFsRmllbGRPYmplY3Q6
CiAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNl
IENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYzU3YTU0ZjVhZGRkNDU0YmM0NDY5MmU1
YjRlNTg3YmYwNGE5ZjFkOS4uZWMwYTQwOWUzZmMzYWY3MDc3MTlhMjNkNWU3MjY2NDQxYzViYzIz
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCkBAIC0zNTg5LDggKzM1ODksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgTmV3QXJyYXlJ
dGVyYXRvcjogewotICAgICAgICBjb21waWxlTmV3QXJyYXlJdGVyYXRvcihub2RlKTsKKyAgICBj
YXNlIE5ld0ludGVybmFsRmllbGRPYmplY3Q6IHsKKyAgICAgICAgY29tcGlsZU5ld0ludGVybmFs
RmllbGRPYmplY3Qobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNTI3Nyw3ICs1
Mjc3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNh
c2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5j
RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKLSAg
ICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld0ludGVy
bmFsRmllbGRPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBj
YXNlIFBoYW50b21OZXdSZWdleHA6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2UuY3BwCmluZGV4IDkzM2QzYTRkNmFhOTc0ZTBiOTIwZTU3OWIwNjFhNzAyMTZm
OTNlNzUuLmY0OGUxZmNhYzBhYjRhNzIxNjQ3NDNlZjkxYmY3MjIyZGM0NDQ2YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2UuY3BwCkBAIC0zMzcsNyArMzM3LDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2FzZSBOZXdBcnJheToK
ICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICAgICAgICAgIGNhc2UgTmV3
QXJyYXlCdWZmZXI6Ci0gICAgICAgICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgICAg
ICAgICBjYXNlIE5ld0ludGVybmFsRmllbGRPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE5ld1R5
cGVkQXJyYXk6CiAgICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgICAgIGNhc2Ug
TmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCmluZGV4IDVjNjlkMWQzOGMxYzYxMDU5OWZkMzAyOTk3MzQzNjBjYjIyN2FjYjIu
LjIwMWM3YWRlODZiYWIxOTY0OWFjYTcyOTMzYWMwYTAwZjExMjg5NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBO
ZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVh
ZDoKLSAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBOZXdJbnRlcm5hbEZpZWxk
T2JqZWN0OgogICAgIGNhc2UgU3ByZWFkOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAg
Y2FzZSBOZXdUeXBlZEFycmF5OgpAQCAtMjkxLDcgKzI5MSw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRv
ckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246CiAg
ICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKLSAgICBjYXNlIFBoYW50b21OZXdBcnJh
eUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld0ludGVybmFsRmllbGRPYmplY3Q6CiAgICAg
Y2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdSZWdleHA6
CiAgICAgY2FzZSBQdXRIaW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCmluZGV4IDc3M2EwMDZlMDg3NDA5NzRmMDMzZTZjMmQ4MmRlYWM4YjJmZGM1
NDcuLjUwNDFjNTkwMGEzNTc4MGRmMjhmMGMzYWI2YjM4ZmFlYzRmODg2NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTg2LDYgKzg2LDgg
QEAKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTTGV4aWNh
bEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIk9wZXJhbmRzSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVj
dC5oIgpAQCAtMTA3Miw4ICsxMDc0LDggQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
Y2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICAgICAgICAgIGNvbXBpbGVOZXdBc3luY0dlbmVy
YXRvcigpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRv
cjoKLSAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheUl0ZXJhdG9yKCk7CisgICAgICAgIGNhc2Ug
TmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKKyAgICAgICAgICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZp
ZWxkT2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOZXdTdHJpbmdP
YmplY3Q6CiAgICAgICAgICAgICBjb21waWxlTmV3U3RyaW5nT2JqZWN0KCk7CkBAIC0xNTkzLDcg
KzE1OTUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBjYXNlIFBoYW50b21OZXdH
ZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JG
dW5jdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKLSAgICAgICAg
Y2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3SW50
ZXJuYWxGaWVsZE9iamVjdDoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50
b21DcmVhdGVSZXN0OgpAQCAtNjM1MSw3ICs2MzUzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBPcGVyYXRp
b24+Ci0gICAgdm9pZCBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdChPcGVyYXRpb24gb3Bl
cmF0aW9uKQorICAgIHZvaWQgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3RJbXBsKE9wZXJh
dGlvbiBvcGVyYXRpb24pCiAgICAgewogICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CkBAIC02Mzc3LDE3ICs2Mzc5LDI5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAKICAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3IoKQogICAgIHsKLSAgICAgICAgY29tcGls
ZU5ld0ludGVybmFsRmllbGRPYmplY3Q8SlNHZW5lcmF0b3I+KG9wZXJhdGlvbk5ld0dlbmVyYXRv
cik7CisgICAgICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDxKU0dlbmVyYXRv
cj4ob3BlcmF0aW9uTmV3R2VuZXJhdG9yKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVOZXdB
c3luY0dlbmVyYXRvcigpCiAgICAgewotICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9i
amVjdDxKU0FzeW5jR2VuZXJhdG9yPihvcGVyYXRpb25OZXdBc3luY0dlbmVyYXRvcik7CisgICAg
ICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDxKU0FzeW5jR2VuZXJhdG9yPihv
cGVyYXRpb25OZXdBc3luY0dlbmVyYXRvcik7CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlTmV3
QXJyYXlJdGVyYXRvcigpCisgICAgdm9pZCBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdCgp
CiAgICAgewotICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxKU0FycmF5SXRl
cmF0b3I+KG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IpOworICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKSB7CisgICAgICAgIGNhc2UgSlNBcnJh
eUl0ZXJhdG9yVHlwZToKKyAgICAgICAgICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbDxKU0FycmF5SXRlcmF0b3I+KG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSlNNYXBJdGVyYXRvclR5cGU6CisgICAgICAgICAg
ICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8SlNNYXBJdGVyYXRvcj4ob3BlcmF0
aW9uTmV3TWFwSXRlcmF0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSlNT
ZXRJdGVyYXRvclR5cGU6CisgICAgICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVj
dEltcGw8SlNTZXRJdGVyYXRvcj4ob3BlcmF0aW9uTmV3U2V0SXRlcmF0b3IpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbV9ub2RlLCAiQmFkIHN0cnVjdHVyZSIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9p
ZCBjb21waWxlTmV3U3RyaW5nT2JqZWN0KCkKQEAgLTEyMzEwLDYgKzEyMzI0LDEyIEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2UgSlNBcnJheUl0ZXJhdG9yVHlwZToKICAgICAg
ICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld0ludGVybmFsRmllbGRPYmplY3RJbXBsPEpTQXJy
YXlJdGVyYXRvcj4ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvcik7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBKU01hcEl0ZXJhdG9yVHlwZToKKyAgICAgICAgICAgIGNvbXBpbGVN
YXRlcmlhbGl6ZU5ld0ludGVybmFsRmllbGRPYmplY3RJbXBsPEpTTWFwSXRlcmF0b3I+KG9wZXJh
dGlvbk5ld01hcEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEpT
U2V0SXRlcmF0b3JUeXBlOgorICAgICAgICAgICAgY29tcGlsZU1hdGVyaWFsaXplTmV3SW50ZXJu
YWxGaWVsZE9iamVjdEltcGw8SlNTZXRJdGVyYXRvcj4ob3BlcmF0aW9uTmV3U2V0SXRlcmF0b3Ip
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBERkdf
Q1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHN0cnVjdHVyZSIpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAppbmRleCA4ZWYyMzlkNmZj
YTVjMDA5Y2Q3NTY1YWZjZTdhZDc2NDMyODc2Mzc4Li5hNDkxNmYwNzNlOWJmMmRlMGRmMmVjODAw
NmJkOGFlYjVkNzFlZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0
aW9ucy5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0xleGlj
YWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJK
U1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAKIElHTk9SRV9XQVJO
SU5HU19CRUdJTigiZnJhbWUtYWRkcmVzcyIpCkBAIC0xMTgsMTUgKzEyMCwzMiBAQCBleHRlcm4g
IkMiIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIFBoYW50
b21OZXdBcnJheUl0ZXJhdG9yOiB7Ci0gICAgICAgIEpTQXJyYXlJdGVyYXRvciogYXJyYXlJdGVy
YXRvciA9IGpzQ2FzdDxKU0FycmF5SXRlcmF0b3IqPihKU1ZhbHVlOjpkZWNvZGUoKmVuY29kZWRW
YWx1ZSkpOworICAgIGNhc2UgUGhhbnRvbU5ld0ludGVybmFsRmllbGRPYmplY3Q6IHsKKyAgICAg
ICAgYXV0byBtYXRlcmlhbGl6ZSA9IFsmXSAoYXV0byogdGFyZ2V0KSB7CisgICAgICAgICAgICB1
c2luZyBKU0NlbGxUeXBlID0gc3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8ZGVjbHR5cGUoKnRhcmdl
dCk+OworICAgICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRvIHBvcHVsYXRlIHRoZSBpdGVy
YXRvciB3aXRoCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAgICAgICBjb25zdCBFeGl0
UHJvcGVydHlWYWx1ZSYgcHJvcGVydHkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKVtp
XTsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkubG9jYXRpb24oKS5raW5kKCkgIT0gSW50
ZXJuYWxGaWVsZE9iamVjdFBMb2MpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgIHRhcmdldC0+aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx0eXBlbmFtZSBK
U0NlbGxUeXBlOjpGaWVsZD4ocHJvcGVydHkubG9jYXRpb24oKS5pbmZvKCkpKS5zZXQodm0sIHRh
cmdldCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICAgICAgfQorICAgICAg
ICB9OwogCi0gICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0byBwb3B1bGF0ZSB0aGUgaXRlcmF0
b3Igd2l0aAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3Bl
cnRpZXMoKS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIGNvbnN0IEV4aXRQcm9wZXJ0eVZh
bHVlJiBwcm9wZXJ0eSA9IG1hdGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpW2ldOwotICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkua2luZCgpICE9IEludGVybmFsRmllbGRPYmpl
Y3RQTG9jKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXJyYXlJdGVy
YXRvci0+aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDxKU0FycmF5SXRlcmF0b3I6OkZpZWxkPihw
cm9wZXJ0eS5sb2NhdGlvbigpLmluZm8oKSkpLnNldCh2bSwgYXJyYXlJdGVyYXRvciwgSlNWYWx1
ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOworICAgICAgICBKU09iamVjdCogdGFyZ2V0ID0ganNDYXN0
PEpTT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKCplbmNvZGVkVmFsdWUpKTsKKyAgICAgICAgc3dp
dGNoICh0YXJnZXQtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEpTQXJyYXlJdGVyYXRvclR5cGU6
CisgICAgICAgICAgICBtYXRlcmlhbGl6ZShqc0Nhc3Q8SlNBcnJheUl0ZXJhdG9yKj4odGFyZ2V0
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBKU01hcEl0ZXJhdG9yVHlwZToK
KyAgICAgICAgICAgIG1hdGVyaWFsaXplKGpzQ2FzdDxKU01hcEl0ZXJhdG9yKj4odGFyZ2V0KSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBKU1NldEl0ZXJhdG9yVHlwZToKKyAg
ICAgICAgICAgIG1hdGVyaWFsaXplKGpzQ2FzdDxKU1NldEl0ZXJhdG9yKj4odGFyZ2V0KSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0yOTMsNyArMzEyLDcgQEAgZXh0ZXJuICJDIiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUihKU0dsb2JhbE9i
amVjdCoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBjYXNlIFBoYW50b21O
ZXdBcnJheUl0ZXJhdG9yOiB7CisgICAgY2FzZSBQaGFudG9tTmV3SW50ZXJuYWxGaWVsZE9iamVj
dDogewogICAgICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgc3RydWN0dXJlLgogICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IG51bGxwdHI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1h
dGVyaWFsaXphdGlvbi0+cHJvcGVydGllcygpLnNpemUoKTsgaS0tOykgewpAQCAtMzA1LDE0ICsz
MjQsMjkgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJp
YWxpemVPYmplY3RJbk9TUihKU0dsb2JhbE9iamVjdCoKICAgICAgICAgfQogICAgICAgICBSRUxF
QVNFX0FTU0VSVChzdHJ1Y3R1cmUpOwogCi0gICAgICAgIEpTQXJyYXlJdGVyYXRvciogcmVzdWx0
ID0gSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyh2bSwgc3RydWN0dXJl
KTsKLQotICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMo
KS5zaXplKCkgLSAxID09IEpTQXJyYXlJdGVyYXRvcjo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7
Ci0KICAgICAgICAgLy8gVGhlIHJlYWwgdmFsdWVzIHdpbGwgYmUgcHV0IHN1YnNlcXVlbnRseSBi
eQogICAgICAgICAvLyBvcGVyYXRpb25Qb3B1bGF0ZU5ld09iamVjdEluT1NSLiBTZWUgdGhlIFBo
YW50b21OZXdPYmplY3QKICAgICAgICAgLy8gY2FzZSBmb3IgZGV0YWlscy4KLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
KSB7CisgICAgICAgIGNhc2UgSlNBcnJheUl0ZXJhdG9yVHlwZTogeworICAgICAgICAgICAgSlNB
cnJheUl0ZXJhdG9yKiByZXN1bHQgPSBKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFs
VmFsdWVzKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWF0ZXJp
YWxpemF0aW9uLT5wcm9wZXJ0aWVzKCkuc2l6ZSgpIC0gMSA9PSBKU0FycmF5SXRlcmF0b3I6Om51
bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEpTTWFwSXRlcmF0b3JUeXBlOiB7CisgICAgICAgICAgICBKU01h
cEl0ZXJhdG9yKiByZXN1bHQgPSBKU01hcEl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVl
cyh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1hdGVyaWFsaXph
dGlvbi0+cHJvcGVydGllcygpLnNpemUoKSAtIDEgPT0gSlNNYXBJdGVyYXRvcjo6bnVtYmVyT2ZJ
bnRlcm5hbEZpZWxkcyk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgSlNTZXRJdGVyYXRvclR5cGU6IHsKKyAgICAgICAgICAgIEpTU2V0SXRlcmF0
b3IqIHJlc3VsdCA9IEpTU2V0SXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKHZtLCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWF0ZXJpYWxpemF0aW9uLT5w
cm9wZXJ0aWVzKCkuc2l6ZSgpIC0gMSA9PSBKU1NldEl0ZXJhdG9yOjpudW1iZXJPZkludGVybmFs
RmllbGRzKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGNhc2UgUGhh
bnRvbUNyZWF0ZVJlc3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDA4MGZhZWRlODFhMjI2ODIyMWQx
YzUwODk0MWQ5ZWYyNzEyNzlhMjAuLjcwYTVlNDYwZTVjMThiYmY5NmJhNDMzYjM3OWNhNmQ2OTA5
NTEyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC01MSw5ICs1MSwxMSBAQAogI2luY2x1ZGUgIkpT
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5j
bHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNQ
cm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNT
ZXQuaCIKKyNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAu
aCIKQEAgLTIyOSw4ICsyMzEsOCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpzdWJ0
eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogYwogICAgICAgICAg
ICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIml0ZXJhdG9yIl9zKTsKIAogICAgICAg
ICBpZiAob2JqZWN0LT5pbmhlcml0czxKU0FycmF5SXRlcmF0b3I+KHZtKQotICAgICAgICAgICAg
fHwgb2JqZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
Lm1hcEJ1Y2tldFByaXZhdGVOYW1lKCkpCi0gICAgICAgICAgICB8fCBvYmplY3QtPmdldERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0QnVja2V0UHJpdmF0ZU5h
bWUoKSkpCisgICAgICAgICAgICB8fCBvYmplY3QtPmluaGVyaXRzPEpTTWFwSXRlcmF0b3I+KHZt
KQorICAgICAgICAgICAgfHwgb2JqZWN0LT5pbmhlcml0czxKU1NldEl0ZXJhdG9yPih2bSkpCiAg
ICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiaXRlcmF0b3IiX3MpOwog
CiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTSW50OEFycmF5Pih2bSkKQEAgLTM5Nyw5
ICszOTksOSBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3Bl
cnRpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICAgICAgcmV0dXJuIGFy
cmF5OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldFByaXZhdGVOYW1l
KCkpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGl0ZXJhdGVkVmFsdWUgPSBpdGVyYXRvck9iamVj
dC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRl
ZE9iamVjdFByaXZhdGVOYW1lKCkpOwotICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kID0g
c3RhdGljX2Nhc3Q8SXRlcmF0aW9uS2luZD4oaXRlcmF0b3JPYmplY3QtPmdldERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwSXRlcmF0b3JLaW5kUHJpdmF0ZU5h
bWUoKSkuYXNJbnQzMigpKTsKKyAgICAgICAgaWYgKGF1dG8qIG1hcEl0ZXJhdG9yID0ganNEeW5h
bWljQ2FzdDxKU01hcEl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yT2JqZWN0KSkgeworICAgICAgICAg
ICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlID0gbWFwSXRlcmF0b3ItPml0ZXJhdGVkT2JqZWN0KCk7
CisgICAgICAgICAgICBJdGVyYXRpb25LaW5kIGtpbmQgPSBtYXBJdGVyYXRvci0+a2luZCgpOwog
CiAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAgICAgICBKU0FycmF5KiBh
cnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCAyKTsKQEAg
LTQxMSw5ICs0MTMsOSBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5h
bFByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICAgICAgcmV0
dXJuIGFycmF5OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGl0ZXJhdG9yT2JqZWN0LT5nZXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tldFByaXZh
dGVOYW1lKCkpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGl0ZXJhdGVkVmFsdWUgPSBpdGVyYXRv
ck9iamVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5p
dGVyYXRlZE9iamVjdFByaXZhdGVOYW1lKCkpOwotICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBr
aW5kID0gc3RhdGljX2Nhc3Q8SXRlcmF0aW9uS2luZD4oaXRlcmF0b3JPYmplY3QtPmdldERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0SXRlcmF0b3JLaW5kUHJp
dmF0ZU5hbWUoKSkuYXNJbnQzMigpKTsKKyAgICAgICAgaWYgKGF1dG8qIHNldEl0ZXJhdG9yID0g
anNEeW5hbWljQ2FzdDxKU1NldEl0ZXJhdG9yKj4odm0sIGl0ZXJhdG9yT2JqZWN0KSkgeworICAg
ICAgICAgICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlID0gc2V0SXRlcmF0b3ItPml0ZXJhdGVkT2Jq
ZWN0KCk7CisgICAgICAgICAgICBJdGVyYXRpb25LaW5kIGtpbmQgPSBzZXRJdGVyYXRvci0+a2lu
ZCgpOwogCiAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAgICAgICBKU0Fy
cmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCAy
KTsKQEAgLTU0OSwyMyArNTUxLDE3IEBAIHN0YXRpYyBKU09iamVjdCogY2xvbmVBcnJheUl0ZXJh
dG9yT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwKICAgICByZXR1
cm4gY2xvbmU7CiB9CiAKLXN0YXRpYyBKU09iamVjdCogY2xvbmVNYXBJdGVyYXRvck9iamVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTT2JqZWN0KiBpdGVyYXRvck9i
amVjdCwgSlNWYWx1ZSBtYXBCdWNrZXQsIEpTVmFsdWUgaXRlcmF0ZWRPYmplY3QpCitzdGF0aWMg
SlNPYmplY3QqIGNsb25lTWFwSXRlcmF0b3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVk0mIHZtLCBKU01hcEl0ZXJhdG9yKiBpdGVyYXRvck9iamVjdCkKIHsKLSAgICBBU1NF
UlQoaXRlcmF0b3JPYmplY3QtPnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOwotICAgIEpTT2Jq
ZWN0KiBjbG9uZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgTWFwSXRlcmF0
b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBNYXBJdGVyYXRvclByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0
b3JQcm90b3R5cGUoKSkpKTsKLSAgICBjbG9uZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5pdGVyYXRlZE9iamVjdFByaXZhdGVOYW1lKCksIGl0ZXJhdGVk
T2JqZWN0KTsKLSAgICBjbG9uZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5tYXBJdGVyYXRvcktpbmRQcml2YXRlTmFtZSgpLCBpdGVyYXRvck9iamVjdC0+
Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBJdGVyYXRv
cktpbmRQcml2YXRlTmFtZSgpKSk7Ci0gICAgY2xvbmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0UHJpdmF0ZU5hbWUoKSwgbWFwQnVja2V0
KTsKKyAgICBKU01hcEl0ZXJhdG9yKiBjbG9uZSA9IEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCBqc0Nhc3Q8SlNNYXAqPihpdGVy
YXRvck9iamVjdC0+aXRlcmF0ZWRPYmplY3QoKSksIGl0ZXJhdG9yT2JqZWN0LT5raW5kKCkpOwor
ICAgIGNsb25lLT5pbnRlcm5hbEZpZWxkKEpTTWFwSXRlcmF0b3I6OkZpZWxkOjpNYXBCdWNrZXQp
LnNldCh2bSwgY2xvbmUsIGl0ZXJhdG9yT2JqZWN0LT5pbnRlcm5hbEZpZWxkKEpTTWFwSXRlcmF0
b3I6OkZpZWxkOjpNYXBCdWNrZXQpLmdldCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLXN0
YXRpYyBKU09iamVjdCogY2xvbmVTZXRJdGVyYXRvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIEpTT2JqZWN0KiBpdGVyYXRvck9iamVjdCwgSlNWYWx1ZSBzZXRC
dWNrZXQsIEpTVmFsdWUgaXRlcmF0ZWRPYmplY3QpCitzdGF0aWMgSlNPYmplY3QqIGNsb25lU2V0
SXRlcmF0b3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU1Nl
dEl0ZXJhdG9yKiBpdGVyYXRvck9iamVjdCkKIHsKLSAgICBBU1NFUlQoaXRlcmF0b3JPYmplY3Qt
PnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOwotICAgIEpTT2JqZWN0KiBjbG9uZSA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCwgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBTZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+aXRlcmF0b3JQcm90b3R5cGUoKSkpKTsK
LSAgICBjbG9uZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5pdGVyYXRlZE9iamVjdFByaXZhdGVOYW1lKCksIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBjbG9u
ZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRJdGVy
YXRvcktpbmRQcml2YXRlTmFtZSgpLCBpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRJdGVyYXRvcktpbmRQcml2YXRlTmFtZSgp
KSk7Ci0gICAgY2xvbmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuc2V0QnVja2V0UHJpdmF0ZU5hbWUoKSwgc2V0QnVja2V0KTsKKyAgICBKU1NldEl0ZXJh
dG9yKiBjbG9uZSA9IEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5zZXRJ
dGVyYXRvclN0cnVjdHVyZSgpLCBqc0Nhc3Q8SlNTZXQqPihpdGVyYXRvck9iamVjdC0+aXRlcmF0
ZWRPYmplY3QoKSksIGl0ZXJhdG9yT2JqZWN0LT5raW5kKCkpOworICAgIGNsb25lLT5pbnRlcm5h
bEZpZWxkKEpTU2V0SXRlcmF0b3I6OkZpZWxkOjpTZXRCdWNrZXQpLnNldCh2bSwgY2xvbmUsIGl0
ZXJhdG9yT2JqZWN0LT5pbnRlcm5hbEZpZWxkKEpTU2V0SXRlcmF0b3I6OkZpZWxkOjpTZXRCdWNr
ZXQpLmdldCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKQEAgLTU5MywxNSArNTg5LDEyIEBA
IEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmllcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbE9iamVj
dC0+aXNBcnJheVByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgp
KQogICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IGNsb25lQXJyYXlJdGVyYXRvck9iamVj
dChnbG9iYWxPYmplY3QsIHZtLCBhcnJheUl0ZXJhdG9yKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0ZWRPYmplY3QgPSBpdGVyYXRv
ck9iamVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5p
dGVyYXRlZE9iamVjdFByaXZhdGVOYW1lKCkpOwotICAgICAgICAgICAgaWYgKEpTVmFsdWUgbWFw
QnVja2V0ID0gaXRlcmF0b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkubWFwQnVja2V0UHJpdmF0ZU5hbWUoKSkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoanNDYXN0PEpTTWFwKj4oaXRlcmF0ZWRPYmplY3QpLT5pc0l0ZXJhdG9yUHJvdG9jb2xG
YXN0QW5kTm9uT2JzZXJ2YWJsZSgpKQotICAgICAgICAgICAgICAgICAgICBpdGVyYXRvciA9IGNs
b25lTWFwSXRlcmF0b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCB2bSwgaXRlcmF0b3JPYmplY3QsIG1h
cEJ1Y2tldCwgaXRlcmF0ZWRPYmplY3QpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVl
IHNldEJ1Y2tldCA9IGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tldFByaXZhdGVOYW1lKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGpzQ2FzdDxKU1NldCo+KGl0ZXJhdGVkT2JqZWN0KS0+aXNJdGVyYXRvclByb3Rv
Y29sRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3Ig
PSBjbG9uZVNldEl0ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgdm0sIGl0ZXJhdG9yT2JqZWN0
LCBzZXRCdWNrZXQsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIGlmIChhdXRvKiBtYXBJdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNNYXBJdGVyYXRvcio+
KHZtLCBpdGVyYXRvck9iamVjdCkpIHsKKyAgICAgICAgICAgIGlmIChqc0Nhc3Q8SlNNYXAqPiht
YXBJdGVyYXRvci0+aXRlcmF0ZWRPYmplY3QoKSktPmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmRO
b25PYnNlcnZhYmxlKCkpCisgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZU1hcEl0ZXJh
dG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgdm0sIG1hcEl0ZXJhdG9yKTsKKyAgICAgICAgfSBlbHNl
IGlmIChhdXRvKiBzZXRJdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNTZXRJdGVyYXRvcio+KHZt
LCBpdGVyYXRvck9iamVjdCkpIHsKKyAgICAgICAgICAgIGlmIChqc0Nhc3Q8SlNTZXQqPihzZXRJ
dGVyYXRvci0+aXRlcmF0ZWRPYmplY3QoKSktPmlzSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25P
YnNlcnZhYmxlKCkpCisgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZVNldEl0ZXJhdG9y
T2JqZWN0KGdsb2JhbE9iamVjdCwgdm0sIHNldEl0ZXJhdG9yKTsKICAgICAgICAgfQogICAgIH0K
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZGYwMWYyYTExODc0
MDQxMjYzMmJmMmFkYWI4YWUwNGYyNmFjOTdkMC4uZTJkYzg4N2IzODQ0MzRlMDUxNjY2YTBiNDI2
NTIwMDM4ZjRiNTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCkBAIC05Nyw3ICs5Nyw2IEBACiAgICAgbWFjcm8oZGlzcGxheU5h
bWUpIFwKICAgICBtYWNybyhkb25lKSBcCiAgICAgbWFjcm8oZG90QWxsKSBcCi0gICAgbWFjcm8o
ZW50cmllcykgXAogICAgIG1hY3JvKGVudW1lcmFibGUpIFwKICAgICBtYWNybyhlcmEpIFwKICAg
ICBtYWNybyhldmFsKSBcCkBAIC0xMzcsNyArMTM2LDYgQEAKICAgICBtYWNybyhpc1dhdGNocG9p
bnQpIFwKICAgICBtYWNybyhqZXR0aXNvblJlYXNvbikgXAogICAgIG1hY3JvKGpvaW4pIFwKLSAg
ICBtYWNybyhrZXlzKSBcCiAgICAgbWFjcm8obGFzdEluZGV4KSBcCiAgICAgbWFjcm8obGVuZ3Ro
KSBcCiAgICAgbWFjcm8obGluZSkgXApAQCAtMTk5LDcgKzE5Nyw2IEBACiAgICAgbWFjcm8odW5p
Y29kZSkgXAogICAgIG1hY3JvKHVzYWdlKSBcCiAgICAgbWFjcm8odmFsdWUpIFwKLSAgICBtYWNy
byh2YWx1ZXMpIFwKICAgICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFjcm8od2Vla2RheSkgXAog
ICAgIG1hY3JvKHdyaXRhYmxlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmNwcAppbmRleCAzNTM1OTA5MDQ5MWNlMGFmZGNkOGJiYjRmODc1YmIzODE4YzIyZDNl
Li4yZTFiNWYyOTZlMzMyMDNlOTg0ZmU5NjdhNzgxMTE4YjBkNjk2MWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTIwNyw2ICsyMDcsMTIgQEAg
Y29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICBy
ZXR1cm4gIkpTTWFwSGFzSW50cmluc2ljIjsKICAgICBjYXNlIEpTTWFwU2V0SW50cmluc2ljOgog
ICAgICAgICByZXR1cm4gIkpTTWFwU2V0SW50cmluc2ljIjsKKyAgICBjYXNlIEpTTWFwVmFsdWVz
SW50cmluc2ljOgorICAgICAgICByZXR1cm4gIkpTTWFwVmFsdWVzSW50cmluc2ljIjsKKyAgICBj
YXNlIEpTTWFwS2V5c0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJKU01hcEtleXNJbnRyaW5z
aWMiOworICAgIGNhc2UgSlNNYXBFbnRyaWVzSW50cmluc2ljOgorICAgICAgICByZXR1cm4gIkpT
TWFwRW50cmllc0ludHJpbnNpYyI7CiAgICAgY2FzZSBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWM6
CiAgICAgICAgIHJldHVybiAiSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljIjsKICAgICBjYXNlIEpT
TWFwQnVja2V0TmV4dEludHJpbnNpYzoKQEAgLTIxOSw2ICsyMjUsMTAgQEAgY29uc3QgY2hhciog
aW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIkpTU2V0
SGFzSW50cmluc2ljIjsKICAgICBjYXNlIEpTU2V0QWRkSW50cmluc2ljOgogICAgICAgICByZXR1
cm4gIkpTU2V0QWRkSW50cmluc2ljIjsKKyAgICBjYXNlIEpTU2V0VmFsdWVzSW50cmluc2ljOgor
ICAgICAgICByZXR1cm4gIkpTU2V0VmFsdWVzSW50cmluc2ljIjsKKyAgICBjYXNlIEpTU2V0RW50
cmllc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJKU1NldEVudHJpZXNJbnRyaW5zaWMiOwog
ICAgIGNhc2UgSlNTZXRCdWNrZXRIZWFkSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIkpTU2V0
QnVja2V0SGVhZEludHJpbnNpYyI7CiAgICAgY2FzZSBKU1NldEJ1Y2tldE5leHRJbnRyaW5zaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4IDZiZmZmOTAw
NjNjZTJkN2Q4YWMyMDU0MmU4YThkN2UxOGM0MmJhZTkuLjMzZWNhYmM4MWZjODE4NDBiNGRmN2E2
OTY2MmRiMTNmNTY2MmNiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJp
bnNpYy5oCkBAIC0xMTgsMTIgKzExOCwxNyBAQCBlbnVtIEludHJpbnNpYyA6IHVpbnQ4X3Qgewog
ICAgIEpTTWFwR2V0SW50cmluc2ljLAogICAgIEpTTWFwSGFzSW50cmluc2ljLAogICAgIEpTTWFw
U2V0SW50cmluc2ljLAorICAgIEpTTWFwVmFsdWVzSW50cmluc2ljLAorICAgIEpTTWFwS2V5c0lu
dHJpbnNpYywKKyAgICBKU01hcEVudHJpZXNJbnRyaW5zaWMsCiAgICAgSlNNYXBCdWNrZXRIZWFk
SW50cmluc2ljLAogICAgIEpTTWFwQnVja2V0TmV4dEludHJpbnNpYywKICAgICBKU01hcEJ1Y2tl
dEtleUludHJpbnNpYywKICAgICBKU01hcEJ1Y2tldFZhbHVlSW50cmluc2ljLAogICAgIEpTU2V0
SGFzSW50cmluc2ljLAogICAgIEpTU2V0QWRkSW50cmluc2ljLAorICAgIEpTU2V0VmFsdWVzSW50
cmluc2ljLAorICAgIEpTU2V0RW50cmllc0ludHJpbnNpYywKICAgICBKU1NldEJ1Y2tldEhlYWRJ
bnRyaW5zaWMsCiAgICAgSlNTZXRCdWNrZXROZXh0SW50cmluc2ljLAogICAgIEpTU2V0QnVja2V0
S2V5SW50cmluc2ljLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SXRlcmF0b3IuaAppbmRleCA1OTllNzc0YjAzZGQzZTViYTZkNGQ3ZmEzNGJiOThhOTY4N2VjNjA5
Li5hZmQ5ZWIyZTVkNjZiODUzYTBjNzcwNDJhY2FlNDk5ZDA2NzNmMThmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5SXRlcmF0b3IuaApAQCAtNjQsNyArNjQs
NyBAQCBjbGFzcyBKU0FycmF5SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbDwzPiB7CiAgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5h
bEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0
YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
JiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxk
KHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CiAKLSAgICBJdGVyYXRpb25LaW5kIGtp
bmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVyYXRpb25LaW5kPihpbnRlcm5hbEZp
ZWxkKEZpZWxkOjpLaW5kKS5nZXQoKS5hc1VJbnQzMigpKTsgfQorICAgIEl0ZXJhdGlvbktpbmQg
a2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZXJhdGlvbktpbmQ+KGludGVybmFs
RmllbGQoRmllbGQ6OktpbmQpLmdldCgpLmFzVUludDMyQXNBbnlJbnQoKSk7IH0KICAgICBKU09i
amVjdCogaXRlcmF0ZWRPYmplY3QoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihp
bnRlcm5hbEZpZWxkKEZpZWxkOjpJdGVyYXRlZE9iamVjdCkuZ2V0KCkpOyB9CiAKICAgICBzdGF0
aWMgSlNBcnJheUl0ZXJhdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCogaXRl
cmF0ZWRPYmplY3QsIEpTVmFsdWUga2luZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNmNlMTg0YWUxNTllNDgyZjExZTAzMGY2
ZDM5ZWM4NTYwMmJlOTYwZS4uNmExMzBkOWY5MThlMjQ4N2FiMDFjNTYyMDVkMWNhYTY2ZWFlNWI3
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtMTA2LDYgKzEwNiw3IEBACiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpT
TWFwSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU01pY3JvdGFzay5oIgogI2luY2x1ZGUgIkpTTW9k
dWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZUxvYWRlci5oIgpAQCAtMTE3LDYg
KzExOCw3IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJK
U1Byb21pc2VQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpTU2V0
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNU
eXBlZEFycmF5Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBl
cy5oIgpAQCAtNTY0LDcgKzU2Niw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgICAgICB9KTsKICAgICBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5pbml0TGF0ZXIo
CiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Z1bmN0aW9uPiYgaW5pdCkgewotICAg
ICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGluaXQub3duZXIs
IDAsIGluaXQudm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCBhcnJheVByb3RvRnVu
Y1ZhbHVlcywgQXJyYXlWYWx1ZXNJbnRyaW5zaWMpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEpT
RnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBpbml0LnZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwgYXJyYXlQ
cm90b0Z1bmNWYWx1ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7CiAgICAgICAgIH0pOwogCiAg
ICAgbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uaW5pdExhdGVyKApAQCAtNzY1LDYgKzc2Nywx
NCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2FycmF5SXRlcmF0
b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBhcnJheUl0ZXJhdG9yUHJvdG90eXBlKTsKICAgICBt
X2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0FycmF5SXRlcmF0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgYXJyYXlJdGVyYXRvclByb3RvdHlwZSkpOwogCisgICAg
YXV0byogbWFwSXRlcmF0b3JQcm90b3R5cGUgPSBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
KHZtLCB0aGlzLCBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9tYXBJdGVyYXRvclByb3RvdHlw
ZS5zZXQodm0sIHRoaXMsIG1hcEl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBtX21hcEl0ZXJhdG9y
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtYXBJdGVyYXRvclByb3RvdHlwZSkpOworCisgICAgYXV0byogc2V0SXRlcmF0b3JQ
cm90b3R5cGUgPSBTZXRJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBTZXRJdGVy
YXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90
eXBlLmdldCgpKSk7CisgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIHNl
dEl0ZXJhdG9yUHJvdG90eXBlKTsKKyAgICBtX3NldEl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwg
dGhpcywgSlNTZXRJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBzZXRJdGVyYXRv
clByb3RvdHlwZSkpOworCiAgICAgSlNGdW5jdGlvbiogZGVmYXVsdFByb21pc2VUaGVuID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBwcm9taXNlUHJvdG90eXBlVGhlbkNvZGVHZW5lcmF0b3Iodm0p
LCB0aGlzKTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpkZWZhdWx0UHJvbWlzZVRoZW4pXS5zZXQodm0sIHRoaXMsIGRlZmF1
bHRQcm9taXNlVGhlbik7CiAKQEAgLTEwMDYsMTUgKzEwMTYsOSBAQCBjYXBpdGFsTmFtZSAjIyBD
b25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBp
dGFsTmFtZQogICAgIEpTT2JqZWN0KiBhc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBB
c3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgQXN5bmNGcm9t
U3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0
b3JQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0
YW50KExpbmtUaW1lQ29uc3RhbnQ6OkFzeW5jRnJvbVN5bmNJdGVyYXRvcikpLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJv
dG90eXBlKTsKIAotICAgIEpTT2JqZWN0KiBtYXBJdGVyYXRvclByb3RvdHlwZSA9IE1hcEl0ZXJh
dG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICBq
c0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6Ok1hcEl0
ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtYXBJ
dGVyYXRvclByb3RvdHlwZSk7Ci0KICAgICBKU09iamVjdCogcmVnRXhwU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUgPSBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlz
LCBSZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CiAgICAganNDYXN0PEpTT2JqZWN0Kj4obGlu
a1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpSZWdFeHBTdHJpbmdJdGVyYXRvcikpLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVnRXhwU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUpOwogCi0gICAgSlNPYmplY3QqIHNldEl0ZXJhdG9yUHJvdG90eXBlID0g
U2V0SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgU2V0SXRlcmF0b3JQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkp
OwotICAgIGpzQ2FzdDxKU09iamVjdCo+KGxpbmtUaW1lQ29uc3RhbnQoTGlua1RpbWVDb25zdGFu
dDo6U2V0SXRlcmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIHNldEl0ZXJhdG9yUHJvdG90eXBlKTsKLQogICAgIC8vIE1hcCBhbmQgU2V0IGhlbHBlcnMu
CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6U2V0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBp
bml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKS0+c2V0Q29uc3RydWN0b3IoKSk7CkBAIC0xNzc1LDYgKzE3NzksOCBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JQ
cm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXJyYXlJdGVyYXRv
clByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tYXBJdGVyYXRv
clByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zZXRJdGVyYXRv
clByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0Z1bmN0
aW9uUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2Vu
ZXJhdG9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5j
SXRlcmF0b3JQcm90b3R5cGUpOwpAQCAtMTgyNiw2ICsxODMyLDggQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5SXRlcmF0b3JTdHJ1Y3R1cmUp
OworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUp
OworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUp
OwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVz
QXJyYXlTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKaW5kZXggMWU3NmMwYjM0NmU2N2RkYTM1YzRlOTU1YjUxMmY2ZjU5MzE0NDIw
NC4uYmFkNjQ2MzViZmNmNDk1YjU5Mjg5NGU0NzM4MWVjMzViNzEzYmNjNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMDAsNiArMTAw
LDcgQEAgY2xhc3MgSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOwogY2xhc3MgSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZTsKIGNsYXNzIERpcmVjdEV2YWxFeGVjdXRhYmxlOwogY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworY2xhc3MgTWFwSXRlcmF0b3JQcm90b3R5cGU7CiBjbGFzcyBN
YXBQcm90b3R5cGU7CiBjbGFzcyBNaWNyb3Rhc2s7CiBjbGFzcyBNb2R1bGVMb2FkZXI7CkBAIC0x
MTIsNiArMTEzLDcgQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFByb2dyYW1FeGVj
dXRhYmxlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CiBjbGFzcyBSZWdFeHBQcm90b3R5cGU7
CitjbGFzcyBTZXRJdGVyYXRvclByb3RvdHlwZTsKIGNsYXNzIFNldFByb3RvdHlwZTsKIGNsYXNz
IFNvdXJjZUNvZGU7CiBjbGFzcyBTb3VyY2VPcmlnaW47CkBAIC0zMjMsNiArMzI1LDggQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgV3JpdGVCYXJyaWVyPEdlbmVyYXRvclByb3RvdHlwZT4gbV9nZW5lcmF0b3JQcm90b3R5cGU7
CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlPiBtX2FzeW5jR2VuZXJh
dG9yUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxBcnJheUl0ZXJhdG9yUHJvdG90eXBlPiBt
X2FycmF5SXRlcmF0b3JQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPE1hcEl0ZXJhdG9yUHJv
dG90eXBlPiBtX21hcEl0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxTZXRJdGVy
YXRvclByb3RvdHlwZT4gbV9zZXRJdGVyYXRvclByb3RvdHlwZTsKIAogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmU7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3Ry
dWN0dXJlOwpAQCAtMzc4LDYgKzM4Miw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fZ2VuZXJhdG9yU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXN5
bmNHZW5lcmF0b3JTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9hcnJh
eUl0ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbWFwSXRl
cmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zZXRJdGVyYXRv
clN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7CkBAIC02NDks
NiArNjU1LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdCB7CiAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogICAgIEFzeW5j
RnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVy
biBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KICAgICBBcnJheUl0ZXJhdG9yUHJv
dG90eXBlKiBhcnJheUl0ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheUl0
ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CisgICAgTWFwSXRlcmF0b3JQcm90b3R5cGUqIG1hcEl0
ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBJdGVyYXRvclByb3RvdHlwZS5n
ZXQoKTsgfQorICAgIFNldEl0ZXJhdG9yUHJvdG90eXBlKiBzZXRJdGVyYXRvclByb3RvdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2V0SXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBKU09i
amVjdCogbWFwUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUucHJvdG90
eXBlKHRoaXMpOyB9CiAgICAgLy8gV29ya2Fyb3VuZCBmb3IgdGhlIG5hbWUgY29uZmxpY3QgYmV0
d2VlbiBKU0NlbGw6OnNldFByb3RvdHlwZS4KICAgICBKU09iamVjdCoganNTZXRQcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX3NldFN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KQEAgLTc1
Nyw2ICs3NjUsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIGFzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IGFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FycmF5SXRlcmF0b3JT
dHJ1Y3R1cmUuZ2V0KCk7IH0gICAgCisgICAgU3RydWN0dXJlKiBtYXBJdGVyYXRvclN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBT
dHJ1Y3R1cmUqIHNldEl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zZXRJdGVy
YXRvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIGl0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1
Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVn
RXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCmluZGV4IGY4MGIzNDAxMGQzNWIyNmZkMzk2
ZmU4ZGQ1OWQwZDQ3NDRlN2IzYmEuLjU2NDhmODdkMzUxOGUwMzRiYWUxNTQ2YWI1ZDQ1YzgyNjk2
NjYyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0
b3IuY3BwCkBAIC0yNywyNiArMjcsNDEgQEAKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbElubGluZXMuaCIKICNpbmNsdWRlICJKU01hcC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAot
Y29uc3QgQ2xhc3NJbmZvIEpTTWFwSXRlcmF0b3I6OnNfaW5mbyA9IHsgIk1hcCBJdGVyYXRvciIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNYXBJdGVy
YXRvcikgfTsKK2NvbnN0IENsYXNzSW5mbyBKU01hcEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJNYXAg
SXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTTWFwSXRlcmF0b3IpIH07CiAKLXZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU01hcCogaXRlcmF0ZWRPYmplY3QpCitKU01hcEl0ZXJhdG9yKiBKU01h
cEl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNNYXBJdGVyYXRvcj4odm0uaGVhcCkpIEpTTWFwSXRlcmF0b3Iodm0sIHN0
cnVjdHVyZSk7CisgICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4g
aXRlcmF0b3I7Cit9CisKK3ZvaWQgSlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU01hcCogaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKK3sKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6TWFwQnVja2V0
KS5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0LT5oZWFkKCkpOworICAgIGludGVybmFsRmll
bGQoRmllbGQ6Okl0ZXJhdGVkT2JqZWN0KS5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsK
KyAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpLaW5kKS5zZXQodm0sIHRoaXMsIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KGtpbmQpKSk7Cit9CisKK3ZvaWQgSlNNYXBJdGVyYXRvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAg
ICBtX21hcC5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBzZXRJdGVyYXRvcih2
bSwgbV9tYXAtPmhlYWQoKSk7CisgICAgYXV0byB2YWx1ZXMgPSBpbml0aWFsVmFsdWVzKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUoKTsgKytpbmRl
eCkKKyAgICAgICAgQmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0KHZtLCB0aGlzLCB2YWx1
ZXNbaW5kZXhdKTsKIH0KIAogdm9pZCBKU01hcEl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgSlNNYXBJdGVyYXRvciogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CisgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9t
YXApOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faXRlcik7CiB9CiAKIEpTVmFs
dWUgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlUGFpcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTWFwSXRlcmF0b3IuaAppbmRleCA2ZTFmYTBjZmM2ODVlNGJhMzVjZWEzOWZmN2Uy
ZWU3ZmFhNmQ5Yjk4Li42MTVjNDBhMzUxMmJlZjAyNDZlOTYwMjIxYWNlYTRjZDVhMDdkZjEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5oCkBAIC0y
NiwyMSArMjYsMzcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSXRlcmF0aW9uS2luZC5o
IgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKICNpbmNsdWRlICJKU01h
cC5oIgotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0vLyBOb3cs
IGl0IGlzIG9ubHkgdXNlZCBmb3Igc2VyaWFsaXphdGlvbi4KLS8vIEZJWE1FOiBXZSBzaG91bGQg
dXNlIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwgdG8gaW1wbGVtZW50IHJlYWwgSlNNYXBJdGVy
YXRvciB1c2VkIGluIEpTQy4KLS8vIEN1cnJlbnRseSwgSlNDIGlzIHVzaW5nIGZpbmFsIG9iamVj
dHMgdG8gaW1wbGVtZW50IE1hcEl0ZXJhdG9yLgotY2xhc3MgSlNNYXBJdGVyYXRvciBmaW5hbCA6
IHB1YmxpYyBKU0NlbGwgewotICAgIHR5cGVkZWYgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0
RGF0YUtleVZhbHVlPiBIYXNoTWFwQnVja2V0VHlwZTsKK2NsYXNzIEpTTWFwSXRlcmF0b3IgZmlu
YWwgOiBwdWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwzPiB7CiBwdWJsaWM6Ci0gICAg
dXNpbmcgQmFzZSA9IEpTQ2VsbDsKKyAgICB1c2luZyBIYXNoTWFwQnVja2V0VHlwZSA9IEhhc2hN
YXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT47CisgICAgdXNpbmcgQmFzZSA9IEpT
SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Mz47CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
CisgICAgZW51bSBjbGFzcyBGaWVsZCA6IHVpbnQ4X3QgeworICAgICAgICBNYXBCdWNrZXQgPSAw
LAorICAgICAgICBJdGVyYXRlZE9iamVjdCwKKyAgICAgICAgS2luZCwKKyAgICB9OworICAgIHN0
YXRpY19hc3NlcnQobnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSAzKTsKKworICAgIHN0YXRpYyBz
dGQ6OmFycmF5PEpTVmFsdWUsIG51bWJlck9mSW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgeworICAgICAgICAgICAganNOdWxsKCksCisgICAg
ICAgICAgICBqc051bGwoKSwKKyAgICAgICAgICAgIGpzTnVtYmVyKDApLAorICAgICAgICB9IH07
CisgICAgfQorCisgICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5hbEZpZWxk
KEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19j
YXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRl
cm5hbEZpZWxkKEZpZWxkIGZpZWxkKSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKICAgICB7CkBAIC00OSw1MCArNjUsNTggQEAgY2xhc3MgSlNNYXBJdGVy
YXRvciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU01hcEl0ZXJhdG9yVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBKU01hcEl0ZXJhdG9yKiBjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNNYXAqIGl0ZXJhdGVkT2JqZWN0LCBJ
dGVyYXRpb25LaW5kIGtpbmQpCiAgICAgewotICAgICAgICBKU01hcEl0ZXJhdG9yKiBpbnN0YW5j
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTWFwSXRlcmF0b3I+KHZtLmhlYXApKSBK
U01hcEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUsIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKLSAgICAg
ICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBpdGVyYXRlZE9iamVjdCk7CisgICAgICAg
IEpTTWFwSXRlcmF0b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNN
YXBJdGVyYXRvcj4odm0uaGVhcCkpIEpTTWFwSXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAg
ICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgaXRlcmF0ZWRPYmplY3QsIGtpbmQpOwog
ICAgICAgICByZXR1cm4gaW5zdGFuY2U7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBIYXNo
TWFwQnVja2V0VHlwZSogYWR2YW5jZUl0ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICBzdGF0aWMgSlNNYXBJdGVyYXRvciogY3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mLCBT
dHJ1Y3R1cmUqKTsKKworICAgIEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1Y2tldFR5cGUqIGFkdmFu
Y2VJdGVyKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBwcmV2ID0g
bV9pdGVyLmdldCgpOwotICAgICAgICBpZiAoIXByZXYpCisgICAgICAgIEhhc2hNYXBCdWNrZXRU
eXBlKiBwcmV2ID0gaXRlcmF0b3IoKTsKKyAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIHNlbnRp
bmVsID0ganNDYXN0PEhhc2hNYXBCdWNrZXRUeXBlKj4odm0uc2VudGluZWxNYXBCdWNrZXQoKSk7
CisgICAgICAgIGlmIChwcmV2ID09IHNlbnRpbmVsKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIEhhc2hN
YXBCdWNrZXRUeXBlKiBidWNrZXQgPSBtX2l0ZXItPm5leHQoKTsKKyAgICAgICAgSGFzaE1hcEJ1
Y2tldFR5cGUqIGJ1Y2tldCA9IHByZXYtPm5leHQoKTsKICAgICAgICAgd2hpbGUgKGJ1Y2tldCAm
JiBidWNrZXQtPmRlbGV0ZWQoKSkKICAgICAgICAgICAgIGJ1Y2tldCA9IGJ1Y2tldC0+bmV4dCgp
OwogICAgICAgICBpZiAoIWJ1Y2tldCkgewotICAgICAgICAgICAgc2V0SXRlcmF0b3Iodm0sIG51
bGxwdHIpOworICAgICAgICAgICAgc2V0SXRlcmF0b3Iodm0sIHNlbnRpbmVsKTsKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIHNldEl0ZXJhdG9yKHZtLCBi
dWNrZXQpOyAvLyBXZSBrZWVwIG1faXRlciBvbiB0aGUgbGFzdCB2YWx1ZSBzaW5jZSB0aGUgZmly
c3QgdGhpbmcgd2UgZG8gaW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsIG5leHQoKS4KKyAgICAgICAg
c2V0SXRlcmF0b3Iodm0sIGJ1Y2tldCk7IC8vIFdlIGtlZXAgaXRlcmF0b3Igb24gdGhlIGxhc3Qg
dmFsdWUgc2luY2UgdGhlIGZpcnN0IHRoaW5nIHdlIGRvIGluIHRoaXMgZnVuY3Rpb24gaXMgY2Fs
bCBuZXh0KCkuCiAgICAgICAgIHJldHVybiBidWNrZXQ7CiAgICAgfQorCiAgICAgYm9vbCBuZXh0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUmIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IGFkdmFuY2VJdGVyKGdsb2JhbE9iamVj
dCk7CisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBhZHZhbmNlSXRlcihnZXRW
TShnbG9iYWxPYmplY3QpKTsKICAgICAgICAgaWYgKCFidWNrZXQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKG1fa2luZCA9PSBJdGVyYXRpb25LaW5kOjpWYWx1ZXMp
CisgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CisgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6
VmFsdWVzOgogICAgICAgICAgICAgdmFsdWUgPSBidWNrZXQtPnZhbHVlKCk7Ci0gICAgICAgIGVs
c2UgaWYgKG1fa2luZCA9PSBJdGVyYXRpb25LaW5kOjpLZXlzKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6S2V5czoKICAgICAgICAgICAgIHZhbHVlID0g
YnVja2V0LT5rZXkoKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgSXRlcmF0aW9uS2luZDo6RW50cmllczoKICAgICAgICAgICAgIHZhbHVlID0gY3JlYXRl
UGFpcihnbG9iYWxPYmplY3QsIGJ1Y2tldC0+a2V5KCksIGJ1Y2tldC0+dmFsdWUoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBib29sIG5leHRLZXlWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlJiBrZXksIEpTVmFsdWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldFR5
cGUqIGJ1Y2tldCA9IGFkdmFuY2VJdGVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgIEhhc2hNYXBC
dWNrZXRUeXBlKiBidWNrZXQgPSBhZHZhbmNlSXRlcihnZXRWTShnbG9iYWxPYmplY3QpKTsKICAg
ICAgICAgaWYgKCFidWNrZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwMSwy
NyArMTI1LDI0IEBAIGNsYXNzIEpTTWFwSXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgSXRlcmF0aW9uS2luZCBraW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9raW5kOyB9Ci0gICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9tYXAuZ2V0KCk7IH0KKyAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVyYXRpb25LaW5kPihpbnRlcm5hbEZpZWxkKEZpZWxk
OjpLaW5kKS5nZXQoKS5hc1VJbnQzMkFzQW55SW50KCkpOyB9CisgICAgSlNPYmplY3QqIGl0ZXJh
dGVkT2JqZWN0KCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oaW50ZXJuYWxGaWVs
ZChGaWVsZDo6SXRlcmF0ZWRPYmplY3QpLmdldCgpKTsgfQorICAgIEhhc2hNYXBCdWNrZXRUeXBl
KiBpdGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxIYXNoTWFwQnVja2V0VHlwZSo+KGlu
dGVybmFsRmllbGQoRmllbGQ6Ok1hcEJ1Y2tldCkuZ2V0KCkpOyB9CiAKIHByaXZhdGU6Ci0gICAg
SlNNYXBJdGVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU01hcCosIEl0ZXJh
dGlvbktpbmQga2luZCkKKyAgICBKU01hcEl0ZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAgICAgICAsIG1fa2luZChr
aW5kKQogICAgIHsgfQogCiAgICAgdm9pZCBzZXRJdGVyYXRvcihWTSYgdm0sIEhhc2hNYXBCdWNr
ZXRUeXBlKiBidWNrZXQpCiAgICAgewotICAgICAgICBtX2l0ZXIuc2V0TWF5QmVOdWxsKHZtLCB0
aGlzLCBidWNrZXQpOworICAgICAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpNYXBCdWNrZXQpLnNl
dCh2bSwgdGhpcywgYnVja2V0KTsKICAgICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNNYXAqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNNYXAqLCBJdGVyYXRpb25LaW5kKTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CiAgICAgSlNWYWx1ZSBjcmVhdGVQYWlyKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwotCi0gICAgV3JpdGVCYXJyaWVyPEpTTWFwPiBtX21hcDsKLSAg
ICBXcml0ZUJhcnJpZXI8SGFzaE1hcEJ1Y2tldFR5cGU+IG1faXRlcjsKLSAgICBJdGVyYXRpb25L
aW5kIG1fa2luZDsKIH07CiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SlNNYXBJdGVyYXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2V0SXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
ZXRJdGVyYXRvci5jcHAKaW5kZXggNTA5N2IyMDA1ZmE1OGQ1ZmNhZjhmZjI0MDlhZmFmY2JjNTlj
YjViZC4uZjk3MDVkM2MwYmQ2N2E4YjQ3MDZjN2Y5NzE1MWUzYWIzZmU1OTM3OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKQEAgLTI3LDI2
ICsyNyw0MSBAQAogI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKIAogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8g
SlNTZXRJdGVyYXRvcjo6c19pbmZvID0geyAiU2V0IEl0ZXJhdG9yIiwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1NldEl0ZXJhdG9yKSB9OworY29uc3Qg
Q2xhc3NJbmZvIEpTU2V0SXRlcmF0b3I6OnNfaW5mbyA9IHsgIlNldCBJdGVyYXRvciIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNTZXRJdGVy
YXRvcikgfTsKIAotdm9pZCBKU1NldEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
U2V0KiBpdGVyYXRlZE9iamVjdCkKK0pTU2V0SXRlcmF0b3IqIEpTU2V0SXRlcmF0b3I6OmNyZWF0
ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAg
SlNTZXRJdGVyYXRvciogaXRlcmF0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1Nl
dEl0ZXJhdG9yPih2bS5oZWFwKSkgSlNTZXRJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsKKyAgICBp
dGVyYXRvci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBpdGVyYXRvcjsKK30KKwor
dm9pZCBKU1NldEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTU2V0KiBpdGVyYXRl
ZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpTZXRCdWNrZXQpLnNldCh2bSwgdGhpcywg
aXRlcmF0ZWRPYmplY3QtPmhlYWQoKSk7CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6SXRlcmF0
ZWRPYmplY3QpLnNldCh2bSwgdGhpcywgaXRlcmF0ZWRPYmplY3QpOworICAgIGludGVybmFsRmll
bGQoRmllbGQ6OktpbmQpLnNldCh2bSwgdGhpcywganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oa2luZCkpKTsKK30KKwordm9pZCBKU1NldEl0ZXJhdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIG1fc2V0LnNldCh2bSwg
dGhpcywgaXRlcmF0ZWRPYmplY3QpOwotICAgIHNldEl0ZXJhdG9yKHZtLCBtX3NldC0+aGVhZCgp
KTsKKyAgICBhdXRvIHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNl
OjppbnRlcm5hbEZpZWxkKGluZGV4KS5zZXQodm0sIHRoaXMsIHZhbHVlc1tpbmRleF0pOwogfQog
CiB2b2lkIEpTU2V0SXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKLSAgICBKU1NldEl0ZXJhdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTU2V0SXRlcmF0b3IqPihjZWxsKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
U2V0SXRlcmF0b3IqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NldCk7Ci0gICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9pdGVyKTsKIH0KIAogSlNWYWx1ZSBKU1NldEl0ZXJhdG9y
OjpjcmVhdGVQYWlyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUga2V5LCBK
U1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTZXRJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVy
YXRvci5oCmluZGV4IDJiMTUyNWVlMmI0ZTQzNWY5YzVlZDFkZGZiNzU0MWQ3ZTI5OWI0MmIuLmVl
MzhkNmEwYzRlNjFkMWQ3ZmY4NWIxYTNhNTBhYWM5NjI5MTIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmgKQEAgLTI2LDIxICsyNiwzNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJdGVyYXRpb25LaW5kLmgiCi0jaW5jbHVkZSAiSlNP
YmplY3QuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCiAjaW5jbHVk
ZSAiSlNTZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLS8vIE5vdywgaXQgaXMgb25seSB1c2Vk
IGZvciBzZXJpYWxpemF0aW9uLgotLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbCB0byBpbXBsZW1lbnQgcmVhbCBKU1NldEl0ZXJhdG9yIHVzZWQgaW4gSlND
LgotLy8gQ3VycmVudGx5LCBKU0MgaXMgdXNpbmcgZmluYWwgb2JqZWN0cyB0byBpbXBsZW1lbnQg
U2V0SXRlcmF0b3IuCi1jbGFzcyBKU1NldEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
Ci0gICAgdHlwZWRlZiBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5PiBIYXNoTWFw
QnVja2V0VHlwZTsKK2NsYXNzIEpTU2V0SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbDwzPiB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsK
KyAgICB1c2luZyBIYXNoTWFwQnVja2V0VHlwZSA9IEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tl
dERhdGFLZXk+OworICAgIHVzaW5nIEJhc2UgPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDM+
OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAorICAgIGVudW0gY2xhc3MgRmllbGQgOiB1
aW50OF90IHsKKyAgICAgICAgU2V0QnVja2V0ID0gMCwKKyAgICAgICAgSXRlcmF0ZWRPYmplY3Qs
CisgICAgICAgIEtpbmQsCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mSW50ZXJu
YWxGaWVsZHMgPT0gMyk7CisKKyAgICBzdGF0aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1iZXJP
ZkludGVybmFsRmllbGRzPiBpbml0aWFsVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7
IHsKKyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAgICAgICAganNOdWxsKCksCisgICAgICAg
ICAgICBqc051bWJlcigwKSwKKyAgICAgICAgfSB9OworICAgIH0KKworICAgIGNvbnN0IFdyaXRl
QmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgY29uc3QgeyByZXR1
cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQor
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgeyBy
ZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsg
fQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgewpAQCAt
NDksNjggKzY1LDcyIEBAIGNsYXNzIEpTU2V0SXRlcmF0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxs
IHsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oSlNTZXRJdGVyYXRvclR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgSlNTZXRJdGVyYXRvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTU2V0KiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0aW9uS2luZCBraW5kKQogICAgIHsK
LSAgICAgICAgSlNTZXRJdGVyYXRvciogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU1NldEl0ZXJhdG9yPih2bS5oZWFwKSkgSlNTZXRJdGVyYXRvcih2bSwgc3RydWN0dXJl
LCBpdGVyYXRlZE9iamVjdCwga2luZCk7Ci0gICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlv
bih2bSwgaXRlcmF0ZWRPYmplY3QpOworICAgICAgICBKU1NldEl0ZXJhdG9yKiBpbnN0YW5jZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU2V0SXRlcmF0b3I+KHZtLmhlYXApKSBKU1Nl
dEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0sIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwog
ICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1Y2tldFR5cGUqIGFkdmFuY2VJdGVy
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpTU2V0SXRlcmF0b3Iq
IGNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiwgU3RydWN0dXJlKik7CisKKyAgICBBTFdBWVNf
SU5MSU5FIEhhc2hNYXBCdWNrZXRUeXBlKiBhZHZhbmNlSXRlcihWTSYgdm0pCiAgICAgewotICAg
ICAgICBIYXNoTWFwQnVja2V0VHlwZSogcHJldiA9IG1faXRlci5nZXQoKTsKLSAgICAgICAgaWYg
KCFwcmV2KQorICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogcHJldiA9IGl0ZXJhdG9yKCk7Cisg
ICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBzZW50aW5lbCA9IGpzQ2FzdDxIYXNoTWFwQnVja2V0
VHlwZSo+KHZtLnNlbnRpbmVsU2V0QnVja2V0KCkpOworICAgICAgICBpZiAocHJldiA9PSBzZW50
aW5lbCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBWTSYgdm0gPSBnZXRW
TShnbG9iYWxPYmplY3QpOwotICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0ID0gbV9p
dGVyLT5uZXh0KCk7CisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBwcmV2LT5u
ZXh0KCk7CiAgICAgICAgIHdoaWxlIChidWNrZXQgJiYgYnVja2V0LT5kZWxldGVkKCkpCiAgICAg
ICAgICAgICBidWNrZXQgPSBidWNrZXQtPm5leHQoKTsKICAgICAgICAgaWYgKCFidWNrZXQpIHsK
LSAgICAgICAgICAgIHNldEl0ZXJhdG9yKHZtLCBudWxscHRyKTsKKyAgICAgICAgICAgIHNldEl0
ZXJhdG9yKHZtLCBzZW50aW5lbCk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgfQotICAgICAgICBzZXRJdGVyYXRvcih2bSwgYnVja2V0KTsgLy8gV2Uga2VlcCBtX2l0ZXIg
b24gdGhlIGxhc3QgdmFsdWUgc2luY2UgdGhlIGZpcnN0IHRoaW5nIHdlIGRvIGluIHRoaXMgZnVu
Y3Rpb24gaXMgY2FsbCBuZXh0KCkuCisgICAgICAgIHNldEl0ZXJhdG9yKHZtLCBidWNrZXQpOyAv
LyBXZSBrZWVwIGl0ZXJhdG9yIG9uIHRoZSBsYXN0IHZhbHVlIHNpbmNlIHRoZSBmaXJzdCB0aGlu
ZyB3ZSBkbyBpbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGwgbmV4dCgpLgogICAgICAgICByZXR1cm4g
YnVja2V0OwogICAgIH0KIAogICAgIGJvb2wgbmV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBi
dWNrZXQgPSBhZHZhbmNlSXRlcihnbG9iYWxPYmplY3QpOworICAgICAgICBIYXNoTWFwQnVja2V0
VHlwZSogYnVja2V0ID0gYWR2YW5jZUl0ZXIoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAg
IGlmICghYnVja2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICht
X2tpbmQgPT0gSXRlcmF0aW9uS2luZDo6VmFsdWVzIHx8IG1fa2luZCA9PSBJdGVyYXRpb25LaW5k
OjpLZXlzKQorICAgICAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIEl0ZXJhdGlv
bktpbmQ6OlZhbHVlczoKKyAgICAgICAgY2FzZSBJdGVyYXRpb25LaW5kOjpLZXlzOgogICAgICAg
ICAgICAgdmFsdWUgPSBidWNrZXQtPmtleSgpOwotICAgICAgICBlbHNlCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOgogICAgICAgICAgICAg
dmFsdWUgPSBjcmVhdGVQYWlyKGdsb2JhbE9iamVjdCwgYnVja2V0LT5rZXkoKSwgYnVja2V0LT5r
ZXkoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tp
bmQ7IH0KLSAgICBKU1ZhbHVlIGl0ZXJhdGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NldC5n
ZXQoKTsgfQorICAgIEl0ZXJhdGlvbktpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEl0ZXJhdGlvbktpbmQ+KGludGVybmFsRmllbGQoRmllbGQ6OktpbmQpLmdldCgpLmFzVUlu
dDMyQXNBbnlJbnQoKSk7IH0KKyAgICBKU09iamVjdCogaXRlcmF0ZWRPYmplY3QoKSBjb25zdCB7
IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpJdGVyYXRlZE9i
amVjdCkuZ2V0KCkpOyB9CisgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGl0ZXJhdG9yKCkgY29uc3Qg
eyByZXR1cm4ganNDYXN0PEhhc2hNYXBCdWNrZXRUeXBlKj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6
U2V0QnVja2V0KS5nZXQoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBKU1NldEl0ZXJhdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2V0KiwgSXRlcmF0aW9uS2luZCBraW5kKQorICAg
IEpTU2V0SXRlcmF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCi0gICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgewogICAgIH0K
IAogICAgIHZvaWQgc2V0SXRlcmF0b3IoVk0mIHZtLCBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0
KQogICAgIHsKLSAgICAgICAgbV9pdGVyLnNldE1heUJlTnVsbCh2bSwgdGhpcywgYnVja2V0KTsg
CisgICAgICAgIGludGVybmFsRmllbGQoRmllbGQ6OlNldEJ1Y2tldCkuc2V0KHZtLCB0aGlzLCBi
dWNrZXQpOwogICAgIH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU1NldCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU1NldCosIEl0ZXJhdGlvbktpbmQpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGNyZWF0ZVBhaXIoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Ci0KLSAgICBXcml0ZUJhcnJpZXI8SlNTZXQ+IG1fc2V0
OwotICAgIFdyaXRlQmFycmllcjxIYXNoTWFwQnVja2V0VHlwZT4gbV9pdGVyOwotICAgIEl0ZXJh
dGlvbktpbmQgbV9raW5kOwogfTsKIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNU
SUJMRShKU1NldEl0ZXJhdG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZS5jcHAKaW5kZXggYjAyYjM0N2Q2YTUwMDQ1NTNiNTkyZWM2NGI0YzE0NGUzMDhkZDBjZi4uNmIz
ZGM5NjdjNDI5ZjliMzczMjgwM2ZmMjUwMzY1YzZhODI5MDQ0MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuY3BwCkBAIC0xMDAsNiArMTAwLDggQEAgdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBlIHR5cGUpCiAgICAgQ0FTRShKU0dl
bmVyYXRvclR5cGUpCiAgICAgQ0FTRShKU0FzeW5jR2VuZXJhdG9yVHlwZSkKICAgICBDQVNFKEpT
QXJyYXlJdGVyYXRvclR5cGUpCisgICAgQ0FTRShKU01hcEl0ZXJhdG9yVHlwZSkKKyAgICBDQVNF
KEpTU2V0SXRlcmF0b3JUeXBlKQogICAgIENBU0UoSlNTdHJpbmdJdGVyYXRvclR5cGUpCiAgICAg
Q0FTRShKU1Byb21pc2VUeXBlKQogICAgIENBU0UoSlNNYXBUeXBlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA0ODM2ZjkxYjBiYjRiMzY0ZWY3ZTE0ZTNjM2U5YjEy
YTNmNjEwMWYwLi5iN2FhYzI1NjJjZWFkZDcyNjY3YjVhYWE4OGEyMjMyZWRjMTQ2ZmM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtMTEyLDYgKzExMiw4IEBAIGVu
dW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgSlNHZW5lcmF0b3JUeXBlLAogICAgIEpTQXN5bmNH
ZW5lcmF0b3JUeXBlLAogICAgIEpTQXJyYXlJdGVyYXRvclR5cGUsCisgICAgSlNNYXBJdGVyYXRv
clR5cGUsCisgICAgSlNTZXRJdGVyYXRvclR5cGUsCiAgICAgSlNTdHJpbmdJdGVyYXRvclR5cGUs
CiAgICAgSlNQcm9taXNlVHlwZSwKICAgICBKU01hcFR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3Bw
CmluZGV4IDI5YTExNjcwYjI1YzFiMGUzYTNjNmZkNzg5YzBiNmMxNzgwZDA2ZjguLmYyYmZiNzM0
ZDYwYmJmZjhmOTg4ZWE2ZmUxOTU5ZDg4YTAzNDJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3Bw
CkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBKU0NfQlVJ
TFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImV2ZXJ5IiwgdHlwZWRBcnJheVByb3Rv
dHlwZUV2ZXJ5Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTigiZmlsdGVyIiwgdHlwZWRBcnJheVByb3RvdHlwZUZpbHRlckNvZGVHZW5lcmF0b3Is
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAg
ICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNvcnQiLCB0eXBlZEFy
cmF5UHJvdG90eXBlU29ydENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+ZW50cmllcywgdHlwZWRB
cnJheVByb3RvVmlld0Z1bmNFbnRyaWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWMpOworICAg
IEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCB0eXBlZEFycmF5
UHJvdG9WaWV3RnVuY0VudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCAwLCBUeXBlZEFycmF5RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImluY2x1ZGVzIiwgdHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNJbmNsdWRlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDEpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTigiZmlsbCIsIHR5cGVkQXJyYXlQcm90b3R5cGVGaWxsQ29kZUdlbmVyYXRvciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAg
IEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZmluZCIsIHR5cGVkQXJy
YXlQcm90b3R5cGVGaW5kQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqCiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmZvckVhY2gsIHR5cGVkQXJyYXlQcm90b3R5cGVGb3JFYWNoQ29k
ZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJpbmRl
eE9mIiwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+am9pbiwgdHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNKb2luLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMSk7Ci0gICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIHR5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jS2V5cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDAsIFR5cGVkQXJyYXlLZXlzSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJ
TlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNLZXlzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgVHlw
ZWRBcnJheUtleXNJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKCJsYXN0SW5kZXhPZiIsIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4
T2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAx
KTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19HRVRURVJfV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5n
dGgsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5LCBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljKTsK
ICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oIm1hcCIsIHR5cGVk
QXJyYXlQcm90b3R5cGVNYXBDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBKU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmoKICAgICBHZXR0ZXJTZXR0ZXIqIHRvU3RyaW5nVGFnQWNjZXNzb3IgPSBH
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0b1N0cmluZ1RhZ0Z1bmN0aW9u
LCBudWxscHRyKTsKICAgICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCB0b1N0cmluZ1RhZ0Fj
Y2Vzc29yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCi0gICAgSlNGdW5jdGlv
biogdmFsdWVzRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
MCwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCB0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY1ZhbHVlcywgVHlwZWRBcnJheVZhbHVlc0ludHJpbnNpYyk7CisgICAgSlNGdW5jdGlvbiog
dmFsdWVzRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpLnN0cmlu
ZygpLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1ZhbHVlcywgVHlwZWRBcnJheVZhbHVlc0ludHJp
bnNpYyk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpLCB2YWx1ZXNGdW5jdGlvbiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clN5bWJvbCwgdmFsdWVzRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXBQcm90b3R5cGUuY3BwCmluZGV4IDNiYWU4N2ViNTQ2OWRkNjliNDBiZjVkMTNiYTQ3ZDkxMDUz
ZDE2NjIuLjA5NWZiZDZiM2Q4Y2M4NjQxMDcxMjk2NDYzNWE0ZTlkNDliZDVhOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJMb29rdXAuaCIKIAogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5sdXQuaCIKQEAg
LTQzLDggKzQ0LDYgQEAgY29uc3QgQ2xhc3NJbmZvIE1hcFByb3RvdHlwZTo6c19pbmZvID0geyAi
TWFwIiwgJkJhc2U6OnNfaW5mbywgJm1hcFByb3RvdHlwZVRhYmwKIC8qIFNvdXJjZSBmb3IgTWFw
UHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gbWFwUHJvdG90eXBlVGFibGUKICAgZm9yRWFjaCAgIEpT
QnVpbHRpbiAgRG9udEVudW18RnVuY3Rpb24gMAotICB2YWx1ZXMgICAgSlNCdWlsdGluICBEb250
RW51bXxGdW5jdGlvbiAwCi0gIGtleXMgICAgICBKU0J1aWx0aW4gIERvbnRFbnVtfEZ1bmN0aW9u
IDAKIEBlbmQKICovCiAKQEAgLTUzLDYgKzUyLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW0K
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0dldChKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFwUHJvdG9GdW5jSGFzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTZXQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hcFByb3RvRnVuY1ZhbHVlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jS2V5cyhKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJvdG9GdW5jRW50cmllcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNTaXplKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAgICAgCkBAIC02NiwxNCArNjgsMTYgQEAgdm9pZCBNYXBQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+Z2V0LCBtYXBQcm90b0Z1bmNHZXQsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBKU01hcEdldEludHJpbnNp
Yyk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmhhcywgbWFwUHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNNYXBIYXNJbnRyaW5zaWMp
OwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5zZXQsIG1hcFByb3RvRnVuY1NldCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIsIEpTTWFwU2V0SW50cmluc2ljKTsK
KyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwgbWFwUHJvdG9G
dW5jS2V5cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIDAsIEpTTWFwS2V5c0ludHJpbnNpYyk7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnZhbHVlc1B1YmxpY05hbWUoKSwgbWFwUHJvdG9GdW5jVmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgSlNNYXBWYWx1ZXNJbnRyaW5z
aWMpOwogCiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCksIG1h
cFByb3RvRnVuY0dldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDEsIEpTTWFwR2V0SW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJ
Q19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuc2V0UHJpdmF0ZU5hbWUoKSwgbWFwUHJvdG9GdW5jU2V0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMiwgSlNNYXBTZXRJbnRyaW5zaWMp
OwogCi0gICAgSlNGdW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgbWFw
UHJvdG90eXBlRW50cmllc0NvZGVHZW5lcmF0b3Iodm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpT
RnVuY3Rpb24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
MCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKS5z
dHJpbmcoKSwgbWFwUHJvdG9GdW5jRW50cmllcywgSlNNYXBFbnRyaWVzSW50cmluc2ljKTsKICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgZW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
Z1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCAiTWFwIl9zKSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdT
eW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdm0ucHJvcGVydHlOYW1lcy0+TWFwLnN0cmlu
ZygpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKIAogICAgIEpTQ19OQVRJVkVfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5zaXplLCBtYXBQcm90b0Z1bmNTaXplLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCkBAIC0xNDAsNiArMTQ0
LDMxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2V0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aGlzVmFsdWUpOwogfQogCitpbmxpbmUgSlNWYWx1ZSBjcmVhdGVNYXBJdGVyYXRvck9iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSXRl
cmF0aW9uS2luZCBraW5kKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CisgICAgSlNNYXAq
IG1hcCA9IGdldE1hcChnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgaWYgKCFtYXApCisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBKU01hcEl0ZXJhdG9yOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgbWFwLCBraW5k
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNWYWx1ZXMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVNYXBJdGVyYXRvck9iamVjdChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZDo6VmFsdWVzKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jS2V5cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNyZWF0ZU1hcEl0ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBJ
dGVyYXRpb25LaW5kOjpLZXlzKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFwUHJvdG9GdW5jRW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZU1hcEl0
ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBJdGVyYXRpb25LaW5kOjpFbnRy
aWVzKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
ICAgICBKU01hcCogbWFwID0gZ2V0TWFwKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNw
cAppbmRleCA3MTc1OWQ0YTIyMGQ1NDUwYmMwZTMzMDQxODM0OGNiY2Y3ZWI0YzRmLi4wMGJmYWJl
OGU3MGExYzQ1NzM0NTE0M2QxN2ZiMTFhNDYyZjdhM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTG9v
a3VwLmgiCiAKICNpbmNsdWRlICJTZXRQcm90b3R5cGUubHV0LmgiCkBAIC00Myw3ICs0NCw2IEBA
IGNvbnN0IENsYXNzSW5mbyBTZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNldCIsICZCYXNlOjpz
X2luZm8sICZzZXRQcm90b3R5cGVUYWJsCiAvKiBTb3VyY2UgZm9yIFNldEl0ZXJhdG9yUHJvdG90
eXBlLmx1dC5oCiBAYmVnaW4gc2V0UHJvdG90eXBlVGFibGUKICAgZm9yRWFjaCAgIEpTQnVpbHRp
biAgRG9udEVudW18RnVuY3Rpb24gMAotICBlbnRyaWVzICAgSlNCdWlsdGluICBEb250RW51bXxG
dW5jdGlvbiAwCiBAZW5kCiAqLwogCkBAIC01MSw3ICs1MSw4IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0FkZChKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmND
bGVhcihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jRGVsZXRlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNI
YXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKLQorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNF
bnRyaWVzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY1NpemUoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKIApAQCAtNjQsMTQgKzY1LDE1IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+Y2xlYXIs
IHNldFByb3RvRnVuY0NsZWFyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+ZGVsZXRlS2V5d29yZCwgc2V0UHJvdG9GdW5jRGVsZXRl
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7
CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmhhcywgc2V0UHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNTZXRIYXNJbnRyaW5zaWMpOwor
ICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5lbnRyaWVzUHVibGljTmFtZSgpLCBzZXRQcm90
b0Z1bmNFbnRyaWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgMCwgSlNTZXRFbnRyaWVzSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lOVFJJ
TlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaGFzUHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9GdW5jSGFzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNTZXRIYXNJbnRyaW5z
aWMpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hZGRQcml2YXRlTmFtZSgpLCBzZXRQ
cm90b0Z1bmNBZGQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxLCBKU1NldEFkZEludHJpbnNpYyk7CiAKLSAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHNldFByb3RvdHlwZVZhbHVlc0NvZGVHZW5lcmF0b3Io
dm0pLCBnbG9iYWxPYmplY3QpOworICAgIEpTRnVuY3Rpb24qIHZhbHVlcyA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIHNldFByb3RvRnVuY1ZhbHVlcywgSlNT
ZXRWYWx1ZXNJbnRyaW5zaWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCksIHZhbHVl
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLCB2YWx1ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1Rh
Z1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCAiU2V0Il9zKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1i
b2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuU2V0UHVibGljTmFtZSgpLnN0cmluZygpKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAogICAgIEpTQ19OQVRJVkVfR0VUVEVS
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5zaXplLCBzZXRQcm90b0Z1bmNT
aXplLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNj
ZXNzb3IpOwogCkBAIC0xMzcsNCArMTM5LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc2V0UHJvdG9GdW5jU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzZXQtPnNpemUoKSkpOwogfQogCitp
bmxpbmUgSlNWYWx1ZSBjcmVhdGVTZXRJdGVyYXRvck9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZCBraW5kKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CisgICAgSlNTZXQqIHNldCA9IGdldFNldChnbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSk7CisgICAgaWYgKCFzZXQpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIHJldHVybiBKU1NldEl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgc2V0LCBraW5kKTsKK30KKworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNWYWx1ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjcmVhdGVTZXRJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgSXRl
cmF0aW9uS2luZDo6VmFsdWVzKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c2V0UHJvdG9GdW5jRW50cmllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZVNldEl0
ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBJdGVyYXRpb25LaW5kOjpFbnRy
aWVzKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA2OWU1
MmVhNjY3YzI1NDI5YmUwOTY1ZmI0MjFkOWI4OGM5NzAyNmRlLi5iMDIwMDQ5MWE4OWU4NzFlODg2
ZGZmMGQ1MDRmY2M5ZWM0MmJmZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CkBAIC0xNTQ5LDIwICsxNTQ5LDYgQEAgRFlOQU1JQ19TUEFDRV9BTkRfU0VUX0RFRklORV9NRU1C
RVJfU0xPVyhtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVNwYWNlLCBkZXN0cnVjdGkKIAogI3VuZGVm
IERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NMT1cKIAotU3RydWN0dXJlKiBW
TTo6c2V0SXRlcmF0b3JTdHJ1Y3R1cmVTbG93KCkKLXsKLSAgICBBU1NFUlQoIW1fc2V0SXRlcmF0
b3JTdHJ1Y3R1cmUpOwotICAgIG1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Nl
dEl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgcmV0
dXJuIG1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7Ci19Ci0KLVN0cnVjdHVyZSogVk06Om1h
cEl0ZXJhdG9yU3RydWN0dXJlU2xvdygpCi17Ci0gICAgQVNTRVJUKCFtX21hcEl0ZXJhdG9yU3Ry
dWN0dXJlKTsKLSAgICBtX21hcEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNNYXBJdGVy
YXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHJldHVybiBt
X21hcEl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOwotfQotCiBKU0NlbGwqIFZNOjpzZW50aW5lbFNl
dEJ1Y2tldFNsb3coKQogewogICAgIEFTU0VSVCghbV9zZW50aW5lbFNldEJ1Y2tldCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA5ZTk4ZDUzYzUzYTRmN2ZmZGE0ZjA2ZWRhZmQ3
NzkzNTI5NDQ5YjM4Li5kYjQxZjBiZDAyYTFiMDY5YjRiMzA1OTk1MGEwYTE3MmI0OTY3YWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY5OCw5ICs2OTgsNiBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRM
aXN0Tm9kZTxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGJpZ0ludFN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBleGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlU3RydWN0dXJlOwog
Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZTsKLSAgICBTdHJv
bmc8U3RydWN0dXJlPiBtX21hcEl0ZXJhdG9yU3RydWN0dXJlOwotCiAgICAgU3Ryb25nPEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcj4gbV9lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3I7CiAKICAg
ICBTdHJvbmc8SlNDZWxsPiBtX3NlbnRpbmVsU2V0QnVja2V0OwpAQCAtNzMzLDIwICs3MzAsNiBA
QCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3Vi
bHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogCiAgICAgU3Ryb25nPEpTQmlnSW50PiBiaWdJbnRDb25z
dGFudE9uZTsKIAotICAgIFN0cnVjdHVyZSogc2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKQotICAgIHsK
LSAgICAgICAgaWYgKExJS0VMWShtX3NldEl0ZXJhdG9yU3RydWN0dXJlKSkKLSAgICAgICAgICAg
IHJldHVybiBtX3NldEl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOwotICAgICAgICByZXR1cm4gc2V0
SXRlcmF0b3JTdHJ1Y3R1cmVTbG93KCk7Ci0gICAgfQotCi0gICAgU3RydWN0dXJlKiBtYXBJdGVy
YXRvclN0cnVjdHVyZSgpCi0gICAgewotICAgICAgICBpZiAoTElLRUxZKG1fbWFwSXRlcmF0b3JT
dHJ1Y3R1cmUpKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFwSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0
KCk7Ci0gICAgICAgIHJldHVybiBtYXBJdGVyYXRvclN0cnVjdHVyZVNsb3coKTsKLSAgICB9Ci0K
ICAgICBKU0NlbGwqIHNlbnRpbmVsU2V0QnVja2V0KCkKICAgICB7CiAgICAgICAgIGlmIChMSUtF
TFkobV9zZW50aW5lbFNldEJ1Y2tldCkpCkBAIC0xMTI3LDEwICsxMTEwLDggQEAgY2xhc3MgVk0g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlz
dE5vZGU8Vk0+IHsKICAgICBzdGF0aWMgVk0qJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAg
ICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgU3Ry
dWN0dXJlKiBzZXRJdGVyYXRvclN0cnVjdHVyZVNsb3coKTsKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBTdHJ1Y3R1cmUqIG1hcEl0ZXJhdG9yU3RydWN0dXJlU2xvdygpOwotICAgIEpTQ2VsbCogc2Vu
dGluZWxTZXRCdWNrZXRTbG93KCk7Ci0gICAgSlNDZWxsKiBzZW50aW5lbE1hcEJ1Y2tldFNsb3co
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0NlbGwqIHNlbnRpbmVsU2V0QnVja2V0U2xvdygp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTQ2VsbCogc2VudGluZWxNYXBCdWNrZXRTbG93KCk7
CiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0
b3JTbG93KCk7CiAKICAgICB2b2lkIHVwZGF0ZVN0YWNrTGltaXRzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA4
NGMxNjRkYTNlMjBhNWYyNzNjODExZjc4YTM4NzdiYjcyNjM5YzBjLi4xMmM3NmNmMDcyMDhjNDQ5
OGEyMjcyMDYyY2M0YjQ4MDY3ZmU2MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE2OTksNyArMTY5OSw3IEBA
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFs
dWUgaW4pCiAgICAgICAgICAgICAgICAgSlNNYXAqIGluTWFwID0ganNDYXN0PEpTTWFwKj4oaW5W
YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdGFydE1hcChpbk1hcCkpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9y
ID0gSlNNYXBJdGVyYXRvcjo6Y3JlYXRlKHZtLCB2bS5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCBp
bk1hcCwgSXRlcmF0aW9uS2luZDo6RW50cmllcyk7CisgICAgICAgICAgICAgICAgSlNNYXBJdGVy
YXRvciogaXRlcmF0b3IgPSBKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIG1fbGV4aWNhbEdsb2Jh
bE9iamVjdC0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaW5NYXAsIEl0ZXJhdGlvbktpbmQ6OkVu
dHJpZXMpOwogICAgICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVy
Zmxvdyhpbk1hcCk7CiAgICAgICAgICAgICAgICAgbV9nY0J1ZmZlci5hcHBlbmRXaXRoQ3Jhc2hP
bk92ZXJmbG93KGl0ZXJhdG9yKTsKICAgICAgICAgICAgICAgICBtYXBJdGVyYXRvclN0YWNrLmFw
cGVuZChpdGVyYXRvcik7CkBAIC0xNzQzLDcgKzE3NDMsNyBAQCBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAg
ICAgIEpTU2V0KiBpblNldCA9IGpzQ2FzdDxKU1NldCo+KGluVmFsdWUpOwogICAgICAgICAgICAg
ICAgIGlmICghc3RhcnRTZXQoaW5TZXQpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBKU1NldEl0ZXJhdG9yKiBpdGVyYXRvciA9IEpTU2V0SXRlcmF0b3I6OmNy
ZWF0ZSh2bSwgdm0uc2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaW5TZXQsIEl0ZXJhdGlvbktpbmQ6
OktleXMpOworICAgICAgICAgICAgICAgIEpTU2V0SXRlcmF0b3IqIGl0ZXJhdG9yID0gSlNTZXRJ
dGVyYXRvcjo6Y3JlYXRlKHZtLCBtX2xleGljYWxHbG9iYWxPYmplY3QtPnNldEl0ZXJhdG9yU3Ry
dWN0dXJlKCksIGluU2V0LCBJdGVyYXRpb25LaW5kOjpLZXlzKTsKICAgICAgICAgICAgICAgICBt
X2djQnVmZmVyLmFwcGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3coaW5TZXQpOwogICAgICAgICAgICAg
ICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhpdGVyYXRvcik7CiAgICAg
ICAgICAgICAgICAgc2V0SXRlcmF0b3JTdGFjay5hcHBlbmQoaXRlcmF0b3IpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmMThmZDZlYjU1
OTgwNWQ4Yzk1OTQ4MDUwZTk2ZjI1MjIxNmM2ZmE5Li45MjVlN2E1YmVkZWVlYmMyYTEwMjY5YWQ2
Y2I2YTgwMWRlZTBmZWMyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA0LTA2ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IEpTTWFwSXRl
cmF0b3IvSlNTZXRJdGVyYXRvciB3aXRoIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDAyMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL21hcC1p
dGVyYXRpb24tb2FzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAqIHN0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodGVzdDIpOgorICAgICAg
ICAodGVzdDMpOgorICAgICAgICAqIHN0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChpLnNob3VsZFRocm93
KToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToKKyAgICAgICAgKiBzdHJlc3Mv
c2V0LWl0ZXJhdGlvbi1vYXMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAqIHN0cmVzcy9zZXQtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2V0IHNob3VsZFRocm93KToKKyAgICAgICAg
KiBzdHJlc3Mvc2V0LWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwuanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkVGhyb3cpOgorICAgICAgICAoaS5zaG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0Mik6
CisgICAgICAgICh0ZXN0Myk6CisKIDIwMjAtMDQtMDUgIEFsZXhleSBTaHZheWthICA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIE9jdGFsIGVzY2FwZXMgc2hvdWxkIGJlIG1heCAz
IGRpZ2l0cyBhbmQgc3ludGF4IGVycm9ycyBpbiBVbmljb2RlIHBhdHRlcm5zCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9tYXAtaXRlcmF0aW9uLW9hcy5qcyBiL0pTVGVzdHMvc3RyZXNzL21h
cC1pdGVyYXRpb24tb2FzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2NjFjNGY0ZDQ0OGFmNTJmNDk2OTBjMzAy
MWFjNmQ3YWQ1ZmZhMjQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9tYXAtaXRl
cmF0aW9uLW9hcy5qcwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCit2YXIgbWFwID0gbmV3
IE1hcDsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCisgICAgbWFwLnNldChpLCBpKTsK
KworZnVuY3Rpb24gdGVzdChtYXApIHsKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxl
dCBbYSwgYl0gb2YgbWFwKSB7CisgICAgICAgIHJlc3VsdCArPSBhOworICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2
OyArK2kpCisgICAgc2hvdWxkQmUodGVzdChtYXApLCA0OTUwKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL21hcC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLWRmZy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL21hcC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLWRmZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjAwNjY3
YzQyYmI4ZTNjODE5YmEyMTcwMjdkN2I4MzNhMzI4OTFjCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvbWFwLWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwtZGZnLmpzCkBAIC0wLDAgKzEs
NTQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZh
ciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsK
KyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24g
PSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24p
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmco
ZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVy
cm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKG1hcCkKK3sKKyAg
ICBNYXAucHJvdG90eXBlLnZhbHVlcy5jYWxsKG1hcCk7Cit9Citub0lubGluZSh0ZXN0MSk7CisK
K3ZhciBtYXAgPSBuZXcgTWFwKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAg
IHRlc3QxKG1hcCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICB0ZXN0MSh7fSk7Cit9LCBg
VHlwZUVycm9yOiBNYXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVjdGApOworCitm
dW5jdGlvbiB0ZXN0MihtYXApCit7CisgICAgTWFwLnByb3RvdHlwZS5rZXlzLmNhbGwobWFwKTsK
K30KK25vSW5saW5lKHRlc3QyKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAg
ICB0ZXN0MihtYXApOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgdGVzdDIoe30pOworfSwg
YFR5cGVFcnJvcjogTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3RgKTsKKwor
ZnVuY3Rpb24gdGVzdDMobWFwKQoreworICAgIE1hcC5wcm90b3R5cGUuZW50cmllcy5jYWxsKG1h
cCk7Cit9Citub0lubGluZSh0ZXN0Myk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kp
CisgICAgdGVzdDMobWFwKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIHRlc3QzKHt9KTsK
K30sIGBUeXBlRXJyb3I6IE1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2JqZWN0YCk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC5q
cyBiL0pTVGVzdHMvc3RyZXNzL21hcC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBiOGUzZGY1NGY2ZTA4MjY4ODVlM2Q0YmUxM2YyNzMwMjRlNjMxZDgKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC5qcwpAQCAt
MCwwICsxLDUwIEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsK
KyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9y
VGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9y
VGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAo
U3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiB0ZXN0MSgpCit7
CisgICAgTWFwLnByb3RvdHlwZS52YWx1ZXMuY2FsbCh7fSk7Cit9Citub0lubGluZSh0ZXN0MSk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9
PiB7CisgICAgICAgIHRlc3QxKCk7CisgICAgfSwgYFR5cGVFcnJvcjogTWFwIG9wZXJhdGlvbiBj
YWxsZWQgb24gbm9uLU1hcCBvYmplY3RgKTsKK30KKworZnVuY3Rpb24gdGVzdDIoKQoreworICAg
IE1hcC5wcm90b3R5cGUua2V5cy5jYWxsKHt9KTsKK30KK25vSW5saW5lKHRlc3QyKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAg
ICAgICAgdGVzdDIoKTsKKyAgICB9LCBgVHlwZUVycm9yOiBNYXAgb3BlcmF0aW9uIGNhbGxlZCBv
biBub24tTWFwIG9iamVjdGApOworfQorCitmdW5jdGlvbiB0ZXN0MygpCit7CisgICAgTWFwLnBy
b3RvdHlwZS5lbnRyaWVzLmNhbGwoe30pOworfQorbm9JbmxpbmUodGVzdDMpOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAg
ICB0ZXN0MygpOworICAgIH0sIGBUeXBlRXJyb3I6IE1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5v
bi1NYXAgb2JqZWN0YCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0
aW9uLW9hcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3NldC1pdGVyYXRpb24tb2FzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ4MjhiMDVmMmJhNzA2ODA2NjUzYTQ0MDI3NjY0ODRiNDM5OGQ5OWEKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0aW9uLW9hcy5qcwpAQCAtMCwwICsxLDIx
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworCit2YXIgc2V0ID0gbmV3IFNldDsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwOyArK2kpCisgICAgc2V0LmFkZChpKTsKKworZnVuY3Rpb24gdGVzdChzZXQpIHsKKyAgICB2
YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxldCBhIG9mIHNldCkgeworICAgICAgICByZXN1bHQg
Kz0gYTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KK25vSW5saW5lKHRlc3QpOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKHRlc3Qoc2V0KSwgNDk1
MCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0b3ItY3JlYXRpb24tZmFp
bC1kZmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2Q3NTNkNDY4NDZiMWFkNDgwZjU2OWE3MDg4MTRlNjU1MmRiYTExMgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3NldC1pdGVyYXRvci1jcmVhdGlvbi1m
YWlsLWRmZy5qcwpAQCAtMCwwICsxLDU0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJy
b3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJv
d24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5j
dGlvbiB0ZXN0MShzZXQpCit7CisgICAgU2V0LnByb3RvdHlwZS52YWx1ZXMuY2FsbChzZXQpOwor
fQorbm9JbmxpbmUodGVzdDEpOworCit2YXIgc2V0ID0gbmV3IFNldCgpOworZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTY7ICsraSkKKyAgICB0ZXN0MShzZXQpOworCitzaG91bGRUaHJvdygoKSA9PiB7
CisgICAgdGVzdDEoe30pOworfSwgYFR5cGVFcnJvcjogU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24g
bm9uLVNldCBvYmplY3RgKTsKKworZnVuY3Rpb24gdGVzdDIoc2V0KQoreworICAgIFNldC5wcm90
b3R5cGUua2V5cy5jYWxsKHNldCk7Cit9Citub0lubGluZSh0ZXN0Mik7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU2OyArK2kpCisgICAgdGVzdDIoc2V0KTsKKworc2hvdWxkVGhyb3coKCkgPT4g
eworICAgIHRlc3QyKHt9KTsKK30sIGBUeXBlRXJyb3I6IFNldCBvcGVyYXRpb24gY2FsbGVkIG9u
IG5vbi1TZXQgb2JqZWN0YCk7CisKK2Z1bmN0aW9uIHRlc3QzKHNldCkKK3sKKyAgICBTZXQucHJv
dG90eXBlLmVudHJpZXMuY2FsbChzZXQpOworfQorbm9JbmxpbmUodGVzdDMpOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgIHRlc3QzKHNldCk7CisKK3Nob3VsZFRocm93KCgp
ID0+IHsKKyAgICB0ZXN0Myh7fSk7Cit9LCBgVHlwZUVycm9yOiBTZXQgb3BlcmF0aW9uIGNhbGxl
ZCBvbiBub24tU2V0IG9iamVjdGApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0
ZXJhdG9yLWNyZWF0aW9uLWZhaWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0b3ItY3Jl
YXRpb24tZmFpbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWFhOTk3MTk4MTFjM2UzNWU5NTZkM2IwZTJiOTdi
ZWJmMjdhMWI4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0ZXJhdG9y
LWNyZWF0aW9uLWZhaWwuanMKQEAgLTAsMCArMSw1MCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30K
KworZnVuY3Rpb24gdGVzdDEoKQoreworICAgIFNldC5wcm90b3R5cGUudmFsdWVzLmNhbGwoe30p
OworfQorbm9JbmxpbmUodGVzdDEpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7
CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICB0ZXN0MSgpOworICAgIH0sIGBUeXBl
RXJyb3I6IFNldCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0YCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3QyKCkKK3sKKyAgICBTZXQucHJvdG90eXBlLmtleXMuY2FsbCh7fSk7Cit9Citu
b0lubGluZSh0ZXN0Mik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICBz
aG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIHRlc3QyKCk7CisgICAgfSwgYFR5cGVFcnJvcjog
U2V0IG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLVNldCBvYmplY3RgKTsKK30KKworZnVuY3Rpb24g
dGVzdDMoKQoreworICAgIFNldC5wcm90b3R5cGUuZW50cmllcy5jYWxsKHt9KTsKK30KK25vSW5s
aW5lKHRlc3QzKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgIHNob3Vs
ZFRocm93KCgpID0+IHsKKyAgICAgICAgdGVzdDMoKTsKKyAgICB9LCBgVHlwZUVycm9yOiBTZXQg
b3BlcmF0aW9uIGNhbGxlZCBvbiBub24tU2V0IG9iamVjdGApOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395553</attachid>
            <date>2020-04-06 00:57:05 -0700</date>
            <delta_ts>2020-04-15 14:22:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210023-20200406005704.patch</filename>
            <type>text/plain</type>
            <size>126006</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YjVhMmMwZWU3NjJmOTE1MzY2ZTFiMGEwYjI4OGM2NDMxOTJmZjNkLi41ODlmZWU0OWY4ZTZjNjRl
YWQzMTM1YjkxZmYwYjdhNTU0NjEyM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDggQEAKKzIwMjAtMDQtMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgSlNNYXBJdGVyYXRvci9KU1NldEl0ZXJhdG9y
IHdpdGggSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMDIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWltcGxlbWVudCBKU01hcEl0ZXJh
dG9yL0pTU2V0SXRlcmF0b3Igd2l0aCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLgorICAgICAg
ICBUaGlzIG1ha2VzIGN1cnJlbnQgSlNGaW5hbE9iamVjdC1iYXNlZCBNYXAvU2V0SXRlcmF0b3Ig
c2ltcGxlIGFuZCBzbWFsbC4KKyAgICAgICAgV2UgZ2VuZXJhbGl6ZSBOZXdBcnJheUl0ZXJhdG9y
L1BoYW50b21OZXdBcnJheUl0ZXJhdG9yIHRvIGNvbnZlcnQgdGhlbSB0byBOZXdJbnRlcm5hbEZp
ZWxkT2JqZWN0L1BoYW50b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0CisgICAgICAgIHRvIHN1cHBv
cnQgSlNNYXBJdGVyYXRvci9KU1NldEl0ZXJhdG9yIHRvbyBpbiBERkcgLyBGVEwuIFRoaXMgbWFr
ZXMgYWxsb2NhdGlvbiBlZmZpY2llbnQgYW5kIG9iamVjdC1hbGxvY2F0aW9uLXNpbmtpbmcgYXdh
cmUuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBidWls
dGlucy9NYXBJdGVyYXRvclByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubWFw
SXRlcmF0b3JOZXh0KToKKyAgICAgICAgKG5leHQpOgorICAgICAgICAqIGJ1aWx0aW5zL01hcFBy
b3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuTWFwSXRlcmF0b3IpOiBEZWxldGVk
LgorICAgICAgICAodmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKGtleXMpOiBEZWxldGVkLgor
ICAgICAgICAoZW50cmllcyk6IERlbGV0ZWQuCisgICAgICAgICogYnVpbHRpbnMvU2V0SXRlcmF0
b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnNldEl0ZXJhdG9yTmV4dCk6
CisgICAgICAgIChuZXh0KToKKyAgICAgICAgKiBidWlsdGlucy9TZXRQcm90b3R5cGUuanM6Cisg
ICAgICAgIChnbG9iYWxQcml2YXRlLlNldEl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKHZh
bHVlcyk6IERlbGV0ZWQuCisgICAgICAgIChlbnRyaWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdElzTWFwSXRlcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdElzU2V0SXRlcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjptYXBJdGVyYXRvckludGVybmFsRmllbGRJbmRleCk6
CisgICAgICAgIChKU0M6OnNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRNYXBJdGVyYXRv
ckludGVybmFsRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVt
aXRfaW50cmluc2ljX2dldFNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfcHV0TWFwSXRlcmF0b3JJbnRl
cm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19wdXRTZXRJdGVyYXRvckludGVybmFsRmllbGQpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJp
emUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZH
Q2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0
YXRlKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAg
ICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50
b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzUGhhbnRvbUFsbG9jYXRpb24p
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b21OZXdBcnJheUl0ZXJh
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBk
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RG
R09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAg
ICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXN5bmNHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3SW50ZXJuYWxG
aWVsZE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdBcnJheUl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVj
dEltcGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZU5ld0FzeW5jR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5
SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpvcGVyYXRpb25Qb3B1bGF0ZU9iamVjdEluT1NSKToKKyAgICAgICAg
KEpTQzo6RlRMOjpvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0luamVjdGVkU2NyaXB0SG9zdDo6c3VidHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpjbG9uZU1hcEl0ZXJhdG9yT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6Y2xvbmVT
ZXRJdGVyYXRvck9iamVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjppdGVyYXRvckVudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6Omlu
dHJpbnNpY05hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICog
cnVudGltZS9KU0FycmF5SXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWFwSXRlcmF0
b3JQcm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6c2V0SXRl
cmF0b3JQcm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWFw
SXRlcmF0b3JTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
c2V0SXRlcmF0b3JTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTTWFwSXRlcmF0b3I6OmNyZWF0ZVdpdGhJbml0aWFs
VmFsdWVzKToKKyAgICAgICAgKEpTQzo6SlNNYXBJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpKU01hcEl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0pTTWFwSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU2V0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKU1NldEl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVl
cyk6CisgICAgICAgIChKU0M6OkpTU2V0SXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNTZXRJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9KU1NldEl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuY3BwOgorICAgICAg
ICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBydW50aW1lL01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjcmVhdGVNYXBJdGVyYXRvck9iamVjdCk6
CisgICAgICAgIChKU0M6Om1hcFByb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgIChKU0M6Om1hcFBy
b3RvRnVuY0tleXMpOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNFbnRyaWVzKToKKyAgICAg
ICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlNldFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjcmVhdGVTZXRJdGVyYXRvck9iamVj
dCk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgIChKU0M6OnNl
dFByb3RvRnVuY0VudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6c2V0SXRlcmF0b3JTdHJ1Y3R1cmVTbG93KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Vk06Om1hcEl0ZXJhdG9yU3RydWN0dXJlU2xvdyk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6c2V0SXRlcmF0b3JTdHJ1Y3R1cmUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpWTTo6bWFwSXRlcmF0b3JTdHJ1Y3R1cmUpOiBEZWxldGVkLgor
CiAyMDIwLTA0LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gSlNBcnJheUl0ZXJhdG9yJ3Mgc2l6ZSBpcyB3cm9uZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU4
ODI5MmE5MmU4MjVmZjc0MDUyMTgzMDM5MzgyYjFjM2ZkNmU5MzUuLjBmZjliYTVlMjMwMjNiMGIw
ODdkOTgwODg4M2ZhNjlhOTA3NTdmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MC0wNC0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtK
U0NdIEltcGxlbWVudCBKU01hcEl0ZXJhdG9yL0pTU2V0SXRlcmF0b3Igd2l0aCBKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTAwMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisKIDIwMjAtMDQtMDQgIFJv
YiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgTG9ja0hpc3Rvcnkg
cGFyYW1ldGVyIGZyb20gbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMTk3MGM5ZjQzMDYwODcyMWEy
YTMyNTZiMjZlMmU0NmIzYzgzYTZkMi4uOTE1N2VjNWZlMzdjNTkxNmRjNzM0OWExOWY3ZGVjNWQ2
MGM3YWZmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuaApAQCAtODUsNiArODUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhyZXBlYXRD
aGFyYWN0ZXIpIFwKICAgICBtYWNybyhzdGFyRGVmYXVsdCkgXAogICAgIG1hY3JvKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbikgXAorICAgIG1hY3JvKGtleXMpIFwKKyAgICBtYWNybyh2YWx1ZXMp
IFwKICAgICBtYWNybyhnZXQpIFwKICAgICBtYWNybyhzZXQpIFwKICAgICBtYWNybyhzaGlmdCkg
XApAQCAtMTI4LDE3ICsxMzAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8ocmVwbGFj
ZVVzaW5nU3RyaW5nU2VhcmNoKSBcCiAgICAgbWFjcm8ocmVwbGFjZUFsbFVzaW5nU3RyaW5nU2Vh
cmNoKSBcCiAgICAgbWFjcm8obWFrZVR5cGVFcnJvcikgXAotICAgIG1hY3JvKG1hcEJ1Y2tldCkg
XAogICAgIG1hY3JvKG1hcEJ1Y2tldEhlYWQpIFwKICAgICBtYWNybyhtYXBCdWNrZXROZXh0KSBc
CiAgICAgbWFjcm8obWFwQnVja2V0S2V5KSBcCiAgICAgbWFjcm8obWFwQnVja2V0VmFsdWUpIFwK
LSAgICBtYWNybyhtYXBJdGVyYXRvcktpbmQpIFwKLSAgICBtYWNybyhzZXRCdWNrZXQpIFwKICAg
ICBtYWNybyhzZXRCdWNrZXRIZWFkKSBcCiAgICAgbWFjcm8oc2V0QnVja2V0TmV4dCkgXAogICAg
IG1hY3JvKHNldEJ1Y2tldEtleSkgXAotICAgIG1hY3JvKHNldEl0ZXJhdG9yS2luZCkgXAogICAg
IG1hY3JvKHJlZ0V4cEJ1aWx0aW5FeGVjKSBcCiAgICAgbWFjcm8ocmVnRXhwTWF0Y2hGYXN0KSBc
CiAgICAgbWFjcm8ocmVnRXhwUHJvdG9GbGFnc0dldHRlcikgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcEl0ZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IGZm
ZmNlZThhMzRjNjA4OTQzZTEwZmY5MDk0YzBjOWIyYTMxNzA3YTEuLjY5NDAzMWI4YTBkMGU2NDZk
YTNmMjYxNGEwYjExMzc5OTIwOWMzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9NYXBJdGVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvTWFwSXRlcmF0b3JQcm90b3R5cGUuanMKQEAgLTMxLDcgKzMxLDcgQEAg
ZnVuY3Rpb24gbWFwSXRlcmF0b3JOZXh0KGJ1Y2tldCwga2luZCkKICAgICB2YXIgdmFsdWU7CiAK
ICAgICBidWNrZXQgPSBAbWFwQnVja2V0TmV4dChidWNrZXQpOwotICAgIEBwdXRCeUlkRGlyZWN0
UHJpdmF0ZSh0aGlzLCAibWFwQnVja2V0IiwgYnVja2V0KTsKKyAgICBAcHV0TWFwSXRlcmF0b3JJ
bnRlcm5hbEZpZWxkKHRoaXMsIEBtYXBJdGVyYXRvckZpZWxkTWFwQnVja2V0LCBidWNrZXQpOwog
ICAgIHZhciBkb25lID0gYnVja2V0ID09PSBAc2VudGluZWxNYXBCdWNrZXQ7CiAgICAgaWYgKCFk
b25lKSB7CiAgICAgICAgIHZhciBrZXkgPSBAbWFwQnVja2V0S2V5KGJ1Y2tldCk7CkBAIC00OCwx
MSArNDgsMTAgQEAgZnVuY3Rpb24gbmV4dCgpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAg
aWYgKEBpc1VuZGVmaW5lZE9yTnVsbCh0aGlzKSkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCIl
TWFwSXRlcmF0b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwgb3IgdW5kZWZpbmVkIik7CisgICAgaWYgKCFAaXNNYXBJdGVyYXRvcih0aGlzKSkKKyAgICAg
ICAgQHRocm93VHlwZUVycm9yKCIlTWFwSXRlcmF0b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMg
dGhhdCB8dGhpc3wgYmUgYW4gTWFwIEl0ZXJhdG9yIGluc3RhbmNlIik7CiAKLSAgICB2YXIgYnVj
a2V0ID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJtYXBCdWNrZXQiKTsKLSAgICBpZiAo
YnVja2V0ID09PSBAdW5kZWZpbmVkKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVNYXBJdGVy
YXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhIE1hcCBJdGVyYXRv
ciBpbnN0YW5jZSIpOwotICAgIHJldHVybiBAbWFwSXRlcmF0b3JOZXh0LkBjYWxsKHRoaXMsIGJ1
Y2tldCwgQGdldEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJtYXBJdGVyYXRvcktpbmQiKSk7Cisg
ICAgdmFyIGJ1Y2tldCA9IEBnZXRNYXBJdGVyYXRvckludGVybmFsRmllbGQodGhpcywgQG1hcEl0
ZXJhdG9yRmllbGRNYXBCdWNrZXQpOworICAgIHZhciBraW5kID0gQGdldE1hcEl0ZXJhdG9ySW50
ZXJuYWxGaWVsZCh0aGlzLCBAbWFwSXRlcmF0b3JGaWVsZEtpbmQpOworICAgIHJldHVybiBAbWFw
SXRlcmF0b3JOZXh0LkBjYWxsKHRoaXMsIGJ1Y2tldCwga2luZCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTWFwUHJvdG90eXBlLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL01hcFByb3RvdHlwZS5qcwppbmRleCA4YTViZDNjMjZmN2Vh
MTU1NGVjYjA5YTE4MzVmMTRlZGQzZGRkZGM3Li5jYzZiM2FhZGZmNjU3MTJkODk2MjM2YWI5ZWVk
NWE4NmRhZjNlODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
TWFwUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9NYXBQ
cm90b3R5cGUuanMKQEAgLTIzLDQ4ICsyMyw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLUBj
b25zdHJ1Y3RvcgotQGdsb2JhbFByaXZhdGUKLWZ1bmN0aW9uIE1hcEl0ZXJhdG9yKGl0ZXJhdGVk
T2JqZWN0LCBraW5kKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIEBhc3NlcnQoQGlzTWFw
KGl0ZXJhdGVkT2JqZWN0KSk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJpdGVy
YXRlZE9iamVjdCIsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUo
dGhpcywgIm1hcEl0ZXJhdG9yS2luZCIsIGtpbmQpOwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0
ZSh0aGlzLCAibWFwQnVja2V0IiwgQG1hcEJ1Y2tldEhlYWQoaXRlcmF0ZWRPYmplY3QpKTsKLX0K
LQotZnVuY3Rpb24gdmFsdWVzKCkKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBp
c01hcCh0aGlzKSkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJNYXAucHJvdG90eXBlLnZhbHVl
cyByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBNYXAiKTsKLQotICAgIHJldHVybiBuZXcgQE1hcEl0
ZXJhdG9yKHRoaXMsIEBpdGVyYXRpb25LaW5kVmFsdWUpOwotfQotCi1mdW5jdGlvbiBrZXlzKCkK
LXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICBpZiAoIUBpc01hcCh0aGlzKSkKLSAgICAgICAg
QHRocm93VHlwZUVycm9yKCJNYXAucHJvdG90eXBlLmtleXMgcmVxdWlyZXMgdGhhdCB8dGhpc3wg
YmUgTWFwIik7Ci0KLSAgICByZXR1cm4gbmV3IEBNYXBJdGVyYXRvcih0aGlzLCBAaXRlcmF0aW9u
S2luZEtleSk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJpZXMoKQotewotICAgICJ1c2Ugc3RyaWN0IjsK
LQotICAgIGlmICghQGlzTWFwKHRoaXMpKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk1hcC5w
cm90b3R5cGUuZW50cmllcyByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBNYXAiKTsKLQotICAgIHJl
dHVybiBuZXcgQE1hcEl0ZXJhdG9yKHRoaXMsIEBpdGVyYXRpb25LaW5kRW50cmllcyk7Ci19Ci0K
IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiB7CiAgICAgInVzZSBz
dHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NldEl0
ZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NldEl0
ZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IGU5Y2U4ZjBhNjdjMDc1ZTI0YzhhMjIxY2Y0MWIwOTFl
ZDdjYzZlMDEuLjliYjBlZDllOGYzMjVjZjczNjY0ZTUwNjE2ODhkMWY1ZGE3OGY3MjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TZXRJdGVyYXRvclByb3RvdHlw
ZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90
b3R5cGUuanMKQEAgLTMxLDcgKzMxLDcgQEAgZnVuY3Rpb24gc2V0SXRlcmF0b3JOZXh0KGJ1Y2tl
dCwga2luZCkKICAgICB2YXIgdmFsdWU7CiAKICAgICBidWNrZXQgPSBAc2V0QnVja2V0TmV4dChi
dWNrZXQpOwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic2V0QnVja2V0IiwgYnVj
a2V0KTsKKyAgICBAcHV0U2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBzZXRJdGVyYXRv
ckZpZWxkU2V0QnVja2V0LCBidWNrZXQpOwogICAgIHZhciBkb25lID0gYnVja2V0ID09PSBAc2Vu
dGluZWxTZXRCdWNrZXQ7CiAgICAgaWYgKCFkb25lKSB7CiAgICAgICAgIHZhbHVlID0gQHNldEJ1
Y2tldEtleShidWNrZXQpOwpAQCAtNDUsMTEgKzQ1LDEwIEBAIGZ1bmN0aW9uIG5leHQoKQogewog
ICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIGlmIChAaXNVbmRlZmluZWRPck51bGwodGhpcykpCi0g
ICAgICAgIEB0aHJvd1R5cGVFcnJvcigiJVNldEl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0IHJlcXVp
cmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwotCi0gICAgdmFyIGJ1
Y2tldCA9IEBnZXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic2V0QnVja2V0Iik7Ci0gICAgaWYg
KGJ1Y2tldCA9PT0gQHVuZGVmaW5lZCkKKyAgICBpZiAoIUBpc1NldEl0ZXJhdG9yKHRoaXMpKQog
ICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIiVTZXRJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1
aXJlcyB0aGF0IHx0aGlzfCBiZSBhIFNldCBJdGVyYXRvciBpbnN0YW5jZSIpOwotICAgIHJldHVy
biBAc2V0SXRlcmF0b3JOZXh0LkBjYWxsKHRoaXMsIGJ1Y2tldCwgQGdldEJ5SWREaXJlY3RQcml2
YXRlKHRoaXMsICJzZXRJdGVyYXRvcktpbmQiKSk7CisKKyAgICB2YXIgYnVja2V0ID0gQGdldFNl
dEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCh0aGlzLCBAc2V0SXRlcmF0b3JGaWVsZFNldEJ1Y2tldCk7
CisgICAgdmFyIGtpbmQgPSBAZ2V0U2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkKHRoaXMsIEBzZXRJ
dGVyYXRvckZpZWxkS2luZCk7CisgICAgcmV0dXJuIEBzZXRJdGVyYXRvck5leHQuQGNhbGwodGhp
cywgYnVja2V0LCBraW5kKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9TZXRQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
U2V0UHJvdG90eXBlLmpzCmluZGV4IDZkZjhlOGZkZDk5ZDFkMzE2NWExZjFlNDAxNGYzNWIyMzFh
YzE3NWQuLmZjYjQ2ODhhYjI5MWFiYTk0Y2Q2YjBmMmI3Mzk3MDIwMTE5Y2U4YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TZXRQcm90b3R5cGUuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcwpAQCAtMjMsMzgg
KzIzLDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotQGNvbnN0cnVjdG9yCi1AZ2xvYmFsUHJp
dmF0ZQotZnVuY3Rpb24gU2V0SXRlcmF0b3IoaXRlcmF0ZWRPYmplY3QsIGtpbmQpCi17Ci0gICAg
InVzZSBzdHJpY3QiOwotCi0gICAgQGFzc2VydChAaXNTZXQoaXRlcmF0ZWRPYmplY3QpKTsKLSAg
ICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhpcywgIml0ZXJhdGVkT2JqZWN0IiwgaXRlcmF0ZWRP
YmplY3QpOwotICAgIEBwdXRCeUlkRGlyZWN0UHJpdmF0ZSh0aGlzLCAic2V0SXRlcmF0b3JLaW5k
Iiwga2luZCk7Ci0gICAgQHB1dEJ5SWREaXJlY3RQcml2YXRlKHRoaXMsICJzZXRCdWNrZXQiLCBA
c2V0QnVja2V0SGVhZChpdGVyYXRlZE9iamVjdCkpOwotfQotCi1mdW5jdGlvbiB2YWx1ZXMoKQot
ewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlzU2V0KHRoaXMpKQotICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIlNldC5wcm90b3R5cGUudmFsdWVzIHJlcXVpcmVzIHRoYXQgfHRoaXN8
IGJlIFNldCIpOwotCi0gICAgcmV0dXJuIG5ldyBAU2V0SXRlcmF0b3IodGhpcywgQGl0ZXJhdGlv
bktpbmRWYWx1ZSk7Ci19Ci0KLWZ1bmN0aW9uIGVudHJpZXMoKQotewotICAgICJ1c2Ugc3RyaWN0
IjsKLQotICAgIGlmICghQGlzU2V0KHRoaXMpKQotICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlNl
dC5wcm90b3R5cGUuZW50cmllcyByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBTZXQiKTsKLQotICAg
IHJldHVybiBuZXcgQFNldEl0ZXJhdG9yKHRoaXMsIEBpdGVyYXRpb25LaW5kRW50cmllcyk7Ci19
Ci0KIGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiB7CiAgICAgInVz
ZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IDMyYWFmODdmNGM1NmEwNDg2
NjQ0OGU0NzljNTM5YTc2M2ExOWNhMTAuLmFmODNlMzEyZjAxNWM5OGI3YzU4Nzc0Yzc4ZDY0ZTVh
ZWE5NWRmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTM2LDggKzM2LDEwIEBACiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNNb2R1bGVMb2FkZXIuaCIKICNpbmNsdWRlICJKU1Byb21pc2UuaCIKKyNpbmNsdWRlICJK
U1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgogI2luY2x1ZGUg
Ik5vZGVzLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgpAQCAtOTIsNiArOTQsMTAgQEAg
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYg
dm0pCiAgICAgbV9hcnJheUl0ZXJhdG9yRmllbGRJdGVyYXRlZE9iamVjdC5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0
ZWRPYmplY3QpKSk7CiAgICAgbV9hcnJheUl0ZXJhdG9yRmllbGRJbmRleC5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgp
KSk7CiAgICAgbV9hcnJheUl0ZXJhdG9yRmllbGRLaW5kLnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpLaW5kKSkpOworICAgIG1f
bWFwSXRlcmF0b3JGaWVsZE1hcEJ1Y2tldC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNNYXBJdGVyYXRvcjo6RmllbGQ6Ok1hcEJ1Y2tldCkpKTsKKyAgICBtX21hcEl0
ZXJhdG9yRmllbGRLaW5kLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U01hcEl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpKTsKKyAgICBtX3NldEl0ZXJhdG9yRmllbGRTZXRC
dWNrZXQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTU2V0SXRlcmF0
b3I6OkZpZWxkOjpTZXRCdWNrZXQpKSk7CisgICAgbV9zZXRJdGVyYXRvckZpZWxkS2luZC5zZXQo
bV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNTZXRJdGVyYXRvcjo6RmllbGQ6
OktpbmQpKSk7CiAgICAgbV9zdHJpbmdJdGVyYXRvckZpZWxkSW5kZXguc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTU3RyaW5nSXRlcmF0b3I6OkZpZWxkOjpJbmRleCkp
KTsKICAgICBtX3N0cmluZ0l0ZXJhdG9yRmllbGRJdGVyYXRlZFN0cmluZy5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNTdHJpbmdJdGVyYXRvcjo6RmllbGQ6Okl0ZXJh
dGVkU3RyaW5nKSkpOwogICAgIG1fYXN5bmNHZW5lcmF0b3JGaWVsZFN1c3BlbmRSZWFzb24uc2V0
KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0FzeW5jR2VuZXJhdG9yOjpG
aWVsZDo6U3VzcGVuZFJlYXNvbikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCmluZGV4IDliZjJjNDBl
MTdiZDM0NzE1M2I2YjM5NmY2MmVmYjZiZTliNDkwOTEuLjY3MGViOGViN2FlYTJlYTQzN2QxOTBh
YWEyODk2MDc1ZmFmNTI3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaApAQCAtNDcsNiArNDcsOCBA
QCBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90OwogICAgIG1hY3JvKGdldEFz
eW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGdldEFycmF5SXRlcmF0b3JJ
bnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8oZ2V0U3RyaW5nSXRlcmF0b3JJbnRlcm5hbEZpZWxk
KSBcCisgICAgbWFjcm8oZ2V0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBcCisgICAgbWFjcm8o
Z2V0U2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8oaWRXaXRoUHJvZmlsZSkg
XAogICAgIG1hY3JvKGlzT2JqZWN0KSBcCiAgICAgbWFjcm8oaXNKU0FycmF5KSBcCkBAIC02MCw2
ICs2Miw4IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAgICAgbWFj
cm8oaXNTZXQpIFwKICAgICBtYWNybyhpc1N0cmluZ0l0ZXJhdG9yKSBcCiAgICAgbWFjcm8oaXNB
cnJheUl0ZXJhdG9yKSBcCisgICAgbWFjcm8oaXNNYXBJdGVyYXRvcikgXAorICAgIG1hY3JvKGlz
U2V0SXRlcmF0b3IpIFwKICAgICBtYWNybyhpc1VuZGVmaW5lZE9yTnVsbCkgXAogICAgIG1hY3Jv
KHRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cykgXAogICAgIG1hY3JvKHRocm93VHlwZUVycm9yKSBc
CkBAIC03NSw2ICs3OSw4IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7
CiAgICAgbWFjcm8ocHV0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8o
cHV0QXJyYXlJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhwdXRTdHJpbmdJdGVy
YXRvckludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhwdXRNYXBJdGVyYXRvckludGVybmFsRmll
bGQpIFwKKyAgICBtYWNybyhwdXRTZXRJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNy
byh0b051bWJlcikgXAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCiAgICAgbWFjcm8odG9PYmplY3Qp
IFwKQEAgLTEyMyw5ICsxMjksMTIgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50
MzJfdDsKICAgICBtYWNybyhHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCkgXAogICAgIG1hY3JvKEdl
bmVyYXRvclN0YXRlRXhlY3V0aW5nKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvckZpZWxkSW5k
ZXgpIFwKLSAgICBtYWNybyhhcnJheUl0ZXJhdG9yRmllbGRJc0RvbmUpIFwKICAgICBtYWNybyhh
cnJheUl0ZXJhdG9yRmllbGRJdGVyYXRlZE9iamVjdCkgXAogICAgIG1hY3JvKGFycmF5SXRlcmF0
b3JGaWVsZEtpbmQpIFwKKyAgICBtYWNybyhtYXBJdGVyYXRvckZpZWxkTWFwQnVja2V0KSBcCisg
ICAgbWFjcm8obWFwSXRlcmF0b3JGaWVsZEtpbmQpIFwKKyAgICBtYWNybyhzZXRJdGVyYXRvckZp
ZWxkU2V0QnVja2V0KSBcCisgICAgbWFjcm8oc2V0SXRlcmF0b3JGaWVsZEtpbmQpIFwKICAgICBt
YWNybyhzdHJpbmdJdGVyYXRvckZpZWxkSW5kZXgpIFwKICAgICBtYWNybyhzdHJpbmdJdGVyYXRv
ckZpZWxkSXRlcmF0ZWRTdHJpbmcpIFwKICAgICBtYWNybyhhc3luY0dlbmVyYXRvckZpZWxkU3Vz
cGVuZFJlYXNvbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDI5ODkzNzQwYTg1YTU4NDllMzk3Mjg4NTY1
MDMyYWU3NGJhZmY1NWIuLmVjMDNmNjk3MmM3ZWY4MzNlZWY4OWYyNDRkYTcwNzQwMTExMjZlYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKQEAgLTg4OSw2ICs4ODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdElzU2V0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3Jj
KSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIEpTU2V0VHlwZSk7IH0KICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU3RyaW5nSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNT
dHJpbmdJdGVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc0FycmF5SXRl
cmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0Nl
bGxXaXRoVHlwZShkc3QsIHNyYywgSlNBcnJheUl0ZXJhdG9yVHlwZSk7IH0KKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdElzTWFwSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
cmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNNYXBJdGVyYXRvclR5
cGUpOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc1NldEl0ZXJhdG9yKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBz
cmMsIEpTU2V0SXRlcmF0b3JUeXBlKTsgfQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SXNPYmpl
Y3QoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0SXNOdW1iZXIoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0SXNVbmRlZmluZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBzcmMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDY0MGIyNDk3NTVlMTBlY2RkOWE4M2I5ZTE0YjA5N2FiMzlmZDA5
NGYuLmE0N2IxYzNhNzAyZjIwOGE3ZDczOTVlNzcwMDZkNzdlNTZkYWVjZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAg
LTQwLDYgKzQwLDggQEAKICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKKyNpbmNsdWRl
ICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAi
TGV4ZXIuaCIKQEAgLTExNTMsNiArMTE1NSwyOCBAQCBzdGF0aWMgSlNTdHJpbmdJdGVyYXRvcjo6
RmllbGQgc3RyaW5nSXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaQog
ICAgIHJldHVybiBKU1N0cmluZ0l0ZXJhdG9yOjpGaWVsZDo6SW5kZXg7CiB9CiAKK3N0YXRpYyBK
U01hcEl0ZXJhdG9yOjpGaWVsZCBtYXBJdGVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29k
ZUludHJpbnNpY05vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgp
ID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOworICAgIGlmIChu
b2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2lu
dHJpbnNpY19tYXBJdGVyYXRvckZpZWxkTWFwQnVja2V0KQorICAgICAgICByZXR1cm4gSlNNYXBJ
dGVyYXRvcjo6RmllbGQ6Ok1hcEJ1Y2tldDsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVy
KCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfbWFwSXRlcmF0b3JG
aWVsZEtpbmQpCisgICAgICAgIHJldHVybiBKU01hcEl0ZXJhdG9yOjpGaWVsZDo6S2luZDsKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBKU01hcEl0ZXJhdG9y
OjpGaWVsZDo6TWFwQnVja2V0OworfQorCitzdGF0aWMgSlNTZXRJdGVyYXRvcjo6RmllbGQgc2V0
SXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBub2RlKQor
eworICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9kZS0+ZW50cnkoKS5lbWl0dGVyKCkg
PT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfc2V0SXRlcmF0b3JGaWVs
ZFNldEJ1Y2tldCkKKyAgICAgICAgcmV0dXJuIEpTU2V0SXRlcmF0b3I6OkZpZWxkOjpTZXRCdWNr
ZXQ7CisgICAgaWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX3NldEl0ZXJhdG9yRmllbGRLaW5kKQorICAgICAgICByZXR1
cm4gSlNTZXRJdGVyYXRvcjo6RmllbGQ6OktpbmQ7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gSlNTZXRJdGVyYXRvcjo6RmllbGQ6OlNldEJ1Y2tldDsKK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRQ
cm9taXNlSW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0
Tm9kZTsKQEAgLTEyMTgsNiArMTI0MiwzMiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dldFN0cmluZ0l0ZXJhdG9ySW50ZXJuYWxGaWVsZAogICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOwogfQogCitSZWdpc3RlcklEKiBCeXRl
Y29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldE1hcEl0ZXJhdG9ySW50ZXJuYWxG
aWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7Cisg
ICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2Rl
ID0gbm9kZS0+bV9uZXh0OworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNCeXRl
Y29kZUludHJpbnNpY05vZGUoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpT
TWFwSXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIEFTU0VSVCghbm9kZS0+
bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOworfQorCitS
ZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldFNldEl0
ZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0
Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShu
b2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUt
Pm1fZXhwci0+aXNCeXRlY29kZUludHJpbnNpY05vZGUoKSk7CisgICAgdW5zaWduZWQgaW5kZXgg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3Rh
dGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFT
U0VSVChpbmRleCA8IEpTU2V0SXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAg
IEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldElu
dGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwg
aW5kZXgpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2FyZ3VtZW50KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKIHsKICAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OwpAQCAtMTM2Nyw2ICsxNDE3LDM4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9k
ZTo6ZW1pdF9pbnRyaW5zaWNfcHV0U3RyaW5nSXRlcmF0b3JJbnRlcm5hbEZpZWxkCiAgICAgcmV0
dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJh
c2UuZ2V0KCksIGluZGV4LCB2YWx1ZS5nZXQoKSkpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3B1dE1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVs
ZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAg
QXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0g
bm9kZS0+bV9uZXh0OworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNCeXRlY29k
ZUludHJpbnNpY05vZGUoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpTTWFw
SXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIG5vZGUgPSBub2RlLT5tX25l
eHQ7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5v
ZGUpOworCisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRv
ci5tb3ZlKGRzdCwgZ2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGlu
ZGV4LCB2YWx1ZS5nZXQoKSkpOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX3B1dFNldEl0ZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0
Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0
OworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNCeXRlY29kZUludHJpbnNpY05v
ZGUoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2V0SXRl
cmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
Kj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEpTU2V0SXRlcmF0b3I6Om51
bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworCisgICAg
QVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwg
Z2VuZXJhdG9yLmVtaXRQdXRJbnRlcm5hbEZpZWxkKGJhc2UuZ2V0KCksIGluZGV4LCB2YWx1ZS5n
ZXQoKSkpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX3RhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cyhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1f
YXJncy0+bV9saXN0Tm9kZTsKQEAgLTE1MTYsNiArMTU5OCw4IEBAIENSRUFURV9JTlRSSU5TSUNf
Rk9SX0JSQU5EX0NIRUNLKGlzTWFwLCBJc01hcCkKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5E
X0NIRUNLKGlzU2V0LCBJc1NldCkKIENSRUFURV9JTlRSSU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlz
U3RyaW5nSXRlcmF0b3IsIElzU3RyaW5nSXRlcmF0b3IpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9C
UkFORF9DSEVDSyhpc0FycmF5SXRlcmF0b3IsIElzQXJyYXlJdGVyYXRvcikKK0NSRUFURV9JTlRS
SU5TSUNfRk9SX0JSQU5EX0NIRUNLKGlzTWFwSXRlcmF0b3IsIElzTWFwSXRlcmF0b3IpCitDUkVB
VEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhpc1NldEl0ZXJhdG9yLCBJc1NldEl0ZXJhdG9y
KQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNVbmRlZmluZWRPck51bGwsIElz
VW5kZWZpbmVkT3JOdWxsKQogCiAjdW5kZWYgQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hF
Q0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAppbmRleCA5NTNmYmFlZjQ4ZjNhNTU0ZDQ1OWJkOWEyYjNkNmU2
M2RhYTdjYWM3Li41ZTk5ZTY4NGNiZDlkZTkzOWEyZTQ5OGRlNTczMmM0MjRiZDViN2VjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCkBAIC0yODYxLDcgKzI4NjEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVy
TGltaQogICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICBjYXNlIE5ld0dlbmVyYXRvcjoKICAgICBj
YXNlIE5ld0FzeW5jR2VuZXJhdG9yOiAgICAKLSAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6Cisg
ICAgY2FzZSBOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAg
IGNhc2UgTWF0ZXJpYWxpemVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgICAgICBBU1NFUlQo
ISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkBAIC0yOTQ1LDcgKzI5NDUsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNp
Z25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKICAgICBjYXNlIFBoYW50
b21OZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlCdWZmZXI6Ci0g
ICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdJbnRl
cm5hbEZpZWxkT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAgICBjYXNlIEJv
dHRvbVZhbHVlOiB7CiAgICAgICAgIGNsZWFyRm9yTm9kZShub2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggOTk2MWQ5MDMyZDY4
MGQ4NTM0NjU5OGRlNmEyYjhmYWNkNzM0MjdiZC4uMTIxNzQ1ODAyNzRkOTczYmIyZmJjNzljMjIz
Y2Q3Y2NkOGViOGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTU5LDkgKzU5LDExIEBACiAjaW5jbHVkZSAiSlNJbW11dGFibGVC
dXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpT
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTnVtYmVyQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk9wY29kZUlubGluZXMuaCIK
QEAgLTI0MTIsNyArMjQxNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNp
Y0NhbGwoTm9kZSogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmVzdWx0LCBJCiAgICAgICAgICAg
ICBOb2RlKiBvYmplY3QgPSBhZGRUb0dyYXBoKFRvT2JqZWN0LCBPcEluZm8oZXJyb3JTdHJpbmdJ
bmRleCksIE9wSW5mbyhTcGVjTm9uZSksIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudElu
Y2x1ZGluZ1RoaXMoMCwgcmVnaXN0ZXJPZmZzZXQpKSk7CiAKICAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjdXJyZW50Tm9k
ZU9yaWdpbigpLnNlbWFudGljKTsKLSAgICAgICAgICAgIE5vZGUqIGl0ZXJhdG9yID0gYWRkVG9H
cmFwaChOZXdBcnJheUl0ZXJhdG9yLCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShn
bG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgICAgIE5v
ZGUqIGl0ZXJhdG9yID0gYWRkVG9HcmFwaChOZXdJbnRlcm5hbEZpZWxkT2JqZWN0LCBPcEluZm8o
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1
Y3R1cmUoKSkpKTsKIAogICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRJbnRlcm5hbEZpZWxkLCBP
cEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6Okl0ZXJh
dGVkT2JqZWN0KSksIGl0ZXJhdG9yLCBvYmplY3QpOwogICAgICAgICAgICAgYWRkVG9HcmFwaChQ
dXRJbnRlcm5hbEZpZWxkLCBPcEluZm8oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEpTQXJyYXlJdGVy
YXRvcjo6RmllbGQ6OktpbmQpKSwgaXRlcmF0b3IsIGtpbmROb2RlKTsKQEAgLTMxNzcsNiArMzE3
OSw2OSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNh
bGxlZSwgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdCwgSQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEpTTWFwRW50cmllc0ludHJpbnNpYzoKKyAgICAg
ICAgY2FzZSBKU01hcEtleXNJbnRyaW5zaWM6CisgICAgICAgIGNhc2UgSlNNYXBWYWx1ZXNJbnRy
aW5zaWM6CisgICAgICAgIGNhc2UgSlNTZXRFbnRyaWVzSW50cmluc2ljOgorICAgICAgICBjYXNl
IEpTU2V0VmFsdWVzSW50cmluc2ljOiB7CisgICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKKwor
ICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kID0gSXRl
cmF0aW9uS2luZDo6VmFsdWVzOworICAgICAgICAgICAgVXNlS2luZCB1c2VLaW5kID0gTWFwT2Jq
ZWN0VXNlOworICAgICAgICAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICAgICAgICAgIGNh
c2UgSlNNYXBWYWx1ZXNJbnRyaW5zaWM6CisgICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlv
bktpbmQ6OlZhbHVlczsKKyAgICAgICAgICAgICAgICB1c2VLaW5kID0gTWFwT2JqZWN0VXNlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBKU01hcEtleXNJbnRyaW5z
aWM6CisgICAgICAgICAgICAgICAga2luZCA9IEl0ZXJhdGlvbktpbmQ6OktleXM7CisgICAgICAg
ICAgICAgICAgdXNlS2luZCA9IE1hcE9iamVjdFVzZTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgSlNNYXBFbnRyaWVzSW50cmluc2ljOgorICAgICAgICAgICAgICAg
IGtpbmQgPSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOworICAgICAgICAgICAgICAgIHVzZUtpbmQg
PSBNYXBPYmplY3RVc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEpTU2V0VmFsdWVzSW50cmluc2ljOgorICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25L
aW5kOjpWYWx1ZXM7CisgICAgICAgICAgICAgICAgdXNlS2luZCA9IFNldE9iamVjdFVzZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSlNTZXRFbnRyaWVzSW50cmlu
c2ljOgorICAgICAgICAgICAgICAgIGtpbmQgPSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOworICAg
ICAgICAgICAgICAgIHVzZUtpbmQgPSBTZXRPYmplY3RVc2U7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJ
bmNsdWRpbmdUaGlzKDAsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICBhZGRUb0dyYXBo
KENoZWNrLCBFZGdlKGJhc2UsIHVzZUtpbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGJ1Y2tldCA9
IGFkZFRvR3JhcGgoR2V0TWFwQnVja2V0SGVhZCwgRWRnZShiYXNlLCB1c2VLaW5kKSk7CisKKyAg
ICAgICAgICAgIC8vIEFkZCB0aGUgY29uc3RhbnQgYmVmb3JlIGV4aXQgYmVjb21lcyBpbnZhbGlk
IGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8gaW5zZXJ0IChyZWR1bmRhbnQpIGNoZWNrcyBvbiBpdCBp
biBGaXh1cC4KKyAgICAgICAgICAgIE5vZGUqIGtpbmROb2RlID0ganNDb25zdGFudChqc051bWJl
cihzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2luZCkpKTsKKworICAgICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGN1cnJlbnROb2Rl
T3JpZ2luKCkuc2VtYW50aWMpOworICAgICAgICAgICAgTm9kZSogaXRlcmF0b3IgPSBudWxscHRy
OworICAgICAgICAgICAgaWYgKHVzZUtpbmQgPT0gTWFwT2JqZWN0VXNlKSB7CisgICAgICAgICAg
ICAgICAgaXRlcmF0b3IgPSBhZGRUb0dyYXBoKE5ld0ludGVybmFsRmllbGRPYmplY3QsIE9wSW5m
byhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+bWFwSXRlcmF0b3JTdHJ1
Y3R1cmUoKSkpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQs
IE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNNYXBJdGVyYXRvcjo6RmllbGQ6Ok1hcEJ1
Y2tldCkpLCBpdGVyYXRvciwgYnVja2V0KTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1
dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNNYXBJdGVyYXRv
cjo6RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KSksIGl0ZXJhdG9yLCBiYXNlKTsKKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50
MzJfdD4oSlNNYXBJdGVyYXRvcjo6RmllbGQ6OktpbmQpKSwgaXRlcmF0b3IsIGtpbmROb2RlKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBhZGRUb0dy
YXBoKE5ld0ludGVybmFsRmllbGRPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50
MzJfdD4oSlNTZXRJdGVyYXRvcjo6RmllbGQ6OlNldEJ1Y2tldCkpLCBpdGVyYXRvciwgYnVja2V0
KTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVybmFsRmllbGQsIE9wSW5mbyhz
dGF0aWNfY2FzdDx1aW50MzJfdD4oSlNTZXRJdGVyYXRvcjo6RmllbGQ6Okl0ZXJhdGVkT2JqZWN0
KSksIGl0ZXJhdG9yLCBiYXNlKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEludGVy
bmFsRmllbGQsIE9wSW5mbyhzdGF0aWNfY2FzdDx1aW50MzJfdD4oSlNTZXRJdGVyYXRvcjo6Rmll
bGQ6OktpbmQpKSwgaXRlcmF0b3IsIGtpbmROb2RlKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgc2V0UmVzdWx0KGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisKICAgICAgICAgY2FzZSBKU1NldEJ1Y2tldEhlYWRJbnRyaW5zaWM6CiAgICAgICAg
IGNhc2UgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljOiB7CiAgICAgICAgICAgICBBU1NFUlQoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPT0gMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCmluZGV4IGQxOTUyMmZlZDVlOGU1ZmFmYzVkOTUzZWM4MzIwZWU3ZDY3
ZjUyM2MuLjIwNjA4MDIxYWM1MTdmZGNiMTFmNTdkODQwMzQ0YTM0Y2Y2M2I2OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNTkzLDcgKzE1OTMsNyBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgTmV3UHJvbWlzZToKICAgICBjYXNl
IE5ld0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9yOgotICAgIGNhc2UgTmV3
QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIE5ld0ludGVybmFsRmllbGRPYmplY3Q6CiAgICAgY2Fz
ZSBOZXdSZWdleHA6CiAgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmpl
Y3Q6CkBAIC0xNjAzLDcgKzE2MDMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNh
c2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5j
RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKLSAg
ICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld0ludGVy
bmFsRmllbGRPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld0ludGVybmFsRmllbGRPYmpl
Y3Q6CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIE1hdGVyaWFs
aXplQ3JlYXRlQWN0aXZhdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXggZWU5OGZhYzIzMDUzNDk5MzA1OTQ4YTdjNDAy
ZGYzOGQyYmYwNmRlYi4uZjA1Y2FjOGU5YjljNDFkMmMxMzhlOWNmMzIxNDY1NzU5MmE1ZTliZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0
ZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdQcm9taXNlOgogICAgIGNhc2UgTmV3R2VuZXJh
dG9yOgogICAgIGNhc2UgTmV3QXN5bmNHZW5lcmF0b3I6Ci0gICAgY2FzZSBOZXdBcnJheUl0ZXJh
dG9yOgorICAgIGNhc2UgTmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKICAgICBjYXNlIE5ld1JlZ2V4
cDoKICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKQEAgLTcw
LDcgKzcwLDcgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFu
dG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1
bmN0aW9uOgotICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBQaGFu
dG9tTmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3SW50ZXJu
YWxGaWVsZE9iamVjdDoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNh
c2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCA2NTA1M2NlYjVl
MDg3YTBjZDRhMzE0ODBhZmRlOGQ2NTE4MWVkMTQzLi4xZjI1NGFlZDI4NGQ1ZjQwOTUzN2ExNmRk
ODJkODIxMmY2MjI2MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtMTEwMCw3ICsxMTAwLDcgQEAgY2xhc3Mg
Q29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2FzZSBQ
aGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdB
c3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNG
dW5jdGlvbjoKLSAgICAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAg
ICAgICAgICBjYXNlIFBoYW50b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgICAgICAgICAg
Y2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbURp
cmVjdEFyZ3VtZW50czoKICAgICAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA1NWQzYzhmZDVkY2Y4
ZmEyZWZiYTM3Zjk2ZGM5MDk5ZDQ5NzI1MTgxLi5jM2UzNzIxMDM0NWUyMWMzNGM1ZTBhYmI3NzVm
MWRkMzU5NDczMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBA
IC0yMTAsNyArMjEwLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5l
d0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlv
bjoKLSAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5l
d0ludGVybmFsRmllbGRPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRl
UmVzdDoKQEAgLTM1Niw3ICszNTYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvcjoKICAgICBjYXNlIE5ld0FycmF5Ogog
ICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOgotICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoK
KyAgICBjYXNlIE5ld0ludGVybmFsRmllbGRPYmplY3Q6CiAgICAgY2FzZSBTcHJlYWQ6CiAgICAg
Y2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA3OWE5YzRmYWI1MGU2
YzY2NTVhNDZkNGM5YTFmOThiZWYzYzc4ZjM3Li4yMzhkYjUwMWJlMjliMWEwZThmNDJhZDA4YjQ0
MGQ4ZGFlZTJiZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKQEAgLTE5MzksNyArMTkzOSw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAg
Y2FzZSBQaGFudG9tTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQaGFu
dG9tTmV3QXN5bmNGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRv
cjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKICAgICAgICAg
Y2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tRGlyZWN0
QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgpAQCAtMjUzMSw3ICsy
NTMxLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2Ug
TmV3UHJvbWlzZToKICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3I6CiAgICAgICAgIGNhc2UgTmV3
QXN5bmNHZW5lcmF0b3I6Ci0gICAgICAgIGNhc2UgTmV3QXJyYXlJdGVyYXRvcjoKKyAgICAgICAg
Y2FzZSBOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKICAg
ICAgICAgY2FzZSBJc1R5cGVkQXJyYXlWaWV3OgogICAgICAgICBjYXNlIElzRW1wdHk6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBiOTI4ODEwZTEwMTU1M2Ix
OWFmNTEzNDQyYzAzZWJlZWMwNDgwZjJiLi45NTEyYTcwNjBjOGNlZDQ3NzRlZTU4NTNiMWVmMjA5
ZDk5ZjAyOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4
aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAg
LTcxLDcgKzcxLDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBTdGF0ZVR5cGUmIHN0YXRlKQogICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgY2FzZSBQ
dXRIaW50OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKLSAgICBjYXNlIFBoYW50b21OZXdB
cnJheUl0ZXJhdG9yOgorICAgIGNhc2UgUGhhbnRvbU5ld0ludGVybmFsRmllbGRPYmplY3Q6CiAg
ICAgY2FzZSBQdXRTdGFjazoKICAgICBjYXNlIEtpbGxTdGFjazoKICAgICBjYXNlIEdldFN0YWNr
OgpAQCAtMTI5LDcgKzEyOSw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBjYXNlIE5ld0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb246CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBOZXdTeW1ib2w6
Ci0gICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgTmV3SW50ZXJuYWxGaWVsZE9i
amVjdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2Ug
VG9OdW1lcmljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCBiYzdjZmIxMmQw
YThlMmQzMmUyNzI5N2Y3NDhhNjU1ZTM1MTcyNjc2Li5hNTBmNmFhNDE0OGIzZDk4ZDA0Y2Y1MWMx
Yjg1YzMyYmZkN2RhNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtNjQ5
LDEwICs2NDksMTAgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjaGlsZHJlbiA9IEFkamFjZW5j
eUxpc3QoKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbnZlcnRUb1BoYW50b21OZXdBcnJheUl0ZXJh
dG9yKCkKKyAgICB2b2lkIGNvbnZlcnRUb1BoYW50b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0KCkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IE5ld0FycmF5SXRlcmF0b3IpOwotICAgICAg
ICBtX29wID0gUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I7CisgICAgICAgIEFTU0VSVChtX29wID09
IE5ld0ludGVybmFsRmllbGRPYmplY3QpOworICAgICAgICBtX29wID0gUGhhbnRvbU5ld0ludGVy
bmFsRmllbGRPYmplY3Q7CiAgICAgICAgIG1fZmxhZ3MgJj0gfk5vZGVIYXNWYXJBcmdzOwogICAg
ICAgICBtX2ZsYWdzIHw9IE5vZGVNdXN0R2VuZXJhdGU7CiAgICAgICAgIG1fb3BJbmZvID0gT3BJ
bmZvV3JhcHBlcigpOwpAQCAtMTk3Niw3ICsxOTc2LDcgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICBjYXNlIE5ld1Byb21pc2U6CiAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yOgogICAgICAgICBj
YXNlIE5ld0FzeW5jR2VuZXJhdG9yOgotICAgICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6Cisg
ICAgICAgIGNhc2UgTmV3SW50ZXJuYWxGaWVsZE9iamVjdDoKICAgICAgICAgY2FzZSBOZXdTdHJp
bmdPYmplY3Q6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKQEAg
LTIxNDIsNyArMjE0Miw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBQaGFudG9tTmV3
R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246
CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246Ci0gICAgICAg
IGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld0lu
dGVybmFsRmllbGRPYmplY3Q6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246
CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDNmZWY2YjM4MTg1
M2RkNWU3MmM5OGE0ZjI4YjkwYmFmZjZjNmJlNGEuLjg3NmRmOWNkYTNkMzEwN2NhNDJjZmExZDM5
YjhmMGFlYWEwMGNlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
QEAgLTM1OCw3ICszNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oTmV3QXJyYXlXaXRoU3ByZWFkLCBOb2RlUmVzdWx0SlMgfCBOb2RlSGFzVmFyQXJncykg
XAogICAgIG1hY3JvKE5ld0FycmF5V2l0aFNpemUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhOZXdBcnJheUJ1ZmZlciwgTm9kZVJlc3VsdEpTKSBcCi0gICAg
bWFjcm8oTmV3QXJyYXlJdGVyYXRvciwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3SW50
ZXJuYWxGaWVsZE9iamVjdCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRBcnJh
eSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1JlZ2V4
cCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3U3ltYm9sLCBOb2RlUmVzdWx0SlMpIFwK
QEAgLTM3Nyw3ICszNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb24sIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTmV3QXN5bmNHZW5l
cmF0b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAotICAgIG1h
Y3JvKFBoYW50b21OZXdBcnJheUl0ZXJhdG9yLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlKSBcCisgICAgbWFjcm8oUGhhbnRvbU5ld0ludGVybmFsRmllbGRPYmplY3QsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNYXRlcmlhbGl6ZU5ld0ludGVy
bmFsRmllbGRPYmplY3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFj
cm8oUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb24sIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb24sIE5vZGVSZXN1bHRK
UyB8IE5vZGVIYXNWYXJBcmdzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCAwNWFj
ZGYyMzg3Njk3M2Y4OGU4MmI5YTczYjM0OWVlNzc5YjViOTg0Li4yYjdjYzJmZWNiOWMwYTdlMjFl
NDRhMWY3ZDdiZTBhNTljMTUxNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTQy
LDYgKzQyLDggQEAKICNpbmNsdWRlICJERkdWYWxpZGF0ZS5oIgogI2luY2x1ZGUgIkpTQXJyYXlJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaXN0
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTk2MSw4ICs5NjMsMjAg
QEAgY2xhc3MgT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgTmV3QXJyYXlJdGVy
YXRvcjogewotICAgICAgICAgICAgdGFyZ2V0ID0gaGFuZGxlSW50ZXJuYWxGaWVsZENsYXNzPEpT
QXJyYXlJdGVyYXRvcj4obm9kZSwgd3JpdGVzKTsKKyAgICAgICAgY2FzZSBOZXdJbnRlcm5hbEZp
ZWxkT2JqZWN0OiB7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBKU0FycmF5SXRlcmF0b3JUeXBlOgor
ICAgICAgICAgICAgICAgIHRhcmdldCA9IGhhbmRsZUludGVybmFsRmllbGRDbGFzczxKU0FycmF5
SXRlcmF0b3I+KG5vZGUsIHdyaXRlcyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEpTTWFwSXRlcmF0b3JUeXBlOgorICAgICAgICAgICAgICAgIHRhcmdldCA9IGhh
bmRsZUludGVybmFsRmllbGRDbGFzczxKU01hcEl0ZXJhdG9yPihub2RlLCB3cml0ZXMpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBKU1NldEl0ZXJhdG9yVHlwZToK
KyAgICAgICAgICAgICAgICB0YXJnZXQgPSBoYW5kbGVJbnRlcm5hbEZpZWxkQ2xhc3M8SlNTZXRJ
dGVyYXRvcj4obm9kZSwgd3JpdGVzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJC
YWQgc3RydWN0dXJlIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCkBAIC0yMDg0LDggKzIwOTgsOCBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb1BoYW50b21OZXdBc3luY0Z1bmN0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tTmV3QXJyYXlJdGVy
YXRvcigpOworICAgICAgICAgICAgICAgICAgICBjYXNlIE5ld0ludGVybmFsRmllbGRPYmplY3Q6
CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tTmV3SW50ZXJu
YWxGaWVsZE9iamVjdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMDhjZTU0MzVkM2Y3MTkwNjNjZmMwOWZm
YTc3ZGNmNjExZmY4Zjk5OC4uOGMwYWU5NTRiZGMyMmNlYjhjYzI1YjcwY2JmMTVhOGJjOGI2ZDU2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0y
MTEzLDYgKzIxMTMsMjQgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5
SXRlcmF0b3IoVk0qIHZtUG9pbnRlciwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICByZXR1cm4gSlNB
cnJheUl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyh2bSwgc3RydWN0dXJlKTsKIH0K
IAorSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld01hcEl0ZXJhdG9yKFZNKiB2bVBv
aW50ZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7
CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKworICAgIHJldHVybiBKU01hcEl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyh2
bSwgc3RydWN0dXJlKTsKK30KKworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1Nl
dEl0ZXJhdG9yKFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIFZN
JiB2bSA9ICp2bVBvaW50ZXI7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIHJldHVybiBKU1NldEl0ZXJhdG9yOjpjcmVhdGVX
aXRoSW5pdGlhbFZhbHVlcyh2bSwgc3RydWN0dXJlKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoVk0qIHZtUG9pbnRlciwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIEVuY29k
ZWRKU1ZhbHVlIGluaXRpYWxWYWx1ZUVuY29kZWQpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggMGM4NzNk
YmU1ZmVlYjhlYmRkMDIzNjljMTlmMTQ3M2UyNTY2NTE3Mi4uYThhNGNiZDIwZTY3ZGZmNjQwNmNl
ZGVhMWYxZTRhMDdlNzdjZDljNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKQEAgLTEyNiw2ICsxMjYsOCBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudChKU0dsb2JhbE9iamVjdCosIFN0cgogY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIGludDMyX3QsIGNoYXIqKSBXVEZfSU5URVJOQUw7CiBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvcihWTSosIFN0
cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdNYXBJdGVyYXRvcihWTSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKK0pTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdTZXRJdGVyYXRvcihWTSosIFN0cnVjdHVyZSopIFdURl9J
TlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggMjg4ODU4YjM4YzE2YTY1YThjOGViZGI5ZDQzNzAx
MjgzNDcyYTUwYS4uNmYzYTcxYTViMmVkMWMyZWVlMTIyN2JmNDI4ZjY4ZDkxNzdlNmE5NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTEwNjAsOSArMTA2MCwxMiBAQCBjbGFzcyBQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yOgogICAgICAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgogICAgICAgICBjYXNl
IE5ld0FzeW5jR2VuZXJhdG9yOgotICAgICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CiAgICAg
ICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIE5ld0ludGVybmFsRmllbGRPYmplY3Q6CisgICAgICAgICAgICBz
ZXRQcmVkaWN0aW9uKHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShtX2N1cnJlbnROb2RlLT5zdHJ1
Y3R1cmUoKS5nZXQoKSkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBBcnJheVNsaWNlOgogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKQEAg
LTEyODQsNyArMTI4Nyw3IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBQaGFudG9tU3ByZWFkOgogICAgICAgICBjYXNlIFBo
YW50b21OZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5QnVm
ZmVyOgotICAgICAgICBjYXNlIFBoYW50b21OZXdBcnJheUl0ZXJhdG9yOgorICAgICAgICBjYXNl
IFBoYW50b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgICAgICBjYXNlIFBoYW50b21DbG9u
ZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAgICAgICAgY2Fz
ZSBHZXRNeUFyZ3VtZW50QnlWYWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCmluZGV4IGJhZGZlMWIyZDE0MjliMmUwNTY0ZTYwMWEwYzdmYzk2NjRiNTVl
YWMuLmU2NTJkMzUyNjZiODY3N2E5MDIxOWY0OWFiMTYwNTVjOTgyMjFiNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC01NDgsNyArNTQ4LDcg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAg
ICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKLSAg
ICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBOZXdJbnRlcm5hbEZpZWxkT2JqZWN0
OgogICAgIGNhc2UgU3ByZWFkOgogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgIGNhc2UgTmV3U3lt
Ym9sOgpAQCAtNjE4LDcgKzYxOCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2Fz
ZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgotICAg
IGNhc2UgUGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgY2FzZSBQaGFudG9tTmV3SW50ZXJu
YWxGaWVsZE9iamVjdDoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNh
c2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAgICBjYXNlIFB1dEhpbnQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGNhYTRiYWI0MTBlNmQ1
MzRlMDZhNTk1NzYxOWQzOWM5Yzg3ZWMwOWQuLjUxYzhkYTcyMTg3MTEwN2RhYzJiYzM1YjhlMzQ5
MjdhOThlY2RlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC01OCw3ICs1OCw5IEBACiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIKICNp
bmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKQEAgLTEyOTczLDcgKzEyOTc1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1Byb21pc2UoTm9kZSogbm9kZSkKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgT3BlcmF0aW9uPgotdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3QoTm9kZSogbm9kZSwgT3BlcmF0aW9u
IG9wZXJhdGlvbikKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdJbnRlcm5hbEZpZWxk
T2JqZWN0SW1wbChOb2RlKiBub2RlLCBPcGVyYXRpb24gb3BlcmF0aW9uKQogewogICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpA
QCAtMTMwMDEsMTcgKzEzMDAzLDI5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdJ
bnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyYXRpCiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3IoTm9kZSogbm9kZSkKIHsKLSAgICBj
b21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxKU0dlbmVyYXRvcj4obm9kZSwgb3BlcmF0aW9u
TmV3R2VuZXJhdG9yKTsKKyAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8SlNH
ZW5lcmF0b3I+KG5vZGUsIG9wZXJhdGlvbk5ld0dlbmVyYXRvcik7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdBc3luY0dlbmVyYXRvcihOb2RlKiBub2RlKQogewotICAgIGNv
bXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0PEpTQXN5bmNHZW5lcmF0b3I+KG5vZGUsIG9wZXJh
dGlvbk5ld0FzeW5jR2VuZXJhdG9yKTsKKyAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVj
dEltcGw8SlNBc3luY0dlbmVyYXRvcj4obm9kZSwgb3BlcmF0aW9uTmV3QXN5bmNHZW5lcmF0b3Ip
OwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXJyYXlJdGVyYXRvcihOb2Rl
KiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0ludGVybmFsRmllbGRPYmpl
Y3QoTm9kZSogbm9kZSkKIHsKLSAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdDxKU0Fy
cmF5SXRlcmF0b3I+KG5vZGUsIG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IpOworICAgIHN3aXRj
aCAobm9kZS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKSB7CisgICAgY2FzZSBKU0Fy
cmF5SXRlcmF0b3JUeXBlOgorICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdElt
cGw8SlNBcnJheUl0ZXJhdG9yPihub2RlLCBvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBKU01hcEl0ZXJhdG9yVHlwZToKKyAgICAgICAgY29tcGls
ZU5ld0ludGVybmFsRmllbGRPYmplY3RJbXBsPEpTTWFwSXRlcmF0b3I+KG5vZGUsIG9wZXJhdGlv
bk5ld01hcEl0ZXJhdG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKU1NldEl0ZXJhdG9y
VHlwZToKKyAgICAgICAgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3RJbXBsPEpTU2V0SXRl
cmF0b3I+KG5vZGUsIG9wZXJhdGlvbk5ld1NldEl0ZXJhdG9yKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJCYWQgc3RydWN0
dXJlIik7CisgICAgfQogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9QcmltaXRp
dmUoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAppbmRleCBlM2Y2N2UxNTkyYzhlZjljNzBiYmQwNjI3MmVkMzc2YTNiOWNkMzJhLi40
NDQ1YzUxY2E2ODI2YjM2Y2JhMWM1ZTQ1YWZlMmRhMjlhNDM3YTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNDYyLDcgKzE0NjIsNyBA
QCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlTmV3UHJvbWlzZShOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVOZXdBc3luY0dlbmVyYXRvcihOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlTmV3QXJyYXlJdGVy
YXRvcihOb2RlKik7CisgICAgdm9pZCBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdChOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlVG9QcmltaXRpdmUoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZVRvUHJvcGVydHlLZXkoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVRvTnVtZXJpYyhOb2RlKik7
CkBAIC0xNDc4LDcgKzE0NzgsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgT3BlcmF0aW9uPgogICAgIHZvaWQgY29tcGls
ZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3QoTm9kZSosIE9wZXJhdGlvbik7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgT3BlcmF0aW9uPgotICAgIHZvaWQgY29tcGls
ZU5ld0ludGVybmFsRmllbGRPYmplY3QoTm9kZSosIE9wZXJhdGlvbik7CisgICAgdm9pZCBjb21w
aWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdEltcGwoTm9kZSosIE9wZXJhdGlvbik7CiAKICAgICB2
b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJlZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAppbmRleCAxMjkwZDE3OTcwM2U4NjcwMjZmMzAyYmM4MGU3MmEwMjVmNjhiZDI0Li4xZjhh
Y2ViMzkwMGQwMThiZTVlMzI2OTI1NTQ2YzM2NTU5YTkyZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMyNjAs
OCArMzI2MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOiB7Ci0gICAg
ICAgIGNvbXBpbGVOZXdBcnJheUl0ZXJhdG9yKG5vZGUpOworICAgIGNhc2UgTmV3SW50ZXJuYWxG
aWVsZE9iamVjdDogeworICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdChub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC00MjE2LDcgKzQyMTYsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3QXN5
bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgog
ICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246Ci0gICAgY2FzZSBQaGFudG9tTmV3QXJy
YXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAg
IGNhc2UgUGhhbnRvbU5ld1JlZ2V4cDoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVj
a1N0cnVjdHVyZUltbWVkaWF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGM1N2E1NGY1YWRkZDQ1NGJjNDQ2OTJlNWI0ZTU4
N2JmMDRhOWYxZDkuLmVjMGE0MDllM2ZjM2FmNzA3NzE5YTIzZDVlNzI2NjQ0MWM1YmMyM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cApAQCAtMzU4OSw4ICszNTg5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIE5ld0FycmF5SXRlcmF0
b3I6IHsKLSAgICAgICAgY29tcGlsZU5ld0FycmF5SXRlcmF0b3Iobm9kZSk7CisgICAgY2FzZSBO
ZXdJbnRlcm5hbEZpZWxkT2JqZWN0OiB7CisgICAgICAgIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxk
T2JqZWN0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTUyNzcsNyArNTI3Nyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBo
YW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0
aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb246Ci0gICAgY2Fz
ZSBQaGFudG9tTmV3QXJyYXlJdGVyYXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdJbnRlcm5hbEZp
ZWxkT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQ
aGFudG9tTmV3UmVnZXhwOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcAppbmRleCA5MzNkM2E0ZDZhYTk3NGUwYjkyMGU1NzliMDYxYTcwMjE2ZjkzZTc1
Li5mNDhlMWZjYWMwYWI0YTcyMTY0NzQzZWY5MWJmNzIyMmRjNDQ0NmI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcApAQCAtMzM3LDcgKzMzNyw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXk6CiAgICAg
ICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5
QnVmZmVyOgotICAgICAgICAgICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgICAgICAgICAg
Y2FzZSBOZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgICAgICAgICAgY2FzZSBOZXdUeXBlZEFy
cmF5OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgICAgICBjYXNlIE5ld1N0
cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAppbmRleCA1YzY5ZDFkMzhjMWM2MTA1OTlmZDMwMjk5NzM0MzYwY2IyMjdhY2IyLi4yMDFj
N2FkZTg2YmFiMTk2NDlhY2E3MjkzM2FjMGEwMGYxMTI4OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3U3lt
Ym9sOgogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6Ci0g
ICAgY2FzZSBOZXdBcnJheUl0ZXJhdG9yOgorICAgIGNhc2UgTmV3SW50ZXJuYWxGaWVsZE9iamVj
dDoKICAgICBjYXNlIFNwcmVhZDoKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2Ug
TmV3VHlwZWRBcnJheToKQEAgLTI5MSw3ICsyOTEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVs
IGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5j
dGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9uOgogICAgIGNh
c2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246Ci0gICAgY2FzZSBQaGFudG9tTmV3QXJyYXlJdGVy
YXRvcjoKKyAgICBjYXNlIFBoYW50b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0OgogICAgIGNhc2Ug
UGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBQaGFudG9tTmV3UmVnZXhwOgogICAg
IGNhc2UgUHV0SGludDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAppbmRleCA3NzNhMDA2ZTA4NzQwOTc0ZjAzM2U2YzJkODJkZWFjOGIyZmRjNTQ3Li41
MDQxYzU5MDBhMzU3ODBkZjI4ZjBjM2FiNmIzOGZhZWM0Zjg4NjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC04Niw2ICs4Niw4IEBACiAj
aW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZp
cm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5o
IgorI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMu
aCIKICNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIK
QEAgLTEwNzIsOCArMTA3NCw4IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNhc2Ug
TmV3QXN5bmNHZW5lcmF0b3I6CiAgICAgICAgICAgICBjb21waWxlTmV3QXN5bmNHZW5lcmF0b3Io
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5ld0FycmF5SXRlcmF0b3I6Ci0g
ICAgICAgICAgICBjb21waWxlTmV3QXJyYXlJdGVyYXRvcigpOworICAgICAgICBjYXNlIE5ld0lu
dGVybmFsRmllbGRPYmplY3Q6CisgICAgICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9i
amVjdCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0
OgogICAgICAgICAgICAgY29tcGlsZU5ld1N0cmluZ09iamVjdCgpOwpAQCAtMTU5Myw3ICsxNTk1
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJh
dG9yRnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rp
b246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246Ci0gICAgICAgIGNhc2Ug
UGhhbnRvbU5ld0FycmF5SXRlcmF0b3I6CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld0ludGVybmFs
RmllbGRPYmplY3Q6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAg
ICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ3Jl
YXRlUmVzdDoKQEAgLTYzNTEsNyArNjM1Myw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgT3BlcmF0aW9uPgot
ICAgIHZvaWQgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3QoT3BlcmF0aW9uIG9wZXJhdGlv
bikKKyAgICB2b2lkIGNvbXBpbGVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbChPcGVyYXRpb24g
b3BlcmF0aW9uKQogICAgIHsKICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOwpAQCAtNjM3NywxNyArNjM3OSwyOSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAg
ICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yKCkKICAgICB7Ci0gICAgICAgIGNvbXBpbGVOZXdJ
bnRlcm5hbEZpZWxkT2JqZWN0PEpTR2VuZXJhdG9yPihvcGVyYXRpb25OZXdHZW5lcmF0b3IpOwor
ICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8SlNHZW5lcmF0b3I+KG9w
ZXJhdGlvbk5ld0dlbmVyYXRvcik7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlTmV3QXN5bmNH
ZW5lcmF0b3IoKQogICAgIHsKLSAgICAgICAgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3Q8
SlNBc3luY0dlbmVyYXRvcj4ob3BlcmF0aW9uTmV3QXN5bmNHZW5lcmF0b3IpOworICAgICAgICBj
b21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8SlNBc3luY0dlbmVyYXRvcj4ob3BlcmF0
aW9uTmV3QXN5bmNHZW5lcmF0b3IpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZU5ld0FycmF5
SXRlcmF0b3IoKQorICAgIHZvaWQgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3QoKQogICAg
IHsKLSAgICAgICAgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3Q8SlNBcnJheUl0ZXJhdG9y
PihvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yKTsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgeworICAgICAgICBjYXNlIEpTQXJyYXlJdGVy
YXRvclR5cGU6CisgICAgICAgICAgICBjb21waWxlTmV3SW50ZXJuYWxGaWVsZE9iamVjdEltcGw8
SlNBcnJheUl0ZXJhdG9yPihvcGVyYXRpb25OZXdBcnJheUl0ZXJhdG9yKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEpTTWFwSXRlcmF0b3JUeXBlOgorICAgICAgICAgICAgY29t
cGlsZU5ld0ludGVybmFsRmllbGRPYmplY3RJbXBsPEpTTWFwSXRlcmF0b3I+KG9wZXJhdGlvbk5l
d01hcEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEpTU2V0SXRl
cmF0b3JUeXBlOgorICAgICAgICAgICAgY29tcGlsZU5ld0ludGVybmFsRmllbGRPYmplY3RJbXBs
PEpTU2V0SXRlcmF0b3I+KG9wZXJhdGlvbk5ld1NldEl0ZXJhdG9yKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1f
bm9kZSwgIkJhZCBzdHJ1Y3R1cmUiKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgY29t
cGlsZU5ld1N0cmluZ09iamVjdCgpCkBAIC0xMjMxMCw2ICsxMjMyNCwxMiBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICBjYXNlIEpTQXJyYXlJdGVyYXRvclR5cGU6CiAgICAgICAgICAg
ICBjb21waWxlTWF0ZXJpYWxpemVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDxKU0FycmF5SXRl
cmF0b3I+KG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgSlNNYXBJdGVyYXRvclR5cGU6CisgICAgICAgICAgICBjb21waWxlTWF0ZXJp
YWxpemVOZXdJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDxKU01hcEl0ZXJhdG9yPihvcGVyYXRpb25O
ZXdNYXBJdGVyYXRvcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBKU1NldEl0
ZXJhdG9yVHlwZToKKyAgICAgICAgICAgIGNvbXBpbGVNYXRlcmlhbGl6ZU5ld0ludGVybmFsRmll
bGRPYmplY3RJbXBsPEpTU2V0SXRlcmF0b3I+KG9wZXJhdGlvbk5ld1NldEl0ZXJhdG9yKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgREZHX0NSQVNI
KG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCBzdHJ1Y3R1cmUiKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAKaW5kZXggOGVmMjM5ZDZmY2E1YzAw
OWNkNzU2NWFmY2U3YWQ3NjQzMjg3NjM3OC4uYTQ5MTZmMDczZTliZjJkZTBkZjJlYzgwMDZiZDhh
ZWI1ZDcxZWZlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMu
Y3BwCkBAIC00NCw2ICs0NCw4IEBACiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52
aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTZXRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogCiBJR05PUkVfV0FSTklOR1Nf
QkVHSU4oImZyYW1lLWFkZHJlc3MiKQpAQCAtMTE4LDE1ICsxMjAsMzIgQEAgZXh0ZXJuICJDIiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUihKU0dsb2JhbE9i
amVjdCogZ2xvYmEKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBQaGFudG9tTmV3
QXJyYXlJdGVyYXRvcjogewotICAgICAgICBKU0FycmF5SXRlcmF0b3IqIGFycmF5SXRlcmF0b3Ig
PSBqc0Nhc3Q8SlNBcnJheUl0ZXJhdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKCplbmNvZGVkVmFsdWUp
KTsKKyAgICBjYXNlIFBoYW50b21OZXdJbnRlcm5hbEZpZWxkT2JqZWN0OiB7CisgICAgICAgIGF1
dG8gbWF0ZXJpYWxpemUgPSBbJl0gKGF1dG8qIHRhcmdldCkgeworICAgICAgICAgICAgdXNpbmcg
SlNDZWxsVHlwZSA9IHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRlY2x0eXBlKCp0YXJnZXQpPjsK
KyAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCB0byBwb3B1bGF0ZSB0aGUgaXRlcmF0b3Ig
d2l0aAorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9w
ZXJ0aWVzKCkuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICAgICAgY29uc3QgRXhpdFByb3Bl
cnR5VmFsdWUmIHByb3BlcnR5ID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKClbaV07Cisg
ICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LmxvY2F0aW9uKCkua2luZCgpICE9IEludGVybmFs
RmllbGRPYmplY3RQTG9jKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICB0YXJnZXQtPmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgSlNDZWxs
VHlwZTo6RmllbGQ+KHByb3BlcnR5LmxvY2F0aW9uKCkuaW5mbygpKSkuc2V0KHZtLCB0YXJnZXQs
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
IAotICAgICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgdG8gcG9wdWxhdGUgdGhlIGl0ZXJhdG9yIHdp
dGgKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVz
KCkuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICBjb25zdCBFeGl0UHJvcGVydHlWYWx1ZSYg
cHJvcGVydHkgPSBtYXRlcmlhbGl6YXRpb24tPnByb3BlcnRpZXMoKVtpXTsKLSAgICAgICAgICAg
IGlmIChwcm9wZXJ0eS5sb2NhdGlvbigpLmtpbmQoKSAhPSBJbnRlcm5hbEZpZWxkT2JqZWN0UExv
YykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGFycmF5SXRlcmF0b3It
PmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8SlNBcnJheUl0ZXJhdG9yOjpGaWVsZD4ocHJvcGVy
dHkubG9jYXRpb24oKS5pbmZvKCkpKS5zZXQodm0sIGFycmF5SXRlcmF0b3IsIEpTVmFsdWU6OmRl
Y29kZSh2YWx1ZXNbaV0pKTsKKyAgICAgICAgSlNPYmplY3QqIHRhcmdldCA9IGpzQ2FzdDxKU09i
amVjdCo+KEpTVmFsdWU6OmRlY29kZSgqZW5jb2RlZFZhbHVlKSk7CisgICAgICAgIHN3aXRjaCAo
dGFyZ2V0LT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBKU0FycmF5SXRlcmF0b3JUeXBlOgorICAg
ICAgICAgICAgbWF0ZXJpYWxpemUoanNDYXN0PEpTQXJyYXlJdGVyYXRvcio+KHRhcmdldCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSlNNYXBJdGVyYXRvclR5cGU6CisgICAg
ICAgICAgICBtYXRlcmlhbGl6ZShqc0Nhc3Q8SlNNYXBJdGVyYXRvcio+KHRhcmdldCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSlNTZXRJdGVyYXRvclR5cGU6CisgICAgICAg
ICAgICBtYXRlcmlhbGl6ZShqc0Nhc3Q8SlNTZXRJdGVyYXRvcio+KHRhcmdldCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMjkzLDcgKzMxMiw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IoSlNHbG9iYWxPYmplY3Qq
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgY2FzZSBQaGFudG9tTmV3QXJy
YXlJdGVyYXRvcjogeworICAgIGNhc2UgUGhhbnRvbU5ld0ludGVybmFsRmllbGRPYmplY3Q6IHsK
ICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHN0cnVjdHVyZS4KICAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBudWxscHRyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtYXRlcmlh
bGl6YXRpb24tPnByb3BlcnRpZXMoKS5zaXplKCk7IGktLTspIHsKQEAgLTMwNSwxNCArMzI0LDI5
IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hdGVyaWFsaXpl
T2JqZWN0SW5PU1IoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoc3RydWN0dXJlKTsKIAotICAgICAgICBKU0FycmF5SXRlcmF0b3IqIHJlc3VsdCA9IEpT
QXJyYXlJdGVyYXRvcjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXModm0sIHN0cnVjdHVyZSk7Ci0K
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQobWF0ZXJpYWxpemF0aW9uLT5wcm9wZXJ0aWVzKCkuc2l6
ZSgpIC0gMSA9PSBKU0FycmF5SXRlcmF0b3I6Om51bWJlck9mSW50ZXJuYWxGaWVsZHMpOwotCiAg
ICAgICAgIC8vIFRoZSByZWFsIHZhbHVlcyB3aWxsIGJlIHB1dCBzdWJzZXF1ZW50bHkgYnkKICAg
ICAgICAgLy8gb3BlcmF0aW9uUG9wdWxhdGVOZXdPYmplY3RJbk9TUi4gU2VlIHRoZSBQaGFudG9t
TmV3T2JqZWN0CiAgICAgICAgIC8vIGNhc2UgZm9yIGRldGFpbHMuCi0gICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSkgewor
ICAgICAgICBjYXNlIEpTQXJyYXlJdGVyYXRvclR5cGU6IHsKKyAgICAgICAgICAgIEpTQXJyYXlJ
dGVyYXRvciogcmVzdWx0ID0gSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVl
cyh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1hdGVyaWFsaXph
dGlvbi0+cHJvcGVydGllcygpLnNpemUoKSAtIDEgPT0gSlNBcnJheUl0ZXJhdG9yOjpudW1iZXJP
ZkludGVybmFsRmllbGRzKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBKU01hcEl0ZXJhdG9yVHlwZTogeworICAgICAgICAgICAgSlNNYXBJdGVy
YXRvciogcmVzdWx0ID0gSlNNYXBJdGVyYXRvcjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXModm0s
IHN0cnVjdHVyZSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXRlcmlhbGl6YXRpb24t
PnByb3BlcnRpZXMoKS5zaXplKCkgLSAxID09IEpTTWFwSXRlcmF0b3I6Om51bWJlck9mSW50ZXJu
YWxGaWVsZHMpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEpTU2V0SXRlcmF0b3JUeXBlOiB7CisgICAgICAgICAgICBKU1NldEl0ZXJhdG9yKiBy
ZXN1bHQgPSBKU1NldEl0ZXJhdG9yOjpjcmVhdGVXaXRoSW5pdGlhbFZhbHVlcyh2bSwgc3RydWN0
dXJlKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1hdGVyaWFsaXphdGlvbi0+cHJvcGVy
dGllcygpLnNpemUoKSAtIDEgPT0gSlNTZXRJdGVyYXRvcjo6bnVtYmVyT2ZJbnRlcm5hbEZpZWxk
cyk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KICAgICB9CiAKICAgICBjYXNlIFBoYW50b21D
cmVhdGVSZXN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCAwODBmYWVkZTgxYTIyNjgyMjFkMWM1MDg5
NDFkOWVmMjcxMjc5YTIwLi43MGE1ZTQ2MGU1YzE4YmJmOTZiYTQzM2IzNzljYTZkNjkwOTUxMjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtNTEsOSArNTEsMTEgQEAKICNpbmNsdWRlICJKU0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUg
IkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTUHJvbWlz
ZS5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTU2V0Lmgi
CisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCiAjaW5jbHVkZSAiSlNXZWFrTWFwLmgiCkBA
IC0yMjksOCArMjMxLDggQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6c3VidHlwZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGMKICAgICAgICAgICAgIHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJpdGVyYXRvciJfcyk7CiAKICAgICAgICAgaWYg
KG9iamVjdC0+aW5oZXJpdHM8SlNBcnJheUl0ZXJhdG9yPih2bSkKLSAgICAgICAgICAgIHx8IG9i
amVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBC
dWNrZXRQcml2YXRlTmFtZSgpKQotICAgICAgICAgICAgfHwgb2JqZWN0LT5nZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEJ1Y2tldFByaXZhdGVOYW1lKCkp
KQorICAgICAgICAgICAgfHwgb2JqZWN0LT5pbmhlcml0czxKU01hcEl0ZXJhdG9yPih2bSkKKyAg
ICAgICAgICAgIHx8IG9iamVjdC0+aW5oZXJpdHM8SlNTZXRJdGVyYXRvcj4odm0pKQogICAgICAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIml0ZXJhdG9yIl9zKTsKIAogICAg
ICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU0ludDhBcnJheT4odm0pCkBAIC0zOTcsOSArMzk5
LDkgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgICAgIHJldHVybiBhcnJheTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5tYXBCdWNrZXRQcml2YXRlTmFtZSgpKSkg
ewotICAgICAgICAgICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlID0gaXRlcmF0b3JPYmplY3QtPmdl
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXRlcmF0ZWRPYmpl
Y3RQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgICAgIEl0ZXJhdGlvbktpbmQga2luZCA9IHN0YXRp
Y19jYXN0PEl0ZXJhdGlvbktpbmQ+KGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEl0ZXJhdG9yS2luZFByaXZhdGVOYW1lKCkp
LmFzSW50MzIoKSk7CisgICAgICAgIGlmIChhdXRvKiBtYXBJdGVyYXRvciA9IGpzRHluYW1pY0Nh
c3Q8SlNNYXBJdGVyYXRvcio+KHZtLCBpdGVyYXRvck9iamVjdCkpIHsKKyAgICAgICAgICAgIEpT
VmFsdWUgaXRlcmF0ZWRWYWx1ZSA9IG1hcEl0ZXJhdG9yLT5pdGVyYXRlZE9iamVjdCgpOworICAg
ICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kID0gbWFwSXRlcmF0b3ItPmtpbmQoKTsKIAogICAg
ICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAgICAgICAgSlNBcnJheSogYXJyYXkg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVsbHB0ciwgMik7CkBAIC00MTEs
OSArNDEzLDkgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9w
ZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgICAgIHJldHVybiBh
cnJheTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zZXRCdWNrZXRQcml2YXRlTmFt
ZSgpKSkgewotICAgICAgICAgICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlID0gaXRlcmF0b3JPYmpl
Y3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXRlcmF0
ZWRPYmplY3RQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgICAgIEl0ZXJhdGlvbktpbmQga2luZCA9
IHN0YXRpY19jYXN0PEl0ZXJhdGlvbktpbmQ+KGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNldEl0ZXJhdG9yS2luZFByaXZhdGVO
YW1lKCkpLmFzSW50MzIoKSk7CisgICAgICAgIGlmIChhdXRvKiBzZXRJdGVyYXRvciA9IGpzRHlu
YW1pY0Nhc3Q8SlNTZXRJdGVyYXRvcio+KHZtLCBpdGVyYXRvck9iamVjdCkpIHsKKyAgICAgICAg
ICAgIEpTVmFsdWUgaXRlcmF0ZWRWYWx1ZSA9IHNldEl0ZXJhdG9yLT5pdGVyYXRlZE9iamVjdCgp
OworICAgICAgICAgICAgSXRlcmF0aW9uS2luZCBraW5kID0gc2V0SXRlcmF0b3ItPmtpbmQoKTsK
IAogICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAgICAgICAgSlNBcnJheSog
YXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVsbHB0ciwgMik7CkBA
IC01NDksMjMgKzU1MSwxNyBAQCBzdGF0aWMgSlNPYmplY3QqIGNsb25lQXJyYXlJdGVyYXRvck9i
amVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sCiAgICAgcmV0dXJuIGNs
b25lOwogfQogCi1zdGF0aWMgSlNPYmplY3QqIGNsb25lTWFwSXRlcmF0b3JPYmplY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU09iamVjdCogaXRlcmF0b3JPYmplY3Qs
IEpTVmFsdWUgbWFwQnVja2V0LCBKU1ZhbHVlIGl0ZXJhdGVkT2JqZWN0KQorc3RhdGljIEpTT2Jq
ZWN0KiBjbG9uZU1hcEl0ZXJhdG9yT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwgSlNNYXBJdGVyYXRvciogaXRlcmF0b3JPYmplY3QpCiB7Ci0gICAgQVNTRVJUKGl0
ZXJhdG9yT2JqZWN0LT50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlKTsKLSAgICBKU09iamVjdCog
Y2xvbmUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIE1hcEl0ZXJhdG9yUHJv
dG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPml0ZXJhdG9yUHJv
dG90eXBlKCkpKSk7Ci0gICAgY2xvbmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuaXRlcmF0ZWRPYmplY3RQcml2YXRlTmFtZSgpLCBpdGVyYXRlZE9iamVj
dCk7Ci0gICAgY2xvbmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkubWFwSXRlcmF0b3JLaW5kUHJpdmF0ZU5hbWUoKSwgaXRlcmF0b3JPYmplY3QtPmdldERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubWFwSXRlcmF0b3JLaW5k
UHJpdmF0ZU5hbWUoKSkpOwotICAgIGNsb25lLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLm1hcEJ1Y2tldFByaXZhdGVOYW1lKCksIG1hcEJ1Y2tldCk7Cisg
ICAgSlNNYXBJdGVyYXRvciogY2xvbmUgPSBKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdC0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwganNDYXN0PEpTTWFwKj4oaXRlcmF0b3JP
YmplY3QtPml0ZXJhdGVkT2JqZWN0KCkpLCBpdGVyYXRvck9iamVjdC0+a2luZCgpKTsKKyAgICBj
bG9uZS0+aW50ZXJuYWxGaWVsZChKU01hcEl0ZXJhdG9yOjpGaWVsZDo6TWFwQnVja2V0KS5zZXQo
dm0sIGNsb25lLCBpdGVyYXRvck9iamVjdC0+aW50ZXJuYWxGaWVsZChKU01hcEl0ZXJhdG9yOjpG
aWVsZDo6TWFwQnVja2V0KS5nZXQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1zdGF0aWMg
SlNPYmplY3QqIGNsb25lU2V0SXRlcmF0b3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVk0mIHZtLCBKU09iamVjdCogaXRlcmF0b3JPYmplY3QsIEpTVmFsdWUgc2V0QnVja2V0
LCBKU1ZhbHVlIGl0ZXJhdGVkT2JqZWN0KQorc3RhdGljIEpTT2JqZWN0KiBjbG9uZVNldEl0ZXJh
dG9yT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgSlNTZXRJdGVy
YXRvciogaXRlcmF0b3JPYmplY3QpCiB7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yT2JqZWN0LT50eXBl
KCkgPT0gRmluYWxPYmplY3RUeXBlKTsKLSAgICBKU09iamVjdCogY2xvbmUgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChnbG9iYWxPYmplY3QsIFNldEl0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPml0ZXJhdG9yUHJvdG90eXBlKCkpKSk7Ci0gICAg
Y2xvbmUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXRl
cmF0ZWRPYmplY3RQcml2YXRlTmFtZSgpLCBpdGVyYXRlZE9iamVjdCk7Ci0gICAgY2xvbmUtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0SXRlcmF0b3JL
aW5kUHJpdmF0ZU5hbWUoKSwgaXRlcmF0b3JPYmplY3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuc2V0SXRlcmF0b3JLaW5kUHJpdmF0ZU5hbWUoKSkpOwot
ICAgIGNsb25lLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnNldEJ1Y2tldFByaXZhdGVOYW1lKCksIHNldEJ1Y2tldCk7CisgICAgSlNTZXRJdGVyYXRvciog
Y2xvbmUgPSBKU1NldEl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+c2V0SXRlcmF0
b3JTdHJ1Y3R1cmUoKSwganNDYXN0PEpTU2V0Kj4oaXRlcmF0b3JPYmplY3QtPml0ZXJhdGVkT2Jq
ZWN0KCkpLCBpdGVyYXRvck9iamVjdC0+a2luZCgpKTsKKyAgICBjbG9uZS0+aW50ZXJuYWxGaWVs
ZChKU1NldEl0ZXJhdG9yOjpGaWVsZDo6U2V0QnVja2V0KS5zZXQodm0sIGNsb25lLCBpdGVyYXRv
ck9iamVjdC0+aW50ZXJuYWxGaWVsZChKU1NldEl0ZXJhdG9yOjpGaWVsZDo6U2V0QnVja2V0KS5n
ZXQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCkBAIC01OTMsMTUgKzU4OSwxMiBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppdGVyYXRvckVudHJpZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbAogICAgICAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmlz
QXJyYXlQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKSkKICAg
ICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZUFycmF5SXRlcmF0b3JPYmplY3QoZ2xv
YmFsT2JqZWN0LCB2bSwgYXJyYXlJdGVyYXRvcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGl0ZXJhdGVkT2JqZWN0ID0gaXRlcmF0b3JPYmpl
Y3QtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaXRlcmF0
ZWRPYmplY3RQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgICAgIGlmIChKU1ZhbHVlIG1hcEJ1Y2tl
dCA9IGl0ZXJhdG9yT2JqZWN0LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLm1hcEJ1Y2tldFByaXZhdGVOYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGpzQ2FzdDxKU01hcCo+KGl0ZXJhdGVkT2JqZWN0KS0+aXNJdGVyYXRvclByb3RvY29sRmFzdEFu
ZE5vbk9ic2VydmFibGUoKSkKLSAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgPSBjbG9uZU1h
cEl0ZXJhdG9yT2JqZWN0KGdsb2JhbE9iamVjdCwgdm0sIGl0ZXJhdG9yT2JqZWN0LCBtYXBCdWNr
ZXQsIGl0ZXJhdGVkT2JqZWN0KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZSBzZXRC
dWNrZXQgPSBpdGVyYXRvck9iamVjdC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5zZXRCdWNrZXRQcml2YXRlTmFtZSgpKSkgewotICAgICAgICAgICAgICAg
IGlmIChqc0Nhc3Q8SlNTZXQqPihpdGVyYXRlZE9iamVjdCktPmlzSXRlcmF0b3JQcm90b2NvbEZh
c3RBbmROb25PYnNlcnZhYmxlKCkpCi0gICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gY2xv
bmVTZXRJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3QsIHZtLCBpdGVyYXRvck9iamVjdCwgc2V0
QnVja2V0LCBpdGVyYXRlZE9iamVjdCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBp
ZiAoYXV0byogbWFwSXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTTWFwSXRlcmF0b3IqPih2bSwg
aXRlcmF0b3JPYmplY3QpKSB7CisgICAgICAgICAgICBpZiAoanNDYXN0PEpTTWFwKj4obWFwSXRl
cmF0b3ItPml0ZXJhdGVkT2JqZWN0KCkpLT5pc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2Jz
ZXJ2YWJsZSgpKQorICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gY2xvbmVNYXBJdGVyYXRvck9i
amVjdChnbG9iYWxPYmplY3QsIHZtLCBtYXBJdGVyYXRvcik7CisgICAgICAgIH0gZWxzZSBpZiAo
YXV0byogc2V0SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTU2V0SXRlcmF0b3IqPih2bSwgaXRl
cmF0b3JPYmplY3QpKSB7CisgICAgICAgICAgICBpZiAoanNDYXN0PEpTU2V0Kj4oc2V0SXRlcmF0
b3ItPml0ZXJhdGVkT2JqZWN0KCkpLT5pc0l0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2
YWJsZSgpKQorICAgICAgICAgICAgICAgIGl0ZXJhdG9yID0gY2xvbmVTZXRJdGVyYXRvck9iamVj
dChnbG9iYWxPYmplY3QsIHZtLCBzZXRJdGVyYXRvcik7CiAgICAgICAgIH0KICAgICB9CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGRmMDFmMmExMTg3NDA0MTI2
MzJiZjJhZGFiOGFlMDRmMjZhYzk3ZDAuLmUyZGM4ODdiMzg0NDM0ZTA1MTY2NmEwYjQyNjUyMDAz
OGY0YjU5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtOTcsNyArOTcsNiBAQAogICAgIG1hY3JvKGRpc3BsYXlOYW1lKSBc
CiAgICAgbWFjcm8oZG9uZSkgXAogICAgIG1hY3JvKGRvdEFsbCkgXAotICAgIG1hY3JvKGVudHJp
ZXMpIFwKICAgICBtYWNybyhlbnVtZXJhYmxlKSBcCiAgICAgbWFjcm8oZXJhKSBcCiAgICAgbWFj
cm8oZXZhbCkgXApAQCAtMTM3LDcgKzEzNiw2IEBACiAgICAgbWFjcm8oaXNXYXRjaHBvaW50KSBc
CiAgICAgbWFjcm8oamV0dGlzb25SZWFzb24pIFwKICAgICBtYWNybyhqb2luKSBcCi0gICAgbWFj
cm8oa2V5cykgXAogICAgIG1hY3JvKGxhc3RJbmRleCkgXAogICAgIG1hY3JvKGxlbmd0aCkgXAog
ICAgIG1hY3JvKGxpbmUpIFwKQEAgLTE5OSw3ICsxOTcsNiBAQAogICAgIG1hY3JvKHVuaWNvZGUp
IFwKICAgICBtYWNybyh1c2FnZSkgXAogICAgIG1hY3JvKHZhbHVlKSBcCi0gICAgbWFjcm8odmFs
dWVzKSBcCiAgICAgbWFjcm8odmFsdWVPZikgXAogICAgIG1hY3JvKHdlZWtkYXkpIFwKICAgICBt
YWNybyh3cml0YWJsZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50cmluc2ljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNp
Yy5jcHAKaW5kZXggMzUzNTkwOTA0OTFjZTBhZmRjZDhiYmI0Zjg3NWJiMzgxOGMyMmQzZS4uMmUx
YjVmMjk2ZTMzMjAzZTk4NGZlOTY3YTc4MTExOGIwZDY5NjFjOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCkBAIC0yMDcsNiArMjA3LDEyIEBAIGNvbnN0
IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJu
ICJKU01hcEhhc0ludHJpbnNpYyI7CiAgICAgY2FzZSBKU01hcFNldEludHJpbnNpYzoKICAgICAg
ICAgcmV0dXJuICJKU01hcFNldEludHJpbnNpYyI7CisgICAgY2FzZSBKU01hcFZhbHVlc0ludHJp
bnNpYzoKKyAgICAgICAgcmV0dXJuICJKU01hcFZhbHVlc0ludHJpbnNpYyI7CisgICAgY2FzZSBK
U01hcEtleXNJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiSlNNYXBLZXlzSW50cmluc2ljIjsK
KyAgICBjYXNlIEpTTWFwRW50cmllc0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJKU01hcEVu
dHJpZXNJbnRyaW5zaWMiOwogICAgIGNhc2UgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljOgogICAg
ICAgICByZXR1cm4gIkpTTWFwQnVja2V0SGVhZEludHJpbnNpYyI7CiAgICAgY2FzZSBKU01hcEJ1
Y2tldE5leHRJbnRyaW5zaWM6CkBAIC0yMTksNiArMjI1LDEwIEBAIGNvbnN0IGNoYXIqIGludHJp
bnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJuICJKU1NldEhhc0lu
dHJpbnNpYyI7CiAgICAgY2FzZSBKU1NldEFkZEludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJK
U1NldEFkZEludHJpbnNpYyI7CisgICAgY2FzZSBKU1NldFZhbHVlc0ludHJpbnNpYzoKKyAgICAg
ICAgcmV0dXJuICJKU1NldFZhbHVlc0ludHJpbnNpYyI7CisgICAgY2FzZSBKU1NldEVudHJpZXNJ
bnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiSlNTZXRFbnRyaWVzSW50cmluc2ljIjsKICAgICBj
YXNlIEpTU2V0QnVja2V0SGVhZEludHJpbnNpYzoKICAgICAgICAgcmV0dXJuICJKU1NldEJ1Y2tl
dEhlYWRJbnRyaW5zaWMiOwogICAgIGNhc2UgSlNTZXRCdWNrZXROZXh0SW50cmluc2ljOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuaAppbmRleCA2YmZmZjkwMDYzY2Uy
ZDdkOGFjMjA1NDJlOGE4ZDdlMThjNDJiYWU5Li4zM2VjYWJjODFmYzgxODQwYjRkZjdhNjk2NjJk
YjEzZjU2NjJjYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMu
aApAQCAtMTE4LDEyICsxMTgsMTcgQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50OF90IHsKICAgICBK
U01hcEdldEludHJpbnNpYywKICAgICBKU01hcEhhc0ludHJpbnNpYywKICAgICBKU01hcFNldElu
dHJpbnNpYywKKyAgICBKU01hcFZhbHVlc0ludHJpbnNpYywKKyAgICBKU01hcEtleXNJbnRyaW5z
aWMsCisgICAgSlNNYXBFbnRyaWVzSW50cmluc2ljLAogICAgIEpTTWFwQnVja2V0SGVhZEludHJp
bnNpYywKICAgICBKU01hcEJ1Y2tldE5leHRJbnRyaW5zaWMsCiAgICAgSlNNYXBCdWNrZXRLZXlJ
bnRyaW5zaWMsCiAgICAgSlNNYXBCdWNrZXRWYWx1ZUludHJpbnNpYywKICAgICBKU1NldEhhc0lu
dHJpbnNpYywKICAgICBKU1NldEFkZEludHJpbnNpYywKKyAgICBKU1NldFZhbHVlc0ludHJpbnNp
YywKKyAgICBKU1NldEVudHJpZXNJbnRyaW5zaWMsCiAgICAgSlNTZXRCdWNrZXRIZWFkSW50cmlu
c2ljLAogICAgIEpTU2V0QnVja2V0TmV4dEludHJpbnNpYywKICAgICBKU1NldEJ1Y2tldEtleUlu
dHJpbnNpYywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlJdGVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJh
dG9yLmgKaW5kZXggNTk5ZTc3NGIwM2RkM2U1YmE2ZDRkN2ZhMzRiYjk4YTk2ODdlYzYwOS4uYWZk
OWViMmU1ZDY2Yjg1M2EwYzc3MDQyYWNhZTQ5OWQwNjczZjE4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUl0ZXJhdG9yLmgKQEAgLTY0LDcgKzY0LDcgQEAg
Y2xhc3MgSlNBcnJheUl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGw8Mz4gewogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVs
ZChGaWVsZCBmaWVsZCkgY29uc3QgeyByZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50
ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgeyByZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQogCi0gICAgSXRlcmF0aW9uS2luZCBraW5kKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlcmF0aW9uS2luZD4oaW50ZXJuYWxGaWVsZChG
aWVsZDo6S2luZCkuZ2V0KCkuYXNVSW50MzIoKSk7IH0KKyAgICBJdGVyYXRpb25LaW5kIGtpbmQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVyYXRpb25LaW5kPihpbnRlcm5hbEZpZWxk
KEZpZWxkOjpLaW5kKS5nZXQoKS5hc1VJbnQzMkFzQW55SW50KCkpOyB9CiAgICAgSlNPYmplY3Qq
IGl0ZXJhdGVkT2JqZWN0KCkgY29uc3QgeyByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oaW50ZXJu
YWxGaWVsZChGaWVsZDo6SXRlcmF0ZWRPYmplY3QpLmdldCgpKTsgfQogCiAgICAgc3RhdGljIEpT
QXJyYXlJdGVyYXRvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNPYmplY3QqIGl0ZXJhdGVk
T2JqZWN0LCBKU1ZhbHVlIGtpbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDZjZTE4NGFlMTU5ZTQ4MmYxMWUwMzBmNmQzOWVj
ODU2MDJiZTk2MGUuLjZhMTMwZDlmOTE4ZTI0ODdhYjAxYzU2MjA1ZDFjYWE2NmVhZTViNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTEwNiw2ICsxMDYsNyBAQAogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01hcEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNNaWNyb3Rhc2suaCIKICNpbmNsdWRlICJKU01vZHVsZUVu
dmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVMb2FkZXIuaCIKQEAgLTExNyw2ICsxMTgs
NyBAQAogI2luY2x1ZGUgIkpTUHJvbWlzZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNQcm9t
aXNlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKKyNpbmNsdWRlICJKU1NldEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVHlwZWRB
cnJheUNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheVByb3RvdHlwZXMuaCIK
QEAgLTU2NCw3ICs1NjYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAg
ICAgICAgfSk7CiAgICAgbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24uaW5pdExhdGVyKAogICAg
ICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNGdW5jdGlvbj4mIGluaXQpIHsKLSAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAwLCBp
bml0LnZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcy5zdHJpbmcoKSwgYXJyYXlQcm90b0Z1bmNWYWx1
ZXMsIEFycmF5VmFsdWVzSW50cmluc2ljKSk7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5vd25lciwgMCwgaW5pdC52bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkuc3RyaW5nKCksIGFycmF5UHJvdG9G
dW5jVmFsdWVzLCBBcnJheVZhbHVlc0ludHJpbnNpYykpOwogICAgICAgICB9KTsKIAogICAgIG1f
aXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLmluaXRMYXRlcigKQEAgLTc2NSw2ICs3NjcsMTQgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9hcnJheUl0ZXJhdG9yUHJv
dG90eXBlLnNldCh2bSwgdGhpcywgYXJyYXlJdGVyYXRvclByb3RvdHlwZSk7CiAgICAgbV9hcnJh
eUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIGFycmF5SXRlcmF0b3JQcm90b3R5cGUpKTsKIAorICAgIGF1dG8q
IG1hcEl0ZXJhdG9yUHJvdG90eXBlID0gTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwg
dGhpcywgTWFwSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9p
dGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGUuc2V0
KHZtLCB0aGlzLCBtYXBJdGVyYXRvclByb3RvdHlwZSk7CisgICAgbV9tYXBJdGVyYXRvclN0cnVj
dHVyZS5zZXQodm0sIHRoaXMsIEpTTWFwSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbWFwSXRlcmF0b3JQcm90b3R5cGUpKTsKKworICAgIGF1dG8qIHNldEl0ZXJhdG9yUHJvdG90
eXBlID0gU2V0SXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgU2V0SXRlcmF0b3JQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5n
ZXQoKSkpOworICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBzZXRJdGVy
YXRvclByb3RvdHlwZSk7CisgICAgbV9zZXRJdGVyYXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEpTU2V0SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgc2V0SXRlcmF0b3JQcm90
b3R5cGUpKTsKKwogICAgIEpTRnVuY3Rpb24qIGRlZmF1bHRQcm9taXNlVGhlbiA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgcHJvbWlzZVByb3RvdHlwZVRoZW5Db2RlR2VuZXJhdG9yKHZtKSwgdGhp
cyk7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6ZGVmYXVsdFByb21pc2VUaGVuKV0uc2V0KHZtLCB0aGlzLCBkZWZhdWx0UHJv
bWlzZVRoZW4pOwogCkBAIC0xMDA2LDE1ICsxMDE2LDkgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3Ry
dWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5h
bWUKICAgICBKU09iamVjdCogYXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlID0gQXN5bmNG
cm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEFzeW5jRnJvbVN5bmNJ
dGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJv
dG90eXBlLmdldCgpKSk7CiAgICAganNDYXN0PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChM
aW5rVGltZUNvbnN0YW50OjpBc3luY0Zyb21TeW5jSXRlcmF0b3IpKS0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlw
ZSk7CiAKLSAgICBKU09iamVjdCogbWFwSXRlcmF0b3JQcm90b3R5cGUgPSBNYXBJdGVyYXRvclBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBNYXBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7Ci0gICAganNDYXN0
PEpTT2JqZWN0Kj4obGlua1RpbWVDb25zdGFudChMaW5rVGltZUNvbnN0YW50OjpNYXBJdGVyYXRv
cikpLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbWFwSXRlcmF0
b3JQcm90b3R5cGUpOwotCiAgICAgSlNPYmplY3QqIHJlZ0V4cFN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlID0gUmVnRXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgUmVn
RXhwU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9p
dGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOwogICAgIGpzQ2FzdDxKU09iamVjdCo+KGxpbmtUaW1l
Q29uc3RhbnQoTGlua1RpbWVDb25zdGFudDo6UmVnRXhwU3RyaW5nSXRlcmF0b3IpKS0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHJlZ0V4cFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlKTsKIAotICAgIEpTT2JqZWN0KiBzZXRJdGVyYXRvclByb3RvdHlwZSA9IFNldEl0
ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFNldEl0ZXJhdG9yUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKLSAg
ICBqc0Nhc3Q8SlNPYmplY3QqPihsaW5rVGltZUNvbnN0YW50KExpbmtUaW1lQ29uc3RhbnQ6OlNl
dEl0ZXJhdG9yKSktPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBz
ZXRJdGVyYXRvclByb3RvdHlwZSk7Ci0KICAgICAvLyBNYXAgYW5kIFNldCBoZWxwZXJzLgogICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6OlNldCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
ewogICAgICAgICAgICAgaW5pdC5zZXQoanNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciktPnNldENvbnN0cnVjdG9yKCkpOwpAQCAtMTc3NSw2ICsxNzc5LDggQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90
eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5SXRlcmF0b3JQcm90
b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWFwSXRlcmF0b3JQcm90
b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2V0SXRlcmF0b3JQcm90
b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNGdW5jdGlvblBy
b3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0dlbmVyYXRv
clByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0l0ZXJh
dG9yUHJvdG90eXBlKTsKQEAgLTE4MjYsNiArMTgzMiw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvclN0cnVjdHVyZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0dlbmVyYXRvclN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hcnJheUl0ZXJhdG9yU3RydWN0dXJlKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21hcEl0ZXJhdG9yU3RydWN0dXJlKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NldEl0ZXJhdG9yU3RydWN0dXJlKTsKICAg
ICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKTsKICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCmluZGV4IDFlNzZjMGIzNDZlNjdkZGEzNWM0ZTk1NWI1MTJmNmY1OTMxNDQyMDQuLmJh
ZDY0NjM1YmZjZjQ5NWI1OTI4OTRlNDczODFlYzM1YjcxM2JjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTAwLDYgKzEwMCw3IEBA
IGNsYXNzIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcjsKIGNsYXNzIEpTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGU7CiBjbGFzcyBEaXJlY3RFdmFsRXhlY3V0YWJsZTsKIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKK2NsYXNzIE1hcEl0ZXJhdG9yUHJvdG90eXBlOwogY2xhc3MgTWFwUHJv
dG90eXBlOwogY2xhc3MgTWljcm90YXNrOwogY2xhc3MgTW9kdWxlTG9hZGVyOwpAQCAtMTEyLDYg
KzExMyw3IEBAIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFtRXhlY3V0YWJs
ZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwogY2xhc3MgUmVnRXhwUHJvdG90eXBlOworY2xh
c3MgU2V0SXRlcmF0b3JQcm90b3R5cGU7CiBjbGFzcyBTZXRQcm90b3R5cGU7CiBjbGFzcyBTb3Vy
Y2VDb2RlOwogY2xhc3MgU291cmNlT3JpZ2luOwpAQCAtMzIzLDYgKzMyNSw4IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdy
aXRlQmFycmllcjxHZW5lcmF0b3JQcm90b3R5cGU+IG1fZ2VuZXJhdG9yUHJvdG90eXBlOwogICAg
IFdyaXRlQmFycmllcjxBc3luY0dlbmVyYXRvclByb3RvdHlwZT4gbV9hc3luY0dlbmVyYXRvclBy
b3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlJdGVyYXRvclByb3RvdHlwZT4gbV9hcnJh
eUl0ZXJhdG9yUHJvdG90eXBlOworICAgIFdyaXRlQmFycmllcjxNYXBJdGVyYXRvclByb3RvdHlw
ZT4gbV9tYXBJdGVyYXRvclByb3RvdHlwZTsKKyAgICBXcml0ZUJhcnJpZXI8U2V0SXRlcmF0b3JQ
cm90b3R5cGU+IG1fc2V0SXRlcmF0b3JQcm90b3R5cGU7CiAKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVy
ZTsKQEAgLTM3OCw2ICszODIsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dl
bmVyYXRvclN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2FzeW5jR2Vu
ZXJhdG9yU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYXJyYXlJdGVy
YXRvclN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21hcEl0ZXJhdG9y
U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc2V0SXRlcmF0b3JTdHJ1
Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1faXRl
cmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlOwpAQCAtNjQ5LDYgKzY1
NSw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9h
c3luY0Z1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CiAgICAgQXJyYXlJdGVyYXRvclByb3RvdHlw
ZSogYXJyYXlJdGVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlJdGVyYXRv
clByb3RvdHlwZS5nZXQoKTsgfQorICAgIE1hcEl0ZXJhdG9yUHJvdG90eXBlKiBtYXBJdGVyYXRv
clByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwSXRlcmF0b3JQcm90b3R5cGUuZ2V0KCk7
IH0KKyAgICBTZXRJdGVyYXRvclByb3RvdHlwZSogc2V0SXRlcmF0b3JQcm90b3R5cGUoKSBjb25z
dCB7IHJldHVybiBtX3NldEl0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CiAgICAgSlNPYmplY3Qq
IG1hcFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwU3RydWN0dXJlLnByb3RvdHlwZSh0
aGlzKTsgfQogICAgIC8vIFdvcmthcm91bmQgZm9yIHRoZSBuYW1lIGNvbmZsaWN0IGJldHdlZW4g
SlNDZWxsOjpzZXRQcm90b3R5cGUuCiAgICAgSlNPYmplY3QqIGpzU2V0UHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CkBAIC03NTcsNiAr
NzY1LDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBhc3luY0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hc3lu
Y0dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhcnJh
eUl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheUl0ZXJhdG9yU3RydWN0
dXJlLmdldCgpOyB9ICAgIAorICAgIFN0cnVjdHVyZSogbWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX21hcEl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0
dXJlKiBzZXRJdGVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0SXRlcmF0b3JT
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBpdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJl
KiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcAppbmRleCBmODBiMzQwMTBkMzViMjZmZDM5NmZlOGRk
NTlkMGQ0NzQ0ZTdiM2JhLi41NjQ4Zjg3ZDM1MThlMDM0YmFlMTU0NmFiNWQ0NWM4MjY5NjY2MjY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmNw
cApAQCAtMjcsMjYgKzI3LDQxIEBACiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGxJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0
IENsYXNzSW5mbyBKU01hcEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJNYXAgSXRlcmF0b3IiLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTWFwSXRlcmF0b3Ip
IH07Citjb25zdCBDbGFzc0luZm8gSlNNYXBJdGVyYXRvcjo6c19pbmZvID0geyAiTWFwIEl0ZXJh
dG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU01hcEl0ZXJhdG9yKSB9OwogCi12b2lkIEpTTWFwSXRlcmF0b3I6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNNYXAqIGl0ZXJhdGVkT2JqZWN0KQorSlNNYXBJdGVyYXRvciogSlNNYXBJdGVy
YXRvcjo6Y3JlYXRlV2l0aEluaXRpYWxWYWx1ZXMoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK3sKKyAgICBKU01hcEl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTTWFwSXRlcmF0b3I+KHZtLmhlYXApKSBKU01hcEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1
cmUpOworICAgIGl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGl0ZXJh
dG9yOworfQorCit2b2lkIEpTTWFwSXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNN
YXAqIGl0ZXJhdGVkT2JqZWN0LCBJdGVyYXRpb25LaW5kIGtpbmQpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIGludGVybmFsRmllbGQoRmllbGQ6Ok1hcEJ1Y2tldCkuc2V0
KHZtLCB0aGlzLCBpdGVyYXRlZE9iamVjdC0+aGVhZCgpKTsKKyAgICBpbnRlcm5hbEZpZWxkKEZp
ZWxkOjpJdGVyYXRlZE9iamVjdCkuc2V0KHZtLCB0aGlzLCBpdGVyYXRlZE9iamVjdCk7CisgICAg
aW50ZXJuYWxGaWVsZChGaWVsZDo6S2luZCkuc2V0KHZtLCB0aGlzLCBqc051bWJlcihzdGF0aWNf
Y2FzdDxpbnQzMl90PihraW5kKSkpOworfQorCit2b2lkIEpTTWFwSXRlcmF0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgbV9t
YXAuc2V0KHZtLCB0aGlzLCBpdGVyYXRlZE9iamVjdCk7Ci0gICAgc2V0SXRlcmF0b3Iodm0sIG1f
bWFwLT5oZWFkKCkpOworICAgIGF1dG8gdmFsdWVzID0gaW5pdGlhbFZhbHVlcygpOworICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZhbHVlcy5zaXplKCk7ICsraW5kZXgpCisg
ICAgICAgIEJhc2U6OmludGVybmFsRmllbGQoaW5kZXgpLnNldCh2bSwgdGhpcywgdmFsdWVzW2lu
ZGV4XSk7CiB9CiAKIHZvaWQgSlNNYXBJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTTWFwSXRlcmF0b3IqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNNYXBJdGVyYXRvcio+KGNlbGwpOworICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNNYXBJdGVyYXRvcio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWFwKTsK
LSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2l0ZXIpOwogfQogCiBKU1ZhbHVlIEpT
TWFwSXRlcmF0b3I6OmNyZWF0ZVBhaXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBrZXksIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01hcEl0ZXJhdG9yLmgKaW5kZXggNmUxZmEwY2ZjNjg1ZTRiYTM1Y2VhMzlmZjdlMmVlN2Zh
YTZkOWI5OC4uNjE1YzQwYTM1MTJiZWYwMjQ2ZTk2MDIyMWFjZWE0Y2Q1YTA3ZGYxMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuaApAQCAtMjYsMjEg
KzI2LDM3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkl0ZXJhdGlvbktpbmQuaCIKKyNp
bmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIK
LSNpbmNsdWRlICJKU09iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotLy8gTm93LCBpdCBp
cyBvbmx5IHVzZWQgZm9yIHNlcmlhbGl6YXRpb24uCi0vLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBK
U0ludGVybmFsRmllbGRPYmplY3RJbXBsIHRvIGltcGxlbWVudCByZWFsIEpTTWFwSXRlcmF0b3Ig
dXNlZCBpbiBKU0MuCi0vLyBDdXJyZW50bHksIEpTQyBpcyB1c2luZyBmaW5hbCBvYmplY3RzIHRv
IGltcGxlbWVudCBNYXBJdGVyYXRvci4KLWNsYXNzIEpTTWFwSXRlcmF0b3IgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKLSAgICB0eXBlZGVmIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFL
ZXlWYWx1ZT4gSGFzaE1hcEJ1Y2tldFR5cGU7CitjbGFzcyBKU01hcEl0ZXJhdG9yIGZpbmFsIDog
cHVibGljIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Mz4gewogcHVibGljOgotICAgIHVzaW5n
IEJhc2UgPSBKU0NlbGw7CisgICAgdXNpbmcgSGFzaE1hcEJ1Y2tldFR5cGUgPSBIYXNoTWFwQnVj
a2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5VmFsdWU+OworICAgIHVzaW5nIEJhc2UgPSBKU0ludGVy
bmFsRmllbGRPYmplY3RJbXBsPDM+OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAorICAg
IGVudW0gY2xhc3MgRmllbGQgOiB1aW50OF90IHsKKyAgICAgICAgTWFwQnVja2V0ID0gMCwKKyAg
ICAgICAgSXRlcmF0ZWRPYmplY3QsCisgICAgICAgIEtpbmQsCisgICAgfTsKKyAgICBzdGF0aWNf
YXNzZXJ0KG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPT0gMyk7CisKKyAgICBzdGF0aWMgc3RkOjph
cnJheTxKU1ZhbHVlLCBudW1iZXJPZkludGVybmFsRmllbGRzPiBpbml0aWFsVmFsdWVzKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB7IHsKKyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAgICAg
ICAganNOdWxsKCksCisgICAgICAgICAgICBqc051bWJlcigwKSwKKyAgICAgICAgfSB9OworICAg
IH0KKworICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxGaWVsZChGaWVs
ZCBmaWVsZCkgY29uc3QgeyByZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZmllbGQpKTsgfQorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxG
aWVsZChGaWVsZCBmaWVsZCkgeyByZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZmllbGQpKTsgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUs
IFN1YnNwYWNlQWNjZXNzIG1vZGU+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCiAgICAgewpAQCAtNDksNTAgKzY1LDU4IEBAIGNsYXNzIEpTTWFwSXRlcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNNYXBJdGVyYXRvclR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKICAgICB9CiAKICAgICBzdGF0aWMgSlNNYXBJdGVyYXRvciogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTWFwKiBpdGVyYXRlZE9iamVjdCwgSXRlcmF0
aW9uS2luZCBraW5kKQogICAgIHsKLSAgICAgICAgSlNNYXBJdGVyYXRvciogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU01hcEl0ZXJhdG9yPih2bS5oZWFwKSkgSlNNYXBJ
dGVyYXRvcih2bSwgc3RydWN0dXJlLCBpdGVyYXRlZE9iamVjdCwga2luZCk7Ci0gICAgICAgIGlu
c3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgaXRlcmF0ZWRPYmplY3QpOworICAgICAgICBKU01h
cEl0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTWFwSXRl
cmF0b3I+KHZtLmhlYXApKSBKU01hcEl0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBp
bnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGl0ZXJhdGVkT2JqZWN0LCBraW5kKTsKICAgICAg
ICAgcmV0dXJuIGluc3RhbmNlOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgSGFzaE1hcEJ1
Y2tldFR5cGUqIGFkdmFuY2VJdGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAg
c3RhdGljIEpTTWFwSXRlcmF0b3IqIGNyZWF0ZVdpdGhJbml0aWFsVmFsdWVzKFZNJiwgU3RydWN0
dXJlKik7CisKKyAgICBBTFdBWVNfSU5MSU5FIEhhc2hNYXBCdWNrZXRUeXBlKiBhZHZhbmNlSXRl
cihWTSYgdm0pCiAgICAgewotICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogcHJldiA9IG1faXRl
ci5nZXQoKTsKLSAgICAgICAgaWYgKCFwcmV2KQorICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSog
cHJldiA9IGl0ZXJhdG9yKCk7CisgICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBzZW50aW5lbCA9
IGpzQ2FzdDxIYXNoTWFwQnVja2V0VHlwZSo+KHZtLnNlbnRpbmVsTWFwQnVja2V0KCkpOworICAg
ICAgICBpZiAocHJldiA9PSBzZW50aW5lbCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgICAgICBIYXNoTWFwQnVj
a2V0VHlwZSogYnVja2V0ID0gbV9pdGVyLT5uZXh0KCk7CisgICAgICAgIEhhc2hNYXBCdWNrZXRU
eXBlKiBidWNrZXQgPSBwcmV2LT5uZXh0KCk7CiAgICAgICAgIHdoaWxlIChidWNrZXQgJiYgYnVj
a2V0LT5kZWxldGVkKCkpCiAgICAgICAgICAgICBidWNrZXQgPSBidWNrZXQtPm5leHQoKTsKICAg
ICAgICAgaWYgKCFidWNrZXQpIHsKLSAgICAgICAgICAgIHNldEl0ZXJhdG9yKHZtLCBudWxscHRy
KTsKKyAgICAgICAgICAgIHNldEl0ZXJhdG9yKHZtLCBzZW50aW5lbCk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBzZXRJdGVyYXRvcih2bSwgYnVja2V0
KTsgLy8gV2Uga2VlcCBtX2l0ZXIgb24gdGhlIGxhc3QgdmFsdWUgc2luY2UgdGhlIGZpcnN0IHRo
aW5nIHdlIGRvIGluIHRoaXMgZnVuY3Rpb24gaXMgY2FsbCBuZXh0KCkuCisgICAgICAgIHNldEl0
ZXJhdG9yKHZtLCBidWNrZXQpOyAvLyBXZSBrZWVwIGl0ZXJhdG9yIG9uIHRoZSBsYXN0IHZhbHVl
IHNpbmNlIHRoZSBmaXJzdCB0aGluZyB3ZSBkbyBpbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGwgbmV4
dCgpLgogICAgICAgICByZXR1cm4gYnVja2V0OwogICAgIH0KKwogICAgIGJvb2wgbmV4dChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlJiB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IEhhc2hNYXBCdWNrZXRUeXBlKiBidWNrZXQgPSBhZHZhbmNlSXRlcihnbG9iYWxPYmplY3QpOwor
ICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0ID0gYWR2YW5jZUl0ZXIoZ2V0Vk0oZ2xv
YmFsT2JqZWN0KSk7CiAgICAgICAgIGlmICghYnVja2V0KQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIGlmIChtX2tpbmQgPT0gSXRlcmF0aW9uS2luZDo6VmFsdWVzKQorICAg
ICAgICBzd2l0Y2ggKGtpbmQoKSkgeworICAgICAgICBjYXNlIEl0ZXJhdGlvbktpbmQ6OlZhbHVl
czoKICAgICAgICAgICAgIHZhbHVlID0gYnVja2V0LT52YWx1ZSgpOwotICAgICAgICBlbHNlIGlm
IChtX2tpbmQgPT0gSXRlcmF0aW9uS2luZDo6S2V5cykKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEl0ZXJhdGlvbktpbmQ6OktleXM6CiAgICAgICAgICAgICB2YWx1ZSA9IGJ1Y2tl
dC0+a2V5KCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM6CiAgICAgICAgICAgICB2YWx1ZSA9IGNyZWF0ZVBhaXIo
Z2xvYmFsT2JqZWN0LCBidWNrZXQtPmtleSgpLCBidWNrZXQtPnZhbHVlKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAg
Ym9vbCBuZXh0S2V5VmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSYg
a2V5LCBKU1ZhbHVlJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBi
dWNrZXQgPSBhZHZhbmNlSXRlcihnbG9iYWxPYmplY3QpOworICAgICAgICBIYXNoTWFwQnVja2V0
VHlwZSogYnVja2V0ID0gYWR2YW5jZUl0ZXIoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAg
IGlmICghYnVja2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDEsMjcgKzEy
NSwyNCBAQCBjbGFzcyBKU01hcEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEl0ZXJhdGlvbktpbmQga2luZCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZDsgfQotICAgIEpTVmFsdWUgaXRlcmF0ZWRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLmdldCgpOyB9CisgICAgSXRlcmF0aW9uS2luZCBraW5kKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SXRlcmF0aW9uS2luZD4oaW50ZXJuYWxGaWVsZChGaWVsZDo6S2lu
ZCkuZ2V0KCkuYXNVSW50MzJBc0FueUludCgpKTsgfQorICAgIEpTT2JqZWN0KiBpdGVyYXRlZE9i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGludGVybmFsRmllbGQoRmll
bGQ6Okl0ZXJhdGVkT2JqZWN0KS5nZXQoKSk7IH0KKyAgICBIYXNoTWFwQnVja2V0VHlwZSogaXRl
cmF0b3IoKSBjb25zdCB7IHJldHVybiBqc0Nhc3Q8SGFzaE1hcEJ1Y2tldFR5cGUqPihpbnRlcm5h
bEZpZWxkKEZpZWxkOjpNYXBCdWNrZXQpLmdldCgpKTsgfQogCiBwcml2YXRlOgotICAgIEpTTWFw
SXRlcmF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNNYXAqLCBJdGVyYXRpb25L
aW5kIGtpbmQpCisgICAgSlNNYXBJdGVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKLSAgICAgICAgLCBtX2tpbmQoa2luZCkK
ICAgICB7IH0KIAogICAgIHZvaWQgc2V0SXRlcmF0b3IoVk0mIHZtLCBIYXNoTWFwQnVja2V0VHlw
ZSogYnVja2V0KQogICAgIHsKLSAgICAgICAgbV9pdGVyLnNldE1heUJlTnVsbCh2bSwgdGhpcywg
YnVja2V0KTsKKyAgICAgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6TWFwQnVja2V0KS5zZXQodm0s
IHRoaXMsIGJ1Y2tldCk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEpTTWFwKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEpTTWFwKiwgSXRlcmF0aW9uS2luZCk7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYpOwogICAgIEpTVmFsdWUgY3JlYXRlUGFpcihKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKLQotICAgIFdyaXRlQmFycmllcjxKU01hcD4gbV9tYXA7Ci0gICAgV3Jp
dGVCYXJyaWVyPEhhc2hNYXBCdWNrZXRUeXBlPiBtX2l0ZXI7Ci0gICAgSXRlcmF0aW9uS2luZCBt
X2tpbmQ7CiB9OwogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTTWFw
SXRlcmF0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1NldEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRl
cmF0b3IuY3BwCmluZGV4IDUwOTdiMjAwNWZhNThkNWZjYWY4ZmYyNDA5YWZhZmNiYzU5Y2I1YmQu
LmY5NzA1ZDNjMGJkNjdhOGI0NzA2YzdmOTcxNTFlM2FiM2ZlNTkzNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3IuY3BwCkBAIC0yNywyNiArMjcs
NDEgQEAKICNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCIKICNpbmNs
dWRlICJKU1NldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJbmZvIEpTU2V0
SXRlcmF0b3I6OnNfaW5mbyA9IHsgIlNldCBJdGVyYXRvciIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNTZXRJdGVyYXRvcikgfTsKK2NvbnN0IENsYXNz
SW5mbyBKU1NldEl0ZXJhdG9yOjpzX2luZm8gPSB7ICJTZXQgSXRlcmF0b3IiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTU2V0SXRlcmF0b3Ip
IH07CiAKLXZvaWQgSlNTZXRJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1NldCog
aXRlcmF0ZWRPYmplY3QpCitKU1NldEl0ZXJhdG9yKiBKU1NldEl0ZXJhdG9yOjpjcmVhdGVXaXRo
SW5pdGlhbFZhbHVlcyhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTU2V0
SXRlcmF0b3IqIGl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTZXRJdGVy
YXRvcj4odm0uaGVhcCkpIEpTU2V0SXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgaXRlcmF0
b3ItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gaXRlcmF0b3I7Cit9CisKK3ZvaWQg
SlNTZXRJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1NldCogaXRlcmF0ZWRPYmpl
Y3QsIEl0ZXJhdGlvbktpbmQga2luZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgaW50ZXJuYWxGaWVsZChGaWVsZDo6U2V0QnVja2V0KS5zZXQodm0sIHRoaXMsIGl0ZXJh
dGVkT2JqZWN0LT5oZWFkKCkpOworICAgIGludGVybmFsRmllbGQoRmllbGQ6Okl0ZXJhdGVkT2Jq
ZWN0KS5zZXQodm0sIHRoaXMsIGl0ZXJhdGVkT2JqZWN0KTsKKyAgICBpbnRlcm5hbEZpZWxkKEZp
ZWxkOjpLaW5kKS5zZXQodm0sIHRoaXMsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KGtp
bmQpKSk7Cit9CisKK3ZvaWQgSlNTZXRJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
ewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBtX3NldC5zZXQodm0sIHRoaXMs
IGl0ZXJhdGVkT2JqZWN0KTsKLSAgICBzZXRJdGVyYXRvcih2bSwgbV9zZXQtPmhlYWQoKSk7Cisg
ICAgYXV0byB2YWx1ZXMgPSBpbml0aWFsVmFsdWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgQmFzZTo6aW50
ZXJuYWxGaWVsZChpbmRleCkuc2V0KHZtLCB0aGlzLCB2YWx1ZXNbaW5kZXhdKTsKIH0KIAogdm9p
ZCBKU1NldEl0ZXJhdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7Ci0gICAgSlNTZXRJdGVyYXRvciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Nl
dEl0ZXJhdG9yKj4oY2VsbCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1NldEl0
ZXJhdG9yKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zZXQpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1faXRlcik7CiB9CiAKIEpTVmFsdWUgSlNTZXRJdGVyYXRvcjo6Y3Jl
YXRlUGFpcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSwgSlNWYWx1
ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0
SXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3Iu
aAppbmRleCAyYjE1MjVlZTJiNGU0MzVmOWM1ZWQxZGRmYjc1NDFkN2UyOTliNDJiLi5lZTM4ZDZh
MGM0ZTYxZDFkN2ZmODViMWEzYTUwYWFjOTYyOTEyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5oCkBAIC0yNiwyMSArMjYsMzcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSXRlcmF0aW9uS2luZC5oIgotI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oIgogI2luY2x1ZGUgIkpT
U2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi0vLyBOb3csIGl0IGlzIG9ubHkgdXNlZCBmb3Ig
c2VyaWFsaXphdGlvbi4KLS8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIEpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGwgdG8gaW1wbGVtZW50IHJlYWwgSlNTZXRJdGVyYXRvciB1c2VkIGluIEpTQy4KLS8v
IEN1cnJlbnRseSwgSlNDIGlzIHVzaW5nIGZpbmFsIG9iamVjdHMgdG8gaW1wbGVtZW50IFNldEl0
ZXJhdG9yLgotY2xhc3MgSlNTZXRJdGVyYXRvciBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewotICAg
IHR5cGVkZWYgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4gSGFzaE1hcEJ1Y2tl
dFR5cGU7CitjbGFzcyBKU1NldEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTSW50ZXJuYWxGaWVs
ZE9iamVjdEltcGw8Mz4gewogcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0NlbGw7CisgICAg
dXNpbmcgSGFzaE1hcEJ1Y2tldFR5cGUgPSBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRh
S2V5PjsKKyAgICB1c2luZyBCYXNlID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDwzPjsKIAog
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKKyAgICBlbnVtIGNsYXNzIEZpZWxkIDogdWludDhf
dCB7CisgICAgICAgIFNldEJ1Y2tldCA9IDAsCisgICAgICAgIEl0ZXJhdGVkT2JqZWN0LAorICAg
ICAgICBLaW5kLAorICAgIH07CisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkludGVybmFsRmll
bGRzID09IDMpOworCisgICAgc3RhdGljIHN0ZDo6YXJyYXk8SlNWYWx1ZSwgbnVtYmVyT2ZJbnRl
cm5hbEZpZWxkcz4gaW5pdGlhbFZhbHVlcygpCisgICAgeworICAgICAgICByZXR1cm4geyB7Cisg
ICAgICAgICAgICBqc051bGwoKSwKKyAgICAgICAgICAgIGpzTnVsbCgpLAorICAgICAgICAgICAg
anNOdW1iZXIoMCksCisgICAgICAgIH0gfTsKKyAgICB9CisKKyAgICBjb25zdCBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmllbGQgZmllbGQpIGNvbnN0IHsgcmV0dXJuIEJh
c2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZpZWxkKSk7IH0KKyAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmllbGQgZmllbGQpIHsgcmV0dXJu
IEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZpZWxkKSk7IH0KKwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgogICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHsKQEAgLTQ5LDY4
ICs2NSw3MiBAQCBjbGFzcyBKU1NldEl0ZXJhdG9yIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpT
U2V0SXRlcmF0b3JUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCiAgICAg
c3RhdGljIEpTU2V0SXRlcmF0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1NldCogaXRlcmF0ZWRPYmplY3QsIEl0ZXJhdGlvbktpbmQga2luZCkKICAgICB7Ci0gICAg
ICAgIEpTU2V0SXRlcmF0b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNTZXRJdGVyYXRvcj4odm0uaGVhcCkpIEpTU2V0SXRlcmF0b3Iodm0sIHN0cnVjdHVyZSwgaXRl
cmF0ZWRPYmplY3QsIGtpbmQpOwotICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0s
IGl0ZXJhdGVkT2JqZWN0KTsKKyAgICAgICAgSlNTZXRJdGVyYXRvciogaW5zdGFuY2UgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NldEl0ZXJhdG9yPih2bS5oZWFwKSkgSlNTZXRJdGVy
YXRvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZt
LCBpdGVyYXRlZE9iamVjdCwga2luZCk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICB9
CiAKLSAgICBBTFdBWVNfSU5MSU5FIEhhc2hNYXBCdWNrZXRUeXBlKiBhZHZhbmNlSXRlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKU1NldEl0ZXJhdG9yKiBjcmVh
dGVXaXRoSW5pdGlhbFZhbHVlcyhWTSYsIFN0cnVjdHVyZSopOworCisgICAgQUxXQVlTX0lOTElO
RSBIYXNoTWFwQnVja2V0VHlwZSogYWR2YW5jZUl0ZXIoVk0mIHZtKQogICAgIHsKLSAgICAgICAg
SGFzaE1hcEJ1Y2tldFR5cGUqIHByZXYgPSBtX2l0ZXIuZ2V0KCk7Ci0gICAgICAgIGlmICghcHJl
dikKKyAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIHByZXYgPSBpdGVyYXRvcigpOworICAgICAg
ICBIYXNoTWFwQnVja2V0VHlwZSogc2VudGluZWwgPSBqc0Nhc3Q8SGFzaE1hcEJ1Y2tldFR5cGUq
Pih2bS5zZW50aW5lbFNldEJ1Y2tldCgpKTsKKyAgICAgICAgaWYgKHByZXYgPT0gc2VudGluZWwp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xv
YmFsT2JqZWN0KTsKLSAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IG1faXRlci0+
bmV4dCgpOworICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0ID0gcHJldi0+bmV4dCgp
OwogICAgICAgICB3aGlsZSAoYnVja2V0ICYmIGJ1Y2tldC0+ZGVsZXRlZCgpKQogICAgICAgICAg
ICAgYnVja2V0ID0gYnVja2V0LT5uZXh0KCk7CiAgICAgICAgIGlmICghYnVja2V0KSB7Ci0gICAg
ICAgICAgICBzZXRJdGVyYXRvcih2bSwgbnVsbHB0cik7CisgICAgICAgICAgICBzZXRJdGVyYXRv
cih2bSwgc2VudGluZWwpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
LSAgICAgICAgc2V0SXRlcmF0b3Iodm0sIGJ1Y2tldCk7IC8vIFdlIGtlZXAgbV9pdGVyIG9uIHRo
ZSBsYXN0IHZhbHVlIHNpbmNlIHRoZSBmaXJzdCB0aGluZyB3ZSBkbyBpbiB0aGlzIGZ1bmN0aW9u
IGlzIGNhbGwgbmV4dCgpLgorICAgICAgICBzZXRJdGVyYXRvcih2bSwgYnVja2V0KTsgLy8gV2Ug
a2VlcCBpdGVyYXRvciBvbiB0aGUgbGFzdCB2YWx1ZSBzaW5jZSB0aGUgZmlyc3QgdGhpbmcgd2Ug
ZG8gaW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsIG5leHQoKS4KICAgICAgICAgcmV0dXJuIGJ1Y2tl
dDsKICAgICB9CiAKICAgICBib29sIG5leHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSYgdmFsdWUpCiAgICAgewotICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogYnVja2V0
ID0gYWR2YW5jZUl0ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUq
IGJ1Y2tldCA9IGFkdmFuY2VJdGVyKGdldFZNKGdsb2JhbE9iamVjdCkpOwogICAgICAgICBpZiAo
IWJ1Y2tldCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAobV9raW5k
ID09IEl0ZXJhdGlvbktpbmQ6OlZhbHVlcyB8fCBtX2tpbmQgPT0gSXRlcmF0aW9uS2luZDo6S2V5
cykKKyAgICAgICAgc3dpdGNoIChraW5kKCkpIHsKKyAgICAgICAgY2FzZSBJdGVyYXRpb25LaW5k
OjpWYWx1ZXM6CisgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6S2V5czoKICAgICAgICAgICAg
IHZhbHVlID0gYnVja2V0LT5rZXkoKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6RW50cmllczoKICAgICAgICAgICAgIHZhbHVl
ID0gY3JlYXRlUGFpcihnbG9iYWxPYmplY3QsIGJ1Y2tldC0+a2V5KCksIGJ1Y2tldC0+a2V5KCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgSXRlcmF0aW9uS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9
Ci0gICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zZXQuZ2V0KCk7
IH0KKyAgICBJdGVyYXRpb25LaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJ
dGVyYXRpb25LaW5kPihpbnRlcm5hbEZpZWxkKEZpZWxkOjpLaW5kKS5nZXQoKS5hc1VJbnQzMkFz
QW55SW50KCkpOyB9CisgICAgSlNPYmplY3QqIGl0ZXJhdGVkT2JqZWN0KCkgY29uc3QgeyByZXR1
cm4ganNDYXN0PEpTT2JqZWN0Kj4oaW50ZXJuYWxGaWVsZChGaWVsZDo6SXRlcmF0ZWRPYmplY3Qp
LmdldCgpKTsgfQorICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBpdGVyYXRvcigpIGNvbnN0IHsgcmV0
dXJuIGpzQ2FzdDxIYXNoTWFwQnVja2V0VHlwZSo+KGludGVybmFsRmllbGQoRmllbGQ6OlNldEJ1
Y2tldCkuZ2V0KCkpOyB9CiAKIHByaXZhdGU6Ci0gICAgSlNTZXRJdGVyYXRvcihWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1NldCosIEl0ZXJhdGlvbktpbmQga2luZCkKKyAgICBKU1Nl
dEl0ZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQotICAgICAgICAsIG1fa2luZChraW5kKQogICAgIHsKICAgICB9CiAKICAg
ICB2b2lkIHNldEl0ZXJhdG9yKFZNJiB2bSwgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCkKICAg
ICB7Ci0gICAgICAgIG1faXRlci5zZXRNYXlCZU51bGwodm0sIHRoaXMsIGJ1Y2tldCk7IAorICAg
ICAgICBpbnRlcm5hbEZpZWxkKEZpZWxkOjpTZXRCdWNrZXQpLnNldCh2bSwgdGhpcywgYnVja2V0
KTsKICAgICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgSlNTZXQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgSlNTZXQqLCBJdGVyYXRpb25LaW5kKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBjcmVhdGVQYWlyKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwotCi0gICAgV3JpdGVCYXJyaWVyPEpTU2V0PiBtX3NldDsKLSAg
ICBXcml0ZUJhcnJpZXI8SGFzaE1hcEJ1Y2tldFR5cGU+IG1faXRlcjsKLSAgICBJdGVyYXRpb25L
aW5kIG1fa2luZDsKIH07CiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
SlNTZXRJdGVyYXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3Bw
CmluZGV4IGIwMmIzNDdkNmE1MDA0NTUzYjU5MmVjNjRiNGMxNDRlMzA4ZGQwY2YuLjZiM2RjOTY3
YzQyOWY5YjM3MzI4MDNmZjI1MDM2NWM2YTgyOTA0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmNwcApAQCAtMTAwLDYgKzEwMCw4IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBKU0M6OkpTVHlwZSB0eXBlKQogICAgIENBU0UoSlNHZW5lcmF0
b3JUeXBlKQogICAgIENBU0UoSlNBc3luY0dlbmVyYXRvclR5cGUpCiAgICAgQ0FTRShKU0FycmF5
SXRlcmF0b3JUeXBlKQorICAgIENBU0UoSlNNYXBJdGVyYXRvclR5cGUpCisgICAgQ0FTRShKU1Nl
dEl0ZXJhdG9yVHlwZSkKICAgICBDQVNFKEpTU3RyaW5nSXRlcmF0b3JUeXBlKQogICAgIENBU0Uo
SlNQcm9taXNlVHlwZSkKICAgICBDQVNFKEpTTWFwVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmgKaW5kZXggNDgzNmY5MWIwYmI0YjM2NGVmN2UxNGUzYzNlOWIxMmEzZjYx
MDFmMC4uYjdhYWMyNTYyY2VhZGQ3MjY2N2I1YWFhODhhMjIzMmVkYzE0NmZjOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKQEAgLTExMiw2ICsxMTIsOCBAQCBlbnVtIEpT
VHlwZSA6IHVpbnQ4X3QgewogICAgIEpTR2VuZXJhdG9yVHlwZSwKICAgICBKU0FzeW5jR2VuZXJh
dG9yVHlwZSwKICAgICBKU0FycmF5SXRlcmF0b3JUeXBlLAorICAgIEpTTWFwSXRlcmF0b3JUeXBl
LAorICAgIEpTU2V0SXRlcmF0b3JUeXBlLAogICAgIEpTU3RyaW5nSXRlcmF0b3JUeXBlLAogICAg
IEpTUHJvbWlzZVR5cGUsCiAgICAgSlNNYXBUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAppbmRl
eCAyOWExMTY3MGIyNWMxYjBlM2EzYzZmZDc4OWMwYjZjMTc4MGQwNmY4Li5mMmJmYjczNGQ2MGJi
ZmY4Zjk4OGVhNmZlMTk1OWQ4OGEwMzQyYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcApAQCAt
MzM1LDcgKzMzNSw3IEBAIHZvaWQgSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgSlNDX0JVSUxUSU5f
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJldmVyeSIsIHR5cGVkQXJyYXlQcm90b3R5cGVF
dmVyeUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04oImZpbHRlciIsIHR5cGVkQXJyYXlQcm90b3R5cGVGaWx0ZXJDb2RlR2VuZXJhdG9yLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlND
X0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJzb3J0IiwgdHlwZWRBcnJheVBy
b3RvdHlwZVNvcnRDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIHR5cGVkQXJyYXlQ
cm90b1ZpZXdGdW5jRW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIDAsIFR5cGVkQXJyYXlFbnRyaWVzSW50cmluc2ljKTsKKyAgICBKU0Nf
TkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgdHlwZWRBcnJheVByb3Rv
Vmlld0Z1bmNFbnRyaWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMCwgVHlwZWRBcnJheUVudHJpZXNJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJpbmNsdWRlcyIsIHR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jSW5jbHVkZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04oImZpbGwiLCB0eXBlZEFycmF5UHJvdG90eXBlRmlsbENvZGVHZW5lcmF0b3IsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0Nf
QlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImZpbmQiLCB0eXBlZEFycmF5UHJv
dG90eXBlRmluZENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEpTVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iagogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5mb3JFYWNoLCB0eXBlZEFycmF5UHJvdG90eXBlRm9yRWFjaENvZGVHZW5l
cmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiaW5kZXhPZiIs
IHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmpvaW4sIHR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jSm9pbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDEpOwotICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5rZXlzLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0tleXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCAwLCBUeXBlZEFycmF5S2V5c0ludHJpbnNpYyk7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmtleXNQdWJsaWNOYW1lKCksIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jS2V5cywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIFR5cGVkQXJy
YXlLZXlzSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTigibGFzdEluZGV4T2YiLCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAg
ICAgSlNDX05BVElWRV9JTlRSSU5TSUNfR0VUVEVSX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSwgVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYyk7CiAgICAg
SlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJtYXAiLCB0eXBlZEFycmF5
UHJvdG90eXBlTWFwQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqCiAgICAgR2V0dGVyU2V0dGVyKiB0b1N0cmluZ1RhZ0FjY2Vzc29yID0gR2V0dGVy
U2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdG9TdHJpbmdUYWdGdW5jdGlvbiwgbnVs
bHB0cik7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwgdG9TdHJpbmdUYWdBY2Nlc3Nv
ciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKIAotICAgIEpTRnVuY3Rpb24qIHZh
bHVlc0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZt
LnByb3BlcnR5TmFtZXMtPnZhbHVlcy5zdHJpbmcoKSwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNW
YWx1ZXMsIFR5cGVkQXJyYXlWYWx1ZXNJbnRyaW5zaWMpOworICAgIEpTRnVuY3Rpb24qIHZhbHVl
c0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKS5zdHJpbmcoKSwg
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNWYWx1ZXMsIFR5cGVkQXJyYXlWYWx1ZXNJbnRyaW5zaWMp
OwogCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKSwgdmFsdWVzRnVuY3Rpb24sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1i
b2wsIHZhbHVlc0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJv
dG90eXBlLmNwcAppbmRleCAzYmFlODdlYjU0NjlkZDY5YjQwYmY1ZDEzYmE0N2Q5MTA1M2QxNjYy
Li4wOTVmYmQ2YjNkOGNjODY0MTA3MTI5NjQ2MzVhNGU5ZDQ5YmQ1YThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiTG9va3VwLmgiCiAKICNpbmNsdWRlICJNYXBQcm90b3R5cGUubHV0LmgiCkBAIC00Myw4
ICs0NCw2IEBAIGNvbnN0IENsYXNzSW5mbyBNYXBQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1hcCIs
ICZCYXNlOjpzX2luZm8sICZtYXBQcm90b3R5cGVUYWJsCiAvKiBTb3VyY2UgZm9yIE1hcFByb3Rv
dHlwZS5sdXQuaAogQGJlZ2luIG1hcFByb3RvdHlwZVRhYmxlCiAgIGZvckVhY2ggICBKU0J1aWx0
aW4gIERvbnRFbnVtfEZ1bmN0aW9uIDAKLSAgdmFsdWVzICAgIEpTQnVpbHRpbiAgRG9udEVudW18
RnVuY3Rpb24gMAotICBrZXlzICAgICAgSlNCdWlsdGluICBEb250RW51bXxGdW5jdGlvbiAwCiBA
ZW5kCiAqLwogCkBAIC01Myw2ICs1Miw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1hcFByb3RvRnVuY0RlbGV0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNHZXQoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG1hcFByb3RvRnVuY0hhcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2V0KEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQ
cm90b0Z1bmNWYWx1ZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0tleXMoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFBy
b3RvRnVuY0VudHJpZXMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jU2l6ZShKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopOwogICAgIApAQCAtNjYsMTQgKzY4LDE2IEBAIHZvaWQgTWFwUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmdldCwgbWFwUHJvdG9GdW5jR2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSwgSlNNYXBHZXRJbnRyaW5zaWMpOwog
ICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5oYXMsIG1hcFByb3RvRnVuY0hhcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpTTWFwSGFzSW50cmluc2ljKTsKICAg
ICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+c2V0LCBtYXBQcm90b0Z1bmNTZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAyLCBKU01hcFNldEludHJpbnNpYyk7CisgICAg
SlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCksIG1hcFByb3RvRnVuY0tl
eXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAw
LCBKU01hcEtleXNJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1
ZXNQdWJsaWNOYW1lKCksIG1hcFByb3RvRnVuY1ZhbHVlcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIEpTTWFwVmFsdWVzSW50cmluc2ljKTsK
IAogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpLCBtYXBQcm90
b0Z1bmNHZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAxLCBKU01hcEdldEludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnNldFByaXZhdGVOYW1lKCksIG1hcFByb3RvRnVuY1NldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIsIEpTTWFwU2V0SW50cmluc2ljKTsKIAot
ICAgIEpTRnVuY3Rpb24qIGVudHJpZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIG1hcFByb3Rv
dHlwZUVudHJpZXNDb2RlR2VuZXJhdG9yKHZtKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0
aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmVudHJpZXNQdWJsaWNOYW1lKCkuc3RyaW5n
KCksIG1hcFByb3RvRnVuY0VudHJpZXMsIEpTTWFwRW50cmllc0ludHJpbnNpYyk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmVudHJpZXNQdWJsaWNOYW1lKCksIGVudHJpZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGVudHJpZXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdT
eW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIk1hcCJfcyksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9s
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHZtLnByb3BlcnR5TmFtZXMtPk1hcC5zdHJpbmcoKSks
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSk7CiAKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+c2l6ZSwgbWFwUHJvdG9GdW5jU2l6ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsKIApAQCAtMTQwLDYgKzE0NCwzMSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NldChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhp
c1ZhbHVlKTsKIH0KIAoraW5saW5lIEpTVmFsdWUgY3JlYXRlTWFwSXRlcmF0b3JPYmplY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEl0ZXJhdGlv
bktpbmQga2luZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOworICAgIEpTTWFwKiBtYXAg
PSBnZXRNYXAoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpOworICAgIGlmICghbWFwKQorICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gSlNNYXBJdGVyYXRvcjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIG1hcCwga2luZCk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jVmFsdWVzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY3JlYXRlTWFwSXRlcmF0b3JPYmplY3QoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIEl0ZXJhdGlvbktpbmQ6OlZhbHVlcykpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0tleXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjcmVhdGVNYXBJdGVyYXRvck9iamVjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgSXRlcmF0
aW9uS2luZDo6S2V5cykpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFBy
b3RvRnVuY0VudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVNYXBJdGVyYXRv
ck9iamVjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZDo6RW50cmllcykp
OworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1NpemUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAg
SlNNYXAqIG1hcCA9IGdldE1hcChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5k
ZXggNzE3NTlkNGEyMjBkNTQ1MGJjMGUzMzA0MTgzNDhjYmNmN2ViNGM0Zi4uMDBiZmFiZThlNzBh
MWM0NTczNDUxNDNkMTdmYjExYTQ2MmY3YTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
SXRlcmF0b3JPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTU2V0LmgiCisjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxvb2t1cC5o
IgogCiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmx1dC5oIgpAQCAtNDMsNyArNDQsNiBAQCBjb25z
dCBDbGFzc0luZm8gU2V0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJTZXQiLCAmQmFzZTo6c19pbmZv
LCAmc2V0UHJvdG90eXBlVGFibAogLyogU291cmNlIGZvciBTZXRJdGVyYXRvclByb3RvdHlwZS5s
dXQuaAogQGJlZ2luIHNldFByb3RvdHlwZVRhYmxlCiAgIGZvckVhY2ggICBKU0J1aWx0aW4gIERv
bnRFbnVtfEZ1bmN0aW9uIDAKLSAgZW50cmllcyAgIEpTQnVpbHRpbiAgRG9udEVudW18RnVuY3Rp
b24gMAogQGVuZAogKi8KIApAQCAtNTEsNyArNTEsOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNBZGQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQ2xlYXIo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHNldFByb3RvRnVuY0RlbGV0ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Owogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jSGFzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Ci0KK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHNldFByb3RvRnVuY1ZhbHVlcyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jRW50cmll
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNTaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CiAKQEAgLTY0LDE0ICs2NSwxNSBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmNsZWFyLCBzZXRQ
cm90b0Z1bmNDbGVhciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmRlbGV0ZUtleXdvcmQsIHNldFByb3RvRnVuY0RlbGV0ZSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAg
IEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5oYXMsIHNldFByb3RvRnVuY0hhcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpTU2V0SGFzSW50cmluc2ljKTsKKyAgICBK
U0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50cmllc1B1YmxpY05hbWUoKSwgc2V0UHJvdG9GdW5j
RW50cmllcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIDAsIEpTU2V0RW50cmllc0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmhhc1ByaXZhdGVOYW1lKCksIHNldFByb3RvRnVuY0hhcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpTU2V0SGFzSW50cmluc2ljKTsK
ICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYWRkUHJpdmF0ZU5hbWUoKSwgc2V0UHJvdG9G
dW5jQWRkLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgMSwgSlNTZXRBZGRJbnRyaW5zaWMpOwogCi0gICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBzZXRQcm90b3R5cGVWYWx1ZXNDb2RlR2VuZXJhdG9yKHZtKSwg
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU0Z1bmN0aW9uKiB2YWx1ZXMgPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
dmFsdWVzUHVibGljTmFtZSgpLnN0cmluZygpLCBzZXRQcm90b0Z1bmNWYWx1ZXMsIEpTU2V0VmFs
dWVzSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpLCB2YWx1ZXMsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkua2V5c1B1YmxpY05hbWUoKSwgdmFsdWVzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCB2YWx1ZXMsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1i
b2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlNldCJfcyksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlNl
dFB1YmxpY05hbWUoKS5zdHJpbmcoKSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAKICAgICBKU0NfTkFUSVZFX0dFVFRFUl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+c2l6ZSwgc2V0UHJvdG9GdW5jU2l6ZSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29y
KTsKIApAQCAtMTM3LDQgKzEzOSwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNl
dFByb3RvRnVuY1NpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc2V0LT5zaXplKCkpKTsKIH0KIAoraW5saW5l
IEpTVmFsdWUgY3JlYXRlU2V0SXRlcmF0b3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEl0ZXJhdGlvbktpbmQga2luZCkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOworICAgIEpTU2V0KiBzZXQgPSBnZXRTZXQoZ2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUpOworICAgIGlmICghc2V0KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICByZXR1cm4gSlNTZXRJdGVyYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnNl
dEl0ZXJhdG9yU3RydWN0dXJlKCksIHNldCwga2luZCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jVmFsdWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y3JlYXRlU2V0SXRlcmF0b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIEl0ZXJhdGlv
bktpbmQ6OlZhbHVlcykpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFBy
b3RvRnVuY0VudHJpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVTZXRJdGVyYXRv
ck9iamVjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgSXRlcmF0aW9uS2luZDo6RW50cmllcykp
OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNjllNTJlYTY2
N2MyNTQyOWJlMDk2NWZiNDIxZDliODhjOTcwMjZkZS4uYjAyMDA0OTFhODllODcxZTg4NmRmZjBk
NTA0ZmNjOWVjNDJiZmQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAt
MTU0OSwyMCArMTU0OSw2IEBAIERZTkFNSUNfU1BBQ0VfQU5EX1NFVF9ERUZJTkVfTUVNQkVSX1NM
T1cobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSwgZGVzdHJ1Y3RpCiAKICN1bmRlZiBEWU5B
TUlDX1NQQUNFX0FORF9TRVRfREVGSU5FX01FTUJFUl9TTE9XCiAKLVN0cnVjdHVyZSogVk06OnNl
dEl0ZXJhdG9yU3RydWN0dXJlU2xvdygpCi17Ci0gICAgQVNTRVJUKCFtX3NldEl0ZXJhdG9yU3Ry
dWN0dXJlKTsKLSAgICBtX3NldEl0ZXJhdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNTZXRJdGVy
YXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHJldHVybiBt
X3NldEl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOwotfQotCi1TdHJ1Y3R1cmUqIFZNOjptYXBJdGVy
YXRvclN0cnVjdHVyZVNsb3coKQotewotICAgIEFTU0VSVCghbV9tYXBJdGVyYXRvclN0cnVjdHVy
ZSk7Ci0gICAgbV9tYXBJdGVyYXRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTTWFwSXRlcmF0b3I6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICByZXR1cm4gbV9tYXBJ
dGVyYXRvclN0cnVjdHVyZS5nZXQoKTsKLX0KLQogSlNDZWxsKiBWTTo6c2VudGluZWxTZXRCdWNr
ZXRTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fc2VudGluZWxTZXRCdWNrZXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggOWU5OGQ1M2M1M2E0ZjdmZmRhNGYwNmVkYWZkNzc5MzUy
OTQ0OWIzOC4uZGI0MWYwYmQwMmExYjA2OWI0YjMwNTk5NTBhMGExNzJiNDk2N2FmYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC02OTgsOSArNjk4LDYgQEAgY2xhc3MgVk0gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5v
ZGU8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBiaWdJbnRTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVN0cnVjdHVyZTsKIAotICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IG1fc2V0SXRlcmF0b3JTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0
cnVjdHVyZT4gbV9tYXBJdGVyYXRvclN0cnVjdHVyZTsKLQogICAgIFN0cm9uZzxKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3I+IG1fZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwogCiAgICAgU3Ry
b25nPEpTQ2VsbD4gbV9zZW50aW5lbFNldEJ1Y2tldDsKQEAgLTczMywyMCArNzMwLDYgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlu
a2VkTGlzdE5vZGU8Vk0+IHsKIAogICAgIFN0cm9uZzxKU0JpZ0ludD4gYmlnSW50Q29uc3RhbnRP
bmU7CiAKLSAgICBTdHJ1Y3R1cmUqIHNldEl0ZXJhdG9yU3RydWN0dXJlKCkKLSAgICB7Ci0gICAg
ICAgIGlmIChMSUtFTFkobV9zZXRJdGVyYXRvclN0cnVjdHVyZSkpCi0gICAgICAgICAgICByZXR1
cm4gbV9zZXRJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAgcmV0dXJuIHNldEl0ZXJh
dG9yU3RydWN0dXJlU2xvdygpOwotICAgIH0KLQotICAgIFN0cnVjdHVyZSogbWFwSXRlcmF0b3JT
dHJ1Y3R1cmUoKQotICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShtX21hcEl0ZXJhdG9yU3RydWN0
dXJlKSkKLSAgICAgICAgICAgIHJldHVybiBtX21hcEl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOwot
ICAgICAgICByZXR1cm4gbWFwSXRlcmF0b3JTdHJ1Y3R1cmVTbG93KCk7Ci0gICAgfQotCiAgICAg
SlNDZWxsKiBzZW50aW5lbFNldEJ1Y2tldCgpCiAgICAgewogICAgICAgICBpZiAoTElLRUxZKG1f
c2VudGluZWxTZXRCdWNrZXQpKQpAQCAtMTEyNywxMCArMTExMCw4IEBAIGNsYXNzIFZNIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2Rl
PFZNPiB7CiAgICAgc3RhdGljIFZNKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgIHZv
aWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVy
ZSogc2V0SXRlcmF0b3JTdHJ1Y3R1cmVTbG93KCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgU3Ry
dWN0dXJlKiBtYXBJdGVyYXRvclN0cnVjdHVyZVNsb3coKTsKLSAgICBKU0NlbGwqIHNlbnRpbmVs
U2V0QnVja2V0U2xvdygpOwotICAgIEpTQ2VsbCogc2VudGluZWxNYXBCdWNrZXRTbG93KCk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNDZWxsKiBzZW50aW5lbFNldEJ1Y2tldFNsb3coKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU0NlbGwqIHNlbnRpbmVsTWFwQnVja2V0U2xvdygpOwogICAg
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yU2xv
dygpOwogCiAgICAgdm9pZCB1cGRhdGVTdGFja0xpbWl0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggODRjMTY0
ZGEzZTIwYTVmMjczYzgxMWY3OGEzODc3YmI3MjYzOWMwYy4uMTJjNzZjZjA3MjA4YzQ0OThhMjI3
MjA2MmNjNGI0ODA2N2ZlNjAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xNjk5LDcgKzE2OTksNyBAQCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGlu
KQogICAgICAgICAgICAgICAgIEpTTWFwKiBpbk1hcCA9IGpzQ2FzdDxKU01hcCo+KGluVmFsdWUp
OwogICAgICAgICAgICAgICAgIGlmICghc3RhcnRNYXAoaW5NYXApKQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBKU01hcEl0ZXJhdG9yKiBpdGVyYXRvciA9IEpT
TWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwgdm0ubWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgaW5NYXAs
IEl0ZXJhdGlvbktpbmQ6OkVudHJpZXMpOworICAgICAgICAgICAgICAgIEpTTWFwSXRlcmF0b3Iq
IGl0ZXJhdG9yID0gSlNNYXBJdGVyYXRvcjo6Y3JlYXRlKHZtLCBtX2xleGljYWxHbG9iYWxPYmpl
Y3QtPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIGluTWFwLCBJdGVyYXRpb25LaW5kOjpFbnRyaWVz
KTsKICAgICAgICAgICAgICAgICBtX2djQnVmZmVyLmFwcGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3co
aW5NYXApOwogICAgICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kV2l0aENyYXNoT25PdmVy
ZmxvdyhpdGVyYXRvcik7CiAgICAgICAgICAgICAgICAgbWFwSXRlcmF0b3JTdGFjay5hcHBlbmQo
aXRlcmF0b3IpOwpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgU2VyaWFsaXphdGlvblJldHVybkNvZGUg
Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoSlNWYWx1ZSBpbikKICAgICAgICAgICAgICAgICBK
U1NldCogaW5TZXQgPSBqc0Nhc3Q8SlNTZXQqPihpblZhbHVlKTsKICAgICAgICAgICAgICAgICBp
ZiAoIXN0YXJ0U2V0KGluU2V0KSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgSlNTZXRJdGVyYXRvciogaXRlcmF0b3IgPSBKU1NldEl0ZXJhdG9yOjpjcmVhdGUo
dm0sIHZtLnNldEl0ZXJhdG9yU3RydWN0dXJlKCksIGluU2V0LCBJdGVyYXRpb25LaW5kOjpLZXlz
KTsKKyAgICAgICAgICAgICAgICBKU1NldEl0ZXJhdG9yKiBpdGVyYXRvciA9IEpTU2V0SXRlcmF0
b3I6OmNyZWF0ZSh2bSwgbV9sZXhpY2FsR2xvYmFsT2JqZWN0LT5zZXRJdGVyYXRvclN0cnVjdHVy
ZSgpLCBpblNldCwgSXRlcmF0aW9uS2luZDo6S2V5cyk7CiAgICAgICAgICAgICAgICAgbV9nY0J1
ZmZlci5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KGluU2V0KTsKICAgICAgICAgICAgICAgICBt
X2djQnVmZmVyLmFwcGVuZFdpdGhDcmFzaE9uT3ZlcmZsb3coaXRlcmF0b3IpOwogICAgICAgICAg
ICAgICAgIHNldEl0ZXJhdG9yU3RhY2suYXBwZW5kKGl0ZXJhdG9yKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjE4ZmQ2ZWI1NTk4MDVk
OGM5NTk0ODA1MGU5NmYyNTIyMTZjNmZhOS4uOTI1ZTdhNWJlZGVlZWJjMmExMDI2OWFkNmNiNmE4
MDFkZWUwZmVjMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wNC0wNiAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBKU01hcEl0ZXJhdG9y
L0pTU2V0SXRlcmF0b3Igd2l0aCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAwMjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9tYXAtaXRlcmF0
aW9uLW9hcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKiBzdHJlc3MvbWFwLWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwtZGZnLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHRlc3QyKToKKyAgICAgICAgKHRl
c3QzKToKKyAgICAgICAgKiBzdHJlc3MvbWFwLWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoaS5zaG91bGRUaHJvdyk6Cisg
ICAgICAgICh0ZXN0Mik6CisgICAgICAgICh0ZXN0Myk6CisgICAgICAgICogc3RyZXNzL3NldC1p
dGVyYXRpb24tb2FzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKiBz
dHJlc3Mvc2V0LWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwtZGZnLmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZFRocm93KToKKyAgICAgICAgKHNldCBzaG91bGRUaHJvdyk6CisgICAgICAgICogc3Ry
ZXNzL3NldC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZFRocm93KToKKyAgICAgICAgKGkuc2hvdWxkVGhyb3cpOgorICAgICAgICAodGVzdDIpOgorICAg
ICAgICAodGVzdDMpOgorCiAyMDIwLTA0LTA1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KIAogICAgICAgICBPY3RhbCBlc2NhcGVzIHNob3VsZCBiZSBtYXggMyBkaWdp
dHMgYW5kIHN5bnRheCBlcnJvcnMgaW4gVW5pY29kZSBwYXR0ZXJucwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvbWFwLWl0ZXJhdGlvbi1vYXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9tYXAtaXRl
cmF0aW9uLW9hcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjYxYzRmNGQ0NDhhZjUyZjQ5NjkwYzMwMjFhYzZk
N2FkNWZmYTI0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvbWFwLWl0ZXJhdGlv
bi1vYXMuanMKQEAgLTAsMCArMSwyMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKwordmFyIG1hcCA9IG5ldyBNYXA7
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKQorICAgIG1hcC5zZXQoaSwgaSk7CisKK2Z1
bmN0aW9uIHRlc3QobWFwKSB7CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgZm9yIChsZXQgW2Es
IGJdIG9mIG1hcCkgeworICAgICAgICByZXN1bHQgKz0gYTsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytp
KQorICAgIHNob3VsZEJlKHRlc3QobWFwKSwgNDk1MCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9t
YXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1kZmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjIwMDY2N2M0MmJi
OGUzYzgxOWJhMjE3MDI3ZDdiODMzYTMyODkxYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL21hcC1pdGVyYXRvci1jcmVhdGlvbi1mYWlsLWRmZy5qcwpAQCAtMCwwICsxLDU0IEBA
CitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJy
b3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAg
ICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1
ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9y
KSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjog
JHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiB0ZXN0MShtYXApCit7CisgICAgTWFw
LnByb3RvdHlwZS52YWx1ZXMuY2FsbChtYXApOworfQorbm9JbmxpbmUodGVzdDEpOworCit2YXIg
bWFwID0gbmV3IE1hcCgpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICB0ZXN0
MShtYXApOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgdGVzdDEoe30pOworfSwgYFR5cGVF
cnJvcjogTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3RgKTsKKworZnVuY3Rp
b24gdGVzdDIobWFwKQoreworICAgIE1hcC5wcm90b3R5cGUua2V5cy5jYWxsKG1hcCk7Cit9Citu
b0lubGluZSh0ZXN0Mik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgdGVz
dDIobWFwKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIHRlc3QyKHt9KTsKK30sIGBUeXBl
RXJyb3I6IE1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2JqZWN0YCk7CisKK2Z1bmN0
aW9uIHRlc3QzKG1hcCkKK3sKKyAgICBNYXAucHJvdG90eXBlLmVudHJpZXMuY2FsbChtYXApOwor
fQorbm9JbmxpbmUodGVzdDMpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAg
IHRlc3QzKG1hcCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICB0ZXN0Myh7fSk7Cit9LCBg
VHlwZUVycm9yOiBNYXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVjdGApOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbWFwLWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwuanMgYi9K
U1Rlc3RzL3N0cmVzcy9tYXAtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjhlM2RmNTRmNmUwODI2ODg1ZTNkNGJlMTNmMjczMDI0ZTYzMWQ4Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvbWFwLWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwuanMKQEAgLTAsMCAr
MSw1MCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAg
dmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkg
eworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93
biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93
bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmlu
ZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQg
ZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gdGVzdDEoKQoreworICAg
IE1hcC5wcm90b3R5cGUudmFsdWVzLmNhbGwoe30pOworfQorbm9JbmxpbmUodGVzdDEpOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gewor
ICAgICAgICB0ZXN0MSgpOworICAgIH0sIGBUeXBlRXJyb3I6IE1hcCBvcGVyYXRpb24gY2FsbGVk
IG9uIG5vbi1NYXAgb2JqZWN0YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgICBNYXAu
cHJvdG90eXBlLmtleXMuY2FsbCh7fSk7Cit9Citub0lubGluZSh0ZXN0Mik7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAg
IHRlc3QyKCk7CisgICAgfSwgYFR5cGVFcnJvcjogTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9u
LU1hcCBvYmplY3RgKTsKK30KKworZnVuY3Rpb24gdGVzdDMoKQoreworICAgIE1hcC5wcm90b3R5
cGUuZW50cmllcy5jYWxsKHt9KTsKK30KK25vSW5saW5lKHRlc3QzKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTM7ICsraSkgeworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgdGVz
dDMoKTsKKyAgICB9LCBgVHlwZUVycm9yOiBNYXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFw
IG9iamVjdGApOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0ZXJhdGlvbi1v
YXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0aW9uLW9hcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
ODI4YjA1ZjJiYTcwNjgwNjY1M2E0NDAyNzY2NDg0YjQzOThkOTlhCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0ZXJhdGlvbi1vYXMuanMKQEAgLTAsMCArMSwyMSBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKKwordmFyIHNldCA9IG5ldyBTZXQ7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsg
KytpKQorICAgIHNldC5hZGQoaSk7CisKK2Z1bmN0aW9uIHRlc3Qoc2V0KSB7CisgICAgdmFyIHJl
c3VsdCA9IDA7CisgICAgZm9yIChsZXQgYSBvZiBzZXQpIHsKKyAgICAgICAgcmVzdWx0ICs9IGE7
CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0KHNldCksIDQ5NTApOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwtZGZn
LmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0ZXJhdG9yLWNyZWF0aW9uLWZhaWwtZGZnLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNkNzUzZDQ2ODQ2YjFhZDQ4MGY1NjlhNzA4ODE0ZTY1NTJkYmExMTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zZXQtaXRlcmF0b3ItY3JlYXRpb24tZmFpbC1k
ZmcuanMKQEAgLTAsMCArMSw1NCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JN
ZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAg
aWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7
CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24g
dGVzdDEoc2V0KQoreworICAgIFNldC5wcm90b3R5cGUudmFsdWVzLmNhbGwoc2V0KTsKK30KK25v
SW5saW5lKHRlc3QxKTsKKwordmFyIHNldCA9IG5ldyBTZXQoKTsKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMWU2OyArK2kpCisgICAgdGVzdDEoc2V0KTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAg
IHRlc3QxKHt9KTsKK30sIGBUeXBlRXJyb3I6IFNldCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1T
ZXQgb2JqZWN0YCk7CisKK2Z1bmN0aW9uIHRlc3QyKHNldCkKK3sKKyAgICBTZXQucHJvdG90eXBl
LmtleXMuY2FsbChzZXQpOworfQorbm9JbmxpbmUodGVzdDIpOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDFlNjsgKytpKQorICAgIHRlc3QyKHNldCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAg
ICB0ZXN0Mih7fSk7Cit9LCBgVHlwZUVycm9yOiBTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24t
U2V0IG9iamVjdGApOworCitmdW5jdGlvbiB0ZXN0MyhzZXQpCit7CisgICAgU2V0LnByb3RvdHlw
ZS5lbnRyaWVzLmNhbGwoc2V0KTsKK30KK25vSW5saW5lKHRlc3QzKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTM7ICsraSkKKyAgICB0ZXN0MyhzZXQpOworCitzaG91bGRUaHJvdygoKSA9PiB7
CisgICAgdGVzdDMoe30pOworfSwgYFR5cGVFcnJvcjogU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24g
bm9uLVNldCBvYmplY3RgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NldC1pdGVyYXRv
ci1jcmVhdGlvbi1mYWlsLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2V0LWl0ZXJhdG9yLWNyZWF0aW9u
LWZhaWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFhYTk5NzE5ODExYzNlMzVlOTU2ZDNiMGUyYjk3YmViZjI3
YTFiOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3NldC1pdGVyYXRvci1jcmVh
dGlvbi1mYWlsLmpzCkBAIC0wLDAgKzEsNTAgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMs
IGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBl
cnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAg
fQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRo
cm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3QxKCkKK3sKKyAgICBTZXQucHJvdG90eXBlLnZhbHVlcy5jYWxsKHt9KTsKK30K
K25vSW5saW5lKHRlc3QxKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAg
IHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgdGVzdDEoKTsKKyAgICB9LCBgVHlwZUVycm9y
OiBTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tU2V0IG9iamVjdGApOworfQorCitmdW5jdGlv
biB0ZXN0MigpCit7CisgICAgU2V0LnByb3RvdHlwZS5rZXlzLmNhbGwoe30pOworfQorbm9Jbmxp
bmUodGVzdDIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgc2hvdWxk
VGhyb3coKCkgPT4geworICAgICAgICB0ZXN0MigpOworICAgIH0sIGBUeXBlRXJyb3I6IFNldCBv
cGVyYXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qz
KCkKK3sKKyAgICBTZXQucHJvdG90eXBlLmVudHJpZXMuY2FsbCh7fSk7Cit9Citub0lubGluZSh0
ZXN0Myk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICBzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgICAgIHRlc3QzKCk7CisgICAgfSwgYFR5cGVFcnJvcjogU2V0IG9wZXJh
dGlvbiBjYWxsZWQgb24gbm9uLVNldCBvYmplY3RgKTsKK30K
</data>
<flag name="review"
          id="410972"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>