<?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>216193</bug_id>
          
          <creation_ts>2020-09-04 14:37:48 -0700</creation_ts>
          <short_desc>[JSC] Align legacy Intl constructor behavior to spec</short_desc>
          <delta_ts>2020-09-16 00:19:50 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=216602</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>213425</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1685856</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-04 14:37:48 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685904</commentid>
    <comment_count>1</comment_count>
      <attachid>408039</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-04 16:17:09 -0700</bug_when>
    <thetext>Created attachment 408039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685906</commentid>
    <comment_count>2</comment_count>
      <attachid>408039</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-04 16:21:03 -0700</bug_when>
    <thetext>Comment on attachment 408039
Patch

Will update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685914</commentid>
    <comment_count>3</comment_count>
      <attachid>408042</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-04 16:33:20 -0700</bug_when>
    <thetext>Created attachment 408042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685915</commentid>
    <comment_count>4</comment_count>
      <attachid>408042</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-04 16:36:34 -0700</bug_when>
    <thetext>Comment on attachment 408042
Patch

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

This all looks good, but I’d like to wait until EWS tests are passing and I’ll review then if no one has done it yet.

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp:114
&gt; +    IntlDateTimeFormat* dtf = IntlDateTimeFormat::unwrapForOldFunctions(globalObject, callFrame-&gt;thisValue());

How about &quot;format&quot; instead of &quot;dtf&quot;? And auto perhaps?

    auto format = ...

&gt; Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:117
&gt; +    IntlNumberFormat* nf = IntlNumberFormat::unwrapForOldFunctions(globalObject, callFrame-&gt;thisValue());

auto format =</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685965</commentid>
    <comment_count>5</comment_count>
      <attachid>408042</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-04 17:57:02 -0700</bug_when>
    <thetext>Comment on attachment 408042
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp:114
&gt;&gt; +    IntlDateTimeFormat* dtf = IntlDateTimeFormat::unwrapForOldFunctions(globalObject, callFrame-&gt;thisValue());
&gt; 
&gt; How about &quot;format&quot; instead of &quot;dtf&quot;? And auto perhaps?
&gt; 
&gt;     auto format = ...

Changed to auto*.

&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:117
&gt;&gt; +    IntlNumberFormat* nf = IntlNumberFormat::unwrapForOldFunctions(globalObject, callFrame-&gt;thisValue());
&gt; 
&gt; auto format =

Changed to `auto*`. It is good that we know this is a pointer for readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685967</commentid>
    <comment_count>6</comment_count>
      <attachid>408057</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-04 17:58:42 -0700</bug_when>
    <thetext>Created attachment 408057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685968</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-04 17:58:50 -0700</bug_when>
    <thetext>Updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685969</commentid>
    <comment_count>8</comment_count>
      <attachid>408058</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-04 18:00:05 -0700</bug_when>
    <thetext>Created attachment 408058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685999</commentid>
    <comment_count>9</comment_count>
      <attachid>408058</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-04 21:27:38 -0700</bug_when>
    <thetext>Comment on attachment 408058
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp:114
&gt; +    auto* dtf = IntlDateTimeFormat::unwrapForOldFunctions(globalObject, callFrame-&gt;thisValue());

auto format

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp:146
&gt; +    auto* dateTimeFormat = jsDynamicCast&lt;IntlDateTimeFormat*&gt;(vm, callFrame-&gt;thisValue());

I’d like auto format here too

&gt; Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:117
&gt; +    auto* nf = IntlNumberFormat::unwrapForOldFunctions(globalObject, callFrame-&gt;thisValue());

auto format</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686000</commentid>
    <comment_count>10</comment_count>
      <attachid>408042</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-04 21:28:44 -0700</bug_when>
    <thetext>Comment on attachment 408042
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:117
&gt;&gt;&gt; +    IntlNumberFormat* nf = IntlNumberFormat::unwrapForOldFunctions(globalObject, callFrame-&gt;thisValue());
&gt;&gt; 
&gt;&gt; auto format =
&gt; 
&gt; Changed to `auto*`. It is good that we know this is a pointer for readability.

Part of my suggestion was &quot;format&quot; instead of &quot;nf&quot;.

Also, I strongly suggest &quot;auto&quot; instead of &quot;auto*&quot; so we can change return values to smart pointers without touching all the code. There are plenty of things that act like pointers that don’t work with auto*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686003</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-04 21:53:21 -0700</bug_when>
    <thetext>Committed r266655: &lt;https://trac.webkit.org/changeset/266655&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408058.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686004</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-04 21:54:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/68381902&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686112</commentid>
    <comment_count>13</comment_count>
      <attachid>408042</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-05 13:29:45 -0700</bug_when>
    <thetext>Comment on attachment 408042
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp:117
&gt;&gt;&gt;&gt; +    IntlNumberFormat* nf = IntlNumberFormat::unwrapForOldFunctions(globalObject, callFrame-&gt;thisValue());
&gt;&gt;&gt; 
&gt;&gt;&gt; auto format =
&gt;&gt; 
&gt;&gt; Changed to `auto*`. It is good that we know this is a pointer for readability.
&gt; 
&gt; Part of my suggestion was &quot;format&quot; instead of &quot;nf&quot;.
&gt; 
&gt; Also, I strongly suggest &quot;auto&quot; instead of &quot;auto*&quot; so we can change return values to smart pointers without touching all the code. There are plenty of things that act like pointers that don’t work with auto*.

I think auto* in JavaScriptCore (not in WebCore) has more meaning than `auto*` in WebCore. The reason is that, in JSC, we are having GC-managed JSCell derived objects. And we are using it via raw pointer. So, `auto*` in JSC tells us that this is likely this value is GC-managed JSCell.
For non-JSCell things, possibly using `auto` is better. But for JSCell cases, I think `auto*` is nice for readability. When reading the code, `auto` cannot offer information about the ownership management (if it is JSCell, it is GC-managed, and this is largely different from the other C++ objects). But `auto*` can tell us that this is a raw pointer, so we should care about ownership carefully, if it is JSCell, we should consider it as GC-managed. And if it is not JSCell, then we should be careful about the ownership of this raw pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686165</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-05 21:56:06 -0700</bug_when>
    <thetext>Committed r266679: &lt;https://trac.webkit.org/changeset/266679&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408039</attachid>
            <date>2020-09-04 16:17:09 -0700</date>
            <delta_ts>2020-09-04 16:33:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216193-20200904161708.patch</filename>
            <type>text/plain</type>
            <size>44896</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NzhjOWY4NDVmMTdiYjM5MTc0NjAxZDc4OTY4MWJmMGFmYjYxNTgwLi45MzY2NGY2YmM1NzRiODNj
