<?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>6185</bug_id>
          
          <creation_ts>2005-12-21 13:17:12 -0800</creation_ts>
          <short_desc>CSS1: character styled with :first-letter is not selectable</short_desc>
          <delta_ts>2026-04-15 07:16:13 -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>CSS</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>43830</dependson>
          <blocked>58911</blocked>
    
    <blocked>311439</blocked>
    
    <blocked>26443</blocked>
    
    <blocked>311479</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joost de Valk (AlthA)">joost</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>ap</cc>
    
    <cc>emacemac7</cc>
    
    <cc>enrica</cc>
    
    <cc>graeck</cc>
    
    <cc>ian</cc>
    
    <cc>joone</cc>
    
    <cc>joshua.lock</cc>
    
    <cc>julian</cc>
    
    <cc>mickael.menu</cc>
    
    <cc>mitz</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>mrowe</cc>
    
    <cc>pvinis</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>26319</commentid>
    <comment_count>0</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-12-21 13:17:12 -0800</bug_when>
    <thetext>When a first letter is styled through the :first-letter, it is not selectable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26320</commentid>
    <comment_count>1</comment_count>
      <attachid>5209</attachid>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-12-21 13:17:39 -0800</bug_when>
    <thetext>Created attachment 5209
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26327</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-21 15:47:33 -0800</bug_when>
    <thetext>This is a known issue that selections can not include generated text, which I assume the first letter is in 
this instance.  The reason being that selections in WebCore are represented by DOMRange objects, and 
thus can not include anonymous render tree content.  It&apos;s possible there is already a dup in bugzilla, there 
are also dups in Radar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23653</commentid>
    <comment_count>3</comment_count>
    <who name="Julian Bennett Holmes">julian</who>
    <bug_when>2007-02-12 18:32:35 -0800</bug_when>
    <thetext>I&apos;m pretty sure anything styled with first:letter isn&apos;t generated content:
http://www.w3.org/TR/css3-content/

Generated content is stuff like &quot;content: footnote;&quot; and even list numbers: &quot;li { display: list-item; list-style: decimal; }&quot;

But stuff that is written into the HTML and then styled with CSS isn&apos;t generated content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67300</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2008-01-15 08:36:12 -0800</bug_when>
    <thetext>*** Bug 16875 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67302</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-01-15 08:41:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/5688237&gt;
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648721</commentid>
    <comment_count>6</comment_count>
      <attachid>147471</attachid>
    <who name="Joshua Lock (joshuagl)">joshua.lock</who>
    <bug_when>2012-06-13 20:11:04 -0700</bug_when>
    <thetext>Created attachment 147471
Demonstrate more details

I have begun trying to understand this issue some and have discovered several additional details:

* If the selection begins with a :first-letter styled element the styled letter is not highlighted as selected (but is copied to the clipboard, more below). 
* However any following :first-letter styled elements are highlighted as selected.
* If the selection does not begin with a :first-letter styled element all selected contents are highlighted.
* The clipboard, once the selection is copied, includes the entire selection (rather than simply what is highlighted).
* But the length of the selection, when testing the extentOffset property of the selection object, does not match what I&apos;d expect.

The attachment demonstrates each of the points above (except demonstrating pasting the copied selection).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648722</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Lock (joshuagl)">joshua.lock</who>
    <bug_when>2012-06-13 20:12:38 -0700</bug_when>
    <thetext>I intend to start looking into fixing this bug next week so any pointers to relevant parts of WebCore for someone new to WebKit would be appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980349</commentid>
    <comment_count>8</comment_count>
    <who name="GregR">graeck</who>
    <bug_when>2014-02-13 10:18:25 -0800</bug_when>
    <thetext>*** Bug 128705 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980353</commentid>
    <comment_count>9</comment_count>
    <who name="GregR">graeck</who>
    <bug_when>2014-02-13 10:20:58 -0800</bug_when>
    <thetext>Demo of issue: http://jsfiddle.net/P3TLx/6/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134528</commentid>
    <comment_count>10</comment_count>
    <who name="pavlos">pvinis</who>
    <bug_when>2015-10-19 03:03:34 -0700</bug_when>
    <thetext>any work happening about all the contenteditable/first-letter issues?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197104</commentid>
    <comment_count>11</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2026-04-05 15:21:38 -0700</bug_when>
    <thetext>*** Bug 311437 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197105</commentid>
    <comment_count>12</comment_count>
      <attachid>478931</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-04-05 15:24:59 -0700</bug_when>
    <thetext>Created attachment 478931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197146</commentid>
    <comment_count>13</comment_count>
      <attachid>478932</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-04-05 19:48:01 -0700</bug_when>
    <thetext>Created attachment 478932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2197352</commentid>
    <comment_count>14</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2026-04-06 13:30:54 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/62142</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2198907</commentid>
    <comment_count>15</comment_count>
      <attachid>478997</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-04-10 12:26:51 -0700</bug_when>
    <thetext>Created attachment 478997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2200644</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-04-15 07:16:10 -0700</bug_when>
    <thetext>Committed 311287@main (1f01e406b70e): &lt;https://commits.webkit.org/311287@main&gt;

Reviewed commits have been landed. Closing PR #62142 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5209</attachid>
            <date>2005-12-21 13:17:39 -0800</date>
            <delta_ts>2005-12-21 13:17:39 -0800</delta_ts>
            <desc>Testcase</desc>
            <filename>first-letter-unselectable.html</filename>
            <type>text/html</type>
            <size>578</size>
            <attacher name="Joost de Valk (AlthA)">joost</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjEvL0VOIiAiaHR0cDov
L3d3dy53My5vcmcvVFIveGh0bWwxMS9EVEQveGh0bWwxMS5kdGQiPgo8aHRtbCB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CiA8aGVhZD4KICA8dGl0bGU+Q1NTIDIuMSBUZXN0
IFN1aXRlOiBUZXN0aW5nIGZpcnN0IGxldHRlciBzdHlsZXM8L3RpdGxlPgogIDxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvLi4uIy4uLiIvPgogIDxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgIGEKewoJY29sb3I6IGJsdWU7Cn0KCnA6Zmlyc3QtbGV0dGVy
CnsKCWZvbnQtd2VpZ2h0OiBib2xkOwp9CiAgPC9zdHlsZT4KIDwvaGVhZD4KIDxib2R5PgogIDxw
PjxhIGhyZWY9InRlc3QuaHRtbCI+Rmlyc3Q8L2E+IGxldHRlciBzaG91bGQgYmUgYm9sZCBhbmQg
Ymx1ZTwvcD4KCTxwPkhlcmUgdGhlIGZpcnN0IGxldHRlciBzaG91bGQgYmUgYm9sZCBhbmQgYmxh
Y2ssIGJ1dCB3aXRoIFNhZmFyaSBidWlsZCA0MTYuMTMgaXQgaXMgYmx1ZS48L3A+CiA8L2JvZHk+
CjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>147471</attachid>
            <date>2012-06-13 20:11:04 -0700</date>
            <delta_ts>2012-06-13 20:11:04 -0700</delta_ts>
            <desc>Demonstrate more details</desc>
            <filename>first-letter.html</filename>
            <type>text/html</type>
            <size>2055</size>
            <attacher name="Joshua Lock (joshuagl)">joshua.lock</attacher>
            
              <data encoding="base64">PGRvY3R5cGUgaHRtbD4NCjxodG1sPg0KCTxoZWFkPg0KCQk8dGl0bGU+OmZpcnN0LWxldHRlciBw
c2V1ZG8gc2VsZWN0b3IgLSBXZWJLaXQgQnVnICM2MTg1PC90aXRsZT4NCgkJPHN0eWxlIHR5cGU9
InRleHQvY3NzIj4NCgkJcDpmaXJzdC1sZXR0ZXIgDQoJCXsNCgkJCWZvbnQtc2l6ZTogeHgtbGFy
Z2U7DQoJCQljb2xvcjogcmVkOw0KCQl9DQoJCTwvc3R5bGU+DQoJCTxzY3JpcHQ+DQoJCWZ1bmN0
aW9uIHNlbGVjdGVsZW1lbnQoaWQpDQoJCXsNCgkJCXZhciBkID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoaWQpOw0KCQkJZC5mb2N1cygpOw0KCQkJZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ3NlbGVj
dEFsbCcpOw0KCQl9DQoNCgkJZnVuY3Rpb24gc2VsZWN0d2l0aG91dCgpDQoJCXsNCgkJCXNlbGVj
dGVsZW1lbnQoImJhciIpOw0KCQl9DQoNCgkJZnVuY3Rpb24gY29tcGFyZWV4dGVudG9mZnNldCgp
DQoJCXsNCgkJCXNlbGVjdGVsZW1lbnQoImZvbyIpOw0KDQoJCQl2YXIgc2VsID0gZG9jdW1lbnQu
Z2V0U2VsZWN0aW9uKCk7DQoJCQl2YXIgcmVwb3J0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKTsNCgkJCXJlcG9ydC5pbm5lckhUTUwgPSAiRXhwZWN0ZWQgc2VsZWN0aW9uIGxl
bmd0aCBvZiAxNjIsIGdvdCAiICsgc2VsLmV4dGVudE9mZnNldCArICIuIjsNCgkJfQ0KDQoJCWZ1
bmN0aW9uIHNlbGVjdHdpdGgoKQ0KCQl7DQoJCQlzZWxlY3RlbGVtZW50KCJiYXoiKTsNCgkJfQ0K
CQk8L3NjcmlwdD4NCgk8L2hlYWQ+DQoJPGJvZHk+DQoJCTxoMT5UZXN0aW5nIENTUyA6Zmlyc3Qt
bGV0dGVyIC0gPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYxODUiPldlYktpdCBCdWcgIzYxODU8L2E+LjwvaDE+DQoJCTxkaXYgaWQ9ImJheiIgY29udGVu
dGVkaXRhYmxlPSJ0cnVlIj4NCgkJPHA+SWYgdGhlIHNlbGVjdGlvbiBiZWdpbnMgd2l0aCBhIDpm
aXJzdC1sZXR0ZXIgc3R5bGVkIGVsZW1lbnQgdGhlIHN0eWxlZCBsZXR0ZXIgaXMgbm90IGhpZ2hs
aWdodGVkIGFzIHNlbGVjdGVkIChidXQgaXMgY29waWVkIHRvIHRoZSBjbGlwYm9hcmQsIG1vcmUg
YmVsb3cpLjwvcD4NCgkJPHA+SG93ZXZlciBhbnkgZm9sbG93aW5nIDpmaXJzdC1sZXR0ZXIgc3R5
bGVkIGVsZW1lbnRzIGFyZSBoaWdobGlnaHRlZCBhcyBzZWxlY3RlZC48L3A+DQoJCTxwPklmIHRo
ZSBzZWxlY3Rpb24gZG9lcyBub3QgYmVnaW4gd2l0aCBhIDpmaXJzdC1sZXR0ZXIgc3R5bGVkIGVs
ZW1lbnQgYWxsIHNlbGVjdGVkIGNvbnRlbnRzIGFyZSBoaWdobGlnaHRlZC48L3A+DQoJCTwvZGl2
Pg0KCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0ic2VsZWN0d2l0aCgpOyI+U2VsZWN0
IHN0YXJ0aW5nIHdpdGggOmZpcnN0LXNlbGVjdG9yIGZpcnN0PC9idXR0b24+DQoJCTxidXR0b24g
dHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJzZWxlY3R3aXRob3V0KCk7Ij5TZWxlY3Qgd2l0aG91dCA6
Zmlyc3Qtc2VsZWN0b3IgZmlyc3Q8L2J1dHRvbj4NCgkJPGRpdiBpZD0iYmFyIiBjb250ZW50ZWRp
dGFibGU9InRydWUiPg0KCQk8aDI+RnVydGhlcm1vcmU8L2gyPg0KCQk8cD5UaGUgY2xpcGJvYXJk
LCBvbmNlIHRoZSBzZWxlY3Rpb24gaXMgY29waWVkLCBpbmNsdWRlcyB0aGUgZW50aXJlIHNlbGVj
dGlvbiAocmF0aGVyIHRoYW4gc2ltcGx5IHdoYXQgaXMgaGlnaGxpZ2h0ZWQpLjwvcD4NCgkJPC9k
aXY+DQoNCgkJPHAgaWQ9ImZvbyIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5CdXQgdGhlIGxlbmd0
aCBvZiB0aGUgc2VsZWN0aW9uLCB3aGVuIHRlc3RpbmcgdGhlIGV4dGVudE9mZnNldCBwcm9wZXJ0
eSBvZiB0aGUgc2VsZWN0aW9uIG9iamVjdCwgZG9lcyBub3QgbWF0Y2ggd2hhdCBJJ2QgZXhwZWN0
LiBUaGlzIHNlbnRlbmNlIGhhcyAxNjIgY2hhcmFjdGVycy48L3A+DQoJCTxidXR0b24gdHlwZT0i
YnV0dG9uIiBvbmNsaWNrPSJjb21wYXJlZXh0ZW50b2Zmc2V0KCk7Ij5Db21wYXJlIGV4dGVudE9m
ZnNldDwvYnV0dG9uPg0KCQk8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCgk8L2JvZHk+DQo8L2h0
bWw+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>478931</attachid>
            <date>2026-04-05 15:24:59 -0700</date>
            <delta_ts>2026-04-05 19:47:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-6185-20260405152458.patch</filename>
            <type>text/plain</type>
            <size>63213</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAzM2EzNzJiM2JiZjQ4YzQwMzRiNTZhNTAxZWQyZjBhYzdlYWJiNmNkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBBcHIgMjAyNiAwNTo1NzozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIENTUzE6IGNo
YXJhY3RlciBzdHlsZWQgd2l0aCA6Zmlyc3QtbGV0dGVyIGlzIG5vdCBzZWxlY3RhYmxlCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE4NSA8cmRhcjovL3Byb2JsZW0v
NTY4ODIzNz4KClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKR2l2ZW4KCiAgPHN0eWxlPgog
ICAgZGl2OjpmaXJzdC1sZXR0ZXIgeyBjb2xvcjogcmVkOyB9CiAgPC9zdHlsZT4KICA8ZGl2Pkhl
bGxvPC9kaXY+Cgp0aGUgRE9NIChpbnNpZGUgdGhlIGJsb2NrIGNvbnRhaW5lcikgaGFzIGEgc2lu
Z2xlIHRleHQgbm9kZSAiSGVsbG8iCmJ1dCBXZWJLaXQgc3BsaXRzIHRoaXMgaW50byB0d28gcmVu
ZGVyZXJzIHRvIGJlIGFibGUgdG8gc3R5bGUgdGhlIGZpcnN0IGxldHRlci4KCiAgUmVuZGVyQmxv
Y2sgKGRpdikKICAgIFJlbmRlcklubGluZSAoOjpmaXJzdC1sZXR0ZXIsIGFub255bW91cykKICAg
ICAgUmVuZGVyVGV4dCAiSCIgICAgICAgICAgICA8LSBvZmZzZXRzIDAtMSAobm8gRE9NIG5vZGUp
CiAgICBSZW5kZXJUZXh0RnJhZ21lbnQgImVsbG8iICAgPC0gb2Zmc2V0cyAwLTQgKG93bnMgdGhl
IERPTSB0ZXh0IG5vZGUpCgpUaGUgZXhpc3RpbmcgY29kZSBhc3N1bWVzIGVhY2ggRE9NIG5vZGUg
bWFwcyB0byBleGFjdGx5IG9uZSByZW5kZXJlci4KRXZlcnkgY2FsbCB0byBub2RlLT5yZW5kZXJl
cigpIG9yIFBvc2l0aW9uOjpyZW5kZXJlcigpIHJldHVybnMgdGhlCnJlbWFpbmluZyBmcmFnbWVu
dCAtIHRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgaXMgbmV2ZXIgY29uc3VsdGVkLgoKVGhpcyBt
ZWFucyBET00gb2Zmc2V0IDAgKCJIIikgZ2V0cyBjaGVja2VkIGFnYWluc3QgdGhlIHJlbWFpbmlu
ZwpmcmFnbWVudCdzIHRleHQgYm94ZXMsIHdoaWNoIHN0YXJ0IGF0ICJlIi4gU2VsZWN0aW9uLCBj
YXJldCBwb3NpdGlvbmluZywKYW5kIG9mZnNldCB2YWxpZGF0aW9uIGFsbCBmYWlsIGZvciB0aGUg
Zmlyc3QtbGV0dGVyIHJhbmdlIGJlY2F1c2UgdGhlCndyb25nIHJlbmRlcmVyIGlzIGFza2VkIGFi
b3V0IG9mZnNldHMgaXQgZG9lc24ndCBvd24uCgpUaGUgZml4IGlzIHRvIG5ldmVyIGNvbnN1bHQg
bm9kZS0+cmVuZGVyZXIoKSBkaXJlY3RseSBmb3IgdGV4dCBvZmZzZXQKb3BlcmF0aW9ucyBvbiBm
aXJzdC1sZXR0ZXIgY29udGVudC4gSW5zdGVhZCwgYWxsIGNhbGwgc2l0ZXMgZ28gdGhyb3VnaApQ
b3NpdGlvbjo6cmVuZGVyZXJBbmRPZmZzZXQoKSB3aGljaCByZXNvbHZlcyB0aGUgMS1ET00tbm9k
ZS10by0yLXJlbmRlcmVycwpzcGxpdCBieSBwaWNraW5nIHRoZSBjb3JyZWN0IHJlbmRlcmVyIGFu
ZCBjb252ZXJ0aW5nIHRvIGl0cyBsb2NhbCBvZmZzZXQuClRoaXMgaXMgdGhlIGNlbnRyYWwgaW52
YXJpYW50IG9mIHRoZSBmaXggLSBldmVyeSBwbGFjZSB0aGF0IHByZXZpb3VzbHkKY2FsbGVkIG5v
ZGUtPnJlbmRlcmVyKCkgYW5kIHVzZWQgYSBET00gb2Zmc2V0IGFnYWluc3QgaXQgbm93IHVzZXMg
dGhpcwpoZWxwZXIgKG9yIG9uZSBvZiBpdHMgd3JhcHBlcnMpIHRvIGdldCB0aGUgcmlnaHQgcmVu
ZGVyZXIgKyBvZmZzZXQgcGFpci4KCktleSBoZWxwZXJzIGludHJvZHVjZWQ6Ci0gUG9zaXRpb246
OnJlbmRlcmVyQW5kT2Zmc2V0KCk6IHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciByZXNv
bHZpbmcKICBhIERPTSBvZmZzZXQgdG8gdGhlIGNvcnJlY3QgcmVuZGVyZXIgKyBmcmFnbWVudC1s
b2NhbCBvZmZzZXQuIFJvdXRlcyB0bwogIHRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgZm9yIG9m
ZnNldHMgYmVsb3cgZnJhZ21lbnRTdGFydCwgb3RoZXJ3aXNlCiAgcmV0dXJucyB0aGUgcmVtYWlu
aW5nIGZyYWdtZW50IHdpdGggYWRqdXN0ZWQgb2Zmc2V0LgotIFBvc2l0aW9uOjpyZXNvbHZlZFRl
eHRSZW5kZXJlckFuZE9mZnNldCgpOiBjb252ZW5pZW5jZSB3cmFwcGVyIHRoYXQgYWxzbwogIGNh
c3RzIHRvIFJlbmRlclRleHQuCi0gZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldCgpOiBjb252
ZXJ0cyBmcmFnbWVudC1sb2NhbCBvZmZzZXQgYmFjayB0bwogIERPTSBvZmZzZXQuIFVzZWQgd2hl
biBleGl0aW5nIHJlbmRlcmVyIHNwYWNlIChjYXJldE1heE9mZnNldCwKICBjcmVhdGVQb3NpdGlv
bldpdGhBZmZpbml0eSwgZW5kUG9zaXRpb25Gb3JMaW5lLCBwb3NpdGlvbkF0UmlnaHRCb3VuZGFy
eS0KICBPZkJpRGlSdW4sIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQpLgotIGZpcnN0TGV0dGVyQWRq
dXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0KCk6IGNvbnZlcnRzIERPTSBvZmZzZXQgdG8KICBmcmFn
bWVudC1sb2NhbC4gVXNlZCBpbiBQb3NpdGlvbjo6dXBzdHJlYW0vZG93bnN0cmVhbSB3aGVyZSB0
aGVyZSBpcyBubwogIFBvc2l0aW9uIG9iamVjdCB0byBjYWxsIHJlbmRlcmVyQW5kT2Zmc2V0KCkg
b24uCi0gY3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkoKTogcHJldmVudHMgdXBzdHJlYW0vZG93
bnN0cmVhbSBmcm9tCiAgY2Fub25pY2FsaXppbmcgcG9zaXRpb25zIGFjcm9zcyB0aGUgZmlyc3Qt
bGV0dGVyIHNwbGl0LiBXaXRob3V0IHRoaXMsCiAgVmlzaWJsZVBvc2l0aW9uKG9mZnNldCAwKSBh
bmQgVmlzaWJsZVBvc2l0aW9uKG9mZnNldCAxKSB3b3VsZCBjb2xsYXBzZQogIHRvIHRoZSBzYW1l
IGNhbm9uaWNhbCBwb3NpdGlvbiwgbWFraW5nIHRoZSBmaXJzdCBsZXR0ZXIgdW5zZWxlY3RhYmxl
LgogIE11c3QgcnVuIGJlZm9yZSB0aGUgaXNTdHJlYW1lciB1cGRhdGUgdG8gc2VlIHRoZSBwcmUt
dXBkYXRlIGxhc3RWaXNpYmxlLgoKUG9zaXRpb246OmlzQ2FuZGlkYXRlLCBpc1JlbmRlcmVkQ2hh
cmFjdGVyLCByZW5kZXJzSW5EaWZmZXJlbnRQb3NpdGlvbjoKICBUaGVzZSBjaGVjayB0ZXh0IG9m
ZnNldCB2YWxpZGl0eSBhZ2FpbnN0IHJlbmRlcmVyIHRleHQgYm94ZXMuIFRoZXkgbm93CiAgdXNl
IHJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCkgdG8gYXNrIHRoZSBjb3JyZWN0IHJlbmRl
cmVyCiAgKGZpcnN0LWxldHRlciBvciByZW1haW5pbmcgZnJhZ21lbnQpIGluc3RlYWQgb2YgYWx3
YXlzIGFza2luZyB0aGUKICByZW1haW5pbmcgZnJhZ21lbnQgd2l0aCBhIHJhdyBET00gb2Zmc2V0
LgoKUG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldDogcmVzb2x2ZXMgdG8gdGhlIGNvcnJlY3Qg
aW5saW5lIGJveCBmb3IKICBjYXJldC9zZWxlY3Rpb24gcG9zaXRpb25pbmcuIE5vdyBkZWxlZ2F0
ZXMgdG8gcmVuZGVyZXJBbmRPZmZzZXQoKQogIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGZp
cnN0LWxldHRlciByb3V0aW5nIGxvZ2ljLgoKUmVuZGVyZWRQb3NpdGlvbjogc3RvcmVzIHRoZSBv
cmlnaW5hbCBET00gbm9kZSAobV9ub2RlKSBmcm9tIHRoZSBQb3NpdGlvbgogIGR1cmluZyBjb25z
dHJ1Y3Rpb24uIFdpdGhvdXQgdGhpcywgcG9zaXRpb25BdExlZnRCb3VuZGFyeU9mQmlEaVJ1bigp
CiAgcHJvZHVjZXMgYSBudWxsLW5vZGUgUG9zaXRpb24gd2hlbiB0aGUgaW5saW5lIGJveCBiZWxv
bmdzIHRvIHRoZQogIGFub255bW91cyBmaXJzdC1sZXR0ZXIgdGV4dCwgY2F1c2luZyBhZGp1c3RF
bmRwb2ludHNBdEJpZGlCb3VuZGFyeSgpCiAgdG8gY29sbGFwc2UgdGhlIHNlbGVjdGlvbiB3aGVu
IGRyYWdnaW5nIGxlZnQgcGFzdCB0aGUgZmlyc3QgbGV0dGVyLgoKVmlzaWJsZVBvc2l0aW9uOjpy
aWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGU6IHdoZW4gYmlkaSB0cmF2ZXJzYWwKICBsYW5k
cyBvbiB0aGUgYW5vbnltb3VzIGZpcnN0LWxldHRlciB0ZXh0IGJveCwgcmVzb2x2ZXMgdGhlIERP
TSBub2RlCiAgdmlhIHJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKCkgYmVmb3Jl
IGNyZWF0aW5nIHRoZSBQb3NpdGlvbi4KClJlbmRlclRleHRGcmFnbWVudDo6Y2FuQmVTZWxlY3Rp
b25MZWFmOiByZXR1cm5zIHRydWUgZm9yIHJlbWFpbmluZwogIGZyYWdtZW50cyB3aXRoIGZpcnN0
LWxldHRlciwgbWF0Y2hpbmcgYmFzZSBSZW5kZXJUZXh0IGJlaGF2aW9yIHNvCiAgY3Jvc3MtZWxl
bWVudCBzZWxlY3Rpb25zIChDbWQrQSkgaW5jbHVkZSB0aGUgcmVtYWluaW5nIHRleHQuCgoqIExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3Mt
ZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sOiBBZGRlZC4KKiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0
dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLmh0bWw6
IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxl
Y3Rpb24uaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2Zp
cnN0LWxldHRlci13b3JkLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dDoKICBQcm9ncmVzc2lvbi4gTGFz
dCB0ZXN0IGNhc2UgaXMgcHJlLWV4aXN0aW5nIGJ1ZyBhbmQgaXQgbmV2ZXIgcmVhbGx5IFBBU1Nl
ZCAtdGhlIG9mZi1ieS1vbmUgZXJyb3IgbWFkZSBpdCAoaW5jb3JyZWN0bHkpIFBBU1MuCgoqIExh
eW91dFRlc3RzL2Zhc3QvdGV4dC9maXJzdC1sZXR0ZXItcGFydGlhbC1pbnZhbGlkYXRpb24tY3Jh
c2gtZXhwZWN0ZWQudHh0OgogIFByb2dyZXNzaW9uLiBXZSBtYXRjaCBvdGhlciBlbmdpbmVzIG5v
dy4KCiogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
Ynktd29yZC0wMDItZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9lZGl0
aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0OgoqIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhw
ZWN0ZWQudHh0OgogIFByb2dyZXNzaW9uLiBDb250ZW50IGlzIHNlbGVjdGVkIG5vdyBhY3Jvc3Mg
PGxpPnMgd2l0aCBmaXJzdC1sZXR0ZXIuCgoqIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHA6CihXZWJDb3JlOjpjcm9zc2VzRmlyc3RMZXR0ZXJCb3VuZGFyeSk6CihXZWJDb3JlOjpmaXJz
dExldHRlckFkanVzdGVkRnJhZ21lbnRMb2NhbE9mZnNldCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6
dXBzdHJlYW0gY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OmRvd25zdHJlYW0gY29uc3QpOgoo
V2ViQ29yZTo6UG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2VuZGFudHNXaXRo
SGVpZ2h0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjppc0NhbmRpZGF0ZSBjb25zdCk6CihXZWJDb3Jl
OjpQb3NpdGlvbjo6aXNSZW5kZXJlZENoYXJhY3RlciBjb25zdCk6CihXZWJDb3JlOjpQb3NpdGlv
bjo6cmVuZGVyc0luRGlmZmVyZW50UG9zaXRpb24gY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246
OnJlbmRlcmVyQW5kT2Zmc2V0IGNvbnN0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjpyZXNvbHZlZFRl
eHRSZW5kZXJlckFuZE9mZnNldCBjb25zdCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6aW5saW5lQm94
QW5kT2Zmc2V0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHA6CihXZWJDb3JlOjpQb3NpdGlvbkl0
ZXJhdG9yOjppc0NhbmRpZGF0ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nLmNwcDoKKFdlYkNvcmU6OmNhcmV0TWF4T2Zmc2V0KToKKFdlYkNvcmU6OmZpcnN0TGV0dGVy
QWRqdXN0ZWRET01PZmZzZXQpOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oOgoq
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgooV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2UpOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVuZGVyZWRQb3NpdGlvbi5jcHA6CihXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJl
ZFBvc2l0aW9uKToKKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OnBvc2l0aW9uQXRMZWZ0Qm91
bmRhcnlPZkJpRGlSdW4gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRp
b25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlSdW4gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5oOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcDoKKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgooV2ViQ29y
ZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKToKKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
ZW1pdFRleHQpOgooV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFu
ZGxlVGV4dE5vZGUpOgooV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6
aGFuZGxlRmlyc3RMZXR0ZXIpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmg6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
OgooV2ViQ29yZTo6cmVtYWluaW5nVGV4dEZyYWdtZW50Rm9yRmlyc3RMZXR0ZXIpOgooV2ViQ29y
ZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSBjb25zdCk6
CihXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0
ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgooV2Vi
Q29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKFdlYkNvcmU6OmZpbmRFbmRPZlBhcmFncmFwaCk6
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmNyZWF0ZVBvc2l0aW9uV2l0aEFmZmluaXR5IGNvbnN0KToKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcDoKKFdlYkNvcmU6OlJlbmRl
clRleHRGcmFnbWVudDo6Y2FuQmVTZWxlY3Rpb25MZWFmIGNvbnN0KToKLS0tCiBTb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uY3BwICAgICAgICAgICAgICAgfCAxMTggKysrKysrKysrKysrLS0t
CiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCAgICAgICAgICAgICAgICAgfCAgIDggKysK
IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcCAgICAgICB8ICAgOCArLQog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCAgICAgICAgICAgIHwgIDEwICstCiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaCAgICAgICAgICAgICAgfCAgIDEgKwogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgICAgIHwgIDEwICstCiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwICAgfCAgMTAgKy0KIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oICAgICB8ICAgMSArCiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgICAgICAgfCAxMzQgKysrKysrKysrLS0t
LS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oICAgICAgICAgfCAg
IDMgLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwICAgIHwgIDI4
ICsrKy0KIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCAgICAgICB8ICAg
NSArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgICAgIHwgICA1
ICstCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcCAgfCAgIDkg
Ky0KIC4uLmV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50LWV4cGVjdGVkLnR4dCB8ICAxMyAr
KwogLi4uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sIHwgIDQzICsr
KysrKwogLi4uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0ICAgICAgIHwgIDMz
ICsrKysrCiAuLi5zdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLWV4cGVjdGVkLmh0bWwgfCAg
MjUgKysrKwogLi4uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmcuaHRtbCAgICAgIHwg
IDI1ICsrKysKIC4uLi9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi5odG1sICAgICB8
IDEwMSArKysrKysrKysrKysrCiAuLi4vZmlyc3QtbGV0dGVyLXdvcmQtYm91bmRhcnktZXhwZWN0
ZWQudHh0ICAgfCAgIDYgKy0KIC4uLmVyLXBhcnRpYWwtaW52YWxpZGF0aW9uLWNyYXNoLWV4cGVj
dGVkLnR4dCB8ICAgMiArLQogLi4uL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0
ZWQudHh0IHwgICAyICstCiAuLi4vc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBlY3Rl
ZC50eHQgfCAgIDIgKy0KIC4uLi9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVk
LnR4dCB8ICAgMiArLQogMjUgZmlsZXMgY2hhbmdlZCwgNDg1IGluc2VydGlvbnMoKyksIDExOSBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0CiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0
dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWV4cGVjdGVk
LnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbAogY3JlYXRlIG1vZGUg
MTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rp
b24tcGFpbnRpbmcuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwCmluZGV4IGY5N2FhZjEzM2I0NS4uNGZiZTMxYzE0Y2M3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgor
I2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBl
SGVscGVycy5oIgogI2luY2x1ZGUgIlNWR1RleHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5o
IgpAQCAtNjQyLDYgKzY0MywzMCBAQCBzdGF0aWMgTm9kZSogZW5jbG9zaW5nVmlzdWFsQm91bmRh
cnkoU1VQUFJFU1NfVU5DSEVDS0VEX0xPQ0FMIE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGU7
CiB9CiAKKy8vIFRoZSBmaXJzdC1sZXR0ZXIgYW5kIHJlbWFpbmluZyB0ZXh0IGFyZSBzZXBhcmF0
ZSByZW5kZXJlcnMgYnV0IHNoYXJlIG9uZSBET00KKy8vIHRleHQgbm9kZS4gdXBzdHJlYW0vZG93
bnN0cmVhbSBtdXN0IG5vdCBjcm9zcyB0aGlzIGJvdW5kYXJ5LCBqdXN0IGxpa2UgdGhleQorLy8g
bXVzdCBub3QgY3Jvc3MgdmlzdWFsbHkgZGlzdGluY3Qgbm9kZSBib3VuZGFyaWVzLgorc3RhdGlj
IGJvb2wgY3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5k
ZXJlciwgY29uc3QgUG9zaXRpb25JdGVyYXRvciYgY3VycmVudCwgY29uc3QgUG9zaXRpb25JdGVy
YXRvciYgcHJldmlvdXNMYXN0VmlzaWJsZSkKK3sKKyAgICBhdXRvKiB0ZXh0RnJhZ21lbnQgPSBk
eW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7CisgICAgaWYgKCF0
ZXh0RnJhZ21lbnQgfHwgIXRleHRGcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGF1dG8gZnJhZ21lbnRTdGFydCA9IHN0YXRpY19jYXN0PGludD4odGV4
dEZyYWdtZW50LT5zdGFydCgpKTsKKyAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBjdXJyZW50Lm9m
ZnNldEluTGVhZk5vZGUoKTsKKyAgICBhdXRvIGxhc3RPZmZzZXQgPSBwcmV2aW91c0xhc3RWaXNp
YmxlLm9mZnNldEluTGVhZk5vZGUoKTsKKyAgICAvLyBPbmUgb2Zmc2V0IGlzIGluIHRoZSBmaXJz
dC1sZXR0ZXIgcmFuZ2UgYW5kIHRoZSBvdGhlciBpcyBub3QuCisgICAgLy8gT2Zmc2V0cyBhdCBm
cmFnbWVudFN0YXJ0IGJlbG9uZyB0byB0aGUgcmVtYWluaW5nIGZyYWdtZW50LCBub3QgdGhlIGZp
cnN0LWxldHRlci4KKyAgICByZXR1cm4gKGN1cnJlbnRPZmZzZXQgPCBmcmFnbWVudFN0YXJ0KSAh
PSAobGFzdE9mZnNldCA8IGZyYWdtZW50U3RhcnQpOworfQorCisvLyBDb252ZXJ0IGEgRE9NIG9m
ZnNldCB0byBmcmFnbWVudC1sb2NhbCBmb3IgcmVtYWluaW5nIHRleHQgZnJhZ21lbnRzIHdpdGgg
Zmlyc3QtbGV0dGVyLgorc3RhdGljIHVuc2lnbmVkIGZpcnN0TGV0dGVyQWRqdXN0ZWRGcmFnbWVu
dExvY2FsT2Zmc2V0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIHVuc2lnbmVkIG9mZnNl
dCkKK3sKKyAgICBpZiAoYXV0byogdGV4dEZyYWdtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRl
clRleHRGcmFnbWVudD4ocmVuZGVyZXIpOyB0ZXh0RnJhZ21lbnQgJiYgdGV4dEZyYWdtZW50LT5m
aXJzdExldHRlcigpICYmIG9mZnNldCA+PSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkpCisgICAgICAg
IHJldHVybiBvZmZzZXQgLSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCk7CisgICAgcmV0dXJuIG9mZnNl
dDsKK30KKwogLy8gdXBzdHJlYW0oKSBhbmQgZG93bnN0cmVhbSgpIHdhbnQgdG8gcmV0dXJuIHBv
c2l0aW9ucyB0aGF0IGFyZSBlaXRoZXIgaW4gYQogLy8gdGV4dCBub2RlIG9yIGF0IGp1c3QgYmVm
b3JlIGEgbm9uLXRleHQgbm9kZS4gIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgdGhhdC4KIHN0YXRp
YyBib29sIGlzU3RyZWFtZXIoY29uc3QgUG9zaXRpb25JdGVyYXRvciYgcG9zKQpAQCAtNzEyLDYg
KzczNywxMCBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jv
c3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAKKyAgICAgICAgLy8gRG9uJ3QgbW92ZSBwYXN0IHRoZSBmaXJzdC1sZXR0ZXIgYm91bmRh
cnkgd2l0aGluIGEgdGV4dCBub2RlLgorICAgICAgICBpZiAoY3Jvc3Nlc0ZpcnN0TGV0dGVyQm91
bmRhcnkoKnJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24sIGxhc3RWaXNpYmxlKSkKKyAgICAgICAg
ICAgIHJldHVybiBsYXN0VmlzaWJsZTsKKwogICAgICAgICAvLyB0cmFjayBsYXN0IHZpc2libGUg
c3RyZWFtZXIgcG9zaXRpb24KICAgICAgICAgaWYgKGlzU3RyZWFtZXIoY3VycmVudFBvc2l0aW9u
KSkKICAgICAgICAgICAgIGxhc3RWaXNpYmxlID0gY3VycmVudFBvc2l0aW9uOwpAQCAtNzQwLDEw
ICs3NjksMTAgQEAgUG9zaXRpb24gUG9zaXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNy
b3NzaW5nUnVsZSBydWxlKSBjb25zdAogICAgICAgICAgICAgICAgIC8vIHJlbmRlciB0cmVlIHdo
aWNoIGNhbiBoYXZlIGEgZGlmZmVyZW50IGxlbmd0aCBkdWUgdG8gY2FzZSB0cmFuc2Zvcm1hdGlv
bi4KICAgICAgICAgICAgICAgICAvLyBVbnRpbCB3ZSByZXNvbHZlIHRoYXQsIGRpc2FibGUgdGhp
cyBzbyB3ZSBjYW4gcnVuIHRoZSBsYXlvdXQgdGVzdHMhCiAgICAgICAgICAgICAgICAgLy9BU1NF
UlQoY3VycmVudE9mZnNldCA+PSByZW5kZXJlci0+Y2FyZXRNYXhPZmZzZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY3VycmVudE5vZGUu
cHRyKCksIHJlbmRlcmVyLT5jYXJldE1heE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihjdXJyZW50Tm9kZS5wdHIoKSwgY2FyZXRN
YXhPZmZzZXQoY3VycmVudE5vZGUpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdW5z
aWduZWQgdGV4dE9mZnNldCA9IGN1cnJlbnRQb3NpdGlvbi5vZmZzZXRJbkxlYWZOb2RlKCk7Cisg
ICAgICAgICAgICBhdXRvIHRleHRPZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRnJhZ21lbnRM
b2NhbE9mZnNldCgqdGV4dFJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9k
ZSgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDspIHsK
ICAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA+IGJveC0+c3RhcnQoKSAmJiB0ZXh0T2Zm
c2V0IDw9IGJveC0+ZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9z
aXRpb247CkBAIC04MjcsNiArODU2LDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpkb3duc3RyZWFt
KEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBEb24ndCBtb3ZlIHBhc3QgdGhlIGZpcnN0LWxl
dHRlciBib3VuZGFyeSB3aXRoaW4gYSB0ZXh0IG5vZGUuCisgICAgICAgIGlmIChjcm9zc2VzRmly
c3RMZXR0ZXJCb3VuZGFyeSgqcmVuZGVyZXIsIGN1cnJlbnRQb3NpdGlvbiwgbGFzdFZpc2libGUp
KQorICAgICAgICAgICAgcmV0dXJuIGxhc3RWaXNpYmxlOworCiAgICAgICAgIC8vIHRyYWNrIGxh
c3QgdmlzaWJsZSBzdHJlYW1lciBwb3NpdGlvbgogICAgICAgICBpZiAoaXNTdHJlYW1lcihjdXJy
ZW50UG9zaXRpb24pKQogICAgICAgICAgICAgbGFzdFZpc2libGUgPSBjdXJyZW50UG9zaXRpb247
CkBAIC04NDksNyArODgyLDcgQEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGlu
Z0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihjdXJyZW50Tm9kZS5wdHIoKSwgdGV4dFJlbmRl
cmVyLT5jYXJldE1pbk9mZnNldCgpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdW5z
aWduZWQgdGV4dE9mZnNldCA9IGN1cnJlbnRQb3NpdGlvbi5vZmZzZXRJbkxlYWZOb2RlKCk7Cisg
ICAgICAgICAgICBhdXRvIHRleHRPZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRnJhZ21lbnRM
b2NhbE9mZnNldCgqdGV4dFJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9k
ZSgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDspIHsK
ICAgICAgICAgICAgICAgICBpZiAoIWJveC0+bGVuZ3RoKCkgJiYgdGV4dE9mZnNldCA9PSBib3gt
PnN0YXJ0KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CkBA
IC04OTgsNyArOTMxLDEzIEBAIGJvb2wgUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3Vz
RGVzY2VuZGFudHNXaXRoSGVpZ2h0KGNvbnN0IFJlbmRlckVsZW1lbnQmCiAgICAgYXV0byBpc0hv
cml6b250YWwgPSByZW5kZXJlci5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIENoZWNr
ZWRQdHIgc3RvcCA9IHJlbmRlcmVyLm5leHRJblByZU9yZGVyQWZ0ZXJDaGlsZHJlbigpOwogICAg
IGZvciAoQ2hlY2tlZFB0ciBkZXNjZW5kYW50ID0gcmVuZGVyZXIuZmlyc3RDaGlsZCgpOyBkZXNj
ZW5kYW50ICYmIGRlc2NlbmRhbnQgIT0gc3RvcDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5l
eHRJblByZU9yZGVyKCkpIHsKLSAgICAgICAgaWYgKCFkZXNjZW5kYW50LT5ub25Qc2V1ZG9Ob2Rl
KCkpCisgICAgICAgIGF1dG8gc2hvdWxkU2tpcCA9IFsmXSB7CisgICAgICAgICAgICBpZiAoZGVz
Y2VuZGFudC0+bm9uUHNldWRvTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIENoZWNrZWRQdHIgcmVuZGVyRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxS
ZW5kZXJFbGVtZW50PigqZGVzY2VuZGFudCk7CisgICAgICAgICAgICByZXR1cm4gIXJlbmRlckVs
ZW1lbnQgfHwgIXJlbmRlckVsZW1lbnQtPmlzRmlyc3RMZXR0ZXIoKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgaWYgKHNob3VsZFNraXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IGF1dG8gYm91bmRpbmdCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdKGF1dG8gcmVjdCkgewpAQCAtOTE2
LDcgKzk1NSw3IEBAIGJvb2wgUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2Vu
ZGFudHNXaXRoSGVpZ2h0KGNvbnN0IFJlbmRlckVsZW1lbnQmCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJJbmxpbmUgPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVySW5saW5lPigqZGVzY2VuZGFudCkpIHsKLSAgICAgICAgICAgIGlm
IChpc0VtcHR5SW5saW5lKCpyZW5kZXJJbmxpbmUpICYmIGJvdW5kaW5nQm94TG9naWNhbEhlaWdo
dChyZW5kZXJJbmxpbmUtPmxpbmVzQm91bmRpbmdCb3goKSkpCisgICAgICAgICAgICBpZiAoKHJl
bmRlcklubGluZS0+aXNGaXJzdExldHRlcigpIHx8IGlzRW1wdHlJbmxpbmUoKnJlbmRlcklubGlu
ZSkpICYmIGJvdW5kaW5nQm94TG9naWNhbEhlaWdodChyZW5kZXJJbmxpbmUtPmxpbmVzQm91bmRp
bmdCb3goKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQpAQCAtOTg1LDggKzEwMjQsMTAgQEAgYm9vbCBQb3NpdGlvbjo6aXND
YW5kaWRhdGUoKSBjb25zdAogICAgICAgICByZXR1cm4gIW1fb2Zmc2V0ICYmIG1fYW5jaG9yVHlw
ZSAhPSBQb3NpdGlvbklzQWZ0ZXJBbmNob3IgJiYgIW5vZGVJc1VzZXJTZWxlY3ROb25lKG5vZGUt
PnBhcmVudE5vZGUoKSk7CiAgICAgfQogCi0gICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyVGV4dCA9
IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKQotICAgICAgICByZXR1cm4g
IW5vZGVJc1VzZXJTZWxlY3ROb25lKG5vZGUuZ2V0KCkpICYmIHJlbmRlclRleHQtPmNvbnRhaW5z
Q2FyZXRPZmZzZXQobV9vZmZzZXQpOworICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclRleHQgPSBk
eW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSkgeworICAgICAgICBhdXRvIFty
ZXNvbHZlZFRleHQsIHJlc29sdmVkT2Zmc2V0XSA9IHJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zm
c2V0KCk7CisgICAgICAgIHJldHVybiAhbm9kZUlzVXNlclNlbGVjdE5vbmUobm9kZS5nZXQoKSkg
JiYgcmVzb2x2ZWRUZXh0ICYmIHJlc29sdmVkVGV4dC0+Y29udGFpbnNDYXJldE9mZnNldChyZXNv
bHZlZE9mZnNldCk7CisgICAgfQogCiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlT3JBZnRlck5vZGVJ
c0NhbmRpZGF0ZSgqbm9kZSkpIHsKICAgICAgICAgcmV0dXJuICgoYXRGaXJzdEVkaXRpbmdQb3Np
dGlvbkZvck5vZGUoKSAmJiBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0JlZm9yZUFuY2hvcikK
QEAgLTEwMTMsOSArMTA1NCwxMCBAQCBib29sIFBvc2l0aW9uOjppc0NhbmRpZGF0ZSgpIGNvbnN0
CiAKIGJvb2wgUG9zaXRpb246OmlzUmVuZGVyZWRDaGFyYWN0ZXIoKSBjb25zdAogewotICAgIFJl
ZlB0ciB0ZXh0ID0gZHluYW1pY0Rvd25jYXN0PFRleHQ+KGRlcHJlY2F0ZWROb2RlKCkpOwotICAg
IENoZWNrZWRQdHIgcmVuZGVyZXIgPSB0ZXh0ID8gdGV4dC0+cmVuZGVyZXIoKSA6IG51bGxwdHI7
Ci0gICAgcmV0dXJuIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5jb250YWluc1JlbmRlcmVkQ2hhcmFj
dGVyT2Zmc2V0KG1fb2Zmc2V0KTsKKyAgICBpZiAoIWR5bmFtaWNEb3duY2FzdDxUZXh0PihkZXBy
ZWNhdGVkTm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gW3JlbmRlclRl
eHQsIG9mZnNldF0gPSByZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpOworICAgIHJldHVy
biByZW5kZXJUZXh0ICYmIHJlbmRlclRleHQtPmNvbnRhaW5zUmVuZGVyZWRDaGFyYWN0ZXJPZmZz
ZXQob2Zmc2V0KTsKIH0KIAogc3RhdGljIGJvb2wgaW5TYW1lRW5jbG9zaW5nQmxvY2tGbG93RWxl
bWVudChOb2RlKiBhLCBOb2RlKiBiKQpAQCAtMTA2MSwxNiArMTEwMywxNiBAQCBib29sIFBvc2l0
aW9uOjpyZW5kZXJzSW5EaWZmZXJlbnRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24p
IGNvbnN0CiAgICAgaWYgKCFpblNhbWVFbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KG5vZGUuZ2V0
KCksIHBvc2l0aW9uTm9kZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQ2hl
Y2tlZFB0ciB0ZXh0UmVuZGVyZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRl
cmVyKTsKLSAgICBpZiAodGV4dFJlbmRlcmVyICYmICF0ZXh0UmVuZGVyZXItPmNvbnRhaW5zQ2Fy
ZXRPZmZzZXQobV9vZmZzZXQpKQorICAgIGF1dG8gW3RleHRSZW5kZXJlciwgdGhpc09mZnNldF0g
PSByZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpOworICAgIGlmICh0ZXh0UmVuZGVyZXIg
JiYgIXRleHRSZW5kZXJlci0+Y29udGFpbnNDYXJldE9mZnNldCh0aGlzT2Zmc2V0KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ2hlY2tlZFB0ciB0ZXh0UG9zaXRpb25SZW5kZXJlciA9
IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcG9zaXRpb25SZW5kZXJlcik7Ci0gICAgaWYg
KHRleHRQb3NpdGlvblJlbmRlcmVyICYmICF0ZXh0UG9zaXRpb25SZW5kZXJlci0+Y29udGFpbnND
YXJldE9mZnNldChwb3NpdGlvbi5tX29mZnNldCkpCisgICAgYXV0byBbdGV4dFBvc2l0aW9uUmVu
ZGVyZXIsIHBvc2l0aW9uT2Zmc2V0XSA9IHBvc2l0aW9uLnJlc29sdmVkVGV4dFJlbmRlcmVyQW5k
T2Zmc2V0KCk7CisgICAgaWYgKHRleHRQb3NpdGlvblJlbmRlcmVyICYmICF0ZXh0UG9zaXRpb25S
ZW5kZXJlci0+Y29udGFpbnNDYXJldE9mZnNldChwb3NpdGlvbk9mZnNldCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIHRoaXNSZW5kZXJlZE9mZnNldCA9IHRleHRSZW5k
ZXJlciA/IHRleHRSZW5kZXJlci0+Y291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbCht
X29mZnNldCkgOiBtX29mZnNldDsKLSAgICB1bnNpZ25lZCBwb3NpdGlvblJlbmRlcmVkT2Zmc2V0
ID0gdGV4dFBvc2l0aW9uUmVuZGVyZXIgPyB0ZXh0UG9zaXRpb25SZW5kZXJlci0+Y291bnRSZW5k
ZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbChwb3NpdGlvbi5tX29mZnNldCkgOiBwb3NpdGlvbi5t
X29mZnNldDsKKyAgICB1bnNpZ25lZCB0aGlzUmVuZGVyZWRPZmZzZXQgPSB0ZXh0UmVuZGVyZXIg
PyB0ZXh0UmVuZGVyZXItPmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwodGhpc09m
ZnNldCkgOiBtX29mZnNldDsKKyAgICB1bnNpZ25lZCBwb3NpdGlvblJlbmRlcmVkT2Zmc2V0ID0g
dGV4dFBvc2l0aW9uUmVuZGVyZXIgPyB0ZXh0UG9zaXRpb25SZW5kZXJlci0+Y291bnRSZW5kZXJl
ZENoYXJhY3Rlck9mZnNldHNVbnRpbChwb3NpdGlvbk9mZnNldCkgOiBwb3NpdGlvbi5tX29mZnNl
dDsKIAogICAgIGlmIChyZW5kZXJlciA9PSBwb3NpdGlvblJlbmRlcmVyICYmIHRoaXNSZW5kZXJl
ZE9mZnNldCA9PSBwb3NpdGlvblJlbmRlcmVkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xMTk1LDE2ICsxMjM3LDUyIEBAIHN0YXRpYyBQb3NpdGlvbiB1cHN0cmVhbUlnbm9yaW5n
RWRpdGluZ0JvdW5kYXJpZXMoUG9zaXRpb24gcG9zaXRpb24pCiAgICAgcmV0dXJuIHBvc2l0aW9u
OwogfQogCitzdGQ6OnBhaXI8UmVuZGVyT2JqZWN0KiwgdW5zaWduZWQ+IFBvc2l0aW9uOjpyZW5k
ZXJlckFuZE9mZnNldCgpIGNvbnN0Cit7CisgICAgYXV0byogbm9kZSA9IGRlcHJlY2F0ZWROb2Rl
KCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4geyB7IH0sIHsgfSB9OworICAgIGF1
dG8qIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAg
ICAgICByZXR1cm4geyB7IH0sIHsgfSB9OworICAgIHVuc2lnbmVkIG9mZnNldCA9IGRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgQ2hlY2tlZFB0ciB0ZXh0RnJhZ21lbnQgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PigqcmVuZGVyZXIpOworICAgIGlmICghdGV4dEZy
YWdtZW50IHx8ICF0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpCisgICAgICAgIHJldHVybiB7
IHJlbmRlcmVyLCBvZmZzZXQgfTsKKworICAgIC8vIFdoZW4gdGhlIHJlbWFpbmluZyBmcmFnbWVu
dCBpcyBlbXB0eSAoZW50aXJlIHRleHQgaXMgdGhlIGZpcnN0IGxldHRlciksCisgICAgLy8gcm91
dGUgdG8gdGhlIGZpcnN0LWxldHRlciByZW5kZXJlcidzIGVuZCBwb3NpdGlvbiBzbyAiYWZ0ZXIg
dGhlIGxhc3QgY2hhcmFjdGVyIiBpcyBhIHZhbGlkIGNhcmV0IHBvc2l0aW9uLgorICAgIGlmIChv
ZmZzZXQgPj0gdGV4dEZyYWdtZW50LT5zdGFydCgpICYmIHRleHRGcmFnbWVudC0+dGV4dCgpLmxl
bmd0aCgpKQorICAgICAgICByZXR1cm4geyByZW5kZXJlciwgb2Zmc2V0IC0gdGV4dEZyYWdtZW50
LT5zdGFydCgpIH07CisKKyAgICAvLyBJdCBsb29rcyBsaWtlIHdlIGFyZSBvbiB0aGUgZmlyc3Qg
bGV0dGVyIHJlbmRlcmVyLgorICAgIENoZWNrZWRQdHIgZmlyc3RMZXR0ZXJSZW5kZXJlciA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0Pih0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCktPmZp
cnN0Q2hpbGQoKSk7CisgICAgaWYgKCFmaXJzdExldHRlclJlbmRlcmVyKSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB7IH0sIHsgfSB9OworICAgIH0K
KworICAgIC8vIFRoZSBmaXJzdC1sZXR0ZXIgdGV4dCBtYXkgbm90IHN0YXJ0IGF0IERPTSBvZmZz
ZXQgMCAoZS5nLiBjb2xsYXBzZWQgd2hpdGVzcGFjZSBwcmVjZWRlcyB0aGUgZmlyc3QgbGV0dGVy
KS4KKyAgICBhdXRvIGZpcnN0TGV0dGVyU3RhcnQgPSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkgLSBm
aXJzdExldHRlclJlbmRlcmVyLT50ZXh0KCkubGVuZ3RoKCk7CisgICAgcmV0dXJuIG9mZnNldCA+
PSBmaXJzdExldHRlclN0YXJ0ID8gc3RkOjptYWtlX3BhaXIoZmlyc3RMZXR0ZXJSZW5kZXJlciwg
b2Zmc2V0IC0gZmlyc3RMZXR0ZXJTdGFydCkgOiBzdGQ6Om1ha2VfcGFpcihudWxscHRyLCAwKTsK
K30KKworc3RkOjpwYWlyPFJlbmRlclRleHQqLCB1bnNpZ25lZD4gUG9zaXRpb246OnJlc29sdmVk
VGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvIFtyZW5kZXJlciwgb2Zm
c2V0XSA9IHJlbmRlcmVyQW5kT2Zmc2V0KCk7CisgICAgaWYgKGF1dG8qIHJlbmRlclRleHQgPSBk
eW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQorICAgICAgICByZXR1cm4geyBy
ZW5kZXJUZXh0LCBvZmZzZXQgfTsKKyAgICByZXR1cm4geyBudWxscHRyLCAwIH07Cit9CisKIElu
bGluZUJveEFuZE9mZnNldCBQb3NpdGlvbjo6aW5saW5lQm94QW5kT2Zmc2V0KEFmZmluaXR5IGFm
ZmluaXR5LCBUZXh0RGlyZWN0aW9uIHByaW1hcnlEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgYXV0
byBjYXJldE9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpKTsKIAotICAgIFJlZlB0ciBub2RlID0gZGVwcmVjYXRlZE5vZGUoKTsKLSAgICBpZiAo
IW5vZGUpCi0gICAgICAgIHJldHVybiB7IHsgfSwgY2FyZXRPZmZzZXQgfTsKLSAgICBDaGVja2Vk
UHRyIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIFtyZW5kZXJlciwgcmVz
b2x2ZWRPZmZzZXRdID0gcmVuZGVyZXJBbmRPZmZzZXQoKTsKICAgICBpZiAoIXJlbmRlcmVyKQog
ICAgICAgICByZXR1cm4geyB7IH0sIGNhcmV0T2Zmc2V0IH07CisgICAgY2FyZXRPZmZzZXQgPSBy
ZXNvbHZlZE9mZnNldDsKIAogICAgIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgYm94
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IDcyNTM3OTk3ZjY1Zi4uZmY4YWE0MGU2OTcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uaApAQCAtMzgsNiArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIExlZ2FjeUlubGluZUJveDsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CitjbGFzcyBS
ZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJUZXh0OwogY2xhc3MgVGV4dDsKIAogc3RydWN0IEJv
dW5kYXJ5UG9pbnQ7CkBAIC0xMDMsNiArMTA1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG9mZnNldEZvclBvc2l0aW9uQWZ0ZXJBbmNob3IoKTsKICAgICB9CiAKKyAgICAvLyBSZXR1cm5z
IHRoZSByZW5kZXJlciBhbmQgZnJhZ21lbnQtbG9jYWwgb2Zmc2V0IGZvciB0aGlzIHBvc2l0aW9u
LCBjb3JyZWN0bHkKKyAgICAvLyBoYW5kbGluZyBmaXJzdC1sZXR0ZXIgdGV4dCBmcmFnbWVudCBz
cGxpdHMgd2hlcmUgdGhlIERPTSB0ZXh0IG5vZGUncyByZW5kZXJlcgorICAgIC8vIGlzIHRoZSBy
ZW1haW5pbmcgZnJhZ21lbnQgcmF0aGVyIHRoYW4gdGhlIGZpcnN0LWxldHRlciBmcmFnbWVudC4K
KyAgICBzdGQ6OnBhaXI8UmVuZGVyT2JqZWN0KiwgdW5zaWduZWQ+IHJlbmRlcmVyQW5kT2Zmc2V0
KCkgY29uc3Q7CisgICAgc3RkOjpwYWlyPFJlbmRlclRleHQqLCB1bnNpZ25lZD4gcmVzb2x2ZWRU
ZXh0UmVuZGVyZXJBbmRPZmZzZXQoKSBjb25zdDsKKwogICAgIFJlZlB0cjxOb2RlPiBmaXJzdE5v
ZGUoKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIGFyZSBjb252ZW5pZW5jZSBtZXRob2RzIHdoaWNo
IGFyZSBzbWFydCBhYm91dCB3aGV0aGVyIHRoZSBwb3NpdGlvbiBpcyBuZWlnaGJvciBhbmNob3Jl
ZCBvciBwYXJlbnQgYW5jaG9yZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbkl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNw
cAppbmRleCA0MDJiNTFhMDA2MmYuLjM2Nzc2YzAxMTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbkl0ZXJhdG9yLmNwcApAQCAtMTc1LDggKzE3NSwxMiBAQCBib29sIFBvc2l0aW9uSXRl
cmF0b3I6OmlzQ2FuZGlkYXRlKCkgY29uc3QKICAgICBpZiAocmVuZGVyZXItPmlzQlIoKSkKICAg
ICAgICAgcmV0dXJuIFBvc2l0aW9uKCp0aGlzKS5pc0NhbmRpZGF0ZSgpOwogCi0gICAgaWYgKENo
ZWNrZWRQdHIgcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVy
ZXIpKQotICAgICAgICByZXR1cm4gIVBvc2l0aW9uOjpub2RlSXNVc2VyU2VsZWN0Tm9uZShhbmNo
b3JOb2RlLmdldCgpKSAmJiByZW5kZXJUZXh0LT5jb250YWluc0NhcmV0T2Zmc2V0KG1fb2Zmc2V0
SW5BbmNob3IpOworICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclRleHQgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSkgeworICAgICAgICBpZiAoUG9zaXRpb246Om5vZGVJ
c1VzZXJTZWxlY3ROb25lKGFuY2hvck5vZGUuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBhdXRvIFtyZXNvbHZlZFRleHQsIHJlc29sdmVkT2Zmc2V0XSA9IFBvc2l0
aW9uKCp0aGlzKS5yZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpOworICAgICAgICByZXR1
cm4gcmVzb2x2ZWRUZXh0ICYmIHJlc29sdmVkVGV4dC0+Y29udGFpbnNDYXJldE9mZnNldChyZXNv
bHZlZE9mZnNldCk7CisgICAgfQogCiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlT3JBZnRlck5vZGVJ
c0NhbmRpZGF0ZSgqYW5jaG9yTm9kZSkpCiAgICAgICAgIHJldHVybiAoYXRTdGFydE9mTm9kZSgp
IHx8IGF0RW5kT2ZOb2RlKCkpICYmICFQb3NpdGlvbjo6bm9kZUlzVXNlclNlbGVjdE5vbmUoYW5j
aG9yTm9kZS0+cGFyZW50Tm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4
IGRhYTQ3MzVhZDM2Ni4uYjI3ZjEyMTM2ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5j
cHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZStHZXR0ZXJzSW5saW5l
cy5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgogI2lu
Y2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5j
bHVkZSAiVGV4dC5oIgpAQCAtOTA0LDExICs5MDUsMTggQEAgaW50IGNhcmV0TWF4T2Zmc2V0KGNv
bnN0IE5vZGUmIG5vZGUpCiAgICAgLy8gRm9yIHJlbmRlcmVkIHRleHQgbm9kZXMsIHJldHVybiB0
aGUgbGFzdCBwb3NpdGlvbiB0aGF0IGEgY2FyZXQgY291bGQgb2NjdXB5LgogICAgIGlmIChhdXRv
KiB0ZXh0ID0gZHluYW1pY0Rvd25jYXN0PFRleHQ+KG5vZGUpKSB7CiAgICAgICAgIGlmIChDaGVj
a2VkUHRyIHJlbmRlcmVyID0gdGV4dC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBy
ZW5kZXJlci0+Y2FyZXRNYXhPZmZzZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdExldHRl
ckFkanVzdGVkRE9NT2Zmc2V0KCpyZW5kZXJlciwgcmVuZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCkp
OwogICAgIH0KICAgICByZXR1cm4gbGFzdE9mZnNldEZvckVkaXRpbmcobm9kZSk7CiB9CiAKK3Vu
c2lnbmVkIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciwgdW5zaWduZWQgb2Zmc2V0KQoreworICAgIGlmIChhdXRvKiB0ZXh0RnJhZ21lbnQg
PSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7IHRleHRGcmFn
bWVudCAmJiB0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpCisgICAgICAgIHJldHVybiBvZmZz
ZXQgKyB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30KKwogYm9v
bCBsaW5lQnJlYWtFeGlzdHNBdFZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHBvc2l0aW9uKQogewogICAgIHJldHVybiBsaW5lQnJlYWtFeGlzdHNBdFBvc2l0aW9uKHBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
LmgKaW5kZXggMGQzODM3MmQ0NmMzLi42NjAxYzlhMmIzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZy5oCkBAIC03OSw2ICs3OSw3IEBAIE5vZGUqIHByZXZpb3VzTGVhZk5vZGUoY29uc3QgTm9k
ZSopOwogV0VCQ09SRV9FWFBPUlQgaW50IGxhc3RPZmZzZXRGb3JFZGl0aW5nKGNvbnN0IE5vZGUm
KTsKIGludCBjYXJldE1pbk9mZnNldChjb25zdCBOb2RlJik7CiBpbnQgY2FyZXRNYXhPZmZzZXQo
Y29uc3QgTm9kZSYpOwordW5zaWduZWQgZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldChjb25z
dCBSZW5kZXJPYmplY3QmLCB1bnNpZ25lZCBvZmZzZXQpOwogCiBib29sIGhhc0VkaXRhYmxlU3R5
bGUoY29uc3QgTm9kZSYsIEVkaXRhYmxlVHlwZSk7CiBib29sIGlzRWRpdGFibGVOb2RlKGNvbnN0
IE5vZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXgg
ZTYzMjdkZTViNThkLi4yNjU3ZDdlMDc1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwCkBAIC0yNDM2LDEyICsyNDM2LDEwIEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OnVwZGF0ZUFwcGVhcmFuY2UoKQogICAgIC8vIFdlIGNhbiBnZXQgaW50byBhIHN0YXRlIHdo
ZXJlIHRoZSBzZWxlY3Rpb24gZW5kcG9pbnRzIG1hcCB0byB0aGUgc2FtZSBWaXNpYmxlUG9zaXRp
b24gd2hlbiBhIHNlbGVjdGlvbiBpcyBkZWxldGVkCiAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB5
ZXQgbm90aWZ5IHRoZSBGcmFtZVNlbGVjdGlvbiBvZiB0ZXh0IHJlbW92YWwuCiAgICAgaWYgKENo
ZWNrZWRQdHIgdmlldyA9IGRvY3VtZW50LT5yZW5kZXJWaWV3KCk7IHN0YXJ0UG9zLmlzTm90TnVs
bCgpICYmIGVuZFBvcy5pc05vdE51bGwoKSAmJiBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgIT0g
c2VsZWN0aW9uLnZpc2libGVFbmQoKSkgewotICAgICAgICBDaGVja2VkUHRyIHN0YXJ0UmVuZGVy
ZXIgPSBzdGFydFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgICAgICBpbnQg
c3RhcnRPZmZzZXQgPSBzdGFydFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgICAg
ICBDaGVja2VkUHRyIGVuZFJlbmRlcmVyID0gZW5kUG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRl
cmVyKCk7Ci0gICAgICAgIGludCBlbmRPZmZzZXQgPSBlbmRQb3MuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKTsKLSAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ID49IDAgJiYgZW5kT2Zmc2V0ID49
IDApOwotICAgICAgICB2aWV3LT5zZWxlY3Rpb24oKS5zZXQoeyBzdGFydFJlbmRlcmVyLCBlbmRS
ZW5kZXJlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGVuZE9mZnNldCkgfSk7CisgICAgICAgIGF1dG8gW3N0YXJ0UmVuZGVyZXIsIHN0
YXJ0T2Zmc2V0XSA9IHN0YXJ0UG9zLnJlbmRlcmVyQW5kT2Zmc2V0KCk7CisgICAgICAgIGF1dG8g
W2VuZFJlbmRlcmVyLCBlbmRPZmZzZXRdID0gZW5kUG9zLnJlbmRlcmVyQW5kT2Zmc2V0KCk7Cisg
ICAgICAgIGlmIChzdGFydFJlbmRlcmVyICYmIGVuZFJlbmRlcmVyKQorICAgICAgICAgICAgdmll
dy0+c2VsZWN0aW9uKCkuc2V0KHsgc3RhcnRSZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW5kZXJlZFBvc2l0aW9uLmNwcAppbmRleCBhNjVmY2QxOGEwNWEuLmI0YzhlNTRiZmUwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogCiAjaW5jbHVkZSAiQ2FyZXRS
ZWN0Q29tcHV0YXRpb24uaCIKKyNpbmNsdWRlICJFZGl0aW5nLmgiCiAjaW5jbHVkZSAiSW5saW5l
UnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTm9kZUlubGluZXMuaCIKICNpbmNsdWRlICJSZW5k
ZXJPYmplY3RJbmxpbmVzLmgiCkBAIC04NSw2ICs4Niw3IEBAIFJlbmRlcmVkUG9zaXRpb246OlJl
bmRlcmVkUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0
eSkKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1f
bm9kZSA9IHBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCk7CiAgICAgYXV0byBib3hBbmRPZmZzZXQg
PSBwb3NpdGlvbi5pbmxpbmVCb3hBbmRPZmZzZXQoYWZmaW5pdHkpOwogICAgIG1fYm94ID0gYm94
QW5kT2Zmc2V0LmJveDsKICAgICBtX29mZnNldCA9IGJveEFuZE9mZnNldC5vZmZzZXQ7CkBAIC0y
MDYsNyArMjA4LDcgQEAgUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdExlZnRC
b3VuZGFyeU9mQmlEaVJ1bigpIGNvbnN0CiAgICAgQVNTRVJUKGF0TGVmdEJvdW5kYXJ5T2ZCaWRp
UnVuKCkpOwogCiAgICAgaWYgKGF0TGVmdG1vc3RPZmZzZXRJbkJveCgpKQotICAgICAgICByZXR1
cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG1fcmVuZGVyZXItPm5vZGUo
KSkuZ2V0KCksIG1fb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5
UG9zaXRpb24ocHJvdGVjdChtX25vZGUuZ2V0KCkpLmdldCgpLCBtX29mZnNldCk7CiAKICAgICBy
ZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG5leHRMZWFmT25MaW5l
KCktPnJlbmRlcmVyKCkubm9kZSgpKS5nZXQoKSwgbmV4dExlYWZPbkxpbmUoKS0+bGVmdG1vc3RD
YXJldE9mZnNldCgpKTsKIH0KQEAgLTIxNSw4ICsyMTcsMTAgQEAgUG9zaXRpb24gUmVuZGVyZWRQ
b3NpdGlvbjo6cG9zaXRpb25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdAogewogICAg
IEFTU0VSVChhdFJpZ2h0Qm91bmRhcnlPZkJpZGlSdW4oKSk7CiAKLSAgICBpZiAoYXRSaWdodG1v
c3RPZmZzZXRJbkJveCgpKQotICAgICAgICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3Np
dGlvbihwcm90ZWN0KG1fcmVuZGVyZXItPm5vZGUoKSkuZ2V0KCksIG1fb2Zmc2V0KTsKKyAgICBp
ZiAoYXRSaWdodG1vc3RPZmZzZXRJbkJveCgpKSB7CisgICAgICAgIGF1dG8gb2Zmc2V0ID0gZmly
c3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldCgqbV9yZW5kZXJlciwgbV9vZmZzZXQpOworICAgICAg
ICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG1fbm9kZS5nZXQo
KSkuZ2V0KCksIG9mZnNldCk7CisgICAgfQogCiAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVn
YWN5UG9zaXRpb24ocHJvdGVjdChwcmV2aW91c0xlYWZPbkxpbmUoKS0+cmVuZGVyZXIoKS5ub2Rl
KCkpLmdldCgpLCBwcmV2aW91c0xlYWZPbkxpbmUoKS0+cmlnaHRtb3N0Q2FyZXRPZmZzZXQoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCmluZGV4IGEzMjQw
NTk3Yzg1YS4uYmQ5NTNjYmRlZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlbmRlcmVkUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uaApAQCAtODksNiArODksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgYXRSaWdodEJv
dW5kYXJ5T2ZCaWRpUnVuKFNob3VsZE1hdGNoQmlkaUxldmVsLCB1bnNpZ25lZCBjaGFyIGJpZGlM
ZXZlbE9mUnVuKSBjb25zdDsKIAogICAgIFNpbmdsZVRocmVhZFdlYWtQdHI8Y29uc3QgUmVuZGVy
T2JqZWN0PiBtX3JlbmRlcmVyOworICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgSW5saW5l
SXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBtX2JveDsKICAgICB1bnNpZ25lZCBtX29mZnNldCB7
IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDAxZTM4
MzY2NjkxYy4uY2JjM2Y5ZmUyMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCkBAIC02MDcsNiArNjA3LDggQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRO
b2RlKCkKICAgICBDaGVja2VkUmVmIHJlbmRlcmVyID0gKnRleHROb2RlLT5yZW5kZXJlcigpOwog
ICAgIG1fbGFzdFRleHROb2RlID0gdGV4dE5vZGUucHRyKCk7CiAgICAgYXV0byByZW5kZXJlclRl
eHQgPSByZW5kZXJlclRleHRGb3JCZWhhdmlvcihyZW5kZXJlci5nZXQoKSk7CisgICAgLy8gdGV4
dEZyYWdtZW50IGlzIHRoZSByZW5kZXJlciB0aGF0IGhvbGRzIHRoZSB0cmFpbGluZyBjb250ZW50
IGFuZCBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IGxldHRlciByZW5kZXJlci4KKyAgICBD
aGVja2VkUHRyIHRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21l
bnQ+KHJlbmRlcmVyLmdldCgpKTsKIAogICAgIC8vIGhhbmRsZSBwcmUtZm9ybWF0dGVkIHRleHQK
ICAgICBpZiAoIXJlbmRlcmVyLT5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7CkBAIC02
MTUsOCArNjE3LDggQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoJyAnLCBXVEY6Om1vdmUodGV4dE5vZGUpLCBudWxscHRyLCBy
dW5TdGFydCwgcnVuU3RhcnQpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKTsgcmVuZGVyVGV4dEZyYWdtZW50ICYm
ICFtX2hhbmRsZWRGaXJzdExldHRlciAmJiAhbV9vZmZzZXQpIHsKLSAgICAgICAgICAgIGhhbmRs
ZVRleHROb2RlRmlyc3RMZXR0ZXIoKnJlbmRlclRleHRGcmFnbWVudCk7CisgICAgICAgIGlmICh0
ZXh0RnJhZ21lbnQgJiYgIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmICFtX29mZnNldCkgeworICAg
ICAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcigqdGV4dEZyYWdtZW50KTsKICAgICAg
ICAgICAgIGlmIChtX2ZpcnN0TGV0dGVyVGV4dCkgewogICAgICAgICAgICAgICAgIFN0cmluZyBm
aXJzdExldHRlciA9IG1fZmlyc3RMZXR0ZXJUZXh0LT50ZXh0KCk7CiAgICAgICAgICAgICAgICAg
ZW1pdFRleHQodGV4dE5vZGUsICpwcm90ZWN0KG1fZmlyc3RMZXR0ZXJUZXh0KSwgbV9vZmZzZXQs
IG1fb2Zmc2V0ICsgZmlyc3RMZXR0ZXIubGVuZ3RoKCkpOwpAQCAtNjI3LDkgKzYyOSwxNSBAQCBi
b29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICB9CiAgICAgICAgIGlm
IChyZW5kZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAm
JiAhbV9iZWhhdmlvcnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHls
ZVZpc2liaWxpdHkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpbnQgcmVu
ZGVyZXJUZXh0TGVuZ3RoID0gcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwotICAgICAgICBpbnQgZW5k
ID0gKHRleHROb2RlLnB0cigpID09IG1fZW5kQ29udGFpbmVyKSA/IG1fZW5kT2Zmc2V0IDogSU5U
X01BWDsKLSAgICAgICAgaW50IHJ1bkVuZCA9IHN0ZDo6bWluKHJlbmRlcmVyVGV4dExlbmd0aCwg
ZW5kKTsKKyAgICAgICAgYXV0byByZW5kZXJlclRleHRMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+
KHJlbmRlcmVyVGV4dC5sZW5ndGgoKSk7CisgICAgICAgIGF1dG8gZW5kID0gKHRleHROb2RlLnB0
cigpID09IG1fZW5kQ29udGFpbmVyKSA/IG1fZW5kT2Zmc2V0IDogSU5UX01BWDsKKyAgICAgICAg
aWYgKHRleHRGcmFnbWVudCAmJiB0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpIHsKKyAgICAg
ICAgICAgIC8vIFRoZSByZW1haW5pbmcgdGV4dCBmcmFnbWVudCdzIHRleHQgaXMgZnJhZ21lbnQt
bG9jYWwuIENvbnZlcnQgRE9NIG9mZnNldHMgdG8gZnJhZ21lbnQtbG9jYWwgc28gd2UgY2FuIGNv
bXBhcmUgYWdhaW5zdCB0aGUgcmVuZGVyZXIncyB0ZXh0IGxlbmd0aC4KKyAgICAgICAgICAgIGF1
dG8gZnJhZ21lbnRTdGFydCA9IHN0YXRpY19jYXN0PGludD4odGV4dEZyYWdtZW50LT5zdGFydCgp
KTsKKyAgICAgICAgICAgIHJ1blN0YXJ0ID0gc3RkOjptYXgoMCwgcnVuU3RhcnQgLSBmcmFnbWVu
dFN0YXJ0KTsKKyAgICAgICAgICAgIGVuZCA9IGVuZCA9PSBJTlRfTUFYID8gSU5UX01BWCA6IHN0
ZDo6bWF4KDAsIGVuZCAtIGZyYWdtZW50U3RhcnQpOworICAgICAgICB9CisgICAgICAgIGF1dG8g
cnVuRW5kID0gc3RkOjptaW4ocmVuZGVyZXJUZXh0TGVuZ3RoLCBlbmQpOwogCiAgICAgICAgIGlm
IChydW5TdGFydCA+PSBydW5FbmQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY0MCw4
ICs2NDgsOCBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogCiAgICAgc3Rk
Ojp0aWUobV90ZXh0UnVuLCBtX3RleHRSdW5Mb2dpY2FsT3JkZXJDYWNoZSkgPSBJbmxpbmVJdGVy
YXRvcjo6Zmlyc3RUZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3IocmVuZGVyZXIuZ2V0KCkpOwogCi0g
ICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyVGV4dEZyYWdtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJl
bmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpOyByZW5kZXJUZXh0RnJhZ21lbnQgJiYgIW1faGFu
ZGxlZEZpcnN0TGV0dGVyICYmICFtX29mZnNldCkKLSAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJz
dExldHRlcigqcmVuZGVyVGV4dEZyYWdtZW50KTsKKyAgICBpZiAodGV4dEZyYWdtZW50ICYmICFt
X2hhbmRsZWRGaXJzdExldHRlciAmJiAhbV9vZmZzZXQpCisgICAgICAgIGhhbmRsZVRleHROb2Rl
Rmlyc3RMZXR0ZXIoKnRleHRGcmFnbWVudCk7CiAgICAgZWxzZSBpZiAoIW1fdGV4dFJ1biAmJiBy
ZW5kZXJlclRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFtX2JlaGF2aW9ycy5jb250YWlu
cyhUZXh0SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC02NjUsMTIgKzY3MywyMSBAQCB2b2lkIFRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dFJ1bigpCiAKICAgICBhdXRvIFtmaXJzdFRleHRSdW4sIG9yZGVyQ2FjaGVd
ID0gSW5saW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKHJlbmRlcmVy
KTsKIAotICAgIGF1dG8gcmVuZGVyZXJUZXh0ID0gcmVuZGVyZXJUZXh0Rm9yQmVoYXZpb3IocmVu
ZGVyZXIuZ2V0KCkpOwotICAgIHVuc2lnbmVkIHJhbmdlU3RhcnQgPSBtX29mZnNldDsKLSAgICBh
dXRvIHJhbmdlRW5kID0gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4geyB9OwotICAgIGlmICh0ZXh0
Tm9kZS5wdHIoKSA9PSBtX2VuZENvbnRhaW5lcikKLSAgICAgICAgcmFuZ2VFbmQgPSBtX2VuZE9m
ZnNldDsKKyAgICAvLyBGb3IgcmVtYWluaW5nIHRleHQgZnJhZ21lbnRzIGFmdGVyIGEgZmlyc3Qt
bGV0dGVyIHNwbGl0LCB0ZXh0IGJveCBvZmZzZXRzIGFyZSBmcmFnbWVudC1sb2NhbCBidXQgbV9v
ZmZzZXQvbV9lbmRPZmZzZXQgYXJlIERPTSBvZmZzZXRzLgorICAgIHVuc2lnbmVkIHJlbWFpbmlu
Z0ZyYWdtZW50U3RhcnQgPSAwOworICAgIGlmIChhdXRvKiByZW5kZXJUZXh0ID0gZHluYW1pY0Rv
d25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIuZ2V0KCkpOyByZW5kZXJUZXh0ICYm
IHJlbmRlclRleHQtPmZpcnN0TGV0dGVyKCkpCisgICAgICAgIHJlbWFpbmluZ0ZyYWdtZW50U3Rh
cnQgPSByZW5kZXJUZXh0LT5zdGFydCgpOworCisgICAgYXV0byB0b0ZyYWdtZW50TG9jYWwgPSBb
Jl0odW5zaWduZWQgZG9tT2Zmc2V0KSB7CisgICAgICAgIHJldHVybiBkb21PZmZzZXQgPiByZW1h
aW5pbmdGcmFnbWVudFN0YXJ0ID8gZG9tT2Zmc2V0IC0gcmVtYWluaW5nRnJhZ21lbnRTdGFydCA6
IDA7CisgICAgfTsKKyAgICBhdXRvIHRvRE9NT2Zmc2V0ID0gWyZdKHVuc2lnbmVkIGxvY2FsT2Zm
c2V0KSB7CisgICAgICAgIHJldHVybiBsb2NhbE9mZnNldCArIHJlbWFpbmluZ0ZyYWdtZW50U3Rh
cnQ7CisgICAgfTsKIAorICAgIGF1dG8gcmVuZGVyZXJUZXh0ID0gcmVuZGVyZXJUZXh0Rm9yQmVo
YXZpb3IocmVuZGVyZXIuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2VTdGFydCA9IHRvRnJhZ21lbnRM
b2NhbChtX29mZnNldCk7CisgICAgYXV0byByYW5nZUVuZCA9IHRleHROb2RlLnB0cigpID09IG1f
ZW5kQ29udGFpbmVyID8gc3RkOjptYWtlX29wdGlvbmFsKHRvRnJhZ21lbnRMb2NhbChtX2VuZE9m
ZnNldCkpIDogc3RkOjpudWxsb3B0OwogICAgIHdoaWxlIChtX3RleHRSdW4pIHsKICAgICAgICAg
YXV0byB0ZXh0UnVuU3RhcnQgPSBtX3RleHRSdW4tPnN0YXJ0KCk7CiAgICAgICAgIGF1dG8gdGV4
dFJ1bkVuZCA9IHRleHRSdW5TdGFydCArIG1fdGV4dFJ1bi0+bGVuZ3RoKCk7CkBAIC03MDQsNyAr
NzIxLDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRSdW4oKQogICAgICAgICAgICAg
Ly8gVGhpcyBlZmZlY3RpdmVseSB0cmFuc2xhdGVzIG5ld2xpbmVzIGFuZCB0YWJzIHRvIHNwYWNl
cyB3aXRob3V0IGNvcHlpbmcgdGhlIHRleHQuCiAgICAgICAgICAgICBpZiAoaXNOZXdsaW5lT3JU
YWIocmVuZGVyZXJUZXh0W3J1blN0YXJ0XSkpIHsKICAgICAgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKCcgJywgdGV4dE5vZGUuY29weVJlZigpLCBudWxscHRyLCBydW5TdGFydCwgcnVuU3RhcnQg
KyAxKTsKLSAgICAgICAgICAgICAgICBtX29mZnNldCA9IHJ1blN0YXJ0ICsgMTsKKyAgICAgICAg
ICAgICAgICBtX29mZnNldCA9IHRvRE9NT2Zmc2V0KHJ1blN0YXJ0ICsgMSk7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGF1dG8gc3VicnVuRW5kID0gcnVuU3RhcnQgKyAx
OwogICAgICAgICAgICAgICAgIGZvciAoOyBzdWJydW5FbmQgPCBydW5FbmQ7ICsrc3VicnVuRW5k
KSB7CkBAIC03MTYsMTMgKzczMywxMyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dFJ1
bigpCiAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0U3BhY2VDb2xsYXBzZWRCeU5leHROb25U
ZXh0UnVuKQogICAgICAgICAgICAgICAgICAgICAgICAgKytzdWJydW5FbmQ7IC8vIHJ1bkVuZCBz
dG9wcGVkIGJlZm9yZSBsYXN0IHNwYWNlLiBJbmNyZW1lbnQgYnkgb25lIHRvIHJlc3RvcmUgdGhl
IHNwYWNlLgogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX29mZnNldCA9IHN1
YnJ1bkVuZDsKKyAgICAgICAgICAgICAgICBtX29mZnNldCA9IHRvRE9NT2Zmc2V0KHN1YnJ1bkVu
ZCk7CiAgICAgICAgICAgICAgICAgZW1pdFRleHQodGV4dE5vZGUsIHJlbmRlcmVyLCBydW5TdGFy
dCwgc3VicnVuRW5kKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gSWYgd2UgYXJl
IGRvaW5nIGEgc3VicnVuIHRoYXQgZG9lc24ndCBnbyB0byB0aGUgZW5kIG9mIHRoZSB0ZXh0IGJv
eCwKICAgICAgICAgICAgIC8vIGNvbWUgYmFjayBhZ2FpbiB0byBmaW5pc2ggaGFuZGxpbmcgdGhp
cyB0ZXh0IGJveDsgZG9uJ3QgYWR2YW5jZSB0byB0aGUgbmV4dCBvbmUuCi0gICAgICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9zaXRpb25FbmRPZmZzZXQpIDwgdGV4dFJ1bkVu
ZCkKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wb3NpdGlvbkVuZE9m
ZnNldCkgPCB0b0RPTU9mZnNldCh0ZXh0UnVuRW5kKSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgICAgIC8vIEFkdmFuY2UgYW5kIHJldHVybgpAQCAtMTIwMSw4ICsxMjE4LDEx
IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChUZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVGV4
dCYgcmVuZGVyZXIsIGludCB0ZXh0U3RhcnRPCiAKICAgICBtX3Bvc2l0aW9uTm9kZSA9IHRleHRO
b2RlOwogICAgIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZSA9IG51bGxwdHI7Ci0gICAgbV9wb3Np
dGlvblN0YXJ0T2Zmc2V0ID0gdGV4dFN0YXJ0T2Zmc2V0OwotICAgIG1fcG9zaXRpb25FbmRPZmZz
ZXQgPSB0ZXh0RW5kT2Zmc2V0OworICAgIC8vIEZvciByZW1haW5pbmcgdGV4dCBmcmFnbWVudHMg
YWZ0ZXIgYSBmaXJzdC1sZXR0ZXIgc3BsaXQsIHRoZSB0ZXh0IG9mZnNldHMgYXJlCisgICAgLy8g
ZnJhZ21lbnQtbG9jYWwgYnV0IHBvc2l0aW9uIG9mZnNldHMgbmVlZCB0byBiZSBET00tcmVsYXRp
dmUgZm9yIHJhbmdlKCkgdG8KKyAgICAvLyByZXR1cm4gY29ycmVjdCBib3VuZGFyeSBwb2ludHMg
KHVzZWQgYnkgd29yZC9zZW50ZW5jZSBib3VuZGFyeSBkZXRlY3Rpb24pLgorICAgIG1fcG9zaXRp
b25TdGFydE9mZnNldCA9IGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQocmVuZGVyZXIsIHRl
eHRTdGFydE9mZnNldCk7CisgICAgbV9wb3NpdGlvbkVuZE9mZnNldCA9IGZpcnN0TGV0dGVyQWRq
dXN0ZWRET01PZmZzZXQocmVuZGVyZXIsIHRleHRFbmRPZmZzZXQpOwogCiAgICAgbV9sYXN0Q2hh
cmFjdGVyID0gc3RyaW5nW3RleHRFbmRPZmZzZXQgLSAxXTsKICAgICBtX2NvcHlhYmxlVGV4dC5z
ZXQoV1RGOjptb3ZlKHN0cmluZyksIHRleHRTdGFydE9mZnNldCwgdGV4dEVuZE9mZnNldCAtIHRl
eHRTdGFydE9mZnNldCk7CkBAIC0xMzYxLDcwICsxMzgxLDUyIEBAIGJvb2wgU2ltcGxpZmllZEJh
Y2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogewogICAgIG1fbGFzdFRleHRO
b2RlID0gZG93bmNhc3Q8VGV4dD4obV9ub2RlLmdldCgpKTsKIAotICAgIGludCBzdGFydE9mZnNl
dDsKLSAgICBpbnQgb2Zmc2V0SW5Ob2RlOwotICAgIENoZWNrZWRQdHIgcmVuZGVyZXIgPSBoYW5k
bGVGaXJzdExldHRlcihzdGFydE9mZnNldCwgb2Zmc2V0SW5Ob2RlKTsKLSAgICBpZiAoIXJlbmRl
cmVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBDaGVja2VkUmVmIHJlbmRlcmVyID0gZG93
bmNhc3Q8UmVuZGVyVGV4dD4oKm1fbm9kZS0+cmVuZGVyZXIoKSk7CisgICAgYXV0byBzdGFydE9m
ZnNldCA9IChtX25vZGUgPT0gbV9zdGFydENvbnRhaW5lcikgPyBtX3N0YXJ0T2Zmc2V0IDogMDsK
IAotICAgIFN0cmluZyB0ZXh0ID0gcmVuZGVyZXItPnRleHQoKTsKKyAgICBhdXRvIHRleHQgPSBy
ZW5kZXJlci0+dGV4dCgpOwogICAgIGlmICghcmVuZGVyZXItPmhhc1JlbmRlcmVkVGV4dCgpICYm
IHRleHQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHN0YXJ0T2Zm
c2V0ICsgb2Zmc2V0SW5Ob2RlID09IG1fb2Zmc2V0KSB7Ci0gICAgICAgIEFTU0VSVCghbV9zaG91
bGRIYW5kbGVGaXJzdExldHRlcik7CisgICAgaWYgKHN0YXJ0T2Zmc2V0ID09IG1fb2Zmc2V0KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIE5vdGhpbmcgdG8gZW1pdCB3aGVuIHRoZSBy
ZW5kZXJlciB0ZXh0IGlzIGVtcHR5IChlLmcuIHRoZSByZW1haW5pbmcgdGV4dAorICAgIC8vIGZy
YWdtZW50IGFmdGVyIGEgZmlyc3QtbGV0dGVyIHNwbGl0IGNvdmVycyBubyBjaGFyYWN0ZXJzKS4K
KyAgICBpZiAoIXRleHQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KIAog
ICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSBtX29mZnNldDsKLSAgICBtX29mZnNldCA9IHN0YXJ0
T2Zmc2V0ICsgb2Zmc2V0SW5Ob2RlOworICAgIG1fb2Zmc2V0ID0gc3RhcnRPZmZzZXQ7CiAgICAg
bV9wb3NpdGlvbk5vZGUgPSBtX25vZGU7CiAgICAgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0ID0gbV9v
ZmZzZXQ7CiAKLSAgICBBU1NFUlQobV9wb3NpdGlvblN0YXJ0T2Zmc2V0IDwgbV9wb3NpdGlvbkVu
ZE9mZnNldCk7Ci0gICAgQVNTRVJUKG1fcG9zaXRpb25TdGFydE9mZnNldCAtIG9mZnNldEluTm9k
ZSA+PSAwKTsKLSAgICBBU1NFUlQobV9wb3NpdGlvbkVuZE9mZnNldCAtIG9mZnNldEluTm9kZSA+
IDApOwotICAgIEFTU0VSVChtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlIDw9IHN0
YXRpY19jYXN0PGludD4odGV4dC5sZW5ndGgoKSkpOwotCi0gICAgbV9sYXN0Q2hhcmFjdGVyID0g
dGV4dFttX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlIC0gMV07Ci0gICAgbV9jb3B5
YWJsZVRleHQuc2V0KFdURjo6bW92ZSh0ZXh0KSwgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0IC0gb2Zm
c2V0SW5Ob2RlLCBtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gbV9wb3NpdGlvblN0YXJ0T2Zmc2V0KTsK
LSAgICBtX3RleHQgPSBtX2NvcHlhYmxlVGV4dC50ZXh0KCk7Ci0KLSAgICByZXR1cm4gIW1fc2hv
dWxkSGFuZGxlRmlyc3RMZXR0ZXI7Ci19CisgICAgLy8gRm9yIHJlbWFpbmluZyB0ZXh0IGZyYWdt
ZW50cyBhZnRlciBhIGZpcnN0LWxldHRlciBzcGxpdCwgRE9NIG9mZnNldHMgKG1fcG9zaXRpb25T
dGFydE9mZnNldCwKKyAgICAvLyBtX3Bvc2l0aW9uRW5kT2Zmc2V0KSBkaWZmZXIgZnJvbSBmcmFn
bWVudC1sb2NhbCBvZmZzZXRzIHVzZWQgdG8gaW5kZXggaW50byByZW5kZXJlciB0ZXh0LgorICAg
IC8vIENvbnZlcnQgdG8gZnJhZ21lbnQtbG9jYWwgZm9yIHRleHQgYWNjZXNzLCBrZWVwaW5nIERP
TSBvZmZzZXRzIGZvciByYW5nZSgpLgorICAgIHVuc2lnbmVkIGZyYWdtZW50U3RhcnQgPSAwOwor
ICAgIGlmIChhdXRvKiByZW5kZXJUZXh0ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFn
bWVudD4ocmVuZGVyZXIuZ2V0KCkpOyByZW5kZXJUZXh0ICYmIHJlbmRlclRleHQtPmZpcnN0TGV0
dGVyKCkgJiYgc3RhcnRPZmZzZXQgPj0gc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJUZXh0LT5zdGFy
dCgpKSkKKyAgICAgICAgZnJhZ21lbnRTdGFydCA9IHJlbmRlclRleHQtPnN0YXJ0KCk7CiAKLUNo
ZWNrZWRQdHI8UmVuZGVyVGV4dD4gU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFu
ZGxlRmlyc3RMZXR0ZXIoaW50JiBzdGFydE9mZnNldCwgaW50JiBvZmZzZXRJbk5vZGUpCi17Ci0g
ICAgQ2hlY2tlZFJlZiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX25vZGUtPnJl
bmRlcmVyKCkpOwotICAgIHN0YXJ0T2Zmc2V0ID0gKG1fbm9kZSA9PSBtX3N0YXJ0Q29udGFpbmVy
KSA/IG1fc3RhcnRPZmZzZXQgOiAwOworICAgIC8vIEFmdGVyIGVkaXRpbmcgbXV0YXRpb25zIChl
LmcuIGRlbGV0aW5nIHRoZSBsYXN0IGNoYXJhY3RlciksCisgICAgLy8gbV9wb3NpdGlvbkVuZE9m
ZnNldCBjYW4gZXhjZWVkIHRoZSB0ZXh0IG5vZGUncyBjdXJyZW50IGxlbmd0aCBpbiBET00gc3Bh
Y2UuCisgICAgYXV0byB0ZXh0TGVuZ3RoSW5ET01TcGFjZSA9IHN0YXRpY19jYXN0PGludD4odGV4
dC5sZW5ndGgoKSArIGZyYWdtZW50U3RhcnQpOworICAgIGlmIChtX3Bvc2l0aW9uRW5kT2Zmc2V0
ID4gdGV4dExlbmd0aEluRE9NU3BhY2UpCisgICAgICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSB0
ZXh0TGVuZ3RoSW5ET01TcGFjZTsKIAotICAgIENoZWNrZWRQdHIgZnJhZ21lbnQgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7Ci0gICAgaWYgKCFmcmFnbWVu
dCkgewotICAgICAgICBvZmZzZXRJbk5vZGUgPSAwOwotICAgICAgICByZXR1cm4gcmVuZGVyZXI7
Ci0gICAgfQorICAgIGludCBsb2NhbFN0YXJ0ID0gbV9wb3NpdGlvblN0YXJ0T2Zmc2V0IC0gZnJh
Z21lbnRTdGFydDsKKyAgICBpbnQgbG9jYWxFbmQgPSBtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gZnJh
Z21lbnRTdGFydDsKIAotICAgIGludCBvZmZzZXRBZnRlckZpcnN0TGV0dGVyID0gZnJhZ21lbnQt
PnN0YXJ0KCk7Ci0gICAgaWYgKHN0YXJ0T2Zmc2V0ID49IG9mZnNldEFmdGVyRmlyc3RMZXR0ZXIp
IHsKLSAgICAgICAgQVNTRVJUKCFtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVyKTsKLSAgICAgICAg
b2Zmc2V0SW5Ob2RlID0gb2Zmc2V0QWZ0ZXJGaXJzdExldHRlcjsKLSAgICAgICAgcmV0dXJuIHJl
bmRlcmVyOwotICAgIH0KLQotICAgIGlmICghbV9zaG91bGRIYW5kbGVGaXJzdExldHRlciAmJiBz
dGFydE9mZnNldCArIG9mZnNldEFmdGVyRmlyc3RMZXR0ZXIgPCBtX29mZnNldCkgewotICAgICAg
ICBtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVyID0gdHJ1ZTsKLSAgICAgICAgb2Zmc2V0SW5Ob2Rl
ID0gb2Zmc2V0QWZ0ZXJGaXJzdExldHRlcjsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwotICAg
IH0KLQotICAgIG1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgPSBmYWxzZTsKLSAgICBvZmZzZXRJ
bk5vZGUgPSAwOwotICAgIENoZWNrZWRQdHIgZmlyc3RMZXR0ZXJSZW5kZXJlciA9IGZpcnN0UmVu
ZGVyVGV4dEluRmlyc3RMZXR0ZXIocHJvdGVjdChmcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKSkpOwor
ICAgIEFTU0VSVChtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgPCBtX3Bvc2l0aW9uRW5kT2Zmc2V0KTsK
KyAgICBBU1NFUlQobG9jYWxTdGFydCA+PSAwKTsKKyAgICBBU1NFUlQobG9jYWxFbmQgPiAwKTsK
KyAgICBBU1NFUlQobG9jYWxFbmQgPD0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0Lmxlbmd0aCgpKSk7
CiAKLSAgICBtX29mZnNldCA9IGZpcnN0TGV0dGVyUmVuZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCk7
Ci0gICAgbV9vZmZzZXQgKz0gY29sbGFwc2VkU3BhY2VMZW5ndGgoKmZpcnN0TGV0dGVyUmVuZGVy
ZXIsIG1fb2Zmc2V0KTsKKyAgICBtX2xhc3RDaGFyYWN0ZXIgPSB0ZXh0W2xvY2FsRW5kIC0gMV07
CisgICAgbV9jb3B5YWJsZVRleHQuc2V0KFdURjo6bW92ZSh0ZXh0KSwgbG9jYWxTdGFydCwgbV9w
b3NpdGlvbkVuZE9mZnNldCAtIG1fcG9zaXRpb25TdGFydE9mZnNldCk7CisgICAgbV90ZXh0ID0g
bV9jb3B5YWJsZVRleHQudGV4dCgpOwogCi0gICAgcmV0dXJuIGZpcnN0TGV0dGVyUmVuZGVyZXI7
CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVy
YXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5oCmluZGV4IGY2MWQ0ZDlkZWExMC4uNDdmNzQ5NDMxMWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTIwMSw3ICsyMDEsNiBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZvaWQgZXhpdE5vZGUoKTsKICAgICBib29sIGhhbmRsZVRleHROb2RlKCk7Ci0gICAg
Q2hlY2tlZFB0cjxSZW5kZXJUZXh0PiBoYW5kbGVGaXJzdExldHRlcihpbnQmIHN0YXJ0T2Zmc2V0
LCBpbnQmIG9mZnNldEluTm9kZSk7CiAgICAgYm9vbCBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsK
ICAgICBib29sIGhhbmRsZU5vblRleHROb2RlKCk7CiAgICAgdm9pZCBlbWl0Q2hhcmFjdGVyKGNo
YXIxNl90LCBSZWZQdHI8Tm9kZT4mJiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsK
QEAgLTIzNiw4ICsyMzUsNiBAQCBwcml2YXRlOgogICAgIC8vIFdoZXRoZXIgbV9ub2RlIGhhcyBh
ZHZhbmNlZCBiZXlvbmQgdGhlIGl0ZXJhdGlvbiByYW5nZSAoaS5lLiBtX3N0YXJ0Q29udGFpbmVy
KS4KICAgICBib29sIG1faGF2ZVBhc3NlZFN0YXJ0Q29udGFpbmVyIHsgZmFsc2UgfTsKIAotICAg
IC8vIFNob3VsZCBoYW5kbGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyIGluIHRoZSBuZXh0IGNhbGwg
dG8gaGFuZGxlVGV4dE5vZGUuCi0gICAgYm9vbCBtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVyIHsg
ZmFsc2UgfTsKIH07CiAKIC8vIEJ1aWxkcyBvbiB0aGUgdGV4dCBpdGVyYXRvciwgYWRkaW5nIGEg
Y2hhcmFjdGVyIHBvc2l0aW9uIHNvIHdlIGNhbiB3YWxrIG9uZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IGY1ZDFlZWU1ODZjNy4uNzhkMTA4YzZkYzE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC00NCw3
ICs0NCw5IEBACiAjaW5jbHVkZSAiUG9zaXRpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmFuZ2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKKyNpbmNsdWRlICJSZW5kZXJCb3hNb2Rl
bE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJS
ZW5kZXJUZXh0RnJhZ21lbnQuaCIKICNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUg
IlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKQEAgLTU4LDYgKzYwLDE2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAorLy8gVGhl
IGFub255bW91cyB0ZXh0IHJlbmRlcmVyIGluc2lkZSA6OmZpcnN0LWxldHRlciBoYXMgbm8gRE9N
IG5vZGUuCitzdGF0aWMgUmVuZGVyVGV4dEZyYWdtZW50KiByZW1haW5pbmdUZXh0RnJhZ21lbnRG
b3JGaXJzdExldHRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQoreworICAgIGlmIChy
ZW5kZXJlci5ub2RlKCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgaWYgKGF1dG8qIHBhcmVu
dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ocmVuZGVyZXIucGFyZW50
KCkpKQorICAgICAgICByZXR1cm4gcGFyZW50LT5maXJzdExldHRlclJlbWFpbmluZ1RleHQoKTsK
KyAgICByZXR1cm4geyB9OworfQorCiBWaXNpYmxlUG9zaXRpb246OlZpc2libGVQb3NpdGlvbihj
b25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIEFmZmluaXR5IGFmZmluaXR5KQogICAgIDogbV9kZWVw
UG9zaXRpb24geyBjYW5vbmljYWxQb3NpdGlvbihwb3NpdGlvbikgfQogewpAQCAtMTQwLDcgKzE1
Miw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5k
aWRhdGUoKSBjb25zdAogICAgICAgICAgICAgaWYgKChyZW5kZXJlci0+aXNCbG9ja0xldmVsUmVw
bGFjZWRPckF0b21pY0lubGluZSgpIHx8IHJlbmRlcmVyLT5pc0JSKCkpICYmIG9mZnNldCA9PSBi
b3gtPnJpZ2h0bW9zdENhcmV0T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGJveC0+
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVl
cFBvc2l0aW9uKTsKIAotICAgICAgICAgICAgaWYgKCFyZW5kZXJlci0+bm9kZSgpKSB7CisgICAg
ICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkgJiYgIXJlbWFpbmluZ1RleHRGcmFnbWVudEZv
ckZpcnN0TGV0dGVyKCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgICAgICBib3gudHJhdmVyc2VM
aW5lTGVmdHdhcmRPbkxpbmUoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJveCkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRS
ID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5l
eHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKQEAgLTE4Miw4ICsx
OTQsOCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2Fu
ZGlkYXRlKCkgY29uc3QKICAgICAgICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IHByaW1h
cnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzQm94KSB7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFN0YXJ0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIKLSAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0
b3I6OmZpcnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoYm94LT5saW5lQm94KCks
IG9yZGVyQ2FjaGUpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjps
YXN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoYm94LT5saW5lQm94KCksIG9yZGVy
Q2FjaGUpOworICAgICAgICAgICAgICAgICAgICAgICAgPyBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RM
ZWFmT25MaW5lSW5Mb2dpY2FsT3JkZXIoYm94LT5saW5lQm94KCksIG9yZGVyQ2FjaGUpCisgICAg
ICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9n
aWNhbE9yZGVyKGJveC0+bGluZUJveCgpLCBvcmRlckNhY2hlKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGxvZ2ljYWxTdGFydCkgewogICAgICAgICAgICAgICAgICAgICAgICAgYm94ID0gbG9n
aWNhbFN0YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5k
ZXJlcigpOwpAQCAtMjUzLDcgKzI2NSw5IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVm
dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBwID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90
ZWN0KHJlbmRlcmVyLT5ub2RlKCkpLmdldCgpLCBvZmZzZXQpOworICAgICAgICBhdXRvKiByZW1h
aW5pbmdGcmFnbWVudCA9IHJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKCpyZW5k
ZXJlcik7CisgICAgICAgIGF1dG8qIG5vZGUgPSByZW1haW5pbmdGcmFnbWVudCA/IHJlbWFpbmlu
Z0ZyYWdtZW50LT50ZXh0Tm9kZSgpIDogcmVuZGVyZXItPm5vZGUoKTsKKyAgICAgICAgcCA9IG1h
a2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChub2RlKS5nZXQoKSwgZmlyc3RMZXR0
ZXJBZGp1c3RlZERPTU9mZnNldCgqcmVuZGVyZXIsIG9mZnNldCkpOwogCiAgICAgICAgIGlmICgo
cC5pc0NhbmRpZGF0ZSgpICYmIHAuZG93bnN0cmVhbSgpICE9IGRvd25zdHJlYW1TdGFydCkgfHwg
cC5hdFN0YXJ0T2ZUcmVlKCkgfHwgcC5hdEVuZE9mVHJlZSgpKQogICAgICAgICAgICAgcmV0dXJu
IHA7CkBAIC0zMDUsNyArMzE5LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZp
c3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgaWYgKChyZW5kZXJl
ci0+aXNCbG9ja0xldmVsUmVwbGFjZWRPckF0b21pY0lubGluZSgpIHx8IHJlbmRlcmVyLT5pc0JS
KCkpICYmIG9mZnNldCA9PSBib3gtPmxlZnRtb3N0Q2FyZXRPZmZzZXQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBuZXh0VmlzdWFsbHlE
aXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGlu
Y3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwogCi0gICAgICAgICAgICBpZiAoIXJlbmRlcmVy
LT5ub2RlKCkpIHsKKyAgICAgICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUoKSAmJiAhcmVtYWlu
aW5nVGV4dEZyYWdtZW50Rm9yRmlyc3RMZXR0ZXIoKnJlbmRlcmVyKSkgewogICAgICAgICAgICAg
ICAgIGJveC50cmF2ZXJzZUxpbmVSaWdodHdhcmRPbkxpbmUoKTsKICAgICAgICAgICAgICAgICBp
ZiAoIWJveCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVw
UG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0
aW9uKTsKQEAgLTQyMiw3ICs0MzYsOSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0
VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCi0gICAgICAgIHAgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHByb3Rl
Y3QocmVuZGVyZXItPm5vZGUoKSkuZ2V0KCksIG9mZnNldCk7CisgICAgICAgIGF1dG8qIHJlbWFp
bmluZ0ZyYWdtZW50ID0gcmVtYWluaW5nVGV4dEZyYWdtZW50Rm9yRmlyc3RMZXR0ZXIoKnJlbmRl
cmVyKTsKKyAgICAgICAgYXV0byogbm9kZSA9IHJlbWFpbmluZ0ZyYWdtZW50ID8gcmVtYWluaW5n
RnJhZ21lbnQtPnRleHROb2RlKCkgOiByZW5kZXJlci0+bm9kZSgpOworICAgICAgICBwID0gbWFr
ZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG5vZGUpLmdldCgpLCBmaXJzdExldHRl
ckFkanVzdGVkRE9NT2Zmc2V0KCpyZW5kZXJlciwgb2Zmc2V0KSk7CiAKICAgICAgICAgaWYgKChw
LmlzQ2FuZGlkYXRlKCkgJiYgcC5kb3duc3RyZWFtKCkgIT0gZG93bnN0cmVhbVN0YXJ0KSB8fCBw
LmF0U3RhcnRPZlRyZWUoKSB8fCBwLmF0RW5kT2ZUcmVlKCkpCiAgICAgICAgICAgICByZXR1cm4g
cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCAyZDQyMjdhYTBm
OTEuLjE3MWE5NDkwNzQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQm91bmRhcnlQb2ludElubGluZXMuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJF
ZGl0aW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgpAQCAtODU1LDcgKzg1Niw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
ZW5kUG9zaXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVuZHBvaW50
CiAgICAgICAgIGludCBlbmRPZmZzZXQgPSBlbmRUZXh0Qm94LnN0YXJ0KCk7CiAgICAgICAgIGlm
ICghZW5kVGV4dEJveC5pc0xpbmVCcmVhaygpKQogICAgICAgICAgICAgZW5kT2Zmc2V0ICs9IGVu
ZFRleHRCb3gubGVuZ3RoKCk7Ci0gICAgICAgIHBvcyA9IFBvc2l0aW9uKGVuZFRleHROb2RlLnJl
bGVhc2VOb25OdWxsKCksIGVuZE9mZnNldCk7CisgICAgICAgIHBvcyA9IFBvc2l0aW9uKGVuZFRl
eHROb2RlLnJlbGVhc2VOb25OdWxsKCksIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoZW5k
VGV4dEJveC5yZW5kZXJlcigpLCBlbmRPZmZzZXQpKTsKICAgICB9IGVsc2UKICAgICAgICAgcG9z
ID0gcG9zaXRpb25BZnRlck5vZGUoKmVuZE5vZGUpOwogCkBAIC0xMjMzLDcgKzEyMzQsNyBAQCBS
ZWZQdHI8Tm9kZT4gZmluZEVuZE9mUGFyYWdyYXBoKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogaGln
aGVzdFJvb3QsIE5vZGUqIHN0YXlJbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIG5vZGUgPSBuOwotICAgICAgICAgICAgb2Zmc2V0ID0gci0+Y2FyZXRNYXhP
ZmZzZXQoKTsKKyAgICAgICAgICAgIG9mZnNldCA9IGNhcmV0TWF4T2Zmc2V0KCpuKTsKICAgICAg
ICAgICAgIG4gPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpuLCBzdGF5SW5zaWRlQmxvY2spOwogICAg
ICAgICB9IGVsc2UgaWYgKGVkaXRpbmdJZ25vcmVzQ29udGVudCgqbikgfHwgaXNSZW5kZXJlZFRh
YmxlKG4uZ2V0KCkpKSB7CiAgICAgICAgICAgICBub2RlID0gbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNDUwY2ZkYTAwOWZiLi4wZjcwNWQ5MTQ3MjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC01MCw2ICs1
MCw3IEBACiAjaW5jbHVkZSAiTG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3
LmgiCiAjaW5jbHVkZSAiTm9kZUlubGluZXMuaCIKKyNpbmNsdWRlICJFZGl0aW5nLmgiCiAjaW5j
bHVkZSAiT3V0bGluZVBhaW50ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHNl
dWRvRWxlbWVudC5oIgpAQCAtMTkxNCw3ICsxOTE1LDcgQEAgUG9zaXRpb25XaXRoQWZmaW5pdHkg
UmVuZGVyT2JqZWN0OjpjcmVhdGVQb3NpdGlvbldpdGhBZmZpbml0eShpbnQgb2Zmc2V0LCBBZmZp
bmkKICAgICBpZiAoUmVmUHRyIG5vZGUgPSBub25Qc2V1ZG9Ob2RlKCkpIHsKICAgICAgICAgaWYg
KCFub2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkpIHsKICAgICAgICAgICAgIC8vIElmIGl0IGNhbiBi
ZSBmb3VuZCwgd2UgcHJlZmVyIGEgdmlzdWFsbHkgZXF1aXZhbGVudCBwb3NpdGlvbiB0aGF0IGlz
IGVkaXRhYmxlLiAKLSAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gbWFrZURlcHJlY2F0
ZWRMZWdhY3lQb3NpdGlvbihub2RlLmdldCgpLCBvZmZzZXQpOworICAgICAgICAgICAgUG9zaXRp
b24gcG9zaXRpb24gPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG5vZGUuZ2V0KCksIGZp
cnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoKnRoaXMsIG9mZnNldCkpOwogICAgICAgICAgICAg
UG9zaXRpb24gY2FuZGlkYXRlID0gcG9zaXRpb24uZG93bnN0cmVhbShDYW5Dcm9zc0VkaXRpbmdC
b3VuZGFyeSk7CiAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPmhh
c0VkaXRhYmxlU3R5bGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRoQWZm
aW5pdHkoY2FuZGlkYXRlLCBhZmZpbml0eSk7CkBAIC0xOTIzLDcgKzE5MjQsNyBAQCBQb3NpdGlv
bldpdGhBZmZpbml0eSBSZW5kZXJPYmplY3Q6OmNyZWF0ZVBvc2l0aW9uV2l0aEFmZmluaXR5KGlu
dCBvZmZzZXQsIEFmZmluaQogICAgICAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbldpdGhBZmZp
bml0eShjYW5kaWRhdGUsIGFmZmluaXR5KTsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTog
RWxpbWluYXRlIGxlZ2FjeSBlZGl0aW5nIHBvc2l0aW9ucwotICAgICAgICByZXR1cm4gUG9zaXRp
b25XaXRoQWZmaW5pdHkobWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLmdldCgpLCBv
ZmZzZXQpLCBhZmZpbml0eSk7CisgICAgICAgIHJldHVybiBQb3NpdGlvbldpdGhBZmZpbml0eSht
YWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG5vZGUuZ2V0KCksIGZpcnN0TGV0dGVyQWRqdXN0
ZWRET01PZmZzZXQoKnRoaXMsIG9mZnNldCkpLCBhZmZpbml0eSk7CiAgICAgfQogCiAgICAgLy8g
V2UgZG9uJ3Qgd2FudCB0byBjcm9zcyB0aGUgYm91bmRhcnkgYmV0d2VlbiBlZGl0YWJsZSBhbmQg
bm9uLWVkaXRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dEZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJh
Z21lbnQuY3BwCmluZGV4IDlhOTEyYzI2N2NhOS4uZmZkNmJkYTkxNzcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcApAQCAtNjgsNyArNjgs
MTQgQEAgUmVuZGVyVGV4dEZyYWdtZW50Ojp+UmVuZGVyVGV4dEZyYWdtZW50KCkKIAogYm9vbCBS
ZW5kZXJUZXh0RnJhZ21lbnQ6OmNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHRleHROb2RlKCkgJiYgdGV4dE5vZGUoKS0+aGFzRWRpdGFibGVTdHlsZSgpOworICAgIGlm
IChhdXRvKiB0ZXh0Tm9kZSA9IHRoaXMtPnRleHROb2RlKCkpIHsKKyAgICAgICAgLy8gUmVtYWlu
aW5nICh0cmFpbGluZykgdGV4dCBmcmFnbWVudHMgd2l0aCBmaXJzdC1sZXR0ZXIgYXJlIGFsd2F5
cyBzZWxlY3RhYmxlLAorICAgICAgICAvLyBtYXRjaGluZyB0aGUgYmFzZSBSZW5kZXJUZXh0Ojpj
YW5CZVNlbGVjdGlvbkxlYWYoKSBiZWhhdmlvci4KKyAgICAgICAgcmV0dXJuIGZpcnN0TGV0dGVy
KCkgPyB0cnVlIDogdGV4dE5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKTsKKyAgICB9CisgICAgLy8g
Rmlyc3QtbGV0dGVyIGlzIGFsd2F5cyBzZWxlY3RhYmxlLgorICAgIGF1dG8qIGFub255bW91c0lu
bGluZVdyYXBwZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW5saW5lPih0aGlzLT5wYXJlbnQo
KSk7CisgICAgcmV0dXJuIGFub255bW91c0lubGluZVdyYXBwZXIgJiYgYW5vbnltb3VzSW5saW5l
V3JhcHBlci0+Zmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4
dEZyYWdtZW50OjpzZXRUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBuZXdUZXh0LCBib29sIGZv
cmNlKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0
dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NDcyZjQw
M2M4MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9m
aXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTMgQEAKK1Rlc3QgdGhhdCBzZWxlY3Rpb24gYWNyb3NzIG11bHRpcGxlIGVsZW1lbnRzIHdp
dGggOjpmaXJzdC1sZXR0ZXIgd29ya3MgY29ycmVjdGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNl
KC9cbi9nLCAnfCcpIGlzICJGaXJzdCBwYXJhZ3JhcGh8U2Vjb25kIHBhcmFncmFwaCIKK1BBU1Mg
d2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVwbGFjZSgvXG4vZywgJ3wnKSBpcyAi
c3QgcGFyYWdyYXBofFNlY29uZCIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkucmVwbGFjZSgvXG4vZywgJ3wnKSBpcyAiRmlyc3QgcGFyYWdyYXBofFMiCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0ZpcnN0IHBhcmFncmFwaAor
U2Vjb25kIHBhcmFncmFwaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRmYjM0ODhkNDVm
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0
LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmZpcnN0LWxldHRlci1zdHls
ZWQ6OmZpcnN0LWxldHRlciB7CisgICAgY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgPGRpdiBpZD0icGFyYTEiIGNsYXNz
PSJmaXJzdC1sZXR0ZXItc3R5bGVkIj5GaXJzdCBwYXJhZ3JhcGg8L2Rpdj4KKyAgICA8ZGl2IGlk
PSJwYXJhMiIgY2xhc3M9ImZpcnN0LWxldHRlci1zdHlsZWQiPlNlY29uZCBwYXJhZ3JhcGg8L2Rp
dj4KKzwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBzZWxlY3Rpb24g
YWNyb3NzIG11bHRpcGxlIGVsZW1lbnRzIHdpdGggOjpmaXJzdC1sZXR0ZXIgd29ya3MgY29ycmVj
dGx5LiIpOworCitmdW5jdGlvbiBzZWxlY3RBY3Jvc3NFbGVtZW50cyhzdGFydE5vZGUsIHN0YXJ0
T2Zmc2V0LCBlbmROb2RlLCBlbmRPZmZzZXQpIHsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNldFN0YXJ0KHN0YXJ0Tm9kZSwgc3RhcnRPZmZzZXQp
OworICAgIHJhbmdlLnNldEVuZChlbmROb2RlLCBlbmRPZmZzZXQpOworICAgIHZhciBzZWwgPSB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHNl
bC5hZGRSYW5nZShyYW5nZSk7Cit9CisKKy8vIFRlc3QgMTogU2VsZWN0IGFjcm9zcyB0d28gZmly
c3QtbGV0dGVyIHBhcmFncmFwaHMKK3NlbGVjdEFjcm9zc0VsZW1lbnRzKHBhcmExLmZpcnN0Q2hp
bGQsIDAsIHBhcmEyLmZpcnN0Q2hpbGQsIHBhcmEyLmZpcnN0Q2hpbGQubGVuZ3RoKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVwbGFj
ZSgvXFxuL2csICd8JykiLCAiRmlyc3QgcGFyYWdyYXBofFNlY29uZCBwYXJhZ3JhcGgiKTsKKwor
Ly8gVGVzdCAyOiBTZWxlY3QgZnJvbSBtaWRkbGUgb2YgZmlyc3QgdG8gbWlkZGxlIG9mIHNlY29u
ZAorc2VsZWN0QWNyb3NzRWxlbWVudHMocGFyYTEuZmlyc3RDaGlsZCwgMywgcGFyYTIuZmlyc3RD
aGlsZCwgNik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50
b1N0cmluZygpLnJlcGxhY2UoL1xcbi9nLCAnfCcpIiwgInN0IHBhcmFncmFwaHxTZWNvbmQiKTsK
KworLy8gVGVzdCAzOiBTZWxlY3QgZnJvbSBmaXJzdC1sZXR0ZXIgb2YgZmlyc3QgdG8gZmlyc3Qt
bGV0dGVyIG9mIHNlY29uZAorc2VsZWN0QWNyb3NzRWxlbWVudHMocGFyYTEuZmlyc3RDaGlsZCwg
MCwgcGFyYTIuZmlyc3RDaGlsZCwgMSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5n
ZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxhY2UoL1xcbi9nLCAnfCcpIiwgIkZpcnN0IHBh
cmFncmFwaHxTIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVj
dGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5hZDA4ZDkzOWM3YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMz
IEBACitUZXN0IHRoYXQgc2VsZWN0aW9uIHdvcmtzIGNvcnJlY3RseSB3aXRoIDo6Zmlyc3QtbGV0
dGVyIHBzZXVkby1lbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiSGVsbG8iCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIxMiIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgIlwiUXVvdGUiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpIGlzICJBIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSBpcyAiTmVzdGVkIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBs
YWNlKC9cbi9nLCAnfCcpIGlzICJGaXJzdHxTZWNvbmQiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS50b1N0cmluZygpIGlzICJFZGl0YWJsZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkgaXMgIjEiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IGlzICIyIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiSGVsIgor
UEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiXCJRIgorUEFTUyB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQgaXMgdHJ1ZQorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYW5jaG9yT2Zmc2V0IGlzIDEKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLmlz
Q29sbGFwc2VkIGlzIHRydWUKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLmFuY2hvck9mZnNl
dCBpcyAwCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJBIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitIZWxsbworMTIK
KyJRdW90ZQorQQorTmVzdGVkCitGaXJzdAorU2Vjb25kCitFZGl0YWJsZQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBh
aW50aW5nLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJz
dC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMDM5MDUzOGQzN2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBh
aW50aW5nLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorc3Bhbi5maXJzdC1s
ZXR0ZXIgeworICAgIGNvbG9yOiByZWQ7CisgICAgZm9udC1zaXplOiAyZW07Cit9Cis8L3N0eWxl
PgorPGRpdiBpZD0idGFyZ2V0Ij48c3BhbiBjbGFzcz0iZmlyc3QtbGV0dGVyIj5IPC9zcGFuPmVs
bG8gV29ybGQ8L2Rpdj4KKzxzY3JpcHQ+Cit3aW5kb3cudGVzdFJ1bm5lcj8ud2FpdFVudGlsRG9u
ZSgpOword2luZG93LnRlc3RSdW5uZXI/LmRvbnRGb3JjZVJlcGFpbnQoKTsKKworYXN5bmMgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICBhd2FpdCBVSUhlbHBlci5yZW5kZXJpbmdVcGRhdGUoKTsK
KyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVj
dE5vZGVDb250ZW50cyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICAgIGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1Vw
ZGF0ZSgpOworICAgIGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHdpbmRv
dy50ZXN0UnVubmVyPy5ub3RpZnlEb25lKCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCdsb2FkJywgcnVuVGVzdCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmcuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRp
bmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI2YjhiZGY0
NmNiOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmcuaHRtbApAQCAtMCwwICsxLDI1IEBACis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+
CitkaXY6OmZpcnN0LWxldHRlciB7CisgICAgY29sb3I6IHJlZDsKKyAgICBmb250LXNpemU6IDJl
bTsKK30KKzwvc3R5bGU+Cis8ZGl2IGlkPSJ0YXJnZXQiPkhlbGxvIFdvcmxkPC9kaXY+Cis8c2Ny
aXB0Pgord2luZG93LnRlc3RSdW5uZXI/LndhaXRVbnRpbERvbmUoKTsKK3dpbmRvdy50ZXN0UnVu
bmVyPy5kb250Rm9yY2VSZXBhaW50KCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5nVXBkYXRlKCk7CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
cmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJh
bmdlKTsKKyAgICBhd2FpdCBVSUhlbHBlci5yZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBhd2FpdCBV
SUhlbHBlci5yZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB3aW5kb3cudGVzdFJ1bm5lcj8ubm90aWZ5
RG9uZSgpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3QpOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJz
dC1sZXR0ZXItc2VsZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9m
aXJzdC1sZXR0ZXItc2VsZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5lZWRjNzJiM2ZjNWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLmh0bWwKQEAgLTAsMCArMSwx
MDEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorZGl2OjpmaXJz
dC1sZXR0ZXIgeworICAgIGNvbG9yOiByZWQ7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJ0ZXN0MSI+SGVsbG88L2Rpdj4KKzxkaXYgaWQ9InRlc3QyIj4xMjwvZGl2Pgor
PGRpdiBpZD0idGVzdDMiPiJRdW90ZTwvZGl2PgorPGRpdiBpZD0idGVzdDQiPkE8L2Rpdj4KKzxk
aXYgaWQ9InRlc3Q1Ij48c3Bhbj5OZXN0ZWQ8L3NwYW4+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NiI+
Rmlyc3Q8YnI+U2Vjb25kPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NyIgY29udGVudGVkaXRhYmxlPkVk
aXRhYmxlPC9kaXY+Cis8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgorCis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRlc3QgdGhhdCBzZWxlY3Rpb24gd29ya3MgY29ycmVjdGx5IHdpdGggOjpmaXJz
dC1sZXR0ZXIgcHNldWRvLWVsZW1lbnQuIik7CisKK2Z1bmN0aW9uIHNlbGVjdEFsbChlbGVtZW50
KSB7CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCk7CisgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKTsKKyAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgc2VsLmFkZFJhbmdlKHJh
bmdlKTsKK30KKworZnVuY3Rpb24gc2VsZWN0UmFuZ2Uobm9kZSwgc3RhcnQsIGVuZCkgeworICAg
IHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQo
bm9kZSwgc3RhcnQpOworICAgIHJhbmdlLnNldEVuZChub2RlLCBlbmQpOworICAgIHZhciBzZWwg
PSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOworICAg
IHNlbC5hZGRSYW5nZShyYW5nZSk7Cit9CisKKy8vIFRlc3QgMTogU2VsZWN0IGFsbCB0ZXh0IGlu
IGVsZW1lbnQgd2l0aCBmaXJzdC1sZXR0ZXIKK3NlbGVjdEFsbCh0ZXN0MSk7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkhlbGxvIik7
CisKKy8vIFRlc3QgMjogU2hvcnQgdGV4dCAtIHNlbGVjdCBhbGwKK3NlbGVjdEFsbCh0ZXN0Mik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgIjEyIik7CisKKy8vIFRlc3QgMzogRmlyc3QtbGV0dGVyIHdpdGggcHVuY3R1YXRpb24gKGZp
cnN0LWxldHRlciBpbmNsdWRlcyBxdW90ZSArIGxldHRlcikKK3NlbGVjdEFsbCh0ZXN0Myk7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwg
IlwiUXVvdGUiKTsKKworLy8gVGVzdCA0OiBTaW5nbGUgY2hhcmFjdGVyIHRleHQgKGVudGlyZSB0
ZXh0IGlzIGZpcnN0LWxldHRlcikKK3NlbGVjdEFsbCh0ZXN0NCk7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkEiKTsKKworLy8gVGVz
dCA1OiBGaXJzdC1sZXR0ZXIgd2l0aCBuZXN0ZWQgaW5saW5lCitzZWxlY3RBbGwodGVzdDUpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIs
ICJOZXN0ZWQiKTsKKworLy8gVGVzdCA2OiBNdWx0aS1saW5lIC0gc2VsZWN0IGFsbCBzaG91bGQg
Z2V0IGJvdGggbGluZXMKK3NlbGVjdEFsbCh0ZXN0Nik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
IndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxhY2UoL1xcbi9nLCAnfCcpIiwg
IkZpcnN0fFNlY29uZCIpOworCisvLyBUZXN0IDc6IENvbnRlbnRlZGl0YWJsZSB3aXRoIGZpcnN0
LWxldHRlcgorc2VsZWN0QWxsKHRlc3Q3KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiRWRpdGFibGUiKTsKKworLy8gVGVzdCA4OiBT
ZWxlY3Qgb25seSB0aGUgZmlyc3QtbGV0dGVyIHBvcnRpb24KK3NlbGVjdFJhbmdlKHRlc3QyLmZp
cnN0Q2hpbGQsIDAsIDEpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICIxIik7CisKKy8vIFRlc3QgOTogU2VsZWN0IG9ubHkgdGhlIHJl
bWFpbmluZyBwb3J0aW9uIChhZnRlciBmaXJzdC1sZXR0ZXIpCitzZWxlY3RSYW5nZSh0ZXN0Mi5m
aXJzdENoaWxkLCAxLCAyKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkiLCAiMiIpOworCisvLyBUZXN0IDEwOiBTZWxlY3QgcmFuZ2Ugc3Bh
bm5pbmcgZmlyc3QtbGV0dGVyIGJvdW5kYXJ5CitzZWxlY3RSYW5nZSh0ZXN0MS5maXJzdENoaWxk
LCAwLCAzKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkiLCAiSGVsIik7CisKKy8vIFRlc3QgMTE6IFNlbGVjdCBmcm9tIG1pZGRsZSBvZiBm
aXJzdC1sZXR0ZXIgdGV4dCB0byBlbmQKK3NlbGVjdFJhbmdlKHRlc3QzLmZpcnN0Q2hpbGQsIDAs
IDIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKSIsICJcIlEiKTsKKworLy8gVGVzdCAxMjogQ2FyZXQgYXQgZmlyc3QtbGV0dGVyIGJvdW5k
YXJ5IChvZmZzZXQgPSBmaXJzdC1sZXR0ZXIgbGVuZ3RoKQorc2VsZWN0UmFuZ2UodGVzdDEuZmly
c3RDaGlsZCwgMSwgMSk7CitzaG91bGRCZSgid2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFw
c2VkIiwgInRydWUiKTsKK3Nob3VsZEJlKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yT2Zm
c2V0IiwgIjEiKTsKKworLy8gVGVzdCAxMzogQ2FyZXQgYXQgc3RhcnQgb2YgdGV4dCAob2Zmc2V0
IDAsIGluc2lkZSBmaXJzdC1sZXR0ZXIpCitzZWxlY3RSYW5nZSh0ZXN0MS5maXJzdENoaWxkLCAw
LCAwKTsKK3Nob3VsZEJlKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQiLCAidHJ1
ZSIpOworc2hvdWxkQmUoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS5hbmNob3JPZmZzZXQiLCAiMCIp
OworCisvLyBUZXN0IDE0OiBTZWxlY3QgYWxsIG9uIHNpbmdsZS1jaGFyYWN0ZXIgZmlyc3QtbGV0
dGVyIChlbnRpcmUgdGV4dCBpcyBmaXJzdC1sZXR0ZXIpCitzZWxlY3RSYW5nZSh0ZXN0NC5maXJz
dENoaWxkLCAwLCAxKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkiLCAiQSIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvZmlyc3QtbGV0dGVyLXdv
cmQtYm91bmRhcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJh
dG9yL2ZpcnN0LWxldHRlci13b3JkLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dAppbmRleCBjNTJmMmFk
NTYxMmQuLmRjOTlmY2M4YzFiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0
LWl0ZXJhdG9yL2ZpcnN0LWxldHRlci13b3JkLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRlcmF0b3IvZmlyc3QtbGV0dGVyLXdvcmQtYm91bmRh
cnktZXhwZWN0ZWQudHh0CkBAIC0yLDkgKzIsOSBAQCBUaGlzIHRlc3RzIG1vdmluZyBjYXJldCBh
cm91bmQgYSB3b3JkIHdpdGggYSBmaXJzdC1sZXR0ZXIgcnVsZS4gV2ViS2l0IHNob3VsZCBubwog
CiAgaGVsbG8gd29ybGQnCiB3aGl0ZS1zcGFjZTogbm9ybWFsOwotRkFJTDogbW92aW5nIGZvcndh
cmQgYnkgd29yZCBmcm9tIG9mZnNldCA0IHB1dCBjYXJldCBhdCBvZmZzZXQgMTAgYnV0IGV4cGVj
dGVkIDYKK1BBU1M6IG1vdmluZyBmb3J3YXJkIGJ5IHdvcmQgZnJvbSBvZmZzZXQgNCBwdXQgY2Fy
ZXQgYXQgb2Zmc2V0IDYKIFBBU1M6IG1vdmluZyBiYWNrd2FyZCBieSB3b3JkIGZyb20gb2Zmc2V0
IDQgcHV0IGNhcmV0IGF0IG9mZnNldCAxCiB3aGl0ZS1zcGFjZTogcHJlOwotRkFJTDogbW92aW5n
IGZvcndhcmQgYnkgd29yZCBmcm9tIG9mZnNldCA0IHB1dCBjYXJldCBhdCBvZmZzZXQgMTAgYnV0
IGV4cGVjdGVkIDYKLVBBU1M6IG1vdmluZyBiYWNrd2FyZCBieSB3b3JkIGZyb20gb2Zmc2V0IDQg
cHV0IGNhcmV0IGF0IG9mZnNldCAxCitQQVNTOiBtb3ZpbmcgZm9yd2FyZCBieSB3b3JkIGZyb20g
b2Zmc2V0IDQgcHV0IGNhcmV0IGF0IG9mZnNldCA2CitGQUlMOiBtb3ZpbmcgYmFja3dhcmQgYnkg
d29yZCBmcm9tIG9mZnNldCA0IHB1dCBjYXJldCBhdCBvZmZzZXQgMCBidXQgZXhwZWN0ZWQgMQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZmlyc3QtbGV0dGVyLXBhcnRpYWwt
aW52YWxpZGF0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9m
aXJzdC1sZXR0ZXItcGFydGlhbC1pbnZhbGlkYXRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4
IDE2MGIwZDNiMGEwNC4uMmIxNzgwYWIzNWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvZmlyc3QtbGV0dGVyLXBhcnRpYWwtaW52YWxpZGF0aW9uLWNyYXNoLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZmlyc3QtbGV0dGVyLXBhcnRpYWwtaW52YWxp
ZGF0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMSArMSBAQAotUEFTUyBpZiBubyBjcmFzaCBv
ciBhc0FBQUFydAorUEFTUyBpZiBubyBjcmFzaCBvciBhc3NlQUFBQQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0w
MDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9lZGl0aW5nL3NlbGVj
dGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0CmluZGV4IGI5Y2E5YTBkYmQ1Zi4u
YzkyNDQ3MGEzZjU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2VkaXRp
bmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ2xpYi9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDIt
ZXhwZWN0ZWQudHh0CkBAIC02OSw1ICs2OSw1IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAogICAgICAgICAgICAgUmVuZGVySW5saW5lIHtBfSBhdCAoMTgsNikgc2l6ZSAzOHgxMSBbY29s
b3I9IzAwMDBFRV0KICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxOCw2KSBz
aXplIDM4eDExCiAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE4LDYpIHdpZHRoIDM4OiAi
Q29tYm9zIgotc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBv
ZiBjaGlsZCAxIHtBfSBvZiBjaGlsZCAxIHtMSX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEg
e0RJVn0gb2YgYm9keQorc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0
ZXh0fSBvZiBjaGlsZCAxIHtMSX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2Yg
Ym9keQogc2VsZWN0aW9uIGVuZDogICBwb3NpdGlvbiA1IG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBj
aGlsZCAxIHtBfSBvZiBjaGlsZCA3IHtMSX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJ
Vn0gb2YgYm9keQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2VkaXRpbmcv
c2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3MvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVk
LnR4dAppbmRleCAyYjY2ZTRhYjUwZGUuLjY2OWE0ZWI4N2Q3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2VkaXRpbmcvc2VsZWN0
aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBlY3RlZC50eHQKQEAgLTY5LDUgKzY5LDUgQEAgbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge0F9IGF0
ICgxOSw1KSBzaXplIDQxeDE0IFtjb2xvcj0jMDAwMEVFXQogICAgICAgICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDE5LDUpIHNpemUgNDF4MTQKICAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMTksNSkgd2lkdGggNDE6ICJDb21ib3MiCi1zZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9u
IDAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0F9IG9mIGNoaWxkIDEge0xJfSBvZiBj
aGlsZCAxIHtVTH0gb2YgY2hpbGQgMSB7RElWfSBvZiBib2R5CitzZWxlY3Rpb24gc3RhcnQ6IHBv
c2l0aW9uIDEgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0xJfSBvZiBjaGlsZCAxIHtV
TH0gb2YgY2hpbGQgMSB7RElWfSBvZiBib2R5CiBzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDUg
b2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0F9IG9mIGNoaWxkIDcge0xJfSBvZiBjaGls
ZCAxIHtVTH0gb2YgY2hpbGQgMSB7RElWfSBvZiBib2R5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9leHRl
bmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0CmluZGV4IDA3ODVjNmQ5N2I3Zi4uMjQ3ODcxN2Ey
NmY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rp
b24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4
dApAQCAtNjksNSArNjksNSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAg
ICAgIFJlbmRlcklubGluZSB7QX0gYXQgKDE5LDUpIHNpemUgNDF4MTQgW2NvbG9yPSMwMDAwRUVd
CiAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTksNSkgc2l6ZSA0MXgxNAog
ICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxOSw1KSB3aWR0aCA0MTogIkNvbWJvcyIKLXNl
bGVjdGlvbiBzdGFydDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7
QX0gb2YgY2hpbGQgMSB7TEl9IG9mIGNoaWxkIDEge1VMfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJv
ZHkKK3NlbGVjdGlvbiBzdGFydDogcG9zaXRpb24gMSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hp
bGQgMSB7TEl9IG9mIGNoaWxkIDEge1VMfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKIHNlbGVj
dGlvbiBlbmQ6ICAgcG9zaXRpb24gNSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7QX0g
b2YgY2hpbGQgNyB7TEl9IG9mIGNoaWxkIDEge1VMfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>478932</attachid>
            <date>2026-04-05 19:48:01 -0700</date>
            <delta_ts>2026-04-06 13:31:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-6185-20260405194800.patch</filename>
            <type>text/plain</type>
            <size>65894</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA5MTRkYmNhMjljYzcyZWExYzJjZDgzOGQ2Mzc4NjFhYzk3MGVkMGMzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMiBBcHIgMjAyNiAwNTo1NzozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIENTUzE6IGNo
YXJhY3RlciBzdHlsZWQgd2l0aCA6Zmlyc3QtbGV0dGVyIGlzIG5vdCBzZWxlY3RhYmxlCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE4NSA8cmRhcjovL3Byb2JsZW0v
NTY4ODIzNz4KClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKR2l2ZW4KCiAgPHN0eWxlPgog
ICAgZGl2OjpmaXJzdC1sZXR0ZXIgeyBjb2xvcjogcmVkOyB9CiAgPC9zdHlsZT4KICA8ZGl2Pkhl
bGxvPC9kaXY+Cgp0aGUgRE9NIChpbnNpZGUgdGhlIGJsb2NrIGNvbnRhaW5lcikgaGFzIGEgc2lu
Z2xlIHRleHQgbm9kZSAiSGVsbG8iCmJ1dCBXZWJLaXQgc3BsaXRzIHRoaXMgaW50byB0d28gcmVu
ZGVyZXJzIHRvIGJlIGFibGUgdG8gc3R5bGUgdGhlIGZpcnN0IGxldHRlci4KCiAgUmVuZGVyQmxv
Y2sgKGRpdikKICAgIFJlbmRlcklubGluZSAoOjpmaXJzdC1sZXR0ZXIsIGFub255bW91cykKICAg
ICAgUmVuZGVyVGV4dCAiSCIgICAgICAgICAgICA8LSBvZmZzZXRzIDAtMSAobm8gRE9NIG5vZGUp
CiAgICBSZW5kZXJUZXh0RnJhZ21lbnQgImVsbG8iICAgPC0gb2Zmc2V0cyAwLTQgKG93bnMgdGhl
IERPTSB0ZXh0IG5vZGUpCgpUaGUgZXhpc3RpbmcgY29kZSBhc3N1bWVzIGVhY2ggRE9NIG5vZGUg
bWFwcyB0byBleGFjdGx5IG9uZSByZW5kZXJlci4KRXZlcnkgY2FsbCB0byBub2RlLT5yZW5kZXJl
cigpIG9yIFBvc2l0aW9uOjpyZW5kZXJlcigpIHJldHVybnMgdGhlCnJlbWFpbmluZyBmcmFnbWVu
dCAtIHRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgaXMgbmV2ZXIgY29uc3VsdGVkLgoKVGhpcyBt
ZWFucyBET00gb2Zmc2V0IDAgKCJIIikgZ2V0cyBjaGVja2VkIGFnYWluc3QgdGhlIHJlbWFpbmlu
ZwpmcmFnbWVudCdzIHRleHQgYm94ZXMsIHdoaWNoIHN0YXJ0IGF0ICJlIi4gU2VsZWN0aW9uLCBj
YXJldCBwb3NpdGlvbmluZywKYW5kIG9mZnNldCB2YWxpZGF0aW9uIGFsbCBmYWlsIGZvciB0aGUg
Zmlyc3QtbGV0dGVyIHJhbmdlIGJlY2F1c2UgdGhlCndyb25nIHJlbmRlcmVyIGlzIGFza2VkIGFi
b3V0IG9mZnNldHMgaXQgZG9lc24ndCBvd24uCgpUaGUgZml4IGlzIHRvIG5ldmVyIGNvbnN1bHQg
bm9kZS0+cmVuZGVyZXIoKSBkaXJlY3RseSBmb3IgdGV4dCBvZmZzZXQKb3BlcmF0aW9ucyBvbiBm
aXJzdC1sZXR0ZXIgY29udGVudC4gSW5zdGVhZCwgYWxsIGNhbGwgc2l0ZXMgZ28gdGhyb3VnaApQ
b3NpdGlvbjo6cmVuZGVyZXJBbmRPZmZzZXQoKSB3aGljaCByZXNvbHZlcyB0aGUgMS1ET00tbm9k
ZS10by0yLXJlbmRlcmVycwpzcGxpdCBieSBwaWNraW5nIHRoZSBjb3JyZWN0IHJlbmRlcmVyIGFu
ZCBjb252ZXJ0aW5nIHRvIGl0cyBsb2NhbCBvZmZzZXQuClRoaXMgaXMgdGhlIGNlbnRyYWwgaW52
YXJpYW50IG9mIHRoZSBmaXggLSBldmVyeSBwbGFjZSB0aGF0IHByZXZpb3VzbHkKY2FsbGVkIG5v
ZGUtPnJlbmRlcmVyKCkgYW5kIHVzZWQgYSBET00gb2Zmc2V0IGFnYWluc3QgaXQgbm93IHVzZXMg
dGhpcwpoZWxwZXIgKG9yIG9uZSBvZiBpdHMgd3JhcHBlcnMpIHRvIGdldCB0aGUgcmlnaHQgcmVu
ZGVyZXIgKyBvZmZzZXQgcGFpci4KCktleSBoZWxwZXJzIGludHJvZHVjZWQ6Ci0gUG9zaXRpb246
OnJlbmRlcmVyQW5kT2Zmc2V0KCk6IHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciByZXNv
bHZpbmcKICBhIERPTSBvZmZzZXQgdG8gdGhlIGNvcnJlY3QgcmVuZGVyZXIgKyBmcmFnbWVudC1s
b2NhbCBvZmZzZXQuIFJvdXRlcyB0bwogIHRoZSBmaXJzdC1sZXR0ZXIgcmVuZGVyZXIgZm9yIG9m
ZnNldHMgYmVsb3cgZnJhZ21lbnRTdGFydCwgb3RoZXJ3aXNlCiAgcmV0dXJucyB0aGUgcmVtYWlu
aW5nIGZyYWdtZW50IHdpdGggYWRqdXN0ZWQgb2Zmc2V0LgotIFBvc2l0aW9uOjpyZXNvbHZlZFRl
eHRSZW5kZXJlckFuZE9mZnNldCgpOiBjb252ZW5pZW5jZSB3cmFwcGVyIHRoYXQgYWxzbwogIGNh
c3RzIHRvIFJlbmRlclRleHQuCi0gZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldCgpOiBjb252
ZXJ0cyBmcmFnbWVudC1sb2NhbCBvZmZzZXQgYmFjayB0bwogIERPTSBvZmZzZXQuIFVzZWQgd2hl
biBleGl0aW5nIHJlbmRlcmVyIHNwYWNlIChjYXJldE1heE9mZnNldCwKICBjcmVhdGVQb3NpdGlv
bldpdGhBZmZpbml0eSwgZW5kUG9zaXRpb25Gb3JMaW5lLCBwb3NpdGlvbkF0UmlnaHRCb3VuZGFy
eS0KICBPZkJpRGlSdW4sIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQpLgotIGZpcnN0TGV0dGVyQWRq
dXN0ZWRGcmFnbWVudExvY2FsT2Zmc2V0KCk6IGNvbnZlcnRzIERPTSBvZmZzZXQgdG8KICBmcmFn
bWVudC1sb2NhbC4gVXNlZCBpbiBQb3NpdGlvbjo6dXBzdHJlYW0vZG93bnN0cmVhbSB3aGVyZSB0
aGVyZSBpcyBubwogIFBvc2l0aW9uIG9iamVjdCB0byBjYWxsIHJlbmRlcmVyQW5kT2Zmc2V0KCkg
b24uCi0gY3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkoKTogcHJldmVudHMgdXBzdHJlYW0vZG93
bnN0cmVhbSBmcm9tCiAgY2Fub25pY2FsaXppbmcgcG9zaXRpb25zIGFjcm9zcyB0aGUgZmlyc3Qt
bGV0dGVyIHNwbGl0LiBXaXRob3V0IHRoaXMsCiAgVmlzaWJsZVBvc2l0aW9uKG9mZnNldCAwKSBh
bmQgVmlzaWJsZVBvc2l0aW9uKG9mZnNldCAxKSB3b3VsZCBjb2xsYXBzZQogIHRvIHRoZSBzYW1l
IGNhbm9uaWNhbCBwb3NpdGlvbiwgbWFraW5nIHRoZSBmaXJzdCBsZXR0ZXIgdW5zZWxlY3RhYmxl
LgogIE11c3QgcnVuIGJlZm9yZSB0aGUgaXNTdHJlYW1lciB1cGRhdGUgdG8gc2VlIHRoZSBwcmUt
dXBkYXRlIGxhc3RWaXNpYmxlLgoKUG9zaXRpb246OmlzQ2FuZGlkYXRlLCBpc1JlbmRlcmVkQ2hh
cmFjdGVyLCByZW5kZXJzSW5EaWZmZXJlbnRQb3NpdGlvbjoKICBUaGVzZSBjaGVjayB0ZXh0IG9m
ZnNldCB2YWxpZGl0eSBhZ2FpbnN0IHJlbmRlcmVyIHRleHQgYm94ZXMuIFRoZXkgbm93CiAgdXNl
IHJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCkgdG8gYXNrIHRoZSBjb3JyZWN0IHJlbmRl
cmVyCiAgKGZpcnN0LWxldHRlciBvciByZW1haW5pbmcgZnJhZ21lbnQpIGluc3RlYWQgb2YgYWx3
YXlzIGFza2luZyB0aGUKICByZW1haW5pbmcgZnJhZ21lbnQgd2l0aCBhIHJhdyBET00gb2Zmc2V0
LgoKUG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldDogcmVzb2x2ZXMgdG8gdGhlIGNvcnJlY3Qg
aW5saW5lIGJveCBmb3IKICBjYXJldC9zZWxlY3Rpb24gcG9zaXRpb25pbmcuIE5vdyBkZWxlZ2F0
ZXMgdG8gcmVuZGVyZXJBbmRPZmZzZXQoKQogIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGZp
cnN0LWxldHRlciByb3V0aW5nIGxvZ2ljLgoKUmVuZGVyZWRQb3NpdGlvbjogc3RvcmVzIHRoZSBv
cmlnaW5hbCBET00gbm9kZSAobV9ub2RlKSBmcm9tIHRoZSBQb3NpdGlvbgogIGR1cmluZyBjb25z
dHJ1Y3Rpb24uIFdpdGhvdXQgdGhpcywgcG9zaXRpb25BdExlZnRCb3VuZGFyeU9mQmlEaVJ1bigp
CiAgcHJvZHVjZXMgYSBudWxsLW5vZGUgUG9zaXRpb24gd2hlbiB0aGUgaW5saW5lIGJveCBiZWxv
bmdzIHRvIHRoZQogIGFub255bW91cyBmaXJzdC1sZXR0ZXIgdGV4dCwgY2F1c2luZyBhZGp1c3RF
bmRwb2ludHNBdEJpZGlCb3VuZGFyeSgpCiAgdG8gY29sbGFwc2UgdGhlIHNlbGVjdGlvbiB3aGVu
IGRyYWdnaW5nIGxlZnQgcGFzdCB0aGUgZmlyc3QgbGV0dGVyLgoKVmlzaWJsZVBvc2l0aW9uOjpy
aWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGU6IHdoZW4gYmlkaSB0cmF2ZXJzYWwKICBsYW5k
cyBvbiB0aGUgYW5vbnltb3VzIGZpcnN0LWxldHRlciB0ZXh0IGJveCwgcmVzb2x2ZXMgdGhlIERP
TSBub2RlCiAgdmlhIHJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKCkgYmVmb3Jl
IGNyZWF0aW5nIHRoZSBQb3NpdGlvbi4KClJlbmRlclRleHRGcmFnbWVudDo6Y2FuQmVTZWxlY3Rp
b25MZWFmOiByZXR1cm5zIHRydWUgZm9yIHJlbWFpbmluZwogIGZyYWdtZW50cyB3aXRoIGZpcnN0
LWxldHRlciwgbWF0Y2hpbmcgYmFzZSBSZW5kZXJUZXh0IGJlaGF2aW9yIHNvCiAgY3Jvc3MtZWxl
bWVudCBzZWxlY3Rpb25zIChDbWQrQSkgaW5jbHVkZSB0aGUgcmVtYWluaW5nIHRleHQuCgoqIExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1jYXJldC1zaW5nbGUtY2hh
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1jYXJldC1zaW5nbGUtY2hhci5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1s
ZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rp
b24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5odG1sOiBBZGRlZC4KKiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLmh0bWw6
IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9maXJzdC1sZXR0ZXIt
d29yZC1ib3VuZGFyeS1leHBlY3RlZC50eHQ6CiAgUHJvZ3Jlc3Npb24uIExhc3QgdGVzdCBjYXNl
IGlzIHByZS1leGlzdGluZyBidWcgYW5kIGl0IG5ldmVyIHJlYWxseSBQQVNTZWQgLXRoZSBvZmYt
Ynktb25lIGVycm9yIG1hZGUgaXQgKGluY29ycmVjdGx5KSBQQVNTLgoKKiBMYXlvdXRUZXN0cy9m
YXN0L3RleHQvZmlyc3QtbGV0dGVyLXBhcnRpYWwtaW52YWxpZGF0aW9uLWNyYXNoLWV4cGVjdGVk
LnR4dDoKICBQcm9ncmVzc2lvbi4gV2UgbWF0Y2ggb3RoZXIgZW5naW5lcyBub3cuCgoqIExheW91
dFRlc3RzL3BsYXRmb3JtL2dsaWIvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAy
LWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvZWRpdGluZy9zZWxlY3Rp
b24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dDoK
ICBQcm9ncmVzc2lvbi4gQ29udGVudCBpcyBzZWxlY3RlZCBub3cgYWNyb3NzIDxsaT5zIHdpdGgg
Zmlyc3QtbGV0dGVyLgoKKiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwOgooV2ViQ29y
ZTo6Y3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkpOgooV2ViQ29yZTo6Zmlyc3RMZXR0ZXJBZGp1
c3RlZEZyYWdtZW50TG9jYWxPZmZzZXQpOgooV2ViQ29yZTo6UG9zaXRpb246OnVwc3RyZWFtIGNv
bnN0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjpkb3duc3RyZWFtIGNvbnN0KToKKFdlYkNvcmU6OlBv
c2l0aW9uOjpoYXNSZW5kZXJlZE5vbkFub255bW91c0Rlc2NlbmRhbnRzV2l0aEhlaWdodCk6CihX
ZWJDb3JlOjpQb3NpdGlvbjo6aXNDYW5kaWRhdGUgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246
OmlzUmVuZGVyZWRDaGFyYWN0ZXIgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJ
bkRpZmZlcmVudFBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjpyZW5kZXJlckFu
ZE9mZnNldCBjb25zdCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6cmVzb2x2ZWRUZXh0UmVuZGVyZXJB
bmRPZmZzZXQgY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OmlubGluZUJveEFuZE9mZnNldCBj
b25zdCk6CiogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmg6CiogU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwOgooV2ViQ29yZTo6UG9zaXRpb25JdGVyYXRvcjo6aXND
YW5kaWRhdGUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHA6CihX
ZWJDb3JlOjpjYXJldE1heE9mZnNldCk6CihXZWJDb3JlOjpmaXJzdExldHRlckFkanVzdGVkRE9N
T2Zmc2V0KToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojp1cGRhdGVBcHBlYXJhbmNlKToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9z
aXRpb24uY3BwOgooV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbik6
CihXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURp
UnVuIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OnBvc2l0aW9uQXRSaWdodEJv
dW5kYXJ5T2ZCaURpUnVuIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CihX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKFdlYkNvcmU6OlRleHRJdGVy
YXRvcjo6aGFuZGxlVGV4dFJ1bik6CihXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KToK
KFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2Rl
KToKKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZUZpcnN0
TGV0dGVyKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5o
OgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKFdlYkNvcmU6
OnJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKToKKFdlYkNvcmU6OlZpc2libGVQ
b3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29uc3QpOgooV2ViQ29yZTo6
VmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKFdlYkNvcmU6OmVuZFBv
c2l0aW9uRm9yTGluZSk6CihXZWJDb3JlOjpmaW5kRW5kT2ZQYXJhZ3JhcGgpOgoqIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgooV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpjcmVhdGVQb3NpdGlvbldpdGhBZmZpbml0eSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHA6CihXZWJDb3JlOjpSZW5kZXJUZXh0RnJhZ21l
bnQ6OmNhbkJlU2VsZWN0aW9uTGVhZiBjb25zdCk6Ci0tLQogU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uLmNwcCAgICAgICAgICAgICAgIHwgMTIxICsrKysrKysrKysrKystLS0KIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5oICAgICAgICAgICAgICAgICB8ICAgOCArKwogU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwICAgICAgIHwgICA4ICstCiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwICAgICAgICAgICAgfCAgMTAgKy0KIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZy5oICAgICAgICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCAgICAgfCAgMTAgKy0KIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAgICB8ICAxMCArLQogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmggICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCAgICAgICB8IDEzNCArKysrKysrKystLS0tLS0tLS0KIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggICAgICAgICB8ICAgMyAtCiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgICAgfCAgMjggKysrLQogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwICAgICAgIHwgICA1ICstCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCAgICAgfCAgIDUgKy0KIC4uLi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwICB8ICAgOSArLQogLi4uaXJz
dC1sZXR0ZXItY2FyZXQtc2luZ2xlLWNoYXItZXhwZWN0ZWQudHh0IHwgIDEyICsrCiAuLi4vZmly
c3QtbGV0dGVyLWNhcmV0LXNpbmdsZS1jaGFyLmh0bWwgICAgICAgfCAgMzkgKysrKysKIC4uLmV0
dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50LWV4cGVjdGVkLnR4dCB8ICAxMyArKwogLi4uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC5odG1sIHwgIDQzICsrKysrKwogLi4u
L2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0ICAgICAgIHwgIDMzICsrKysrCiAu
Li5zdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLWV4cGVjdGVkLmh0bWwgfCAgMjUgKysrKwog
Li4uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmcuaHRtbCAgICAgIHwgIDI1ICsrKysK
IC4uLi9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi5odG1sICAgICB8IDEwMSArKysr
KysrKysrKysrCiAuLi4vZmlyc3QtbGV0dGVyLXdvcmQtYm91bmRhcnktZXhwZWN0ZWQudHh0ICAg
fCAgIDYgKy0KIC4uLmVyLXBhcnRpYWwtaW52YWxpZGF0aW9uLWNyYXNoLWV4cGVjdGVkLnR4dCB8
ICAgMiArLQogLi4uL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0IHwg
ICAyICstCiAuLi4vc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBlY3RlZC50eHQgfCAg
IDIgKy0KIC4uLi9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dCB8ICAg
MiArLQogMjcgZmlsZXMgY2hhbmdlZCwgNTM5IGluc2VydGlvbnMoKyksIDExOSBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJz
dC1sZXR0ZXItY2FyZXQtc2luZ2xlLWNoYXItZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLWNhcmV0LXNpbmds
ZS1jaGFyLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0CiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0
dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWV4cGVjdGVk
LnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbAogY3JlYXRlIG1vZGUg
MTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rp
b24tcGFpbnRpbmcuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwCmluZGV4IGY5N2FhZjEzM2I0NS4uMDBmM2VlNDU5MjQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgor
I2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRUeXBl
SGVscGVycy5oIgogI2luY2x1ZGUgIlNWR1RleHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5o
IgpAQCAtNjQyLDYgKzY0MywzMyBAQCBzdGF0aWMgTm9kZSogZW5jbG9zaW5nVmlzdWFsQm91bmRh
cnkoU1VQUFJFU1NfVU5DSEVDS0VEX0xPQ0FMIE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGU7
CiB9CiAKKy8vIFRoZSBmaXJzdC1sZXR0ZXIgYW5kIHJlbWFpbmluZyB0ZXh0IGFyZSBzZXBhcmF0
ZSByZW5kZXJlcnMgYnV0IHNoYXJlIG9uZSBET00KKy8vIHRleHQgbm9kZS4gdXBzdHJlYW0vZG93
bnN0cmVhbSBtdXN0IG5vdCBjcm9zcyB0aGlzIGJvdW5kYXJ5LCBqdXN0IGxpa2UgdGhleQorLy8g
bXVzdCBub3QgY3Jvc3MgdmlzdWFsbHkgZGlzdGluY3Qgbm9kZSBib3VuZGFyaWVzLgorc3RhdGlj
IGJvb2wgY3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5k
ZXJlciwgY29uc3QgUG9zaXRpb25JdGVyYXRvciYgY3VycmVudCwgY29uc3QgUG9zaXRpb25JdGVy
YXRvciYgcHJldmlvdXNMYXN0VmlzaWJsZSkKK3sKKyAgICBhdXRvKiB0ZXh0RnJhZ21lbnQgPSBk
eW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7CisgICAgaWYgKCF0
ZXh0RnJhZ21lbnQgfHwgIXRleHRGcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIC8vIFRoZSBib3VuZGFyeSBjaGVjayBvbmx5IGFwcGxpZXMgd2hlbiBi
b3RoIHBvc2l0aW9ucyBhcmUgaW4gdGhlIHNhbWUgdGV4dCBub2RlLgorICAgIGlmIChjdXJyZW50
Lm5vZGUoKSAhPSBwcmV2aW91c0xhc3RWaXNpYmxlLm5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGF1dG8gZnJhZ21lbnRTdGFydCA9IHN0YXRpY19jYXN0PGludD4odGV4dEZyYWdt
ZW50LT5zdGFydCgpKTsKKyAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBjdXJyZW50Lm9mZnNldElu
TGVhZk5vZGUoKTsKKyAgICBhdXRvIGxhc3RPZmZzZXQgPSBwcmV2aW91c0xhc3RWaXNpYmxlLm9m
ZnNldEluTGVhZk5vZGUoKTsKKyAgICAvLyBPbmUgb2Zmc2V0IGlzIGluIHRoZSBmaXJzdC1sZXR0
ZXIgcmFuZ2UgYW5kIHRoZSBvdGhlciBpcyBub3QuCisgICAgLy8gT2Zmc2V0cyBhdCBmcmFnbWVu
dFN0YXJ0IGJlbG9uZyB0byB0aGUgcmVtYWluaW5nIGZyYWdtZW50LCBub3QgdGhlIGZpcnN0LWxl
dHRlci4KKyAgICByZXR1cm4gKGN1cnJlbnRPZmZzZXQgPCBmcmFnbWVudFN0YXJ0KSAhPSAobGFz
dE9mZnNldCA8IGZyYWdtZW50U3RhcnQpOworfQorCisvLyBDb252ZXJ0IGEgRE9NIG9mZnNldCB0
byBmcmFnbWVudC1sb2NhbCBmb3IgcmVtYWluaW5nIHRleHQgZnJhZ21lbnRzIHdpdGggZmlyc3Qt
bGV0dGVyLgorc3RhdGljIHVuc2lnbmVkIGZpcnN0TGV0dGVyQWRqdXN0ZWRGcmFnbWVudExvY2Fs
T2Zmc2V0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIHVuc2lnbmVkIG9mZnNldCkKK3sK
KyAgICBpZiAoYXV0byogdGV4dEZyYWdtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRG
cmFnbWVudD4ocmVuZGVyZXIpOyB0ZXh0RnJhZ21lbnQgJiYgdGV4dEZyYWdtZW50LT5maXJzdExl
dHRlcigpICYmIG9mZnNldCA+PSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkpCisgICAgICAgIHJldHVy
biBvZmZzZXQgLSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30K
KwogLy8gdXBzdHJlYW0oKSBhbmQgZG93bnN0cmVhbSgpIHdhbnQgdG8gcmV0dXJuIHBvc2l0aW9u
cyB0aGF0IGFyZSBlaXRoZXIgaW4gYQogLy8gdGV4dCBub2RlIG9yIGF0IGp1c3QgYmVmb3JlIGEg
bm9uLXRleHQgbm9kZS4gIFRoaXMgbWV0aG9kIGNoZWNrcyBmb3IgdGhhdC4KIHN0YXRpYyBib29s
IGlzU3RyZWFtZXIoY29uc3QgUG9zaXRpb25JdGVyYXRvciYgcG9zKQpAQCAtNzEyLDYgKzc0MCwx
MCBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdS
dWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAK
KyAgICAgICAgLy8gRG9uJ3QgbW92ZSBwYXN0IHRoZSBmaXJzdC1sZXR0ZXIgYm91bmRhcnkgd2l0
aGluIGEgdGV4dCBub2RlLgorICAgICAgICBpZiAoY3Jvc3Nlc0ZpcnN0TGV0dGVyQm91bmRhcnko
KnJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24sIGxhc3RWaXNpYmxlKSkKKyAgICAgICAgICAgIHJl
dHVybiBsYXN0VmlzaWJsZTsKKwogICAgICAgICAvLyB0cmFjayBsYXN0IHZpc2libGUgc3RyZWFt
ZXIgcG9zaXRpb24KICAgICAgICAgaWYgKGlzU3RyZWFtZXIoY3VycmVudFBvc2l0aW9uKSkKICAg
ICAgICAgICAgIGxhc3RWaXNpYmxlID0gY3VycmVudFBvc2l0aW9uOwpAQCAtNzQwLDEwICs3NzIs
MTAgQEAgUG9zaXRpb24gUG9zaXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5n
UnVsZSBydWxlKSBjb25zdAogICAgICAgICAgICAgICAgIC8vIHJlbmRlciB0cmVlIHdoaWNoIGNh
biBoYXZlIGEgZGlmZmVyZW50IGxlbmd0aCBkdWUgdG8gY2FzZSB0cmFuc2Zvcm1hdGlvbi4KICAg
ICAgICAgICAgICAgICAvLyBVbnRpbCB3ZSByZXNvbHZlIHRoYXQsIGRpc2FibGUgdGhpcyBzbyB3
ZSBjYW4gcnVuIHRoZSBsYXlvdXQgdGVzdHMhCiAgICAgICAgICAgICAgICAgLy9BU1NFUlQoY3Vy
cmVudE9mZnNldCA+PSByZW5kZXJlci0+Y2FyZXRNYXhPZmZzZXQoKSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY3VycmVudE5vZGUucHRyKCks
IHJlbmRlcmVyLT5jYXJldE1heE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihjdXJyZW50Tm9kZS5wdHIoKSwgY2FyZXRNYXhPZmZz
ZXQoY3VycmVudE5vZGUpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdW5zaWduZWQg
dGV4dE9mZnNldCA9IGN1cnJlbnRQb3NpdGlvbi5vZmZzZXRJbkxlYWZOb2RlKCk7CisgICAgICAg
ICAgICBhdXRvIHRleHRPZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRnJhZ21lbnRMb2NhbE9m
ZnNldCgqdGV4dFJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpKTsK
ICAgICAgICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDspIHsKICAgICAg
ICAgICAgICAgICBpZiAodGV4dE9mZnNldCA+IGJveC0+c3RhcnQoKSAmJiB0ZXh0T2Zmc2V0IDw9
IGJveC0+ZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247
CkBAIC04MjcsNiArODU5LDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpkb3duc3RyZWFtKEVkaXRp
bmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAorICAgICAgICAvLyBEb24ndCBtb3ZlIHBhc3QgdGhlIGZpcnN0LWxldHRlciBi
b3VuZGFyeSB3aXRoaW4gYSB0ZXh0IG5vZGUuCisgICAgICAgIGlmIChjcm9zc2VzRmlyc3RMZXR0
ZXJCb3VuZGFyeSgqcmVuZGVyZXIsIGN1cnJlbnRQb3NpdGlvbiwgbGFzdFZpc2libGUpKQorICAg
ICAgICAgICAgcmV0dXJuIGxhc3RWaXNpYmxlOworCiAgICAgICAgIC8vIHRyYWNrIGxhc3Qgdmlz
aWJsZSBzdHJlYW1lciBwb3NpdGlvbgogICAgICAgICBpZiAoaXNTdHJlYW1lcihjdXJyZW50UG9z
aXRpb24pKQogICAgICAgICAgICAgbGFzdFZpc2libGUgPSBjdXJyZW50UG9zaXRpb247CkBAIC04
NDksNyArODg1LDcgQEAgUG9zaXRpb24gUG9zaXRpb246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5k
YXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VD
b250YWluZXJPZmZzZXRQb3NpdGlvbihjdXJyZW50Tm9kZS5wdHIoKSwgdGV4dFJlbmRlcmVyLT5j
YXJldE1pbk9mZnNldCgpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdW5zaWduZWQg
dGV4dE9mZnNldCA9IGN1cnJlbnRQb3NpdGlvbi5vZmZzZXRJbkxlYWZOb2RlKCk7CisgICAgICAg
ICAgICBhdXRvIHRleHRPZmZzZXQgPSBmaXJzdExldHRlckFkanVzdGVkRnJhZ21lbnRMb2NhbE9m
ZnNldCgqdGV4dFJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpKTsK
ICAgICAgICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDspIHsKICAgICAg
ICAgICAgICAgICBpZiAoIWJveC0+bGVuZ3RoKCkgJiYgdGV4dE9mZnNldCA9PSBib3gtPnN0YXJ0
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CkBAIC04OTgs
NyArOTM0LDEzIEBAIGJvb2wgUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2Vu
ZGFudHNXaXRoSGVpZ2h0KGNvbnN0IFJlbmRlckVsZW1lbnQmCiAgICAgYXV0byBpc0hvcml6b250
YWwgPSByZW5kZXJlci5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIENoZWNrZWRQdHIg
c3RvcCA9IHJlbmRlcmVyLm5leHRJblByZU9yZGVyQWZ0ZXJDaGlsZHJlbigpOwogICAgIGZvciAo
Q2hlY2tlZFB0ciBkZXNjZW5kYW50ID0gcmVuZGVyZXIuZmlyc3RDaGlsZCgpOyBkZXNjZW5kYW50
ICYmIGRlc2NlbmRhbnQgIT0gc3RvcDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRJblBy
ZU9yZGVyKCkpIHsKLSAgICAgICAgaWYgKCFkZXNjZW5kYW50LT5ub25Qc2V1ZG9Ob2RlKCkpCisg
ICAgICAgIGF1dG8gc2hvdWxkU2tpcCA9IFsmXSB7CisgICAgICAgICAgICBpZiAoZGVzY2VuZGFu
dC0+bm9uUHNldWRvTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIENoZWNrZWRQdHIgcmVuZGVyRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJF
bGVtZW50PigqZGVzY2VuZGFudCk7CisgICAgICAgICAgICByZXR1cm4gIXJlbmRlckVsZW1lbnQg
fHwgIXJlbmRlckVsZW1lbnQtPmlzRmlyc3RMZXR0ZXIoKTsKKyAgICAgICAgfTsKKyAgICAgICAg
aWYgKHNob3VsZFNraXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8g
Ym91bmRpbmdCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdKGF1dG8gcmVjdCkgewpAQCAtOTE2LDcgKzk1
OCw3IEBAIGJvb2wgUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2VuZGFudHNX
aXRoSGVpZ2h0KGNvbnN0IFJlbmRlckVsZW1lbnQmCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJJbmxpbmUgPSBkeW5hbWljRG93
bmNhc3Q8UmVuZGVySW5saW5lPigqZGVzY2VuZGFudCkpIHsKLSAgICAgICAgICAgIGlmIChpc0Vt
cHR5SW5saW5lKCpyZW5kZXJJbmxpbmUpICYmIGJvdW5kaW5nQm94TG9naWNhbEhlaWdodChyZW5k
ZXJJbmxpbmUtPmxpbmVzQm91bmRpbmdCb3goKSkpCisgICAgICAgICAgICBpZiAoKHJlbmRlcklu
bGluZS0+aXNGaXJzdExldHRlcigpIHx8IGlzRW1wdHlJbmxpbmUoKnJlbmRlcklubGluZSkpICYm
IGJvdW5kaW5nQm94TG9naWNhbEhlaWdodChyZW5kZXJJbmxpbmUtPmxpbmVzQm91bmRpbmdCb3go
KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQpAQCAtOTg1LDggKzEwMjcsMTAgQEAgYm9vbCBQb3NpdGlvbjo6aXNDYW5kaWRh
dGUoKSBjb25zdAogICAgICAgICByZXR1cm4gIW1fb2Zmc2V0ICYmIG1fYW5jaG9yVHlwZSAhPSBQ
b3NpdGlvbklzQWZ0ZXJBbmNob3IgJiYgIW5vZGVJc1VzZXJTZWxlY3ROb25lKG5vZGUtPnBhcmVu
dE5vZGUoKSk7CiAgICAgfQogCi0gICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyVGV4dCA9IGR5bmFt
aWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gIW5vZGVJ
c1VzZXJTZWxlY3ROb25lKG5vZGUuZ2V0KCkpICYmIHJlbmRlclRleHQtPmNvbnRhaW5zQ2FyZXRP
ZmZzZXQobV9vZmZzZXQpOworICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclRleHQgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKSkgeworICAgICAgICBhdXRvIFtyZXNvbHZl
ZFRleHQsIHJlc29sdmVkT2Zmc2V0XSA9IHJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCk7
CisgICAgICAgIHJldHVybiAhbm9kZUlzVXNlclNlbGVjdE5vbmUobm9kZS5nZXQoKSkgJiYgcmVz
b2x2ZWRUZXh0ICYmIHJlc29sdmVkVGV4dC0+Y29udGFpbnNDYXJldE9mZnNldChyZXNvbHZlZE9m
ZnNldCk7CisgICAgfQogCiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlT3JBZnRlck5vZGVJc0NhbmRp
ZGF0ZSgqbm9kZSkpIHsKICAgICAgICAgcmV0dXJuICgoYXRGaXJzdEVkaXRpbmdQb3NpdGlvbkZv
ck5vZGUoKSAmJiBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0JlZm9yZUFuY2hvcikKQEAgLTEw
MTMsOSArMTA1NywxMCBAQCBib29sIFBvc2l0aW9uOjppc0NhbmRpZGF0ZSgpIGNvbnN0CiAKIGJv
b2wgUG9zaXRpb246OmlzUmVuZGVyZWRDaGFyYWN0ZXIoKSBjb25zdAogewotICAgIFJlZlB0ciB0
ZXh0ID0gZHluYW1pY0Rvd25jYXN0PFRleHQ+KGRlcHJlY2F0ZWROb2RlKCkpOwotICAgIENoZWNr
ZWRQdHIgcmVuZGVyZXIgPSB0ZXh0ID8gdGV4dC0+cmVuZGVyZXIoKSA6IG51bGxwdHI7Ci0gICAg
cmV0dXJuIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5jb250YWluc1JlbmRlcmVkQ2hhcmFjdGVyT2Zm
c2V0KG1fb2Zmc2V0KTsKKyAgICBpZiAoIWR5bmFtaWNEb3duY2FzdDxUZXh0PihkZXByZWNhdGVk
Tm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gW3JlbmRlclRleHQsIG9m
ZnNldF0gPSByZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpOworICAgIHJldHVybiByZW5k
ZXJUZXh0ICYmIHJlbmRlclRleHQtPmNvbnRhaW5zUmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXQob2Zm
c2V0KTsKIH0KIAogc3RhdGljIGJvb2wgaW5TYW1lRW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudChO
b2RlKiBhLCBOb2RlKiBiKQpAQCAtMTA2MSwxNiArMTEwNiwxNiBAQCBib29sIFBvc2l0aW9uOjpy
ZW5kZXJzSW5EaWZmZXJlbnRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0
CiAgICAgaWYgKCFpblNhbWVFbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KG5vZGUuZ2V0KCksIHBv
c2l0aW9uTm9kZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQ2hlY2tlZFB0
ciB0ZXh0UmVuZGVyZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dD4oKnJlbmRlcmVyKTsK
LSAgICBpZiAodGV4dFJlbmRlcmVyICYmICF0ZXh0UmVuZGVyZXItPmNvbnRhaW5zQ2FyZXRPZmZz
ZXQobV9vZmZzZXQpKQorICAgIGF1dG8gW3RleHRSZW5kZXJlciwgdGhpc09mZnNldF0gPSByZXNv
bHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpOworICAgIGlmICh0ZXh0UmVuZGVyZXIgJiYgIXRl
eHRSZW5kZXJlci0+Y29udGFpbnNDYXJldE9mZnNldCh0aGlzT2Zmc2V0KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgQ2hlY2tlZFB0ciB0ZXh0UG9zaXRpb25SZW5kZXJlciA9IGR5bmFt
aWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcG9zaXRpb25SZW5kZXJlcik7Ci0gICAgaWYgKHRleHRQ
b3NpdGlvblJlbmRlcmVyICYmICF0ZXh0UG9zaXRpb25SZW5kZXJlci0+Y29udGFpbnNDYXJldE9m
ZnNldChwb3NpdGlvbi5tX29mZnNldCkpCisgICAgYXV0byBbdGV4dFBvc2l0aW9uUmVuZGVyZXIs
IHBvc2l0aW9uT2Zmc2V0XSA9IHBvc2l0aW9uLnJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0
KCk7CisgICAgaWYgKHRleHRQb3NpdGlvblJlbmRlcmVyICYmICF0ZXh0UG9zaXRpb25SZW5kZXJl
ci0+Y29udGFpbnNDYXJldE9mZnNldChwb3NpdGlvbk9mZnNldCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHVuc2lnbmVkIHRoaXNSZW5kZXJlZE9mZnNldCA9IHRleHRSZW5kZXJlciA/
IHRleHRSZW5kZXJlci0+Y291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNldHNVbnRpbChtX29mZnNl
dCkgOiBtX29mZnNldDsKLSAgICB1bnNpZ25lZCBwb3NpdGlvblJlbmRlcmVkT2Zmc2V0ID0gdGV4
dFBvc2l0aW9uUmVuZGVyZXIgPyB0ZXh0UG9zaXRpb25SZW5kZXJlci0+Y291bnRSZW5kZXJlZENo
YXJhY3Rlck9mZnNldHNVbnRpbChwb3NpdGlvbi5tX29mZnNldCkgOiBwb3NpdGlvbi5tX29mZnNl
dDsKKyAgICB1bnNpZ25lZCB0aGlzUmVuZGVyZWRPZmZzZXQgPSB0ZXh0UmVuZGVyZXIgPyB0ZXh0
UmVuZGVyZXItPmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXRzVW50aWwodGhpc09mZnNldCkg
OiBtX29mZnNldDsKKyAgICB1bnNpZ25lZCBwb3NpdGlvblJlbmRlcmVkT2Zmc2V0ID0gdGV4dFBv
c2l0aW9uUmVuZGVyZXIgPyB0ZXh0UG9zaXRpb25SZW5kZXJlci0+Y291bnRSZW5kZXJlZENoYXJh
Y3Rlck9mZnNldHNVbnRpbChwb3NpdGlvbk9mZnNldCkgOiBwb3NpdGlvbi5tX29mZnNldDsKIAog
ICAgIGlmIChyZW5kZXJlciA9PSBwb3NpdGlvblJlbmRlcmVyICYmIHRoaXNSZW5kZXJlZE9mZnNl
dCA9PSBwb3NpdGlvblJlbmRlcmVkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
MTk1LDE2ICsxMjQwLDUyIEBAIHN0YXRpYyBQb3NpdGlvbiB1cHN0cmVhbUlnbm9yaW5nRWRpdGlu
Z0JvdW5kYXJpZXMoUG9zaXRpb24gcG9zaXRpb24pCiAgICAgcmV0dXJuIHBvc2l0aW9uOwogfQog
CitzdGQ6OnBhaXI8UmVuZGVyT2JqZWN0KiwgdW5zaWduZWQ+IFBvc2l0aW9uOjpyZW5kZXJlckFu
ZE9mZnNldCgpIGNvbnN0Cit7CisgICAgYXV0byogbm9kZSA9IGRlcHJlY2F0ZWROb2RlKCk7Cisg
ICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4geyB7IH0sIHsgfSB9OworICAgIGF1dG8qIHJl
bmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICBy
ZXR1cm4geyB7IH0sIHsgfSB9OworICAgIHVuc2lnbmVkIG9mZnNldCA9IGRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCk7CisgICAgQ2hlY2tlZFB0ciB0ZXh0RnJhZ21lbnQgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyVGV4dEZyYWdtZW50PigqcmVuZGVyZXIpOworICAgIGlmICghdGV4dEZyYWdtZW50
IHx8ICF0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpCisgICAgICAgIHJldHVybiB7IHJlbmRl
cmVyLCBvZmZzZXQgfTsKKworICAgIC8vIFdoZW4gdGhlIHJlbWFpbmluZyBmcmFnbWVudCBpcyBl
bXB0eSAoZW50aXJlIHRleHQgaXMgdGhlIGZpcnN0IGxldHRlciksCisgICAgLy8gcm91dGUgdG8g
dGhlIGZpcnN0LWxldHRlciByZW5kZXJlcidzIGVuZCBwb3NpdGlvbiBzbyAiYWZ0ZXIgdGhlIGxh
c3QgY2hhcmFjdGVyIiBpcyBhIHZhbGlkIGNhcmV0IHBvc2l0aW9uLgorICAgIGlmIChvZmZzZXQg
Pj0gdGV4dEZyYWdtZW50LT5zdGFydCgpICYmIHRleHRGcmFnbWVudC0+dGV4dCgpLmxlbmd0aCgp
KQorICAgICAgICByZXR1cm4geyByZW5kZXJlciwgb2Zmc2V0IC0gdGV4dEZyYWdtZW50LT5zdGFy
dCgpIH07CisKKyAgICAvLyBJdCBsb29rcyBsaWtlIHdlIGFyZSBvbiB0aGUgZmlyc3QgbGV0dGVy
IHJlbmRlcmVyLgorICAgIENoZWNrZWRQdHIgZmlyc3RMZXR0ZXJSZW5kZXJlciA9IGR5bmFtaWNE
b3duY2FzdDxSZW5kZXJUZXh0Pih0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCktPmZpcnN0Q2hp
bGQoKSk7CisgICAgaWYgKCFmaXJzdExldHRlclJlbmRlcmVyKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4geyB7IH0sIHsgfSB9OworICAgIH0KKworICAg
IC8vIFRoZSBmaXJzdC1sZXR0ZXIgdGV4dCBtYXkgbm90IHN0YXJ0IGF0IERPTSBvZmZzZXQgMCAo
ZS5nLiBjb2xsYXBzZWQgd2hpdGVzcGFjZSBwcmVjZWRlcyB0aGUgZmlyc3QgbGV0dGVyKS4KKyAg
ICBhdXRvIGZpcnN0TGV0dGVyU3RhcnQgPSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkgLSBmaXJzdExl
dHRlclJlbmRlcmVyLT50ZXh0KCkubGVuZ3RoKCk7CisgICAgcmV0dXJuIG9mZnNldCA+PSBmaXJz
dExldHRlclN0YXJ0ID8gc3RkOjptYWtlX3BhaXIoZmlyc3RMZXR0ZXJSZW5kZXJlciwgb2Zmc2V0
IC0gZmlyc3RMZXR0ZXJTdGFydCkgOiBzdGQ6Om1ha2VfcGFpcihudWxscHRyLCAwKTsKK30KKwor
c3RkOjpwYWlyPFJlbmRlclRleHQqLCB1bnNpZ25lZD4gUG9zaXRpb246OnJlc29sdmVkVGV4dFJl
bmRlcmVyQW5kT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvIFtyZW5kZXJlciwgb2Zmc2V0XSA9
IHJlbmRlcmVyQW5kT2Zmc2V0KCk7CisgICAgaWYgKGF1dG8qIHJlbmRlclRleHQgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQorICAgICAgICByZXR1cm4geyByZW5kZXJU
ZXh0LCBvZmZzZXQgfTsKKyAgICByZXR1cm4geyBudWxscHRyLCAwIH07Cit9CisKIElubGluZUJv
eEFuZE9mZnNldCBQb3NpdGlvbjo6aW5saW5lQm94QW5kT2Zmc2V0KEFmZmluaXR5IGFmZmluaXR5
LCBUZXh0RGlyZWN0aW9uIHByaW1hcnlEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgYXV0byBjYXJl
dE9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
KTsKIAotICAgIFJlZlB0ciBub2RlID0gZGVwcmVjYXRlZE5vZGUoKTsKLSAgICBpZiAoIW5vZGUp
Ci0gICAgICAgIHJldHVybiB7IHsgfSwgY2FyZXRPZmZzZXQgfTsKLSAgICBDaGVja2VkUHRyIHJl
bmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIFtyZW5kZXJlciwgcmVzb2x2ZWRP
ZmZzZXRdID0gcmVuZGVyZXJBbmRPZmZzZXQoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAg
ICByZXR1cm4geyB7IH0sIGNhcmV0T2Zmc2V0IH07CisgICAgY2FyZXRPZmZzZXQgPSByZXNvbHZl
ZE9mZnNldDsKIAogICAgIElubGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgYm94OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5oCmluZGV4IDcyNTM3OTk3ZjY1Zi4uZmY4YWE0MGU2OTcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uaApAQCAtMzgsNiArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIExlZ2FjeUlubGluZUJveDsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CitjbGFzcyBSZW5kZXJP
YmplY3Q7CitjbGFzcyBSZW5kZXJUZXh0OwogY2xhc3MgVGV4dDsKIAogc3RydWN0IEJvdW5kYXJ5
UG9pbnQ7CkBAIC0xMDMsNiArMTA1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9mZnNl
dEZvclBvc2l0aW9uQWZ0ZXJBbmNob3IoKTsKICAgICB9CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBy
ZW5kZXJlciBhbmQgZnJhZ21lbnQtbG9jYWwgb2Zmc2V0IGZvciB0aGlzIHBvc2l0aW9uLCBjb3Jy
ZWN0bHkKKyAgICAvLyBoYW5kbGluZyBmaXJzdC1sZXR0ZXIgdGV4dCBmcmFnbWVudCBzcGxpdHMg
d2hlcmUgdGhlIERPTSB0ZXh0IG5vZGUncyByZW5kZXJlcgorICAgIC8vIGlzIHRoZSByZW1haW5p
bmcgZnJhZ21lbnQgcmF0aGVyIHRoYW4gdGhlIGZpcnN0LWxldHRlciBmcmFnbWVudC4KKyAgICBz
dGQ6OnBhaXI8UmVuZGVyT2JqZWN0KiwgdW5zaWduZWQ+IHJlbmRlcmVyQW5kT2Zmc2V0KCkgY29u
c3Q7CisgICAgc3RkOjpwYWlyPFJlbmRlclRleHQqLCB1bnNpZ25lZD4gcmVzb2x2ZWRUZXh0UmVu
ZGVyZXJBbmRPZmZzZXQoKSBjb25zdDsKKwogICAgIFJlZlB0cjxOb2RlPiBmaXJzdE5vZGUoKSBj
b25zdDsKIAogICAgIC8vIFRoZXNlIGFyZSBjb252ZW5pZW5jZSBtZXRob2RzIHdoaWNoIGFyZSBz
bWFydCBhYm91dCB3aGV0aGVyIHRoZSBwb3NpdGlvbiBpcyBuZWlnaGJvciBhbmNob3JlZCBvciBw
YXJlbnQgYW5jaG9yZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0
ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmNwcAppbmRl
eCA0MDJiNTFhMDA2MmYuLjM2Nzc2YzAxMTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bkl0ZXJhdG9yLmNwcApAQCAtMTc1LDggKzE3NSwxMiBAQCBib29sIFBvc2l0aW9uSXRlcmF0b3I6
OmlzQ2FuZGlkYXRlKCkgY29uc3QKICAgICBpZiAocmVuZGVyZXItPmlzQlIoKSkKICAgICAgICAg
cmV0dXJuIFBvc2l0aW9uKCp0aGlzKS5pc0NhbmRpZGF0ZSgpOwogCi0gICAgaWYgKENoZWNrZWRQ
dHIgcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKQot
ICAgICAgICByZXR1cm4gIVBvc2l0aW9uOjpub2RlSXNVc2VyU2VsZWN0Tm9uZShhbmNob3JOb2Rl
LmdldCgpKSAmJiByZW5kZXJUZXh0LT5jb250YWluc0NhcmV0T2Zmc2V0KG1fb2Zmc2V0SW5BbmNo
b3IpOworICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclRleHQgPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVyVGV4dD4oKnJlbmRlcmVyKSkgeworICAgICAgICBpZiAoUG9zaXRpb246Om5vZGVJc1VzZXJT
ZWxlY3ROb25lKGFuY2hvck5vZGUuZ2V0KCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBhdXRvIFtyZXNvbHZlZFRleHQsIHJlc29sdmVkT2Zmc2V0XSA9IFBvc2l0aW9uKCp0
aGlzKS5yZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCgpOworICAgICAgICByZXR1cm4gcmVz
b2x2ZWRUZXh0ICYmIHJlc29sdmVkVGV4dC0+Y29udGFpbnNDYXJldE9mZnNldChyZXNvbHZlZE9m
ZnNldCk7CisgICAgfQogCiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlT3JBZnRlck5vZGVJc0NhbmRp
ZGF0ZSgqYW5jaG9yTm9kZSkpCiAgICAgICAgIHJldHVybiAoYXRTdGFydE9mTm9kZSgpIHx8IGF0
RW5kT2ZOb2RlKCkpICYmICFQb3NpdGlvbjo6bm9kZUlzVXNlclNlbGVjdE5vbmUoYW5jaG9yTm9k
ZS0+cGFyZW50Tm9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IGRhYTQ3
MzVhZDM2Ni4uYjI3ZjEyMTM2ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAg
LTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZStHZXR0ZXJzSW5saW5lcy5oIgog
I2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgogI2luY2x1ZGUg
IlJlbmRlcmVkUG9zaXRpb24uaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgpAQCAtOTA0LDExICs5MDUsMTggQEAgaW50IGNhcmV0TWF4T2Zmc2V0KGNvbnN0IE5v
ZGUmIG5vZGUpCiAgICAgLy8gRm9yIHJlbmRlcmVkIHRleHQgbm9kZXMsIHJldHVybiB0aGUgbGFz
dCBwb3NpdGlvbiB0aGF0IGEgY2FyZXQgY291bGQgb2NjdXB5LgogICAgIGlmIChhdXRvKiB0ZXh0
ID0gZHluYW1pY0Rvd25jYXN0PFRleHQ+KG5vZGUpKSB7CiAgICAgICAgIGlmIChDaGVja2VkUHRy
IHJlbmRlcmVyID0gdGV4dC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJl
ci0+Y2FyZXRNYXhPZmZzZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdExldHRlckFkanVz
dGVkRE9NT2Zmc2V0KCpyZW5kZXJlciwgcmVuZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCkpOwogICAg
IH0KICAgICByZXR1cm4gbGFzdE9mZnNldEZvckVkaXRpbmcobm9kZSk7CiB9CiAKK3Vuc2lnbmVk
IGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
ciwgdW5zaWduZWQgb2Zmc2V0KQoreworICAgIGlmIChhdXRvKiB0ZXh0RnJhZ21lbnQgPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7IHRleHRGcmFnbWVudCAm
JiB0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpCisgICAgICAgIHJldHVybiBvZmZzZXQgKyB0
ZXh0RnJhZ21lbnQtPnN0YXJ0KCk7CisgICAgcmV0dXJuIG9mZnNldDsKK30KKwogYm9vbCBsaW5l
QnJlYWtFeGlzdHNBdFZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0
aW9uKQogewogICAgIHJldHVybiBsaW5lQnJlYWtFeGlzdHNBdFBvc2l0aW9uKHBvc2l0aW9uLmRl
ZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKaW5k
ZXggMGQzODM3MmQ0NmMzLi42NjAxYzlhMmIzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5o
CkBAIC03OSw2ICs3OSw3IEBAIE5vZGUqIHByZXZpb3VzTGVhZk5vZGUoY29uc3QgTm9kZSopOwog
V0VCQ09SRV9FWFBPUlQgaW50IGxhc3RPZmZzZXRGb3JFZGl0aW5nKGNvbnN0IE5vZGUmKTsKIGlu
dCBjYXJldE1pbk9mZnNldChjb25zdCBOb2RlJik7CiBpbnQgY2FyZXRNYXhPZmZzZXQoY29uc3Qg
Tm9kZSYpOwordW5zaWduZWQgZmlyc3RMZXR0ZXJBZGp1c3RlZERPTU9mZnNldChjb25zdCBSZW5k
ZXJPYmplY3QmLCB1bnNpZ25lZCBvZmZzZXQpOwogCiBib29sIGhhc0VkaXRhYmxlU3R5bGUoY29u
c3QgTm9kZSYsIEVkaXRhYmxlVHlwZSk7CiBib29sIGlzRWRpdGFibGVOb2RlKGNvbnN0IE5vZGUm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggZTYzMjdk
ZTViNThkLi4yNjU3ZDdlMDc1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCkBAIC0yNDM2LDEyICsyNDM2LDEwIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnVw
ZGF0ZUFwcGVhcmFuY2UoKQogICAgIC8vIFdlIGNhbiBnZXQgaW50byBhIHN0YXRlIHdoZXJlIHRo
ZSBzZWxlY3Rpb24gZW5kcG9pbnRzIG1hcCB0byB0aGUgc2FtZSBWaXNpYmxlUG9zaXRpb24gd2hl
biBhIHNlbGVjdGlvbiBpcyBkZWxldGVkCiAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB5ZXQgbm90
aWZ5IHRoZSBGcmFtZVNlbGVjdGlvbiBvZiB0ZXh0IHJlbW92YWwuCiAgICAgaWYgKENoZWNrZWRQ
dHIgdmlldyA9IGRvY3VtZW50LT5yZW5kZXJWaWV3KCk7IHN0YXJ0UG9zLmlzTm90TnVsbCgpICYm
IGVuZFBvcy5pc05vdE51bGwoKSAmJiBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgIT0gc2VsZWN0
aW9uLnZpc2libGVFbmQoKSkgewotICAgICAgICBDaGVja2VkUHRyIHN0YXJ0UmVuZGVyZXIgPSBz
dGFydFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgICAgICBpbnQgc3RhcnRP
ZmZzZXQgPSBzdGFydFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgICAgICBDaGVj
a2VkUHRyIGVuZFJlbmRlcmVyID0gZW5kUG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7
Ci0gICAgICAgIGludCBlbmRPZmZzZXQgPSBlbmRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KTsKLSAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ID49IDAgJiYgZW5kT2Zmc2V0ID49IDApOwot
ICAgICAgICB2aWV3LT5zZWxlY3Rpb24oKS5zZXQoeyBzdGFydFJlbmRlcmVyLCBlbmRSZW5kZXJl
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGVuZE9mZnNldCkgfSk7CisgICAgICAgIGF1dG8gW3N0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zm
c2V0XSA9IHN0YXJ0UG9zLnJlbmRlcmVyQW5kT2Zmc2V0KCk7CisgICAgICAgIGF1dG8gW2VuZFJl
bmRlcmVyLCBlbmRPZmZzZXRdID0gZW5kUG9zLnJlbmRlcmVyQW5kT2Zmc2V0KCk7CisgICAgICAg
IGlmIChzdGFydFJlbmRlcmVyICYmIGVuZFJlbmRlcmVyKQorICAgICAgICAgICAgdmlldy0+c2Vs
ZWN0aW9uKCkuc2V0KHsgc3RhcnRSZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJl
ZFBvc2l0aW9uLmNwcAppbmRleCBhNjVmY2QxOGEwNWEuLmI0YzhlNTRiZmUwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogCiAjaW5jbHVkZSAiQ2FyZXRSZWN0Q29t
cHV0YXRpb24uaCIKKyNpbmNsdWRlICJFZGl0aW5nLmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5k
T2Zmc2V0LmgiCiAjaW5jbHVkZSAiTm9kZUlubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3RJbmxpbmVzLmgiCkBAIC04NSw2ICs4Niw3IEBAIFJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVk
UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSkKICAg
ICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1fbm9kZSA9
IHBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCk7CiAgICAgYXV0byBib3hBbmRPZmZzZXQgPSBwb3Np
dGlvbi5pbmxpbmVCb3hBbmRPZmZzZXQoYWZmaW5pdHkpOwogICAgIG1fYm94ID0gYm94QW5kT2Zm
c2V0LmJveDsKICAgICBtX29mZnNldCA9IGJveEFuZE9mZnNldC5vZmZzZXQ7CkBAIC0yMDYsNyAr
MjA4LDcgQEAgUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdExlZnRCb3VuZGFy
eU9mQmlEaVJ1bigpIGNvbnN0CiAgICAgQVNTRVJUKGF0TGVmdEJvdW5kYXJ5T2ZCaWRpUnVuKCkp
OwogCiAgICAgaWYgKGF0TGVmdG1vc3RPZmZzZXRJbkJveCgpKQotICAgICAgICByZXR1cm4gbWFr
ZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG1fcmVuZGVyZXItPm5vZGUoKSkuZ2V0
KCksIG1fb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRp
b24ocHJvdGVjdChtX25vZGUuZ2V0KCkpLmdldCgpLCBtX29mZnNldCk7CiAKICAgICByZXR1cm4g
bWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG5leHRMZWFmT25MaW5lKCktPnJl
bmRlcmVyKCkubm9kZSgpKS5nZXQoKSwgbmV4dExlYWZPbkxpbmUoKS0+bGVmdG1vc3RDYXJldE9m
ZnNldCgpKTsKIH0KQEAgLTIxNSw4ICsyMTcsMTAgQEAgUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlv
bjo6cG9zaXRpb25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdAogewogICAgIEFTU0VS
VChhdFJpZ2h0Qm91bmRhcnlPZkJpZGlSdW4oKSk7CiAKLSAgICBpZiAoYXRSaWdodG1vc3RPZmZz
ZXRJbkJveCgpKQotICAgICAgICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihw
cm90ZWN0KG1fcmVuZGVyZXItPm5vZGUoKSkuZ2V0KCksIG1fb2Zmc2V0KTsKKyAgICBpZiAoYXRS
aWdodG1vc3RPZmZzZXRJbkJveCgpKSB7CisgICAgICAgIGF1dG8gb2Zmc2V0ID0gZmlyc3RMZXR0
ZXJBZGp1c3RlZERPTU9mZnNldCgqbV9yZW5kZXJlciwgbV9vZmZzZXQpOworICAgICAgICByZXR1
cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG1fbm9kZS5nZXQoKSkuZ2V0
KCksIG9mZnNldCk7CisgICAgfQogCiAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9z
aXRpb24ocHJvdGVjdChwcmV2aW91c0xlYWZPbkxpbmUoKS0+cmVuZGVyZXIoKS5ub2RlKCkpLmdl
dCgpLCBwcmV2aW91c0xlYWZPbkxpbmUoKS0+cmlnaHRtb3N0Q2FyZXRPZmZzZXQoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCmluZGV4IGEzMjQwNTk3Yzg1
YS4uYmQ5NTNjYmRlZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRl
cmVkUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRp
b24uaApAQCAtODksNiArODksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgYXRSaWdodEJvdW5kYXJ5
T2ZCaWRpUnVuKFNob3VsZE1hdGNoQmlkaUxldmVsLCB1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbE9m
UnVuKSBjb25zdDsKIAogICAgIFNpbmdsZVRocmVhZFdlYWtQdHI8Y29uc3QgUmVuZGVyT2JqZWN0
PiBtX3JlbmRlcmVyOworICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAgSW5saW5lSXRlcmF0
b3I6OkxlYWZCb3hJdGVyYXRvciBtX2JveDsKICAgICB1bnNpZ25lZCBtX29mZnNldCB7IDAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDAxZTM4MzY2Njkx
Yy4uY2JjM2Y5ZmUyMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
CkBAIC02MDcsNiArNjA3LDggQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkK
ICAgICBDaGVja2VkUmVmIHJlbmRlcmVyID0gKnRleHROb2RlLT5yZW5kZXJlcigpOwogICAgIG1f
bGFzdFRleHROb2RlID0gdGV4dE5vZGUucHRyKCk7CiAgICAgYXV0byByZW5kZXJlclRleHQgPSBy
ZW5kZXJlclRleHRGb3JCZWhhdmlvcihyZW5kZXJlci5nZXQoKSk7CisgICAgLy8gdGV4dEZyYWdt
ZW50IGlzIHRoZSByZW5kZXJlciB0aGF0IGhvbGRzIHRoZSB0cmFpbGluZyBjb250ZW50IGFuZCBo
YXMgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IGxldHRlciByZW5kZXJlci4KKyAgICBDaGVja2Vk
UHRyIHRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJl
bmRlcmVyLmdldCgpKTsKIAogICAgIC8vIGhhbmRsZSBwcmUtZm9ybWF0dGVkIHRleHQKICAgICBp
ZiAoIXJlbmRlcmVyLT5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB7CkBAIC02MTUsOCAr
NjE3LDggQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJyAnLCBXVEY6Om1vdmUodGV4dE5vZGUpLCBudWxscHRyLCBydW5TdGFy
dCwgcnVuU3RhcnQpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxS
ZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKTsgcmVuZGVyVGV4dEZyYWdtZW50ICYmICFtX2hh
bmRsZWRGaXJzdExldHRlciAmJiAhbV9vZmZzZXQpIHsKLSAgICAgICAgICAgIGhhbmRsZVRleHRO
b2RlRmlyc3RMZXR0ZXIoKnJlbmRlclRleHRGcmFnbWVudCk7CisgICAgICAgIGlmICh0ZXh0RnJh
Z21lbnQgJiYgIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmICFtX29mZnNldCkgeworICAgICAgICAg
ICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcigqdGV4dEZyYWdtZW50KTsKICAgICAgICAgICAg
IGlmIChtX2ZpcnN0TGV0dGVyVGV4dCkgewogICAgICAgICAgICAgICAgIFN0cmluZyBmaXJzdExl
dHRlciA9IG1fZmlyc3RMZXR0ZXJUZXh0LT50ZXh0KCk7CiAgICAgICAgICAgICAgICAgZW1pdFRl
eHQodGV4dE5vZGUsICpwcm90ZWN0KG1fZmlyc3RMZXR0ZXJUZXh0KSwgbV9vZmZzZXQsIG1fb2Zm
c2V0ICsgZmlyc3RMZXR0ZXIubGVuZ3RoKCkpOwpAQCAtNjI3LDkgKzYyOSwxNSBAQCBib29sIFRl
eHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICB9CiAgICAgICAgIGlmIChyZW5k
ZXJlci0+c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhbV9i
ZWhhdmlvcnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6Oklnbm9yZXNTdHlsZVZpc2li
aWxpdHkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpbnQgcmVuZGVyZXJU
ZXh0TGVuZ3RoID0gcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwotICAgICAgICBpbnQgZW5kID0gKHRl
eHROb2RlLnB0cigpID09IG1fZW5kQ29udGFpbmVyKSA/IG1fZW5kT2Zmc2V0IDogSU5UX01BWDsK
LSAgICAgICAgaW50IHJ1bkVuZCA9IHN0ZDo6bWluKHJlbmRlcmVyVGV4dExlbmd0aCwgZW5kKTsK
KyAgICAgICAgYXV0byByZW5kZXJlclRleHRMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRl
cmVyVGV4dC5sZW5ndGgoKSk7CisgICAgICAgIGF1dG8gZW5kID0gKHRleHROb2RlLnB0cigpID09
IG1fZW5kQ29udGFpbmVyKSA/IG1fZW5kT2Zmc2V0IDogSU5UX01BWDsKKyAgICAgICAgaWYgKHRl
eHRGcmFnbWVudCAmJiB0ZXh0RnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpIHsKKyAgICAgICAgICAg
IC8vIFRoZSByZW1haW5pbmcgdGV4dCBmcmFnbWVudCdzIHRleHQgaXMgZnJhZ21lbnQtbG9jYWwu
IENvbnZlcnQgRE9NIG9mZnNldHMgdG8gZnJhZ21lbnQtbG9jYWwgc28gd2UgY2FuIGNvbXBhcmUg
YWdhaW5zdCB0aGUgcmVuZGVyZXIncyB0ZXh0IGxlbmd0aC4KKyAgICAgICAgICAgIGF1dG8gZnJh
Z21lbnRTdGFydCA9IHN0YXRpY19jYXN0PGludD4odGV4dEZyYWdtZW50LT5zdGFydCgpKTsKKyAg
ICAgICAgICAgIHJ1blN0YXJ0ID0gc3RkOjptYXgoMCwgcnVuU3RhcnQgLSBmcmFnbWVudFN0YXJ0
KTsKKyAgICAgICAgICAgIGVuZCA9IGVuZCA9PSBJTlRfTUFYID8gSU5UX01BWCA6IHN0ZDo6bWF4
KDAsIGVuZCAtIGZyYWdtZW50U3RhcnQpOworICAgICAgICB9CisgICAgICAgIGF1dG8gcnVuRW5k
ID0gc3RkOjptaW4ocmVuZGVyZXJUZXh0TGVuZ3RoLCBlbmQpOwogCiAgICAgICAgIGlmIChydW5T
dGFydCA+PSBydW5FbmQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY0MCw4ICs2NDgs
OCBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogCiAgICAgc3RkOjp0aWUo
bV90ZXh0UnVuLCBtX3RleHRSdW5Mb2dpY2FsT3JkZXJDYWNoZSkgPSBJbmxpbmVJdGVyYXRvcjo6
Zmlyc3RUZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3IocmVuZGVyZXIuZ2V0KCkpOwogCi0gICAgaWYg
KENoZWNrZWRQdHIgcmVuZGVyVGV4dEZyYWdtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRl
eHRGcmFnbWVudD4ocmVuZGVyZXIpOyByZW5kZXJUZXh0RnJhZ21lbnQgJiYgIW1faGFuZGxlZEZp
cnN0TGV0dGVyICYmICFtX29mZnNldCkKLSAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRl
cigqcmVuZGVyVGV4dEZyYWdtZW50KTsKKyAgICBpZiAodGV4dEZyYWdtZW50ICYmICFtX2hhbmRs
ZWRGaXJzdExldHRlciAmJiAhbV9vZmZzZXQpCisgICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RM
ZXR0ZXIoKnRleHRGcmFnbWVudCk7CiAgICAgZWxzZSBpZiAoIW1fdGV4dFJ1biAmJiByZW5kZXJl
clRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFtX2JlaGF2aW9ycy5jb250YWlucyhUZXh0
SXRlcmF0b3JCZWhhdmlvcjo6SWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02NjUsMTIgKzY3MywyMSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFu
ZGxlVGV4dFJ1bigpCiAKICAgICBhdXRvIFtmaXJzdFRleHRSdW4sIG9yZGVyQ2FjaGVdID0gSW5s
aW5lSXRlcmF0b3I6OmZpcnN0VGV4dEJveEluTG9naWNhbE9yZGVyRm9yKHJlbmRlcmVyKTsKIAot
ICAgIGF1dG8gcmVuZGVyZXJUZXh0ID0gcmVuZGVyZXJUZXh0Rm9yQmVoYXZpb3IocmVuZGVyZXIu
Z2V0KCkpOwotICAgIHVuc2lnbmVkIHJhbmdlU3RhcnQgPSBtX29mZnNldDsKLSAgICBhdXRvIHJh
bmdlRW5kID0gc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4geyB9OwotICAgIGlmICh0ZXh0Tm9kZS5w
dHIoKSA9PSBtX2VuZENvbnRhaW5lcikKLSAgICAgICAgcmFuZ2VFbmQgPSBtX2VuZE9mZnNldDsK
KyAgICAvLyBGb3IgcmVtYWluaW5nIHRleHQgZnJhZ21lbnRzIGFmdGVyIGEgZmlyc3QtbGV0dGVy
IHNwbGl0LCB0ZXh0IGJveCBvZmZzZXRzIGFyZSBmcmFnbWVudC1sb2NhbCBidXQgbV9vZmZzZXQv
bV9lbmRPZmZzZXQgYXJlIERPTSBvZmZzZXRzLgorICAgIHVuc2lnbmVkIHJlbWFpbmluZ0ZyYWdt
ZW50U3RhcnQgPSAwOworICAgIGlmIChhdXRvKiByZW5kZXJUZXh0ID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIuZ2V0KCkpOyByZW5kZXJUZXh0ICYmIHJlbmRl
clRleHQtPmZpcnN0TGV0dGVyKCkpCisgICAgICAgIHJlbWFpbmluZ0ZyYWdtZW50U3RhcnQgPSBy
ZW5kZXJUZXh0LT5zdGFydCgpOworCisgICAgYXV0byB0b0ZyYWdtZW50TG9jYWwgPSBbJl0odW5z
aWduZWQgZG9tT2Zmc2V0KSB7CisgICAgICAgIHJldHVybiBkb21PZmZzZXQgPiByZW1haW5pbmdG
cmFnbWVudFN0YXJ0ID8gZG9tT2Zmc2V0IC0gcmVtYWluaW5nRnJhZ21lbnRTdGFydCA6IDA7Cisg
ICAgfTsKKyAgICBhdXRvIHRvRE9NT2Zmc2V0ID0gWyZdKHVuc2lnbmVkIGxvY2FsT2Zmc2V0KSB7
CisgICAgICAgIHJldHVybiBsb2NhbE9mZnNldCArIHJlbWFpbmluZ0ZyYWdtZW50U3RhcnQ7Cisg
ICAgfTsKIAorICAgIGF1dG8gcmVuZGVyZXJUZXh0ID0gcmVuZGVyZXJUZXh0Rm9yQmVoYXZpb3Io
cmVuZGVyZXIuZ2V0KCkpOworICAgIGF1dG8gcmFuZ2VTdGFydCA9IHRvRnJhZ21lbnRMb2NhbCht
X29mZnNldCk7CisgICAgYXV0byByYW5nZUVuZCA9IHRleHROb2RlLnB0cigpID09IG1fZW5kQ29u
dGFpbmVyID8gc3RkOjptYWtlX29wdGlvbmFsKHRvRnJhZ21lbnRMb2NhbChtX2VuZE9mZnNldCkp
IDogc3RkOjpudWxsb3B0OwogICAgIHdoaWxlIChtX3RleHRSdW4pIHsKICAgICAgICAgYXV0byB0
ZXh0UnVuU3RhcnQgPSBtX3RleHRSdW4tPnN0YXJ0KCk7CiAgICAgICAgIGF1dG8gdGV4dFJ1bkVu
ZCA9IHRleHRSdW5TdGFydCArIG1fdGV4dFJ1bi0+bGVuZ3RoKCk7CkBAIC03MDQsNyArNzIxLDcg
QEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRSdW4oKQogICAgICAgICAgICAgLy8gVGhp
cyBlZmZlY3RpdmVseSB0cmFuc2xhdGVzIG5ld2xpbmVzIGFuZCB0YWJzIHRvIHNwYWNlcyB3aXRo
b3V0IGNvcHlpbmcgdGhlIHRleHQuCiAgICAgICAgICAgICBpZiAoaXNOZXdsaW5lT3JUYWIocmVu
ZGVyZXJUZXh0W3J1blN0YXJ0XSkpIHsKICAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcg
JywgdGV4dE5vZGUuY29weVJlZigpLCBudWxscHRyLCBydW5TdGFydCwgcnVuU3RhcnQgKyAxKTsK
LSAgICAgICAgICAgICAgICBtX29mZnNldCA9IHJ1blN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAg
ICBtX29mZnNldCA9IHRvRE9NT2Zmc2V0KHJ1blN0YXJ0ICsgMSk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIGF1dG8gc3VicnVuRW5kID0gcnVuU3RhcnQgKyAxOwogICAg
ICAgICAgICAgICAgIGZvciAoOyBzdWJydW5FbmQgPCBydW5FbmQ7ICsrc3VicnVuRW5kKSB7CkBA
IC03MTYsMTMgKzczMywxMyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dFJ1bigpCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChsYXN0U3BhY2VDb2xsYXBzZWRCeU5leHROb25UZXh0UnVu
KQogICAgICAgICAgICAgICAgICAgICAgICAgKytzdWJydW5FbmQ7IC8vIHJ1bkVuZCBzdG9wcGVk
IGJlZm9yZSBsYXN0IHNwYWNlLiBJbmNyZW1lbnQgYnkgb25lIHRvIHJlc3RvcmUgdGhlIHNwYWNl
LgogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX29mZnNldCA9IHN1YnJ1bkVu
ZDsKKyAgICAgICAgICAgICAgICBtX29mZnNldCA9IHRvRE9NT2Zmc2V0KHN1YnJ1bkVuZCk7CiAg
ICAgICAgICAgICAgICAgZW1pdFRleHQodGV4dE5vZGUsIHJlbmRlcmVyLCBydW5TdGFydCwgc3Vi
cnVuRW5kKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGRvaW5n
IGEgc3VicnVuIHRoYXQgZG9lc24ndCBnbyB0byB0aGUgZW5kIG9mIHRoZSB0ZXh0IGJveCwKICAg
ICAgICAgICAgIC8vIGNvbWUgYmFjayBhZ2FpbiB0byBmaW5pc2ggaGFuZGxpbmcgdGhpcyB0ZXh0
IGJveDsgZG9uJ3QgYWR2YW5jZSB0byB0aGUgbmV4dCBvbmUuCi0gICAgICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9zaXRpb25FbmRPZmZzZXQpIDwgdGV4dFJ1bkVuZCkKKyAg
ICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wb3NpdGlvbkVuZE9mZnNldCkg
PCB0b0RPTU9mZnNldCh0ZXh0UnVuRW5kKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgIC8vIEFkdmFuY2UgYW5kIHJldHVybgpAQCAtMTIwMSw4ICsxMjE4LDExIEBAIHZv
aWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChUZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVGV4dCYgcmVu
ZGVyZXIsIGludCB0ZXh0U3RhcnRPCiAKICAgICBtX3Bvc2l0aW9uTm9kZSA9IHRleHROb2RlOwog
ICAgIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZSA9IG51bGxwdHI7Ci0gICAgbV9wb3NpdGlvblN0
YXJ0T2Zmc2V0ID0gdGV4dFN0YXJ0T2Zmc2V0OwotICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSB0
ZXh0RW5kT2Zmc2V0OworICAgIC8vIEZvciByZW1haW5pbmcgdGV4dCBmcmFnbWVudHMgYWZ0ZXIg
YSBmaXJzdC1sZXR0ZXIgc3BsaXQsIHRoZSB0ZXh0IG9mZnNldHMgYXJlCisgICAgLy8gZnJhZ21l
bnQtbG9jYWwgYnV0IHBvc2l0aW9uIG9mZnNldHMgbmVlZCB0byBiZSBET00tcmVsYXRpdmUgZm9y
IHJhbmdlKCkgdG8KKyAgICAvLyByZXR1cm4gY29ycmVjdCBib3VuZGFyeSBwb2ludHMgKHVzZWQg
Ynkgd29yZC9zZW50ZW5jZSBib3VuZGFyeSBkZXRlY3Rpb24pLgorICAgIG1fcG9zaXRpb25TdGFy
dE9mZnNldCA9IGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQocmVuZGVyZXIsIHRleHRTdGFy
dE9mZnNldCk7CisgICAgbV9wb3NpdGlvbkVuZE9mZnNldCA9IGZpcnN0TGV0dGVyQWRqdXN0ZWRE
T01PZmZzZXQocmVuZGVyZXIsIHRleHRFbmRPZmZzZXQpOwogCiAgICAgbV9sYXN0Q2hhcmFjdGVy
ID0gc3RyaW5nW3RleHRFbmRPZmZzZXQgLSAxXTsKICAgICBtX2NvcHlhYmxlVGV4dC5zZXQoV1RG
Ojptb3ZlKHN0cmluZyksIHRleHRTdGFydE9mZnNldCwgdGV4dEVuZE9mZnNldCAtIHRleHRTdGFy
dE9mZnNldCk7CkBAIC0xMzYxLDcwICsxMzgxLDUyIEBAIGJvb2wgU2ltcGxpZmllZEJhY2t3YXJk
c1RleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogewogICAgIG1fbGFzdFRleHROb2RlID0g
ZG93bmNhc3Q8VGV4dD4obV9ub2RlLmdldCgpKTsKIAotICAgIGludCBzdGFydE9mZnNldDsKLSAg
ICBpbnQgb2Zmc2V0SW5Ob2RlOwotICAgIENoZWNrZWRQdHIgcmVuZGVyZXIgPSBoYW5kbGVGaXJz
dExldHRlcihzdGFydE9mZnNldCwgb2Zmc2V0SW5Ob2RlKTsKLSAgICBpZiAoIXJlbmRlcmVyKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBDaGVja2VkUmVmIHJlbmRlcmVyID0gZG93bmNhc3Q8
UmVuZGVyVGV4dD4oKm1fbm9kZS0+cmVuZGVyZXIoKSk7CisgICAgYXV0byBzdGFydE9mZnNldCA9
IChtX25vZGUgPT0gbV9zdGFydENvbnRhaW5lcikgPyBtX3N0YXJ0T2Zmc2V0IDogMDsKIAotICAg
IFN0cmluZyB0ZXh0ID0gcmVuZGVyZXItPnRleHQoKTsKKyAgICBhdXRvIHRleHQgPSByZW5kZXJl
ci0+dGV4dCgpOwogICAgIGlmICghcmVuZGVyZXItPmhhc1JlbmRlcmVkVGV4dCgpICYmIHRleHQu
bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKHN0YXJ0T2Zmc2V0ICsg
b2Zmc2V0SW5Ob2RlID09IG1fb2Zmc2V0KSB7Ci0gICAgICAgIEFTU0VSVCghbV9zaG91bGRIYW5k
bGVGaXJzdExldHRlcik7CisgICAgaWYgKHN0YXJ0T2Zmc2V0ID09IG1fb2Zmc2V0KQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIE5vdGhpbmcgdG8gZW1pdCB3aGVuIHRoZSByZW5kZXJl
ciB0ZXh0IGlzIGVtcHR5IChlLmcuIHRoZSByZW1haW5pbmcgdGV4dAorICAgIC8vIGZyYWdtZW50
IGFmdGVyIGEgZmlyc3QtbGV0dGVyIHNwbGl0IGNvdmVycyBubyBjaGFyYWN0ZXJzKS4KKyAgICBp
ZiAoIXRleHQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KIAogICAgIG1f
cG9zaXRpb25FbmRPZmZzZXQgPSBtX29mZnNldDsKLSAgICBtX29mZnNldCA9IHN0YXJ0T2Zmc2V0
ICsgb2Zmc2V0SW5Ob2RlOworICAgIG1fb2Zmc2V0ID0gc3RhcnRPZmZzZXQ7CiAgICAgbV9wb3Np
dGlvbk5vZGUgPSBtX25vZGU7CiAgICAgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0ID0gbV9vZmZzZXQ7
CiAKLSAgICBBU1NFUlQobV9wb3NpdGlvblN0YXJ0T2Zmc2V0IDwgbV9wb3NpdGlvbkVuZE9mZnNl
dCk7Ci0gICAgQVNTRVJUKG1fcG9zaXRpb25TdGFydE9mZnNldCAtIG9mZnNldEluTm9kZSA+PSAw
KTsKLSAgICBBU1NFUlQobV9wb3NpdGlvbkVuZE9mZnNldCAtIG9mZnNldEluTm9kZSA+IDApOwot
ICAgIEFTU0VSVChtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlIDw9IHN0YXRpY19j
YXN0PGludD4odGV4dC5sZW5ndGgoKSkpOwotCi0gICAgbV9sYXN0Q2hhcmFjdGVyID0gdGV4dFtt
X3Bvc2l0aW9uRW5kT2Zmc2V0IC0gb2Zmc2V0SW5Ob2RlIC0gMV07Ci0gICAgbV9jb3B5YWJsZVRl
eHQuc2V0KFdURjo6bW92ZSh0ZXh0KSwgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0IC0gb2Zmc2V0SW5O
b2RlLCBtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gbV9wb3NpdGlvblN0YXJ0T2Zmc2V0KTsKLSAgICBt
X3RleHQgPSBtX2NvcHlhYmxlVGV4dC50ZXh0KCk7Ci0KLSAgICByZXR1cm4gIW1fc2hvdWxkSGFu
ZGxlRmlyc3RMZXR0ZXI7Ci19CisgICAgLy8gRm9yIHJlbWFpbmluZyB0ZXh0IGZyYWdtZW50cyBh
ZnRlciBhIGZpcnN0LWxldHRlciBzcGxpdCwgRE9NIG9mZnNldHMgKG1fcG9zaXRpb25TdGFydE9m
ZnNldCwKKyAgICAvLyBtX3Bvc2l0aW9uRW5kT2Zmc2V0KSBkaWZmZXIgZnJvbSBmcmFnbWVudC1s
b2NhbCBvZmZzZXRzIHVzZWQgdG8gaW5kZXggaW50byByZW5kZXJlciB0ZXh0LgorICAgIC8vIENv
bnZlcnQgdG8gZnJhZ21lbnQtbG9jYWwgZm9yIHRleHQgYWNjZXNzLCBrZWVwaW5nIERPTSBvZmZz
ZXRzIGZvciByYW5nZSgpLgorICAgIHVuc2lnbmVkIGZyYWdtZW50U3RhcnQgPSAwOworICAgIGlm
IChhdXRvKiByZW5kZXJUZXh0ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4o
cmVuZGVyZXIuZ2V0KCkpOyByZW5kZXJUZXh0ICYmIHJlbmRlclRleHQtPmZpcnN0TGV0dGVyKCkg
JiYgc3RhcnRPZmZzZXQgPj0gc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJUZXh0LT5zdGFydCgpKSkK
KyAgICAgICAgZnJhZ21lbnRTdGFydCA9IHJlbmRlclRleHQtPnN0YXJ0KCk7CiAKLUNoZWNrZWRQ
dHI8UmVuZGVyVGV4dD4gU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlRmly
c3RMZXR0ZXIoaW50JiBzdGFydE9mZnNldCwgaW50JiBvZmZzZXRJbk5vZGUpCi17Ci0gICAgQ2hl
Y2tlZFJlZiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCptX25vZGUtPnJlbmRlcmVy
KCkpOwotICAgIHN0YXJ0T2Zmc2V0ID0gKG1fbm9kZSA9PSBtX3N0YXJ0Q29udGFpbmVyKSA/IG1f
c3RhcnRPZmZzZXQgOiAwOworICAgIC8vIEFmdGVyIGVkaXRpbmcgbXV0YXRpb25zIChlLmcuIGRl
bGV0aW5nIHRoZSBsYXN0IGNoYXJhY3RlciksCisgICAgLy8gbV9wb3NpdGlvbkVuZE9mZnNldCBj
YW4gZXhjZWVkIHRoZSB0ZXh0IG5vZGUncyBjdXJyZW50IGxlbmd0aCBpbiBET00gc3BhY2UuCisg
ICAgYXV0byB0ZXh0TGVuZ3RoSW5ET01TcGFjZSA9IHN0YXRpY19jYXN0PGludD4odGV4dC5sZW5n
dGgoKSArIGZyYWdtZW50U3RhcnQpOworICAgIGlmIChtX3Bvc2l0aW9uRW5kT2Zmc2V0ID4gdGV4
dExlbmd0aEluRE9NU3BhY2UpCisgICAgICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSB0ZXh0TGVu
Z3RoSW5ET01TcGFjZTsKIAotICAgIENoZWNrZWRQdHIgZnJhZ21lbnQgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7Ci0gICAgaWYgKCFmcmFnbWVudCkgewot
ICAgICAgICBvZmZzZXRJbk5vZGUgPSAwOwotICAgICAgICByZXR1cm4gcmVuZGVyZXI7Ci0gICAg
fQorICAgIGludCBsb2NhbFN0YXJ0ID0gbV9wb3NpdGlvblN0YXJ0T2Zmc2V0IC0gZnJhZ21lbnRT
dGFydDsKKyAgICBpbnQgbG9jYWxFbmQgPSBtX3Bvc2l0aW9uRW5kT2Zmc2V0IC0gZnJhZ21lbnRT
dGFydDsKIAotICAgIGludCBvZmZzZXRBZnRlckZpcnN0TGV0dGVyID0gZnJhZ21lbnQtPnN0YXJ0
KCk7Ci0gICAgaWYgKHN0YXJ0T2Zmc2V0ID49IG9mZnNldEFmdGVyRmlyc3RMZXR0ZXIpIHsKLSAg
ICAgICAgQVNTRVJUKCFtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVyKTsKLSAgICAgICAgb2Zmc2V0
SW5Ob2RlID0gb2Zmc2V0QWZ0ZXJGaXJzdExldHRlcjsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVy
OwotICAgIH0KLQotICAgIGlmICghbV9zaG91bGRIYW5kbGVGaXJzdExldHRlciAmJiBzdGFydE9m
ZnNldCArIG9mZnNldEFmdGVyRmlyc3RMZXR0ZXIgPCBtX29mZnNldCkgewotICAgICAgICBtX3No
b3VsZEhhbmRsZUZpcnN0TGV0dGVyID0gdHJ1ZTsKLSAgICAgICAgb2Zmc2V0SW5Ob2RlID0gb2Zm
c2V0QWZ0ZXJGaXJzdExldHRlcjsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwotICAgIH0KLQot
ICAgIG1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgPSBmYWxzZTsKLSAgICBvZmZzZXRJbk5vZGUg
PSAwOwotICAgIENoZWNrZWRQdHIgZmlyc3RMZXR0ZXJSZW5kZXJlciA9IGZpcnN0UmVuZGVyVGV4
dEluRmlyc3RMZXR0ZXIocHJvdGVjdChmcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKSkpOworICAgIEFT
U0VSVChtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgPCBtX3Bvc2l0aW9uRW5kT2Zmc2V0KTsKKyAgICBB
U1NFUlQobG9jYWxTdGFydCA+PSAwKTsKKyAgICBBU1NFUlQobG9jYWxFbmQgPiAwKTsKKyAgICBB
U1NFUlQobG9jYWxFbmQgPD0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0Lmxlbmd0aCgpKSk7CiAKLSAg
ICBtX29mZnNldCA9IGZpcnN0TGV0dGVyUmVuZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCk7Ci0gICAg
bV9vZmZzZXQgKz0gY29sbGFwc2VkU3BhY2VMZW5ndGgoKmZpcnN0TGV0dGVyUmVuZGVyZXIsIG1f
b2Zmc2V0KTsKKyAgICBtX2xhc3RDaGFyYWN0ZXIgPSB0ZXh0W2xvY2FsRW5kIC0gMV07CisgICAg
bV9jb3B5YWJsZVRleHQuc2V0KFdURjo6bW92ZSh0ZXh0KSwgbG9jYWxTdGFydCwgbV9wb3NpdGlv
bkVuZE9mZnNldCAtIG1fcG9zaXRpb25TdGFydE9mZnNldCk7CisgICAgbV90ZXh0ID0gbV9jb3B5
YWJsZVRleHQudGV4dCgpOwogCi0gICAgcmV0dXJuIGZpcnN0TGV0dGVyUmVuZGVyZXI7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6
aGFuZGxlUmVwbGFjZWRFbGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5o
CmluZGV4IGY2MWQ0ZDlkZWExMC4uNDdmNzQ5NDMxMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmgKQEAgLTIwMSw3ICsyMDEsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHZvaWQgZXhpdE5vZGUoKTsKICAgICBib29sIGhhbmRsZVRleHROb2RlKCk7Ci0gICAgQ2hlY2tl
ZFB0cjxSZW5kZXJUZXh0PiBoYW5kbGVGaXJzdExldHRlcihpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQm
IG9mZnNldEluTm9kZSk7CiAgICAgYm9vbCBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAgICBi
b29sIGhhbmRsZU5vblRleHROb2RlKCk7CiAgICAgdm9pZCBlbWl0Q2hhcmFjdGVyKGNoYXIxNl90
LCBSZWZQdHI8Tm9kZT4mJiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKQEAgLTIz
Niw4ICsyMzUsNiBAQCBwcml2YXRlOgogICAgIC8vIFdoZXRoZXIgbV9ub2RlIGhhcyBhZHZhbmNl
ZCBiZXlvbmQgdGhlIGl0ZXJhdGlvbiByYW5nZSAoaS5lLiBtX3N0YXJ0Q29udGFpbmVyKS4KICAg
ICBib29sIG1faGF2ZVBhc3NlZFN0YXJ0Q29udGFpbmVyIHsgZmFsc2UgfTsKIAotICAgIC8vIFNo
b3VsZCBoYW5kbGUgZmlyc3QtbGV0dGVyIHJlbmRlcmVyIGluIHRoZSBuZXh0IGNhbGwgdG8gaGFu
ZGxlVGV4dE5vZGUuCi0gICAgYm9vbCBtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVyIHsgZmFsc2Ug
fTsKIH07CiAKIC8vIEJ1aWxkcyBvbiB0aGUgdGV4dCBpdGVyYXRvciwgYWRkaW5nIGEgY2hhcmFj
dGVyIHBvc2l0aW9uIHNvIHdlIGNhbiB3YWxrIG9uZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IGY1ZDFlZWU1ODZjNy4uNzhkMTA4YzZkYzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC00NCw3ICs0NCw5
IEBACiAjaW5jbHVkZSAiUG9zaXRpb25JbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNp
bmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKKyNpbmNsdWRlICJSZW5kZXJCb3hNb2RlbE9iamVj
dC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJU
ZXh0RnJhZ21lbnQuaCIKICNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHQu
aCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKQEAgLTU4LDYgKzYwLDE2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAorLy8gVGhlIGFub255
bW91cyB0ZXh0IHJlbmRlcmVyIGluc2lkZSA6OmZpcnN0LWxldHRlciBoYXMgbm8gRE9NIG5vZGUu
CitzdGF0aWMgUmVuZGVyVGV4dEZyYWdtZW50KiByZW1haW5pbmdUZXh0RnJhZ21lbnRGb3JGaXJz
dExldHRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQoreworICAgIGlmIChyZW5kZXJl
ci5ub2RlKCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ocmVuZGVyZXIucGFyZW50KCkpKQor
ICAgICAgICByZXR1cm4gcGFyZW50LT5maXJzdExldHRlclJlbWFpbmluZ1RleHQoKTsKKyAgICBy
ZXR1cm4geyB9OworfQorCiBWaXNpYmxlUG9zaXRpb246OlZpc2libGVQb3NpdGlvbihjb25zdCBQ
b3NpdGlvbiYgcG9zaXRpb24sIEFmZmluaXR5IGFmZmluaXR5KQogICAgIDogbV9kZWVwUG9zaXRp
b24geyBjYW5vbmljYWxQb3NpdGlvbihwb3NpdGlvbikgfQogewpAQCAtMTQwLDcgKzE1Miw3IEBA
IFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUo
KSBjb25zdAogICAgICAgICAgICAgaWYgKChyZW5kZXJlci0+aXNCbG9ja0xldmVsUmVwbGFjZWRP
ckF0b21pY0lubGluZSgpIHx8IHJlbmRlcmVyLT5pc0JSKCkpICYmIG9mZnNldCA9PSBib3gtPnJp
Z2h0bW9zdENhcmV0T2Zmc2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGJveC0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1f
ZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0
aW9uKTsKIAotICAgICAgICAgICAgaWYgKCFyZW5kZXJlci0+bm9kZSgpKSB7CisgICAgICAgICAg
ICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkgJiYgIXJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0
TGV0dGVyKCpyZW5kZXJlcikpIHsKICAgICAgICAgICAgICAgICBib3gudHJhdmVyc2VMaW5lTGVm
dHdhcmRPbkxpbmUoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJveCkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gcHJl
dmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKQEAgLTE4Miw4ICsxOTQsOCBA
QCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRl
KCkgY29uc3QKICAgICAgICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJl
Y3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzQm94KSB7CiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbG9naWNhbFN0YXJ0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGly
ZWN0aW9uOjpMVFIKLSAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6OmZp
cnN0TGVhZk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoYm94LT5saW5lQm94KCksIG9yZGVy
Q2FjaGUpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjpsYXN0TGVh
Zk9uTGluZUluTG9naWNhbE9yZGVyV2l0aE5vZGUoYm94LT5saW5lQm94KCksIG9yZGVyQ2FjaGUp
OworICAgICAgICAgICAgICAgICAgICAgICAgPyBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RMZWFmT25M
aW5lSW5Mb2dpY2FsT3JkZXIoYm94LT5saW5lQm94KCksIG9yZGVyQ2FjaGUpCisgICAgICAgICAg
ICAgICAgICAgICAgICA6IElubGluZUl0ZXJhdG9yOjpsYXN0TGVhZk9uTGluZUluTG9naWNhbE9y
ZGVyKGJveC0+bGluZUJveCgpLCBvcmRlckNhY2hlKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGxvZ2ljYWxTdGFydCkgewogICAgICAgICAgICAgICAgICAgICAgICAgYm94ID0gbG9naWNhbFN0
YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigp
OwpAQCAtMjUzLDcgKzI2NSw5IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3Vh
bGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBwID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KHJl
bmRlcmVyLT5ub2RlKCkpLmdldCgpLCBvZmZzZXQpOworICAgICAgICBhdXRvKiByZW1haW5pbmdG
cmFnbWVudCA9IHJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVyKCpyZW5kZXJlcik7
CisgICAgICAgIGF1dG8qIG5vZGUgPSByZW1haW5pbmdGcmFnbWVudCA/IHJlbWFpbmluZ0ZyYWdt
ZW50LT50ZXh0Tm9kZSgpIDogcmVuZGVyZXItPm5vZGUoKTsKKyAgICAgICAgcCA9IG1ha2VEZXBy
ZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChub2RlKS5nZXQoKSwgZmlyc3RMZXR0ZXJBZGp1
c3RlZERPTU9mZnNldCgqcmVuZGVyZXIsIG9mZnNldCkpOwogCiAgICAgICAgIGlmICgocC5pc0Nh
bmRpZGF0ZSgpICYmIHAuZG93bnN0cmVhbSgpICE9IGRvd25zdHJlYW1TdGFydCkgfHwgcC5hdFN0
YXJ0T2ZUcmVlKCkgfHwgcC5hdEVuZE9mVHJlZSgpKQogICAgICAgICAgICAgcmV0dXJuIHA7CkBA
IC0zMDUsNyArMzE5LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5
RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAgICAgICAgaWYgKChyZW5kZXJlci0+aXNC
bG9ja0xldmVsUmVwbGFjZWRPckF0b21pY0lubGluZSgpIHx8IHJlbmRlcmVyLT5pc0JSKCkpICYm
IG9mZnNldCA9PSBib3gtPmxlZnRtb3N0Q2FyZXRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBuZXh0VmlzdWFsbHlEaXN0aW5j
dENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5k
aWRhdGUobV9kZWVwUG9zaXRpb24pOwogCi0gICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2Rl
KCkpIHsKKyAgICAgICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUoKSAmJiAhcmVtYWluaW5nVGV4
dEZyYWdtZW50Rm9yRmlyc3RMZXR0ZXIoKnJlbmRlcmVyKSkgewogICAgICAgICAgICAgICAgIGJv
eC50cmF2ZXJzZUxpbmVSaWdodHdhcmRPbkxpbmUoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJv
eCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRp
b24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsK
QEAgLTQyMiw3ICs0MzYsOSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFs
bHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCi0gICAgICAgIHAgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHByb3RlY3QocmVu
ZGVyZXItPm5vZGUoKSkuZ2V0KCksIG9mZnNldCk7CisgICAgICAgIGF1dG8qIHJlbWFpbmluZ0Zy
YWdtZW50ID0gcmVtYWluaW5nVGV4dEZyYWdtZW50Rm9yRmlyc3RMZXR0ZXIoKnJlbmRlcmVyKTsK
KyAgICAgICAgYXV0byogbm9kZSA9IHJlbWFpbmluZ0ZyYWdtZW50ID8gcmVtYWluaW5nRnJhZ21l
bnQtPnRleHROb2RlKCkgOiByZW5kZXJlci0+bm9kZSgpOworICAgICAgICBwID0gbWFrZURlcHJl
Y2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG5vZGUpLmdldCgpLCBmaXJzdExldHRlckFkanVz
dGVkRE9NT2Zmc2V0KCpyZW5kZXJlciwgb2Zmc2V0KSk7CiAKICAgICAgICAgaWYgKChwLmlzQ2Fu
ZGlkYXRlKCkgJiYgcC5kb3duc3RyZWFtKCkgIT0gZG93bnN0cmVhbVN0YXJ0KSB8fCBwLmF0U3Rh
cnRPZlRyZWUoKSB8fCBwLmF0RW5kT2ZUcmVlKCkpCiAgICAgICAgICAgICByZXR1cm4gcDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCAyZDQyMjdhYTBmOTEuLjE3
MWE5NDkwNzQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5p
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAt
MjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQm91bmRhcnlQb2ludElubGluZXMuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJFZGl0aW5n
SW5saW5lcy5oIgogI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgpAQCAtODU1LDcgKzg1Niw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gZW5kUG9z
aXRpb25Gb3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgTGluZUVuZHBvaW50CiAgICAg
ICAgIGludCBlbmRPZmZzZXQgPSBlbmRUZXh0Qm94LnN0YXJ0KCk7CiAgICAgICAgIGlmICghZW5k
VGV4dEJveC5pc0xpbmVCcmVhaygpKQogICAgICAgICAgICAgZW5kT2Zmc2V0ICs9IGVuZFRleHRC
b3gubGVuZ3RoKCk7Ci0gICAgICAgIHBvcyA9IFBvc2l0aW9uKGVuZFRleHROb2RlLnJlbGVhc2VO
b25OdWxsKCksIGVuZE9mZnNldCk7CisgICAgICAgIHBvcyA9IFBvc2l0aW9uKGVuZFRleHROb2Rl
LnJlbGVhc2VOb25OdWxsKCksIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01PZmZzZXQoZW5kVGV4dEJv
eC5yZW5kZXJlcigpLCBlbmRPZmZzZXQpKTsKICAgICB9IGVsc2UKICAgICAgICAgcG9zID0gcG9z
aXRpb25BZnRlck5vZGUoKmVuZE5vZGUpOwogCkBAIC0xMjMzLDcgKzEyMzQsNyBAQCBSZWZQdHI8
Tm9kZT4gZmluZEVuZE9mUGFyYWdyYXBoKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogaGlnaGVzdFJv
b3QsIE5vZGUqIHN0YXlJbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG5vZGUgPSBuOwotICAgICAgICAgICAgb2Zmc2V0ID0gci0+Y2FyZXRNYXhPZmZzZXQo
KTsKKyAgICAgICAgICAgIG9mZnNldCA9IGNhcmV0TWF4T2Zmc2V0KCpuKTsKICAgICAgICAgICAg
IG4gPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpuLCBzdGF5SW5zaWRlQmxvY2spOwogICAgICAgICB9
IGVsc2UgaWYgKGVkaXRpbmdJZ25vcmVzQ29udGVudCgqbikgfHwgaXNSZW5kZXJlZFRhYmxlKG4u
Z2V0KCkpKSB7CiAgICAgICAgICAgICBub2RlID0gbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKaW5kZXggNDUwY2ZkYTAwOWZiLi4wZjcwNWQ5MTQ3MjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw3IEBA
CiAjaW5jbHVkZSAiTG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWVWaWV3LmgiCiAj
aW5jbHVkZSAiTm9kZUlubGluZXMuaCIKKyNpbmNsdWRlICJFZGl0aW5nLmgiCiAjaW5jbHVkZSAi
T3V0bGluZVBhaW50ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHNldWRvRWxl
bWVudC5oIgpAQCAtMTkxNCw3ICsxOTE1LDcgQEAgUG9zaXRpb25XaXRoQWZmaW5pdHkgUmVuZGVy
T2JqZWN0OjpjcmVhdGVQb3NpdGlvbldpdGhBZmZpbml0eShpbnQgb2Zmc2V0LCBBZmZpbmkKICAg
ICBpZiAoUmVmUHRyIG5vZGUgPSBub25Qc2V1ZG9Ob2RlKCkpIHsKICAgICAgICAgaWYgKCFub2Rl
LT5oYXNFZGl0YWJsZVN0eWxlKCkpIHsKICAgICAgICAgICAgIC8vIElmIGl0IGNhbiBiZSBmb3Vu
ZCwgd2UgcHJlZmVyIGEgdmlzdWFsbHkgZXF1aXZhbGVudCBwb3NpdGlvbiB0aGF0IGlzIGVkaXRh
YmxlLiAKLSAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gbWFrZURlcHJlY2F0ZWRMZWdh
Y3lQb3NpdGlvbihub2RlLmdldCgpLCBvZmZzZXQpOworICAgICAgICAgICAgUG9zaXRpb24gcG9z
aXRpb24gPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG5vZGUuZ2V0KCksIGZpcnN0TGV0
dGVyQWRqdXN0ZWRET01PZmZzZXQoKnRoaXMsIG9mZnNldCkpOwogICAgICAgICAgICAgUG9zaXRp
b24gY2FuZGlkYXRlID0gcG9zaXRpb24uZG93bnN0cmVhbShDYW5Dcm9zc0VkaXRpbmdCb3VuZGFy
eSk7CiAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPmhhc0VkaXRh
YmxlU3R5bGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRoQWZmaW5pdHko
Y2FuZGlkYXRlLCBhZmZpbml0eSk7CkBAIC0xOTIzLDcgKzE5MjQsNyBAQCBQb3NpdGlvbldpdGhB
ZmZpbml0eSBSZW5kZXJPYmplY3Q6OmNyZWF0ZVBvc2l0aW9uV2l0aEFmZmluaXR5KGludCBvZmZz
ZXQsIEFmZmluaQogICAgICAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbldpdGhBZmZpbml0eShj
YW5kaWRhdGUsIGFmZmluaXR5KTsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogRWxpbWlu
YXRlIGxlZ2FjeSBlZGl0aW5nIHBvc2l0aW9ucwotICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRo
QWZmaW5pdHkobWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLmdldCgpLCBvZmZzZXQp
LCBhZmZpbml0eSk7CisgICAgICAgIHJldHVybiBQb3NpdGlvbldpdGhBZmZpbml0eShtYWtlRGVw
cmVjYXRlZExlZ2FjeVBvc2l0aW9uKG5vZGUuZ2V0KCksIGZpcnN0TGV0dGVyQWRqdXN0ZWRET01P
ZmZzZXQoKnRoaXMsIG9mZnNldCkpLCBhZmZpbml0eSk7CiAgICAgfQogCiAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byBjcm9zcyB0aGUgYm91bmRhcnkgYmV0d2VlbiBlZGl0YWJsZSBhbmQgbm9uLWVk
aXRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZy
YWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQu
Y3BwCmluZGV4IDlhOTEyYzI2N2NhOS4uZmZkNmJkYTkxNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcApAQCAtNjgsNyArNjgsMTQgQEAg
UmVuZGVyVGV4dEZyYWdtZW50Ojp+UmVuZGVyVGV4dEZyYWdtZW50KCkKIAogYm9vbCBSZW5kZXJU
ZXh0RnJhZ21lbnQ6OmNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRl
eHROb2RlKCkgJiYgdGV4dE5vZGUoKS0+aGFzRWRpdGFibGVTdHlsZSgpOworICAgIGlmIChhdXRv
KiB0ZXh0Tm9kZSA9IHRoaXMtPnRleHROb2RlKCkpIHsKKyAgICAgICAgLy8gUmVtYWluaW5nICh0
cmFpbGluZykgdGV4dCBmcmFnbWVudHMgd2l0aCBmaXJzdC1sZXR0ZXIgYXJlIGFsd2F5cyBzZWxl
Y3RhYmxlLAorICAgICAgICAvLyBtYXRjaGluZyB0aGUgYmFzZSBSZW5kZXJUZXh0OjpjYW5CZVNl
bGVjdGlvbkxlYWYoKSBiZWhhdmlvci4KKyAgICAgICAgcmV0dXJuIGZpcnN0TGV0dGVyKCkgPyB0
cnVlIDogdGV4dE5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKTsKKyAgICB9CisgICAgLy8gRmlyc3Qt
bGV0dGVyIGlzIGFsd2F5cyBzZWxlY3RhYmxlLgorICAgIGF1dG8qIGFub255bW91c0lubGluZVdy
YXBwZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW5saW5lPih0aGlzLT5wYXJlbnQoKSk7Cisg
ICAgcmV0dXJuIGFub255bW91c0lubGluZVdyYXBwZXIgJiYgYW5vbnltb3VzSW5saW5lV3JhcHBl
ci0+Zmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dEZyYWdt
ZW50OjpzZXRUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBuZXdUZXh0LCBib29sIGZvcmNlKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLWNh
cmV0LXNpbmdsZS1jaGFyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2ZpcnN0LWxldHRlci1jYXJldC1zaW5nbGUtY2hhci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iYmU0MjZlYmY3ZDcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItY2FyZXQt
c2luZ2xlLWNoYXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3QgdGhhdCBjYXJl
dCBwb3NpdGlvbmluZyB3b3JrcyBjb3JyZWN0bHkgd2hlbiB0aGUgZW50aXJlIHRleHQgaXMgYSA6
OmZpcnN0LWxldHRlciB3aXRoIGFuIGVtcHR5IHJlbWFpbmluZyBmcmFnbWVudC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLmFuY2hv
ck9mZnNldCBpcyAxCitQQVNTIHRlc3QudGV4dENvbnRlbnQgaXMgJ0EnCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0EKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLWNhcmV0LXNpbmdsZS1jaGFy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItY2FyZXQt
c2luZ2xlLWNoYXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjMzMTk4YzUxZTJjZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2ZpcnN0LWxldHRlci1jYXJldC1zaW5nbGUtY2hhci5odG1sCkBAIC0wLDAgKzEsMzkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorZGl2OjpmaXJzdC1s
ZXR0ZXIgeworICAgIGNvbG9yOiByZWQ7Cit9CitkaXYgeworICAgIGZvbnQtc2l6ZTogMjBweDsK
K30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgY29udGVudGVkaXRhYmxlIGlkPSJ0
ZXN0Ij5BPC9kaXY+Cis8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgorCis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRlc3QgdGhhdCBjYXJldCBwb3NpdGlvbmluZyB3b3JrcyBjb3JyZWN0bHkgd2hl
biB0aGUgZW50aXJlIHRleHQgaXMgYSA6OmZpcnN0LWxldHRlciB3aXRoIGFuIGVtcHR5IHJlbWFp
bmluZyBmcmFnbWVudC4iKTsKKworLy8gQXBwZW5kICJCIiBhZnRlciAiQSIsIHRoZW4gZGVsZXRl
IGl0LiBUaGUgY2FyZXQgc2hvdWxkIHN0YXkgYWZ0ZXIgIkEiLgorZG9jdW1lbnQuYm9keS5vZmZz
ZXRIZWlnaHQ7Cit0ZXN0LmFwcGVuZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiQiIpKTsKK2Rv
Y3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworCisvLyBQbGFjZSBjYXJldCBhZnRlciAiQiIgYW5k
IGRlbGV0ZSBpdC4KK3ZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CitzZWwuY29sbGFw
c2UodGVzdC5sYXN0Q2hpbGQsIDEpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoImRlbGV0ZSIpOwor
ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisKKy8vIEFmdGVyIGRlbGV0aW5nICJCIiwgb25s
eSAiQSIgcmVtYWlucyBhcyB0aGUgZW50aXJlIGZpcnN0IGxldHRlci4KKy8vIFRoZSBjYXJldCBz
aG91bGQgYmUgYWZ0ZXIgIkEiIChvZmZzZXQgMSksIG5vdCBiZWZvcmUgaXQgKG9mZnNldCAwKS4K
K3Nob3VsZEJlKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yT2Zmc2V0IiwgIjEiKTsKK3No
b3VsZEJlKCJ0ZXN0LnRleHRDb250ZW50IiwgIidBJyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1s
ZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg0NzJm
NDAzYzgwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMyBAQAorVGVzdCB0aGF0IHNlbGVjdGlvbiBhY3Jvc3MgbXVsdGlwbGUgZWxlbWVudHMg
d2l0aCA6OmZpcnN0LWxldHRlciB3b3JrcyBjb3JyZWN0bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxh
Y2UoL1xuL2csICd8JykgaXMgIkZpcnN0IHBhcmFncmFwaHxTZWNvbmQgcGFyYWdyYXBoIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cbi9nLCAnfCcpIGlz
ICJzdCBwYXJhZ3JhcGh8U2Vjb25kIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJp
bmcoKS5yZXBsYWNlKC9cbi9nLCAnfCcpIGlzICJGaXJzdCBwYXJhZ3JhcGh8UyIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorRmlyc3QgcGFyYWdyYXBo
CitTZWNvbmQgcGFyYWdyYXBoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVu
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGZiMzQ4OGQ0
NWYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmly
c3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisuZmlyc3QtbGV0dGVyLXN0
eWxlZDo6Zmlyc3QtbGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJwYXJhMSIgY2xh
c3M9ImZpcnN0LWxldHRlci1zdHlsZWQiPkZpcnN0IHBhcmFncmFwaDwvZGl2PgorICAgIDxkaXYg
aWQ9InBhcmEyIiBjbGFzcz0iZmlyc3QtbGV0dGVyLXN0eWxlZCI+U2Vjb25kIHBhcmFncmFwaDwv
ZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHNlbGVjdGlv
biBhY3Jvc3MgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCA6OmZpcnN0LWxldHRlciB3b3JrcyBjb3Jy
ZWN0bHkuIik7CisKK2Z1bmN0aW9uIHNlbGVjdEFjcm9zc0VsZW1lbnRzKHN0YXJ0Tm9kZSwgc3Rh
cnRPZmZzZXQsIGVuZE5vZGUsIGVuZE9mZnNldCkgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnROb2RlLCBzdGFydE9mZnNl
dCk7CisgICAgcmFuZ2Uuc2V0RW5kKGVuZE5vZGUsIGVuZE9mZnNldCk7CisgICAgdmFyIHNlbCA9
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAg
c2VsLmFkZFJhbmdlKHJhbmdlKTsKK30KKworLy8gVGVzdCAxOiBTZWxlY3QgYWNyb3NzIHR3byBm
aXJzdC1sZXR0ZXIgcGFyYWdyYXBocworc2VsZWN0QWNyb3NzRWxlbWVudHMocGFyYTEuZmlyc3RD
aGlsZCwgMCwgcGFyYTIuZmlyc3RDaGlsZCwgcGFyYTIuZmlyc3RDaGlsZC5sZW5ndGgpOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBs
YWNlKC9cXG4vZywgJ3wnKSIsICJGaXJzdCBwYXJhZ3JhcGh8U2Vjb25kIHBhcmFncmFwaCIpOwor
CisvLyBUZXN0IDI6IFNlbGVjdCBmcm9tIG1pZGRsZSBvZiBmaXJzdCB0byBtaWRkbGUgb2Ygc2Vj
b25kCitzZWxlY3RBY3Jvc3NFbGVtZW50cyhwYXJhMS5maXJzdENoaWxkLCAzLCBwYXJhMi5maXJz
dENoaWxkLCA2KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkucmVwbGFjZSgvXFxuL2csICd8JykiLCAic3QgcGFyYWdyYXBofFNlY29uZCIp
OworCisvLyBUZXN0IDM6IFNlbGVjdCBmcm9tIGZpcnN0LWxldHRlciBvZiBmaXJzdCB0byBmaXJz
dC1sZXR0ZXIgb2Ygc2Vjb25kCitzZWxlY3RBY3Jvc3NFbGVtZW50cyhwYXJhMS5maXJzdENoaWxk
LCAwLCBwYXJhMi5maXJzdENoaWxkLCAxKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxuL2csICd8JykiLCAiRmlyc3Qg
cGFyYWdyYXBofFMiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2Vs
ZWN0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmFkMDhkOTM5YzdiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MzMgQEAKK1Rlc3QgdGhhdCBzZWxlY3Rpb24gd29ya3MgY29ycmVjdGx5IHdpdGggOjpmaXJzdC1s
ZXR0ZXIgcHNldWRvLWVsZW1lbnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZWxsbyIKK1BBU1Mgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIjEyIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiXCJRdW90ZSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkgaXMgIkEiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmlu
ZygpIGlzICJOZXN0ZWQiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJl
cGxhY2UoL1xuL2csICd8JykgaXMgIkZpcnN0fFNlY29uZCIKK1BBU1Mgd2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkgaXMgIkVkaXRhYmxlIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkudG9TdHJpbmcoKSBpcyAiMSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkgaXMgIjIiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJIZWwi
CitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJcIlEiCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCBpcyB0cnVlCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hbmNob3JPZmZzZXQgaXMgMQorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
aXNDb2xsYXBzZWQgaXMgdHJ1ZQorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yT2Zm
c2V0IGlzIDAKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIkEiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0hlbGxvCisx
MgorIlF1b3RlCitBCitOZXN0ZWQKK0ZpcnN0CitTZWNvbmQKK0VkaXRhYmxlCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24t
cGFpbnRpbmctZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQwMzkwNTM4ZDM3ZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24t
cGFpbnRpbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI1IEBACis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitzcGFuLmZpcnN0
LWxldHRlciB7CisgICAgY29sb3I6IHJlZDsKKyAgICBmb250LXNpemU6IDJlbTsKK30KKzwvc3R5
bGU+Cis8ZGl2IGlkPSJ0YXJnZXQiPjxzcGFuIGNsYXNzPSJmaXJzdC1sZXR0ZXIiPkg8L3NwYW4+
ZWxsbyBXb3JsZDwvZGl2PgorPHNjcmlwdD4KK3dpbmRvdy50ZXN0UnVubmVyPy53YWl0VW50aWxE
b25lKCk7Cit3aW5kb3cudGVzdFJ1bm5lcj8uZG9udEZvcmNlUmVwYWludCgpOworCithc3luYyBm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgIGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgp
OworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2Vs
ZWN0Tm9kZUNvbnRlbnRzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5nVXBkYXRlKCk7CisgICAgd2lu
ZG93LnRlc3RSdW5uZXI/Lm5vdGlmeURvbmUoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBydW5UZXN0KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWlu
dGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjZiOGJk
ZjQ2Y2I5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
Zmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzdHls
ZT4KK2Rpdjo6Zmlyc3QtbGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworICAgIGZvbnQtc2l6ZTog
MmVtOworfQorPC9zdHlsZT4KKzxkaXYgaWQ9InRhcmdldCI+SGVsbG8gV29ybGQ8L2Rpdj4KKzxz
Y3JpcHQ+Cit3aW5kb3cudGVzdFJ1bm5lcj8ud2FpdFVudGlsRG9uZSgpOword2luZG93LnRlc3RS
dW5uZXI/LmRvbnRGb3JjZVJlcGFpbnQoKTsKKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICBhd2FpdCBVSUhlbHBlci5yZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2YXIgcmFuZ2UgPSBk
b2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24o
KS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2Uo
cmFuZ2UpOworICAgIGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgIGF3YWl0
IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyPy5ub3Rp
ZnlEb25lKCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcnVuVGVzdCk7
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2ZpcnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmVlZGM3MmIzZmM1YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbApAQCAtMCwwICsx
LDEwMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitkaXY6OmZp
cnN0LWxldHRlciB7CisgICAgY29sb3I6IHJlZDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9InRlc3QxIj5IZWxsbzwvZGl2PgorPGRpdiBpZD0idGVzdDIiPjEyPC9kaXY+
Cis8ZGl2IGlkPSJ0ZXN0MyI+IlF1b3RlPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NCI+QTwvZGl2Pgor
PGRpdiBpZD0idGVzdDUiPjxzcGFuPk5lc3RlZDwvc3Bhbj48L2Rpdj4KKzxkaXYgaWQ9InRlc3Q2
Ij5GaXJzdDxicj5TZWNvbmQ8L2Rpdj4KKzxkaXYgaWQ9InRlc3Q3IiBjb250ZW50ZWRpdGFibGU+
RWRpdGFibGU8L2Rpdj4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+CisKKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGVzdCB0aGF0IHNlbGVjdGlvbiB3b3JrcyBjb3JyZWN0bHkgd2l0aCA6OmZp
cnN0LWxldHRlciBwc2V1ZG8tZWxlbWVudC4iKTsKKworZnVuY3Rpb24gc2VsZWN0QWxsKGVsZW1l
bnQpIHsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdl
LnNlbGVjdE5vZGVDb250ZW50cyhlbGVtZW50KTsKKyAgICB2YXIgc2VsID0gd2luZG93LmdldFNl
bGVjdGlvbigpOworICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICBzZWwuYWRkUmFuZ2Uo
cmFuZ2UpOworfQorCitmdW5jdGlvbiBzZWxlY3RSYW5nZShub2RlLCBzdGFydCwgZW5kKSB7Cisg
ICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFy
dChub2RlLCBzdGFydCk7CisgICAgcmFuZ2Uuc2V0RW5kKG5vZGUsIGVuZCk7CisgICAgdmFyIHNl
bCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7Cisg
ICAgc2VsLmFkZFJhbmdlKHJhbmdlKTsKK30KKworLy8gVGVzdCAxOiBTZWxlY3QgYWxsIHRleHQg
aW4gZWxlbWVudCB3aXRoIGZpcnN0LWxldHRlcgorc2VsZWN0QWxsKHRlc3QxKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiSGVsbG8i
KTsKKworLy8gVGVzdCAyOiBTaG9ydCB0ZXh0IC0gc2VsZWN0IGFsbAorc2VsZWN0QWxsKHRlc3Qy
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5n
KCkiLCAiMTIiKTsKKworLy8gVGVzdCAzOiBGaXJzdC1sZXR0ZXIgd2l0aCBwdW5jdHVhdGlvbiAo
Zmlyc3QtbGV0dGVyIGluY2x1ZGVzIHF1b3RlICsgbGV0dGVyKQorc2VsZWN0QWxsKHRlc3QzKTsK
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCki
LCAiXCJRdW90ZSIpOworCisvLyBUZXN0IDQ6IFNpbmdsZSBjaGFyYWN0ZXIgdGV4dCAoZW50aXJl
IHRleHQgaXMgZmlyc3QtbGV0dGVyKQorc2VsZWN0QWxsKHRlc3Q0KTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiQSIpOworCisvLyBU
ZXN0IDU6IEZpcnN0LWxldHRlciB3aXRoIG5lc3RlZCBpbmxpbmUKK3NlbGVjdEFsbCh0ZXN0NSk7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygp
IiwgIk5lc3RlZCIpOworCisvLyBUZXN0IDY6IE11bHRpLWxpbmUgLSBzZWxlY3QgYWxsIHNob3Vs
ZCBnZXQgYm90aCBsaW5lcworc2VsZWN0QWxsKHRlc3Q2KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxuL2csICd8Jyki
LCAiRmlyc3R8U2Vjb25kIik7CisKKy8vIFRlc3QgNzogQ29udGVudGVkaXRhYmxlIHdpdGggZmly
c3QtbGV0dGVyCitzZWxlY3RBbGwodGVzdDcpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSIsICJFZGl0YWJsZSIpOworCisvLyBUZXN0IDg6
IFNlbGVjdCBvbmx5IHRoZSBmaXJzdC1sZXR0ZXIgcG9ydGlvbgorc2VsZWN0UmFuZ2UodGVzdDIu
Zmlyc3RDaGlsZCwgMCwgMSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxl
Y3Rpb24oKS50b1N0cmluZygpIiwgIjEiKTsKKworLy8gVGVzdCA5OiBTZWxlY3Qgb25seSB0aGUg
cmVtYWluaW5nIHBvcnRpb24gKGFmdGVyIGZpcnN0LWxldHRlcikKK3NlbGVjdFJhbmdlKHRlc3Qy
LmZpcnN0Q2hpbGQsIDEsIDIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSIsICIyIik7CisKKy8vIFRlc3QgMTA6IFNlbGVjdCByYW5nZSBz
cGFubmluZyBmaXJzdC1sZXR0ZXIgYm91bmRhcnkKK3NlbGVjdFJhbmdlKHRlc3QxLmZpcnN0Q2hp
bGQsIDAsIDMpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
dG9TdHJpbmcoKSIsICJIZWwiKTsKKworLy8gVGVzdCAxMTogU2VsZWN0IGZyb20gbWlkZGxlIG9m
IGZpcnN0LWxldHRlciB0ZXh0IHRvIGVuZAorc2VsZWN0UmFuZ2UodGVzdDMuZmlyc3RDaGlsZCwg
MCwgMik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0
cmluZygpIiwgIlwiUSIpOworCisvLyBUZXN0IDEyOiBDYXJldCBhdCBmaXJzdC1sZXR0ZXIgYm91
bmRhcnkgKG9mZnNldCA9IGZpcnN0LWxldHRlciBsZW5ndGgpCitzZWxlY3RSYW5nZSh0ZXN0MS5m
aXJzdENoaWxkLCAxLCAxKTsKK3Nob3VsZEJlKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xs
YXBzZWQiLCAidHJ1ZSIpOworc2hvdWxkQmUoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS5hbmNob3JP
ZmZzZXQiLCAiMSIpOworCisvLyBUZXN0IDEzOiBDYXJldCBhdCBzdGFydCBvZiB0ZXh0IChvZmZz
ZXQgMCwgaW5zaWRlIGZpcnN0LWxldHRlcikKK3NlbGVjdFJhbmdlKHRlc3QxLmZpcnN0Q2hpbGQs
IDAsIDApOworc2hvdWxkQmUoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCIsICJ0
cnVlIik7CitzaG91bGRCZSgid2luZG93LmdldFNlbGVjdGlvbigpLmFuY2hvck9mZnNldCIsICIw
Iik7CisKKy8vIFRlc3QgMTQ6IFNlbGVjdCBhbGwgb24gc2luZ2xlLWNoYXJhY3RlciBmaXJzdC1s
ZXR0ZXIgKGVudGlyZSB0ZXh0IGlzIGZpcnN0LWxldHRlcikKK3NlbGVjdFJhbmdlKHRlc3Q0LmZp
cnN0Q2hpbGQsIDAsIDEpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICJBIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9maXJzdC1sZXR0ZXIt
d29yZC1ib3VuZGFyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3RleHQtaXRl
cmF0b3IvZmlyc3QtbGV0dGVyLXdvcmQtYm91bmRhcnktZXhwZWN0ZWQudHh0CmluZGV4IGM1MmYy
YWQ1NjEyZC4uZGM5OWZjYzhjMWJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Rl
eHQtaXRlcmF0b3IvZmlyc3QtbGV0dGVyLXdvcmQtYm91bmRhcnktZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9maXJzdC1sZXR0ZXItd29yZC1ib3Vu
ZGFyeS1leHBlY3RlZC50eHQKQEAgLTIsOSArMiw5IEBAIFRoaXMgdGVzdHMgbW92aW5nIGNhcmV0
IGFyb3VuZCBhIHdvcmQgd2l0aCBhIGZpcnN0LWxldHRlciBydWxlLiBXZWJLaXQgc2hvdWxkIG5v
CiAKICBoZWxsbyB3b3JsZCcKIHdoaXRlLXNwYWNlOiBub3JtYWw7Ci1GQUlMOiBtb3ZpbmcgZm9y
d2FyZCBieSB3b3JkIGZyb20gb2Zmc2V0IDQgcHV0IGNhcmV0IGF0IG9mZnNldCAxMCBidXQgZXhw
ZWN0ZWQgNgorUEFTUzogbW92aW5nIGZvcndhcmQgYnkgd29yZCBmcm9tIG9mZnNldCA0IHB1dCBj
YXJldCBhdCBvZmZzZXQgNgogUEFTUzogbW92aW5nIGJhY2t3YXJkIGJ5IHdvcmQgZnJvbSBvZmZz
ZXQgNCBwdXQgY2FyZXQgYXQgb2Zmc2V0IDEKIHdoaXRlLXNwYWNlOiBwcmU7Ci1GQUlMOiBtb3Zp
bmcgZm9yd2FyZCBieSB3b3JkIGZyb20gb2Zmc2V0IDQgcHV0IGNhcmV0IGF0IG9mZnNldCAxMCBi
dXQgZXhwZWN0ZWQgNgotUEFTUzogbW92aW5nIGJhY2t3YXJkIGJ5IHdvcmQgZnJvbSBvZmZzZXQg
NCBwdXQgY2FyZXQgYXQgb2Zmc2V0IDEKK1BBU1M6IG1vdmluZyBmb3J3YXJkIGJ5IHdvcmQgZnJv
bSBvZmZzZXQgNCBwdXQgY2FyZXQgYXQgb2Zmc2V0IDYKK0ZBSUw6IG1vdmluZyBiYWNrd2FyZCBi
eSB3b3JkIGZyb20gb2Zmc2V0IDQgcHV0IGNhcmV0IGF0IG9mZnNldCAwIGJ1dCBleHBlY3RlZCAx
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9maXJzdC1sZXR0ZXItcGFydGlh
bC1pbnZhbGlkYXRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2ZpcnN0LWxldHRlci1wYXJ0aWFsLWludmFsaWRhdGlvbi1jcmFzaC1leHBlY3RlZC50eHQKaW5k
ZXggMTYwYjBkM2IwYTA0Li4yYjE3ODBhYjM1YTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC9maXJzdC1sZXR0ZXItcGFydGlhbC1pbnZhbGlkYXRpb24tY3Jhc2gtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9maXJzdC1sZXR0ZXItcGFydGlhbC1pbnZh
bGlkYXRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0xICsxIEBACi1QQVNTIGlmIG5vIGNyYXNo
IG9yIGFzQUFBQXJ0CitQQVNTIGlmIG5vIGNyYXNoIG9yIGFzc2VBQUFBCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13b3Jk
LTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2VkaXRpbmcvc2Vs
ZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBlY3RlZC50eHQKaW5kZXggYjljYTlhMGRiZDVm
Li5jOTI0NDcwYTNmNTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvZWRp
dGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9nbGliL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAw
Mi1leHBlY3RlZC50eHQKQEAgLTY5LDUgKzY5LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCiAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge0F9IGF0ICgxOCw2KSBzaXplIDM4eDExIFtj
b2xvcj0jMDAwMEVFXQogICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE4LDYp
IHNpemUgMzh4MTEKICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTgsNikgd2lkdGggMzg6
ICJDb21ib3MiCi1zZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7I3RleHR9
IG9mIGNoaWxkIDEge0F9IG9mIGNoaWxkIDEge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2YgY2hpbGQg
MSB7RElWfSBvZiBib2R5CitzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7
I3RleHR9IG9mIGNoaWxkIDEge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2YgY2hpbGQgMSB7RElWfSBv
ZiBib2R5CiBzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDUgb2YgY2hpbGQgMCB7I3RleHR9IG9m
IGNoaWxkIDEge0F9IG9mIGNoaWxkIDcge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2YgY2hpbGQgMSB7
RElWfSBvZiBib2R5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvZWRpdGlu
Zy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0
ZWQudHh0CmluZGV4IDJiNjZlNGFiNTBkZS4uNjY5YTRlYjg3ZDdkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3MvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAy
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvZWRpdGluZy9zZWxl
Y3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dApAQCAtNjksNSArNjksNSBAQCBs
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICAgIFJlbmRlcklubGluZSB7QX0g
YXQgKDE5LDUpIHNpemUgNDF4MTQgW2NvbG9yPSMwMDAwRUVdCiAgICAgICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMTksNSkgc2l6ZSA0MXgxNAogICAgICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgxOSw1KSB3aWR0aCA0MTogIkNvbWJvcyIKLXNlbGVjdGlvbiBzdGFydDogcG9zaXRp
b24gMCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7QX0gb2YgY2hpbGQgMSB7TEl9IG9m
IGNoaWxkIDEge1VMfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKK3NlbGVjdGlvbiBzdGFydDog
cG9zaXRpb24gMSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7TEl9IG9mIGNoaWxkIDEg
e1VMfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKIHNlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24g
NSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7QX0gb2YgY2hpbGQgNyB7TEl9IG9mIGNo
aWxkIDEge1VMfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2V4
dGVuZC1ieS13b3JkLTAwMi1leHBlY3RlZC50eHQKaW5kZXggMDc4NWM2ZDk3YjdmLi4yNDc4NzE3
YTI2ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVj
dGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQu
dHh0CkBAIC02OSw1ICs2OSw1IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAg
ICAgICAgUmVuZGVySW5saW5lIHtBfSBhdCAoMTksNSkgc2l6ZSA0MXgxNCBbY29sb3I9IzAwMDBF
RV0KICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxOSw1KSBzaXplIDQxeDE0
CiAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE5LDUpIHdpZHRoIDQxOiAiQ29tYm9zIgot
c2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAx
IHtBfSBvZiBjaGlsZCAxIHtMSX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2Yg
Ym9keQorc2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBj
aGlsZCAxIHtMSX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQogc2Vs
ZWN0aW9uIGVuZDogICBwb3NpdGlvbiA1IG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtB
fSBvZiBjaGlsZCA3IHtMSX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9k
eQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>478997</attachid>
            <date>2026-04-10 12:26:51 -0700</date>
            <delta_ts>2026-04-10 14:02:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-6185-20260410122650.patch</filename>
            <type>text/plain</type>
            <size>67849</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA2Y2QwN2I5NjIwMDk2OGNiY2Y0NTY0ZmIxNmVkOGZjOGZhOGMwMzFhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IEZyaSwgMTAgQXByIDIwMjYgMDg6NTc6MzggLTA3MDAKU3ViamVjdDogW1BBVENIXSBDU1MxOiBj
aGFyYWN0ZXIgc3R5bGVkIHdpdGggOmZpcnN0LWxldHRlciBpcyBub3Qgc2VsZWN0YWJsZQogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxODUgPHJkYXI6Ly9wcm9ibGVt
LzU2ODgyMzc+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkdpdmVuCgogIDxzdHlsZT4K
ICAgICAgICBkaXY6OmZpcnN0LWxldHRlciB7IGNvbG9yOiByZWQ7IH0KICA8L3N0eWxlPgogIDxk
aXY+SGVsbG88L2Rpdj4KCnRoZSBET00gKGluc2lkZSB0aGUgYmxvY2sgY29udGFpbmVyKSBoYXMg
YSBzaW5nbGUgdGV4dCBub2RlICJIZWxsbyIKYnV0IFdlYktpdCBzcGxpdHMgdGhpcyBpbnRvIHR3
byByZW5kZXJlcnMgdG8gYmUgYWJsZSB0byBzdHlsZSB0aGUgZmlyc3QgbGV0dGVyLgoKICBSZW5k
ZXJCbG9jayAoZGl2KQogICAgICAgIFJlbmRlcklubGluZSAoOjpmaXJzdC1sZXR0ZXIsIGFub255
bW91cykKICAgICAgICAgIFJlbmRlclRleHQgIkgiICAgICAgICAgICAgPC0gb2Zmc2V0cyAwLTEg
KG5vIERPTSBub2RlKQogICAgICAgIFJlbmRlclRleHRGcmFnbWVudCAiZWxsbyIgICA8LSBvZmZz
ZXRzIDAtNCAob3ducyB0aGUgRE9NIHRleHQgbm9kZSkKClRoZSBleGlzdGluZyBjb2RlIGFzc3Vt
ZXMgZWFjaCBET00gbm9kZSBtYXBzIHRvIGV4YWN0bHkgb25lIHJlbmRlcmVyLgpFdmVyeSBjYWxs
IHRvIG5vZGUtPnJlbmRlcmVyKCkgb3IgUG9zaXRpb246OnJlbmRlcmVyKCkgcmV0dXJucyB0aGUK
cmVtYWluaW5nIGZyYWdtZW50IC0gdGhlIGZpcnN0LWxldHRlciByZW5kZXJlciBpcyBuZXZlciBj
b25zdWx0ZWQuCgpUaGlzIG1lYW5zIERPTSBvZmZzZXQgMCAoIkgiKSBnZXRzIGNoZWNrZWQgYWdh
aW5zdCB0aGUgcmVtYWluaW5nCmZyYWdtZW50J3MgdGV4dCBib3hlcywgd2hpY2ggc3RhcnQgYXQg
ImUiLiBTZWxlY3Rpb24sIGNhcmV0IHBvc2l0aW9uaW5nLAphbmQgb2Zmc2V0IHZhbGlkYXRpb24g
YWxsIGZhaWwgZm9yIHRoZSBmaXJzdC1sZXR0ZXIgcmFuZ2UgYmVjYXVzZSB0aGUKd3JvbmcgcmVu
ZGVyZXIgaXMgYXNrZWQgYWJvdXQgb2Zmc2V0cyBpdCBkb2Vzbid0IG93bi4KClRoZSBmaXggaXMg
dG8gbmV2ZXIgY29uc3VsdCBub2RlLT5yZW5kZXJlcigpIGRpcmVjdGx5IGZvciB0ZXh0IG9mZnNl
dApvcGVyYXRpb25zIG9uIGZpcnN0LWxldHRlciBjb250ZW50LiBJbnN0ZWFkLCBhbGwgY2FsbCBz
aXRlcyBnbyB0aHJvdWdoClBvc2l0aW9uOjpyZW5kZXJlckFuZE9mZnNldCgpIHdoaWNoIHJlc29s
dmVzIHRoZSAxLURPTS1ub2RlLXRvLTItcmVuZGVyZXJzCnNwbGl0IGJ5IHBpY2tpbmcgdGhlIGNv
cnJlY3QgcmVuZGVyZXIgYW5kIGNvbnZlcnRpbmcgdG8gaXRzIGxvY2FsIG9mZnNldC4KVGhpcyBp
cyB0aGUgY2VudHJhbCBpbnZhcmlhbnQgb2YgdGhlIGZpeCAtIGV2ZXJ5IHBsYWNlIHRoYXQgcHJl
dmlvdXNseQpjYWxsZWQgbm9kZS0+cmVuZGVyZXIoKSBhbmQgdXNlZCBhIERPTSBvZmZzZXQgYWdh
aW5zdCBpdCBub3cgdXNlcyB0aGlzCmhlbHBlciAob3Igb25lIG9mIGl0cyB3cmFwcGVycykgdG8g
Z2V0IHRoZSByaWdodCByZW5kZXJlciArIG9mZnNldCBwYWlyLgoKS2V5IGhlbHBlcnMgaW50cm9k
dWNlZDoKLSBQb3NpdGlvbjo6cmVuZGVyZXJBbmRPZmZzZXQoKTogdGhlIHNpbmdsZSBzb3VyY2Ug
b2YgdHJ1dGggZm9yIHJlc29sdmluZwogIGEgRE9NIG9mZnNldCB0byB0aGUgY29ycmVjdCByZW5k
ZXJlciArIGZyYWdtZW50LWxvY2FsIG9mZnNldC4gUm91dGVzIHRvCiAgdGhlIGZpcnN0LWxldHRl
ciByZW5kZXJlciBmb3Igb2Zmc2V0cyBiZWxvdyBmcmFnbWVudFN0YXJ0LCBvdGhlcndpc2UKICBy
ZXR1cm5zIHRoZSByZW1haW5pbmcgZnJhZ21lbnQgd2l0aCBhZGp1c3RlZCBvZmZzZXQuCi0gUG9z
aXRpb246OnJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCk6IGNvbnZlbmllbmNlIHdyYXBw
ZXIgdGhhdCBhbHNvCiAgY2FzdHMgdG8gUmVuZGVyVGV4dC4KLSBjb252ZXJ0T2Zmc2V0SW5UZXh0
RnJhZ21lbnRUb05vZGVPZmZzZXQoKTogY29udmVydHMgZnJhZ21lbnQtbG9jYWwgb2Zmc2V0IGJh
Y2sgdG8KICBET00gb2Zmc2V0LiBVc2VkIHdoZW4gZXhpdGluZyByZW5kZXJlciBzcGFjZSAoY2Fy
ZXRNYXhPZmZzZXQsCiAgY3JlYXRlUG9zaXRpb25XaXRoQWZmaW5pdHksIGVuZFBvc2l0aW9uRm9y
TGluZSwgcG9zaXRpb25BdFJpZ2h0Qm91bmRhcnktCiAgT2ZCaURpUnVuLCBUZXh0SXRlcmF0b3I6
OmVtaXRUZXh0KS4KLSBjb252ZXJ0Tm9kZU9mZnNldFRvT2Zmc2V0SW5UZXh0RnJhZ21lbnQoKTog
Y29udmVydHMgRE9NIG9mZnNldCB0bwogIGZyYWdtZW50LWxvY2FsLiBVc2VkIGluIFBvc2l0aW9u
Ojp1cHN0cmVhbS9kb3duc3RyZWFtIHdoZXJlIHRoZXJlIGlzIG5vCiAgUG9zaXRpb24gb2JqZWN0
IHRvIGNhbGwgcmVuZGVyZXJBbmRPZmZzZXQoKSBvbi4KLSBjcm9zc2VzRmlyc3RMZXR0ZXJCb3Vu
ZGFyeSgpOiBwcmV2ZW50cyB1cHN0cmVhbS9kb3duc3RyZWFtIGZyb20KICBjYW5vbmljYWxpemlu
ZyBwb3NpdGlvbnMgYWNyb3NzIHRoZSBmaXJzdC1sZXR0ZXIgc3BsaXQuIFdpdGhvdXQgdGhpcywK
ICBWaXNpYmxlUG9zaXRpb24ob2Zmc2V0IDApIGFuZCBWaXNpYmxlUG9zaXRpb24ob2Zmc2V0IDEp
IHdvdWxkIGNvbGxhcHNlCiAgdG8gdGhlIHNhbWUgY2Fub25pY2FsIHBvc2l0aW9uLCBtYWtpbmcg
dGhlIGZpcnN0IGxldHRlciB1bnNlbGVjdGFibGUuCiAgTXVzdCBydW4gYmVmb3JlIHRoZSBpc1N0
cmVhbWVyIHVwZGF0ZSB0byBzZWUgdGhlIHByZS11cGRhdGUgbGFzdFZpc2libGUuCgpQb3NpdGlv
bjo6aXNDYW5kaWRhdGUsIGlzUmVuZGVyZWRDaGFyYWN0ZXIsIHJlbmRlcnNJbkRpZmZlcmVudFBv
c2l0aW9uOgogIFRoZXNlIGNoZWNrIHRleHQgb2Zmc2V0IHZhbGlkaXR5IGFnYWluc3QgcmVuZGVy
ZXIgdGV4dCBib3hlcy4gVGhleSBub3cKICB1c2UgcmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZz
ZXQoKSB0byBhc2sgdGhlIGNvcnJlY3QgcmVuZGVyZXIKICAoZmlyc3QtbGV0dGVyIG9yIHJlbWFp
bmluZyBmcmFnbWVudCkgaW5zdGVhZCBvZiBhbHdheXMgYXNraW5nIHRoZQogIHJlbWFpbmluZyBm
cmFnbWVudCB3aXRoIGEgcmF3IERPTSBvZmZzZXQuCgpQb3NpdGlvbjo6aW5saW5lQm94QW5kT2Zm
c2V0OiByZXNvbHZlcyB0byB0aGUgY29ycmVjdCBpbmxpbmUgYm94IGZvcgogIGNhcmV0L3NlbGVj
dGlvbiBwb3NpdGlvbmluZy4gTm93IGRlbGVnYXRlcyB0byByZW5kZXJlckFuZE9mZnNldCgpCiAg
aW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGUgZmlyc3QtbGV0dGVyIHJvdXRpbmcgbG9naWMuCgpS
ZW5kZXJlZFBvc2l0aW9uOiBzdG9yZXMgdGhlIG9yaWdpbmFsIERPTSBub2RlIChtX25vZGUpIGZy
b20gdGhlIFBvc2l0aW9uCiAgZHVyaW5nIGNvbnN0cnVjdGlvbi4gV2l0aG91dCB0aGlzLCBwb3Np
dGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURpUnVuKCkKICBwcm9kdWNlcyBhIG51bGwtbm9kZSBQb3Np
dGlvbiB3aGVuIHRoZSBpbmxpbmUgYm94IGJlbG9uZ3MgdG8gdGhlCiAgYW5vbnltb3VzIGZpcnN0
LWxldHRlciB0ZXh0LCBjYXVzaW5nIGFkanVzdEVuZHBvaW50c0F0QmlkaUJvdW5kYXJ5KCkKICB0
byBjb2xsYXBzZSB0aGUgc2VsZWN0aW9uIHdoZW4gZHJhZ2dpbmcgbGVmdCBwYXN0IHRoZSBmaXJz
dCBsZXR0ZXIuCgpWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0
ZTogd2hlbiBiaWRpIHRyYXZlcnNhbAogIGxhbmRzIG9uIHRoZSBhbm9ueW1vdXMgZmlyc3QtbGV0
dGVyIHRleHQgYm94LCByZXNvbHZlcyB0aGUgRE9NIG5vZGUKICB2aWEgcmVtYWluaW5nVGV4dEZy
YWdtZW50Rm9yRmlyc3RMZXR0ZXIoKSBiZWZvcmUgY3JlYXRpbmcgdGhlIFBvc2l0aW9uLgoKUmVu
ZGVyVGV4dEZyYWdtZW50OjpjYW5CZVNlbGVjdGlvbkxlYWY6IHJldHVybnMgdHJ1ZSBmb3IgcmVt
YWluaW5nCiAgZnJhZ21lbnRzIHdpdGggZmlyc3QtbGV0dGVyLCBtYXRjaGluZyBiYXNlIFJlbmRl
clRleHQgYmVoYXZpb3Igc28KICBjcm9zcy1lbGVtZW50IHNlbGVjdGlvbnMgKENtZCtBKSBpbmNs
dWRlIHRoZSByZW1haW5pbmcgdGV4dC4KCiogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
Zmlyc3QtbGV0dGVyLWNhcmV0LXNpbmdsZS1jaGFyLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLWNhcmV0LXNpbmdsZS1jaGFy
Lmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRl
ci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVu
dC5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0
ZXItc2VsZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0
aW9uLXBhaW50aW5nLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2ZpcnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCiogTGF5b3V0VGVzdHMvZWRpdGlu
Zy90ZXh0LWl0ZXJhdG9yL2ZpcnN0LWxldHRlci13b3JkLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dDoK
ICBQcm9ncmVzc2lvbi4gTGFzdCB0ZXN0IGNhc2UgaXMgcHJlLWV4aXN0aW5nIGJ1ZyBhbmQgaXQg
bmV2ZXIgcmVhbGx5IFBBU1NlZCAtdGhlIG9mZi1ieS1vbmUgZXJyb3IgbWFkZSBpdCAoaW5jb3Jy
ZWN0bHkpIFBBU1MuCgoqIExheW91dFRlc3RzL2Zhc3QvdGV4dC9maXJzdC1sZXR0ZXItcGFydGlh
bC1pbnZhbGlkYXRpb24tY3Jhc2gtZXhwZWN0ZWQudHh0OgogIFByb2dyZXNzaW9uLiBXZSBtYXRj
aCBvdGhlciBlbmdpbmVzIG5vdy4KCiogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9lZGl0aW5n
L3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0
ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9leHRl
bmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0OgogIFByb2dyZXNzaW9uLiBDb250ZW50IGlzIHNl
bGVjdGVkIG5vdyBhY3Jvc3MgPGxpPnMgd2l0aCBmaXJzdC1sZXR0ZXIuCgoqIFNvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5jcHA6CihXZWJDb3JlOjpjcm9zc2VzRmlyc3RMZXR0ZXJCb3VuZGFy
eSk6CihXZWJDb3JlOjpjb252ZXJ0Tm9kZU9mZnNldFRvT2Zmc2V0SW5UZXh0RnJhZ21lbnQpOgoo
V2ViQ29yZTo6UG9zaXRpb246OnVwc3RyZWFtIGNvbnN0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjpk
b3duc3RyZWFtIGNvbnN0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjpoYXNSZW5kZXJlZE5vbkFub255
bW91c0Rlc2NlbmRhbnRzV2l0aEhlaWdodCk6CiAgV2FzIHNraXBwaW5nIDo6Zmlyc3QtbGV0dGVy
IHBzZXVkbyByZW5kZXJlcnMgYmVjYXVzZSB0aGV5IGhhdmUgbm8KICBhc3NvY2lhdGVkIERPTSBu
b2RlLiBUaGlzIG1hZGUgcG9zaXRpb25zIGFmdGVyIGZpcnN0LWxldHRlciBjb250ZW50CiAgZmFp
bCBpc0NhbmRpZGF0ZSgpIC0tIHRoZSBmdW5jdGlvbiB0aG91Z2h0IHRoZSBlbGVtZW50IGhhZCBu
byB2aXNpYmxlCiAgY29udGVudC4gVGhlIGZpeCBsZXRzIGZpcnN0LWxldHRlciByZW5kZXJlcnMg
Y291bnQgYXMgcmVuZGVyZWQKICBkZXNjZW5kYW50cyB3aXRoIGhlaWdodC4KKFdlYkNvcmU6OlBv
c2l0aW9uOjppc0NhbmRpZGF0ZSBjb25zdCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6aXNSZW5kZXJl
ZENoYXJhY3RlciBjb25zdCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50
UG9zaXRpb24gY29uc3QpOgooV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcmVyQW5kT2Zmc2V0IGNv
bnN0KToKKFdlYkNvcmU6OlBvc2l0aW9uOjpyZXNvbHZlZFRleHRSZW5kZXJlckFuZE9mZnNldCBj
b25zdCk6CihXZWJDb3JlOjpQb3NpdGlvbjo6aW5saW5lQm94QW5kT2Zmc2V0IGNvbnN0KToKKiBT
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaDoKKiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b25JdGVyYXRvci5jcHA6CihXZWJDb3JlOjpQb3NpdGlvbkl0ZXJhdG9yOjppc0NhbmRpZGF0ZSBj
b25zdCk6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcDoKKFdlYkNvcmU6OmNh
cmV0TWF4T2Zmc2V0KToKKFdlYkNvcmU6OmNvbnZlcnRPZmZzZXRJblRleHRGcmFnbWVudFRvTm9k
ZU9mZnNldCk6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmg6CiogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CihXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6dXBkYXRlQXBwZWFyYW5jZSk6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBv
c2l0aW9uLmNwcDoKKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVkUG9zaXRpb24p
OgooV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdExlZnRCb3VuZGFyeU9mQmlE
aVJ1biBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpwb3NpdGlvbkF0UmlnaHRC
b3VuZGFyeU9mQmlEaVJ1biBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJl
ZFBvc2l0aW9uLmg6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgoo
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6CihXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OmhhbmRsZVRleHRSdW4pOgooV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjplbWl0VGV4dCk6
CihXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9k
ZSk6CihXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVGaXJz
dExldHRlcik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
aDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHA6CihXZWJDb3Jl
OjpyZW1haW5pbmdUZXh0RnJhZ21lbnRGb3JGaXJzdExldHRlcik6CihXZWJDb3JlOjpWaXNpYmxl
UG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlIGNvbnN0KToKKFdlYkNvcmU6
OlZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlIGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CihXZWJDb3JlOjplbmRQ
b3NpdGlvbkZvckxpbmUpOgooV2ViQ29yZTo6ZmluZEVuZE9mUGFyYWdyYXBoKToKKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6Y3JlYXRlUG9zaXRpb25XaXRoQWZmaW5pdHkgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwOgooV2ViQ29yZTo6UmVuZGVyVGV4dEZyYWdt
ZW50OjpjYW5CZVNlbGVjdGlvbkxlYWYgY29uc3QpOgotLS0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAgICAgICAgICAgICAgICB8IDExNSArKysrKysrKysrKystLS0KIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5oICAgICAgICAgICAgICAgICB8ICAgOCArKwogU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwICAgICAgIHwgICA4ICstCiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwICAgICAgICAgICAgfCAgMTcgKystCiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuaCAgICAgICAgICAgICAgfCAgIDIgKwogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgICAgIHwgIDEwICstCiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwICAgfCAgMzUgKysrLS0KIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgICAgICAgfCAxMzEgKysrKysrKysrLS0tLS0tLS0t
CiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oICAgICAgICAgfCAgIDMgLQog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwICAgIHwgIDI4ICsrKy0K
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCAgICAgICB8ICAgNSArLQog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgICAgIHwgICA1ICstCiAu
Li4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcCAgfCAgIDkgKy0KIC4u
Lmlyc3QtbGV0dGVyLWNhcmV0LXNpbmdsZS1jaGFyLWV4cGVjdGVkLnR4dCB8ICAxMiArKwogLi4u
L2ZpcnN0LWxldHRlci1jYXJldC1zaW5nbGUtY2hhci5odG1sICAgICAgIHwgIDM5ICsrKysrKwog
Li4uZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0IHwgIDEzICsrCiAu
Li4vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwgfCAgNDMgKysrKysr
CiAuLi4vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1leHBlY3RlZC50eHQgICAgICAgfCAgMzMgKysr
KysKIC4uLnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbCB8ICAyNSAr
KysrCiAuLi4vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy5odG1sICAgICAgfCAgMjUg
KysrKwogLi4uL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLmh0bWwgICAgIHwgMTAx
ICsrKysrKysrKysrKysrCiAuLi4vZmlyc3QtbGV0dGVyLXdvcmQtYm91bmRhcnktZXhwZWN0ZWQu
dHh0ICAgfCAgIDYgKy0KIC4uLmVyLXBhcnRpYWwtaW52YWxpZGF0aW9uLWNyYXNoLWV4cGVjdGVk
LnR4dCB8ICAgMiArLQogLi4uL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQu
dHh0IHwgICAyICstCiAuLi4vc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBlY3RlZC50
eHQgfCAgIDIgKy0KIC4uLi9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4
dCB8ICAgMiArLQogMjcgZmlsZXMgY2hhbmdlZCwgNTUyIGluc2VydGlvbnMoKyksIDEzMCBkZWxl
dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9maXJzdC1sZXR0ZXItY2FyZXQtc2luZ2xlLWNoYXItZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9k
ZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLWNhcmV0
LXNpbmdsZS1jaGFyLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmly
c3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWV4
cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tcGFpbnRpbmctZXhwZWN0ZWQuaHRtbAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1z
ZWxlY3Rpb24tcGFpbnRpbmcuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24uaHRtbAoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwCmluZGV4IGY5N2FhZjEzM2I0NS4uNzYxODE4YzA4YWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkVkaXRpbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiRWRpdGluZy5oIgogI2luY2x1ZGUgIkVs
ZW1lbnRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxCb2R5RWxlbWVudC5oIgpAQCAtNTQsNiArNTUsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxpbmVC
cmVhay5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJSZW5k
ZXJUZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiU1ZH
RWxlbWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHVGV4dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJUZXh0LmgiCkBAIC02NDIsNiArNjQ0LDI2IEBAIHN0YXRpYyBOb2RlKiBlbmNsb3NpbmdW
aXN1YWxCb3VuZGFyeShTVVBQUkVTU19VTkNIRUNLRURfTE9DQUwgTm9kZSogbm9kZSkKICAgICBy
ZXR1cm4gbm9kZTsKIH0KIAorLy8gVGhlIGZpcnN0LWxldHRlciBhbmQgcmVtYWluaW5nIHRleHQg
YXJlIHNlcGFyYXRlIHJlbmRlcmVycyBidXQgc2hhcmUgb25lIERPTQorLy8gdGV4dCBub2RlLiB1
cHN0cmVhbS9kb3duc3RyZWFtIG11c3Qgbm90IGNyb3NzIHRoaXMgYm91bmRhcnksIGp1c3QgbGlr
ZSB0aGV5CisvLyBtdXN0IG5vdCBjcm9zcyB2aXN1YWxseSBkaXN0aW5jdCBub2RlIGJvdW5kYXJp
ZXMuCitzdGF0aWMgYm9vbCBjcm9zc2VzRmlyc3RMZXR0ZXJCb3VuZGFyeShjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLCBjb25zdCBQb3NpdGlvbkl0ZXJhdG9yJiBjdXJyZW50LCBjb25zdCBQ
b3NpdGlvbkl0ZXJhdG9yJiBwcmV2aW91c0xhc3RWaXNpYmxlKQoreworICAgIGF1dG8qIHRleHRG
cmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKTsK
KyAgICBpZiAoIXRleHRGcmFnbWVudCB8fCAhdGV4dEZyYWdtZW50LT5maXJzdExldHRlcigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGN1cnJlbnQubm9kZSgpICE9IHByZXZpb3Vz
TGFzdFZpc2libGUubm9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBmcmFn
bWVudFN0YXJ0ID0gc3RhdGljX2Nhc3Q8aW50Pih0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkpOworICAg
IGF1dG8gY3VycmVudE9mZnNldCA9IGN1cnJlbnQub2Zmc2V0SW5MZWFmTm9kZSgpOworICAgIGF1
dG8gbGFzdE9mZnNldCA9IHByZXZpb3VzTGFzdFZpc2libGUub2Zmc2V0SW5MZWFmTm9kZSgpOwor
CisgICAgYm9vbCBjdXJyZW50T2Zmc2V0SXNJbkZpcnN0TGV0dGVyID0gY3VycmVudE9mZnNldCA8
IGZyYWdtZW50U3RhcnQ7CisgICAgYm9vbCBsYXN0T2Zmc2V0SXNJbkZpcnN0TGV0dGVyID0gbGFz
dE9mZnNldCA8IGZyYWdtZW50U3RhcnQ7CisgICAgcmV0dXJuIGN1cnJlbnRPZmZzZXRJc0luRmly
c3RMZXR0ZXIgIT0gbGFzdE9mZnNldElzSW5GaXJzdExldHRlcjsKK30KKworCiAvLyB1cHN0cmVh
bSgpIGFuZCBkb3duc3RyZWFtKCkgd2FudCB0byByZXR1cm4gcG9zaXRpb25zIHRoYXQgYXJlIGVp
dGhlciBpbiBhCiAvLyB0ZXh0IG5vZGUgb3IgYXQganVzdCBiZWZvcmUgYSBub24tdGV4dCBub2Rl
LiAgVGhpcyBtZXRob2QgY2hlY2tzIGZvciB0aGF0Lgogc3RhdGljIGJvb2wgaXNTdHJlYW1lcihj
b25zdCBQb3NpdGlvbkl0ZXJhdG9yJiBwb3MpCkBAIC03MTEsNyArNzMzLDEwIEBAIFBvc2l0aW9u
IFBvc2l0aW9uOjp1cHN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29u
c3QKICAgICAgICAgICAgIGxhc3RWaXNpYmxlID0gY3VycmVudFBvc2l0aW9uOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAgaWYgKGNyb3NzZXNGaXJz
dExldHRlckJvdW5kYXJ5KCpyZW5kZXJlciwgY3VycmVudFBvc2l0aW9uLCBsYXN0VmlzaWJsZSkp
CisgICAgICAgICAgICByZXR1cm4gbGFzdFZpc2libGU7CisKICAgICAgICAgLy8gdHJhY2sgbGFz
dCB2aXNpYmxlIHN0cmVhbWVyIHBvc2l0aW9uCiAgICAgICAgIGlmIChpc1N0cmVhbWVyKGN1cnJl
bnRQb3NpdGlvbikpCiAgICAgICAgICAgICBsYXN0VmlzaWJsZSA9IGN1cnJlbnRQb3NpdGlvbjsK
QEAgLTc0MCwxMCArNzY1LDEwIEBAIFBvc2l0aW9uIFBvc2l0aW9uOjp1cHN0cmVhbShFZGl0aW5n
Qm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgICAgICAvLyByZW5k
ZXIgdHJlZSB3aGljaCBjYW4gaGF2ZSBhIGRpZmZlcmVudCBsZW5ndGggZHVlIHRvIGNhc2UgdHJh
bnNmb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgLy8gVW50aWwgd2UgcmVzb2x2ZSB0aGF0LCBk
aXNhYmxlIHRoaXMgc28gd2UgY2FuIHJ1biB0aGUgbGF5b3V0IHRlc3RzIQogICAgICAgICAgICAg
ICAgIC8vQVNTRVJUKGN1cnJlbnRPZmZzZXQgPj0gcmVuZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCkp
OwotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKGN1
cnJlbnROb2RlLnB0cigpLCByZW5kZXJlci0+Y2FyZXRNYXhPZmZzZXQoKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24oY3VycmVudE5vZGUucHRy
KCksIGNhcmV0TWF4T2Zmc2V0KGN1cnJlbnROb2RlKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHVuc2lnbmVkIHRleHRPZmZzZXQgPSBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFm
Tm9kZSgpOworICAgICAgICAgICAgYXV0byB0ZXh0T2Zmc2V0ID0gY29udmVydE5vZGVPZmZzZXRU
b09mZnNldEluVGV4dEZyYWdtZW50KCp0ZXh0UmVuZGVyZXIsIGN1cnJlbnRQb3NpdGlvbi5vZmZz
ZXRJbkxlYWZOb2RlKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9IGZpcnN0VGV4dEJv
eDsgYm94OykgewogICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zmc2V0ID4gYm94LT5zdGFydCgp
ICYmIHRleHRPZmZzZXQgPD0gYm94LT5lbmQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGN1cnJlbnRQb3NpdGlvbjsKQEAgLTgyNyw2ICs4NTIsOSBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6
ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGNyb3NzZXNGaXJzdExldHRl
ckJvdW5kYXJ5KCpyZW5kZXJlciwgY3VycmVudFBvc2l0aW9uLCBsYXN0VmlzaWJsZSkpCisgICAg
ICAgICAgICByZXR1cm4gbGFzdFZpc2libGU7CisKICAgICAgICAgLy8gdHJhY2sgbGFzdCB2aXNp
YmxlIHN0cmVhbWVyIHBvc2l0aW9uCiAgICAgICAgIGlmIChpc1N0cmVhbWVyKGN1cnJlbnRQb3Np
dGlvbikpCiAgICAgICAgICAgICBsYXN0VmlzaWJsZSA9IGN1cnJlbnRQb3NpdGlvbjsKQEAgLTg0
OSw3ICs4NzcsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRh
cnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZUNv
bnRhaW5lck9mZnNldFBvc2l0aW9uKGN1cnJlbnROb2RlLnB0cigpLCB0ZXh0UmVuZGVyZXItPmNh
cmV0TWluT2Zmc2V0KCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB1bnNpZ25lZCB0
ZXh0T2Zmc2V0ID0gY3VycmVudFBvc2l0aW9uLm9mZnNldEluTGVhZk5vZGUoKTsKKyAgICAgICAg
ICAgIGF1dG8gdGV4dE9mZnNldCA9IGNvbnZlcnROb2RlT2Zmc2V0VG9PZmZzZXRJblRleHRGcmFn
bWVudCgqdGV4dFJlbmRlcmVyLCBjdXJyZW50UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpKTsK
ICAgICAgICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDspIHsKICAgICAg
ICAgICAgICAgICBpZiAoIWJveC0+bGVuZ3RoKCkgJiYgdGV4dE9mZnNldCA9PSBib3gtPnN0YXJ0
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CkBAIC04OTgs
NyArOTI2LDEzIEBAIGJvb2wgUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2Vu
ZGFudHNXaXRoSGVpZ2h0KGNvbnN0IFJlbmRlckVsZW1lbnQmCiAgICAgYXV0byBpc0hvcml6b250
YWwgPSByZW5kZXJlci5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIENoZWNrZWRQdHIg
c3RvcCA9IHJlbmRlcmVyLm5leHRJblByZU9yZGVyQWZ0ZXJDaGlsZHJlbigpOwogICAgIGZvciAo
Q2hlY2tlZFB0ciBkZXNjZW5kYW50ID0gcmVuZGVyZXIuZmlyc3RDaGlsZCgpOyBkZXNjZW5kYW50
ICYmIGRlc2NlbmRhbnQgIT0gc3RvcDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRJblBy
ZU9yZGVyKCkpIHsKLSAgICAgICAgaWYgKCFkZXNjZW5kYW50LT5ub25Qc2V1ZG9Ob2RlKCkpCisg
ICAgICAgIGF1dG8gc2hvdWxkU2tpcCA9IFsmXSB7CisgICAgICAgICAgICBpZiAoZGVzY2VuZGFu
dC0+bm9uUHNldWRvTm9kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIENoZWNrZWRQdHIgcmVuZGVyRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJF
bGVtZW50PigqZGVzY2VuZGFudCk7CisgICAgICAgICAgICByZXR1cm4gIXJlbmRlckVsZW1lbnQg
fHwgIXJlbmRlckVsZW1lbnQtPmlzRmlyc3RMZXR0ZXIoKTsKKyAgICAgICAgfTsKKyAgICAgICAg
aWYgKHNob3VsZFNraXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8g
Ym91bmRpbmdCb3hMb2dpY2FsSGVpZ2h0ID0gWyZdKGF1dG8gcmVjdCkgewpAQCAtOTE2LDcgKzk1
MCw3IEBAIGJvb2wgUG9zaXRpb246Omhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2VuZGFudHNX
aXRoSGVpZ2h0KGNvbnN0IFJlbmRlckVsZW1lbnQmCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJJbmxpbmUgPSBkeW5hbWljRG93
bmNhc3Q8UmVuZGVySW5saW5lPigqZGVzY2VuZGFudCkpIHsKLSAgICAgICAgICAgIGlmIChpc0Vt
cHR5SW5saW5lKCpyZW5kZXJJbmxpbmUpICYmIGJvdW5kaW5nQm94TG9naWNhbEhlaWdodChyZW5k
ZXJJbmxpbmUtPmxpbmVzQm91bmRpbmdCb3goKSkpCisgICAgICAgICAgICBpZiAoKHJlbmRlcklu
bGluZS0+aXNGaXJzdExldHRlcigpIHx8IGlzRW1wdHlJbmxpbmUoKnJlbmRlcklubGluZSkpICYm
IGJvdW5kaW5nQm94TG9naWNhbEhlaWdodChyZW5kZXJJbmxpbmUtPmxpbmVzQm91bmRpbmdCb3go
KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQpAQCAtOTg1LDggKzEwMTksMTAgQEAgYm9vbCBQb3NpdGlvbjo6aXNDYW5kaWRh
dGUoKSBjb25zdAogICAgICAgICByZXR1cm4gIW1fb2Zmc2V0ICYmIG1fYW5jaG9yVHlwZSAhPSBQ
b3NpdGlvbklzQWZ0ZXJBbmNob3IgJiYgIW5vZGVJc1VzZXJTZWxlY3ROb25lKG5vZGUtPnBhcmVu
dE5vZGUoKSk7CiAgICAgfQogCi0gICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyVGV4dCA9IGR5bmFt
aWNEb3duY2FzdDxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gIW5vZGVJ
c1VzZXJTZWxlY3ROb25lKG5vZGUuZ2V0KCkpICYmIHJlbmRlclRleHQtPmNvbnRhaW5zQ2FyZXRP
ZmZzZXQobV9vZmZzZXQpOworICAgIGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKSB7Cisg
ICAgICAgIGF1dG8gW3Jlc29sdmVkVGV4dCwgcmVzb2x2ZWRPZmZzZXRdID0gcmVzb2x2ZWRUZXh0
UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuICFub2RlSXNVc2VyU2VsZWN0Tm9u
ZShub2RlLmdldCgpKSAmJiByZXNvbHZlZFRleHQgJiYgcmVzb2x2ZWRUZXh0LT5jb250YWluc0Nh
cmV0T2Zmc2V0KHJlc29sdmVkT2Zmc2V0KTsKKyAgICB9CiAKICAgICBpZiAocG9zaXRpb25CZWZv
cmVPckFmdGVyTm9kZUlzQ2FuZGlkYXRlKCpub2RlKSkgewogICAgICAgICByZXR1cm4gKChhdEZp
cnN0RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSgpICYmIG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklz
QmVmb3JlQW5jaG9yKQpAQCAtMTAxMyw5ICsxMDQ5LDEwIEBAIGJvb2wgUG9zaXRpb246OmlzQ2Fu
ZGlkYXRlKCkgY29uc3QKIAogYm9vbCBQb3NpdGlvbjo6aXNSZW5kZXJlZENoYXJhY3RlcigpIGNv
bnN0CiB7Ci0gICAgUmVmUHRyIHRleHQgPSBkeW5hbWljRG93bmNhc3Q8VGV4dD4oZGVwcmVjYXRl
ZE5vZGUoKSk7Ci0gICAgQ2hlY2tlZFB0ciByZW5kZXJlciA9IHRleHQgPyB0ZXh0LT5yZW5kZXJl
cigpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmNvbnRhaW5z
UmVuZGVyZWRDaGFyYWN0ZXJPZmZzZXQobV9vZmZzZXQpOworICAgIGlmICghZHluYW1pY0Rvd25j
YXN0PFRleHQ+KGRlcHJlY2F0ZWROb2RlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
YXV0byBbcmVuZGVyVGV4dCwgb2Zmc2V0XSA9IHJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0
KCk7CisgICAgcmV0dXJuIHJlbmRlclRleHQgJiYgcmVuZGVyVGV4dC0+Y29udGFpbnNSZW5kZXJl
ZENoYXJhY3Rlck9mZnNldChvZmZzZXQpOwogfQogCiBzdGF0aWMgYm9vbCBpblNhbWVFbmNsb3Np
bmdCbG9ja0Zsb3dFbGVtZW50KE5vZGUqIGEsIE5vZGUqIGIpCkBAIC0xMDYxLDE2ICsxMDk4LDE2
IEBAIGJvb2wgUG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uKGNvbnN0IFBvc2l0
aW9uJiBwb3NpdGlvbikgY29uc3QKICAgICBpZiAoIWluU2FtZUVuY2xvc2luZ0Jsb2NrRmxvd0Vs
ZW1lbnQobm9kZS5nZXQoKSwgcG9zaXRpb25Ob2RlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBDaGVja2VkUHRyIHRleHRSZW5kZXJlciA9IGR5bmFtaWNEb3duY2FzdDxSZW5k
ZXJUZXh0PigqcmVuZGVyZXIpOwotICAgIGlmICh0ZXh0UmVuZGVyZXIgJiYgIXRleHRSZW5kZXJl
ci0+Y29udGFpbnNDYXJldE9mZnNldChtX29mZnNldCkpCisgICAgYXV0byBbdGV4dFJlbmRlcmVy
LCB0aGlzT2Zmc2V0XSA9IHJlc29sdmVkVGV4dFJlbmRlcmVyQW5kT2Zmc2V0KCk7CisgICAgaWYg
KHRleHRSZW5kZXJlciAmJiAhdGV4dFJlbmRlcmVyLT5jb250YWluc0NhcmV0T2Zmc2V0KHRoaXNP
ZmZzZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDaGVja2VkUHRyIHRleHRQb3Np
dGlvblJlbmRlcmVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KCpwb3NpdGlvblJlbmRl
cmVyKTsKLSAgICBpZiAodGV4dFBvc2l0aW9uUmVuZGVyZXIgJiYgIXRleHRQb3NpdGlvblJlbmRl
cmVyLT5jb250YWluc0NhcmV0T2Zmc2V0KHBvc2l0aW9uLm1fb2Zmc2V0KSkKKyAgICBhdXRvIFt0
ZXh0UG9zaXRpb25SZW5kZXJlciwgcG9zaXRpb25PZmZzZXRdID0gcG9zaXRpb24ucmVzb2x2ZWRU
ZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAgICBpZiAodGV4dFBvc2l0aW9uUmVuZGVyZXIgJiYg
IXRleHRQb3NpdGlvblJlbmRlcmVyLT5jb250YWluc0NhcmV0T2Zmc2V0KHBvc2l0aW9uT2Zmc2V0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgdGhpc1JlbmRlcmVkT2Zm
c2V0ID0gdGV4dFJlbmRlcmVyID8gdGV4dFJlbmRlcmVyLT5jb3VudFJlbmRlcmVkQ2hhcmFjdGVy
T2Zmc2V0c1VudGlsKG1fb2Zmc2V0KSA6IG1fb2Zmc2V0OwotICAgIHVuc2lnbmVkIHBvc2l0aW9u
UmVuZGVyZWRPZmZzZXQgPSB0ZXh0UG9zaXRpb25SZW5kZXJlciA/IHRleHRQb3NpdGlvblJlbmRl
cmVyLT5jb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHBvc2l0aW9uLm1fb2Zmc2V0
KSA6IHBvc2l0aW9uLm1fb2Zmc2V0OworICAgIHVuc2lnbmVkIHRoaXNSZW5kZXJlZE9mZnNldCA9
IHRleHRSZW5kZXJlciA/IHRleHRSZW5kZXJlci0+Y291bnRSZW5kZXJlZENoYXJhY3Rlck9mZnNl
dHNVbnRpbCh0aGlzT2Zmc2V0KSA6IG1fb2Zmc2V0OworICAgIHVuc2lnbmVkIHBvc2l0aW9uUmVu
ZGVyZWRPZmZzZXQgPSB0ZXh0UG9zaXRpb25SZW5kZXJlciA/IHRleHRQb3NpdGlvblJlbmRlcmVy
LT5jb3VudFJlbmRlcmVkQ2hhcmFjdGVyT2Zmc2V0c1VudGlsKHBvc2l0aW9uT2Zmc2V0KSA6IHBv
c2l0aW9uLm1fb2Zmc2V0OwogCiAgICAgaWYgKHJlbmRlcmVyID09IHBvc2l0aW9uUmVuZGVyZXIg
JiYgdGhpc1JlbmRlcmVkT2Zmc2V0ID09IHBvc2l0aW9uUmVuZGVyZWRPZmZzZXQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTExOTUsMTYgKzEyMzIsNTIgQEAgc3RhdGljIFBvc2l0aW9uIHVw
c3RyZWFtSWdub3JpbmdFZGl0aW5nQm91bmRhcmllcyhQb3NpdGlvbiBwb3NpdGlvbikKICAgICBy
ZXR1cm4gcG9zaXRpb247CiB9CiAKK3N0ZDo6cGFpcjxSZW5kZXJPYmplY3QqLCB1bnNpZ25lZD4g
UG9zaXRpb246OnJlbmRlcmVyQW5kT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvKiBub2RlID0g
YW5jaG9yTm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwg
MCB9OworICAgIGF1dG8qIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJl
bmRlcmVyKQorICAgICAgICByZXR1cm4geyBudWxscHRyLCAwIH07CisgICAgdW5zaWduZWQgb2Zm
c2V0ID0gZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAgICBDaGVja2VkUHRyIHRleHRGcmFn
bWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJhZ21lbnQ+KCpyZW5kZXJlcik7Cisg
ICAgaWYgKCF0ZXh0RnJhZ21lbnQgfHwgIXRleHRGcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKSkKKyAg
ICAgICAgcmV0dXJuIHsgcmVuZGVyZXIsIG9mZnNldCB9OworCisgICAgaWYgKG9mZnNldCA+PSB0
ZXh0RnJhZ21lbnQtPnN0YXJ0KCkgJiYgdGV4dEZyYWdtZW50LT50ZXh0KCkubGVuZ3RoKCkpCisg
ICAgICAgIHJldHVybiB7IHJlbmRlcmVyLCBvZmZzZXQgLSB0ZXh0RnJhZ21lbnQtPnN0YXJ0KCkg
fTsKKworICAgIC8vIEl0IGxvb2tzIGxpa2Ugd2UgYXJlIG9uIHRoZSBmaXJzdCBsZXR0ZXIgcmVu
ZGVyZXIuCisgICAgQ2hlY2tlZFB0ciBmaXJzdExldHRlclJlbmRlcmVyID0gZHluYW1pY0Rvd25j
YXN0PFJlbmRlclRleHQ+KHRleHRGcmFnbWVudC0+Zmlyc3RMZXR0ZXIoKS0+Zmlyc3RDaGlsZCgp
KTsKKyAgICBpZiAoIWZpcnN0TGV0dGVyUmVuZGVyZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IG51bGxwdHIsIDAgfTsKKyAgICB9CisKKyAgICAv
LyBUaGUgZmlyc3QtbGV0dGVyIHRleHQgbWF5IG5vdCBzdGFydCBhdCBET00gb2Zmc2V0IDAgKGUu
Zy4gY29sbGFwc2VkIHdoaXRlc3BhY2UgcHJlY2VkZXMgdGhlIGZpcnN0IGxldHRlcikuCisgICAg
YXV0byBmaXJzdExldHRlclN0YXJ0ID0gdGV4dEZyYWdtZW50LT5zdGFydCgpIC0gZmlyc3RMZXR0
ZXJSZW5kZXJlci0+dGV4dCgpLmxlbmd0aCgpOworICAgIGlmIChvZmZzZXQgPCBmaXJzdExldHRl
clN0YXJ0KQorICAgICAgICByZXR1cm4geyBudWxscHRyLCAwIH07CisgICAgcmV0dXJuIHsgZmly
c3RMZXR0ZXJSZW5kZXJlciwgb2Zmc2V0IC0gZmlyc3RMZXR0ZXJTdGFydCB9OworfQorCitzdGQ6
OnBhaXI8UmVuZGVyVGV4dCosIHVuc2lnbmVkPiBQb3NpdGlvbjo6cmVzb2x2ZWRUZXh0UmVuZGVy
ZXJBbmRPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8gW3JlbmRlcmVyLCBvZmZzZXRdID0gcmVu
ZGVyZXJBbmRPZmZzZXQoKTsKKyAgICBpZiAoYXV0byogcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiB7IHJlbmRlclRleHQs
IG9mZnNldCB9OworICAgIHJldHVybiB7IG51bGxwdHIsIDAgfTsKK30KKwogSW5saW5lQm94QW5k
T2Zmc2V0IFBvc2l0aW9uOjppbmxpbmVCb3hBbmRPZmZzZXQoQWZmaW5pdHkgYWZmaW5pdHksIFRl
eHREaXJlY3Rpb24gcHJpbWFyeURpcmVjdGlvbikgY29uc3QKIHsKICAgICBhdXRvIGNhcmV0T2Zm
c2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwog
Ci0gICAgUmVmUHRyIG5vZGUgPSBkZXByZWNhdGVkTm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAg
ICAgICAgcmV0dXJuIHsgeyB9LCBjYXJldE9mZnNldCB9OwotICAgIENoZWNrZWRQdHIgcmVuZGVy
ZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIGF1dG8gW3JlbmRlcmVyLCByZXNvbHZlZE9mZnNl
dF0gPSByZW5kZXJlckFuZE9mZnNldCgpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJl
dHVybiB7IHsgfSwgY2FyZXRPZmZzZXQgfTsKKyAgICBjYXJldE9mZnNldCA9IHJlc29sdmVkT2Zm
c2V0OwogCiAgICAgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBib3g7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmgKaW5kZXggNzI1Mzc5OTdmNjVmLi5mZjhhYTQwZTY5NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5oCkBAIC0zOCw2ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TGVnYWN5SW5saW5lQm94OwogY2xhc3MgUmVuZGVyRWxlbWVudDsKK2NsYXNzIFJlbmRlck9iamVj
dDsKK2NsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBUZXh0OwogCiBzdHJ1Y3QgQm91bmRhcnlQb2lu
dDsKQEAgLTEwMyw2ICsxMDUsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb2Zmc2V0Rm9y
UG9zaXRpb25BZnRlckFuY2hvcigpOwogICAgIH0KIAorICAgIC8vIFJldHVybnMgdGhlIHJlbmRl
cmVyIGFuZCBmcmFnbWVudC1sb2NhbCBvZmZzZXQgZm9yIHRoaXMgcG9zaXRpb24sIGNvcnJlY3Rs
eQorICAgIC8vIGhhbmRsaW5nIGZpcnN0LWxldHRlciB0ZXh0IGZyYWdtZW50IHNwbGl0cyB3aGVy
ZSB0aGUgRE9NIHRleHQgbm9kZSdzIHJlbmRlcmVyCisgICAgLy8gaXMgdGhlIHJlbWFpbmluZyBm
cmFnbWVudCByYXRoZXIgdGhhbiB0aGUgZmlyc3QtbGV0dGVyIGZyYWdtZW50LgorICAgIHN0ZDo6
cGFpcjxSZW5kZXJPYmplY3QqLCB1bnNpZ25lZD4gcmVuZGVyZXJBbmRPZmZzZXQoKSBjb25zdDsK
KyAgICBzdGQ6OnBhaXI8UmVuZGVyVGV4dCosIHVuc2lnbmVkPiByZXNvbHZlZFRleHRSZW5kZXJl
ckFuZE9mZnNldCgpIGNvbnN0OworCiAgICAgUmVmUHRyPE5vZGU+IGZpcnN0Tm9kZSgpIGNvbnN0
OwogCiAgICAgLy8gVGhlc2UgYXJlIGNvbnZlbmllbmNlIG1ldGhvZHMgd2hpY2ggYXJlIHNtYXJ0
IGFib3V0IHdoZXRoZXIgdGhlIHBvc2l0aW9uIGlzIG5laWdoYm9yIGFuY2hvcmVkIG9yIHBhcmVu
dCBhbmNob3JlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwCmluZGV4IDQw
MmI1MWEwMDYyZi4uNGE2YmNjODAyZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb25JdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uSXRl
cmF0b3IuY3BwCkBAIC0xNzUsOCArMTc1LDEyIEBAIGJvb2wgUG9zaXRpb25JdGVyYXRvcjo6aXND
YW5kaWRhdGUoKSBjb25zdAogICAgIGlmIChyZW5kZXJlci0+aXNCUigpKQogICAgICAgICByZXR1
cm4gUG9zaXRpb24oKnRoaXMpLmlzQ2FuZGlkYXRlKCk7CiAKLSAgICBpZiAoQ2hlY2tlZFB0ciBy
ZW5kZXJUZXh0ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcikpCi0gICAg
ICAgIHJldHVybiAhUG9zaXRpb246Om5vZGVJc1VzZXJTZWxlY3ROb25lKGFuY2hvck5vZGUuZ2V0
KCkpICYmIHJlbmRlclRleHQtPmNvbnRhaW5zQ2FyZXRPZmZzZXQobV9vZmZzZXRJbkFuY2hvcik7
CisgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgaWYgKFBvc2l0
aW9uOjpub2RlSXNVc2VyU2VsZWN0Tm9uZShhbmNob3JOb2RlLmdldCgpKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byBbcmVzb2x2ZWRUZXh0LCByZXNvbHZlZE9mZnNl
dF0gPSBQb3NpdGlvbigqdGhpcykucmVzb2x2ZWRUZXh0UmVuZGVyZXJBbmRPZmZzZXQoKTsKKyAg
ICAgICAgcmV0dXJuIHJlc29sdmVkVGV4dCAmJiByZXNvbHZlZFRleHQtPmNvbnRhaW5zQ2FyZXRP
ZmZzZXQocmVzb2x2ZWRPZmZzZXQpOworICAgIH0KIAogICAgIGlmIChwb3NpdGlvbkJlZm9yZU9y
QWZ0ZXJOb2RlSXNDYW5kaWRhdGUoKmFuY2hvck5vZGUpKQogICAgICAgICByZXR1cm4gKGF0U3Rh
cnRPZk5vZGUoKSB8fCBhdEVuZE9mTm9kZSgpKSAmJiAhUG9zaXRpb246Om5vZGVJc1VzZXJTZWxl
Y3ROb25lKGFuY2hvck5vZGUtPnBhcmVudE5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
LmNwcAppbmRleCBkYWE0NzM1YWQzNjYuLjBhOGUyMWY2ZDg4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUrR2V0
dGVyc0lubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0RnJhZ21l
bnQuaCIKICNpbmNsdWRlICJSZW5kZXJlZFBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTkwNCwxMSArOTA1LDI1IEBAIGludCBjYXJldE1h
eE9mZnNldChjb25zdCBOb2RlJiBub2RlKQogICAgIC8vIEZvciByZW5kZXJlZCB0ZXh0IG5vZGVz
LCByZXR1cm4gdGhlIGxhc3QgcG9zaXRpb24gdGhhdCBhIGNhcmV0IGNvdWxkIG9jY3VweS4KICAg
ICBpZiAoYXV0byogdGV4dCA9IGR5bmFtaWNEb3duY2FzdDxUZXh0Pihub2RlKSkgewogICAgICAg
ICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJlciA9IHRleHQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICByZXR1cm4gcmVuZGVyZXItPmNhcmV0TWF4T2Zmc2V0KCk7CisgICAgICAgICAgICByZXR1cm4g
Y29udmVydE9mZnNldEluVGV4dEZyYWdtZW50VG9Ob2RlT2Zmc2V0KCpyZW5kZXJlciwgcmVuZGVy
ZXItPmNhcmV0TWF4T2Zmc2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gbGFzdE9mZnNldEZvckVk
aXRpbmcobm9kZSk7CiB9CiAKK3Vuc2lnbmVkIGNvbnZlcnRPZmZzZXRJblRleHRGcmFnbWVudFRv
Tm9kZU9mZnNldChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCB1bnNpZ25lZCBvZmZzZXQp
Cit7CisgICAgaWYgKGF1dG8qIHRleHRGcmFnbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJU
ZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKTsgdGV4dEZyYWdtZW50ICYmIHRleHRGcmFnbWVudC0+Zmly
c3RMZXR0ZXIoKSkKKyAgICAgICAgcmV0dXJuIG9mZnNldCArIHRleHRGcmFnbWVudC0+c3RhcnQo
KTsKKyAgICByZXR1cm4gb2Zmc2V0OworfQorCit1bnNpZ25lZCBjb252ZXJ0Tm9kZU9mZnNldFRv
T2Zmc2V0SW5UZXh0RnJhZ21lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5zaWdu
ZWQgb2Zmc2V0KQoreworICAgIGlmIChhdXRvKiB0ZXh0RnJhZ21lbnQgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7IHRleHRGcmFnbWVudCAmJiB0ZXh0RnJh
Z21lbnQtPmZpcnN0TGV0dGVyKCkgJiYgb2Zmc2V0ID49IHRleHRGcmFnbWVudC0+c3RhcnQoKSkK
KyAgICAgICAgcmV0dXJuIG9mZnNldCAtIHRleHRGcmFnbWVudC0+c3RhcnQoKTsKKyAgICByZXR1
cm4gb2Zmc2V0OworfQorCiBib29sIGxpbmVCcmVha0V4aXN0c0F0VmlzaWJsZVBvc2l0aW9uKGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgcmV0dXJuIGxpbmVCcmVha0V4
aXN0c0F0UG9zaXRpb24ocG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5kb3duc3RyZWFtKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuaAppbmRleCAwZDM4MzcyZDQ2YzMuLjdlZDJiYmI2OWJiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKQEAgLTc5LDYgKzc5LDggQEAgTm9kZSogcHJldmlv
dXNMZWFmTm9kZShjb25zdCBOb2RlKik7CiBXRUJDT1JFX0VYUE9SVCBpbnQgbGFzdE9mZnNldEZv
ckVkaXRpbmcoY29uc3QgTm9kZSYpOwogaW50IGNhcmV0TWluT2Zmc2V0KGNvbnN0IE5vZGUmKTsK
IGludCBjYXJldE1heE9mZnNldChjb25zdCBOb2RlJik7Cit1bnNpZ25lZCBjb252ZXJ0T2Zmc2V0
SW5UZXh0RnJhZ21lbnRUb05vZGVPZmZzZXQoY29uc3QgUmVuZGVyT2JqZWN0JiwgdW5zaWduZWQg
b2Zmc2V0KTsKK3Vuc2lnbmVkIGNvbnZlcnROb2RlT2Zmc2V0VG9PZmZzZXRJblRleHRGcmFnbWVu
dChjb25zdCBSZW5kZXJPYmplY3QmLCB1bnNpZ25lZCBvZmZzZXQpOwogCiBib29sIGhhc0VkaXRh
YmxlU3R5bGUoY29uc3QgTm9kZSYsIEVkaXRhYmxlVHlwZSk7CiBib29sIGlzRWRpdGFibGVOb2Rl
KGNvbnN0IE5vZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
aW5kZXggZTYzMjdkZTViNThkLi4yNjU3ZDdlMDc1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0yNDM2LDEyICsyNDM2LDEwIEBAIHZvaWQgRnJhbWVT
ZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2UoKQogICAgIC8vIFdlIGNhbiBnZXQgaW50byBhIHN0
YXRlIHdoZXJlIHRoZSBzZWxlY3Rpb24gZW5kcG9pbnRzIG1hcCB0byB0aGUgc2FtZSBWaXNpYmxl
UG9zaXRpb24gd2hlbiBhIHNlbGVjdGlvbiBpcyBkZWxldGVkCiAgICAgLy8gYmVjYXVzZSB3ZSBk
b24ndCB5ZXQgbm90aWZ5IHRoZSBGcmFtZVNlbGVjdGlvbiBvZiB0ZXh0IHJlbW92YWwuCiAgICAg
aWYgKENoZWNrZWRQdHIgdmlldyA9IGRvY3VtZW50LT5yZW5kZXJWaWV3KCk7IHN0YXJ0UG9zLmlz
Tm90TnVsbCgpICYmIGVuZFBvcy5pc05vdE51bGwoKSAmJiBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0
KCkgIT0gc2VsZWN0aW9uLnZpc2libGVFbmQoKSkgewotICAgICAgICBDaGVja2VkUHRyIHN0YXJ0
UmVuZGVyZXIgPSBzdGFydFBvcy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgICAg
ICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwot
ICAgICAgICBDaGVja2VkUHRyIGVuZFJlbmRlcmVyID0gZW5kUG9zLmRlcHJlY2F0ZWROb2RlKCkt
PnJlbmRlcmVyKCk7Ci0gICAgICAgIGludCBlbmRPZmZzZXQgPSBlbmRQb3MuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKTsKLSAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0ID49IDAgJiYgZW5kT2Zm
c2V0ID49IDApOwotICAgICAgICB2aWV3LT5zZWxlY3Rpb24oKS5zZXQoeyBzdGFydFJlbmRlcmVy
LCBlbmRSZW5kZXJlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGVuZE9mZnNldCkgfSk7CisgICAgICAgIGF1dG8gW3N0YXJ0UmVuZGVy
ZXIsIHN0YXJ0T2Zmc2V0XSA9IHN0YXJ0UG9zLnJlbmRlcmVyQW5kT2Zmc2V0KCk7CisgICAgICAg
IGF1dG8gW2VuZFJlbmRlcmVyLCBlbmRPZmZzZXRdID0gZW5kUG9zLnJlbmRlcmVyQW5kT2Zmc2V0
KCk7CisgICAgICAgIGlmIChzdGFydFJlbmRlcmVyICYmIGVuZFJlbmRlcmVyKQorICAgICAgICAg
ICAgdmlldy0+c2VsZWN0aW9uKCkuc2V0KHsgc3RhcnRSZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAppbmRleCBhNjVmY2QxOGEwNWEuLjI5NDZiM2NiZjUw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgogCiAjaW5jbHVkZSAi
Q2FyZXRSZWN0Q29tcHV0YXRpb24uaCIKKyNpbmNsdWRlICJFZGl0aW5nLmgiCiAjaW5jbHVkZSAi
SW5saW5lUnVuQW5kT2Zmc2V0LmgiCiAjaW5jbHVkZSAiTm9kZUlubGluZXMuaCIKICNpbmNsdWRl
ICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCkBAIC0zOSwxNSArNDAsMTUgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIGNvbnN0IFJlbmRlck9iamVjdCogTk9ERUxFVEUg
cmVuZGVyZXJGcm9tUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQorc3RhdGljIGlu
bGluZSBOb2RlKiBOT0RFTEVURSBub2RlRnJvbVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3Np
dGlvbikKIHsKICAgICBBU1NFUlQocG9zaXRpb24uaXNOb3ROdWxsKCkpOwotICAgIE5vZGUqIHJl
bmRlcmVyTm9kZSA9IG51bGxwdHI7CisgICAgTm9kZSogbm9kZSA9IG51bGxwdHI7CiAgICAgc3dp
dGNoIChwb3NpdGlvbi5hbmNob3JUeXBlKCkpIHsKICAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlv
bklzT2Zmc2V0SW5BbmNob3I6Ci0gICAgICAgIHJlbmRlcmVyTm9kZSA9IHBvc2l0aW9uLmNvbXB1
dGVOb2RlQWZ0ZXJQb3NpdGlvbigpOwotICAgICAgICBpZiAoIXJlbmRlcmVyTm9kZSB8fCAhcmVu
ZGVyZXJOb2RlLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgcmVuZGVyZXJOb2RlID0gcG9zaXRp
b24uYW5jaG9yTm9kZSgpLT5sYXN0Q2hpbGQoKTsKKyAgICAgICAgbm9kZSA9IHBvc2l0aW9uLmNv
bXB1dGVOb2RlQWZ0ZXJQb3NpdGlvbigpOworICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPnJl
bmRlcmVyKCkpCisgICAgICAgICAgICBub2RlID0gcG9zaXRpb24uYW5jaG9yTm9kZSgpLT5sYXN0
Q2hpbGQoKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklz
QmVmb3JlQW5jaG9yOgpAQCAtNTUsMTUgKzU2LDIwIEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgUmVu
ZGVyT2JqZWN0KiBOT0RFTEVURSByZW5kZXJlckZyb21Qb3NpdGlvbihjb25zdCBQb3NpdGlvbiYK
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQ2hp
bGRyZW46Ci0gICAgICAgIHJlbmRlcmVyTm9kZSA9IHBvc2l0aW9uLmFuY2hvck5vZGUoKS0+Zmly
c3RDaGlsZCgpOworICAgICAgICBub2RlID0gcG9zaXRpb24uYW5jaG9yTm9kZSgpLT5maXJzdENo
aWxkKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRl
ckNoaWxkcmVuOgotICAgICAgICByZW5kZXJlck5vZGUgPSBwb3NpdGlvbi5hbmNob3JOb2RlKCkt
Pmxhc3RDaGlsZCgpOworICAgICAgICBub2RlID0gcG9zaXRpb24uYW5jaG9yTm9kZSgpLT5sYXN0
Q2hpbGQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGlmICghcmVuZGVyZXJOb2RlIHx8
ICFyZW5kZXJlck5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRlcmVyTm9kZSA9IHBvc2l0
aW9uLmFuY2hvck5vZGUoKTsKLSAgICByZXR1cm4gcmVuZGVyZXJOb2RlLT5yZW5kZXJlcigpOwor
ICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgbm9kZSA9IHBvc2l0
aW9uLmFuY2hvck5vZGUoKTsKKyAgICByZXR1cm4gbm9kZTsKK30KKworc3RhdGljIGlubGluZSBj
b25zdCBSZW5kZXJPYmplY3QqIE5PREVMRVRFIHJlbmRlcmVyRnJvbVBvc2l0aW9uKGNvbnN0IFBv
c2l0aW9uJiBwb3NpdGlvbikKK3sKKyAgICByZXR1cm4gbm9kZUZyb21Qb3NpdGlvbihwb3NpdGlv
biktPnJlbmRlcmVyKCk7CiB9CiAKIFJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVkUG9zaXRpb24o
KSA9IGRlZmF1bHQ7CkBAIC04NSw2ICs5MSw3IEBAIFJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVk
UG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSkKICAg
ICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1fbm9kZSA9
IG5vZGVGcm9tUG9zaXRpb24ocG9zaXRpb24pOwogICAgIGF1dG8gYm94QW5kT2Zmc2V0ID0gcG9z
aXRpb24uaW5saW5lQm94QW5kT2Zmc2V0KGFmZmluaXR5KTsKICAgICBtX2JveCA9IGJveEFuZE9m
ZnNldC5ib3g7CiAgICAgbV9vZmZzZXQgPSBib3hBbmRPZmZzZXQub2Zmc2V0OwpAQCAtMjA2LDcg
KzIxMyw3IEBAIFBvc2l0aW9uIFJlbmRlcmVkUG9zaXRpb246OnBvc2l0aW9uQXRMZWZ0Qm91bmRh
cnlPZkJpRGlSdW4oKSBjb25zdAogICAgIEFTU0VSVChhdExlZnRCb3VuZGFyeU9mQmlkaVJ1bigp
KTsKIAogICAgIGlmIChhdExlZnRtb3N0T2Zmc2V0SW5Cb3goKSkKLSAgICAgICAgcmV0dXJuIG1h
a2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChtX3JlbmRlcmVyLT5ub2RlKCkpLmdl
dCgpLCBtX29mZnNldCk7CisgICAgICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0
aW9uKHByb3RlY3QobV9ub2RlLmdldCgpKS5nZXQoKSwgbV9vZmZzZXQpOwogCiAgICAgcmV0dXJu
IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChuZXh0TGVhZk9uTGluZSgpLT5y
ZW5kZXJlcigpLm5vZGUoKSkuZ2V0KCksIG5leHRMZWFmT25MaW5lKCktPmxlZnRtb3N0Q2FyZXRP
ZmZzZXQoKSk7CiB9CkBAIC0yMTUsOCArMjIyLDEwIEBAIFBvc2l0aW9uIFJlbmRlcmVkUG9zaXRp
b246OnBvc2l0aW9uQXRSaWdodEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoYXRSaWdodEJvdW5kYXJ5T2ZCaWRpUnVuKCkpOwogCi0gICAgaWYgKGF0UmlnaHRtb3N0T2Zm
c2V0SW5Cb3goKSkKLSAgICAgICAgcmV0dXJuIG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24o
cHJvdGVjdChtX3JlbmRlcmVyLT5ub2RlKCkpLmdldCgpLCBtX29mZnNldCk7CisgICAgaWYgKGF0
UmlnaHRtb3N0T2Zmc2V0SW5Cb3goKSkgeworICAgICAgICBhdXRvIG9mZnNldCA9IGNvbnZlcnRP
ZmZzZXRJblRleHRGcmFnbWVudFRvTm9kZU9mZnNldCgqbV9yZW5kZXJlciwgbV9vZmZzZXQpOwor
ICAgICAgICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0KG1fbm9k
ZS5nZXQoKSkuZ2V0KCksIG9mZnNldCk7CisgICAgfQogCiAgICAgcmV0dXJuIG1ha2VEZXByZWNh
dGVkTGVnYWN5UG9zaXRpb24ocHJvdGVjdChwcmV2aW91c0xlYWZPbkxpbmUoKS0+cmVuZGVyZXIo
KS5ub2RlKCkpLmdldCgpLCBwcmV2aW91c0xlYWZPbkxpbmUoKS0+cmlnaHRtb3N0Q2FyZXRPZmZz
ZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9z
aXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCmluZGV4
IGEzMjQwNTk3Yzg1YS4uYmQ5NTNjYmRlZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
bmRlcmVkUG9zaXRpb24uaApAQCAtODksNiArODksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgYXRS
aWdodEJvdW5kYXJ5T2ZCaWRpUnVuKFNob3VsZE1hdGNoQmlkaUxldmVsLCB1bnNpZ25lZCBjaGFy
IGJpZGlMZXZlbE9mUnVuKSBjb25zdDsKIAogICAgIFNpbmdsZVRocmVhZFdlYWtQdHI8Y29uc3Qg
UmVuZGVyT2JqZWN0PiBtX3JlbmRlcmVyOworICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CiAgICAg
SW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBtX2JveDsKICAgICB1bnNpZ25lZCBtX29m
ZnNldCB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4
IDZlZTQ5ZjI1NDQ0ZS4uMzU0ZDE1NDZlODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCkBAIC02MDcsNiArNjA3LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRs
ZVRleHROb2RlKCkKICAgICBDaGVja2VkUmVmIHJlbmRlcmVyID0gKnRleHROb2RlLT5yZW5kZXJl
cigpOwogICAgIG1fbGFzdFRleHROb2RlID0gdGV4dE5vZGUucHRyKCk7CiAgICAgYXV0byByZW5k
ZXJlclRleHQgPSByZW5kZXJlclRleHRGb3JCZWhhdmlvcihyZW5kZXJlci5nZXQoKSk7CisgICAg
Q2hlY2tlZFB0ciB0ZXh0RnJhZ21lbnRXaXRoUmVtYWluaW5nVGV4dEFmdGVyRmlyc3RMZXR0ZXIg
PSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlci5nZXQoKSk7CiAK
ICAgICAvLyBoYW5kbGUgcHJlLWZvcm1hdHRlZCB0ZXh0CiAgICAgaWYgKCFyZW5kZXJlci0+c3R5
bGUoKS5jb2xsYXBzZVdoaXRlU3BhY2UoKSkgewpAQCAtNjE1LDggKzYxNiw4IEBAIGJvb2wgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcg
JywgV1RGOjptb3ZlKHRleHROb2RlKSwgbnVsbHB0ciwgcnVuU3RhcnQsIHJ1blN0YXJ0KTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBpZiAoQ2hlY2tlZFB0
ciByZW5kZXJUZXh0RnJhZ21lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50
PihyZW5kZXJlcik7IHJlbmRlclRleHRGcmFnbWVudCAmJiAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIg
JiYgIW1fb2Zmc2V0KSB7Ci0gICAgICAgICAgICBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKCpy
ZW5kZXJUZXh0RnJhZ21lbnQpOworICAgICAgICBpZiAodGV4dEZyYWdtZW50V2l0aFJlbWFpbmlu
Z1RleHRBZnRlckZpcnN0TGV0dGVyICYmICFtX2hhbmRsZWRGaXJzdExldHRlciAmJiAhbV9vZmZz
ZXQpIHsKKyAgICAgICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoKnRleHRGcmFnbWVu
dFdpdGhSZW1haW5pbmdUZXh0QWZ0ZXJGaXJzdExldHRlcik7CiAgICAgICAgICAgICBpZiAobV9m
aXJzdExldHRlclRleHQpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgZmlyc3RMZXR0ZXIgPSBt
X2ZpcnN0TGV0dGVyVGV4dC0+dGV4dCgpOwogICAgICAgICAgICAgICAgIGVtaXRUZXh0KHRleHRO
b2RlLCAqcHJvdGVjdChtX2ZpcnN0TGV0dGVyVGV4dCksIG1fb2Zmc2V0LCBtX29mZnNldCArIGZp
cnN0TGV0dGVyLmxlbmd0aCgpKTsKQEAgLTYyNyw5ICs2MjgsMTMgQEAgYm9vbCBUZXh0SXRlcmF0
b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgfQogICAgICAgICBpZiAocmVuZGVyZXItPnN0
eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIW1fYmVoYXZpb3Jz
LmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW50IHJlbmRlcmVyVGV4dExlbmd0
aCA9IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKLSAgICAgICAgaW50IGVuZCA9ICh0ZXh0Tm9kZS5w
dHIoKSA9PSBtX2VuZENvbnRhaW5lcikgPyBtX2VuZE9mZnNldCA6IElOVF9NQVg7Ci0gICAgICAg
IGludCBydW5FbmQgPSBzdGQ6Om1pbihyZW5kZXJlclRleHRMZW5ndGgsIGVuZCk7CisgICAgICAg
IGF1dG8gcmVuZGVyZXJUZXh0TGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50PihyZW5kZXJlclRleHQu
bGVuZ3RoKCkpOworICAgICAgICBhdXRvIGVuZCA9ICh0ZXh0Tm9kZS5wdHIoKSA9PSBtX2VuZENv
bnRhaW5lcikgPyBtX2VuZE9mZnNldCA6IElOVF9NQVg7CisgICAgICAgIGlmICh0ZXh0RnJhZ21l
bnRXaXRoUmVtYWluaW5nVGV4dEFmdGVyRmlyc3RMZXR0ZXIgJiYgdGV4dEZyYWdtZW50V2l0aFJl
bWFpbmluZ1RleHRBZnRlckZpcnN0TGV0dGVyLT5maXJzdExldHRlcigpKSB7CisgICAgICAgICAg
ICBydW5TdGFydCA9IGNvbnZlcnROb2RlT2Zmc2V0VG9PZmZzZXRJblRleHRGcmFnbWVudCgqdGV4
dEZyYWdtZW50V2l0aFJlbWFpbmluZ1RleHRBZnRlckZpcnN0TGV0dGVyLCBzdGQ6Om1heCgwLCBy
dW5TdGFydCkpOworICAgICAgICAgICAgZW5kID0gZW5kID09IElOVF9NQVggPyBJTlRfTUFYIDog
c3RhdGljX2Nhc3Q8aW50Pihjb252ZXJ0Tm9kZU9mZnNldFRvT2Zmc2V0SW5UZXh0RnJhZ21lbnQo
KnRleHRGcmFnbWVudFdpdGhSZW1haW5pbmdUZXh0QWZ0ZXJGaXJzdExldHRlciwgZW5kKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgYXV0byBydW5FbmQgPSBzdGQ6Om1pbihyZW5kZXJlclRleHRMZW5n
dGgsIGVuZCk7CiAKICAgICAgICAgaWYgKHJ1blN0YXJ0ID49IHJ1bkVuZCkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNjQwLDggKzY0NSw4IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Tm9kZSgpCiAKICAgICBzdGQ6OnRpZShtX3RleHRSdW4sIG1fdGV4dFJ1bkxvZ2ljYWxP
cmRlckNhY2hlKSA9IElubGluZUl0ZXJhdG9yOjpmaXJzdFRleHRCb3hJbkxvZ2ljYWxPcmRlckZv
cihyZW5kZXJlci5nZXQoKSk7CiAKLSAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJUZXh0RnJhZ21l
bnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcik7IHJlbmRl
clRleHRGcmFnbWVudCAmJiAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgIW1fb2Zmc2V0KQotICAg
ICAgICBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKCpyZW5kZXJUZXh0RnJhZ21lbnQpOworICAg
IGlmICh0ZXh0RnJhZ21lbnRXaXRoUmVtYWluaW5nVGV4dEFmdGVyRmlyc3RMZXR0ZXIgJiYgIW1f
aGFuZGxlZEZpcnN0TGV0dGVyICYmICFtX29mZnNldCkKKyAgICAgICAgaGFuZGxlVGV4dE5vZGVG
aXJzdExldHRlcigqdGV4dEZyYWdtZW50V2l0aFJlbWFpbmluZ1RleHRBZnRlckZpcnN0TGV0dGVy
KTsKICAgICBlbHNlIGlmICghbV90ZXh0UnVuICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSkgewog
ICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6
OlZpc2libGUgJiYgIW1fYmVoYXZpb3JzLmNvbnRhaW5zKFRleHRJdGVyYXRvckJlaGF2aW9yOjpJ
Z25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY2
NSwxMiArNjcwLDIxIEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0UnVuKCkKIAogICAg
IGF1dG8gW2ZpcnN0VGV4dFJ1biwgb3JkZXJDYWNoZV0gPSBJbmxpbmVJdGVyYXRvcjo6Zmlyc3RU
ZXh0Qm94SW5Mb2dpY2FsT3JkZXJGb3IocmVuZGVyZXIpOwogCi0gICAgYXV0byByZW5kZXJlclRl
eHQgPSByZW5kZXJlclRleHRGb3JCZWhhdmlvcihyZW5kZXJlci5nZXQoKSk7Ci0gICAgdW5zaWdu
ZWQgcmFuZ2VTdGFydCA9IG1fb2Zmc2V0OwotICAgIGF1dG8gcmFuZ2VFbmQgPSBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiB7IH07Ci0gICAgaWYgKHRleHROb2RlLnB0cigpID09IG1fZW5kQ29udGFp
bmVyKQotICAgICAgICByYW5nZUVuZCA9IG1fZW5kT2Zmc2V0OworICAgIC8vIEZvciByZW1haW5p
bmcgdGV4dCBmcmFnbWVudHMgYWZ0ZXIgYSBmaXJzdC1sZXR0ZXIgc3BsaXQsIHRleHQgYm94IG9m
ZnNldHMgYXJlIGZyYWdtZW50LWxvY2FsIGJ1dCBtX29mZnNldC9tX2VuZE9mZnNldCBhcmUgRE9N
IG9mZnNldHMuCisgICAgdW5zaWduZWQgcmVtYWluaW5nRnJhZ21lbnRTdGFydCA9IDA7CisgICAg
aWYgKGF1dG8qIHJlbmRlclRleHQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGV4dEZyYWdtZW50
PihyZW5kZXJlci5nZXQoKSk7IHJlbmRlclRleHQgJiYgcmVuZGVyVGV4dC0+Zmlyc3RMZXR0ZXIo
KSkKKyAgICAgICAgcmVtYWluaW5nRnJhZ21lbnRTdGFydCA9IHJlbmRlclRleHQtPnN0YXJ0KCk7
CisKKyAgICBhdXRvIHRvRnJhZ21lbnRMb2NhbCA9IFsmXSh1bnNpZ25lZCBkb21PZmZzZXQpIHsK
KyAgICAgICAgcmV0dXJuIGRvbU9mZnNldCA+IHJlbWFpbmluZ0ZyYWdtZW50U3RhcnQgPyBkb21P
ZmZzZXQgLSByZW1haW5pbmdGcmFnbWVudFN0YXJ0IDogMDsKKyAgICB9OworICAgIGF1dG8gdG9O
b2RlT2Zmc2V0ID0gWyZdKHVuc2lnbmVkIGxvY2FsT2Zmc2V0KSB7CisgICAgICAgIHJldHVybiBs
b2NhbE9mZnNldCArIHJlbWFpbmluZ0ZyYWdtZW50U3RhcnQ7CisgICAgfTsKIAorICAgIGF1dG8g
cmVuZGVyZXJUZXh0ID0gcmVuZGVyZXJUZXh0Rm9yQmVoYXZpb3IocmVuZGVyZXIuZ2V0KCkpOwor
ICAgIGF1dG8gcmFuZ2VTdGFydCA9IHRvRnJhZ21lbnRMb2NhbChtX29mZnNldCk7CisgICAgYXV0
byByYW5nZUVuZCA9IHRleHROb2RlLnB0cigpID09IG1fZW5kQ29udGFpbmVyID8gc3RkOjptYWtl
X29wdGlvbmFsKHRvRnJhZ21lbnRMb2NhbChtX2VuZE9mZnNldCkpIDogc3RkOjpudWxsb3B0Owog
ICAgIHdoaWxlIChtX3RleHRSdW4pIHsKICAgICAgICAgYXV0byB0ZXh0UnVuU3RhcnQgPSBtX3Rl
eHRSdW4tPnN0YXJ0KCk7CiAgICAgICAgIGF1dG8gdGV4dFJ1bkVuZCA9IHRleHRSdW5TdGFydCAr
IG1fdGV4dFJ1bi0+bGVuZ3RoKCk7CkBAIC03MDQsNyArNzE4LDcgQEAgdm9pZCBUZXh0SXRlcmF0
b3I6OmhhbmRsZVRleHRSdW4oKQogICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSB0cmFu
c2xhdGVzIG5ld2xpbmVzIGFuZCB0YWJzIHRvIHNwYWNlcyB3aXRob3V0IGNvcHlpbmcgdGhlIHRl
eHQuCiAgICAgICAgICAgICBpZiAoaXNOZXdsaW5lT3JUYWIocmVuZGVyZXJUZXh0W3J1blN0YXJ0
XSkpIHsKICAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4dE5vZGUuY29weVJl
ZigpLCBudWxscHRyLCBydW5TdGFydCwgcnVuU3RhcnQgKyAxKTsKLSAgICAgICAgICAgICAgICBt
X29mZnNldCA9IHJ1blN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICBtX29mZnNldCA9IHRvTm9k
ZU9mZnNldChydW5TdGFydCArIDEpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBhdXRvIHN1YnJ1bkVuZCA9IHJ1blN0YXJ0ICsgMTsKICAgICAgICAgICAgICAgICBmb3Ig
KDsgc3VicnVuRW5kIDwgcnVuRW5kOyArK3N1YnJ1bkVuZCkgewpAQCAtNzE2LDEzICs3MzAsMTMg
QEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRSdW4oKQogICAgICAgICAgICAgICAgICAg
ICBpZiAobGFzdFNwYWNlQ29sbGFwc2VkQnlOZXh0Tm9uVGV4dFJ1bikKICAgICAgICAgICAgICAg
ICAgICAgICAgICsrc3VicnVuRW5kOyAvLyBydW5FbmQgc3RvcHBlZCBiZWZvcmUgbGFzdCBzcGFj
ZS4gSW5jcmVtZW50IGJ5IG9uZSB0byByZXN0b3JlIHRoZSBzcGFjZS4KICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgbV9vZmZzZXQgPSBzdWJydW5FbmQ7CisgICAgICAgICAgICAg
ICAgbV9vZmZzZXQgPSB0b05vZGVPZmZzZXQoc3VicnVuRW5kKTsKICAgICAgICAgICAgICAgICBl
bWl0VGV4dCh0ZXh0Tm9kZSwgcmVuZGVyZXIsIHJ1blN0YXJ0LCBzdWJydW5FbmQpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgZG9pbmcgYSBzdWJydW4gdGhhdCBk
b2Vzbid0IGdvIHRvIHRoZSBlbmQgb2YgdGhlIHRleHQgYm94LAogICAgICAgICAgICAgLy8gY29t
ZSBiYWNrIGFnYWluIHRvIGZpbmlzaCBoYW5kbGluZyB0aGlzIHRleHQgYm94OyBkb24ndCBhZHZh
bmNlIHRvIHRoZSBuZXh0IG9uZS4KLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9wb3NpdGlvbkVuZE9mZnNldCkgPCB0ZXh0UnVuRW5kKQorICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX3Bvc2l0aW9uRW5kT2Zmc2V0KSA8IHRvTm9kZU9mZnNldCh0
ZXh0UnVuRW5kKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIC8vIEFk
dmFuY2UgYW5kIHJldHVybgpAQCAtMTIwNiw4ICsxMjIwLDExIEBAIHZvaWQgVGV4dEl0ZXJhdG9y
OjplbWl0VGV4dChUZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGludCB0ZXh0
U3RhcnRPCiAKICAgICBtX3Bvc2l0aW9uTm9kZSA9IHRleHROb2RlOwogICAgIG1fcG9zaXRpb25P
ZmZzZXRCYXNlTm9kZSA9IG51bGxwdHI7Ci0gICAgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0ID0gdGV4
dFN0YXJ0T2Zmc2V0OwotICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgPSB0ZXh0RW5kT2Zmc2V0Owor
ICAgIC8vIEZvciByZW1haW5pbmcgdGV4dCBmcmFnbWVudHMgYWZ0ZXIgYSBmaXJzdC1sZXR0ZXIg
c3BsaXQsIHRoZSB0ZXh0IG9mZnNldHMgYXJlCisgICAgLy8gZnJhZ21lbnQtbG9jYWwgYnV0IHBv
c2l0aW9uIG9mZnNldHMgbmVlZCB0byBiZSBET00tcmVsYXRpdmUgZm9yIHJhbmdlKCkgdG8KKyAg
ICAvLyByZXR1cm4gY29ycmVjdCBib3VuZGFyeSBwb2ludHMgKHVzZWQgYnkgd29yZC9zZW50ZW5j
ZSBib3VuZGFyeSBkZXRlY3Rpb24pLgorICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9IGNvbnZl
cnRPZmZzZXRJblRleHRGcmFnbWVudFRvTm9kZU9mZnNldChyZW5kZXJlciwgdGV4dFN0YXJ0T2Zm
c2V0KTsKKyAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gY29udmVydE9mZnNldEluVGV4dEZyYWdt
ZW50VG9Ob2RlT2Zmc2V0KHJlbmRlcmVyLCB0ZXh0RW5kT2Zmc2V0KTsKIAogICAgIG1fbGFzdENo
YXJhY3RlciA9IHN0cmluZ1t0ZXh0RW5kT2Zmc2V0IC0gMV07CiAgICAgbV9jb3B5YWJsZVRleHQu
c2V0KFdURjo6bW92ZShzdHJpbmcpLCB0ZXh0U3RhcnRPZmZzZXQsIHRleHRFbmRPZmZzZXQgLSB0
ZXh0U3RhcnRPZmZzZXQpOwpAQCAtMTM2Niw3MCArMTM4Myw1MiBAQCBib29sIFNpbXBsaWZpZWRC
YWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKIHsKICAgICBtX2xhc3RUZXh0
Tm9kZSA9IGRvd25jYXN0PFRleHQ+KG1fbm9kZS5nZXQoKSk7CiAKLSAgICBpbnQgc3RhcnRPZmZz
ZXQ7Ci0gICAgaW50IG9mZnNldEluTm9kZTsKLSAgICBDaGVja2VkUHRyIHJlbmRlcmVyID0gaGFu
ZGxlRmlyc3RMZXR0ZXIoc3RhcnRPZmZzZXQsIG9mZnNldEluTm9kZSk7Ci0gICAgaWYgKCFyZW5k
ZXJlcikKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgQ2hlY2tlZFJlZiByZW5kZXJlciA9IGRv
d25jYXN0PFJlbmRlclRleHQ+KCptX25vZGUtPnJlbmRlcmVyKCkpOworICAgIGF1dG8gc3RhcnRP
ZmZzZXQgPSAobV9ub2RlID09IG1fc3RhcnRDb250YWluZXIpID8gbV9zdGFydE9mZnNldCA6IDA7
CiAKLSAgICBTdHJpbmcgdGV4dCA9IHJlbmRlcmVyLT50ZXh0KCk7CisgICAgYXV0byB0ZXh0ID0g
cmVuZGVyZXItPnRleHQoKTsKICAgICBpZiAoIXJlbmRlcmVyLT5oYXNSZW5kZXJlZFRleHQoKSAm
JiB0ZXh0Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChzdGFydE9m
ZnNldCArIG9mZnNldEluTm9kZSA9PSBtX29mZnNldCkgewotICAgICAgICBBU1NFUlQoIW1fc2hv
dWxkSGFuZGxlRmlyc3RMZXR0ZXIpOworICAgIGlmIChzdGFydE9mZnNldCA9PSBtX29mZnNldCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBOb3RoaW5nIHRvIGVtaXQgd2hlbiB0aGUg
cmVuZGVyZXIgdGV4dCBpcyBlbXB0eSAoZS5nLiB0aGUgcmVtYWluaW5nIHRleHQKKyAgICAvLyBm
cmFnbWVudCBhZnRlciBhIGZpcnN0LWxldHRlciBzcGxpdCBjb3ZlcnMgbm8gY2hhcmFjdGVycyku
CisgICAgaWYgKCF0ZXh0Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CiAK
ICAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gbV9vZmZzZXQ7Ci0gICAgbV9vZmZzZXQgPSBzdGFy
dE9mZnNldCArIG9mZnNldEluTm9kZTsKKyAgICBtX29mZnNldCA9IHN0YXJ0T2Zmc2V0OwogICAg
IG1fcG9zaXRpb25Ob2RlID0gbV9ub2RlOwogICAgIG1fcG9zaXRpb25TdGFydE9mZnNldCA9IG1f
b2Zmc2V0OwogCi0gICAgQVNTRVJUKG1fcG9zaXRpb25TdGFydE9mZnNldCA8IG1fcG9zaXRpb25F
bmRPZmZzZXQpOwotICAgIEFTU0VSVChtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgLSBvZmZzZXRJbk5v
ZGUgPj0gMCk7Ci0gICAgQVNTRVJUKG1fcG9zaXRpb25FbmRPZmZzZXQgLSBvZmZzZXRJbk5vZGUg
PiAwKTsKLSAgICBBU1NFUlQobV9wb3NpdGlvbkVuZE9mZnNldCAtIG9mZnNldEluTm9kZSA8PSBz
dGF0aWNfY2FzdDxpbnQ+KHRleHQubGVuZ3RoKCkpKTsKLQotICAgIG1fbGFzdENoYXJhY3RlciA9
IHRleHRbbV9wb3NpdGlvbkVuZE9mZnNldCAtIG9mZnNldEluTm9kZSAtIDFdOwotICAgIG1fY29w
eWFibGVUZXh0LnNldChXVEY6Om1vdmUodGV4dCksIG1fcG9zaXRpb25TdGFydE9mZnNldCAtIG9m
ZnNldEluTm9kZSwgbV9wb3NpdGlvbkVuZE9mZnNldCAtIG1fcG9zaXRpb25TdGFydE9mZnNldCk7
Ci0gICAgbV90ZXh0ID0gbV9jb3B5YWJsZVRleHQudGV4dCgpOwotCi0gICAgcmV0dXJuICFtX3No
b3VsZEhhbmRsZUZpcnN0TGV0dGVyOwotfQorICAgIC8vIEZvciByZW1haW5pbmcgdGV4dCBmcmFn
bWVudHMgYWZ0ZXIgYSBmaXJzdC1sZXR0ZXIgc3BsaXQsIERPTSBvZmZzZXRzIChtX3Bvc2l0aW9u
U3RhcnRPZmZzZXQsCisgICAgLy8gbV9wb3NpdGlvbkVuZE9mZnNldCkgZGlmZmVyIGZyb20gZnJh
Z21lbnQtbG9jYWwgb2Zmc2V0cyB1c2VkIHRvIGluZGV4IGludG8gcmVuZGVyZXIgdGV4dC4KKyAg
ICAvLyBDb252ZXJ0IHRvIGZyYWdtZW50LWxvY2FsIGZvciB0ZXh0IGFjY2Vzcywga2VlcGluZyBE
T00gb2Zmc2V0cyBmb3IgcmFuZ2UoKS4KKyAgICB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0ID0gMDsK
KyAgICBpZiAoYXV0byogcmVuZGVyVGV4dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUZXh0RnJh
Z21lbnQ+KHJlbmRlcmVyLmdldCgpKTsgcmVuZGVyVGV4dCAmJiByZW5kZXJUZXh0LT5maXJzdExl
dHRlcigpICYmIHN0YXJ0T2Zmc2V0ID49IHN0YXRpY19jYXN0PGludD4ocmVuZGVyVGV4dC0+c3Rh
cnQoKSkpCisgICAgICAgIGZyYWdtZW50U3RhcnQgPSByZW5kZXJUZXh0LT5zdGFydCgpOwogCi1D
aGVja2VkUHRyPFJlbmRlclRleHQ+IFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6Omhh
bmRsZUZpcnN0TGV0dGVyKGludCYgc3RhcnRPZmZzZXQsIGludCYgb2Zmc2V0SW5Ob2RlKQotewot
ICAgIENoZWNrZWRSZWYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PigqbV9ub2RlLT5y
ZW5kZXJlcigpKTsKLSAgICBzdGFydE9mZnNldCA9IChtX25vZGUgPT0gbV9zdGFydENvbnRhaW5l
cikgPyBtX3N0YXJ0T2Zmc2V0IDogMDsKKyAgICAvLyBBZnRlciBlZGl0aW5nIG11dGF0aW9ucyAo
ZS5nLiBkZWxldGluZyB0aGUgbGFzdCBjaGFyYWN0ZXIpLAorICAgIC8vIG1fcG9zaXRpb25FbmRP
ZmZzZXQgY2FuIGV4Y2VlZCB0aGUgdGV4dCBub2RlJ3MgY3VycmVudCBsZW5ndGggaW4gRE9NIHNw
YWNlLgorICAgIGF1dG8gdGV4dExlbmd0aEluRE9NU3BhY2UgPSBzdGF0aWNfY2FzdDxpbnQ+KHRl
eHQubGVuZ3RoKCkgKyBmcmFnbWVudFN0YXJ0KTsKKyAgICBpZiAobV9wb3NpdGlvbkVuZE9mZnNl
dCA+IHRleHRMZW5ndGhJbkRPTVNwYWNlKQorICAgICAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0g
dGV4dExlbmd0aEluRE9NU3BhY2U7CiAKLSAgICBDaGVja2VkUHRyIGZyYWdtZW50ID0gZHluYW1p
Y0Rvd25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpOwotICAgIGlmICghZnJhZ21l
bnQpIHsKLSAgICAgICAgb2Zmc2V0SW5Ob2RlID0gMDsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVy
OwotICAgIH0KKyAgICBpbnQgbG9jYWxTdGFydCA9IG1fcG9zaXRpb25TdGFydE9mZnNldCAtIGZy
YWdtZW50U3RhcnQ7CisgICAgaW50IGxvY2FsRW5kID0gbV9wb3NpdGlvbkVuZE9mZnNldCAtIGZy
YWdtZW50U3RhcnQ7CiAKLSAgICBpbnQgb2Zmc2V0QWZ0ZXJGaXJzdExldHRlciA9IGZyYWdtZW50
LT5zdGFydCgpOwotICAgIGlmIChzdGFydE9mZnNldCA+PSBvZmZzZXRBZnRlckZpcnN0TGV0dGVy
KSB7Ci0gICAgICAgIEFTU0VSVCghbV9zaG91bGRIYW5kbGVGaXJzdExldHRlcik7Ci0gICAgICAg
IG9mZnNldEluTm9kZSA9IG9mZnNldEFmdGVyRmlyc3RMZXR0ZXI7Ci0gICAgICAgIHJldHVybiBy
ZW5kZXJlcjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgJiYg
c3RhcnRPZmZzZXQgKyBvZmZzZXRBZnRlckZpcnN0TGV0dGVyIDwgbV9vZmZzZXQpIHsKLSAgICAg
ICAgbV9zaG91bGRIYW5kbGVGaXJzdExldHRlciA9IHRydWU7Ci0gICAgICAgIG9mZnNldEluTm9k
ZSA9IG9mZnNldEFmdGVyRmlyc3RMZXR0ZXI7Ci0gICAgICAgIHJldHVybiByZW5kZXJlcjsKLSAg
ICB9Ci0KLSAgICBtX3Nob3VsZEhhbmRsZUZpcnN0TGV0dGVyID0gZmFsc2U7Ci0gICAgb2Zmc2V0
SW5Ob2RlID0gMDsKLSAgICBDaGVja2VkUHRyIGZpcnN0TGV0dGVyUmVuZGVyZXIgPSBmaXJzdFJl
bmRlclRleHRJbkZpcnN0TGV0dGVyKHByb3RlY3QoZnJhZ21lbnQtPmZpcnN0TGV0dGVyKCkpKTsK
KyAgICBBU1NFUlQobV9wb3NpdGlvblN0YXJ0T2Zmc2V0IDwgbV9wb3NpdGlvbkVuZE9mZnNldCk7
CisgICAgQVNTRVJUKGxvY2FsU3RhcnQgPj0gMCk7CisgICAgQVNTRVJUKGxvY2FsRW5kID4gMCk7
CisgICAgQVNTRVJUKGxvY2FsRW5kIDw9IHN0YXRpY19jYXN0PGludD4odGV4dC5sZW5ndGgoKSkp
OwogCi0gICAgbV9vZmZzZXQgPSBmaXJzdExldHRlclJlbmRlcmVyLT5jYXJldE1heE9mZnNldCgp
OwotICAgIG1fb2Zmc2V0ICs9IGNvbGxhcHNlZFNwYWNlTGVuZ3RoKCpmaXJzdExldHRlclJlbmRl
cmVyLCBtX29mZnNldCk7CisgICAgbV9sYXN0Q2hhcmFjdGVyID0gdGV4dFtsb2NhbEVuZCAtIDFd
OworICAgIG1fY29weWFibGVUZXh0LnNldChXVEY6Om1vdmUodGV4dCksIGxvY2FsU3RhcnQsIG1f
cG9zaXRpb25FbmRPZmZzZXQgLSBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQpOworICAgIG1fdGV4dCA9
IG1fY29weWFibGVUZXh0LnRleHQoKTsKIAotICAgIHJldHVybiBmaXJzdExldHRlclJlbmRlcmVy
OworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRl
cmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuaAppbmRleCBmNjFkNGQ5ZGVhMTAuLjQ3Zjc0OTQzMTFmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yMDEsNyArMjAxLDYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICB2b2lkIGV4aXROb2RlKCk7CiAgICAgYm9vbCBoYW5kbGVUZXh0Tm9kZSgpOwotICAg
IENoZWNrZWRQdHI8UmVuZGVyVGV4dD4gaGFuZGxlRmlyc3RMZXR0ZXIoaW50JiBzdGFydE9mZnNl
dCwgaW50JiBvZmZzZXRJbk5vZGUpOwogICAgIGJvb2wgaGFuZGxlUmVwbGFjZWRFbGVtZW50KCk7
CiAgICAgYm9vbCBoYW5kbGVOb25UZXh0Tm9kZSgpOwogICAgIHZvaWQgZW1pdENoYXJhY3Rlcihj
aGFyMTZfdCwgUmVmUHRyPE5vZGU+JiYsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7
CkBAIC0yMzYsOCArMjM1LDYgQEAgcHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIG1fbm9kZSBoYXMg
YWR2YW5jZWQgYmV5b25kIHRoZSBpdGVyYXRpb24gcmFuZ2UgKGkuZS4gbV9zdGFydENvbnRhaW5l
cikuCiAgICAgYm9vbCBtX2hhdmVQYXNzZWRTdGFydENvbnRhaW5lciB7IGZhbHNlIH07CiAKLSAg
ICAvLyBTaG91bGQgaGFuZGxlIGZpcnN0LWxldHRlciByZW5kZXJlciBpbiB0aGUgbmV4dCBjYWxs
IHRvIGhhbmRsZVRleHROb2RlLgotICAgIGJvb2wgbV9zaG91bGRIYW5kbGVGaXJzdExldHRlciB7
IGZhbHNlIH07CiB9OwogCiAvLyBCdWlsZHMgb24gdGhlIHRleHQgaXRlcmF0b3IsIGFkZGluZyBh
IGNoYXJhY3RlciBwb3NpdGlvbiBzbyB3ZSBjYW4gd2FsayBvbmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCBmNWQxZWVlNTg2YzcuLmRlZDlhN2Q4MDI0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcApAQCAtNDQs
NyArNDQsOSBAQAogI2luY2x1ZGUgIlBvc2l0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiUmVuZGVyQm94TW9k
ZWxPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCisjaW5jbHVkZSAi
UmVuZGVyVGV4dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRl
ICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBAIC01OCw2ICs2MCwxNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKKy8vIFRo
ZSBhbm9ueW1vdXMgdGV4dCByZW5kZXJlciBpbnNpZGUgOjpmaXJzdC1sZXR0ZXIgaGFzIG5vIERP
TSBub2RlLgorc3RhdGljIFJlbmRlclRleHRGcmFnbWVudCogcmVtYWluaW5nVGV4dEZyYWdtZW50
Rm9yRmlyc3RMZXR0ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKK3sKKyAgICBpZiAo
cmVuZGVyZXIubm9kZSgpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGlmIChhdXRvKiBwYXJl
bnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KHJlbmRlcmVyLnBhcmVu
dCgpKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+Zmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0KCk7
CisgICAgcmV0dXJuIHsgfTsKK30KKwogVmlzaWJsZVBvc2l0aW9uOjpWaXNpYmxlUG9zaXRpb24o
Y29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBBZmZpbml0eSBhZmZpbml0eSkKICAgICA6IG1fZGVl
cFBvc2l0aW9uIHsgY2Fub25pY2FsUG9zaXRpb24ocG9zaXRpb24pIH0KIHsKQEAgLTE0MCw3ICsx
NTIsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpc3RpbmN0Q2Fu
ZGlkYXRlKCkgY29uc3QKICAgICAgICAgICAgIGlmICgocmVuZGVyZXItPmlzQmxvY2tMZXZlbFJl
cGxhY2VkT3JBdG9taWNJbmxpbmUoKSB8fCByZW5kZXJlci0+aXNCUigpKSAmJiBvZmZzZXQgPT0g
Ym94LT5yaWdodG1vc3RDYXJldE9mZnNldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBib3gt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRp
ZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2Rl
ZXBQb3NpdGlvbik7CiAKLSAgICAgICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUoKSkgeworICAg
ICAgICAgICAgaWYgKCFyZW5kZXJlci0+bm9kZSgpICYmICFyZW1haW5pbmdUZXh0RnJhZ21lbnRG
b3JGaXJzdExldHRlcigqcmVuZGVyZXIpKSB7CiAgICAgICAgICAgICAgICAgYm94LnRyYXZlcnNl
TGluZUxlZnR3YXJkT25MaW5lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFib3gpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxU
UiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBu
ZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CkBAIC0xODIsOCAr
MTk0LDggQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENh
bmRpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBwcmlt
YXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c0JveCkgewogICAg
ICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxTdGFydCA9IHByaW1hcnlEaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6TFRSCi0gICAgICAgICAgICAgICAgICAgICAgICA/IElubGluZUl0ZXJh
dG9yOjpmaXJzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGJveC0+bGluZUJveCgp
LCBvcmRlckNhY2hlKQotICAgICAgICAgICAgICAgICAgICAgICAgOiBJbmxpbmVJdGVyYXRvcjo6
bGFzdExlYWZPbkxpbmVJbkxvZ2ljYWxPcmRlcldpdGhOb2RlKGJveC0+bGluZUJveCgpLCBvcmRl
ckNhY2hlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgID8gSW5saW5lSXRlcmF0b3I6OmZpcnN0
TGVhZk9uTGluZUluTG9naWNhbE9yZGVyKGJveC0+bGluZUJveCgpLCBvcmRlckNhY2hlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgOiBJbmxpbmVJdGVyYXRvcjo6bGFzdExlYWZPbkxpbmVJbkxv
Z2ljYWxPcmRlcihib3gtPmxpbmVCb3goKSwgb3JkZXJDYWNoZSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChsb2dpY2FsU3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJveCA9IGxv
Z2ljYWxTdGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVu
ZGVyZXIoKTsKQEAgLTI1Myw3ICsyNjUsOSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246Omxl
ZnRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKCkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKLSAgICAgICAgcCA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9zaXRpb24ocHJv
dGVjdChyZW5kZXJlci0+bm9kZSgpKS5nZXQoKSwgb2Zmc2V0KTsKKyAgICAgICAgQ2hlY2tlZFB0
ciByZW1haW5pbmdGcmFnbWVudCA9IHJlbWFpbmluZ1RleHRGcmFnbWVudEZvckZpcnN0TGV0dGVy
KCpyZW5kZXJlcik7CisgICAgICAgIFJlZlB0ciBub2RlID0gcmVtYWluaW5nRnJhZ21lbnQgPyBy
ZW1haW5pbmdGcmFnbWVudC0+dGV4dE5vZGUoKSA6IHJlbmRlcmVyLT5ub2RlKCk7CisgICAgICAg
IHAgPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHByb3RlY3Qobm9kZSkuZ2V0KCksIGNv
bnZlcnRPZmZzZXRJblRleHRGcmFnbWVudFRvTm9kZU9mZnNldCgqcmVuZGVyZXIsIG9mZnNldCkp
OwogCiAgICAgICAgIGlmICgocC5pc0NhbmRpZGF0ZSgpICYmIHAuZG93bnN0cmVhbSgpICE9IGRv
d25zdHJlYW1TdGFydCkgfHwgcC5hdFN0YXJ0T2ZUcmVlKCkgfHwgcC5hdEVuZE9mVHJlZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIHA7CkBAIC0zMDUsNyArMzE5LDcgQEAgUG9zaXRpb24gVmlzaWJs
ZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUoKSBjb25zdAogICAgICAg
ICAgICAgaWYgKChyZW5kZXJlci0+aXNCbG9ja0xldmVsUmVwbGFjZWRPckF0b21pY0lubGluZSgp
IHx8IHJlbmRlcmVyLT5pc0JSKCkpICYmIG9mZnNldCA9PSBib3gtPmxlZnRtb3N0Q2FyZXRPZmZz
ZXQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2
aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwogCi0gICAgICAg
ICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKKyAgICAgICAgICAgIGlmICghcmVuZGVyZXIt
Pm5vZGUoKSAmJiAhcmVtYWluaW5nVGV4dEZyYWdtZW50Rm9yRmlyc3RMZXR0ZXIoKnJlbmRlcmVy
KSkgewogICAgICAgICAgICAgICAgIGJveC50cmF2ZXJzZUxpbmVSaWdodHdhcmRPbkxpbmUoKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWJveCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBy
aW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGlu
Y3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2Fu
ZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKQEAgLTQyMiw3ICs0MzYsOSBAQCBQb3NpdGlvbiBWaXNp
YmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSgpIGNvbnN0CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHAgPSBtYWtlRGVwcmVjYXRlZExl
Z2FjeVBvc2l0aW9uKHByb3RlY3QocmVuZGVyZXItPm5vZGUoKSkuZ2V0KCksIG9mZnNldCk7Cisg
ICAgICAgIENoZWNrZWRQdHIgcmVtYWluaW5nRnJhZ21lbnQgPSByZW1haW5pbmdUZXh0RnJhZ21l
bnRGb3JGaXJzdExldHRlcigqcmVuZGVyZXIpOworICAgICAgICBSZWZQdHIgbm9kZSA9IHJlbWFp
bmluZ0ZyYWdtZW50ID8gcmVtYWluaW5nRnJhZ21lbnQtPnRleHROb2RlKCkgOiByZW5kZXJlci0+
bm9kZSgpOworICAgICAgICBwID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcm90ZWN0
KG5vZGUpLmdldCgpLCBjb252ZXJ0T2Zmc2V0SW5UZXh0RnJhZ21lbnRUb05vZGVPZmZzZXQoKnJl
bmRlcmVyLCBvZmZzZXQpKTsKIAogICAgICAgICBpZiAoKHAuaXNDYW5kaWRhdGUoKSAmJiBwLmRv
d25zdHJlYW0oKSAhPSBkb3duc3RyZWFtU3RhcnQpIHx8IHAuYXRTdGFydE9mVHJlZSgpIHx8IHAu
YXRFbmRPZlRyZWUoKSkKICAgICAgICAgICAgIHJldHVybiBwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDJkNDIyN2FhMGY5MS4uYjEwMmI3Y2JlMGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJCb3VuZGFyeVBvaW50SW5saW5lcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiRWRpdGluZy5oIgogI2luY2x1ZGUgIkVkaXRpbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSFRNTEJSRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCkBAIC04NTUs
NyArODU2LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbkZvckxpbmUoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBMaW5lRW5kcG9pbnQKICAgICAgICAgaW50IGVuZE9mZnNl
dCA9IGVuZFRleHRCb3guc3RhcnQoKTsKICAgICAgICAgaWYgKCFlbmRUZXh0Qm94LmlzTGluZUJy
ZWFrKCkpCiAgICAgICAgICAgICBlbmRPZmZzZXQgKz0gZW5kVGV4dEJveC5sZW5ndGgoKTsKLSAg
ICAgICAgcG9zID0gUG9zaXRpb24oZW5kVGV4dE5vZGUucmVsZWFzZU5vbk51bGwoKSwgZW5kT2Zm
c2V0KTsKKyAgICAgICAgcG9zID0gUG9zaXRpb24oZW5kVGV4dE5vZGUucmVsZWFzZU5vbk51bGwo
KSwgY29udmVydE9mZnNldEluVGV4dEZyYWdtZW50VG9Ob2RlT2Zmc2V0KGVuZFRleHRCb3gucmVu
ZGVyZXIoKSwgZW5kT2Zmc2V0KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHBvcyA9IHBvc2l0aW9u
QWZ0ZXJOb2RlKCplbmROb2RlKTsKIApAQCAtMTIzMyw3ICsxMjM0LDcgQEAgUmVmUHRyPE5vZGU+
IGZpbmRFbmRPZlBhcmFncmFwaChOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGhpZ2hlc3RSb290LCBO
b2RlKiBzdGF5SW4KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBub2RlID0gbjsKLSAgICAgICAgICAgIG9mZnNldCA9IHItPmNhcmV0TWF4T2Zmc2V0KCk7Cisg
ICAgICAgICAgICBvZmZzZXQgPSBjYXJldE1heE9mZnNldCgqbik7CiAgICAgICAgICAgICBuID0g
Tm9kZVRyYXZlcnNhbDo6bmV4dCgqbiwgc3RheUluc2lkZUJsb2NrKTsKICAgICAgICAgfSBlbHNl
IGlmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQoKm4pIHx8IGlzUmVuZGVyZWRUYWJsZShuLmdldCgp
KSkgewogICAgICAgICAgICAgbm9kZSA9IG47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCmluZGV4IDQ1MGNmZGEwMDlmYi4uMTBjMjI2ZDkyZGFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsNyBAQAogI2lu
Y2x1ZGUgIkxvY2FsRnJhbWUuaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lVmlldy5oIgogI2luY2x1
ZGUgIk5vZGVJbmxpbmVzLmgiCisjaW5jbHVkZSAiRWRpdGluZy5oIgogI2luY2x1ZGUgIk91dGxp
bmVQYWludGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQu
aCIKQEAgLTE5MTQsNyArMTkxNSw3IEBAIFBvc2l0aW9uV2l0aEFmZmluaXR5IFJlbmRlck9iamVj
dDo6Y3JlYXRlUG9zaXRpb25XaXRoQWZmaW5pdHkoaW50IG9mZnNldCwgQWZmaW5pCiAgICAgaWYg
KFJlZlB0ciBub2RlID0gbm9uUHNldWRvTm9kZSgpKSB7CiAgICAgICAgIGlmICghbm9kZS0+aGFz
RWRpdGFibGVTdHlsZSgpKSB7CiAgICAgICAgICAgICAvLyBJZiBpdCBjYW4gYmUgZm91bmQsIHdl
IHByZWZlciBhIHZpc3VhbGx5IGVxdWl2YWxlbnQgcG9zaXRpb24gdGhhdCBpcyBlZGl0YWJsZS4g
Ci0gICAgICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IG1ha2VEZXByZWNhdGVkTGVnYWN5UG9z
aXRpb24obm9kZS5nZXQoKSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9u
ID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLmdldCgpLCBjb252ZXJ0T2Zmc2V0
SW5UZXh0RnJhZ21lbnRUb05vZGVPZmZzZXQoKnRoaXMsIG9mZnNldCkpOwogICAgICAgICAgICAg
UG9zaXRpb24gY2FuZGlkYXRlID0gcG9zaXRpb24uZG93bnN0cmVhbShDYW5Dcm9zc0VkaXRpbmdC
b3VuZGFyeSk7CiAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPmhh
c0VkaXRhYmxlU3R5bGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gUG9zaXRpb25XaXRoQWZm
aW5pdHkoY2FuZGlkYXRlLCBhZmZpbml0eSk7CkBAIC0xOTIzLDcgKzE5MjQsNyBAQCBQb3NpdGlv
bldpdGhBZmZpbml0eSBSZW5kZXJPYmplY3Q6OmNyZWF0ZVBvc2l0aW9uV2l0aEFmZmluaXR5KGlu
dCBvZmZzZXQsIEFmZmluaQogICAgICAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbldpdGhBZmZp
bml0eShjYW5kaWRhdGUsIGFmZmluaXR5KTsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTog
RWxpbWluYXRlIGxlZ2FjeSBlZGl0aW5nIHBvc2l0aW9ucwotICAgICAgICByZXR1cm4gUG9zaXRp
b25XaXRoQWZmaW5pdHkobWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihub2RlLmdldCgpLCBv
ZmZzZXQpLCBhZmZpbml0eSk7CisgICAgICAgIHJldHVybiBQb3NpdGlvbldpdGhBZmZpbml0eSht
YWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG5vZGUuZ2V0KCksIGNvbnZlcnRPZmZzZXRJblRl
eHRGcmFnbWVudFRvTm9kZU9mZnNldCgqdGhpcywgb2Zmc2V0KSksIGFmZmluaXR5KTsKICAgICB9
CiAKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNyb3NzIHRoZSBib3VuZGFyeSBiZXR3ZWVuIGVk
aXRhYmxlIGFuZCBub24tZWRpdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRGcmFnbWVudC5jcHAKaW5kZXggOWE5MTJjMjY3Y2E5Li5jMmM2OGRmZGM1MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCkBA
IC02OCw3ICs2OCwxNCBAQCBSZW5kZXJUZXh0RnJhZ21lbnQ6On5SZW5kZXJUZXh0RnJhZ21lbnQo
KQogCiBib29sIFJlbmRlclRleHRGcmFnbWVudDo6Y2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gdGV4dE5vZGUoKSAmJiB0ZXh0Tm9kZSgpLT5oYXNFZGl0YWJsZVN0eWxl
KCk7CisgICAgaWYgKFJlZlB0ciB0ZXh0Tm9kZSA9IHRoaXMtPnRleHROb2RlKCkpIHsKKyAgICAg
ICAgLy8gUmVtYWluaW5nICh0cmFpbGluZykgdGV4dCBmcmFnbWVudHMgd2l0aCBmaXJzdC1sZXR0
ZXIgYXJlIGFsd2F5cyBzZWxlY3RhYmxlLAorICAgICAgICAvLyBtYXRjaGluZyB0aGUgYmFzZSBS
ZW5kZXJUZXh0OjpjYW5CZVNlbGVjdGlvbkxlYWYoKSBiZWhhdmlvci4KKyAgICAgICAgcmV0dXJu
IGZpcnN0TGV0dGVyKCkgfHwgdGV4dE5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKTsKKyAgICB9Cisg
ICAgLy8gRmlyc3QtbGV0dGVyIGlzIGFsd2F5cyBzZWxlY3RhYmxlLgorICAgIENoZWNrZWRQdHIg
YW5vbnltb3VzSW5saW5lV3JhcHBlciA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbmxpbmU+KHRo
aXMtPnBhcmVudCgpKTsKKyAgICByZXR1cm4gYW5vbnltb3VzSW5saW5lV3JhcHBlciAmJiBhbm9u
eW1vdXNJbmxpbmVXcmFwcGVyLT5maXJzdExldHRlclJlbWFpbmluZ1RleHQoKTsKIH0KIAogdm9p
ZCBSZW5kZXJUZXh0RnJhZ21lbnQ6OnNldFRleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIG5ld1Rl
eHQsIGJvb2wgZm9yY2UpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9maXJzdC1sZXR0ZXItY2FyZXQtc2luZ2xlLWNoYXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLWNhcmV0LXNpbmdsZS1jaGFyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJiZTQyNmVi
ZjdkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1jYXJldC1zaW5nbGUtY2hhci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBA
QAorVGVzdCB0aGF0IGNhcmV0IHBvc2l0aW9uaW5nIHdvcmtzIGNvcnJlY3RseSB3aGVuIHRoZSBl
bnRpcmUgdGV4dCBpcyBhIDo6Zmlyc3QtbGV0dGVyIHdpdGggYW4gZW1wdHkgcmVtYWluaW5nIGZy
YWdtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuYW5jaG9yT2Zmc2V0IGlzIDEKK1BBU1MgdGVzdC50ZXh0Q29udGVudCBpcyAn
QScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorQQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXIt
Y2FyZXQtc2luZ2xlLWNoYXIuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Zp
cnN0LWxldHRlci1jYXJldC1zaW5nbGUtY2hhci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uMzMxOThjNTFlMmNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLWNhcmV0LXNpbmdsZS1jaGFyLmh0
bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5
bGU+CitkaXY6OmZpcnN0LWxldHRlciB7CisgICAgY29sb3I6IHJlZDsKK30KK2RpdiB7CisgICAg
Zm9udC1zaXplOiAyMHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjb250
ZW50ZWRpdGFibGUgaWQ9InRlc3QiPkE8L2Rpdj4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PC9kaXY+
CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGNhcmV0IHBvc2l0aW9uaW5nIHdv
cmtzIGNvcnJlY3RseSB3aGVuIHRoZSBlbnRpcmUgdGV4dCBpcyBhIDo6Zmlyc3QtbGV0dGVyIHdp
dGggYW4gZW1wdHkgcmVtYWluaW5nIGZyYWdtZW50LiIpOworCisvLyBBcHBlbmQgIkIiIGFmdGVy
ICJBIiwgdGhlbiBkZWxldGUgaXQuIFRoZSBjYXJldCBzaG91bGQgc3RheSBhZnRlciAiQSIuCitk
b2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKK3Rlc3QuYXBwZW5kKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCJCIikpOworZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisKKy8vIFBsYWNlIGNh
cmV0IGFmdGVyICJCIiBhbmQgZGVsZXRlIGl0LgordmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKK3NlbC5jb2xsYXBzZSh0ZXN0Lmxhc3RDaGlsZCwgMSk7Citkb2N1bWVudC5leGVjQ29t
bWFuZCgiZGVsZXRlIik7Citkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKworLy8gQWZ0ZXIg
ZGVsZXRpbmcgIkIiLCBvbmx5ICJBIiByZW1haW5zIGFzIHRoZSBlbnRpcmUgZmlyc3QgbGV0dGVy
LgorLy8gVGhlIGNhcmV0IHNob3VsZCBiZSBhZnRlciAiQSIgKG9mZnNldCAxKSwgbm90IGJlZm9y
ZSBpdCAob2Zmc2V0IDApLgorc2hvdWxkQmUoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS5hbmNob3JP
ZmZzZXQiLCAiMSIpOworc2hvdWxkQmUoInRlc3QudGV4dENvbnRlbnQiLCAiJ0EnIik7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9u
LWNyb3NzLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uODQ3MmY0MDNjODA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1jcm9zcy1lbGVtZW50LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0IHRoYXQgc2VsZWN0aW9uIGFjcm9zcyBt
dWx0aXBsZSBlbGVtZW50cyB3aXRoIDo6Zmlyc3QtbGV0dGVyIHdvcmtzIGNvcnJlY3RseS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigp
LnRvU3RyaW5nKCkucmVwbGFjZSgvXG4vZywgJ3wnKSBpcyAiRmlyc3QgcGFyYWdyYXBofFNlY29u
ZCBwYXJhZ3JhcGgiCitQQVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxh
Y2UoL1xuL2csICd8JykgaXMgInN0IHBhcmFncmFwaHxTZWNvbmQiCitQQVNTIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS50b1N0cmluZygpLnJlcGxhY2UoL1xuL2csICd8JykgaXMgIkZpcnN0IHBhcmFn
cmFwaHxTIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CitGaXJzdCBwYXJhZ3JhcGgKK1NlY29uZCBwYXJhZ3JhcGgKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tY3Jvc3MtZWxlbWVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVj
dGlvbi1jcm9zcy1lbGVtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5kZmIzNDg4ZDQ1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLWNyb3NzLWVsZW1lbnQuaHRtbApA
QCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4K
Ky5maXJzdC1sZXR0ZXItc3R5bGVkOjpmaXJzdC1sZXR0ZXIgeworICAgIGNvbG9yOiByZWQ7Cit9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxk
aXYgaWQ9InBhcmExIiBjbGFzcz0iZmlyc3QtbGV0dGVyLXN0eWxlZCI+Rmlyc3QgcGFyYWdyYXBo
PC9kaXY+CisgICAgPGRpdiBpZD0icGFyYTIiIGNsYXNzPSJmaXJzdC1sZXR0ZXItc3R5bGVkIj5T
ZWNvbmQgcGFyYWdyYXBoPC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJU
ZXN0IHRoYXQgc2VsZWN0aW9uIGFjcm9zcyBtdWx0aXBsZSBlbGVtZW50cyB3aXRoIDo6Zmlyc3Qt
bGV0dGVyIHdvcmtzIGNvcnJlY3RseS4iKTsKKworZnVuY3Rpb24gc2VsZWN0QWNyb3NzRWxlbWVu
dHMoc3RhcnROb2RlLCBzdGFydE9mZnNldCwgZW5kTm9kZSwgZW5kT2Zmc2V0KSB7CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZXRTdGFydChzdGFy
dE5vZGUsIHN0YXJ0T2Zmc2V0KTsKKyAgICByYW5nZS5zZXRFbmQoZW5kTm9kZSwgZW5kT2Zmc2V0
KTsKKyAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHNlbC5yZW1vdmVB
bGxSYW5nZXMoKTsKKyAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpOworfQorCisvLyBUZXN0IDE6IFNl
bGVjdCBhY3Jvc3MgdHdvIGZpcnN0LWxldHRlciBwYXJhZ3JhcGhzCitzZWxlY3RBY3Jvc3NFbGVt
ZW50cyhwYXJhMS5maXJzdENoaWxkLCAwLCBwYXJhMi5maXJzdENoaWxkLCBwYXJhMi5maXJzdENo
aWxkLmxlbmd0aCk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24o
KS50b1N0cmluZygpLnJlcGxhY2UoL1xcbi9nLCAnfCcpIiwgIkZpcnN0IHBhcmFncmFwaHxTZWNv
bmQgcGFyYWdyYXBoIik7CisKKy8vIFRlc3QgMjogU2VsZWN0IGZyb20gbWlkZGxlIG9mIGZpcnN0
IHRvIG1pZGRsZSBvZiBzZWNvbmQKK3NlbGVjdEFjcm9zc0VsZW1lbnRzKHBhcmExLmZpcnN0Q2hp
bGQsIDMsIHBhcmEyLmZpcnN0Q2hpbGQsIDYpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5k
b3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cXG4vZywgJ3wnKSIsICJzdCBw
YXJhZ3JhcGh8U2Vjb25kIik7CisKKy8vIFRlc3QgMzogU2VsZWN0IGZyb20gZmlyc3QtbGV0dGVy
IG9mIGZpcnN0IHRvIGZpcnN0LWxldHRlciBvZiBzZWNvbmQKK3NlbGVjdEFjcm9zc0VsZW1lbnRz
KHBhcmExLmZpcnN0Q2hpbGQsIDAsIHBhcmEyLmZpcnN0Q2hpbGQsIDEpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBsYWNlKC9cXG4v
ZywgJ3wnKSIsICJGaXJzdCBwYXJhZ3JhcGh8UyIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0
ZXItc2VsZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2ZpcnN0LWxldHRlci1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uYWQwOGQ5MzljN2IwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzMyBAQAorVGVzdCB0aGF0IHNlbGVjdGlvbiB3b3JrcyBjb3JyZWN0
bHkgd2l0aCA6OmZpcnN0LWxldHRlciBwc2V1ZG8tZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkgaXMg
IkhlbGxvIgorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiMTIiCitQ
QVNTIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICJcIlF1b3RlIgorUEFTUyB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiQSIKK1BBU1Mgd2luZG93LmdldFNl
bGVjdGlvbigpLnRvU3RyaW5nKCkgaXMgIk5lc3RlZCIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlv
bigpLnRvU3RyaW5nKCkucmVwbGFjZSgvXG4vZywgJ3wnKSBpcyAiRmlyc3R8U2Vjb25kIgorUEFT
UyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiRWRpdGFibGUiCitQQVNTIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIGlzICIxIgorUEFTUyB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSBpcyAiMiIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRv
U3RyaW5nKCkgaXMgIkhlbCIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkg
aXMgIlwiUSIKK1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkIGlzIHRydWUK
K1BBU1Mgd2luZG93LmdldFNlbGVjdGlvbigpLmFuY2hvck9mZnNldCBpcyAxCitQQVNTIHdpbmRv
dy5nZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCBpcyB0cnVlCitQQVNTIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hbmNob3JPZmZzZXQgaXMgMAorUEFTUyB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSBpcyAiQSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorSGVsbG8KKzEyCisiUXVvdGUKK0EKK05lc3RlZAorRmlyc3QKK1NlY29uZAorRWRp
dGFibGUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3Qt
bGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDAzOTA1MzhkMzdm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3Qt
bGV0dGVyLXNlbGVjdGlvbi1wYWludGluZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjUgQEAK
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxz
dHlsZT4KK3NwYW4uZmlyc3QtbGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworICAgIGZvbnQtc2l6
ZTogMmVtOworfQorPC9zdHlsZT4KKzxkaXYgaWQ9InRhcmdldCI+PHNwYW4gY2xhc3M9ImZpcnN0
LWxldHRlciI+SDwvc3Bhbj5lbGxvIFdvcmxkPC9kaXY+Cis8c2NyaXB0Pgord2luZG93LnRlc3RS
dW5uZXI/LndhaXRVbnRpbERvbmUoKTsKK3dpbmRvdy50ZXN0UnVubmVyPy5kb250Rm9yY2VSZXBh
aW50KCk7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgYXdhaXQgVUlIZWxwZXIu
cmVuZGVyaW5nVXBkYXRlKCk7CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2Uo
KTsKKyAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldCIpKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICBhd2FpdCBV
SUhlbHBlci5yZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBhd2FpdCBVSUhlbHBlci5yZW5kZXJpbmdV
cGRhdGUoKTsKKyAgICB3aW5kb3cudGVzdFJ1bm5lcj8ubm90aWZ5RG9uZSgpOworfQorCit3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHJ1blRlc3QpOworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9u
LXBhaW50aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0
ZXItc2VsZWN0aW9uLXBhaW50aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5iNmI4YmRmNDZjYjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9maXJzdC1sZXR0ZXItc2VsZWN0aW9uLXBhaW50aW5nLmh0bWwKQEAg
LTAsMCArMSwyNSBAQAorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPHN0eWxlPgorZGl2OjpmaXJzdC1sZXR0ZXIgeworICAgIGNvbG9yOiByZWQ7
CisgICAgZm9udC1zaXplOiAyZW07Cit9Cis8L3N0eWxlPgorPGRpdiBpZD0idGFyZ2V0Ij5IZWxs
byBXb3JsZDwvZGl2PgorPHNjcmlwdD4KK3dpbmRvdy50ZXN0UnVubmVyPy53YWl0VW50aWxEb25l
KCk7Cit3aW5kb3cudGVzdFJ1bm5lcj8uZG9udEZvcmNlUmVwYWludCgpOworCithc3luYyBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgIGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOwor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0
Tm9kZUNvbnRlbnRzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5nVXBk
YXRlKCk7CisgICAgYXdhaXQgVUlIZWxwZXIucmVuZGVyaW5nVXBkYXRlKCk7CisgICAgd2luZG93
LnRlc3RSdW5uZXI/Lm5vdGlmeURvbmUoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J2xvYWQnLCBydW5UZXN0KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlvbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWVkYzcyYjNmYzViCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZmlyc3QtbGV0dGVyLXNlbGVjdGlv
bi5odG1sCkBAIC0wLDAgKzEsMTAxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KK2Rpdjo6Zmlyc3QtbGV0dGVyIHsKKyAgICBjb2xvcjogcmVkOworfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGVzdDEiPkhlbGxvPC9kaXY+Cis8ZGl2IGlk
PSJ0ZXN0MiI+MTI8L2Rpdj4KKzxkaXYgaWQ9InRlc3QzIj4iUXVvdGU8L2Rpdj4KKzxkaXYgaWQ9
InRlc3Q0Ij5BPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NSI+PHNwYW4+TmVzdGVkPC9zcGFuPjwvZGl2
PgorPGRpdiBpZD0idGVzdDYiPkZpcnN0PGJyPlNlY29uZDwvZGl2PgorPGRpdiBpZD0idGVzdDci
IGNvbnRlbnRlZGl0YWJsZT5FZGl0YWJsZTwvZGl2PgorPGRpdiBpZD0iY29udGFpbmVyIj48L2Rp
dj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgc2VsZWN0aW9uIHdvcmtzIGNv
cnJlY3RseSB3aXRoIDo6Zmlyc3QtbGV0dGVyIHBzZXVkby1lbGVtZW50LiIpOworCitmdW5jdGlv
biBzZWxlY3RBbGwoZWxlbWVudCkgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpOworICAgIHZhciBz
ZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpOwor
ICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdFJhbmdlKG5vZGUs
IHN0YXJ0LCBlbmQpIHsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ICAgIHJhbmdlLnNldFN0YXJ0KG5vZGUsIHN0YXJ0KTsKKyAgICByYW5nZS5zZXRFbmQobm9kZSwg
ZW5kKTsKKyAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHNlbC5yZW1v
dmVBbGxSYW5nZXMoKTsKKyAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpOworfQorCisvLyBUZXN0IDE6
IFNlbGVjdCBhbGwgdGV4dCBpbiBlbGVtZW50IHdpdGggZmlyc3QtbGV0dGVyCitzZWxlY3RBbGwo
dGVzdDEpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9T
dHJpbmcoKSIsICJIZWxsbyIpOworCisvLyBUZXN0IDI6IFNob3J0IHRleHQgLSBzZWxlY3QgYWxs
CitzZWxlY3RBbGwodGVzdDIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkudG9TdHJpbmcoKSIsICIxMiIpOworCisvLyBUZXN0IDM6IEZpcnN0LWxldHRlciB3
aXRoIHB1bmN0dWF0aW9uIChmaXJzdC1sZXR0ZXIgaW5jbHVkZXMgcXVvdGUgKyBsZXR0ZXIpCitz
ZWxlY3RBbGwodGVzdDMpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkudG9TdHJpbmcoKSIsICJcIlF1b3RlIik7CisKKy8vIFRlc3QgNDogU2luZ2xlIGNoYXJh
Y3RlciB0ZXh0IChlbnRpcmUgdGV4dCBpcyBmaXJzdC1sZXR0ZXIpCitzZWxlY3RBbGwodGVzdDQp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmco
KSIsICJBIik7CisKKy8vIFRlc3QgNTogRmlyc3QtbGV0dGVyIHdpdGggbmVzdGVkIGlubGluZQor
c2VsZWN0QWxsKHRlc3Q1KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldFNlbGVj
dGlvbigpLnRvU3RyaW5nKCkiLCAiTmVzdGVkIik7CisKKy8vIFRlc3QgNjogTXVsdGktbGluZSAt
IHNlbGVjdCBhbGwgc2hvdWxkIGdldCBib3RoIGxpbmVzCitzZWxlY3RBbGwodGVzdDYpOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKS5yZXBs
YWNlKC9cXG4vZywgJ3wnKSIsICJGaXJzdHxTZWNvbmQiKTsKKworLy8gVGVzdCA3OiBDb250ZW50
ZWRpdGFibGUgd2l0aCBmaXJzdC1sZXR0ZXIKK3NlbGVjdEFsbCh0ZXN0Nyk7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkVkaXRhYmxl
Iik7CisKKy8vIFRlc3QgODogU2VsZWN0IG9ubHkgdGhlIGZpcnN0LWxldHRlciBwb3J0aW9uCitz
ZWxlY3RSYW5nZSh0ZXN0Mi5maXJzdENoaWxkLCAwLCAxKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiMSIpOworCisvLyBUZXN0IDk6
IFNlbGVjdCBvbmx5IHRoZSByZW1haW5pbmcgcG9ydGlvbiAoYWZ0ZXIgZmlyc3QtbGV0dGVyKQor
c2VsZWN0UmFuZ2UodGVzdDIuZmlyc3RDaGlsZCwgMSwgMik7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoIndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIjIiKTsKKworLy8gVGVzdCAx
MDogU2VsZWN0IHJhbmdlIHNwYW5uaW5nIGZpcnN0LWxldHRlciBib3VuZGFyeQorc2VsZWN0UmFu
Z2UodGVzdDEuZmlyc3RDaGlsZCwgMCwgMyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRv
dy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkhlbCIpOworCisvLyBUZXN0IDExOiBTZWxl
Y3QgZnJvbSBtaWRkbGUgb2YgZmlyc3QtbGV0dGVyIHRleHQgdG8gZW5kCitzZWxlY3RSYW5nZSh0
ZXN0My5maXJzdENoaWxkLCAwLCAyKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93Lmdl
dFNlbGVjdGlvbigpLnRvU3RyaW5nKCkiLCAiXCJRIik7CisKKy8vIFRlc3QgMTI6IENhcmV0IGF0
IGZpcnN0LWxldHRlciBib3VuZGFyeSAob2Zmc2V0ID0gZmlyc3QtbGV0dGVyIGxlbmd0aCkKK3Nl
bGVjdFJhbmdlKHRlc3QxLmZpcnN0Q2hpbGQsIDEsIDEpOworc2hvdWxkQmUoIndpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCIsICJ0cnVlIik7CitzaG91bGRCZSgid2luZG93LmdldFNl
bGVjdGlvbigpLmFuY2hvck9mZnNldCIsICIxIik7CisKKy8vIFRlc3QgMTM6IENhcmV0IGF0IHN0
YXJ0IG9mIHRleHQgKG9mZnNldCAwLCBpbnNpZGUgZmlyc3QtbGV0dGVyKQorc2VsZWN0UmFuZ2Uo
dGVzdDEuZmlyc3RDaGlsZCwgMCwgMCk7CitzaG91bGRCZSgid2luZG93LmdldFNlbGVjdGlvbigp
LmlzQ29sbGFwc2VkIiwgInRydWUiKTsKK3Nob3VsZEJlKCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCku
YW5jaG9yT2Zmc2V0IiwgIjAiKTsKKworLy8gVGVzdCAxNDogU2VsZWN0IGFsbCBvbiBzaW5nbGUt
Y2hhcmFjdGVyIGZpcnN0LWxldHRlciAoZW50aXJlIHRleHQgaXMgZmlyc3QtbGV0dGVyKQorc2Vs
ZWN0UmFuZ2UodGVzdDQuZmlyc3RDaGlsZCwgMCwgMSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
IndpbmRvdy5nZXRTZWxlY3Rpb24oKS50b1N0cmluZygpIiwgIkEiKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJh
dG9yL2ZpcnN0LWxldHRlci13b3JkLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvdGV4dC1pdGVyYXRvci9maXJzdC1sZXR0ZXItd29yZC1ib3VuZGFyeS1leHBlY3Rl
ZC50eHQKaW5kZXggYzUyZjJhZDU2MTJkLi5kYzk5ZmNjOGMxYmYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvdGV4dC1pdGVyYXRvci9maXJzdC1sZXR0ZXItd29yZC1ib3VuZGFyeS1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy90ZXh0LWl0ZXJhdG9yL2ZpcnN0
LWxldHRlci13b3JkLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dApAQCAtMiw5ICsyLDkgQEAgVGhpcyB0
ZXN0cyBtb3ZpbmcgY2FyZXQgYXJvdW5kIGEgd29yZCB3aXRoIGEgZmlyc3QtbGV0dGVyIHJ1bGUu
IFdlYktpdCBzaG91bGQgbm8KIAogIGhlbGxvIHdvcmxkJwogd2hpdGUtc3BhY2U6IG5vcm1hbDsK
LUZBSUw6IG1vdmluZyBmb3J3YXJkIGJ5IHdvcmQgZnJvbSBvZmZzZXQgNCBwdXQgY2FyZXQgYXQg
b2Zmc2V0IDEwIGJ1dCBleHBlY3RlZCA2CitQQVNTOiBtb3ZpbmcgZm9yd2FyZCBieSB3b3JkIGZy
b20gb2Zmc2V0IDQgcHV0IGNhcmV0IGF0IG9mZnNldCA2CiBQQVNTOiBtb3ZpbmcgYmFja3dhcmQg
Ynkgd29yZCBmcm9tIG9mZnNldCA0IHB1dCBjYXJldCBhdCBvZmZzZXQgMQogd2hpdGUtc3BhY2U6
IHByZTsKLUZBSUw6IG1vdmluZyBmb3J3YXJkIGJ5IHdvcmQgZnJvbSBvZmZzZXQgNCBwdXQgY2Fy
ZXQgYXQgb2Zmc2V0IDEwIGJ1dCBleHBlY3RlZCA2Ci1QQVNTOiBtb3ZpbmcgYmFja3dhcmQgYnkg
d29yZCBmcm9tIG9mZnNldCA0IHB1dCBjYXJldCBhdCBvZmZzZXQgMQorUEFTUzogbW92aW5nIGZv
cndhcmQgYnkgd29yZCBmcm9tIG9mZnNldCA0IHB1dCBjYXJldCBhdCBvZmZzZXQgNgorRkFJTDog
bW92aW5nIGJhY2t3YXJkIGJ5IHdvcmQgZnJvbSBvZmZzZXQgNCBwdXQgY2FyZXQgYXQgb2Zmc2V0
IDAgYnV0IGV4cGVjdGVkIDEKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2Zp
cnN0LWxldHRlci1wYXJ0aWFsLWludmFsaWRhdGlvbi1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQvZmlyc3QtbGV0dGVyLXBhcnRpYWwtaW52YWxpZGF0aW9uLWNyYXNo
LWV4cGVjdGVkLnR4dAppbmRleCAxNjBiMGQzYjBhMDQuLjJiMTc4MGFiMzVhOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZpcnN0LWxldHRlci1wYXJ0aWFsLWludmFsaWRhdGlv
bi1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZpcnN0LWxl
dHRlci1wYXJ0aWFsLWludmFsaWRhdGlvbi1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTEgKzEgQEAK
LVBBU1MgaWYgbm8gY3Jhc2ggb3IgYXNBQUFBcnQKK1BBU1MgaWYgbm8gY3Jhc2ggb3IgYXNzZUFB
QUEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvZWRpdGluZy9zZWxlY3Rp
b24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2dsaWIvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dApp
bmRleCBiOWNhOWEwZGJkNWYuLmM5MjQ0NzBhM2Y1NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ2xpYi9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvZWRpdGluZy9zZWxlY3Rpb24v
ZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dApAQCAtNjksNSArNjksNSBAQCBsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICAgIFJlbmRlcklubGluZSB7QX0gYXQgKDE4
LDYpIHNpemUgMzh4MTEgW2NvbG9yPSMwMDAwRUVdCiAgICAgICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMTgsNikgc2l6ZSAzOHgxMQogICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgxOCw2KSB3aWR0aCAzODogIkNvbWJvcyIKLXNlbGVjdGlvbiBzdGFydDogcG9zaXRpb24gMCBv
ZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7QX0gb2YgY2hpbGQgMSB7TEl9IG9mIGNoaWxk
IDEge1VMfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKK3NlbGVjdGlvbiBzdGFydDogcG9zaXRp
b24gMSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7TEl9IG9mIGNoaWxkIDEge1VMfSBv
ZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKIHNlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gNSBvZiBj
aGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMSB7QX0gb2YgY2hpbGQgNyB7TEl9IG9mIGNoaWxkIDEg
e1VMfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1i
eS13b3JkLTAwMi1leHBlY3RlZC50eHQKaW5kZXggMmI2NmU0YWI1MGRlLi42NjlhNGViODdkN2Qg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9lZGl0aW5nL3NlbGVjdGlvbi9l
eHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktd29yZC0wMDItZXhwZWN0ZWQudHh0CkBA
IC02OSw1ICs2OSw1IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICAgICAgICAgICAg
UmVuZGVySW5saW5lIHtBfSBhdCAoMTksNSkgc2l6ZSA0MXgxNCBbY29sb3I9IzAwMDBFRV0KICAg
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxOSw1KSBzaXplIDQxeDE0CiAgICAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE5LDUpIHdpZHRoIDQxOiAiQ29tYm9zIgotc2VsZWN0
aW9uIHN0YXJ0OiBwb3NpdGlvbiAwIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtBfSBv
ZiBjaGlsZCAxIHtMSX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQor
c2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAx
IHtMSX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQogc2VsZWN0aW9u
IGVuZDogICBwb3NpdGlvbiA1IG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAxIHtBfSBvZiBj
aGlsZCA3IHtMSX0gb2YgY2hpbGQgMSB7VUx9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVu
ZC1ieS13b3JkLTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9zZWxlY3Rpb24vZXh0ZW5kLWJ5LXdvcmQtMDAyLWV4cGVjdGVkLnR4dAppbmRleCAwNzg1
YzZkOTdiN2YuLjI0Nzg3MTdhMjZmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13b3JkLTAwMi1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1ieS13
b3JkLTAwMi1leHBlY3RlZC50eHQKQEAgLTY5LDUgKzY5LDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCiAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge0F9IGF0ICgxOSw1KSBzaXplIDQx
eDE0IFtjb2xvcj0jMDAwMEVFXQogICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDE5LDUpIHNpemUgNDF4MTQKICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTksNSkgd2lk
dGggNDE6ICJDb21ib3MiCi1zZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7
I3RleHR9IG9mIGNoaWxkIDEge0F9IG9mIGNoaWxkIDEge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2Yg
Y2hpbGQgMSB7RElWfSBvZiBib2R5CitzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDEgb2YgY2hp
bGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2YgY2hpbGQgMSB7
RElWfSBvZiBib2R5CiBzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDUgb2YgY2hpbGQgMCB7I3Rl
eHR9IG9mIGNoaWxkIDEge0F9IG9mIGNoaWxkIDcge0xJfSBvZiBjaGlsZCAxIHtVTH0gb2YgY2hp
bGQgMSB7RElWfSBvZiBib2R5Cg==
</data>
<flag name="commit-queue"
          id="500449"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>