MzhiMmM4NTgyNjc0YjdiZjhkY2VkYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAyMC0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFsaWduIGxlZ2FjeSBJbnRsIGNvbnN0cnVjdG9yIGJlaGF2aW9y
IHRvIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNjE5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExlZ2FjeSBJbnRsIGNvbnN0cnVjdG9ycyAoSW50bC5EYXRlVGltZUZvcm1hdCBhbmQgSW50bC5O
dW1iZXJGb3JtYXQpIGhhdmUgc3BlY2lhbCBoYW5kbGluZyB3aGVuIGl0IGlzIGNhbGxlZCB2aWEg
YEludGwuRGF0ZVRpbWVGb3JtYXQoKWAgZm9ybS4KKyAgICAgICAgVGhpcyBhbGxvd2VkIGxlZ2Fj
eSBJbnRsIGNvbnN0cnVjdG9ycyB0byBiZSB1c2VkIHdpdGggcHJvdG90eXBlLWJhc2VkIGluaGVy
aXRhbmNlIHdpdGhvdXQgdXNpbmcgY2xhc3Mgc3ludGF4LiBUaGlzIGxlZ2FjeSBiZWhhdmlvciBp
cyBsYXRlciBzcGVjaWZpZWQKKyAgICAgICAgZXhwbGljaXRseSBpbiB0aGUgc3BlYy4gU28gd2Ug
c2hvdWxkIGFsaWduIG91ciBpbXBsZW1lbnRhdGlvbiB0byB0aGUgc3BlYydzIG9uZS4KKworICAg
ICAgICAgICAgMS4gV2hlbiBkZWZpbmluZyBmYWxsYmFjayBmb3JtYXRzLCB3ZSBuZWVkIHRvIHB1
dCB0aGVtIGludG8gdGhlIHByb3BlcnR5IHdoaWNoIGlzIHZpc2libGUgdmlhIFN5bWJvbCgiSW50
bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sIikuCisgICAgICAgICAgICAyLiBXZSBzaG91bGQgY2Fs
bCBoYXNJbnN0YW5jZSBpbiBjb3JyZWN0IG9yZGVyIGluIGxlZ2FjeSBjb25zdHJ1Y3RvcnMgYW5k
IHVud3JhcCBmdW5jdGlvbnMuCisgICAgICAgICAgICAzLiBFdmVuIGlmIHRoZSBwcm92aWRlZCB0
aGlzVmFsdWUgaXMgSW50bERhdGVUaW1lRm9ybWF0KiAvIEludGxOdW1iZXJGb3JtYXQqLCB3ZSBz
aG91bGQgY3JlYXRlIGFub3RoZXIgaW5zdGFuY2UgYW5kIHB1dCBpdCB0byBTeW1ib2woIkludGxM
ZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCIpIGZpZWxkLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGlu
TmFtZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5OYW1lcyk6Cisg
ICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgIChKU0M6OkJ1aWx0aW5O
YW1lczo6aW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sIGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxEYXRlVGltZUZvcm1hdCk6CisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOgorICAgICAgICAo
SlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyk6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSk6Cisg
ICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlv
bnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OmNhbGxJbnRsTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9s
ZEZ1bmN0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1h
dCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9Q
YXJ0cyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2
ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpjcmVhdGVEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y3Jl
YXRlTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmth
cm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjp1bndyYXBGb3JM
ZWdhY3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpkYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRhdGVUaW1lRm9y
bWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51bWJlckZvcm1h
dENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51bWJlckZvcm1h
dFByb3RvdHlwZSk6CisKIDIwMjAtMDktMDQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hA
Z21haWwuY29tPgogCiAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoIHNob3VsZCBhbHdheXMg
cGVyZm9ybSBbW1NldF1dIGluIHN0cmljdCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDM2MTBjMmEyYWY3MTEyNmI5ZjliOTQ5YTQ3MjMwYTY0YzA4MDViNGIuLjRmNzRkODk5
NTZlZTg0MjJiMjU3ZWNlMGM5YjBlMzI0YzcyODA5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xODQ5LDYgKzE4NDksNyBAQAogCQlFMzZCNzY3MDIyRjhENjE5MDBEMDk4MTgg
LyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JP
U1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21D
cmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2RURDRTUyNEYw
OTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVu
Y3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
Mzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3NTBDQzcyNTAy
RTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLzsgfTsKIAkJRTM3
OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MzUwMDkyMzkw
RDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKIAkJRTM4NTBCMTUyMjZFRDY0MTAw
OUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZHTWlu
aWZpZWRJRElubGluZXMuaCAqLzsgfTsKQEAgLTUwNDksNiArNTA1MCw3IEBACiAJCUUzNkI3NjZG
MjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVu
Y3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVuY3kuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3NTBDQzcyNTAyRTg3RTAwNkEwQUFCIC8qIElu
dGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9k
dWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5h
bHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3Q0ZCMkQyMkYyN0M1NzAw
OUE3QjM4IC8qIFdhc21Db21waWxhdGlvbk1vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Fz
bUNvbXBpbGF0aW9uTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzE4
LDYgKzczMjAsNyBAQAogCQkJCUExNTg3RDY4MUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRp
bWVGb3JtYXQuaCAqLywKIAkJCQlBMTU4N0Q2OTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAogCQkJCUExNTg3RDZBMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUzNzUwQ0M3MjUw
MkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggKi8sCiAJCQkJQTE1
ODdENkIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAg
Ki8sCiAJCQkJQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5oICovLAogCQkJCUUzNTNDMTE2MjRBQTRDQjUwMDNGQkRGMyAvKiBJbnRsRGlzcGxh
eU5hbWVzLmNwcCAqLywKQEAgLTk4MjksNiArOTgzMiw3IEBACiAJCQkJQTE1ODdENkUxQjREQzE0
MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1
ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q3NTFCNERDMUM2MDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzc1MENDODI1
MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTE1ODdENzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzYxQjREQzFDNjAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUz
NTNDMTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAK
aW5kZXggYTY4OGU1NWVlNmE2YmFhMzJlMTkxZTc0YzEwZDEyZTM5N2E2NTU3Ny4uMmEwODg3ZTcz
ZTU3MWYwMDhlODg0ZGIzNDMwNDg2ZDM0MjAwNzIyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKQEAgLTQxLDYgKzQxLDggQEAgbmFtZXNw
YWNlIFN5bWJvbHMgewogSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9L
Tk9XTl9TWU1CT0woSU5JVElBTElaRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKQogI3VuZGVmIElO
SVRJQUxJWkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUwogCitTeW1ib2xJbXBsOjpTdGF0aWNTeW1i
b2xJbXBsIGludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCB7ICJJbnRsTGVnYWN5Q29uc3RydWN0
ZWRTeW1ib2wiIH07CisKICNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMo
bmFtZSkgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCBuYW1lIyNQcml2YXRlTmFtZSB7ICNu
YW1lLCBTeW1ib2xJbXBsOjpzX2ZsYWdJc1ByaXZhdGUgfTsKIEpTQ19GT1JFQUNIX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fUFJJVkFURV9OQU1FUykKIEpTQ19DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9CVUlM
VElOX1BSSVZBVEVfTkFNRVMpCkBAIC03Niw2ICs3OCw3IEBAIEJ1aWx0aW5OYW1lczo6QnVpbHRp
bk5hbWVzKFZNJiB2bSwgQ29tbW9uSWRlbnRpZmllcnMqIGNvbW1vbklkZW50aWZpZXJzKQogICAg
IEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fTkFN
RVNfSU5fSlNDKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BF
UlRZX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTX0lOX0pTQykKICAgICBKU0NfQ09NTU9O
X1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX0JV
SUxUSU5fU1lNQk9MU19JTl9KU0MpCisgICAgLCBtX2ludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJv
bChKU0M6OklkZW50aWZpZXI6OmZyb21VaWQodm0sICZzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4o
U3ltYm9sczo6aW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sKSkpCiAgICAgLCBtX2RvbGxhclZN
TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJHZtIikpCiAgICAgLCBtX2RvbGxhclZN
UHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgJnN0YXRpY19jYXN0PFN5bWJvbElt
cGwmPihTeW1ib2xzOjpkb2xsYXJWTVByaXZhdGVOYW1lKSkpCiAgICAgLCBtX3BvbHlQcm90b1By
aXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQodm0sICZzdGF0aWNfY2FzdDxTeW1ib2xJbXBs
Jj4oU3ltYm9sczo6cG9seVByb3RvUHJpdmF0ZU5hbWUpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA3YjE4MGM3MDA0OTQ4ODFlYmFlYzIz
ZThmNDJlYjA3ODBiMDY1YjQ1Li4yYjVmOTAyODIwZWJlYjgxZDYyN2ZjMTZmYWVkN2Q5NDE3MWY1
ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
CkBAIC0xMTEsNyArMTExLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8obmV4dE1ldGhv
ZCkgXAogICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCkgXAogICAgIG1hY3Jv
KGRhdGVUaW1lRm9ybWF0KSBcCi0gICAgbWFjcm8oaW50bFN1YnN0aXR1dGVWYWx1ZSkgXAogICAg
IG1hY3JvKHRoaXMpIFwKICAgICBtYWNybyh0aGlzVGltZVZhbHVlKSBcCiAgICAgbWFjcm8obmV3
VGFyZ2V0TG9jYWwpIFwKQEAgLTIxMSw2ICsyMTAsNyBAQCBjbGFzcyBCdWlsdGluTmFtZXMgewog
ICAgIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgZG9sbGFyVk1QdWJsaWNOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9kb2xsYXJWTU5hbWU7IH0KICAgICBjb25zdCBKU0M6OklkZW50aWZpZXImIGRvbGxh
clZNUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2RvbGxhclZNUHJpdmF0ZU5hbWU7IH0K
ICAgICBjb25zdCBKU0M6OklkZW50aWZpZXImIHBvbHlQcm90b05hbWUoKSBjb25zdCB7IHJldHVy
biBtX3BvbHlQcm90b1ByaXZhdGVOYW1lOyB9CisgICAgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBp
bnRsTGVnYWN5Q29uc3RydWN0ZWRTeW1ib2woKSBjb25zdCB7IHJldHVybiBtX2ludGxMZWdhY3lD
b25zdHJ1Y3RlZFN5bWJvbDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tQdWJsaWNUb1By
aXZhdGVNYXBDb25zaXN0ZW5jeShVbmlxdWVkU3RyaW5nSW1wbCogcHJpdmF0ZU5hbWUpOwpAQCAt
MjE5LDYgKzIxOSw3IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgSlNDX0ZPUkVBQ0hfQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FU19JTl9KU0MpCiAgICAgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUNMQVJFX0JV
SUxUSU5fTkFNRVNfSU5fSlNDKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1dFTExfS05PV05fU1lNQk9MKERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xTX0lOX0pTQykKKyAg
ICBjb25zdCBKU0M6OklkZW50aWZpZXIgbV9pbnRsTGVnYWN5Q29uc3RydWN0ZWRTeW1ib2w7CiAg
ICAgY29uc3QgSlNDOjpJZGVudGlmaWVyIG1fZG9sbGFyVk1OYW1lOwogICAgIGNvbnN0IEpTQzo6
SWRlbnRpZmllciBtX2RvbGxhclZNUHJpdmF0ZU5hbWU7CiAgICAgY29uc3QgSlNDOjpJZGVudGlm
aWVyIG1fcG9seVByb3RvUHJpdmF0ZU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBhOTk1NGIxMjg5ZGM3ZWY5NmFkZTRi
OGQ2N2Y2MTAyZmMwYzZhYzZlLi5jMjdjNzNlZmU1MjlkYTQ3NzQ0OGZhZmUzNDk0NjIxMDJlYjA5
MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKQEAgLTMzNSw2ICszMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTChuYW1l
KSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1N5bWJvbDsKICAgICAgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCisgICAgICAgIGNv
bnN0IElkZW50aWZpZXIgaW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sOwogCiAjZGVmaW5lIEpT
Q19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwobmFtZSkgY29uc3QgSWRl
bnRpZmllciBuYW1lIyNQcml2YXRlRmllbGQ7CiAgICAgICAgIEpTQ19DT01NT05fSURFTlRJRklF
UlNfRUFDSF9QUklWQVRFX0ZJRUxEKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVM
RF9HTE9CQUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdC5oCmluZGV4IDliNGMwNmM0OWJiZjdjNThmZGY2NWQyYjUxMzU4YTI5OTA0N2Rk
MmMuLjBiZGEyNTk4OTBlZDAzZjMxZWYyZjA1ZGE4MTY1Yzc0MmZmMzUzMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCkBAIC02
Nyw2ICs2Nyw4IEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQo
Vk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKIAorICAgIHN0YXRpYyBJbnRsRGF0ZVRpbWVGb3JtYXQq
IHVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCiBwcml2
YXRlOgogICAgIEludGxEYXRlVGltZUZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAppbmRleCBh
ZjZiZTk1NmUyYTU1MGZhNmRiOWQ3NTIxZWQ0NGRkZGM4YmE0NjMwLi5jOWViZTA1MGM4ZmM1OTA4
NDg0YjY2NTc3YWE2ZGZlNTIxZGQwZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3Bw
CkBAIC03Nyw3ICs3Nyw2IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0UHJvCiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sICJEYXRlVGltZUZvcm1hdCJfcywgTmFtZUFkZGl0aW9uTW9kZTo6V2l0
aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
Ci0gICAgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0xMTEsNyAr
MTEwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxEYXRl
VGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJv
dW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5
IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTM2NzkKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEludGxJbnN0YW5j
ZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPEludGxEYXRlVGltZUZvcm1h
dD4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBjYWxsRnJhbWUtPmpzQ2Fs
bGVlKCksIFsmXSAoVk0mIHZtKSB7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1
Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcihnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIGNhbGxGcmFtZS0+anNDYWxsZWUoKSwg
WyZdIChWTSYgdm0pIHsKICAgICAgICAgLy8gMi4gTGV0IGRhdGVUaW1lRm9ybWF0IGJlIE9yZGlu
YXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJURhdGVUaW1lRm9ybWF0UHJvdG90
eXBlJSkuCiAgICAgICAgIC8vIDMuIFJldHVybklmQWJydXB0KGRhdGVUaW1lRm9ybWF0KS4KICAg
ICAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZv
cm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxODlmYjExMTdlMjMzOTUzOGQwOWYyNzdm
ZjhmYzY4OTRkM2RjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmgKQEAgLTAsMCArMSw0MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0
LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDICB7CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAy
LyNzZWMtdW53cmFwZGF0ZXRpbWVmb3JtYXQKK2lubGluZSBJbnRsRGF0ZVRpbWVGb3JtYXQqIElu
dGxEYXRlVGltZUZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiB1bndyYXBGb3JM
ZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bERhdGVUaW1lRm9ybWF0PihnbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZ2xvYmFsT2JqZWN0LT5kYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKCkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IDhiNzBi
ZjVkZmU2ZWFmMWE4MDg4YTg2ZjMzYTdmMmMwODY1ZTRiZDIuLjc3Y2E5MzA0NzI5YWY1ZGQ0YTA0
OGZmMjY4Yzg3NmE3ODIyNDhlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMjks
NyArMjksNyBAQAogCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiRGF0ZUNv
bnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAi
SW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KQEAg
LTExMSwxOCArMTExLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEpTR2xvYmFsT2JqCiAKICAgICAvLyAxMi4z
LjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAg
ICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KLSAgICBJbnRs
RGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwotCi0gICAgLy8gRklYTUU6IFdvcmthcm91bmQg
dG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0
dGVybnMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MzY3OQotICAgIGlmICghZHRmKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgIGR0ZiA9IGpz
RHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIHZhbHVlKTsKLSAgICB9Ci0KKyAg
ICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IEludGxEYXRlVGltZUZvcm1hdDo6dW53cmFwRm9y
T2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAvLyAyLiBSZXR1cm5JZkFicnVw
dChkdGYpLgotICAgIGlmICghZHRmKQorICAgIGlmIChVTkxJS0VMWSghZHRmKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0Il9zKSk7
CiAKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gZHRmLT5ib3VuZEZvcm1hdCgp
OwpAQCAtMTUwLDggKzE0Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoSlNHbG9iCiAgICAgLy8gMTUu
NCBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIChFQ01BLTQwMiA0
LjApCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cwogCisgICAgLy8gRG8gbm90IHVzZSB1
bndyYXBGb3JPbGRGdW5jdGlvbnMuCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZv
cm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOwotICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCisgICAgaWYgKFVOTElLRUxZ
KCFkYXRlVGltZUZvcm1hdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGlu
aXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CkBAIC0xNzMsOCArMTY2LDkgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFu
Z2UoSlNHbG9iYWwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCisgICAgLy8gRG8gbm90IHVzZSB1bndy
YXBGb3JPbGRGdW5jdGlvbnMuCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1h
dCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwotICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCisgICAgaWYgKFVOTElLRUxZKCFk
YXRlVGltZUZvcm1hdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LmZvcm1hdFJhbmdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIERhdGVUaW1lRm9ybWF0Il9zKSk7CiAKICAgICBKU1ZhbHVlIHN0YXJ0RGF0ZVZh
bHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKQEAgLTE5OSwxNyArMTkzLDEwIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyhKU0dsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCi0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRl
VGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOwogCi0gICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlk
ZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCi0g
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQotICAg
IGlmICghZGF0ZVRpbWVGb3JtYXQpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAgICAgZGF0ZVRp
bWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCB2YWx1ZSk7
Ci0gICAgfQotCi0gICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKKyAgICBJbnRsRGF0ZVRpbWVGb3Jt
YXQqIGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0Ojp1bndyYXBGb3JPbGRGdW5j
dGlvbnMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmIChVTkxJS0VMWSghZGF0ZVRpbWVGb3Jt
YXQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFz
IGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2Jq
ZWN0KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5oCmluZGV4IGNkYTRlZjU5NGRkODUwZGYxZmUzYTAwMjcxMjNiZjM3ODEzMTA2MTYuLjMx
MWJiOTM2OGNjMzhkM2UxNzU3NGNhY2E3N2Q4M2Q0ODRhYzI1NjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTkxLDYgKzkxLDgg
QEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25TdHJpbmcoSW50bE5vdGF0aW9u
KTsKIAorICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0KiB1bndyYXBGb3JPbGRGdW5jdGlvbnMo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9y
bWF0KFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDE3OGNjMGE4YWU1NTU3NDIwMjJjMjQxNWZjYTRj
ZGY5MGQ5OTc5MC4uNDJiOTBkZTY2YWExNWI5NmI3NDU4MDc1MDAxYmNjNWFhYjJkZmExNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC03Nyw3ICs3Nyw2IEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJOdW1iZXJGb3JtYXQiX3Ms
IE5hbWVBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBu
dW1iZXJGb3JtYXRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBudW1iZXJGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhp
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
fQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVt
YmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQpAQCAtMTExLDcgKzExMCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAKICAgICAv
LyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQw
MiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcjxJ
bnRsTnVtYmVyRm9ybWF0PihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIGNh
bGxGcmFtZS0+anNDYWxsZWUoKSwgWyZdIChWTSYgdm0pIHsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENv
bnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgY2FsbEZyYW1l
LT5qc0NhbGxlZSgpLCBbJl0gKFZNJiB2bSkgewogICAgICAgICAvLyAyLiBMZXQgbnVtYmVyRm9y
bWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZv
cm1hdFByb3RvdHlwZSUpLgogICAgICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChudW1iZXJGb3Jt
YXQpLgogICAgICAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVy
Rm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRJbmxpbmVzLmgKaW5kZXggM2VhOGE3YWYxY2QyMzU1MWU3NDAxMTViNDg1MzFkMGY2ZDdk
OGE3YS4uMDhhMmE0ZTQxZTEzN2FhNzhlZmIyNmE2NDMwOTM3OTgwNjIwYzJiNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5s
aW5lcy5oCkBAIC0yNSw4ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnVp
bHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgotI2luY2x1ZGUgIklu
dGxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgIHsKQEAgLTEwNSw0ICsxMDYsMTAgQEAg
Y2xhc3MgSW50bEZpZWxkSXRlcmF0b3IgewogICAgIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3ImIG1f
aXRlcmF0b3I7CiB9OwogCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLXVud3JhcG51
bWJlcmZvcm1hdAoraW5saW5lIEludGxOdW1iZXJGb3JtYXQqIEludGxOdW1iZXJGb3JtYXQ6OnVu
d3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gdW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnVjdG9y
PEludGxOdW1iZXJGb3JtYXQ+KGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBnbG9iYWxPYmplY3Qt
Pm51bWJlckZvcm1hdENvbnN0cnVjdG9yKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHAKaW5kZXggZjg3ZGY2ZWM0NTgzODE5ZmVkYWI1Y2Q0Mjk3NzI1YjNk
ZjA5MjY4MS4uMzU5NzEwYmY3NDUzZmU1Mzg1NzM1NDhkMDNlNTQ2Mzc1MjZmOGI1MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHAKQEAgLTExNCwxOSArMTE0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2Jh
bE9iamVjCiAKICAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1h
dCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJlckZvcm1hdCBv
YmplY3QuCi0gICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1i
ZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Ci0KLSAgICAvLyBGSVhNRTog
V29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2Fs
bC9hcHBseSBwYXR0ZXJucy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzNjc5Ci0gICAgaWYgKCFuZikgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAg
ICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCB2YWx1ZSk7Ci0gICAg
fQotCi0gICAgaWYgKCFuZikKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBuZiA9IEludGxOdW1iZXJG
b3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghbmYpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJl
ckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOwotICAgIAorCiAgICAgSlNC
b3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDIu
IElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCiAgICAgaWYgKCFib3VuZEZvcm1h
dCkgewpAQCAtMTUzLDcgKzE0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsCiAgICAgLy8g
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtaW50bC5udW1iZXJmb3JtYXQucHJv
dG90eXBlLmZvcm1hdHRvcGFydHMKIAogICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1h
dCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKLSAgICBpZiAoIW51bWJlckZvcm1hdCkKKyAgICBpZiAoVU5MSUtFTFkoIW51bWJl
ckZvcm1hdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRU
b1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIE51bWJlckZvcm1hdCJfcykpOwogCiAgICAgZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOwpAQCAtMTY4LDE3ICsxNTksOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5j
UmVzb2x2ZWRPcHRpb25zKEpTR2xvYgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKLSAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1i
ZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7Ci0KLSAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNv
bXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5Ci0gICAgaWYg
KCFudW1iZXJGb3JtYXQpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAgICAgbnVtYmVyRm9ybWF0
ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIHZhbHVlKTsKLSAgICB9CiAK
LSAgICBpZiAoIW51bWJlckZvcm1hdCkKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3Jt
YXQgPSBJbnRsTnVtYmVyRm9ybWF0Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIW51bWJlckZvcm1h
dCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
TnVtYmVyRm9ybWF0Il9zKSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShudW1iZXJGb3JtYXQtPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IGMw
ZjM5YjEzMTIzM2FkMzM5NWU5MDZlMjk0MTUxZDdhNDM5ZDhhODEuLjMwMWJkZDEzZWI2NzAzYTM5
OGRkZTY0ZDRjNDM4NWE0MTEwZTFmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0
ZURhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewog
ICAgIEludGxPYmplY3QqIGludGxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+KG9iamVjdCk7
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGludGxPYmplY3QtPmdsb2JhbE9i
amVjdCh2bSk7Ci0gICAgcmV0dXJuIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVh
dGUodm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0
PEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZGF0ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKKyAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LT5kYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKCk7CiB9CiAKIHN0YXRpYyBKU1Zh
bHVlIGNyZWF0ZURpc3BsYXlOYW1lc0NvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVj
dCkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVOdW1iZXJGb3JtYXRD
b25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgSW50bE9iamVjdCog
aW50bE9iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gaW50bE9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKLSAgICBy
ZXR1cm4gSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJv
dG90eXBlT2JqZWN0KCkpKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5udW1iZXJGb3JtYXRD
b25zdHJ1Y3RvcigpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVQbHVyYWxSdWxlc0NvbnN0
cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCmluZGV4IGE1MzJkMTFhNjNhZTcyMWQ5
YWJiZDUwOGNmNmViMTNkODdjODM5Y2EuLjg0OTYxODkzMTI5NTRlOTlhNTY4NjdhZjU1YTQxZmUw
ODkzNjUyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdElubGluZXMuaApAQCAtNTYsNyArNTYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNh
dGU+IFN0cmluZyBiZXN0QXZhaWxhYmxlTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBQcgog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgSW50bEluc3RhbmNl
LCB0eXBlbmFtZSBDb25zdHJ1Y3RvciwgdHlwZW5hbWUgRmFjdG9yeT4KK3RlbXBsYXRlPHR5cGVu
YW1lIENvbnN0cnVjdG9yLCB0eXBlbmFtZSBGYWN0b3J5PgogSlNWYWx1ZSBjb25zdHJ1Y3RJbnRs
SW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgQ29uc3RydWN0b3IqIGNhbGxl
ZSwgRmFjdG9yeSBmYWN0b3J5KQogewogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3Zp
ZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgpA
QCAtNjQsMjIgKzY0LDQ1IEBAIEpTVmFsdWUgY29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmth
cm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGlmICghanNEeW5hbWljQ2FzdDxJbnRsSW5zdGFuY2UqPih2bSwgdGhpc1Zh
bHVlKSkgewotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwotICAgICAgICBib29sIGhhc0luc3RhbmNl
ID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
cHJvdG90eXBlKTsKKyAgICBhdXRvKiBpbnN0YW5jZSA9IGZhY3Rvcnkodm0pOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisKKyAgICBpZiAodGhpc1ZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlz
VmFsdWUpOworICAgICAgICBib29sIGhhc0luc3RhbmNlID0gY2FsbGVlLT5oYXNJbnN0YW5jZShn
bG9iYWxPYmplY3QsIHRoaXNPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoaGFzSW5zdGFuY2UpIHsKLSAgICAgICAgICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0g
ICAgICAgICAgICBJbnRsSW5zdGFuY2UqIGluc3RhbmNlID0gZmFjdG9yeSh2bSk7Ci0gICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotCi0gICAgICAgICAg
ICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpLCBpbnN0YW5jZSk7CisgICAgICAg
ICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcihpbnN0YW5jZSwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUpOworICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAg
ICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0
aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCgpLCBkZXNjcmlwdG9yLCB0cnVlKTsKICAgICAg
ICAgICAgIHJldHVybiB0aGlzT2JqZWN0OwogICAgICAgICB9CiAgICAgfQotICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgZmFjdG9yeSh2bSkpOworICAgIHJldHVybiBpbnN0YW5jZTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgSW5zdGFuY2VUeXBlPgorSW5zdGFuY2VUeXBlKiB1bndyYXBG
b3JMZWdhY3lJbnRsQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB0aGlzVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcikKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0
Kj4odm0sIHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBpbnN0YW5jZSA9IGpzRHluYW1pY0Nhc3Q8
SW5zdGFuY2VUeXBlKj4odm0sIHRoaXNPYmplY3QpOworICAgIGlmIChMSUtFTFkoaW5zdGFuY2Up
KQorICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisKKyAgICBib29sIGhhc0luc3RhbmNlID0gY29u
c3RydWN0b3ItPmhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBpZiAoIWhhc0luc3RhbmNlKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEpTVmFsdWUgdmFsdWUgPSB0aGlzT2JqZWN0LT5n
ZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsTGVn
YWN5Q29uc3RydWN0ZWRTeW1ib2woKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxJbnN0YW5jZVR5cGUqPih2bSwgdmFsdWUp
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDBmMzQ4MzQ2MDU1MGVi
YTYzZjNiNjhiOGY3ZDZiODQ0MDk4ZjQzMzUuLjJiNDM2NzlhZWE3NWQxNWJmOTEzYTdiMGMyNzI0
ZGVjMTkwMDA2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTc0LDEyICs3NCwxNCBAQAogI2luY2x1ZGUgIkludGxDb2xsYXRv
ci5oIgogI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxE
YXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
SW50bERpc3BsYXlOYW1lcy5oIgogI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZVByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5o
IgpAQCAtOTk4LDEyICsxMDAwLDYgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAg
ICAgIEludGxDb2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5cGUgPSBJbnRsQ29sbGF0
b3JQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxDb2xsYXRvclBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAgICAgICAgICAgaW5pdC5zZXQoSW50bENvbGxh
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBjb2xsYXRvclByb3Rv
dHlwZSkpOwogICAgICAgICB9KTsKLSAgICBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLmluaXRM
YXRlcigKLSAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsK
LSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKTsKLSAgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwotICAgICAgICAgICAgaW5pdC5zZXQoSW50bERhdGVU
aW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZSkpOwotICAgICAgICB9KTsKICAgICBtX2Rpc3BsYXlOYW1lc1N0cnVj
dHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+
JiBpbml0KSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganND
YXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0xMDE2LDEyICsxMDEyLDYgQEAg
Y2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZl
YXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGUq
IGxvY2FsZVByb3RvdHlwZSA9IEludGxMb2NhbGVQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBJ
bnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0
LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiAgICAgICAgICAgICBpbml0LnNl
dChJbnRsTG9jYWxlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBsb2Nh
bGVQcm90b3R5cGUpKTsKICAgICAgICAgfSk7Ci0gICAgbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUu
aW5pdExhdGVyKAotICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5p
dCkgewotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwotICAgICAgICAgICAgSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlID0gSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSkpOwotICAgICAgICAgICAgaW5pdC5zZXQoSW50bE51bWJlckZv
cm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgbnVtYmVyRm9ybWF0
UHJvdG90eXBlKSk7Ci0gICAgICAgIH0pOwogICAgIG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUuaW5p
dExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkg
ewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0ds
b2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpAQCAtMTA1Miw2ICsxMDQyLDIwIEBAIGNhcGl0YWxO
YW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxh
ZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBJbnRsU2VnbWVudHNQcm90b3R5cGUqIHNlZ21l
bnRzUHJvdG90eXBlID0gSW50bFNlZ21lbnRzUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBJbnRsU2VnbWVudHNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZt
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICAg
ICAgICAgIGluaXQuc2V0KEludGxTZWdtZW50czo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGds
b2JhbE9iamVjdCwgc2VnbWVudHNQcm90b3R5cGUpKTsKICAgICAgICAgfSk7CisKKyAgICBtX2Rh
dGVUaW1lRm9ybWF0U3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgW10gKExhenlDbGFzc1N0
cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0UHJvdG90
eXBlKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGluaXQuZ2xv
YmFsLCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZt
LCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm9iamVjdFByb3RvdHlwZSgpKSkpOworICAgICAg
ICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQucHJvdG90eXBlKSk7CisgICAgICAgICAgICBp
bml0LnNldENvbnN0cnVjdG9yKEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUo
aW5pdC52bSwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShp
bml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBq
c0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKj4oaW5pdC5wcm90b3R5cGUpKSk7Cisg
ICAgICAgIH0pOworICAgIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAg
ICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKKyAgICAgICAg
ICAgIGluaXQuc2V0UHJvdG90eXBlKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShp
bml0LnZtLCBpbml0Lmdsb2JhbCwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+b2JqZWN0UHJvdG90eXBl
KCkpKSk7CisgICAgICAgICAgICBpbml0LnNldFN0cnVjdHVyZShJbnRsTnVtYmVyRm9ybWF0Ojpj
cmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQucHJvdG90eXBlKSk7Cisg
ICAgICAgICAgICBpbml0LnNldENvbnN0cnVjdG9yKEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKGluaXQudm0sIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+ZnVuY3Rpb25Qcm90b3R5
cGUoKSksIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKj4oaW5pdC5wcm90b3R5cGUp
KSk7CisgICAgICAgIH0pOworCiAgICAgbV9kZWZhdWx0Q29sbGF0b3IuaW5pdExhdGVyKAogICAg
ICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SW50bENvbGxhdG9yPiYgaW5pdCkgewogICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KGluaXQub3duZXIpOwpAQCAtMTg4MywxNSArMTg4NywxNSBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAK
ICAgICB0aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xsYXRvci52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHRoaXNP
YmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhp
c09iamVjdC0+bV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7Ci0gICAgdGhp
c09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhp
c09iamVjdC0+bV9sb2NhbGVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9wbHVyYWxSdWxlc1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0
LT5tX3JlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlz
T2JqZWN0LT5tX3NlZ21lbnRJdGVyYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX3NlZ21lbnRlclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlz
T2JqZWN0LT5tX3NlZ21lbnRzU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmpl
Y3QtPm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09i
amVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxHZXR0ZXJGdW5jdGlvbik7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsU2V0dGVyRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMzMwZTViMGU2N2Y2
ZGMyNjkxYmVkNGJkMzE0ZjdjM2QzN2UyMzRhNi4uZjA2ZTQxMjI0MDc5MGIzNTYzOTdmYzFiZmI4
Y2ZjOGYzNjk2NWJiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCkBAIC0yOTYsMTUgKzI5NiwxNSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgSW50bENvbGxhdG9yPiBtX2RlZmF1bHRDb2xsYXRvcjsKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVjdHVyZTsK
LSAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kYXRlVGltZUZv
cm1hdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmU+IG1fbG9jYWxlU3RydWN0dXJlOwotICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbHVyYWxSdWxlc1N0cnVjdHVy
ZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9yZWxhdGl2
ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmU+IG1fc2VnbWVudEl0ZXJhdG9yU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3NlZ21lbnRlclN0cnVjdHVyZTsKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9zZWdtZW50c1N0cnVjdHVyZTsK
KyAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKKyAgICBM
YXp5Q2xhc3NTdHJ1Y3R1cmUgbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAKICAgICBXcml0ZUJh
cnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5jdGlvbjsKICAgICBXcml0
ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJGdW5jdGlvbjsKQEAgLTgx
OCw2ICs4MTgsMTEgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBzZWdtZW50ZXJTdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX3NlZ21lbnRlclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHNl
Z21lbnRzU3RydWN0dXJlKCkgeyByZXR1cm4gbV9zZWdtZW50c1N0cnVjdHVyZS5nZXQodGhpcyk7
IH0KIAorICAgIEpTT2JqZWN0KiBkYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKCkgeyByZXR1cm4g
bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKTsgfQorICAgIEpTT2Jq
ZWN0KiBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CisgICAgSlNPYmplY3QqIG51bWJlckZvcm1hdENv
bnN0cnVjdG9yKCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuY29uc3RydWN0b3Io
dGhpcyk7IH0KKyAgICBKU09iamVjdCogbnVtYmVyRm9ybWF0UHJvdG90eXBlKCkgeyByZXR1cm4g
bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CisKICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCByZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjBm
OGVlM2JmNjNlZDUyNDY2ZGQzYWQ1MzVjYzFiZGM3ODI3ZWU2ZS4uNmMzYjllYzk2YWZkNWUxYTlj
N2UwNjIwYjExNjk2ZWRlNmVmZDE0YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wOS0wNCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFsaWduIGxlZ2Fj
eSBJbnRsIGNvbnN0cnVjdG9yIGJlaGF2aW9yIHRvIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE5MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ludGwtbGVnYWN5LWNvbnN0cnVj
dG9ycy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJv
dyk6CisgICAgICAgICh0ZXN0TGVnYWN5Q29uc3RydWN0b3IpOgorCiAyMDIwLTA5LTA0ICBBbGV4
ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBBcnJheS5wcm90
b3R5cGUucHVzaCBzaG91bGQgYWx3YXlzIHBlcmZvcm0gW1tTZXRdXSBpbiBzdHJpY3QgbW9kZQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1sZWdhY3ktY29uc3RydWN0b3JzLmpzIGIv
SlNUZXN0cy9zdHJlc3MvaW50bC1sZWdhY3ktY29uc3RydWN0b3JzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2
ZmU4MTg0MmU4ZDFlNWNhYzk2YzUxOTg5OWVhM2ZmZGE2NmNiZjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxlZ2FjeS1jb25zdHJ1Y3RvcnMuanMKQEAgLTAsMCArMSwx
MDAgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4
cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhm
dW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVu
YygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAg
IGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKK30KKworZnVuY3Rpb24gdGVzdExl
Z2FjeUNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yLCB3cm9uZ09wdGlvbnMpCit7CisgICAgbGV0IHN5
bWJvbCA9IG51bGw7CisgICAgeworICAgICAgICBsZXQgb2JqZWN0ID0gbmV3IGNvbnN0cnVjdG9y
KCk7CisgICAgICAgIGxldCBuZXdPYmplY3QgPSBjb25zdHJ1Y3Rvci5jYWxsKG9iamVjdCk7Cisg
ICAgICAgIHNob3VsZEJlKG9iamVjdCwgbmV3T2JqZWN0KTsKKyAgICAgICAgbGV0IHN5bWJvbHMg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG5ld09iamVjdCk7CisgICAgICAgIHNob3Vs
ZEJlKHN5bWJvbHMubGVuZ3RoLCAxKTsKKyAgICAgICAgc2hvdWxkQmUoc3ltYm9sc1swXS5kZXNj
cmlwdGlvbiwgYEludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbGApOworICAgICAgICBzaG91bGRC
ZShuZXdPYmplY3Rbc3ltYm9sc1swXV0gaW5zdGFuY2VvZiBjb25zdHJ1Y3RvciwgdHJ1ZSk7Cisg
ICAgICAgIHN5bWJvbCA9IHN5bWJvbHNbMF07CisgICAgICAgIGxldCBkZXNjcmlwdG9yID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuZXdPYmplY3QsIHN5bWJvbCk7CisgICAgICAg
IHNob3VsZEJlKGRlc2NyaXB0b3Iud3JpdGFibGUsIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUo
ZGVzY3JpcHRvci5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKGRlc2NyaXB0
b3IuY29uZmlndXJhYmxlLCBmYWxzZSk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IG9iamVj
dCA9IG5ldyBjb25zdHJ1Y3RvcigpOworICAgICAgICBPYmplY3QuZnJlZXplKG9iamVjdCk7Cisg
ICAgICAgIHNob3VsZFRocm93KCgpID0+IGNvbnN0cnVjdG9yLmNhbGwob2JqZWN0KSwgVHlwZUVy
cm9yKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgb2JqZWN0ID0geworICAgICAgICAgICAg
X19wcm90b19fOiBjb25zdHJ1Y3Rvci5wcm90b3R5cGUsCisgICAgICAgICAgICBbc3ltYm9sXTog
bmV3IGNvbnN0cnVjdG9yKCkKKyAgICAgICAgfTsKKyAgICAgICAgc2hvdWxkQmUodHlwZW9mIGNv
bnN0cnVjdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbChvYmplY3QpLCBgb2JqZWN0
YCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9y
LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzLmNhbGwob2JqZWN0KTsKKyAgICAgICAgfSwgVHlwZUVy
cm9yKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgb2JqZWN0ID0geyBfX3Byb3RvX186IGNv
bnN0cnVjdG9yLnByb3RvdHlwZSB9OworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
ICAgICAgICBjb25zdHJ1Y3Rvci5jYWxsKG9iamVjdCwgJ2VuJywgd3JvbmdPcHRpb25zKTsKKyAg
ICAgICAgfSwgUmFuZ2VFcnJvcik7CisgICAgfQorICAgIHsKKyAgICAgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGNvbnN0cnVjdG9yLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHsKKyAgICAgICAgICAg
IHZhbHVlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBmYWxzZTsgfSwKKyAgICAgICAgICAgIHdyaXRh
YmxlOiB0cnVlLAorICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAorICAgICAgICAgICAg
ZW51bWVyYWJsZTogdHJ1ZSwKKyAgICAgICAgfSk7CisgICAgICAgIGxldCBvYmplY3QgPSBuZXcg
Y29uc3RydWN0b3IoKTsKKyAgICAgICAgbGV0IG5ld09iamVjdCA9IGNvbnN0cnVjdG9yLmNhbGwo
b2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUob2JqZWN0ICE9PSBuZXdPYmplY3QsIHRydWUpOwor
ICAgIH0KKyAgICB7CisgICAgICAgIGxldCBvYmplY3QgPSB7CisgICAgICAgICAgICBbc3ltYm9s
XTogbmV3IGNvbnN0cnVjdG9yKCkKKyAgICAgICAgfTsKKyAgICAgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGNvbnN0cnVjdG9yLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHsKKyAgICAgICAgICAgIHZh
bHVlOiBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9LAorICAgICAgICAgICAgd3JpdGFibGU6
IHRydWUsCisgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAgICAgICAgICBlbnVt
ZXJhYmxlOiB0cnVlLAorICAgICAgICB9KTsKKyAgICAgICAgc2hvdWxkQmUodHlwZW9mIGNvbnN0
cnVjdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbChvYmplY3QpLCBgb2JqZWN0YCk7
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yLnBy
b3RvdHlwZS5mb3JtYXRUb1BhcnRzLmNhbGwob2JqZWN0KTsKKyAgICAgICAgfSwgVHlwZUVycm9y
KTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgb2JqZWN0ID0geyBfX3Byb3RvX186IGNvbnN0
cnVjdG9yLnByb3RvdHlwZSB9OworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29uc3Ry
dWN0b3IsIFN5bWJvbC5oYXNJbnN0YW5jZSwgeworICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9u
ICgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigpOyB9LAorICAgICAgICAgICAgd3JpdGFibGU6IHRy
dWUsCisgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAgICAgICAgICBlbnVtZXJh
YmxlOiB0cnVlLAorICAgICAgICB9KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAg
ICAgICAgICAgY29uc3RydWN0b3IuY2FsbChvYmplY3QsICdlbicsIHdyb25nT3B0aW9ucyk7Cisg
ICAgICAgIH0sIFJhbmdlRXJyb3IpOworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
ICAgICAgICBjb25zdHJ1Y3Rvci5jYWxsKG9iamVjdCwgJ2VuJyk7CisgICAgICAgIH0sIFR5cGVF
cnJvcik7CisgICAgfQorfQorCit0ZXN0TGVnYWN5Q29uc3RydWN0b3IoSW50bC5OdW1iZXJGb3Jt
YXQsIHsgc3R5bGU6ICJ3cm9uZyIgfSk7Cit0ZXN0TGVnYWN5Q29uc3RydWN0b3IoSW50bC5EYXRl
VGltZUZvcm1hdCwgeyB0aW1lU3R5bGU6ICJ3cm9uZyIgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408042</attachid>
            <date>2020-09-04 16:33:20 -0700</date>
            <delta_ts>2020-09-04 17:58:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216193-20200904163319.patch</filename>
            <type>text/plain</type>
            <size>45673</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NzhjOWY4NDVmMTdiYjM5MTc0NjAxZDc4OTY4MWJmMGFmYjYxNTgwLi4zYjcxOWJhOTc4NjQ5MmE4
OTliNGQyMDk3NWM1NmZhMTNjZjA5NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAyMC0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFsaWduIGxlZ2FjeSBJbnRsIGNvbnN0cnVjdG9yIGJlaGF2aW9y
IHRvIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNjE5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExlZ2FjeSBJbnRsIGNvbnN0cnVjdG9ycyAoSW50bC5EYXRlVGltZUZvcm1hdCBhbmQgSW50bC5O
dW1iZXJGb3JtYXQpIGhhdmUgc3BlY2lhbCBoYW5kbGluZyB3aGVuIGl0IGlzIGNhbGxlZCB2aWEg
YEludGwuRGF0ZVRpbWVGb3JtYXQoKWAgZm9ybS4KKyAgICAgICAgVGhpcyBhbGxvd2VkIGxlZ2Fj
eSBJbnRsIGNvbnN0cnVjdG9ycyB0byBiZSB1c2VkIHdpdGggcHJvdG90eXBlLWJhc2VkIGluaGVy
aXRhbmNlIHdpdGhvdXQgdXNpbmcgY2xhc3Mgc3ludGF4LiBUaGlzIGxlZ2FjeSBiZWhhdmlvciBp
cyBsYXRlciBzcGVjaWZpZWQKKyAgICAgICAgZXhwbGljaXRseSBpbiB0aGUgc3BlYy4gU28gd2Ug
c2hvdWxkIGFsaWduIG91ciBpbXBsZW1lbnRhdGlvbiB0byB0aGUgc3BlYydzIG9uZS4KKworICAg
ICAgICAgICAgMS4gV2hlbiBkZWZpbmluZyBmYWxsYmFjayBmb3JtYXRzLCB3ZSBuZWVkIHRvIHB1
dCB0aGVtIGludG8gdGhlIHByb3BlcnR5IHdoaWNoIGlzIHZpc2libGUgdmlhIFN5bWJvbCgiSW50
bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sIikuCisgICAgICAgICAgICAyLiBFdmVuIGlmIHRoZSBw
cm92aWRlZCB0aGlzVmFsdWUgaXMgSW50bERhdGVUaW1lRm9ybWF0KiAvIEludGxOdW1iZXJGb3Jt
YXQqLCB3ZSBzaG91bGQgY3JlYXRlIGFub3RoZXIgaW5zdGFuY2UgYW5kIHB1dCBpdCB0byBTeW1i
b2woIkludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCIpIGZpZWxkLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlu
cy9CdWlsdGluTmFtZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5O
YW1lcyk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgIChKU0M6
OkJ1aWx0aW5OYW1lczo6aW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxEYXRlVGltZUZvcm1h
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9u
cyk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0
cyk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRS
YW5nZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNv
bHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OmNhbGxJbnRsTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVu
d3JhcEZvck9sZEZ1bmN0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5j
Rm9ybWF0VG9QYXJ0cyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpjcmVhdGVEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6Y3JlYXRlTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bEluc3RhbmNl
V2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjp1
bndyYXBGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpkYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51
bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51
bWJlckZvcm1hdFByb3RvdHlwZSk6CisKIDIwMjAtMDktMDQgIEFsZXhleSBTaHZheWthICA8c2h2
YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoIHNob3Vs
ZCBhbHdheXMgcGVyZm9ybSBbW1NldF1dIGluIHN0cmljdCBtb2RlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDM2MTBjMmEyYWY3MTEyNmI5ZjliOTQ5YTQ3MjMwYTY0YzA4MDViNGIu
LjRmNzRkODk5NTZlZTg0MjJiMjU3ZWNlMGM5YjBlMzI0YzcyODA5ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xODQ5LDYgKzE4NDksNyBAQAogCQlFMzZCNzY3MDIyRjhENjE5
MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdh
c21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2
RURDRTUyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyog
Q29uY3VycmVuY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFMzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3
NTBDQzcyNTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLzsg
fTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2FzbUds
b2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4
MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKIAkJRTM4NTBCMTUy
MjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMg
LyogREZHTWluaWZpZWRJRElubGluZXMuaCAqLzsgfTsKQEAgLTUwNDksNiArNTA1MCw3IEBACiAJ
CUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyog
Q29uY3VycmVuY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVu
Y3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3NTBDQzcyNTAyRTg3RTAwNkEw
QUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQz
QUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3Q0ZCMkQy
MkYyN0M1NzAwOUE3QjM4IC8qIFdhc21Db21waWxhdGlvbk1vZGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2FzbUNvbXBpbGF0aW9uTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03MzE4LDYgKzczMjAsNyBAQAogCQkJCUExNTg3RDY4MUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXQuaCAqLywKIAkJCQlBMTU4N0Q2OTFCNERDMTQxMDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAogCQkJCUExNTg3RDZBMUI0REMx
NDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUz
NzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggKi8s
CiAJCQkJQTE1ODdENkIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5jcHAgKi8sCiAJCQkJQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUUzNTNDMTE2MjRBQTRDQjUwMDNGQkRGMyAvKiBJ
bnRsRGlzcGxheU5hbWVzLmNwcCAqLywKQEAgLTk4MjksNiArOTgzMiw3IEBACiAJCQkJQTE1ODdE
NkUxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q3NTFCNERDMUM2MDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlF
Mzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzYxQjREQzFDNjAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzNTNDMTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5jcHAKaW5kZXggYTY4OGU1NWVlNmE2YmFhMzJlMTkxZTc0YzEwZDEyZTM5N2E2NTU3Ny4u
MmEwODg3ZTczZTU3MWYwMDhlODg0ZGIzNDMwNDg2ZDM0MjAwNzIyMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKQEAgLTQxLDYgKzQxLDgg
QEAgbmFtZXNwYWNlIFN5bWJvbHMgewogSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKQog
I3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUwogCitTeW1ib2xJbXBsOjpT
dGF0aWNTeW1ib2xJbXBsIGludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCB7ICJJbnRsTGVnYWN5
Q29uc3RydWN0ZWRTeW1ib2wiIH07CisKICNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1BSSVZB
VEVfTkFNRVMobmFtZSkgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCBuYW1lIyNQcml2YXRl
TmFtZSB7ICNuYW1lLCBTeW1ib2xJbXBsOjpzX2ZsYWdJc1ByaXZhdGUgfTsKIEpTQ19GT1JFQUNI
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fUFJJVkFURV9OQU1FUykK
IEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElB
TElaRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMpCkBAIC03Niw2ICs3OCw3IEBAIEJ1aWx0aW5OYW1l
czo6QnVpbHRpbk5hbWVzKFZNJiB2bSwgQ29tbW9uSWRlbnRpZmllcnMqIGNvbW1vbklkZW50aWZp
ZXJzKQogICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JV
SUxUSU5fTkFNRVNfSU5fSlNDKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTX0lOX0pTQykKICAgICBK
U0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklU
SUFMSVpFX0JVSUxUSU5fU1lNQk9MU19JTl9KU0MpCisgICAgLCBtX2ludGxMZWdhY3lDb25zdHJ1
Y3RlZFN5bWJvbChKU0M6OklkZW50aWZpZXI6OmZyb21VaWQodm0sICZzdGF0aWNfY2FzdDxTeW1i
b2xJbXBsJj4oU3ltYm9sczo6aW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sKSkpCiAgICAgLCBt
X2RvbGxhclZNTmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJHZtIikpCiAgICAgLCBt
X2RvbGxhclZNUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgJnN0YXRpY19jYXN0
PFN5bWJvbEltcGwmPihTeW1ib2xzOjpkb2xsYXJWTVByaXZhdGVOYW1lKSkpCiAgICAgLCBtX3Bv
bHlQcm90b1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQodm0sICZzdGF0aWNfY2FzdDxT
eW1ib2xJbXBsJj4oU3ltYm9sczo6cG9seVByb3RvUHJpdmF0ZU5hbWUpKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA3YjE4MGM3MDA0OTQ4
ODFlYmFlYzIzZThmNDJlYjA3ODBiMDY1YjQ1Li4yYjVmOTAyODIwZWJlYjgxZDYyN2ZjMTZmYWVk
N2Q5NDE3MWY1ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCkBAIC0xMTEsNyArMTExLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8o
bmV4dE1ldGhvZCkgXAogICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCkgXAog
ICAgIG1hY3JvKGRhdGVUaW1lRm9ybWF0KSBcCi0gICAgbWFjcm8oaW50bFN1YnN0aXR1dGVWYWx1
ZSkgXAogICAgIG1hY3JvKHRoaXMpIFwKICAgICBtYWNybyh0aGlzVGltZVZhbHVlKSBcCiAgICAg
bWFjcm8obmV3VGFyZ2V0TG9jYWwpIFwKQEAgLTIxMSw2ICsyMTAsNyBAQCBjbGFzcyBCdWlsdGlu
TmFtZXMgewogICAgIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgZG9sbGFyVk1QdWJsaWNOYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9kb2xsYXJWTU5hbWU7IH0KICAgICBjb25zdCBKU0M6OklkZW50aWZp
ZXImIGRvbGxhclZNUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2RvbGxhclZNUHJpdmF0
ZU5hbWU7IH0KICAgICBjb25zdCBKU0M6OklkZW50aWZpZXImIHBvbHlQcm90b05hbWUoKSBjb25z
dCB7IHJldHVybiBtX3BvbHlQcm90b1ByaXZhdGVOYW1lOyB9CisgICAgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBpbnRsTGVnYWN5Q29uc3RydWN0ZWRTeW1ib2woKSBjb25zdCB7IHJldHVybiBtX2lu
dGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tQ
dWJsaWNUb1ByaXZhdGVNYXBDb25zaXN0ZW5jeShVbmlxdWVkU3RyaW5nSW1wbCogcHJpdmF0ZU5h
bWUpOwpAQCAtMjE5LDYgKzIxOSw3IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FU19JTl9KU0Mp
CiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShE
RUNMQVJFX0JVSUxUSU5fTkFNRVNfSU5fSlNDKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVO
VElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xTX0lO
X0pTQykKKyAgICBjb25zdCBKU0M6OklkZW50aWZpZXIgbV9pbnRsTGVnYWN5Q29uc3RydWN0ZWRT
eW1ib2w7CiAgICAgY29uc3QgSlNDOjpJZGVudGlmaWVyIG1fZG9sbGFyVk1OYW1lOwogICAgIGNv
bnN0IEpTQzo6SWRlbnRpZmllciBtX2RvbGxhclZNUHJpdmF0ZU5hbWU7CiAgICAgY29uc3QgSlND
OjpJZGVudGlmaWVyIG1fcG9seVByb3RvUHJpdmF0ZU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBhOTk1NGIxMjg5ZGM3
ZWY5NmFkZTRiOGQ2N2Y2MTAyZmMwYzZhYzZlLi5jMjdjNzNlZmU1MjlkYTQ3NzQ0OGZhZmUzNDk0
NjIxMDJlYjA5MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKQEAgLTMzNSw2ICszMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNk
ZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dM
T0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1N5bWJvbDsKICAgICAgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKICN1bmRlZiBK
U0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIgaW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sOwogCiAj
ZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwobmFtZSkg
Y29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlRmllbGQ7CiAgICAgICAgIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJ
VkFURV9GSUVMRF9HTE9CQUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IDliNGMwNmM0OWJiZjdjNThmZGY2NWQyYjUxMzU4
YTI5OTA0N2RkMmMuLjBiZGEyNTk4OTBlZDAzZjMxZWYyZjA1ZGE4MTY1Yzc0MmZmMzUzMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCkBAIC02Nyw2ICs2Nyw4IEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0
KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91
bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKIAorICAgIHN0YXRpYyBJbnRsRGF0ZVRp
bWVGb3JtYXQqIHVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCiBwcml2YXRlOgogICAgIEludGxEYXRlVGltZUZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNw
cAppbmRleCBhZjZiZTk1NmUyYTU1MGZhNmRiOWQ3NTIxZWQ0NGRkZGM4YmE0NjMwLi5jOWViZTA1
MGM4ZmM1OTA4NDg0YjY2NTc3YWE2ZGZlNTIxZGQwZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCkBAIC03Nyw3ICs3Nyw2IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0UHJvCiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJEYXRlVGltZUZvcm1hdCJfcywgTmFtZUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGRhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7Ci0gICAgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBA
IC0xMTEsNyArMTEwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEludGxEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIC8vIEZJWE1F
OiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBj
YWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTM2NzkKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdElu
dGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPEludGxEYXRl
VGltZUZvcm1hdD4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBjYWxsRnJh
bWUtPmpzQ2FsbGVlKCksIFsmXSAoVk0mIHZtKSB7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1
Y3RvcihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIGNhbGxGcmFtZS0+anND
YWxsZWUoKSwgWyZdIChWTSYgdm0pIHsKICAgICAgICAgLy8gMi4gTGV0IGRhdGVUaW1lRm9ybWF0
IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJURhdGVUaW1lRm9y
bWF0UHJvdG90eXBlJSkuCiAgICAgICAgIC8vIDMuIFJldHVybklmQWJydXB0KGRhdGVUaW1lRm9y
bWF0KS4KICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxE
YXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3Ry
dWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxODlmYjExMTdlMjMzOTUz
OGQwOWYyNzdmZjhmYzY4OTRkM2RjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmgKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiSW50bERhdGVU
aW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDICB7CisKKy8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hNDAyLyNzZWMtdW53cmFwZGF0ZXRpbWVmb3JtYXQKK2lubGluZSBJbnRsRGF0ZVRpbWVG
b3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiB1
bndyYXBGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bERhdGVUaW1lRm9ybWF0PihnbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZ2xvYmFsT2JqZWN0LT5kYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmlu
ZGV4IDhiNzBiZjVkZmU2ZWFmMWE4MDg4YTg2ZjMzYTdmMmMwODY1ZTRiZDIuLjc3Y2E5MzA0NzI5
YWY1ZGQ0YTA0OGZmMjY4Yzg3NmE3ODIyNDhlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVk
ZSAiRGF0ZUNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisj
aW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KQEAgLTExMSwxOCArMTExLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEpTR2xvYmFsT2JqCiAKICAg
ICAvLyAxMi4zLjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQw
MiAyLjApCiAgICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4K
LSAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwotCi0gICAgLy8gRklYTUU6IFdv
cmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwv
YXBwbHkgcGF0dGVybnMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MzY3OQotICAgIGlmICghZHRmKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAg
IGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIHZhbHVlKTsKLSAg
ICB9Ci0KKyAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IEludGxEYXRlVGltZUZvcm1hdDo6
dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAvLyAyLiBSZXR1
cm5JZkFicnVwdChkdGYpLgotICAgIGlmICghZHRmKQorICAgIGlmIChVTkxJS0VMWSghZHRmKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9y
bWF0Il9zKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gZHRmLT5ib3Vu
ZEZvcm1hdCgpOwpAQCAtMTUwLDggKzE0Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoSlNHbG9iCiAg
ICAgLy8gMTUuNCBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIChF
Q01BLTQwMiA0LjApCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMt
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cwogCisgICAgLy8gRG8g
bm90IHVzZSB1bndyYXBGb3JPbGRGdW5jdGlvbnMuCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBk
YXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwotICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCisgICAgaWYg
KFVOTElLRUxZKCFkYXRlVGltZUZvcm1hdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4g
b2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIEpTVmFs
dWUgZGF0ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CkBAIC0xNzMsOCArMTY2LDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5j
Rm9ybWF0UmFuZ2UoSlNHbG9iYWwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCisgICAgLy8gRG8gbm90
IHVzZSB1bndyYXBGb3JPbGRGdW5jdGlvbnMuCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRl
VGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOwotICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCisgICAgaWYgKFVO
TElLRUxZKCFkYXRlVGltZUZvcm1hdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQu
cHJvdG90eXBlLmZvcm1hdFJhbmdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0Il9zKSk7CiAKICAgICBKU1ZhbHVlIHN0
YXJ0RGF0ZVZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKQEAgLTE5OSwxNyArMTkzLDEw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCi0gICAgSW50bERhdGVUaW1lRm9y
bWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCi0gICAgLy8gRklYTUU6IFdvcmthcm91bmQg
dG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0
dGVybnMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MzY3OQotICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICAg
ICAgZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZt
LCB2YWx1ZSk7Ci0gICAgfQotCi0gICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKKyAgICBJbnRsRGF0
ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0Ojp1bndyYXBG
b3JPbGRGdW5jdGlvbnMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmIChVTkxJS0VMWSghZGF0
ZVRpbWVGb3JtYXQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMo
Z2xvYmFsT2JqZWN0KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5oCmluZGV4IGNkYTRlZjU5NGRkODUwZGYxZmUzYTAwMjcxMjNiZjM3ODEz
MTA2MTYuLjMxMWJiOTM2OGNjMzhkM2UxNzU3NGNhY2E3N2Q4M2Q0ODRhYzI1NjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTkx
LDYgKzkxLDggQEAgY2xhc3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKIAogICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25TdHJpbmcoSW50
bE5vdGF0aW9uKTsKIAorICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0KiB1bndyYXBGb3JPbGRG
dW5jdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBJbnRs
TnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDE3OGNjMGE4YWU1NTU3NDIwMjJj
MjQxNWZjYTRjZGY5MGQ5OTc5MC4uNDJiOTBkZTY2YWExNWI5NmI3NDU4MDc1MDAxYmNjNWFhYjJk
ZmExNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC03Nyw3ICs3Nyw2IEBAIHZvaWQg
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxO
dW1iZXJGb3JtYXRQcm90b3R5CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJOdW1iZXJG
b3JtYXQiX3MsIE5hbWVBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBudW1iZXJGb3JtYXRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBudW1iZXJGb3JtYXRQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RJbnRsTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQpAQCAtMTExLDcgKzExMCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxJbnRsTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
CiAKICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0
aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25z
dHJ1Y3RvcjxJbnRsTnVtYmVyRm9ybWF0PihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCksIGNhbGxGcmFtZS0+anNDYWxsZWUoKSwgWyZdIChWTSYgdm0pIHsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVn
YWN5SW50bENvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwg
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpLCBbJl0gKFZNJiB2bSkgewogICAgICAgICAvLyAyLiBMZXQg
bnVtYmVyRm9ybWF0IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwg
JU51bWJlckZvcm1hdFByb3RvdHlwZSUpLgogICAgICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChu
dW1iZXJGb3JtYXQpLgogICAgICAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBJ
bnRsTnVtYmVyRm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0U3Ry
dWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKaW5kZXggM2VhOGE3YWYxY2QyMzU1MWU3NDAxMTViNDg1
MzFkMGY2ZDdkOGE3YS4uMDhhMmE0ZTQxZTEzN2FhNzhlZmIyNmE2NDMwOTM3OTgwNjIwYzJiNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0SW5saW5lcy5oCkBAIC0yNSw4ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgotI2lu
Y2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgIHsKQEAgLTEwNSw0ICsx
MDYsMTAgQEAgY2xhc3MgSW50bEZpZWxkSXRlcmF0b3IgewogICAgIFVGaWVsZFBvc2l0aW9uSXRl
cmF0b3ImIG1faXRlcmF0b3I7CiB9OwogCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LXVud3JhcG51bWJlcmZvcm1hdAoraW5saW5lIEludGxOdW1iZXJGb3JtYXQqIEludGxOdW1iZXJG
b3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4gdW53cmFwRm9yTGVnYWN5SW50bENv
bnN0cnVjdG9yPEludGxOdW1iZXJGb3JtYXQ+KGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBnbG9i
YWxPYmplY3QtPm51bWJlckZvcm1hdENvbnN0cnVjdG9yKCkpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggZjg3ZGY2ZWM0NTgzODE5ZmVkYWI1Y2Q0
Mjk3NzI1YjNkZjA5MjY4MS4uODA1NWFjOTJlYWU1M2VkNWViYmRhZThmZTNhM2IzZmMxNWI4ZTc2
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKQEAgLTExNCwxOSArMTE0LDEwIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1h
dChKU0dsb2JhbE9iamVjCiAKICAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90
eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJl
ckZvcm1hdCBvYmplY3QuCi0gICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0
PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Ci0KLSAgICAv
LyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQw
MiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5Ci0gICAgaWYgKCFuZikgewotICAgICAgICBKU1ZhbHVl
IHZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUo
KSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgICAgICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCB2YWx1
ZSk7Ci0gICAgfQotCi0gICAgaWYgKCFuZikKKyAgICBJbnRsTnVtYmVyRm9ybWF0KiBuZiA9IElu
dGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghbmYpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJ
bnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCJfcykpOwotICAgIAor
CiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgpOwog
ICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCiAgICAgaWYgKCFi
b3VuZEZvcm1hdCkgewpAQCAtMTUyLDggKzE0Myw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFs
CiAgICAgLy8gSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgKEVDTUEt
NDAyKQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwubnVt
YmVyZm9ybWF0LnByb3RvdHlwZS5mb3JtYXR0b3BhcnRzCiAKKyAgICAvLyBEbyBub3QgdXNlIHVu
d3JhcEZvck9sZEZ1bmN0aW9ucy4KICAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQg
PSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7Ci0gICAgaWYgKCFudW1iZXJGb3JtYXQpCisgICAgaWYgKFVOTElLRUxZKCFudW1iZXJG
b3JtYXQpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9Q
YXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMg
YSBOdW1iZXJGb3JtYXQiX3MpKTsKIAogICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKQEAgLTE2OCwxNyArMTYwLDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jl
c29sdmVkT3B0aW9ucyhKU0dsb2IKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICAvLyAxMS4zLjUgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCi0gICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVy
Rm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOwotCi0gICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21w
YXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCi0gICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQotICAgIGlmICgh
bnVtYmVyRm9ybWF0KSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKLSAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAgIG51bWJlckZvcm1hdCA9
IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCB2YWx1ZSk7Ci0gICAgfQogCi0g
ICAgaWYgKCFudW1iZXJGb3JtYXQpCisgICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0
ID0gSW50bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51
bWJlckZvcm1hdCJfcykpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCBjMGYz
OWIxMzEyMzNhZDMzOTVlOTA2ZTI5NDE1MWQ3YTQzOWQ4YTgxLi4zMDFiZGQxM2ViNjcwM2EzOThk
ZGU2NGQ0YzQzODVhNDExMGUxZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcApAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAg
ICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOwog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnRsT2JqZWN0LT5nbG9iYWxPYmpl
Y3Qodm0pOwotICAgIHJldHVybiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0
U3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CisgICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC0+ZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcigpOwogfQogCiBzdGF0aWMgSlNWYWx1
ZSBjcmVhdGVEaXNwbGF5TmFtZXNDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3Qp
CkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIEludGxPYmplY3QqIGlu
dGxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+KG9iamVjdCk7CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGludGxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgcmV0
dXJuIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZSo+KGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFByb3Rv
dHlwZU9iamVjdCgpKSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IoKTsKIH0KIAogc3RhdGljIEpTVmFsdWUgY3JlYXRlUGx1cmFsUnVsZXNDb25zdHJ1
Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRleCBhNTMyZDExYTYzYWU3MjFkOWFi
YmQ1MDhjZjZlYjEzZDg3YzgzOWNhLi5lOGUzZjkxMGIwOGYxNGNmOTNkOTdmNjE2MmQyY2JiNGEw
NzBkNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5o
IgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgogCkBAIC01
Niw3ICs1Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4gU3RyaW5nIGJlc3RBdmFp
bGFibGVMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUsIFByCiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBJbnRsSW5zdGFuY2UsIHR5cGVuYW1lIENvbnN0cnVj
dG9yLCB0eXBlbmFtZSBGYWN0b3J5PgordGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0b3IsIHR5
cGVuYW1lIEZhY3Rvcnk+CiBKU1ZhbHVlIGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJv
dW5kRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdGhpc1ZhbHVlLCBDb25zdHJ1Y3RvciogY2FsbGVlLCBGYWN0b3J5IGZhY3Rvcnkp
CiB7CiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdp
dGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCkBAIC02NCwyMiArNjUsNTEgQEAg
SlNWYWx1ZSBjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxD
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamUKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKCFq
c0R5bmFtaWNDYXN0PEludGxJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpKSB7Ci0gICAgICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gY2FsbGVlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSk7Ci0gICAgICAgIGJvb2wgaGFzSW5zdGFuY2UgPSBKU09iamVjdDo6ZGVmYXVs
dEhhc0luc3RhbmNlKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBwcm90b3R5cGUpOworICAgIGF1
dG8qIGluc3RhbmNlID0gZmFjdG9yeSh2bSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNWYWx1ZSgpKTsKKworICAgIGlmICh0aGlzVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CisgICAgICAgIEFT
U0VSVCghY2FsbGVlLT50ZW1wbGF0ZSBpbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSk7Cisg
ICAgICAgIEpTVmFsdWUgcHJvdG90eXBlID0gY2FsbGVlLT5nZXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSk7IC8vIFBhc3NlZCBjb25zdHJ1Y3RvcnMgYWx3YXlzIGhhdmUg
YHByb3RvdHlwZWAgd2hpY2ggY2Fubm90IGJlIGRlbGV0ZWQuCisgICAgICAgIEFTU0VSVChwcm90
b3R5cGUpOworICAgICAgICBib29sIGhhc0luc3RhbmNlID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJ
bnN0YW5jZShnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QsIHByb3RvdHlwZSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChoYXNJbnN0
YW5jZSkgewotICAgICAgICAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWUoKSk7Ci0KLSAgICAgICAgICAgIEludGxJbnN0YW5jZSogaW5zdGFuY2UgPSBm
YWN0b3J5KHZtKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWUoKSk7Ci0KLSAgICAgICAgICAgIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCks
IGluc3RhbmNlKTsKKyAgICAgICAgICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yKGlu
c3RhbmNlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CisgICAgICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7CisgICAgICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSkt
PmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sKCksIGRlc2Ny
aXB0b3IsIHRydWUpOwogICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Q7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBmYWN0b3J5KHZtKSk7CisgICAg
cmV0dXJuIGluc3RhbmNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnN0YW5jZVR5cGU+CitJ
bnN0YW5jZVR5cGUqIHVud3JhcEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNPYmplY3QqIGNvbnN0cnVjdG9y
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFko
IXRoaXNPYmplY3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIGluc3Rh
bmNlID0ganNEeW5hbWljQ2FzdDxJbnN0YW5jZVR5cGUqPih2bSwgdGhpc09iamVjdCk7CisgICAg
aWYgKExJS0VMWShpbnN0YW5jZSkpCisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKworICAgIEFT
U0VSVCghY29uc3RydWN0b3ItPnRlbXBsYXRlIGluaGVyaXRzPEpTQm91bmRGdW5jdGlvbj4odm0p
KTsKKyAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNvbnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7IC8vIFBhc3NlZCBjb25zdHJ1Y3RvcnMgYWx3YXlz
IGhhdmUgYHByb3RvdHlwZWAgd2hpY2ggY2Fubm90IGJlIGRlbGV0ZWQuCisgICAgQVNTRVJUKHBy
b3RvdHlwZSk7CisgICAgYm9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5z
dGFuY2UoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIGlmICghaGFzSW5zdGFuY2UpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IHRoaXNPYmplY3QtPmdl
dChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxMZWdh
Y3lDb25zdHJ1Y3RlZFN5bWJvbCgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBu
dWxscHRyKTsKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxJbnN0YW5jZVR5cGUqPih2bSwgdmFs
dWUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDBmMzQ4MzQ2MDU1
MGViYTYzZjNiNjhiOGY3ZDZiODQ0MDk4ZjQzMzUuLjJiNDM2NzlhZWE3NWQxNWJmOTEzYTdiMGMy
NzI0ZGVjMTkwMDA2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKQEAgLTc0LDEyICs3NCwxNCBAQAogI2luY2x1ZGUgIkludGxDb2xs
YXRvci5oIgogI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIklu
dGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiSW50bERpc3BsYXlOYW1lcy5oIgogI2luY2x1ZGUgIkludGxEaXNwbGF5TmFtZXNQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCiAjaW5jbHVkZSAiSW50bExvY2FsZVByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxl
cy5oIgpAQCAtOTk4LDEyICsxMDAwLDYgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAg
ICAgICAgIEludGxDb2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5cGUgPSBJbnRsQ29s
bGF0b3JQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxDb2xsYXRv
clByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAgICAgICAgICAgaW5pdC5zZXQoSW50bENv
bGxhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBjb2xsYXRvclBy
b3RvdHlwZSkpOwogICAgICAgICB9KTsKLSAgICBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLmlu
aXRMYXRlcigKLSAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQp
IHsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKLSAgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwotICAgICAgICAgICAgaW5pdC5zZXQoSW50bERh
dGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkYXRl
VGltZUZvcm1hdFByb3RvdHlwZSkpOwotICAgICAgICB9KTsKICAgICBtX2Rpc3BsYXlOYW1lc1N0
cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1
cmU+JiBpbml0KSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0xMDE2LDEyICsxMDEyLDYg
QEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9
IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5
cGUqIGxvY2FsZVByb3RvdHlwZSA9IEludGxMb2NhbGVQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZt
LCBJbnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiAgICAgICAgICAgICBpbml0
LnNldChJbnRsTG9jYWxlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBs
b2NhbGVQcm90b3R5cGUpKTsKICAgICAgICAgfSk7Ci0gICAgbV9udW1iZXJGb3JtYXRTdHJ1Y3R1
cmUuaW5pdExhdGVyKAotICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYg
aW5pdCkgewotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwotICAgICAgICAgICAgSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlID0gSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwotICAgICAgICAgICAgaW5pdC5zZXQoSW50bE51bWJl
ckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgbnVtYmVyRm9y
bWF0UHJvdG90eXBlKSk7Ci0gICAgICAgIH0pOwogICAgIG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUu
aW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5p
dCkgewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpAQCAtMTA1Miw2ICsxMDQyLDIwIEBAIGNhcGl0
YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJl
RmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBJbnRsU2VnbWVudHNQcm90b3R5cGUqIHNl
Z21lbnRzUHJvdG90eXBlID0gSW50bFNlZ21lbnRzUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBJbnRsU2VnbWVudHNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0
LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKICAg
ICAgICAgICAgIGluaXQuc2V0KEludGxTZWdtZW50czo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGdsb2JhbE9iamVjdCwgc2VnbWVudHNQcm90b3R5cGUpKTsKICAgICAgICAgfSk7CisKKyAgICBt
X2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgW10gKExhenlDbGFz
c1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0UHJv
dG90eXBlKEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGluaXQu
Z2xvYmFsLCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0
LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm9iamVjdFByb3RvdHlwZSgpKSkpOworICAg
ICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQucHJvdG90eXBlKSk7CisgICAgICAgICAg
ICBpbml0LnNldENvbnN0cnVjdG9yKEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVh
dGUoaW5pdC52bSwgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPmZ1bmN0aW9uUHJvdG90eXBlKCkp
LCBqc0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKj4oaW5pdC5wcm90b3R5cGUpKSk7
CisgICAgICAgIH0pOworICAgIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmluaXRMYXRlcigKKyAg
ICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKKyAgICAg
ICAgICAgIGluaXQuc2V0UHJvdG90eXBlKEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0
ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+b2JqZWN0UHJvdG90
eXBlKCkpKSk7CisgICAgICAgICAgICBpbml0LnNldFN0cnVjdHVyZShJbnRsTnVtYmVyRm9ybWF0
OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQucHJvdG90eXBlKSk7
CisgICAgICAgICAgICBpbml0LnNldENvbnN0cnVjdG9yKEludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+ZnVuY3Rpb25Qcm90
b3R5cGUoKSksIGpzQ2FzdDxJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKj4oaW5pdC5wcm90b3R5
cGUpKSk7CisgICAgICAgIH0pOworCiAgICAgbV9kZWZhdWx0Q29sbGF0b3IuaW5pdExhdGVyKAog
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SW50bENvbGxhdG9yPiYgaW5pdCkgewogICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGluaXQub3duZXIpOwpAQCAtMTg4MywxNSArMTg4NywxNSBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAKICAgICB0aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xsYXRvci52aXNpdCh2aXNpdG9yKTsKICAg
ICB0aGlzT2JqZWN0LT5tX2NvbGxhdG9yU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHRo
aXNPYmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAg
dGhpc09iamVjdC0+bV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7Ci0gICAg
dGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAg
dGhpc09iamVjdC0+bV9sb2NhbGVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09i
amVjdC0+bV9wbHVyYWxSdWxlc1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX3JlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX3NlZ21lbnRJdGVyYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAg
ICB0aGlzT2JqZWN0LT5tX3NlZ21lbnRlclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX3NlZ21lbnRzU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNP
YmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhp
c09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxHZXR0ZXJGdW5jdGlvbik7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsU2V0dGVyRnVuY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMzMwZTViMGU2
N2Y2ZGMyNjkxYmVkNGJkMzE0ZjdjM2QzN2UyMzRhNi4uZjA2ZTQxMjI0MDc5MGIzNTYzOTdmYzFi
ZmI4Y2ZjOGYzNjk2NWJiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0yOTYsMTUgKzI5NiwxNSBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgSW50bENvbGxhdG9yPiBtX2RlZmF1bHRDb2xsYXRvcjsKICAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVjdHVy
ZTsKLSAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kYXRlVGlt
ZUZvcm1hdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVj
dHVyZT4gbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbG9jYWxlU3RydWN0dXJlOwotICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKICAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbHVyYWxSdWxlc1N0cnVj
dHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9yZWxh
dGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmU+IG1fc2VnbWVudEl0ZXJhdG9yU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3NlZ21lbnRlclN0cnVjdHVyZTsKICAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9zZWdtZW50c1N0cnVjdHVy
ZTsKKyAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKKyAg
ICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAKICAgICBXcml0
ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5jdGlvbjsKICAgICBX
cml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJGdW5jdGlvbjsKQEAg
LTgxOCw2ICs4MTgsMTEgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBzZWdtZW50ZXJTdHJ1Y3R1cmUoKSB7
IHJldHVybiBtX3NlZ21lbnRlclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUq
IHNlZ21lbnRzU3RydWN0dXJlKCkgeyByZXR1cm4gbV9zZWdtZW50c1N0cnVjdHVyZS5nZXQodGhp
cyk7IH0KIAorICAgIEpTT2JqZWN0KiBkYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKCkgeyByZXR1
cm4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKTsgfQorICAgIEpT
T2JqZWN0KiBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CisgICAgSlNPYmplY3QqIG51bWJlckZvcm1h
dENvbnN0cnVjdG9yKCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuY29uc3RydWN0
b3IodGhpcyk7IH0KKyAgICBKU09iamVjdCogbnVtYmVyRm9ybWF0UHJvdG90eXBlKCkgeyByZXR1
cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CisKICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCk7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCByZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MjBmOGVlM2JmNjNlZDUyNDY2ZGQzYWQ1MzVjYzFiZGM3ODI3ZWU2ZS4uNmMzYjllYzk2YWZkNWUx
YTljN2UwNjIwYjExNjk2ZWRlNmVmZDE0YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wOS0wNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFsaWduIGxl
Z2FjeSBJbnRsIGNvbnN0cnVjdG9yIGJlaGF2aW9yIHRvIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjE5MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ludGwtbGVnYWN5LWNvbnN0
cnVjdG9ycy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgICh0ZXN0TGVnYWN5Q29uc3RydWN0b3IpOgorCiAyMDIwLTA5LTA0ICBB
bGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBBcnJheS5w
cm90b3R5cGUucHVzaCBzaG91bGQgYWx3YXlzIHBlcmZvcm0gW1tTZXRdXSBpbiBzdHJpY3QgbW9k
ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1sZWdhY3ktY29uc3RydWN0b3JzLmpz
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1sZWdhY3ktY29uc3RydWN0b3JzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI1YTk5N2EyODBmMzUwODY0MWU0NTNhMmRlZDQ3M2U2Njc2MTU3ZWIKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxlZ2FjeS1jb25zdHJ1Y3RvcnMuanMKQEAgLTAsMCAr
MSwxMDAgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAk
e2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJv
dyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKwor
ICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKK30KKworZnVuY3Rpb24gdGVz
dExlZ2FjeUNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yLCB3cm9uZ09wdGlvbnMpCit7CisgICAgbGV0
IHN5bWJvbCA9IG51bGw7CisgICAgeworICAgICAgICBsZXQgb2JqZWN0ID0gbmV3IGNvbnN0cnVj
dG9yKCk7CisgICAgICAgIGxldCBuZXdPYmplY3QgPSBjb25zdHJ1Y3Rvci5jYWxsKG9iamVjdCk7
CisgICAgICAgIHNob3VsZEJlKG9iamVjdCwgbmV3T2JqZWN0KTsKKyAgICAgICAgbGV0IHN5bWJv
bHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG5ld09iamVjdCk7CisgICAgICAgIHNo
b3VsZEJlKHN5bWJvbHMubGVuZ3RoLCAxKTsKKyAgICAgICAgc2hvdWxkQmUoc3ltYm9sc1swXS5k
ZXNjcmlwdGlvbiwgYEludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbGApOworICAgICAgICBzaG91
bGRCZShuZXdPYmplY3Rbc3ltYm9sc1swXV0gaW5zdGFuY2VvZiBjb25zdHJ1Y3RvciwgdHJ1ZSk7
CisgICAgICAgIHN5bWJvbCA9IHN5bWJvbHNbMF07CisgICAgICAgIGxldCBkZXNjcmlwdG9yID0g
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuZXdPYmplY3QsIHN5bWJvbCk7CisgICAg
ICAgIHNob3VsZEJlKGRlc2NyaXB0b3Iud3JpdGFibGUsIGZhbHNlKTsKKyAgICAgICAgc2hvdWxk
QmUoZGVzY3JpcHRvci5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJlKGRlc2Ny
aXB0b3IuY29uZmlndXJhYmxlLCBmYWxzZSk7CisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IG9i
amVjdCA9IG5ldyBjb25zdHJ1Y3RvcigpOworICAgICAgICBPYmplY3QuZnJlZXplKG9iamVjdCk7
CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IGNvbnN0cnVjdG9yLmNhbGwob2JqZWN0KSwgVHlw
ZUVycm9yKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgb2JqZWN0ID0geworICAgICAgICAg
ICAgX19wcm90b19fOiBjb25zdHJ1Y3Rvci5wcm90b3R5cGUsCisgICAgICAgICAgICBbc3ltYm9s
XTogbmV3IGNvbnN0cnVjdG9yKCkKKyAgICAgICAgfTsKKyAgICAgICAgc2hvdWxkQmUodHlwZW9m
IGNvbnN0cnVjdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbChvYmplY3QpLCBgb2Jq
ZWN0YCk7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIGNvbnN0cnVj
dG9yLnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzLmNhbGwob2JqZWN0KTsKKyAgICAgICAgfSwgVHlw
ZUVycm9yKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgb2JqZWN0ID0geyBfX3Byb3RvX186
IGNvbnN0cnVjdG9yLnByb3RvdHlwZSB9OworICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7Cisg
ICAgICAgICAgICBjb25zdHJ1Y3Rvci5jYWxsKG9iamVjdCwgJ2VuJywgd3JvbmdPcHRpb25zKTsK
KyAgICAgICAgfSwgUmFuZ2VFcnJvcik7CisgICAgfQorICAgIHsKKyAgICAgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHsKKyAgICAgICAg
ICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7IHRocm93IG5ldyBFcnJvcigidGhpcyBzaG91bGQgbm90
IGJlIGNhbGxlZCIpOyB9LAorICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsCisgICAgICAgICAg
ICBjb25maWd1cmFibGU6IHRydWUsCisgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAorICAg
ICAgICB9KTsKKyAgICAgICAgbGV0IG9iamVjdCA9IG5ldyBjb25zdHJ1Y3RvcigpOworICAgICAg
ICBsZXQgbmV3T2JqZWN0ID0gY29uc3RydWN0b3IuY2FsbChvYmplY3QpOworICAgICAgICBzaG91
bGRCZShvYmplY3QgPT09IG5ld09iamVjdCwgdHJ1ZSk7IC8vIFN5bWJvbC5oYXNJbnN0YW5jZSBz
aG91bGQgYmUgaWdub3JlZCBmb3IgbGVnYWN5IGNvbnN0cnVjdG9yLgorICAgIH0KKyAgICB7Cisg
ICAgICAgIGxldCBvYmplY3QgPSB7CisgICAgICAgICAgICBbc3ltYm9sXTogbmV3IGNvbnN0cnVj
dG9yKCkKKyAgICAgICAgfTsKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnN0cnVj
dG9yLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHsKKyAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbiAo
KSB7IHJldHVybiB0cnVlOyB9LAorICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsCisgICAgICAg
ICAgICBjb25maWd1cmFibGU6IHRydWUsCisgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAor
ICAgICAgICB9KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgY29u
c3RydWN0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKG9iamVjdCk7CisgICAgICAg
IH0sIFR5cGVFcnJvcik7CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgICAg
IGNvbnN0cnVjdG9yLnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzLmNhbGwob2JqZWN0KTsKKyAgICAg
ICAgfSwgVHlwZUVycm9yKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgb2JqZWN0ID0geyBf
X3Byb3RvX186IGNvbnN0cnVjdG9yLnByb3RvdHlwZSB9OworICAgICAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoY29uc3RydWN0b3IsIFN5bWJvbC5oYXNJbnN0YW5jZSwgeworICAgICAgICAgICAg
dmFsdWU6IGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCJ0aGlzIHdpbGwgbm90IGJlIGNh
bGxlZCIpOyB9LAorICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsCisgICAgICAgICAgICBjb25m
aWd1cmFibGU6IHRydWUsCisgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLAorICAgICAgICB9
KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgY29uc3RydWN0b3Iu
Y2FsbChvYmplY3QsICdlbicsIHdyb25nT3B0aW9ucyk7CisgICAgICAgIH0sIFJhbmdlRXJyb3Ip
OworICAgICAgICBjb25zdHJ1Y3Rvci5jYWxsKG9iamVjdCwgJ2VuJyk7CisgICAgfQorfQorCit0
ZXN0TGVnYWN5Q29uc3RydWN0b3IoSW50bC5OdW1iZXJGb3JtYXQsIHsgc3R5bGU6ICJ3cm9uZyIg
fSk7Cit0ZXN0TGVnYWN5Q29uc3RydWN0b3IoSW50bC5EYXRlVGltZUZvcm1hdCwgeyB0aW1lU3R5
bGU6ICJ3cm9uZyIgfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408057</attachid>
            <date>2020-09-04 17:58:42 -0700</date>
            <delta_ts>2020-09-04 18:00:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216193-20200904175842.patch</filename>
            <type>text/plain</type>
            <size>47973</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MWE5ZDY4NmFiYjVlN2I3ZDQxZmU0Y2ViYzc1ZGJkZmRjZWU4OTE5Li43ZDg0MWVmYzJiYjNmOTUx
MmJiMmQxNTZhMTRlNzBiYzU5YjlhMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAyMC0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFsaWduIGxlZ2FjeSBJbnRsIGNvbnN0cnVjdG9yIGJlaGF2aW9y
IHRvIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNjE5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExlZ2FjeSBJbnRsIGNvbnN0cnVjdG9ycyAoSW50bC5EYXRlVGltZUZvcm1hdCBhbmQgSW50bC5O
dW1iZXJGb3JtYXQpIGhhdmUgc3BlY2lhbCBoYW5kbGluZyB3aGVuIGl0IGlzIGNhbGxlZCB2aWEg
YEludGwuRGF0ZVRpbWVGb3JtYXQoKWAgZm9ybS4KKyAgICAgICAgVGhpcyBhbGxvd2VkIGxlZ2Fj
eSBJbnRsIGNvbnN0cnVjdG9ycyB0byBiZSB1c2VkIHdpdGggcHJvdG90eXBlLWJhc2VkIGluaGVy
aXRhbmNlIHdpdGhvdXQgdXNpbmcgY2xhc3Mgc3ludGF4LiBUaGlzIGxlZ2FjeSBiZWhhdmlvciBp
cyBsYXRlciBzcGVjaWZpZWQKKyAgICAgICAgZXhwbGljaXRseSBpbiB0aGUgc3BlYy4gU28gd2Ug
c2hvdWxkIGFsaWduIG91ciBpbXBsZW1lbnRhdGlvbiB0byB0aGUgc3BlYydzIG9uZS4KKworICAg
ICAgICAgICAgMS4gV2hlbiBkZWZpbmluZyBmYWxsYmFjayBmb3JtYXRzLCB3ZSBuZWVkIHRvIHB1
dCB0aGVtIGludG8gdGhlIHByb3BlcnR5IHdoaWNoIGlzIHZpc2libGUgdmlhIFN5bWJvbCgiSW50
bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sIikuCisgICAgICAgICAgICAyLiBFdmVuIGlmIHRoZSBw
cm92aWRlZCB0aGlzVmFsdWUgaXMgSW50bERhdGVUaW1lRm9ybWF0KiAvIEludGxOdW1iZXJGb3Jt
YXQqLCB3ZSBzaG91bGQgY3JlYXRlIGFub3RoZXIgaW5zdGFuY2UgYW5kIHB1dCBpdCB0byBTeW1i
b2woIkludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCIpIGZpZWxkLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlu
cy9CdWlsdGluTmFtZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5O
YW1lcyk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgIChKU0M6
OkJ1aWx0aW5OYW1lczo6aW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxEYXRlVGltZUZvcm1h
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9u
cyk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0
cyk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRS
YW5nZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNv
bHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OmNhbGxJbnRsTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVu
d3JhcEZvck9sZEZ1bmN0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5j
Rm9ybWF0VG9QYXJ0cyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpjcmVhdGVEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6Y3JlYXRlTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bEluc3RhbmNl
V2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjp1
bndyYXBGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpkYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51
bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51
bWJlckZvcm1hdFByb3RvdHlwZSk6CisKIDIwMjAtMDktMDQgIEFsZXhleSBTaHZheWthICA8c2h2
YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoIHNob3Vs
ZCBhbHdheXMgcGVyZm9ybSBbW1NldF1dIGluIHN0cmljdCBtb2RlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDM2MTBjMmEyYWY3MTEyNmI5ZjliOTQ5YTQ3MjMwYTY0YzA4MDViNGIu
LjRmNzRkODk5NTZlZTg0MjJiMjU3ZWNlMGM5YjBlMzI0YzcyODA5ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xODQ5LDYgKzE4NDksNyBAQAogCQlFMzZCNzY3MDIyRjhENjE5
MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdh
c21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2
RURDRTUyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyog
Q29uY3VycmVuY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFMzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3
NTBDQzcyNTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLzsg
fTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2FzbUds
b2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4
MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKIAkJRTM4NTBCMTUy
MjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMg
LyogREZHTWluaWZpZWRJRElubGluZXMuaCAqLzsgfTsKQEAgLTUwNDksNiArNTA1MCw3IEBACiAJ
CUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyog
Q29uY3VycmVuY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVu
Y3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3NTBDQzcyNTAyRTg3RTAwNkEw
QUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQz
QUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3Q0ZCMkQy
MkYyN0M1NzAwOUE3QjM4IC8qIFdhc21Db21waWxhdGlvbk1vZGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2FzbUNvbXBpbGF0aW9uTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03MzE4LDYgKzczMjAsNyBAQAogCQkJCUExNTg3RDY4MUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXQuaCAqLywKIAkJCQlBMTU4N0Q2OTFCNERDMTQxMDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAogCQkJCUExNTg3RDZBMUI0REMx
NDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUz
NzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggKi8s
CiAJCQkJQTE1ODdENkIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5jcHAgKi8sCiAJCQkJQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUUzNTNDMTE2MjRBQTRDQjUwMDNGQkRGMyAvKiBJ
bnRsRGlzcGxheU5hbWVzLmNwcCAqLywKQEAgLTk4MjksNiArOTgzMiw3IEBACiAJCQkJQTE1ODdE
NkUxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q3NTFCNERDMUM2MDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlF
Mzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzYxQjREQzFDNjAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzNTNDMTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5jcHAKaW5kZXggYTY4OGU1NWVlNmE2YmFhMzJlMTkxZTc0YzEwZDEyZTM5N2E2NTU3Ny4u
MmEwODg3ZTczZTU3MWYwMDhlODg0ZGIzNDMwNDg2ZDM0MjAwNzIyMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKQEAgLTQxLDYgKzQxLDgg
QEAgbmFtZXNwYWNlIFN5bWJvbHMgewogSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKQog
I3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUwogCitTeW1ib2xJbXBsOjpT
dGF0aWNTeW1ib2xJbXBsIGludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCB7ICJJbnRsTGVnYWN5
Q29uc3RydWN0ZWRTeW1ib2wiIH07CisKICNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1BSSVZB
VEVfTkFNRVMobmFtZSkgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCBuYW1lIyNQcml2YXRl
TmFtZSB7ICNuYW1lLCBTeW1ib2xJbXBsOjpzX2ZsYWdJc1ByaXZhdGUgfTsKIEpTQ19GT1JFQUNI
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fUFJJVkFURV9OQU1FUykK
IEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElB
TElaRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMpCkBAIC03Niw2ICs3OCw3IEBAIEJ1aWx0aW5OYW1l
czo6QnVpbHRpbk5hbWVzKFZNJiB2bSwgQ29tbW9uSWRlbnRpZmllcnMqIGNvbW1vbklkZW50aWZp
ZXJzKQogICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JV
SUxUSU5fTkFNRVNfSU5fSlNDKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTX0lOX0pTQykKICAgICBK
U0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklU
SUFMSVpFX0JVSUxUSU5fU1lNQk9MU19JTl9KU0MpCisgICAgLCBtX2ludGxMZWdhY3lDb25zdHJ1
Y3RlZFN5bWJvbChKU0M6OklkZW50aWZpZXI6OmZyb21VaWQodm0sICZzdGF0aWNfY2FzdDxTeW1i
b2xJbXBsJj4oU3ltYm9sczo6aW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sKSkpCiAgICAgLCBt
X2RvbGxhclZNTmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJHZtIikpCiAgICAgLCBt
X2RvbGxhclZNUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgJnN0YXRpY19jYXN0
PFN5bWJvbEltcGwmPihTeW1ib2xzOjpkb2xsYXJWTVByaXZhdGVOYW1lKSkpCiAgICAgLCBtX3Bv
bHlQcm90b1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQodm0sICZzdGF0aWNfY2FzdDxT
eW1ib2xJbXBsJj4oU3ltYm9sczo6cG9seVByb3RvUHJpdmF0ZU5hbWUpKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA3YjE4MGM3MDA0OTQ4
ODFlYmFlYzIzZThmNDJlYjA3ODBiMDY1YjQ1Li4yYjVmOTAyODIwZWJlYjgxZDYyN2ZjMTZmYWVk
N2Q5NDE3MWY1ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCkBAIC0xMTEsNyArMTExLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8o
bmV4dE1ldGhvZCkgXAogICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCkgXAog
ICAgIG1hY3JvKGRhdGVUaW1lRm9ybWF0KSBcCi0gICAgbWFjcm8oaW50bFN1YnN0aXR1dGVWYWx1
ZSkgXAogICAgIG1hY3JvKHRoaXMpIFwKICAgICBtYWNybyh0aGlzVGltZVZhbHVlKSBcCiAgICAg
bWFjcm8obmV3VGFyZ2V0TG9jYWwpIFwKQEAgLTIxMSw2ICsyMTAsNyBAQCBjbGFzcyBCdWlsdGlu
TmFtZXMgewogICAgIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgZG9sbGFyVk1QdWJsaWNOYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9kb2xsYXJWTU5hbWU7IH0KICAgICBjb25zdCBKU0M6OklkZW50aWZp
ZXImIGRvbGxhclZNUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2RvbGxhclZNUHJpdmF0
ZU5hbWU7IH0KICAgICBjb25zdCBKU0M6OklkZW50aWZpZXImIHBvbHlQcm90b05hbWUoKSBjb25z
dCB7IHJldHVybiBtX3BvbHlQcm90b1ByaXZhdGVOYW1lOyB9CisgICAgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBpbnRsTGVnYWN5Q29uc3RydWN0ZWRTeW1ib2woKSBjb25zdCB7IHJldHVybiBtX2lu
dGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tQ
dWJsaWNUb1ByaXZhdGVNYXBDb25zaXN0ZW5jeShVbmlxdWVkU3RyaW5nSW1wbCogcHJpdmF0ZU5h
bWUpOwpAQCAtMjE5LDYgKzIxOSw3IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FU19JTl9KU0Mp
CiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShE
RUNMQVJFX0JVSUxUSU5fTkFNRVNfSU5fSlNDKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVO
VElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xTX0lO
X0pTQykKKyAgICBjb25zdCBKU0M6OklkZW50aWZpZXIgbV9pbnRsTGVnYWN5Q29uc3RydWN0ZWRT
eW1ib2w7CiAgICAgY29uc3QgSlNDOjpJZGVudGlmaWVyIG1fZG9sbGFyVk1OYW1lOwogICAgIGNv
bnN0IEpTQzo6SWRlbnRpZmllciBtX2RvbGxhclZNUHJpdmF0ZU5hbWU7CiAgICAgY29uc3QgSlND
OjpJZGVudGlmaWVyIG1fcG9seVByb3RvUHJpdmF0ZU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBhOTk1NGIxMjg5ZGM3
ZWY5NmFkZTRiOGQ2N2Y2MTAyZmMwYzZhYzZlLi5jMjdjNzNlZmU1MjlkYTQ3NzQ0OGZhZmUzNDk0
NjIxMDJlYjA5MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKQEAgLTMzNSw2ICszMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNk
ZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dM
T0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1N5bWJvbDsKICAgICAgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKICN1bmRlZiBK
U0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIgaW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sOwogCiAj
ZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwobmFtZSkg
Y29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlRmllbGQ7CiAgICAgICAgIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJ
VkFURV9GSUVMRF9HTE9CQUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IDliNGMwNmM0OWJiZjdjNThmZGY2NWQyYjUxMzU4
YTI5OTA0N2RkMmMuLjBiZGEyNTk4OTBlZDAzZjMxZWYyZjA1ZGE4MTY1Yzc0MmZmMzUzMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCkBAIC02Nyw2ICs2Nyw4IEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0
KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91
bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKIAorICAgIHN0YXRpYyBJbnRsRGF0ZVRp
bWVGb3JtYXQqIHVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCiBwcml2YXRlOgogICAgIEludGxEYXRlVGltZUZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNw
cAppbmRleCBhZjZiZTk1NmUyYTU1MGZhNmRiOWQ3NTIxZWQ0NGRkZGM4YmE0NjMwLi5jOWViZTA1
MGM4ZmM1OTA4NDg0YjY2NTc3YWE2ZGZlNTIxZGQwZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCkBAIC03Nyw3ICs3Nyw2IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0UHJvCiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJEYXRlVGltZUZvcm1hdCJfcywgTmFtZUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGRhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7Ci0gICAgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBA
IC0xMTEsNyArMTEwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEludGxEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIC8vIEZJWE1F
OiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBj
YWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTM2NzkKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdElu
dGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPEludGxEYXRl
VGltZUZvcm1hdD4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBjYWxsRnJh
bWUtPmpzQ2FsbGVlKCksIFsmXSAoVk0mIHZtKSB7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1
Y3RvcihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIGNhbGxGcmFtZS0+anND
YWxsZWUoKSwgWyZdIChWTSYgdm0pIHsKICAgICAgICAgLy8gMi4gTGV0IGRhdGVUaW1lRm9ybWF0
IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJURhdGVUaW1lRm9y
bWF0UHJvdG90eXBlJSkuCiAgICAgICAgIC8vIDMuIFJldHVybklmQWJydXB0KGRhdGVUaW1lRm9y
bWF0KS4KICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxE
YXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3Ry
dWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxODlmYjExMTdlMjMzOTUz
OGQwOWYyNzdmZjhmYzY4OTRkM2RjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmgKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiSW50bERhdGVU
aW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDICB7CisKKy8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hNDAyLyNzZWMtdW53cmFwZGF0ZXRpbWVmb3JtYXQKK2lubGluZSBJbnRsRGF0ZVRpbWVG
b3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiB1
bndyYXBGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bERhdGVUaW1lRm9ybWF0PihnbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZ2xvYmFsT2JqZWN0LT5kYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmlu
ZGV4IDhiNzBiZjVkZmU2ZWFmMWE4MDg4YTg2ZjMzYTdmMmMwODY1ZTRiZDIuLjNkNzA5NzdkOWEx
OGUzYjc0ZDNlMDEyZmY0YWQyNGZhMjcwYjFjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVk
ZSAiRGF0ZUNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisj
aW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KQEAgLTExMSwxOCArMTExLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEpTR2xvYmFsT2JqCiAKICAg
ICAvLyAxMi4zLjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQw
MiAyLjApCiAgICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4K
LSAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwotCi0gICAgLy8gRklYTUU6IFdv
cmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwv
YXBwbHkgcGF0dGVybnMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MzY3OQotICAgIGlmICghZHRmKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAg
IGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIHZhbHVlKTsKLSAg
ICB9Ci0KKyAgICBhdXRvKiBkdGYgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnVud3JhcEZvck9sZEZ1
bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgLy8gMi4gUmV0dXJuSWZBYnJ1cHQoZHRm
KS4KLSAgICBpZiAoIWR0ZikKKyAgICBpZiAoVU5MSUtFTFkoIWR0ZikpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJfcykpOwogCiAg
ICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQoKTsKQEAg
LTE1MCw4ICsxNDIsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYgogICAgIC8vIDE1LjQgSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyAoRUNNQS00MDIgNC4wKQog
ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLUludGwuRGF0ZVRpbWVG
b3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMKIAotICAgIEludGxEYXRlVGltZUZvcm1hdCog
ZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKLSAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQorICAgIC8v
IERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rpb25zLgorICAgIGF1dG8qIGRhdGVUaW1lRm9y
bWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKFVOTElLRUxZKCFkYXRlVGltZUZvcm1hdCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3Jt
YXQiX3MpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CkBA
IC0xNzMsOCArMTY2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UoSlNHbG9iYWwKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1p
Y0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwot
ICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCisgICAgLy8gRG8gbm90IHVzZSB1bndyYXBGb3JPbGRG
dW5jdGlvbnMuCisgICAgYXV0byogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxE
YXRlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWRhdGVUaW1lRm9ybWF0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIEpTVmFsdWUgc3Rh
cnREYXRlVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwpAQCAtMTk5LDE3ICsxOTMsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2wKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICAvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKLSAgICBJbnRsRGF0ZVRpbWVGb3Jt
YXQqIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0
byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0
ZXJucy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUz
Njc5Ci0gICAgaWYgKCFkYXRlVGltZUZvcm1hdCkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAg
ICBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0s
IHZhbHVlKTsKLSAgICB9Ci0KLSAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQorICAgIGF1dG8qIGRh
dGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmIChVTkxJS0VMWSghZGF0ZVRpbWVGb3JtYXQpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0
ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5o
CmluZGV4IGNkYTRlZjU5NGRkODUwZGYxZmUzYTAwMjcxMjNiZjM3ODEzMTA2MTYuLjMxMWJiOTM2
OGNjMzhkM2UxNzU3NGNhY2E3N2Q4M2Q0ODRhYzI1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTkxLDYgKzkxLDggQEAgY2xh
c3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAog
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25TdHJpbmcoSW50bE5vdGF0aW9uKTsKIAor
ICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0KiB1bndyYXBGb3JPbGRGdW5jdGlvbnMoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZN
JiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZDE3OGNjMGE4YWU1NTU3NDIwMjJjMjQxNWZjYTRjZGY5MGQ5
OTc5MC4uNDJiOTBkZTY2YWExNWI5NmI3NDU4MDc1MDAxYmNjNWFhYjJkZmExNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwCkBAIC03Nyw3ICs3Nyw2IEBAIHZvaWQgSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJOdW1iZXJGb3JtYXQiX3MsIE5hbWVB
ZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBudW1iZXJG
b3JtYXRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKLSAgICBudW1iZXJGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpA
QCAtMTExLDcgKzExMCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxJbnRsTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAKICAgICAvLyBGSVhN
RTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAg
Y2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUzNjc5Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RJ
bnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcjxJbnRsTnVt
YmVyRm9ybWF0PihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIGNhbGxGcmFt
ZS0+anNDYWxsZWUoKSwgWyZdIChWTSYgdm0pIHsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVj
dG9yKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpLCBbJl0gKFZNJiB2bSkgewogICAgICAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJl
IE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFBy
b3RvdHlwZSUpLgogICAgICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChudW1iZXJGb3JtYXQpLgog
ICAgICAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJ
bmxpbmVzLmgKaW5kZXggM2VhOGE3YWYxY2QyMzU1MWU3NDAxMTViNDg1MzFkMGY2ZDdkOGE3YS4u
MDhhMmE0ZTQxZTEzN2FhNzhlZmIyNmE2NDMwOTM3OTgwNjIwYzJiNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5o
CkBAIC0yNSw4ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnVpbHRpbk5h
bWVzLmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgIHsKQEAgLTEwNSw0ICsxMDYsMTAgQEAgY2xhc3Mg
SW50bEZpZWxkSXRlcmF0b3IgewogICAgIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3ImIG1faXRlcmF0
b3I7CiB9OwogCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLXVud3JhcG51bWJlcmZv
cm1hdAoraW5saW5lIEludGxOdW1iZXJGb3JtYXQqIEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZv
ck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNW
YWx1ZSkKK3sKKyAgICByZXR1cm4gdW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPEludGxO
dW1iZXJGb3JtYXQ+KGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBnbG9iYWxPYmplY3QtPm51bWJl
ckZvcm1hdENvbnN0cnVjdG9yKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAKaW5kZXggZjg3ZGY2ZWM0NTgzODE5ZmVkYWI1Y2Q0Mjk3NzI1YjNkZjA5MjY4
MS4uZDEyYTcwYjk3NWY1NTZlMDAxYzdkYzYyZDgzNTBlNjYyNDEzZTJhZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAKQEAgLTExNCwxOSArMTE0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVj
CiAKICAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAoRUNN
QS00MDIgMi4wKQogICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJlckZvcm1hdCBvYmplY3Qu
Ci0gICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3Jt
YXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Ci0KLSAgICAvLyBGSVhNRTogV29ya2Fy
b3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBs
eSBwYXR0ZXJucy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzNjc5Ci0gICAgaWYgKCFuZikgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAgICBuZiA9
IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCB2YWx1ZSk7Ci0gICAgfQotCi0g
ICAgaWYgKCFuZikKKyAgICBhdXRvKiBuZiA9IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9s
ZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlm
IChVTkxJS0VMWSghbmYpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIE51bWJlckZvcm1hdCJfcykpOwotICAgIAorCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3Vu
ZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3Jt
YXRdXSBpcyB1bmRlZmluZWQsCiAgICAgaWYgKCFib3VuZEZvcm1hdCkgewpAQCAtMTUyLDggKzE0
Myw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsCiAgICAgLy8gSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLmZvcm1hdFRvUGFydHMgKEVDTUEtNDAyKQogICAgIC8vIGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3RvdHlwZS5mb3JtYXR0
b3BhcnRzCiAKLSAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWND
YXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Ci0gICAg
aWYgKCFudW1iZXJGb3JtYXQpCisgICAgLy8gRG8gbm90IHVzZSB1bndyYXBGb3JPbGRGdW5jdGlv
bnMuCisgICAgYXV0byogbnVtYmVyRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9y
bWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghbnVt
YmVyRm9ybWF0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1h
dFRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgTnVtYmVyRm9ybWF0Il9zKSk7CiAKICAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CkBAIC0xNjgsMTcgKzE2MCw5IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgLy8gMTEuMy41IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQotICAgIEludGxOdW1iZXJGb3JtYXQqIG51
bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKLQotICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUg
Y29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKLSAgICBp
ZiAoIW51bWJlckZvcm1hdCkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAgICBudW1iZXJGb3Jt
YXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgdmFsdWUpOwotICAgIH0K
IAotICAgIGlmICghbnVtYmVyRm9ybWF0KQorICAgIGF1dG8qIG51bWJlckZvcm1hdCA9IEludGxO
dW1iZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghbnVtYmVyRm9ybWF0KSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3Jt
YXQiX3MpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KG51bWJlckZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9iamVjdCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggYzBmMzliMTMxMjMz
YWQzMzk1ZTkwNmUyOTQxNTFkN2E0MzlkOGE4MS4uMzAxYmRkMTNlYjY3MDNhMzk4ZGRlNjRkNGM0
Mzg1YTQxMTBlMWYwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgSW50bE9i
amVjdCogaW50bE9iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW50bE9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsK
LSAgICByZXR1cm4gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5kYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
PmRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoKTsKIH0KIAogc3RhdGljIEpTVmFsdWUgY3JlYXRl
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQpAQCAtMTA0
LDcgKzEwNCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZU51bWJlckZvcm1hdENvbnN0cnVjdG9y
KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0
ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBpbnRsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwotICAgIHJldHVybiBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqPihn
bG9iYWxPYmplY3QtPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmpl
Y3QoKSkpOworICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm51bWJlckZvcm1hdENvbnN0cnVjdG9y
KCk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsdXJhbFJ1bGVzQ29uc3RydWN0b3IoVk0m
IHZtLCBKU09iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKaW5kZXggYTUzMmQxMWE2M2FlNzIxZDlhYmJkNTA4Y2Y2
ZWIxM2Q4N2M4MzljYS4uZThlM2Y5MTBiMDhmMTRjZjkzZDk3ZjYxNjJkMmNiYjRhMDcwZDY5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5l
cy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNs
dWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KIApAQCAtNTYsNyArNTcs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+IFN0cmluZyBiZXN0QXZhaWxhYmxlTG9j
YWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBQcgogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgSW50bEluc3RhbmNlLCB0eXBlbmFtZSBDb25zdHJ1Y3RvciwgdHlw
ZW5hbWUgRmFjdG9yeT4KK3RlbXBsYXRlPHR5cGVuYW1lIENvbnN0cnVjdG9yLCB0eXBlbmFtZSBG
YWN0b3J5PgogSlNWYWx1ZSBjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxl
Z2FjeUludGxDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgQ29uc3RydWN0b3IqIGNhbGxlZSwgRmFjdG9yeSBmYWN0b3J5KQogewogICAg
IC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEt
NDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgpAQCAtNjQsMjIgKzY1LDUxIEBAIEpTVmFsdWUg
Y29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICghanNEeW5hbWlj
Q2FzdDxJbnRsSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKSkgewotICAgICAgICBKU1ZhbHVlIHBy
b3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUpOwotICAgICAgICBib29sIGhhc0luc3RhbmNlID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0
YW5jZShnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgcHJvdG90eXBlKTsKKyAgICBhdXRvKiBpbnN0
YW5jZSA9IGZhY3Rvcnkodm0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWUoKSk7CisKKyAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOworICAgICAgICBBU1NFUlQoIWNh
bGxlZS0+dGVtcGxhdGUgaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpOworICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUpOyAvLyBQYXNzZWQgY29uc3RydWN0b3JzIGFsd2F5cyBoYXZlIGBwcm90b3R5
cGVgIHdoaWNoIGNhbm5vdCBiZSBkZWxldGVkLgorICAgICAgICBBU1NFUlQocHJvdG90eXBlKTsK
KyAgICAgICAgYm9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2Uo
Z2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoaGFzSW5zdGFuY2UpIHsK
LSAgICAgICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOwotCi0gICAgICAgICAgICBJbnRsSW5zdGFuY2UqIGluc3RhbmNlID0gZmFjdG9yeSh2
bSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwot
Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpLCBpbnN0YW5j
ZSk7CisgICAgICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcihpbnN0YW5jZSwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOworICAgICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOworICAgICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVP
d25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCgpLCBkZXNjcmlwdG9yLCB0
cnVlKTsKICAgICAgICAgICAgIHJldHVybiB0aGlzT2JqZWN0OwogICAgICAgICB9CiAgICAgfQot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZmFjdG9yeSh2bSkpOworICAgIHJldHVybiBp
bnN0YW5jZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSW5zdGFuY2VUeXBlPgorSW5zdGFuY2VU
eXBlKiB1bndyYXBGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcikKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCF0aGlzT2Jq
ZWN0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBpbnN0YW5jZSA9IGpz
RHluYW1pY0Nhc3Q8SW5zdGFuY2VUeXBlKj4odm0sIHRoaXNPYmplY3QpOworICAgIGlmIChMSUtF
TFkoaW5zdGFuY2UpKQorICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisKKyAgICBBU1NFUlQoIWNv
bnN0cnVjdG9yLT50ZW1wbGF0ZSBpbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSk7CisgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSBjb25zdHJ1Y3Rvci0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUpOyAvLyBQYXNzZWQgY29uc3RydWN0b3JzIGFsd2F5cyBoYXZlIGBw
cm90b3R5cGVgIHdoaWNoIGNhbm5vdCBiZSBkZWxldGVkLgorICAgIEFTU0VSVChwcm90b3R5cGUp
OworICAgIGJvb2wgaGFzSW5zdGFuY2UgPSBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGds
b2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvdG90eXBlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBpZiAoIWhhc0luc3RhbmNlKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIEpTVmFsdWUgdmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsTGVnYWN5Q29uc3Ry
dWN0ZWRTeW1ib2woKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SW5zdGFuY2VUeXBlKj4odm0sIHZhbHVlKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwZjM0ODM0NjA1NTBlYmE2M2Yz
YjY4YjhmN2Q2Yjg0NDA5OGY0MzM1Li4yYjQzNjc5YWVhNzVkMTViZjkxM2E3YjBjMjcyNGRlYzE5
MDAwNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC03NCwxMiArNzQsMTQgQEAKICNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIK
ICNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxE
aXNwbGF5TmFtZXMuaCIKICNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKQEAg
LTk5OCwxMiArMTAwMCw2IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUg
IyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJvdG90eXBlID0gSW50bENvbGxhdG9yUHJv
dG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsQ29sbGF0b3JQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICAgICAgICAgIGluaXQuc2V0KEludGxDb2xsYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgY29sbGF0b3JQcm90b3R5cGUp
KTsKICAgICAgICAgfSk7Ci0gICAgbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIo
Ci0gICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7Ci0gICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lcik7Ci0gICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
OjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKLSAgICAgICAgICAgIGluaXQuc2V0KEludGxEYXRlVGltZUZv
cm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUpKTsKLSAgICAgICAgfSk7CiAgICAgbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUu
aW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5p
dCkgewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpAQCAtMTAxNiwxMiArMTAxMiw2IEBAIGNhcGl0
YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJl
RmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlKiBsb2Nh
bGVQcm90b3R5cGUgPSBJbnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgSW50bExv
Y2FsZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAgICAgICAgICAgaW5pdC5zZXQoSW50
bExvY2FsZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgbG9jYWxlUHJv
dG90eXBlKSk7CiAgICAgICAgIH0pOwotICAgIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmluaXRM
YXRlcigKLSAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsK
LSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKTsKLSAgICAgICAgICAgIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSA9IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6
OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpKTsKLSAgICAgICAgICAgIGluaXQuc2V0KEludGxOdW1iZXJGb3JtYXQ6
OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIG51bWJlckZvcm1hdFByb3Rv
dHlwZSkpOwotICAgICAgICB9KTsKICAgICBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmluaXRMYXRl
cigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKTsKQEAgLTEwNTIsNiArMTA0MiwyMCBAQCBjYXBpdGFsTmFtZSAj
IyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBj
YXBpdGFsTmFtZQogICAgICAgICAgICAgSW50bFNlZ21lbnRzUHJvdG90eXBlKiBzZWdtZW50c1By
b3RvdHlwZSA9IEludGxTZWdtZW50c1Byb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9i
amVjdCwgSW50bFNlZ21lbnRzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiAgICAgICAgICAg
ICBpbml0LnNldChJbnRsU2VnbWVudHM6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxP
YmplY3QsIHNlZ21lbnRzUHJvdG90eXBlKSk7CiAgICAgICAgIH0pOworCisgICAgbV9kYXRlVGlt
ZUZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1
cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5p
dC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5vYmplY3RQcm90b3R5cGUoKSkpKTsKKyAgICAgICAgICAg
IGluaXQuc2V0U3RydWN0dXJlKEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGluaXQuZ2xvYmFsLCBpbml0LnByb3RvdHlwZSkpOworICAgICAgICAgICAgaW5pdC5z
ZXRDb25zdHJ1Y3RvcihJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQu
dm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0
PEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSo+KGluaXQucHJvdG90eXBlKSkpOworICAgICAg
ICB9KTsKKyAgICBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtd
IChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldFByb3RvdHlwZShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52
bSwgaW5pdC5nbG9iYWwsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm9iamVjdFByb3RvdHlwZSgpKSkp
OworICAgICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSW50bE51bWJlckZvcm1hdDo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0LnByb3RvdHlwZSkpOworICAgICAg
ICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNy
ZWF0ZShpbml0LnZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPmZ1bmN0aW9uUHJvdG90eXBlKCkp
LCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSo+KGluaXQucHJvdG90eXBlKSkpOwor
ICAgICAgICB9KTsKKwogICAgIG1fZGVmYXVsdENvbGxhdG9yLmluaXRMYXRlcigKICAgICAgICAg
W10gKGNvbnN0IEluaXRpYWxpemVyPEludGxDb2xsYXRvcj4mIGluaXQpIHsKICAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKTsKQEAgLTE4ODMsMTUgKzE4ODcsMTUgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAg
dGhpc09iamVjdC0+bV9kZWZhdWx0Q29sbGF0b3IudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09i
amVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0
LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fZGlzcGxheU5hbWVzU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHRoaXNPYmpl
Y3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
cGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9y
ZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09i
amVjdC0+bV9zZWdtZW50ZXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9zZWdtZW50c1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5t
X2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3Qt
Pm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fbnVsbFNldHRlckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDMzMGU1YjBlNjdmNmRjMjY5
MWJlZDRiZDMxNGY3YzNkMzdlMjM0YTYuLmYwNmU0MTIyNDA3OTBiMzU2Mzk3ZmMxYmZiOGNmYzhm
MzY5NjViYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaApAQCAtMjk2LDE1ICsyOTYsMTUgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7Ci0gICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
ZGlzcGxheU5hbWVzU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
U3RydWN0dXJlPiBtX2xvY2FsZVN0cnVjdHVyZTsKLSAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcmVsYXRpdmVUaW1l
Rm9ybWF0U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX3NlZ21lbnRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9zZWdtZW50ZXJTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fc2VnbWVudHNTdHJ1Y3R1cmU7CisgICAg
TGF6eUNsYXNzU3RydWN0dXJlIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CisgICAgTGF6eUNs
YXNzU3RydWN0dXJlIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlOwogCiAgICAgV3JpdGVCYXJyaWVy
PE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVuY3Rpb247CiAgICAgV3JpdGVCYXJy
aWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4gbV9udWxsU2V0dGVyRnVuY3Rpb247CkBAIC04MTgsNiAr
ODE4LDExIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogc2VnbWVudGVyU3RydWN0dXJlKCkgeyByZXR1cm4g
bV9zZWdtZW50ZXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBzZWdtZW50
c1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fc2VnbWVudHNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAK
KyAgICBKU09iamVjdCogZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG1fZGF0
ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyk7IH0KKyAgICBKU09iamVjdCog
ZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUoKSB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0
dXJlLnByb3RvdHlwZSh0aGlzKTsgfQorICAgIEpTT2JqZWN0KiBudW1iZXJGb3JtYXRDb25zdHJ1
Y3RvcigpIHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMp
OyB9CisgICAgSlNPYmplY3QqIG51bWJlckZvcm1hdFByb3RvdHlwZSgpIHsgcmV0dXJuIG1fbnVt
YmVyRm9ybWF0U3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsgfQorCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIGJvb2wgcmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIwZjhlZTNi
ZjYzZWQ1MjQ2NmRkM2FkNTM1Y2MxYmRjNzgyN2VlNmUuLjg2MWIzYTEzODI5Y2E3YTRlMGFmYWQ2
MjY3ZTJmYTBiZjY2ZDUxMzMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDktMDQgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBbGlnbiBsZWdhY3kgSW50
bCBjb25zdHJ1Y3RvciBiZWhhdmlvciB0byBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYxOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLWRhdGV0aW1lZm9ybWF0LmpzOgor
ICAgICAgICAqIHN0cmVzcy9pbnRsLWxlZ2FjeS1jb25zdHJ1Y3RvcnMuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodGVzdExl
Z2FjeUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanM6
CisKIDIwMjAtMDktMDQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgog
CiAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoIHNob3VsZCBhbHdheXMgcGVyZm9ybSBbW1Nl
dF1dIGluIHN0cmljdCBtb2RlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRhdGV0
aW1lZm9ybWF0LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kYXRldGltZWZvcm1hdC5qcwppbmRl
eCA0MmE5NjE3MDA4NTBmYzE0ZmU4MGYwYmYyZDJmNzFlZThhMzY3NzRiLi5iYzE0ZTE5OTgxODhh
ZWI0MTUxMGRlZGRhOTVkYWUxM2M1NmJjM2FlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9p
bnRsLWRhdGV0aW1lZm9ybWF0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtZGF0ZXRpbWVm
b3JtYXQuanMKQEAgLTU2MCw4ICs1NjAsMTQgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JUeXBlKSB7CiAgICAgbGV0IGxlZ2FjeSA9IE9iamVjdC5jcmVhdGUoSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUpOwogICAgIGxldCBpbmNvbXBhdCA9IHt9OwogICAgIHNob3VsZEJl
KEludGwuRGF0ZVRpbWVGb3JtYXQuYXBwbHkobGVnYWN5KSwgbGVnYWN5KTsKKyAgICBsZWdhY3kg
PSBPYmplY3QuY3JlYXRlKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlKTsKICAgICBzaG91
bGRCZShJbnRsLkRhdGVUaW1lRm9ybWF0LmNhbGwobGVnYWN5LCAnZW4tdS1udS1hcmFiJywgeyB0
aW1lWm9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pLmZvcm1hdCgxNDUxMDk5ODcyNjQxKSwg
J9mh2aIv2aLZpS/Zotmg2aHZpScpOwogICAgIHNob3VsZEJlKEludGwuRGF0ZVRpbWVGb3JtYXQu
YXBwbHkoaW5jb21wYXQpICE9PSBpbmNvbXBhdCwgdHJ1ZSk7CisgICAgc2hvdWxkVGhyb3coKCkg
PT4geworICAgICAgICBsZXQgbGVnYWN5ID0gT2JqZWN0LmNyZWF0ZShJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZSk7CisgICAgICAgIEludGwuRGF0ZVRpbWVGb3JtYXQuY2FsbChsZWdhY3kp
OworICAgICAgICBJbnRsLkRhdGVUaW1lRm9ybWF0LmNhbGwobGVnYWN5LCAnZW4tdS1udS1hcmFi
Jyk7CisgICAgfSwgVHlwZUVycm9yKTsKIH0KIAogLy8gRUNNQS00MDIgNHRoIGVkaXRpb24gMTUu
NCBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxlZ2FjeS1jb25zdHJ1Y3RvcnMuanMgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLWxlZ2FjeS1jb25zdHJ1Y3RvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVhOTk3YTI4MGYz
NTA4NjQxZTQ1M2EyZGVkNDczZTY2NzYxNTdlYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2ludGwtbGVnYWN5LWNvbnN0cnVjdG9ycy5qcwpAQCAtMCwwICsxLDEwMCBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1
dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
VHlwZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJy
b3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVj
dGVkICR7ZXJyb3JUeXBlLm5hbWV9IWApOworfQorCitmdW5jdGlvbiB0ZXN0TGVnYWN5Q29uc3Ry
dWN0b3IoY29uc3RydWN0b3IsIHdyb25nT3B0aW9ucykKK3sKKyAgICBsZXQgc3ltYm9sID0gbnVs
bDsKKyAgICB7CisgICAgICAgIGxldCBvYmplY3QgPSBuZXcgY29uc3RydWN0b3IoKTsKKyAgICAg
ICAgbGV0IG5ld09iamVjdCA9IGNvbnN0cnVjdG9yLmNhbGwob2JqZWN0KTsKKyAgICAgICAgc2hv
dWxkQmUob2JqZWN0LCBuZXdPYmplY3QpOworICAgICAgICBsZXQgc3ltYm9scyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMobmV3T2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUoc3ltYm9s
cy5sZW5ndGgsIDEpOworICAgICAgICBzaG91bGRCZShzeW1ib2xzWzBdLmRlc2NyaXB0aW9uLCBg
SW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sYCk7CisgICAgICAgIHNob3VsZEJlKG5ld09iamVj
dFtzeW1ib2xzWzBdXSBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yLCB0cnVlKTsKKyAgICAgICAgc3lt
Ym9sID0gc3ltYm9sc1swXTsKKyAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKG5ld09iamVjdCwgc3ltYm9sKTsKKyAgICAgICAgc2hvdWxkQmUo
ZGVzY3JpcHRvci53cml0YWJsZSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShkZXNjcmlwdG9y
LmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoZGVzY3JpcHRvci5jb25maWd1
cmFibGUsIGZhbHNlKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgb2JqZWN0ID0gbmV3IGNv
bnN0cnVjdG9yKCk7CisgICAgICAgIE9iamVjdC5mcmVlemUob2JqZWN0KTsKKyAgICAgICAgc2hv
dWxkVGhyb3coKCkgPT4gY29uc3RydWN0b3IuY2FsbChvYmplY3QpLCBUeXBlRXJyb3IpOworICAg
IH0KKyAgICB7CisgICAgICAgIGxldCBvYmplY3QgPSB7CisgICAgICAgICAgICBfX3Byb3RvX186
IGNvbnN0cnVjdG9yLnByb3RvdHlwZSwKKyAgICAgICAgICAgIFtzeW1ib2xdOiBuZXcgY29uc3Ry
dWN0b3IoKQorICAgICAgICB9OworICAgICAgICBzaG91bGRCZSh0eXBlb2YgY29uc3RydWN0b3Iu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKG9iamVjdCksIGBvYmplY3RgKTsKKyAgICAg
ICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgY29uc3RydWN0b3IucHJvdG90eXBl
LmZvcm1hdFRvUGFydHMuY2FsbChvYmplY3QpOworICAgICAgICB9LCBUeXBlRXJyb3IpOworICAg
IH0KKyAgICB7CisgICAgICAgIGxldCBvYmplY3QgPSB7IF9fcHJvdG9fXzogY29uc3RydWN0b3Iu
cHJvdG90eXBlIH07CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0cnVjdG9yLmNhbGwob2JqZWN0LCAnZW4nLCB3cm9uZ09wdGlvbnMpOworICAgICAgICB9LCBS
YW5nZUVycm9yKTsKKyAgICB9CisgICAgeworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHko
Y29uc3RydWN0b3IsIFN5bWJvbC5oYXNJbnN0YW5jZSwgeworICAgICAgICAgICAgdmFsdWU6IGZ1
bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCJ0aGlzIHNob3VsZCBub3QgYmUgY2FsbGVkIik7
IH0sCisgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJs
ZTogdHJ1ZSwKKyAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgIH0pOworICAg
ICAgICBsZXQgb2JqZWN0ID0gbmV3IGNvbnN0cnVjdG9yKCk7CisgICAgICAgIGxldCBuZXdPYmpl
Y3QgPSBjb25zdHJ1Y3Rvci5jYWxsKG9iamVjdCk7CisgICAgICAgIHNob3VsZEJlKG9iamVjdCA9
PT0gbmV3T2JqZWN0LCB0cnVlKTsgLy8gU3ltYm9sLmhhc0luc3RhbmNlIHNob3VsZCBiZSBpZ25v
cmVkIGZvciBsZWdhY3kgY29uc3RydWN0b3IuCisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IG9i
amVjdCA9IHsKKyAgICAgICAgICAgIFtzeW1ib2xdOiBuZXcgY29uc3RydWN0b3IoKQorICAgICAg
ICB9OworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IsIFN5bWJvbC5o
YXNJbnN0YW5jZSwgeworICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRy
dWU7IH0sCisgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgIH0pOwor
ICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci5wcm90
b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwob2JqZWN0KTsKKyAgICAgICAgfSwgVHlwZUVycm9y
KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgY29uc3RydWN0b3Iu
cHJvdG90eXBlLmZvcm1hdFRvUGFydHMuY2FsbChvYmplY3QpOworICAgICAgICB9LCBUeXBlRXJy
b3IpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBvYmplY3QgPSB7IF9fcHJvdG9fXzogY29u
c3RydWN0b3IucHJvdG90eXBlIH07CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb25z
dHJ1Y3RvciwgU3ltYm9sLmhhc0luc3RhbmNlLCB7CisgICAgICAgICAgICB2YWx1ZTogZnVuY3Rp
b24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoInRoaXMgd2lsbCBub3QgYmUgY2FsbGVkIik7IH0sCisg
ICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1
ZSwKKyAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgIH0pOworICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci5jYWxsKG9iamVjdCwg
J2VuJywgd3JvbmdPcHRpb25zKTsKKyAgICAgICAgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIGNv
bnN0cnVjdG9yLmNhbGwob2JqZWN0LCAnZW4nKTsKKyAgICB9Cit9CisKK3Rlc3RMZWdhY3lDb25z
dHJ1Y3RvcihJbnRsLk51bWJlckZvcm1hdCwgeyBzdHlsZTogIndyb25nIiB9KTsKK3Rlc3RMZWdh
Y3lDb25zdHJ1Y3RvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCB7IHRpbWVTdHlsZTogIndyb25nIiB9
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMKaW5kZXggODRmOWRkZjhiZTM3ZDc0MzY1
YTU2YzMyNTJlMTc4YWQzM2U1NjI1YS4uODRlYzE5MDdjZWYyNWE5MjQ4ODUxNWRhOGZlNDFjNmE2
MmY5M2JkMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMKQEAgLTQ0Myw4ICs0NDMs
MTUgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlm
ZmVyZW5jZXMpIHsKICAgICBsZXQgbGVnYWN5ID0gT2JqZWN0LmNyZWF0ZShJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUpOwogICAgIGxldCBpbmNvbXBhdCA9IHt9OwogICAgIHNob3VsZEJlKElu
dGwuTnVtYmVyRm9ybWF0LmFwcGx5KGxlZ2FjeSksIGxlZ2FjeSk7CisgICAgbGVnYWN5ID0gT2Jq
ZWN0LmNyZWF0ZShJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUpOwogICAgIHNob3VsZEJlKElu
dGwuTnVtYmVyRm9ybWF0LmNhbGwobGVnYWN5LCAnZW4tdS1udS1hcmFiJykuZm9ybWF0KDEuMjM0
NSksICfZodmr2aLZo9mlJyk7CiAgICAgc2hvdWxkQmUoSW50bC5OdW1iZXJGb3JtYXQuYXBwbHko
aW5jb21wYXQpICE9PSBpbmNvbXBhdCwgdHJ1ZSk7CisKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7
CisgICAgICAgIGxldCBsZWdhY3kgPSBPYmplY3QuY3JlYXRlKEludGwuTnVtYmVyRm9ybWF0LnBy
b3RvdHlwZSk7CisgICAgICAgIEludGwuTnVtYmVyRm9ybWF0LmNhbGwobGVnYWN5KTsKKyAgICAg
ICAgSW50bC5OdW1iZXJGb3JtYXQuY2FsbChsZWdhY3ksICdlbi11LW51LWFyYWInKTsKKyAgICB9
LCBUeXBlRXJyb3IpOwogfQogCiAvLyBCaWdJbnQgdGVzdHMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408058</attachid>
            <date>2020-09-04 18:00:05 -0700</date>
            <delta_ts>2020-09-04 21:53:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216193-20200904180004.patch</filename>
            <type>text/plain</type>
            <size>47971</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MWE5ZDY4NmFiYjVlN2I3ZDQxZmU0Y2ViYzc1ZGJkZmRjZWU4OTE5Li43ZDg0MWVmYzJiYjNmOTUx
MmJiMmQxNTZhMTRlNzBiYzU5YjlhMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAyMC0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFsaWduIGxlZ2FjeSBJbnRsIGNvbnN0cnVjdG9yIGJlaGF2aW9y
IHRvIHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNjE5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IExlZ2FjeSBJbnRsIGNvbnN0cnVjdG9ycyAoSW50bC5EYXRlVGltZUZvcm1hdCBhbmQgSW50bC5O
dW1iZXJGb3JtYXQpIGhhdmUgc3BlY2lhbCBoYW5kbGluZyB3aGVuIGl0IGlzIGNhbGxlZCB2aWEg
YEludGwuRGF0ZVRpbWVGb3JtYXQoKWAgZm9ybS4KKyAgICAgICAgVGhpcyBhbGxvd2VkIGxlZ2Fj
eSBJbnRsIGNvbnN0cnVjdG9ycyB0byBiZSB1c2VkIHdpdGggcHJvdG90eXBlLWJhc2VkIGluaGVy
aXRhbmNlIHdpdGhvdXQgdXNpbmcgY2xhc3Mgc3ludGF4LiBUaGlzIGxlZ2FjeSBiZWhhdmlvciBp
cyBsYXRlciBzcGVjaWZpZWQKKyAgICAgICAgZXhwbGljaXRseSBpbiB0aGUgc3BlYy4gU28gd2Ug
c2hvdWxkIGFsaWduIG91ciBpbXBsZW1lbnRhdGlvbiB0byB0aGUgc3BlYydzIG9uZS4KKworICAg
ICAgICAgICAgMS4gV2hlbiBkZWZpbmluZyBmYWxsYmFjayBmb3JtYXRzLCB3ZSBuZWVkIHRvIHB1
dCB0aGVtIGludG8gdGhlIHByb3BlcnR5IHdoaWNoIGlzIHZpc2libGUgdmlhIFN5bWJvbCgiSW50
bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sIikuCisgICAgICAgICAgICAyLiBFdmVuIGlmIHRoZSBw
cm92aWRlZCB0aGlzVmFsdWUgaXMgSW50bERhdGVUaW1lRm9ybWF0KiAvIEludGxOdW1iZXJGb3Jt
YXQqLCB3ZSBzaG91bGQgY3JlYXRlIGFub3RoZXIgaW5zdGFuY2UgYW5kIHB1dCBpdCB0byBTeW1i
b2woIkludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCIpIGZpZWxkLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlu
cy9CdWlsdGluTmFtZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFtZXM6OkJ1aWx0aW5O
YW1lcyk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgIChKU0M6
OkJ1aWx0aW5OYW1lczo6aW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRs
RGF0ZVRpbWVGb3JtYXQuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2FsbEludGxEYXRlVGltZUZvcm1h
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9u
cyk6CisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQpOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0
cyk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRS
YW5nZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNv
bHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OmNhbGxJbnRsTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnVu
d3JhcEZvck9sZEZ1bmN0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5j
Rm9ybWF0VG9QYXJ0cyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVG
dW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpjcmVhdGVEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6Y3JlYXRlTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE9iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SW50bEluc3RhbmNl
V2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjp1
bndyYXBGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpkYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRh
dGVUaW1lRm9ybWF0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51
bWJlckZvcm1hdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51
bWJlckZvcm1hdFByb3RvdHlwZSk6CisKIDIwMjAtMDktMDQgIEFsZXhleSBTaHZheWthICA8c2h2
YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoIHNob3Vs
ZCBhbHdheXMgcGVyZm9ybSBbW1NldF1dIGluIHN0cmljdCBtb2RlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDM2MTBjMmEyYWY3MTEyNmI5ZjliOTQ5YTQ3MjMwYTY0YzA4MDViNGIu
LjRmNzRkODk5NTZlZTg0MjJiMjU3ZWNlMGM5YjBlMzI0YzcyODA5ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xODQ5LDYgKzE4NDksNyBAQAogCQlFMzZCNzY3MDIyRjhENjE5
MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdh
c21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2
RURDRTUyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyog
Q29uY3VycmVuY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFMzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3
NTBDQzcyNTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLzsg
fTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2FzbUds
b2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4
MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKIAkJRTM4NTBCMTUy
MjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMg
LyogREZHTWluaWZpZWRJRElubGluZXMuaCAqLzsgfTsKQEAgLTUwNDksNiArNTA1MCw3IEBACiAJ
CUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyog
Q29uY3VycmVuY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVu
Y3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3NTBDQzcyNTAyRTg3RTAwNkEw
QUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQz
QUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3Q0ZCMkQy
MkYyN0M1NzAwOUE3QjM4IC8qIFdhc21Db21waWxhdGlvbk1vZGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2FzbUNvbXBpbGF0aW9uTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03MzE4LDYgKzczMjAsNyBAQAogCQkJCUExNTg3RDY4MUI0REMxNDEwMEQ2OTg0OSAvKiBJ
bnRsRGF0ZVRpbWVGb3JtYXQuaCAqLywKIAkJCQlBMTU4N0Q2OTFCNERDMTQxMDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAogCQkJCUExNTg3RDZBMUI0REMx
NDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAorCQkJCUUz
NzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggKi8s
CiAJCQkJQTE1ODdENkIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5jcHAgKi8sCiAJCQkJQTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oICovLAogCQkJCUUzNTNDMTE2MjRBQTRDQjUwMDNGQkRGMyAvKiBJ
bnRsRGlzcGxheU5hbWVzLmNwcCAqLywKQEAgLTk4MjksNiArOTgzMiw3IEBACiAJCQkJQTE1ODdE
NkUxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE1ODdENzAxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTU4N0Q3NTFCNERDMUM2MDBENjk4NDkgLyog
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQlF
Mzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzIxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1ODdENzYxQjREQzFDNjAw
RDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzNTNDMTFEMjRBQTRDQjcwMDNGQkRGMyAvKiBJbnRsRGlzcGxheU5hbWVzLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5jcHAKaW5kZXggYTY4OGU1NWVlNmE2YmFhMzJlMTkxZTc0YzEwZDEyZTM5N2E2NTU3Ny4u
MmEwODg3ZTczZTU3MWYwMDhlODg0ZGIzNDMwNDg2ZDM0MjAwNzIyMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKQEAgLTQxLDYgKzQxLDgg
QEAgbmFtZXNwYWNlIFN5bWJvbHMgewogSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VB
Q0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKQog
I3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUwogCitTeW1ib2xJbXBsOjpT
dGF0aWNTeW1ib2xJbXBsIGludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCB7ICJJbnRsTGVnYWN5
Q29uc3RydWN0ZWRTeW1ib2wiIH07CisKICNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1BSSVZB
VEVfTkFNRVMobmFtZSkgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCBuYW1lIyNQcml2YXRl
TmFtZSB7ICNuYW1lLCBTeW1ib2xJbXBsOjpzX2ZsYWdJc1ByaXZhdGUgfTsKIEpTQ19GT1JFQUNI
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fUFJJVkFURV9OQU1FUykK
IEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElB
TElaRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMpCkBAIC03Niw2ICs3OCw3IEBAIEJ1aWx0aW5OYW1l
czo6QnVpbHRpbk5hbWVzKFZNJiB2bSwgQ29tbW9uSWRlbnRpZmllcnMqIGNvbW1vbklkZW50aWZp
ZXJzKQogICAgIEpTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JV
SUxUSU5fTkFNRVNfSU5fSlNDKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9CVUlMVElOX05BTUVTX0lOX0pTQykKICAgICBK
U0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklU
SUFMSVpFX0JVSUxUSU5fU1lNQk9MU19JTl9KU0MpCisgICAgLCBtX2ludGxMZWdhY3lDb25zdHJ1
Y3RlZFN5bWJvbChKU0M6OklkZW50aWZpZXI6OmZyb21VaWQodm0sICZzdGF0aWNfY2FzdDxTeW1i
b2xJbXBsJj4oU3ltYm9sczo6aW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sKSkpCiAgICAgLCBt
X2RvbGxhclZNTmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiJHZtIikpCiAgICAgLCBt
X2RvbGxhclZNUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgJnN0YXRpY19jYXN0
PFN5bWJvbEltcGwmPihTeW1ib2xzOjpkb2xsYXJWTVByaXZhdGVOYW1lKSkpCiAgICAgLCBtX3Bv
bHlQcm90b1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQodm0sICZzdGF0aWNfY2FzdDxT
eW1ib2xJbXBsJj4oU3ltYm9sczo6cG9seVByb3RvUHJpdmF0ZU5hbWUpKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA3YjE4MGM3MDA0OTQ4
ODFlYmFlYzIzZThmNDJlYjA3ODBiMDY1YjQ1Li4yYjVmOTAyODIwZWJlYjgxZDYyN2ZjMTZmYWVk
N2Q5NDE3MWY1ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCkBAIC0xMTEsNyArMTExLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8o
bmV4dE1ldGhvZCkgXAogICAgIG1hY3JvKGFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCkgXAog
ICAgIG1hY3JvKGRhdGVUaW1lRm9ybWF0KSBcCi0gICAgbWFjcm8oaW50bFN1YnN0aXR1dGVWYWx1
ZSkgXAogICAgIG1hY3JvKHRoaXMpIFwKICAgICBtYWNybyh0aGlzVGltZVZhbHVlKSBcCiAgICAg
bWFjcm8obmV3VGFyZ2V0TG9jYWwpIFwKQEAgLTIxMSw2ICsyMTAsNyBAQCBjbGFzcyBCdWlsdGlu
TmFtZXMgewogICAgIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgZG9sbGFyVk1QdWJsaWNOYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9kb2xsYXJWTU5hbWU7IH0KICAgICBjb25zdCBKU0M6OklkZW50aWZp
ZXImIGRvbGxhclZNUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2RvbGxhclZNUHJpdmF0
ZU5hbWU7IH0KICAgICBjb25zdCBKU0M6OklkZW50aWZpZXImIHBvbHlQcm90b05hbWUoKSBjb25z
dCB7IHJldHVybiBtX3BvbHlQcm90b1ByaXZhdGVOYW1lOyB9CisgICAgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiBpbnRsTGVnYWN5Q29uc3RydWN0ZWRTeW1ib2woKSBjb25zdCB7IHJldHVybiBtX2lu
dGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgY2hlY2tQ
dWJsaWNUb1ByaXZhdGVNYXBDb25zaXN0ZW5jeShVbmlxdWVkU3RyaW5nSW1wbCogcHJpdmF0ZU5h
bWUpOwpAQCAtMjE5LDYgKzIxOSw3IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgSlNDX0ZP
UkVBQ0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9OQU1FU19JTl9KU0Mp
CiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShE
RUNMQVJFX0JVSUxUSU5fTkFNRVNfSU5fSlNDKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVO
VElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xTX0lO
X0pTQykKKyAgICBjb25zdCBKU0M6OklkZW50aWZpZXIgbV9pbnRsTGVnYWN5Q29uc3RydWN0ZWRT
eW1ib2w7CiAgICAgY29uc3QgSlNDOjpJZGVudGlmaWVyIG1fZG9sbGFyVk1OYW1lOwogICAgIGNv
bnN0IEpTQzo6SWRlbnRpZmllciBtX2RvbGxhclZNUHJpdmF0ZU5hbWU7CiAgICAgY29uc3QgSlND
OjpJZGVudGlmaWVyIG1fcG9seVByb3RvUHJpdmF0ZU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBhOTk1NGIxMjg5ZGM3
ZWY5NmFkZTRiOGQ2N2Y2MTAyZmMwYzZhYzZlLi5jMjdjNzNlZmU1MjlkYTQ3NzQ0OGZhZmUzNDk0
NjIxMDJlYjA5MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKQEAgLTMzNSw2ICszMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNk
ZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dM
T0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1N5bWJvbDsKICAgICAgICAgSlNDX0NP
TU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKICN1bmRlZiBK
U0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIgaW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sOwogCiAj
ZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwobmFtZSkg
Y29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlRmllbGQ7CiAgICAgICAgIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJ
VkFURV9GSUVMRF9HTE9CQUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IDliNGMwNmM0OWJiZjdjNThmZGY2NWQyYjUxMzU4
YTI5OTA0N2RkMmMuLjBiZGEyNTk4OTBlZDAzZjMxZWYyZjA1ZGE4MTY1Yzc0MmZmMzUzMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCkBAIC02Nyw2ICs2Nyw4IEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdCBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0
KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91
bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKIAorICAgIHN0YXRpYyBJbnRsRGF0ZVRp
bWVGb3JtYXQqIHVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCiBwcml2YXRlOgogICAgIEludGxEYXRlVGltZUZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNw
cAppbmRleCBhZjZiZTk1NmUyYTU1MGZhNmRiOWQ3NTIxZWQ0NGRkZGM4YmE0NjMwLi5jOWViZTA1
MGM4ZmM1OTA4NDg0YjY2NTc3YWE2ZGZlNTIxZGQwZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCkBAIC03Nyw3ICs3Nyw2IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0UHJvCiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJEYXRlVGltZUZvcm1hdCJfcywgTmFtZUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGRhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7Ci0gICAgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsRGF0ZVRpbWVGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBA
IC0xMTEsNyArMTEwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEludGxEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIC8vIEZJWE1F
OiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBj
YWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTM2NzkKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdElu
dGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPEludGxEYXRl
VGltZUZvcm1hdD4oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLCBjYWxsRnJh
bWUtPmpzQ2FsbGVlKCksIFsmXSAoVk0mIHZtKSB7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1
Y3RvcihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIGNhbGxGcmFtZS0+anND
YWxsZWUoKSwgWyZdIChWTSYgdm0pIHsKICAgICAgICAgLy8gMi4gTGV0IGRhdGVUaW1lRm9ybWF0
IGJlIE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJURhdGVUaW1lRm9y
bWF0UHJvdG90eXBlJSkuCiAgICAgICAgIC8vIDMuIFJldHVybklmQWJydXB0KGRhdGVUaW1lRm9y
bWF0KS4KICAgICAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxE
YXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3Ry
dWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxODlmYjExMTdlMjMzOTUz
OGQwOWYyNzdmZjhmYzY4OTRkM2RjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmgKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisjaW5jbHVkZSAiSW50bERhdGVU
aW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorCituYW1lc3BhY2UgSlNDICB7CisKKy8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hNDAyLyNzZWMtdW53cmFwZGF0ZXRpbWVmb3JtYXQKK2lubGluZSBJbnRsRGF0ZVRpbWVG
b3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJldHVybiB1
bndyYXBGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3I8SW50bERhdGVUaW1lRm9ybWF0PihnbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZ2xvYmFsT2JqZWN0LT5kYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmlu
ZGV4IDhiNzBiZjVkZmU2ZWFmMWE4MDg4YTg2ZjMzYTdmMmMwODY1ZTRiZDIuLjNkNzA5NzdkOWEx
OGUzYjc0ZDNlMDEyZmY0YWQyNGZhMjcwYjFjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVk
ZSAiRGF0ZUNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisj
aW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQm91bmRG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1h
dGguaD4KQEAgLTExMSwxOCArMTExLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEpTR2xvYmFsT2JqCiAKICAg
ICAvLyAxMi4zLjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQw
MiAyLjApCiAgICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4K
LSAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwotCi0gICAgLy8gRklYTUU6IFdv
cmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwv
YXBwbHkgcGF0dGVybnMuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MzY3OQotICAgIGlmICghZHRmKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgICAg
IGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIHZhbHVlKTsKLSAg
ICB9Ci0KKyAgICBhdXRvKiBkdGYgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnVud3JhcEZvck9sZEZ1
bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgLy8gMi4gUmV0dXJuSWZBYnJ1cHQoZHRm
KS4KLSAgICBpZiAoIWR0ZikKKyAgICBpZiAoVU5MSUtFTFkoIWR0ZikpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdCJfcykpOwogCiAg
ICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQoKTsKQEAg
LTE1MCw4ICsxNDIsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGlt
ZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYgogICAgIC8vIDE1LjQgSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyAoRUNNQS00MDIgNC4wKQog
ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLUludGwuRGF0ZVRpbWVG
b3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMKIAotICAgIEludGxEYXRlVGltZUZvcm1hdCog
ZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKLSAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQorICAgIC8v
IERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rpb25zLgorICAgIGF1dG8qIGRhdGVUaW1lRm9y
bWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKFVOTElLRUxZKCFkYXRlVGltZUZvcm1hdCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3Jt
YXQiX3MpKTsKIAogICAgIEpTVmFsdWUgZGF0ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CkBA
IC0xNzMsOCArMTY2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UoSlNHbG9iYWwKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1p
Y0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwot
ICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCisgICAgLy8gRG8gbm90IHVzZSB1bndyYXBGb3JPbGRG
dW5jdGlvbnMuCisgICAgYXV0byogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxE
YXRlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWRhdGVUaW1lRm9ybWF0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EYXRlVGltZUZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIEpTVmFsdWUgc3Rh
cnREYXRlVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwpAQCAtMTk5LDE3ICsxOTMsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2wKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICAvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKLSAgICBJbnRsRGF0ZVRpbWVGb3Jt
YXQqIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAKLSAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0
byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0
ZXJucy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUz
Njc5Ci0gICAgaWYgKCFkYXRlVGltZUZvcm1hdCkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAg
ICBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4odm0s
IHZhbHVlKTsKLSAgICB9Ci0KLSAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQorICAgIGF1dG8qIGRh
dGVUaW1lRm9ybWF0ID0gSW50bERhdGVUaW1lRm9ybWF0Ojp1bndyYXBGb3JPbGRGdW5jdGlvbnMo
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmIChVTkxJS0VMWSghZGF0ZVRpbWVGb3JtYXQpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0
ZVRpbWVGb3JtYXQiX3MpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5o
CmluZGV4IGNkYTRlZjU5NGRkODUwZGYxZmUzYTAwMjcxMjNiZjM3ODEzMTA2MTYuLjMxMWJiOTM2
OGNjMzhkM2UxNzU3NGNhY2E3N2Q4M2Q0ODRhYzI1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKQEAgLTkxLDYgKzkxLDggQEAgY2xh
c3MgSW50bE51bWJlckZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAog
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25TdHJpbmcoSW50bE5vdGF0aW9uKTsKIAor
ICAgIHN0YXRpYyBJbnRsTnVtYmVyRm9ybWF0KiB1bndyYXBGb3JPbGRGdW5jdGlvbnMoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKKwogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZN
JiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZDE3OGNjMGE4YWU1NTU3NDIwMjJjMjQxNWZjYTRjZGY5MGQ5
OTc5MC4uNDJiOTBkZTY2YWExNWI5NmI3NDU4MDc1MDAxYmNjNWFhYjJkZmExNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwCkBAIC03Nyw3ICs3Nyw2IEBAIHZvaWQgSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJOdW1iZXJGb3JtYXQiX3MsIE5hbWVB
ZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBudW1iZXJG
b3JtYXRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKLSAgICBudW1iZXJGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQpA
QCAtMTExLDcgKzExMCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxJbnRsTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAKICAgICAvLyBGSVhN
RTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAg
Y2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUzNjc5Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RJ
bnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxlZ2FjeUludGxDb25zdHJ1Y3RvcjxJbnRsTnVt
YmVyRm9ybWF0PihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIGNhbGxGcmFt
ZS0+anNDYWxsZWUoKSwgWyZdIChWTSYgdm0pIHsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNvbnN0cnVjdEludGxJbnN0YW5jZVdpdGhXb3JrYXJvdW5kRm9yTGVnYWN5SW50bENvbnN0cnVj
dG9yKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSwgY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpLCBbJl0gKFZNJiB2bSkgewogICAgICAgICAvLyAyLiBMZXQgbnVtYmVyRm9ybWF0IGJl
IE9yZGluYXJ5Q3JlYXRlRnJvbUNvbnN0cnVjdG9yKG5ld1RhcmdldCwgJU51bWJlckZvcm1hdFBy
b3RvdHlwZSUpLgogICAgICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChudW1iZXJGb3JtYXQpLgog
ICAgICAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBJbnRsTnVtYmVyRm9ybWF0
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJ
bmxpbmVzLmgKaW5kZXggM2VhOGE3YWYxY2QyMzU1MWU3NDAxMTViNDg1MzFkMGY2ZDdkOGE3YS4u
MDhhMmE0ZTQxZTEzN2FhNzhlZmIyNmE2NDMwOTM3OTgwNjIwYzJiNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5o
CkBAIC0yNSw4ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnVpbHRpbk5h
bWVzLmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgotI2luY2x1ZGUgIkludGxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBKU0MgIHsKQEAgLTEwNSw0ICsxMDYsMTAgQEAgY2xhc3Mg
SW50bEZpZWxkSXRlcmF0b3IgewogICAgIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3ImIG1faXRlcmF0
b3I7CiB9OwogCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLXVud3JhcG51bWJlcmZv
cm1hdAoraW5saW5lIEludGxOdW1iZXJGb3JtYXQqIEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZv
ck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNW
YWx1ZSkKK3sKKyAgICByZXR1cm4gdW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yPEludGxO
dW1iZXJGb3JtYXQ+KGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBnbG9iYWxPYmplY3QtPm51bWJl
ckZvcm1hdENvbnN0cnVjdG9yKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAKaW5kZXggZjg3ZGY2ZWM0NTgzODE5ZmVkYWI1Y2Q0Mjk3NzI1YjNkZjA5MjY4
MS4uZDEyYTcwYjk3NWY1NTZlMDAxYzdkYzYyZDgzNTBlNjYyNDEzZTJhZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAKQEAgLTExNCwxOSArMTE0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdChKU0dsb2JhbE9iamVj
CiAKICAgICAvLyAxMS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAoRUNN
QS00MDIgMi4wKQogICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJlckZvcm1hdCBvYmplY3Qu
Ci0gICAgSW50bE51bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3Jt
YXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Ci0KLSAgICAvLyBGSVhNRTogV29ya2Fy
b3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBs
eSBwYXR0ZXJucy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzNjc5Ci0gICAgaWYgKCFuZikgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAgICBuZiA9
IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCB2YWx1ZSk7Ci0gICAgfQotCi0g
ICAgaWYgKCFuZikKKyAgICBhdXRvKiBuZiA9IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9s
ZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlm
IChVTkxJS0VMWSghbmYpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIE51bWJlckZvcm1hdCJfcykpOwotICAgIAorCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3Vu
ZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3Jt
YXRdXSBpcyB1bmRlZmluZWQsCiAgICAgaWYgKCFib3VuZEZvcm1hdCkgewpAQCAtMTUyLDggKzE0
Myw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3Rv
dHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsCiAgICAgLy8gSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLmZvcm1hdFRvUGFydHMgKEVDTUEtNDAyKQogICAgIC8vIGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwubnVtYmVyZm9ybWF0LnByb3RvdHlwZS5mb3JtYXR0
b3BhcnRzCiAKLSAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWND
YXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Ci0gICAg
aWYgKCFudW1iZXJGb3JtYXQpCisgICAgLy8gRG8gbm90IHVzZSB1bndyYXBGb3JPbGRGdW5jdGlv
bnMuCisgICAgYXV0byogbnVtYmVyRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9y
bWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghbnVt
YmVyRm9ybWF0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1h
dFRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVk
IGFzIGEgTnVtYmVyRm9ybWF0Il9zKSk7CiAKICAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CkBAIC0xNjgsMTcgKzE2MCw5IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgLy8gMTEuMy41IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQotICAgIEludGxOdW1iZXJGb3JtYXQqIG51
bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKLQotICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUg
Y29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKLSAgICBp
ZiAoIW51bWJlckZvcm1hdCkgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgICAgICBudW1iZXJGb3Jt
YXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgdmFsdWUpOwotICAgIH0K
IAotICAgIGlmICghbnVtYmVyRm9ybWF0KQorICAgIGF1dG8qIG51bWJlckZvcm1hdCA9IEludGxO
dW1iZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWSghbnVtYmVyRm9ybWF0KSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3Jt
YXQiX3MpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KG51bWJlckZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9iamVjdCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggYzBmMzliMTMxMjMz
YWQzMzk1ZTkwNmUyOTQxNTFkN2E0MzlkOGE4MS4uMzAxYmRkMTNlYjY3MDNhMzk4ZGRlNjRkNGM0
Mzg1YTQxMTBlMWYwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgSW50bE9i
amVjdCogaW50bE9iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gaW50bE9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsK
LSAgICByZXR1cm4gSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5kYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
PmRhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IoKTsKIH0KIAogc3RhdGljIEpTVmFsdWUgY3JlYXRl
RGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQpAQCAtMTA0
LDcgKzEwNCw3IEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZU51bWJlckZvcm1hdENvbnN0cnVjdG9y
KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0
ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBpbnRsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwotICAgIHJldHVybiBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bE51bWJlckZvcm1hdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqPihn
bG9iYWxPYmplY3QtPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmpl
Y3QoKSkpOworICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm51bWJlckZvcm1hdENvbnN0cnVjdG9y
KCk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsdXJhbFJ1bGVzQ29uc3RydWN0b3IoVk0m
IHZtLCBKU09iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKaW5kZXggYTUzMmQxMWE2M2FlNzIxZDlhYmJkNTA4Y2Y2
ZWIxM2Q4N2M4MzljYS4uZThlM2Y5MTBiMDhmMTRjZjkzZDk3ZjYxNjJkMmNiYjRhMDcwZDY5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5l
cy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNs
dWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KIApAQCAtNTYsNyArNTcs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+IFN0cmluZyBiZXN0QXZhaWxhYmxlTG9j
YWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBQcgogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgSW50bEluc3RhbmNlLCB0eXBlbmFtZSBDb25zdHJ1Y3RvciwgdHlw
ZW5hbWUgRmFjdG9yeT4KK3RlbXBsYXRlPHR5cGVuYW1lIENvbnN0cnVjdG9yLCB0eXBlbmFtZSBG
YWN0b3J5PgogSlNWYWx1ZSBjb25zdHJ1Y3RJbnRsSW5zdGFuY2VXaXRoV29ya2Fyb3VuZEZvckxl
Z2FjeUludGxDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgQ29uc3RydWN0b3IqIGNhbGxlZSwgRmFjdG9yeSBmYWN0b3J5KQogewogICAg
IC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEt
NDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgpAQCAtNjQsMjIgKzY1LDUxIEBAIEpTVmFsdWUg
Y29uc3RydWN0SW50bEluc3RhbmNlV2l0aFdvcmthcm91bmRGb3JMZWdhY3lJbnRsQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICghanNEeW5hbWlj
Q2FzdDxJbnRsSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKSkgewotICAgICAgICBKU1ZhbHVlIHBy
b3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUpOwotICAgICAgICBib29sIGhhc0luc3RhbmNlID0gSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0
YW5jZShnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgcHJvdG90eXBlKTsKKyAgICBhdXRvKiBpbnN0
YW5jZSA9IGZhY3Rvcnkodm0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWUoKSk7CisKKyAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOworICAgICAgICBBU1NFUlQoIWNh
bGxlZS0+dGVtcGxhdGUgaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpOworICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IGNhbGxlZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUpOyAvLyBQYXNzZWQgY29uc3RydWN0b3JzIGFsd2F5cyBoYXZlIGBwcm90b3R5
cGVgIHdoaWNoIGNhbm5vdCBiZSBkZWxldGVkLgorICAgICAgICBBU1NFUlQocHJvdG90eXBlKTsK
KyAgICAgICAgYm9vbCBoYXNJbnN0YW5jZSA9IEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2Uo
Z2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBwcm90b3R5cGUpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoaGFzSW5zdGFuY2UpIHsK
LSAgICAgICAgICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOwotCi0gICAgICAgICAgICBJbnRsSW5zdGFuY2UqIGluc3RhbmNlID0gZmFjdG9yeSh2
bSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwot
Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpLCBpbnN0YW5j
ZSk7CisgICAgICAgICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcihpbnN0YW5jZSwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOworICAgICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOworICAgICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVP
d25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCgpLCBkZXNjcmlwdG9yLCB0
cnVlKTsKICAgICAgICAgICAgIHJldHVybiB0aGlzT2JqZWN0OwogICAgICAgICB9CiAgICAgfQot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZmFjdG9yeSh2bSkpOworICAgIHJldHVybiBp
bnN0YW5jZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSW5zdGFuY2VUeXBlPgorSW5zdGFuY2VU
eXBlKiB1bndyYXBGb3JMZWdhY3lJbnRsQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcikKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCF0aGlzT2Jq
ZWN0KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBpbnN0YW5jZSA9IGpz
RHluYW1pY0Nhc3Q8SW5zdGFuY2VUeXBlKj4odm0sIHRoaXNPYmplY3QpOworICAgIGlmIChMSUtF
TFkoaW5zdGFuY2UpKQorICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisKKyAgICBBU1NFUlQoIWNv
bnN0cnVjdG9yLT50ZW1wbGF0ZSBpbmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KHZtKSk7CisgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSBjb25zdHJ1Y3Rvci0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUpOyAvLyBQYXNzZWQgY29uc3RydWN0b3JzIGFsd2F5cyBoYXZlIGBw
cm90b3R5cGVgIHdoaWNoIGNhbm5vdCBiZSBkZWxldGVkLgorICAgIEFTU0VSVChwcm90b3R5cGUp
OworICAgIGJvb2wgaGFzSW5zdGFuY2UgPSBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGds
b2JhbE9iamVjdCwgdGhpc09iamVjdCwgcHJvdG90eXBlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICBpZiAoIWhhc0luc3RhbmNlKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIEpTVmFsdWUgdmFsdWUgPSB0aGlzT2JqZWN0LT5nZXQoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsTGVnYWN5Q29uc3Ry
dWN0ZWRTeW1ib2woKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SW5zdGFuY2VUeXBlKj4odm0sIHZhbHVlKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAwZjM0ODM0NjA1NTBlYmE2M2Yz
YjY4YjhmN2Q2Yjg0NDA5OGY0MzM1Li4yYjQzNjc5YWVhNzVkMTViZjkxM2E3YjBjMjcyNGRlYzE5
MDAwNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC03NCwxMiArNzQsMTQgQEAKICNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIK
ICNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxE
aXNwbGF5TmFtZXMuaCIKICNpbmNsdWRlICJJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKQEAg
LTk5OCwxMiArMTAwMCw2IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUg
IyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBJ
bnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9yUHJvdG90eXBlID0gSW50bENvbGxhdG9yUHJv
dG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsQ29sbGF0b3JQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICAgICAgICAgIGluaXQuc2V0KEludGxDb2xsYXRvcjo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgY29sbGF0b3JQcm90b3R5cGUp
KTsKICAgICAgICAgfSk7Ci0gICAgbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIo
Ci0gICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7Ci0gICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lcik7Ci0gICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
OjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKLSAgICAgICAgICAgIGluaXQuc2V0KEludGxEYXRlVGltZUZv
cm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUpKTsKLSAgICAgICAgfSk7CiAgICAgbV9kaXNwbGF5TmFtZXNTdHJ1Y3R1cmUu
aW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5p
dCkgewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxK
U0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpAQCAtMTAxNiwxMiArMTAxMiw2IEBAIGNhcGl0
YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJl
RmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlKiBsb2Nh
bGVQcm90b3R5cGUgPSBJbnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgSW50bExv
Y2FsZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAgICAgICAgICAgaW5pdC5zZXQoSW50
bExvY2FsZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgbG9jYWxlUHJv
dG90eXBlKSk7CiAgICAgICAgIH0pOwotICAgIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmluaXRM
YXRlcigKLSAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsK
LSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKTsKLSAgICAgICAgICAgIEludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUqIG51bWJlckZvcm1hdFByb3RvdHlwZSA9IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6
OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpKTsKLSAgICAgICAgICAgIGluaXQuc2V0KEludGxOdW1iZXJGb3JtYXQ6
OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIG51bWJlckZvcm1hdFByb3Rv
dHlwZSkpOwotICAgICAgICB9KTsKICAgICBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmluaXRMYXRl
cigKICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKTsKQEAgLTEwNTIsNiArMTA0MiwyMCBAQCBjYXBpdGFsTmFtZSAj
IyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBj
YXBpdGFsTmFtZQogICAgICAgICAgICAgSW50bFNlZ21lbnRzUHJvdG90eXBlKiBzZWdtZW50c1By
b3RvdHlwZSA9IEludGxTZWdtZW50c1Byb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9i
amVjdCwgSW50bFNlZ21lbnRzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiAgICAgICAgICAg
ICBpbml0LnNldChJbnRsU2VnbWVudHM6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxP
YmplY3QsIHNlZ21lbnRzUHJvdG90eXBlKSk7CiAgICAgICAgIH0pOworCisgICAgbV9kYXRlVGlt
ZUZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1
cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShJ
bnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5p
dC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5vYmplY3RQcm90b3R5cGUoKSkpKTsKKyAgICAgICAgICAg
IGluaXQuc2V0U3RydWN0dXJlKEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGluaXQuZ2xvYmFsLCBpbml0LnByb3RvdHlwZSkpOworICAgICAgICAgICAgaW5pdC5z
ZXRDb25zdHJ1Y3RvcihJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQu
dm0sIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0
PEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSo+KGluaXQucHJvdG90eXBlKSkpOworICAgICAg
ICB9KTsKKyAgICBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtd
IChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICBp
bml0LnNldFByb3RvdHlwZShJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52
bSwgaW5pdC5nbG9iYWwsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm9iamVjdFByb3RvdHlwZSgpKSkp
OworICAgICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSW50bE51bWJlckZvcm1hdDo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0LnByb3RvdHlwZSkpOworICAgICAg
ICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNy
ZWF0ZShpbml0LnZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPmZ1bmN0aW9uUHJvdG90eXBlKCkp
LCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSo+KGluaXQucHJvdG90eXBlKSkpOwor
ICAgICAgICB9KTsKKwogICAgIG1fZGVmYXVsdENvbGxhdG9yLmluaXRMYXRlcigKICAgICAgICAg
W10gKGNvbnN0IEluaXRpYWxpemVyPEludGxDb2xsYXRvcj4mIGluaXQpIHsKICAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKTsKQEAgLTE4ODMsMTUgKzE4ODcsMTUgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAg
dGhpc09iamVjdC0+bV9kZWZhdWx0Q29sbGF0b3IudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09i
amVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0
LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fZGlzcGxheU5hbWVzU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHRoaXNPYmpl
Y3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmpl
Y3QtPm1fbG9jYWxlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
cGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9y
ZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9zZWdtZW50SXRlcmF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09i
amVjdC0+bV9zZWdtZW50ZXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9zZWdtZW50c1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5t
X2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3Qt
Pm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fbnVsbFNldHRlckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDMzMGU1YjBlNjdmNmRjMjY5
MWJlZDRiZDMxNGY3YzNkMzdlMjM0YTYuLmYwNmU0MTIyNDA3OTBiMzU2Mzk3ZmMxYmZiOGNmYzhm
MzY5NjViYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaApAQCAtMjk2LDE1ICsyOTYsMTUgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7Ci0gICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
ZGlzcGxheU5hbWVzU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
U3RydWN0dXJlPiBtX2xvY2FsZVN0cnVjdHVyZTsKLSAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcmVsYXRpdmVUaW1l
Rm9ybWF0U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0
dXJlPiBtX3NlZ21lbnRJdGVyYXRvclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9zZWdtZW50ZXJTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fc2VnbWVudHNTdHJ1Y3R1cmU7CisgICAg
TGF6eUNsYXNzU3RydWN0dXJlIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CisgICAgTGF6eUNs
YXNzU3RydWN0dXJlIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlOwogCiAgICAgV3JpdGVCYXJyaWVy
PE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVuY3Rpb247CiAgICAgV3JpdGVCYXJy
aWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4gbV9udWxsU2V0dGVyRnVuY3Rpb247CkBAIC04MTgsNiAr
ODE4LDExIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogc2VnbWVudGVyU3RydWN0dXJlKCkgeyByZXR1cm4g
bV9zZWdtZW50ZXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBzZWdtZW50
c1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fc2VnbWVudHNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAK
KyAgICBKU09iamVjdCogZGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcigpIHsgcmV0dXJuIG1fZGF0
ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyk7IH0KKyAgICBKU09iamVjdCog
ZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUoKSB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0
dXJlLnByb3RvdHlwZSh0aGlzKTsgfQorICAgIEpTT2JqZWN0KiBudW1iZXJGb3JtYXRDb25zdHJ1
Y3RvcigpIHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMp
OyB9CisgICAgSlNPYmplY3QqIG51bWJlckZvcm1hdFByb3RvdHlwZSgpIHsgcmV0dXJuIG1fbnVt
YmVyRm9ybWF0U3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsgfQorCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIGJvb2wgcmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIwZjhlZTNi
ZjYzZWQ1MjQ2NmRkM2FkNTM1Y2MxYmRjNzgyN2VlNmUuLjg2MWIzYTEzODI5Y2E3YTRlMGFmYWQ2
MjY3ZTJmYTBiZjY2ZDUxMzMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDktMDQgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBbGlnbiBsZWdhY3kgSW50
bCBjb25zdHJ1Y3RvciBiZWhhdmlvciB0byBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYxOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLWRhdGV0aW1lZm9ybWF0LmpzOgor
ICAgICAgICAqIHN0cmVzcy9pbnRsLWxlZ2FjeS1jb25zdHJ1Y3RvcnMuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAodGVzdExl
Z2FjeUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBzdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanM6
CisKIDIwMjAtMDktMDQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgog
CiAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoIHNob3VsZCBhbHdheXMgcGVyZm9ybSBbW1Nl
dF1dIGluIHN0cmljdCBtb2RlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRhdGV0
aW1lZm9ybWF0LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kYXRldGltZWZvcm1hdC5qcwppbmRl
eCA0MmE5NjE3MDA4NTBmYzE0ZmU4MGYwYmYyZDJmNzFlZThhMzY3NzRiLi5iYzE0ZTE5OTgxODhh
ZWI0MTUxMGRlZGRhOTVkYWUxM2M1NmJjM2FlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9p
bnRsLWRhdGV0aW1lZm9ybWF0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtZGF0ZXRpbWVm
b3JtYXQuanMKQEAgLTU2MCw4ICs1NjAsMTQgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JUeXBlKSB7CiAgICAgbGV0IGxlZ2FjeSA9IE9iamVjdC5jcmVhdGUoSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUpOwogICAgIGxldCBpbmNvbXBhdCA9IHt9OwogICAgIHNob3VsZEJl
KEludGwuRGF0ZVRpbWVGb3JtYXQuYXBwbHkobGVnYWN5KSwgbGVnYWN5KTsKKyAgICBsZWdhY3kg
PSBPYmplY3QuY3JlYXRlKEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlKTsKICAgICBzaG91
bGRCZShJbnRsLkRhdGVUaW1lRm9ybWF0LmNhbGwobGVnYWN5LCAnZW4tdS1udS1hcmFiJywgeyB0
aW1lWm9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pLmZvcm1hdCgxNDUxMDk5ODcyNjQxKSwg
J9mh2aIv2aLZpS/Zotmg2aHZpScpOwogICAgIHNob3VsZEJlKEludGwuRGF0ZVRpbWVGb3JtYXQu
YXBwbHkoaW5jb21wYXQpICE9PSBpbmNvbXBhdCwgdHJ1ZSk7CisgICAgc2hvdWxkVGhyb3coKCkg
PT4geworICAgICAgICBsZXQgbGVnYWN5ID0gT2JqZWN0LmNyZWF0ZShJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZSk7CisgICAgICAgIEludGwuRGF0ZVRpbWVGb3JtYXQuY2FsbChsZWdhY3kp
OworICAgICAgICBJbnRsLkRhdGVUaW1lRm9ybWF0LmNhbGwobGVnYWN5LCAnZW4tdS1udS1hcmFi
Jyk7CisgICAgfSwgVHlwZUVycm9yKTsKIH0KIAogLy8gRUNNQS00MDIgNHRoIGVkaXRpb24gMTUu
NCBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxlZ2FjeS1jb25zdHJ1Y3RvcnMuanMgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLWxlZ2FjeS1jb25zdHJ1Y3RvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVhOTk3YTI4MGYz
NTA4NjQxZTQ1M2EyZGVkNDczZTY2NzYxNTdlYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2ludGwtbGVnYWN5LWNvbnN0cnVjdG9ycy5qcwpAQCAtMCwwICsxLDEwMCBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1
dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
VHlwZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJy
b3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVj
dGVkICR7ZXJyb3JUeXBlLm5hbWV9IWApOworfQorCitmdW5jdGlvbiB0ZXN0TGVnYWN5Q29uc3Ry
dWN0b3IoY29uc3RydWN0b3IsIHdyb25nT3B0aW9ucykKK3sKKyAgICBsZXQgc3ltYm9sID0gbnVs
bDsKKyAgICB7CisgICAgICAgIGxldCBvYmplY3QgPSBuZXcgY29uc3RydWN0b3IoKTsKKyAgICAg
ICAgbGV0IG5ld09iamVjdCA9IGNvbnN0cnVjdG9yLmNhbGwob2JqZWN0KTsKKyAgICAgICAgc2hv
dWxkQmUob2JqZWN0LCBuZXdPYmplY3QpOworICAgICAgICBsZXQgc3ltYm9scyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMobmV3T2JqZWN0KTsKKyAgICAgICAgc2hvdWxkQmUoc3ltYm9s
cy5sZW5ndGgsIDEpOworICAgICAgICBzaG91bGRCZShzeW1ib2xzWzBdLmRlc2NyaXB0aW9uLCBg
SW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sYCk7CisgICAgICAgIHNob3VsZEJlKG5ld09iamVj
dFtzeW1ib2xzWzBdXSBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yLCB0cnVlKTsKKyAgICAgICAgc3lt
Ym9sID0gc3ltYm9sc1swXTsKKyAgICAgICAgbGV0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKG5ld09iamVjdCwgc3ltYm9sKTsKKyAgICAgICAgc2hvdWxkQmUo
ZGVzY3JpcHRvci53cml0YWJsZSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShkZXNjcmlwdG9y
LmVudW1lcmFibGUsIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoZGVzY3JpcHRvci5jb25maWd1
cmFibGUsIGZhbHNlKTsKKyAgICB9CisgICAgeworICAgICAgICBsZXQgb2JqZWN0ID0gbmV3IGNv
bnN0cnVjdG9yKCk7CisgICAgICAgIE9iamVjdC5mcmVlemUob2JqZWN0KTsKKyAgICAgICAgc2hv
dWxkVGhyb3coKCkgPT4gY29uc3RydWN0b3IuY2FsbChvYmplY3QpLCBUeXBlRXJyb3IpOworICAg
IH0KKyAgICB7CisgICAgICAgIGxldCBvYmplY3QgPSB7CisgICAgICAgICAgICBfX3Byb3RvX186
IGNvbnN0cnVjdG9yLnByb3RvdHlwZSwKKyAgICAgICAgICAgIFtzeW1ib2xdOiBuZXcgY29uc3Ry
dWN0b3IoKQorICAgICAgICB9OworICAgICAgICBzaG91bGRCZSh0eXBlb2YgY29uc3RydWN0b3Iu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKG9iamVjdCksIGBvYmplY3RgKTsKKyAgICAg
ICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgY29uc3RydWN0b3IucHJvdG90eXBl
LmZvcm1hdFRvUGFydHMuY2FsbChvYmplY3QpOworICAgICAgICB9LCBUeXBlRXJyb3IpOworICAg
IH0KKyAgICB7CisgICAgICAgIGxldCBvYmplY3QgPSB7IF9fcHJvdG9fXzogY29uc3RydWN0b3Iu
cHJvdG90eXBlIH07CisgICAgICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgICAgIGNv
bnN0cnVjdG9yLmNhbGwob2JqZWN0LCAnZW4nLCB3cm9uZ09wdGlvbnMpOworICAgICAgICB9LCBS
YW5nZUVycm9yKTsKKyAgICB9CisgICAgeworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHko
Y29uc3RydWN0b3IsIFN5bWJvbC5oYXNJbnN0YW5jZSwgeworICAgICAgICAgICAgdmFsdWU6IGZ1
bmN0aW9uICgpIHsgdGhyb3cgbmV3IEVycm9yKCJ0aGlzIHNob3VsZCBub3QgYmUgY2FsbGVkIik7
IH0sCisgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJs
ZTogdHJ1ZSwKKyAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgIH0pOworICAg
ICAgICBsZXQgb2JqZWN0ID0gbmV3IGNvbnN0cnVjdG9yKCk7CisgICAgICAgIGxldCBuZXdPYmpl
Y3QgPSBjb25zdHJ1Y3Rvci5jYWxsKG9iamVjdCk7CisgICAgICAgIHNob3VsZEJlKG9iamVjdCA9
PT0gbmV3T2JqZWN0LCB0cnVlKTsgLy8gU3ltYm9sLmhhc0luc3RhbmNlIHNob3VsZCBiZSBpZ25v
cmVkIGZvciBsZWdhY3kgY29uc3RydWN0b3IuCisgICAgfQorICAgIHsKKyAgICAgICAgbGV0IG9i
amVjdCA9IHsKKyAgICAgICAgICAgIFtzeW1ib2xdOiBuZXcgY29uc3RydWN0b3IoKQorICAgICAg
ICB9OworICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IsIFN5bWJvbC5o
YXNJbnN0YW5jZSwgeworICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRy
dWU7IH0sCisgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIGNvbmZpZ3Vy
YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgIH0pOwor
ICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci5wcm90
b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwob2JqZWN0KTsKKyAgICAgICAgfSwgVHlwZUVycm9y
KTsKKyAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICAgICAgY29uc3RydWN0b3Iu
cHJvdG90eXBlLmZvcm1hdFRvUGFydHMuY2FsbChvYmplY3QpOworICAgICAgICB9LCBUeXBlRXJy
b3IpOworICAgIH0KKyAgICB7CisgICAgICAgIGxldCBvYmplY3QgPSB7IF9fcHJvdG9fXzogY29u
c3RydWN0b3IucHJvdG90eXBlIH07CisgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb25z
dHJ1Y3RvciwgU3ltYm9sLmhhc0luc3RhbmNlLCB7CisgICAgICAgICAgICB2YWx1ZTogZnVuY3Rp
b24gKCkgeyB0aHJvdyBuZXcgRXJyb3IoInRoaXMgd2lsbCBub3QgYmUgY2FsbGVkIik7IH0sCisg
ICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1
ZSwKKyAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCisgICAgICAgIH0pOworICAgICAgICBz
aG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci5jYWxsKG9iamVjdCwg
J2VuJywgd3JvbmdPcHRpb25zKTsKKyAgICAgICAgfSwgUmFuZ2VFcnJvcik7CisgICAgICAgIGNv
bnN0cnVjdG9yLmNhbGwob2JqZWN0LCAnZW4nKTsKKyAgICB9Cit9CisKK3Rlc3RMZWdhY3lDb25z
dHJ1Y3RvcihJbnRsLk51bWJlckZvcm1hdCwgeyBzdHlsZTogIndyb25nIiB9KTsKK3Rlc3RMZWdh
Y3lDb25zdHJ1Y3RvcihJbnRsLkRhdGVUaW1lRm9ybWF0LCB7IHRpbWVTdHlsZTogIndyb25nIiB9
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMKaW5kZXggODRmOWRkZjhiZTM3ZDc0MzY1
YTU2YzMyNTJlMTc4YWQzM2U1NjI1YS4uZmFjYWRjYTBlMzE1NGU2ZWVhZmIyMzEyZWRhZmI5OTNi
ZTNiZjYxOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMKQEAgLTQ0Myw4ICs0NDMs
MTQgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlm
ZmVyZW5jZXMpIHsKICAgICBsZXQgbGVnYWN5ID0gT2JqZWN0LmNyZWF0ZShJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUpOwogICAgIGxldCBpbmNvbXBhdCA9IHt9OwogICAgIHNob3VsZEJlKElu
dGwuTnVtYmVyRm9ybWF0LmFwcGx5KGxlZ2FjeSksIGxlZ2FjeSk7CisgICAgbGVnYWN5ID0gT2Jq
ZWN0LmNyZWF0ZShJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUpOwogICAgIHNob3VsZEJlKElu
dGwuTnVtYmVyRm9ybWF0LmNhbGwobGVnYWN5LCAnZW4tdS1udS1hcmFiJykuZm9ybWF0KDEuMjM0
NSksICfZodmr2aLZo9mlJyk7CiAgICAgc2hvdWxkQmUoSW50bC5OdW1iZXJGb3JtYXQuYXBwbHko
aW5jb21wYXQpICE9PSBpbmNvbXBhdCwgdHJ1ZSk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gewor
ICAgICAgICBsZXQgbGVnYWN5ID0gT2JqZWN0LmNyZWF0ZShJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUpOworICAgICAgICBJbnRsLk51bWJlckZvcm1hdC5jYWxsKGxlZ2FjeSk7CisgICAgICAg
IEludGwuTnVtYmVyRm9ybWF0LmNhbGwobGVnYWN5LCAnZW4tdS1udS1hcmFiJyk7CisgICAgfSwg
VHlwZUVycm9yKTsKIH0KIAogLy8gQmlnSW50IHRlc3RzCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>