<?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>189231</bug_id>
          
          <creation_ts>2018-09-02 07:04:57 -0700</creation_ts>
          <short_desc>[WTF] Add Markable&lt;T, Traits&gt;</short_desc>
          <delta_ts>2018-09-11 08:54:37 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>189236</blocked>
    
    <blocked>187460</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1456029</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-02 07:04:57 -0700</bug_when>
    <thetext>std::optional&lt;T&gt; is super nice. We can represent a value with nullopt by using std::optional&lt;T&gt;.
However, as you know, std::optional&lt;T&gt; has storage efficiency problem. It always has a bool indicating that the value is nullopt or not.
If you have a class like,

class A {
    std::optional&lt;MonotonicTime&gt; m_timeA;
    std::optional&lt;MonotonicTime&gt; m_timeB;
    std::optional&lt;MonotonicTime&gt; m_timeC;
};

This class has significant amount of padding between m_timeA / m_timeB, m_timeB / m_timeC due to the above bool.


If we know that MonotonicTime has a value that represents invalid, we can use it instead and save the storage.
This is very similar problem to our HashTable implementation. In our HashTable implementation, we need Deleted / Empty value, which can represent Deleted and Empty values without sacrificing storage efficiency.

So, we should have similar mechanism here. In this patch, we have WTF::CompactOptional&lt;T, Traits&gt;. Traits offers Traits::isEmptyValue() and the way to generate an empty value.
Then, we use this empty value instead of having bool flag. This way, we can make `sizeof(WTF::CompactOptional&lt;T&gt;) == sizeof(T)`.

This idea is inspired from https://github.com/akrzemi1/markable. But we would like to have WTF::CompactOptional&lt;T&gt; here instead of importing it since,

1. We would like to have more integrated interface to std:optional&lt;T&gt;. We would like to have CompactOptional(std::optional&lt;T&gt;) constructor.
2. We would like to integrate existing `isEmptyValue()` mechanism for HashTable easily into CompactOptional&lt;T&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456030</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-02 07:07:37 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #0)
&gt; std::optional&lt;T&gt; is super nice. We can represent a value with nullopt by
&gt; using std::optional&lt;T&gt;.
&gt; However, as you know, std::optional&lt;T&gt; has storage efficiency problem. It
&gt; always has a bool indicating that the value is nullopt or not.
&gt; If you have a class like,
&gt; 
&gt; class A {
&gt;     std::optional&lt;MonotonicTime&gt; m_timeA;
&gt;     std::optional&lt;MonotonicTime&gt; m_timeB;
&gt;     std::optional&lt;MonotonicTime&gt; m_timeC;
&gt; };
&gt; 
&gt; This class has significant amount of padding between m_timeA / m_timeB,
&gt; m_timeB / m_timeC due to the above bool.
&gt; 
&gt; 
&gt; If we know that MonotonicTime has a value that represents invalid, we can
&gt; use it instead and save the storage.
&gt; This is very similar problem to our HashTable implementation. In our
&gt; HashTable implementation, we need Deleted / Empty value, which can represent
&gt; Deleted and Empty values without sacrificing storage efficiency.
&gt; 
&gt; So, we should have similar mechanism here. In this patch, we have
&gt; WTF::CompactOptional&lt;T, Traits&gt;. Traits offers Traits::isEmptyValue() and
&gt; the way to generate an empty value.
&gt; Then, we use this empty value instead of having bool flag. This way, we can
&gt; make `sizeof(WTF::CompactOptional&lt;T&gt;) == sizeof(T)`.
&gt; 
&gt; This idea is inspired from https://github.com/akrzemi1/markable. But we
&gt; would like to have WTF::CompactOptional&lt;T&gt; here instead of importing it
&gt; since,
&gt; 
&gt; 1. We would like to have more integrated interface to std:optional&lt;T&gt;. We
&gt; would like to have CompactOptional(std::optional&lt;T&gt;) constructor.
&gt; 2. We would like to integrate existing `isEmptyValue()` mechanism for
&gt; HashTable easily into CompactOptional&lt;T&gt;.

And we want the interface converting CompactOptional&lt;T&gt; to std::optional&lt;T&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456090</commentid>
    <comment_count>2</comment_count>
      <attachid>348749</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-02 12:49:09 -0700</bug_when>
    <thetext>Created attachment 348749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456091</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-02 12:51:58 -0700</bug_when>
    <thetext>Attachment 348749 did not pass style-queue:


ERROR: Source/WTF/wtf/CompactOptional.h:130:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/CompactOptional.h:131:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/CompactOptional.h:138:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456092</commentid>
    <comment_count>4</comment_count>
      <attachid>348750</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-02 12:58:24 -0700</bug_when>
    <thetext>Created attachment 348750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456093</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-02 12:59:55 -0700</bug_when>
    <thetext>Attachment 348750 did not pass style-queue:


ERROR: Source/WTF/wtf/CompactOptional.h:130:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/CompactOptional.h:131:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/CompactOptional.h:138:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456095</commentid>
    <comment_count>6</comment_count>
      <attachid>348751</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-02 13:47:17 -0700</bug_when>
    <thetext>Created attachment 348751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456096</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-02 13:49:10 -0700</bug_when>
    <thetext>Attachment 348751 did not pass style-queue:


ERROR: Source/WTF/wtf/CompactOptional.h:130:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/CompactOptional.h:131:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/CompactOptional.h:138:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456125</commentid>
    <comment_count>8</comment_count>
      <attachid>348761</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-03 01:33:28 -0700</bug_when>
    <thetext>Created attachment 348761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456128</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-03 01:35:04 -0700</bug_when>
    <thetext>Attachment 348761 did not pass style-queue:


ERROR: Source/WTF/wtf/CompactOptional.h:130:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/CompactOptional.h:131:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/CompactOptional.h:138:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456312</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-09-04 08:38:00 -0700</bug_when>
    <thetext>Sam is working on a class to hold a group of optionals with an OptionSet, which may end up with a similar name, but doesn&apos;t use magic values. I wonder if the name of the class in this patch should be more like Markable to avoid confusion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456445</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-09-04 13:54:31 -0700</bug_when>
    <thetext>I think CompactOptional is fine for this. The other class will be about multiple optionals so will probably have a different name (and if not, we can rename then). I filed a bug about that idea (plus a proof of concept) at https://bugs.webkit.org/show_bug.cgi?id=189272.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457020</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-06 03:35:42 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #11)
&gt; I think CompactOptional is fine for this. The other class will be about
&gt; multiple optionals so will probably have a different name (and if not, we
&gt; can rename then). I filed a bug about that idea (plus a proof of concept) at
&gt; https://bugs.webkit.org/show_bug.cgi?id=189272.

Either is OK to me. The name CompactOptional is aligned to the name of WTF::CompactPointerTuple.
CompactOptional is effective if the T has a sparse value, or T includes a failure value. Otherwise, std::optional&lt;&gt; or Sam&apos;s set are effective!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458023</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-09 07:28:48 -0700</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458024</commentid>
    <comment_count>14</comment_count>
      <attachid>349286</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-09 07:35:33 -0700</bug_when>
    <thetext>Created attachment 349286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458025</commentid>
    <comment_count>15</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-09-09 07:39:30 -0700</bug_when>
    <thetext>Attachment 349286 did not pass style-queue:


ERROR: Source/WTF/wtf/Markable.h:130:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WTF/wtf/Markable.h:131:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/Markable.h:138:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458157</commentid>
    <comment_count>16</comment_count>
      <attachid>349286</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-10 10:52:04 -0700</bug_when>
    <thetext>Comment on attachment 349286
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458164</commentid>
    <comment_count>17</comment_count>
      <attachid>349286</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-10 11:19:18 -0700</bug_when>
    <thetext>Comment on attachment 349286
Patch

Clearing flags on attachment: 349286

Committed r235852: &lt;https://trac.webkit.org/changeset/235852&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458165</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-10 11:19:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458166</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-10 11:20:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/44310013&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458220</commentid>
    <comment_count>20</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-09-10 14:06:43 -0700</bug_when>
    <thetext>I think we need to re-visting the name Markable&lt;&gt;. Markable&lt;&gt; sounds too much like it&apos;s related to GC marking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458437</commentid>
    <comment_count>21</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-11 02:57:56 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #20)
&gt; I think we need to re-visting the name Markable&lt;&gt;. Markable&lt;&gt; sounds too
&gt; much like it&apos;s related to GC marking.

Is CompactOptional better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458464</commentid>
    <comment_count>22</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-09-11 08:30:29 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #21)
&gt; (In reply to Simon Fraser (smfr) from comment #20)
&gt; &gt; I think we need to re-visting the name Markable&lt;&gt;. Markable&lt;&gt; sounds too
&gt; &gt; much like it&apos;s related to GC marking.
&gt; 
&gt; Is CompactOptional better?

Somewhat, but it would be nice to find a name that communicate the fact that this kind of optional requires magic values. Maybe ReservedValueOptional&lt;&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458468</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-11 08:54:37 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #22)
&gt; (In reply to Yusuke Suzuki from comment #21)
&gt; &gt; (In reply to Simon Fraser (smfr) from comment #20)
&gt; &gt; &gt; I think we need to re-visting the name Markable&lt;&gt;. Markable&lt;&gt; sounds too
&gt; &gt; &gt; much like it&apos;s related to GC marking.
&gt; &gt; 
&gt; &gt; Is CompactOptional better?
&gt; 
&gt; Somewhat, but it would be nice to find a name that communicate the fact that
&gt; this kind of optional requires magic values. Maybe ReservedValueOptional&lt;&gt;?

Or IntrusiveOptional? (since empty optional value is intrusively implemented by the type T).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348749</attachid>
            <date>2018-09-02 12:49:09 -0700</date>
            <delta_ts>2018-09-02 12:58:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189231-20180903044907.patch</filename>
            <type>text/plain</type>
            <size>25239</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM3OTQyYmM4NTc4NmQzODNlNWZlYTJj
YWNmYTk0OTBhMjEwMmU0YmMuLmMyNjkxMmRmNDlhMGI4NzYyMTQ1NTdmOGNiYTdlZWRmNjBmYmVl
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTgtMDktMDIgIFl1c3VrZSBTdXp1a2kgIDx5dXN1
a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbV1RGXSBBZGQgQ29tcGFjdE9wdGlv
bmFsPFQsIFRyYWl0cz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4OTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIGNhbiByZXByZXNlbnQgYSB2YWx1ZSB3aXRoIG51bGxvcHQgYnkgdXNpbmcgc3Rk
OjpvcHRpb25hbDxUPi4gSG93ZXZlciwgYXMgeW91IGtub3csIHN0ZDo6b3B0aW9uYWw8VD4gaGFz
CisgICAgICAgIHN0b3JhZ2UgZWZmaWNpZW5jeSBwcm9ibGVtLiBJdCBhbHdheXMgaGFzIGEgYm9v
bCBpbmRpY2F0aW5nIHRoYXQgdGhlIHZhbHVlIGlzIG51bGxvcHQgb3Igbm90LiBJZiB5b3UgaGF2
ZSBhCisgICAgICAgIGNsYXNzIGxpa2UsCisKKyAgICAgICAgICAgIGNsYXNzIEEgeworICAgICAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fdGltZUE7CisgICAgICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV90aW1lQjsKKyAgICAgICAgICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBtX3RpbWVDOworICAgICAgICAgICAgfTsKKworICAgICAgICBU
aGlzIGNsYXNzIGhhcyBzaWduaWZpY2FudCBhbW91bnQgb2YgcGFkZGluZyBiZXR3ZWVuIG1fdGlt
ZUEgLyBtX3RpbWVCLCBtX3RpbWVCIC8gbV90aW1lQyBkdWUgdG8gdGhlIGFib3ZlIGJvb2wuCisK
KyAgICAgICAgSWYgd2Uga25vdyB0aGF0IFdhbGxUaW1lIGhhcyBhIHZhbHVlIHRoYXQgcmVwcmVz
ZW50cyBpbnZhbGlkLCB3ZSBjYW4gdXNlIGl0IGluc3RlYWQgYW5kIHNhdmUgdGhlIHN0b3JhZ2Uu
CisgICAgICAgIFRoaXMgaXMgdmVyeSBzaW1pbGFyIHByb2JsZW0gdG8gb3VyIEhhc2hUYWJsZSBp
bXBsZW1lbnRhdGlvbi4gSW4gb3VyIEhhc2hUYWJsZSBpbXBsZW1lbnRhdGlvbiwgd2UgbmVlZCBE
ZWxldGVkCisgICAgICAgIGFuZCBFbXB0eSB2YWx1ZSwgd2hpY2ggY2FuIHJlcHJlc2VudCBEZWxl
dGVkIGFuZCBFbXB0eSB2YWx1ZXMgd2l0aG91dCBzYWNyaWZpY2luZyBzdG9yYWdlIGVmZmljaWVu
Y3kuCisKKyAgICAgICAgV2Ugc2hvdWxkIGhhdmUgc2ltaWxhciBtZWNoYW5pc20gaGVyZS4gSW4g
dGhpcyBwYXRjaCwgd2UgaGF2ZSBXVEY6OkNvbXBhY3RPcHRpb25hbDxULCBUcmFpdHM+LiBUcmFp
dHMgb2ZmZXJzCisgICAgICAgIGBUcmFpdHM6OmlzRW1wdHlWYWx1ZSh2YWx1ZSlgIGFuZCBgVHJh
aXRzOjplbXB0eVZhbHVlKClgLiBUaGVuLCB3ZSB1c2UgdGhpcyBlbXB0eSB2YWx1ZSBpbnN0ZWFk
IG9mIGhhdmluZyBib29sCisgICAgICAgIGZsYWcuIFRoaXMgd2F5LCB3ZSBjYW4gbWFrZSBgc2l6
ZW9mKFdURjo6Q29tcGFjdE9wdGlvbmFsPFQ+KSA9PSBzaXplb2YoVClgLgorCisgICAgICAgIFRo
aXMgaWRlYSBpcyBpbnNwaXJlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ha3J6ZW1pMS9tYXJr
YWJsZS4gQnV0IHdlIHdvdWxkIGxpa2UgdG8gaGF2ZSBXVEY6OkNvbXBhY3RPcHRpb25hbDxUPgor
ICAgICAgICBoZXJlIGluc3RlYWQgb2YgaW1wb3J0aW5nIGl0IHNpbmNlIHdlIHdvdWxkIGxpa2Ug
dG8gaGF2ZSAoMSkgaW50ZWdyYXRlZCBpbnRlcmZhY2VzIHdpdGggc3RkOjpvcHRpb25hbDxUPiBh
bmQgKDIpCisgICAgICAgIGFsaWduZWQgZnVuY3Rpb24gbmFtZXMgdG8gSGFzaFRyYWl0cycgYGlz
RW1wdHlWYWx1ZWAgYW5kIGBlbXB0eVZhbHVlYC4KKworICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvQ29tcGFjdE9wdGlvbmFsLmg6IEFkZGVkLgorICAgICAgICAo
V1RGOjpzdGQ6OnVuZGVybHlpbmdfdHlwZTxFbnVtVHlwZT46OnR5cGU+OjptYXgpOiBFbnVtT3B0
aW9uYWxUcmFpdHMgY2FuIGJlIHVzZWQgYXMgYW4gT3B0aW9uYWxUcmFpdHMgZm9yIGVudW0KKyAg
ICAgICAgdmFsdWVzLiBXZSBjYW4gc3BlY2lmeSBhIGNvbnN0YW50IHZhbHVlIGFzIGFuIGVtcHR5
IHZhbHVlLgorICAgICAgICAoV1RGOjpJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzOjppc0VtcHR5VmFs
dWUpOgorICAgICAgICAoV1RGOjpJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzOjplbXB0eVZhbHVlKTog
SW50ZWdyYWxPcHRpb25hbFRyYWl0cyBjYW4gYmUgdXNlZCBhcyBhbiBPcHRpb25hbFRyYWl0cyBm
b3IgaW50ZWdyYWwKKyAgICAgICAgdHlwZXMgaW5jbHVkaW5nIGludCBldGMuCisgICAgICAgIChX
VEY6OkNvbXBhY3RPcHRpb25hbDo6Q29tcGFjdE9wdGlvbmFsKToKKyAgICAgICAgKFdURjo6Q29t
cGFjdE9wdGlvbmFsOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFj
dE9wdGlvbmFsOjpyZXNldCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RPcHRpb25hbDo6dmFsdWUg
Y29uc3QpOgorICAgICAgICAoV1RGOjpDb21wYWN0T3B0aW9uYWw6OnZhbHVlKToKKyAgICAgICAg
KFdURjo6Q29tcGFjdE9wdGlvbmFsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6
Q29tcGFjdE9wdGlvbmFsOjpvcGVyYXRvci0+KToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlv
bmFsOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAoV1RGOjpDb21wYWN0T3B0aW9uYWw6Om9w
ZXJhdG9yKik6CisgICAgICAgIChXVEY6OkNvbXBhY3RPcHRpb25hbDo6b3BlcmF0b3Igc3RkOjpv
cHRpb25hbDxUPik6CisgICAgICAgIChXVEY6OkNvbXBhY3RPcHRpb25hbDo6b3BlcmF0b3Igc3Rk
OjpvcHRpb25hbDxUPiBjb25zdCk6IFRoaXMgb3BlcmF0b3IgYWxsb3dzIHVzIHRvIGNhc3QgQ29t
cGFjdE9wdGlvbmFsPFQ+IHRvCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4uCisgICAgICAgICog
d3RmL01vbm90b25pY1RpbWUuaDoKKyAgICAgICAgKFdURjo6TW9ub3RvbmljVGltZTo6T3B0aW9u
YWxUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Ok1vbm90b25pY1RpbWU6Ok9w
dGlvbmFsVHJhaXRzOjplbXB0eVZhbHVlKTogT3B0aW9uYWxUcmFpdHMgZm9yIE1vbm90b25pY1Rp
bWUuIE1vbm90b25pY1RpbWU6Om5hbigpIGlzIHVzZWQKKyAgICAgICAgYXMgYW4gZW1wdHkgdmFs
dWUuCisgICAgICAgICogd3RmL1NlY29uZHMuaDoKKyAgICAgICAgKFdURjo6U2Vjb25kczo6T3B0
aW9uYWxUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6OlNlY29uZHM6Ok9wdGlv
bmFsVHJhaXRzOjplbXB0eVZhbHVlKTogT3B0aW9uYWxUcmFpdHMgZm9yIFNlY29uZHMuIFNlY29u
ZHM6Om5hbigpIGlzIHVzZWQgYXMgYW4gZW1wdHkgdmFsdWUuCisgICAgICAgICogd3RmL1dhbGxU
aW1lLmg6CisgICAgICAgIChXVEY6OldhbGxUaW1lOjpuYW4pOgorICAgICAgICAoV1RGOjpXYWxs
VGltZTo6T3B0aW9uYWxUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6OldhbGxU
aW1lOjpPcHRpb25hbFRyYWl0czo6ZW1wdHlWYWx1ZSk6IE9wdGlvbmFsVHJhaXRzIGZvciBXYWxs
VGltZS4gV2FsbFRpbWU6Om5hbigpIGlzIHVzZWQgYXMgYW4gZW1wdHkgdmFsdWUuCisKIDIwMTgt
MDgtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxh
Y2UgT3B0aW9uU2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQoKSBhbmQgcmVtb3ZlKCkg
ZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZmMzcxOTNkZmRmZDY1NjUxNjMyYmE2NjAyYjc1NDZj
NGJiMjAxOC4uN2Y5YzIyNDA3NDM5MmZlMDM5YWRmNzMxZWE5NGJlNzQ3Nzg1NWE5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA5LTAyICBZdXN1a2UgU3V6dWtpICA8eXVzdWtl
c3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW1dURl0gQWRkIENvbXBhY3RPcHRpb25h
bDxULCBUcmFpdHM+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODkyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgQ29tcGFjdE9wdGlvbmFsPFNlY29uZHM+IGFuZCBDb21wYWN0T3B0aW9uYWw8V2Fs
bFRpbWU+IGluIFJlc291cmNlUmVzcG9uc2VCYXNlLgorICAgICAgICBTaW5jZSB0aGVzZSBmaWVs
ZHMgYXJlIHBhcnNlZCByZXN1bHRzIGZyb20gaHR0cCBoZWFkZXIgZmllbGRzLCBTZWNvbmRzOjpu
YW4oKSBhbmQgV2FsbFRpbWU6Om5hbigpCisgICAgICAgIGNhbiBiZSB1c2VkIGFzIGFuIGVtcHR5
IHZhbHVlIGZvciB0aGVzZSBmaWVsZHMuIFRodXMgd2UgY2FuIHVzZSBDb21wYWN0T3B0aW9uYWwg
YmVjYXVzZSBpdCB1c2VzCisgICAgICAgIHRoZXNlIG5hbiB2YWx1ZXMgYXMgYW4gZW1wdHkgdmFs
dWVzICh0aGV5IGFyZSBjb25maWd1cmVkIGJ5IFNlY29uZHM6Ok9wdGlvbmFsVHJhaXRzIGFuZCBX
YWxsVGltZTo6T3B0aW9uYWxUcmFpdHMpLgorICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIHNpemUg
b2YgUmVzb3VyY2VSZXNwb25zZUJhc2UgZnJvbSA0NDggdG8gNDE2LgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorCiAyMDE4LTA5LTAxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBGaWx0
ZXJFZmZlY3RSZW5kZXJlciB0byBDU1NGaWx0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNTBl
NjJhMzExZDIwMTIxMzc1NmFmZjUyMWFhNDk2MmMwNTkyYTg3OC4uNWNlMWZhYTRjMjFiYTlhN2Jk
YzRlOGI4MmJjMGRiMmI3NGZmMjBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI3LDYgKzI3
LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIENoZWNrZWRCb29sZWFuLmgKICAgICBD
bG9ja1R5cGUuaAogICAgIENvbW1hUHJpbnRlci5oCisgICAgQ29tcGFjdE9wdGlvbmFsLmgKICAg
ICBDb21wYWN0UG9pbnRlclR1cGxlLmgKICAgICBDb21waWxhdGlvblRocmVhZC5oCiAgICAgQ29t
cGlsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29tcGFjdE9wdGlvbmFsLmggYi9T
b3VyY2UvV1RGL3d0Zi9Db21wYWN0T3B0aW9uYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjA3OWQyMGJmZmI0
MWY5MGJkNTJmNjVkYzE2YzU1OWEwYjYzODg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvQ29tcGFjdE9wdGlvbmFsLmgKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+Lgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gVGhlIGlkZWEg
b2YgQ29tcGFjdE9wdGlvbmFsPFQ+IGlzIGRlcml2ZWQgZnJvbSBtYXJrYWJsZTxUPiBhdAorLy8g
aHR0cHM6Ly9naXRodWIuY29tL2FrcnplbWkxL21hcmthYmxlLgorLy8KKy8vIENvcHlyaWdodCAo
QykgMjAxNS0yMDE4IEFuZHJ6ZWogS3J6ZW1pZW5za2kuCisvLworLy8gVXNlLCBtb2RpZmljYXRp
b24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKKy8v
IExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8w
LnR4dCBvciBjb3B5IGF0CisvLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQp
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKworLy8gRXhhbXBsZToKKy8vICAgICBlbnVtIGNsYXNzIFR5cGUgeyBWYWx1ZTEsIFZh
bHVlMiwgVmFsdWUzIH07CisvLyAgICAgQ29tcGFjdE9wdGlvbmFsPFR5cGUsIEVudW1PcHRpb25h
bFRyYWl0czxUeXBlLCA0Mj4+IG9wdGlvbmFsOwordGVtcGxhdGU8CisgICAgdHlwZW5hbWUgRW51
bVR5cGUsCisgICAgdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bVR5cGU+Ojp0eXBl
IGNvbnN0YW50ID0gc3RkOjpudW1lcmljX2xpbWl0czx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdf
dHlwZTxFbnVtVHlwZT46OnR5cGU+OjptYXgoKT4KK3N0cnVjdCBFbnVtT3B0aW9uYWxUcmFpdHMg
eworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19lbnVtPEVudW1UeXBlPjo6dmFsdWUsICIiKTsK
KyAgICB1c2luZyBVbmRlcmx5aW5nVHlwZSA9IHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBl
PEVudW1UeXBlPjo6dHlwZTsKKworICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBpc0VtcHR5VmFs
dWUoRW51bVR5cGUgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VW5k
ZXJseWluZ1R5cGU+KHZhbHVlKSA9PSBjb25zdGFudDsKKyAgICB9CisKKyAgICBjb25zdGV4cHIg
c3RhdGljIEVudW1UeXBlIGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEVudW1UeXBlPihjb25zdGFudCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgSW50ZWdyYWxUeXBlLCBJbnRlZ3JhbFR5cGUgY29uc3RhbnQgPSAwPgorc3RydWN0IEludGVn
cmFsT3B0aW9uYWxUcmFpdHMgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxJ
bnRlZ3JhbFR5cGU+Ojp2YWx1ZSwgIiIpOworICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBpc0Vt
cHR5VmFsdWUoSW50ZWdyYWxUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVl
ID09IGNvbnN0YW50OworICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgSW50ZWdyYWxUeXBl
IGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0YW50OworICAgIH0KK307
CisKKy8vIFRoZSBnb2FsIG9mIENvbXBhY3RPcHRpb25hbCBpcyBvZmZlcmluZyBzdGQ6Om9wdGlv
bmFsIHdpdGhvdXQgc2FjcmlmaWNpbmcgc3RvcmFnZSBlZmZpY2llbmN5LgorLy8gQ29tcGFjdE9w
dGlvbmFsIHRha2VzIFRyYWl0cywgd2hpY2ggc2hvdWxkIGhhdmUgaXNFbXB0eVZhbHVlIGFuZCBl
bXB0eVZhbHVlIGZ1bmN0aW9ucy4gQnkgdXNpbmcKKy8vIG9uZSB2YWx1ZSBvZiBUIGFzIGFuIGVt
cHR5IHZhbHVlLCB3ZSBjYW4gcmVtb3ZlIGJvb2wgZmxhZyBpbiBzdGQ6Om9wdGlvbmFsLiBUaGlz
IHN0cmF0ZWd5IGlzCisvLyBzaW1pbGFyIHRvIFdURjo6SGFzaFRhYmxlLCB3aGljaCB1c2VzIHR3
byB2YWx1ZXMgb2YgVCBhcyBhbiBlbXB0eSB2YWx1ZSBhbmQgYSBkZWxldGVkIHZhbHVlLgorLy8g
VGhpcyBjbGFzcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgbWVtYmVyIG9mIGEgY2xhc3Mg
dG8gY29tcGFjdCB0aGUgc2l6ZSBvZiB0aGUgY2xhc3MuCisvLyBPdGhlcndpc2UsIHlvdSBzaG91
bGQgdXNlIHN0ZDo6b3B0aW9uYWwuCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFp
dHM+CitjbGFzcyBDb21wYWN0T3B0aW9uYWwgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBDb21w
YWN0T3B0aW9uYWwoKQorICAgICAgICA6IG1fdmFsdWUoVHJhaXRzOjplbXB0eVZhbHVlKCkpCisg
ICAgeyB9CisKKyAgICBjb25zdGV4cHIgQ29tcGFjdE9wdGlvbmFsKHN0ZDo6bnVsbG9wdF90KQor
ICAgICAgICA6IENvbXBhY3RPcHRpb25hbCgpCisgICAgeyB9CisKKyAgICBjb25zdGV4cHIgQ29t
cGFjdE9wdGlvbmFsKFQmJiB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKFdURk1vdmUodmFsdWUp
KQorICAgIHsgfQorCisgICAgY29uc3RleHByIENvbXBhY3RPcHRpb25hbChjb25zdCBUJiB2YWx1
ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4KKyAgICBjb25zdGV4cHIgZXhwbGljaXQgQ29tcGFjdE9wdGlvbmFsKHN0
ZDo6aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV92YWx1ZShzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pCisgICAgeyB9CisKKyAgICBjb25zdGV4cHIgQ29tcGFjdE9w
dGlvbmFsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8VD4mIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUo
Ym9vbCh2YWx1ZSkgPyAqdmFsdWUgOiBUcmFpdHM6OmVtcHR5VmFsdWUoKSkKKyAgICB7IH0KKwor
ICAgIGNvbnN0ZXhwciBDb21wYWN0T3B0aW9uYWwoc3RkOjpvcHRpb25hbDxUPiYmIHZhbHVlKQor
ICAgICAgICA6IG1fdmFsdWUoYm9vbCh2YWx1ZSkgPyBXVEZNb3ZlKCp2YWx1ZSkgOiBUcmFpdHM6
OmVtcHR5VmFsdWUoKSkKKyAgICB7IH0KKworICAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gIVRyYWl0czo6aXNFbXB0eVZhbHVlKG1fdmFsdWUpOyB9
CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX3ZhbHVlID0gVHJhaXRzOjplbXB0eVZhbHVlKCk7IH0K
KworICAgIGNvbnN0ZXhwciBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0JiB7IHJldHVybiBtX3ZhbHVl
OyB9CisgICAgY29uc3RleHByIFQmIHZhbHVlKCkgJiB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAg
Y29uc3RleHByIFQmJiB2YWx1ZSgpICYmIHsgcmV0dXJuIFdURk1vdmUobV92YWx1ZSk7IH0KKwor
ICAgIGNvbnN0ZXhwciBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gc3RkOjph
ZGRyZXNzb2YobV92YWx1ZSk7IH0KKyAgICBjb25zdGV4cHIgVCogb3BlcmF0b3ItPigpIHsgcmV0
dXJuIHN0ZDo6YWRkcmVzc29mKG1fdmFsdWUpOyB9CisKKyAgICBjb25zdGV4cHIgY29uc3QgVCYg
b3BlcmF0b3IqKCkgY29uc3QmIHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBjb25zdGV4cHIgVCYg
b3BlcmF0b3IqKCkgJiB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBvcGVyYXRvciBzdGQ6Om9w
dGlvbmFsPFQ+KCkgJiYKKyAgICB7CisgICAgICAgIGlmIChib29sKCp0aGlzKSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEZNb3ZlKG1fdmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIH0KKworICAgIG9wZXJhdG9yIHN0ZDo6b3B0aW9uYWw8VD4oKSBjb25zdCYKKyAgICB7
CisgICAgICAgIGlmIChib29sKCp0aGlzKSkKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlOwor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBUIG1f
dmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDb21wYWN0T3B0
aW9uYWw7Cit1c2luZyBXVEY6OkludGVncmFsT3B0aW9uYWxUcmFpdHM7Cit1c2luZyBXVEY6OkVu
dW1PcHRpb25hbFRyYWl0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01vbm90b25pY1Rp
bWUuaCBiL1NvdXJjZS9XVEYvd3RmL01vbm90b25pY1RpbWUuaAppbmRleCAwYmJlZTgyM2Q4Mjkx
ZjkzYmVjNzU3NjUyMTIxYjlmMDRjZDZjMmUzLi5mZDgzMzgxNGIwNmY0ZTQ4MGY2OTljYWFhYTFi
Mjk5NjM0NjYzMjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Nb25vdG9uaWNUaW1lLmgK
KysrIGIvU291cmNlL1dURi93dGYvTW9ub3RvbmljVGltZS5oCkBAIC0xNjUsNiArMTY1LDggQEAg
Y2xhc3MgTW9ub3RvbmljVGltZSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAg
IHN0cnVjdCBPcHRpb25hbFRyYWl0czsKKwogcHJpdmF0ZToKICAgICBjb25zdGV4cHIgTW9ub3Rv
bmljVGltZShkb3VibGUgcmF3VmFsdWUpCiAgICAgICAgIDogbV92YWx1ZShyYXdWYWx1ZSkKQEAg
LTE3NCw2ICsxNzYsMTggQEAgY2xhc3MgTW9ub3RvbmljVGltZSB7CiAgICAgZG91YmxlIG1fdmFs
dWUgeyAwIH07CiB9OwogCitzdHJ1Y3QgTW9ub3RvbmljVGltZTo6T3B0aW9uYWxUcmFpdHMgewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0VtcHR5VmFsdWUoTW9ub3RvbmljVGltZSB0aW1l
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6aXNuYW4odGltZS5tX3ZhbHVlKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgY29uc3RleHByIE1vbm90b25pY1RpbWUgZW1wdHlWYWx1ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gTW9ub3RvbmljVGltZTo6bmFuKCk7CisgICAgfQorfTsKKwogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIG5hbWVzcGFjZSBzdGQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvU2Vjb25kcy5oIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCmluZGV4IDYxMDg2ZjNl
NDYzMzdlZDczOTQ4OGZjYjVmNGQ1M2U4YjY0YzI4MTAuLjY4YzNjOGRmOGRiNDU4NjJmM2M4Yjg3
Y2I4M2Q4NDUxOTY3OTEwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKQEAgLTI0NywxMiArMjQ3LDI2IEBAIGNsYXNz
IFNlY29uZHMgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBzdHJ1Y3QgT3B0
aW9uYWxUcmFpdHM7CisKIHByaXZhdGU6CiAgICAgZG91YmxlIG1fdmFsdWUgeyAwIH07CiB9Owog
CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzbGVlcChTZWNvbmRzKTsKIAorc3RydWN0IFNlY29u
ZHM6Ok9wdGlvbmFsVHJhaXRzIHsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNFbXB0eVZh
bHVlKFNlY29uZHMgc2Vjb25kcykKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OmlzbmFuKHNl
Y29uZHMudmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGVt
cHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFNlY29uZHM6Om5hbigpOworICAgIH0K
K307CisKIGlubGluZSBuYW1lc3BhY2Ugc2Vjb25kc19saXRlcmFscyB7CiAKIGNvbnN0ZXhwciBT
ZWNvbmRzIG9wZXJhdG9yIiIgX21pbihsb25nIGRvdWJsZSBtaW51dGVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvV2FsbFRpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmgKaW5k
ZXggYmY2NjIwMTA5MGYzMzFmZmZlYjZhNzY1MmY0MTNmMzVhOWUyOWRmMi4uMDllOGQxM2I4ZTli
ZDI1NTQ0NzNkMjEzMWI3N2UwYzg5MDM5YjRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
V2FsbFRpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCkBAIC01Niw2ICs1Niw3
IEBAIGNsYXNzIFdhbGxUaW1lIHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFdhbGxU
aW1lIG5vdygpOwogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgV2FsbFRpbWUgaW5maW5pdHko
KSB7IHJldHVybiBmcm9tUmF3U2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omlu
ZmluaXR5KCkpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBXYWxsVGltZSBuYW4oKSB7IHJldHVy
biBmcm9tUmF3U2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigp
KTsgfQogICAgIAogICAgIGNvbnN0ZXhwciBTZWNvbmRzIHNlY29uZHNTaW5jZUVwb2NoKCkgY29u
c3QgeyByZXR1cm4gU2Vjb25kcyhtX3ZhbHVlKTsgfQogICAgIApAQCAtMTMyLDYgKzEzMyw5IEBA
IGNsYXNzIFdhbGxUaW1lIHsKICAgICB7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CisK
KyAgICBzdHJ1Y3QgT3B0aW9uYWxUcmFpdHM7CisKIHByaXZhdGU6CiAgICAgY29uc3RleHByIFdh
bGxUaW1lKGRvdWJsZSByYXdWYWx1ZSkKICAgICAgICAgOiBtX3ZhbHVlKHJhd1ZhbHVlKQpAQCAt
MTQxLDYgKzE0NSwxOCBAQCBjbGFzcyBXYWxsVGltZSB7CiAgICAgZG91YmxlIG1fdmFsdWUgeyAw
IH07CiB9OwogCitzdHJ1Y3QgV2FsbFRpbWU6Ok9wdGlvbmFsVHJhaXRzIHsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNFbXB0eVZhbHVlKFdhbGxUaW1lIHRpbWUpCisgICAgeworICAgICAg
ICByZXR1cm4gc3RkOjppc25hbih0aW1lLm1fdmFsdWUpOworICAgIH0KKworICAgIHN0YXRpYyBj
b25zdGV4cHIgV2FsbFRpbWUgZW1wdHlWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2Fs
bFRpbWU6Om5hbigpOworICAgIH0KK307CisKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNsZWVw
KFdhbGxUaW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggMmE0ZTQ5
ZWZhOTU4MDNkMmI4NDkxMDJmYTVlYzQ2NWI2NGRmOGU2My4uMjFiZGNjODA4MzljNTBiZGU2N2Nh
ZDM5ZDZhN2JiNjU3OTI2ZjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5n
ZS5oIgogI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9Db21wYWN0T3B0aW9uYWwuaD4K
ICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjE0
LDEwICsyMTUsMTAgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIG11dGFibGUg
c3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogCiBwcml2
YXRlOgotICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtX2FnZTsKLSAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fZGF0ZTsKLSAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8V2FsbFRpbWU+IG1fZXhwaXJlczsKLSAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2Fs
bFRpbWU+IG1fbGFzdE1vZGlmaWVkOworICAgIG11dGFibGUgQ29tcGFjdE9wdGlvbmFsPFNlY29u
ZHMsIFNlY29uZHM6Ok9wdGlvbmFsVHJhaXRzPiBtX2FnZTsKKyAgICBtdXRhYmxlIENvbXBhY3RP
cHRpb25hbDxXYWxsVGltZSwgV2FsbFRpbWU6Ok9wdGlvbmFsVHJhaXRzPiBtX2RhdGU7CisgICAg
bXV0YWJsZSBDb21wYWN0T3B0aW9uYWw8V2FsbFRpbWUsIFdhbGxUaW1lOjpPcHRpb25hbFRyYWl0
cz4gbV9leHBpcmVzOworICAgIG11dGFibGUgQ29tcGFjdE9wdGlvbmFsPFdhbGxUaW1lLCBXYWxs
VGltZTo6T3B0aW9uYWxUcmFpdHM+IG1fbGFzdE1vZGlmaWVkOwogICAgIG11dGFibGUgUGFyc2Vk
Q29udGVudFJhbmdlIG1fY29udGVudFJhbmdlOwogICAgIG11dGFibGUgQ2FjaGVDb250cm9sRGly
ZWN0aXZlcyBtX2NhY2hlQ29udHJvbERpcmVjdGl2ZXM7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YTQzM2FlZWY1MDZiNmY0NjU1NjAxM2Jm
YmI0MzYxYmYyMTlhYzFhLi4wMjJmMGE0OWMzY2VjMmVkZGYyNGEyMDRiYmFlYzI0NDVkODAyZWQ1
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTgtMDktMDIgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbV1RGXSBBZGQgQ29tcGFjdE9wdGlvbmFsPFQsIFRyYWl0
cz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTIz
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0
ZXN0cyBmb3IgQ29tcGFjdE9wdGlvbmFsLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db21wYWN0T3B0
aW9uYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4
LTA5LTAxICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbV1BFXSAyLjIxLjkxIGZhaWxzIHRvIGJ1aWxkIHdpdGggRU5BQkxFX01JTklCUk9XU0VS
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NjhhZjc2NDk5MjNhNWUzZjQ5NjFk
YTQ1ZWQ2ZGNjMTZjODE4YzdkLi5mYjAxODhmNmQ3NjJkMmUzM2E5NzZhMTJkN2UwMDE0OGZkMTZh
ZWIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTkyLDYgKzkyLDcgQEAgc2V0
KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9CbG9v
bUZpbHRlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ1N0cmluZy5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNP
cGVyYXRpb25zLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db21wYWN0
T3B0aW9uYWwuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbmN1cnJl
bnRQdHJIYXNoU2V0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25k
aXRpb24uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nyb3NzVGhyZWFk
VGFzay5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbXBh
Y3RPcHRpb25hbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db21wYWN0T3B0
aW9uYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNTE4NWFjMjgxNzdkMDQ4N2JjNzM5MGJkZDVlYWE2MzA2
M2YxMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9D
b21wYWN0T3B0aW9uYWwuY3BwCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOCBZdXN1a2UgU3V6dWtpIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0Zi9Db21wYWN0T3B0aW9uYWwu
aD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURl9Db21wYWN0T3B0aW9u
YWwsIERpc2VuZ2FnZWQpCit7CisgICAgeworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJ
bnRlZ3JhbE9wdGlvbmFsVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbDsKKworICAgICAgICBFWFBF
Q1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0
Mj4+IG9wdGlvbmFsIHsgc3RkOjpudWxsb3B0IH07CisKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0
YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgfQorfQorCitURVNUKFdURl9Db21wYWN0
T3B0aW9uYWwsIEVuZ2FnZWQpCit7CisgICAgeworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50
LCBJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IDEwIH07CisKKyAg
ICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDEwLCBvcHRpb25hbC52YWx1ZSgpKTsKKworICAgICAgICBvcHRpb25hbCA9IDQx
OworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAg
ICAgICBFWFBFQ1RfRVEoNDEsIG9wdGlvbmFsLnZhbHVlKCkpOworCisgICAgICAgIG9wdGlvbmFs
ID0gc3RkOjpudWxsb3B0OworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4o
b3B0aW9uYWwpKTsKKworICAgICAgICBvcHRpb25hbCA9IDQyOworICAgICAgICBFWFBFQ1RfRkFM
U0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICB9CisgICAgeworICAgICAgICBD
b21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzPGludCwgNDI+PiBvcHRp
b25hbCB7IDQyIH07CisKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9w
dGlvbmFsKSk7CisKKyAgICAgICAgb3B0aW9uYWwgPSA0MTsKKworICAgICAgICBFWFBFQ1RfVFJV
RShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgICAgICBFWFBFQ1RfRVEoNDEsIG9w
dGlvbmFsLnZhbHVlKCkpOworICAgIH0KK30KKworVEVTVChXVEZfQ29tcGFjdE9wdGlvbmFsLCBE
ZXN0cnVjdG9yKQoreworICAgIHN0YXRpYyBib29sIGRpZENhbGxEZXN0cnVjdG9yID0gZmFsc2U7
CisgICAgc3RydWN0IEEgeworICAgICAgICBleHBsaWNpdCBBKGludCB2YWx1ZSkKKyAgICAgICAg
ICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgfkEoKQorICAgICAg
ICB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZGlkQ2FsbERlc3RydWN0b3IpOworICAgICAg
ICAgICAgZGlkQ2FsbERlc3RydWN0b3IgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaW50
IG1fdmFsdWUgeyA0MiB9OworICAgIH07CisKKyAgICBzdHJ1Y3QgQVRyYWl0cyB7CisgICAgICAg
IHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBBJiB2YWx1ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlLm1fdmFsdWUgPT0gNDI7CisgICAgICAgIH0KKyAgICAgICAg
c3RhdGljIEEgZW1wdHlWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBBKDQy
KTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBkaWRDYWxsRGVzdHJ1Y3RvciA9IGZhbHNlOwor
ICAgIHsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPEEsIEFUcmFpdHM+IG9wdGlvbmFsIHsgc3Rk
Ojppbl9wbGFjZSwgMjAgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4o
b3B0aW9uYWwpKTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoZGlkQ2FsbERlc3RydWN0b3IpOwor
CisgICAgZGlkQ2FsbERlc3RydWN0b3IgPSBmYWxzZTsKKyAgICB7CisgICAgICAgIENvbXBhY3RP
cHRpb25hbDxBLCBBVHJhaXRzPiBvcHRpb25hbCB7IHN0ZDo6aW5fcGxhY2UsIDQyIH07CisgICAg
ICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgIH0KKyAg
ICBFWFBFQ1RfVFJVRShkaWRDYWxsRGVzdHJ1Y3Rvcik7Cit9CisKK1RFU1QoV1RGX0NvbXBhY3RP
cHRpb25hbCwgRnJvbU9wdGlvbmFsKQoreworICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IGZyb207CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihmcm9tKSk7
CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50
LCA0Mj4+IG9wdGlvbmFsID0gZnJvbTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0
PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxp
bnQ+IGZyb20geyA0MiB9OworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihm
cm9tKSk7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFp
dHM8aW50LCA0Mj4+IG9wdGlvbmFsID0gZnJvbTsKKyAgICAgICAgLy8gV2UgY29udmVydCB0aGlz
IHRvIG51bGxvcHQuCisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRp
b25hbCkpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmcm9tIHsg
NDMgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oZnJvbSkpOworICAg
ICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzPGludCwgNDI+
PiBvcHRpb25hbCA9IGZyb207CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+
KG9wdGlvbmFsKSk7CisgICAgICAgIEVYUEVDVF9FUShvcHRpb25hbC52YWx1ZSgpLCA0Myk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZyb207CisgICAgICAgIEVY
UEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihmcm9tKSk7CisgICAgICAgIENvbXBhY3RPcHRp
b25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgV1RG
TW92ZShmcm9tKSB9OworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0
aW9uYWwpKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbSB7
IDQyIH07CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKKyAg
ICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQsIDQy
Pj4gb3B0aW9uYWwgeyBXVEZNb3ZlKGZyb20pIH07CisgICAgICAgIC8vIFdlIGNvbnZlcnQgdGhp
cyB0byBudWxsb3B0LgorICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0
aW9uYWwpKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbSB7
IDQzIH07CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKKyAg
ICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQsIDQy
Pj4gb3B0aW9uYWwgeyBXVEZNb3ZlKGZyb20pIH07CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRp
Y19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIEVYUEVDVF9FUShvcHRpb25hbC52YWx1
ZSgpLCA0Myk7CisgICAgfQorfQorCitURVNUKFdURl9Db21wYWN0T3B0aW9uYWwsIFRvT3B0aW9u
YWwpCit7CisgICAgeworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9wdGlv
bmFsVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbDsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRp
Y19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0byA9
IG9wdGlvbmFsOworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsK
KyAgICB9CisgICAgeworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9wdGlv
bmFsVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IDQyIH07CisgICAgICAgIEVYUEVDVF9GQUxT
RShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgICAgICAvLyBXZSBjb252ZXJ0IHRo
aXMgdG8gbnVsbG9wdC4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRvID0gb3B0aW9uYWw7
CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPih0bykpOworICAgIH0KKyAg
ICB7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8
aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDMgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nh
c3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRvID0gb3B0
aW9uYWw7CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KHRvKSk7CisgICAg
ICAgIEVYUEVDVF9FUSh0by52YWx1ZSgpLCA0Myk7CisgICAgfQorICAgIHsKKyAgICAgICAgQ29t
cGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQsIDQyPj4gb3B0aW9u
YWw7CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdG8geyBXVEZNb3ZlKG9wdGlvbmFsKSB9OworICAg
ICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKKyAgICB9CisgICAgewor
ICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzPGludCwg
NDI+PiBvcHRpb25hbCB7IDQyIH07CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxi
b29sPihvcHRpb25hbCkpOworICAgICAgICAvLyBXZSBjb252ZXJ0IHRoaXMgdG8gbnVsbG9wdC4K
KyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRvIHsgV1RGTW92ZShvcHRpb25hbCkgfTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KHRvKSk7CisgICAgfQorICAgIHsK
KyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQs
IDQyPj4gb3B0aW9uYWwgeyA0MyB9OworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxi
b29sPihvcHRpb25hbCkpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdG8geyBXVEZNb3Zl
KG9wdGlvbmFsKSB9OworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPih0bykp
OworICAgICAgICBFWFBFQ1RfRVEodG8udmFsdWUoKSwgNDMpOworICAgIH0KK30KKworVEVTVChX
VEZfQ29tcGFjdE9wdGlvbmFsLCBNb3ZlT3B0aW9uYWwpCit7CisgICAgY2xhc3MgT25seU1vdmFi
bGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgY29uc3RleHByIGV4cGxpY2l0IE9ubHlNb3ZhYmxl
KGludCB2YWx1ZSkKKyAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAgICAgeworICAg
ICAgICB9CisKKyAgICAgICAgaW50IHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQorCisgICAg
ICAgIE9ubHlNb3ZhYmxlJiBvcGVyYXRvcj0oT25seU1vdmFibGUmJiBvdGhlcikKKyAgICAgICAg
eworICAgICAgICAgICAgbV92YWx1ZSA9IG90aGVyLm1fdmFsdWU7CisgICAgICAgICAgICBvdGhl
ci5tX3ZhbHVlID0gNDI7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKwor
ICAgICAgICBPbmx5TW92YWJsZShPbmx5TW92YWJsZSYmIG90aGVyKQorICAgICAgICAgICAgOiBt
X3ZhbHVlKG90aGVyLm1fdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG90aGVyLm1fdmFs
dWUgPSA0MjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgT25seU1vdmFi
bGUgZW1wdHlWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBPbmx5TW92YWJs
ZSg0Mik7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNFbXB0
eVZhbHVlKGNvbnN0IE9ubHlNb3ZhYmxlJiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIHZhbHVlLm1fdmFsdWUgPT0gNDI7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIE9ubHlNb3ZhYmxlKGNvbnN0IE9ubHlNb3ZhYmxlJikgPSBkZWxldGU7CisgICAgICAg
IE9ubHlNb3ZhYmxlJiBvcGVyYXRvcj0oY29uc3QgT25seU1vdmFibGUmKSA9IGRlbGV0ZTsKKwor
ICAgICAgICBpbnQgbV92YWx1ZTsKKyAgICB9OworICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxPbmx5TW92YWJsZT4gZnJvbSB7IHN0ZDo6aW5fcGxhY2UsIDIwIH07CisgICAgICAgIEVYUEVD
VF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKKyAgICAgICAgRVhQRUNUX0VRKGZyb20u
dmFsdWUoKS52YWx1ZSgpLCAyMCk7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxPbmx5TW92YWJs
ZSwgT25seU1vdmFibGU+IGNvbXBhY3QgPSBXVEZNb3ZlKGZyb20pOworICAgICAgICBFWFBFQ1Rf
VFJVRShzdGF0aWNfY2FzdDxib29sPihjb21wYWN0KSk7CisgICAgICAgIEVYUEVDVF9FUShjb21w
YWN0LnZhbHVlKCkudmFsdWUoKSwgMjApOworICAgICAgICBzdGQ6Om9wdGlvbmFsPE9ubHlNb3Zh
YmxlPiB0byA9IFdURk1vdmUoY29tcGFjdCk7CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19j
YXN0PGJvb2w+KHRvKSk7CisgICAgICAgIEVYUEVDVF9FUSh0by52YWx1ZSgpLnZhbHVlKCksIDIw
KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348750</attachid>
            <date>2018-09-02 12:58:24 -0700</date>
            <delta_ts>2018-09-02 13:47:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189231-20180903045822.patch</filename>
            <type>text/plain</type>
            <size>31244</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM3OTQyYmM4NTc4NmQzODNlNWZlYTJj
YWNmYTk0OTBhMjEwMmU0YmMuLjJkNjQxMjc5ZjU2Mzg0MGEzMGRiZWM5OTAxMjRhZTliNzljMDNh
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTgtMDktMDIgIFl1c3VrZSBTdXp1a2kgIDx5dXN1
a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbV1RGXSBBZGQgQ29tcGFjdE9wdGlv
bmFsPFQsIFRyYWl0cz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4OTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIGNhbiByZXByZXNlbnQgYSB2YWx1ZSB3aXRoIG51bGxvcHQgYnkgdXNpbmcgc3Rk
OjpvcHRpb25hbDxUPi4gSG93ZXZlciwgYXMgeW91IGtub3csIHN0ZDo6b3B0aW9uYWw8VD4gaGFz
CisgICAgICAgIHN0b3JhZ2UgZWZmaWNpZW5jeSBwcm9ibGVtLiBJdCBhbHdheXMgaGFzIGEgYm9v
bCBpbmRpY2F0aW5nIHRoYXQgdGhlIHZhbHVlIGlzIG51bGxvcHQgb3Igbm90LiBJZiB5b3UgaGF2
ZSBhCisgICAgICAgIGNsYXNzIGxpa2UsCisKKyAgICAgICAgICAgIGNsYXNzIEEgeworICAgICAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fdGltZUE7CisgICAgICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV90aW1lQjsKKyAgICAgICAgICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBtX3RpbWVDOworICAgICAgICAgICAgfTsKKworICAgICAgICBU
aGlzIGNsYXNzIGhhcyBzaWduaWZpY2FudCBhbW91bnQgb2YgcGFkZGluZyBiZXR3ZWVuIG1fdGlt
ZUEgLyBtX3RpbWVCLCBtX3RpbWVCIC8gbV90aW1lQyBkdWUgdG8gdGhlIGFib3ZlIGJvb2wuCisK
KyAgICAgICAgSWYgd2Uga25vdyB0aGF0IFdhbGxUaW1lIGhhcyBhIHZhbHVlIHRoYXQgcmVwcmVz
ZW50cyBpbnZhbGlkLCB3ZSBjYW4gdXNlIGl0IGluc3RlYWQgYW5kIHNhdmUgdGhlIHN0b3JhZ2Uu
CisgICAgICAgIFRoaXMgaXMgdmVyeSBzaW1pbGFyIHByb2JsZW0gdG8gb3VyIEhhc2hUYWJsZSBp
bXBsZW1lbnRhdGlvbi4gSW4gb3VyIEhhc2hUYWJsZSBpbXBsZW1lbnRhdGlvbiwgd2UgbmVlZCBE
ZWxldGVkCisgICAgICAgIGFuZCBFbXB0eSB2YWx1ZSwgd2hpY2ggY2FuIHJlcHJlc2VudCBEZWxl
dGVkIGFuZCBFbXB0eSB2YWx1ZXMgd2l0aG91dCBzYWNyaWZpY2luZyBzdG9yYWdlIGVmZmljaWVu
Y3kuCisKKyAgICAgICAgV2Ugc2hvdWxkIGhhdmUgc2ltaWxhciBtZWNoYW5pc20gaGVyZS4gSW4g
dGhpcyBwYXRjaCwgd2UgaGF2ZSBXVEY6OkNvbXBhY3RPcHRpb25hbDxULCBUcmFpdHM+LiBUcmFp
dHMgb2ZmZXJzCisgICAgICAgIGBUcmFpdHM6OmlzRW1wdHlWYWx1ZSh2YWx1ZSlgIGFuZCBgVHJh
aXRzOjplbXB0eVZhbHVlKClgLiBUaGVuLCB3ZSB1c2UgdGhpcyBlbXB0eSB2YWx1ZSBpbnN0ZWFk
IG9mIGhhdmluZyBib29sCisgICAgICAgIGZsYWcuIFRoaXMgd2F5LCB3ZSBjYW4gbWFrZSBgc2l6
ZW9mKFdURjo6Q29tcGFjdE9wdGlvbmFsPFQ+KSA9PSBzaXplb2YoVClgLgorCisgICAgICAgIFRo
aXMgaWRlYSBpcyBpbnNwaXJlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ha3J6ZW1pMS9tYXJr
YWJsZS4gQnV0IHdlIHdvdWxkIGxpa2UgdG8gaGF2ZSBXVEY6OkNvbXBhY3RPcHRpb25hbDxUPgor
ICAgICAgICBoZXJlIGluc3RlYWQgb2YgaW1wb3J0aW5nIGl0IHNpbmNlIHdlIHdvdWxkIGxpa2Ug
dG8gaGF2ZSAoMSkgaW50ZWdyYXRlZCBpbnRlcmZhY2VzIHdpdGggc3RkOjpvcHRpb25hbDxUPiBh
bmQgKDIpCisgICAgICAgIGFsaWduZWQgZnVuY3Rpb24gbmFtZXMgdG8gSGFzaFRyYWl0cycgYGlz
RW1wdHlWYWx1ZWAgYW5kIGBlbXB0eVZhbHVlYC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiB3dGYvQ29tcGFjdE9wdGlvbmFsLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpzdGQ6OnVuZGVy
bHlpbmdfdHlwZTxFbnVtVHlwZT46OnR5cGU+OjptYXgpOiBFbnVtT3B0aW9uYWxUcmFpdHMgY2Fu
IGJlIHVzZWQgYXMgYW4gT3B0aW9uYWxUcmFpdHMgZm9yIGVudW0KKyAgICAgICAgdmFsdWVzLiBX
ZSBjYW4gc3BlY2lmeSBhIGNvbnN0YW50IHZhbHVlIGFzIGFuIGVtcHR5IHZhbHVlLgorICAgICAg
ICAoV1RGOjpJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzOjppc0VtcHR5VmFsdWUpOgorICAgICAgICAo
V1RGOjpJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzOjplbXB0eVZhbHVlKTogSW50ZWdyYWxPcHRpb25h
bFRyYWl0cyBjYW4gYmUgdXNlZCBhcyBhbiBPcHRpb25hbFRyYWl0cyBmb3IgaW50ZWdyYWwKKyAg
ICAgICAgdHlwZXMgaW5jbHVkaW5nIGludCBldGMuCisgICAgICAgIChXVEY6OkNvbXBhY3RPcHRp
b25hbDo6Q29tcGFjdE9wdGlvbmFsKToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFsOjpv
cGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFsOjpyZXNl
dCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RPcHRpb25hbDo6dmFsdWUgY29uc3QpOgorICAgICAg
ICAoV1RGOjpDb21wYWN0T3B0aW9uYWw6OnZhbHVlKToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9w
dGlvbmFsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFs
OjpvcGVyYXRvci0+KToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFsOjpvcGVyYXRvciog
Y29uc3QpOgorICAgICAgICAoV1RGOjpDb21wYWN0T3B0aW9uYWw6Om9wZXJhdG9yKik6CisgICAg
ICAgIChXVEY6OkNvbXBhY3RPcHRpb25hbDo6b3BlcmF0b3Igc3RkOjpvcHRpb25hbDxUPik6Cisg
ICAgICAgIChXVEY6OkNvbXBhY3RPcHRpb25hbDo6b3BlcmF0b3Igc3RkOjpvcHRpb25hbDxUPiBj
b25zdCk6IFRoaXMgb3BlcmF0b3IgYWxsb3dzIHVzIHRvIGNhc3QgQ29tcGFjdE9wdGlvbmFsPFQ+
IHRvCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4uCisgICAgICAgICogd3RmL01vbm90b25pY1Rp
bWUuaDoKKyAgICAgICAgKFdURjo6TW9ub3RvbmljVGltZTo6T3B0aW9uYWxUcmFpdHM6OmlzRW1w
dHlWYWx1ZSk6CisgICAgICAgIChXVEY6Ok1vbm90b25pY1RpbWU6Ok9wdGlvbmFsVHJhaXRzOjpl
bXB0eVZhbHVlKTogT3B0aW9uYWxUcmFpdHMgZm9yIE1vbm90b25pY1RpbWUuIE1vbm90b25pY1Rp
bWU6Om5hbigpIGlzIHVzZWQKKyAgICAgICAgYXMgYW4gZW1wdHkgdmFsdWUuCisgICAgICAgICog
d3RmL1NlY29uZHMuaDoKKyAgICAgICAgKFdURjo6U2Vjb25kczo6T3B0aW9uYWxUcmFpdHM6Omlz
RW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6OlNlY29uZHM6Ok9wdGlvbmFsVHJhaXRzOjplbXB0
eVZhbHVlKTogT3B0aW9uYWxUcmFpdHMgZm9yIFNlY29uZHMuIFNlY29uZHM6Om5hbigpIGlzIHVz
ZWQgYXMgYW4gZW1wdHkgdmFsdWUuCisgICAgICAgICogd3RmL1dhbGxUaW1lLmg6CisgICAgICAg
IChXVEY6OldhbGxUaW1lOjpuYW4pOgorICAgICAgICAoV1RGOjpXYWxsVGltZTo6T3B0aW9uYWxU
cmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6OldhbGxUaW1lOjpPcHRpb25hbFRy
YWl0czo6ZW1wdHlWYWx1ZSk6IE9wdGlvbmFsVHJhaXRzIGZvciBXYWxsVGltZS4gV2FsbFRpbWU6
Om5hbigpIGlzIHVzZWQgYXMgYW4gZW1wdHkgdmFsdWUuCisKIDIwMTgtMDgtMzEgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgT3B0aW9uU2V0IHw9
IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQoKSBhbmQgcmVtb3ZlKCkgZnVuY3Rpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZmZmMzcxOTNkZmRmZDY1NjUxNjMyYmE2NjAyYjc1NDZjNGJiMjAxOC4uN2Y5YzIy
NDA3NDM5MmZlMDM5YWRmNzMxZWE5NGJlNzQ3Nzg1NWE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDE4LTA5LTAyICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFy
dC5vcmc+CisKKyAgICAgICAgW1dURl0gQWRkIENvbXBhY3RPcHRpb25hbDxULCBUcmFpdHM+Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyMzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgQ29tcGFj
dE9wdGlvbmFsPFNlY29uZHM+IGFuZCBDb21wYWN0T3B0aW9uYWw8V2FsbFRpbWU+IGluIFJlc291
cmNlUmVzcG9uc2VCYXNlLgorICAgICAgICBTaW5jZSB0aGVzZSBmaWVsZHMgYXJlIHBhcnNlZCBy
ZXN1bHRzIGZyb20gaHR0cCBoZWFkZXIgZmllbGRzLCBTZWNvbmRzOjpuYW4oKSBhbmQgV2FsbFRp
bWU6Om5hbigpCisgICAgICAgIGNhbiBiZSB1c2VkIGFzIGFuIGVtcHR5IHZhbHVlIGZvciB0aGVz
ZSBmaWVsZHMuIFRodXMgd2UgY2FuIHVzZSBDb21wYWN0T3B0aW9uYWwgYmVjYXVzZSBpdCB1c2Vz
CisgICAgICAgIHRoZXNlIG5hbiB2YWx1ZXMgYXMgYW4gZW1wdHkgdmFsdWVzICh0aGV5IGFyZSBj
b25maWd1cmVkIGJ5IFNlY29uZHM6Ok9wdGlvbmFsVHJhaXRzIGFuZCBXYWxsVGltZTo6T3B0aW9u
YWxUcmFpdHMpLgorICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIHNpemUgb2YgUmVzb3VyY2VSZXNw
b25zZUJhc2UgZnJvbSA0NDggdG8gNDE2LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorCiAyMDE4LTA5LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBGaWx0ZXJFZmZlY3RSZW5kZXJl
ciB0byBDU1NGaWx0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM1MTFlZDIyNzUxYjU1MGE3ZGZkMzNmYjkxYmM0YzU5NjFhMTNkZDguLmY2YzhiY2YyODQ1
ODhlMDA4OTY3MDNiOGUxZDRhOTkzNjRjNWY3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjMyLDYgKzYzMiw3IEBACiAJCUUzOEQ2RTI2MUY1NTIyRTMw
MEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVySlNPTi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzQTMyQkMyMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWVNYWxsb2MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMzFGQzgzMEUyMDA3RDdFNzYgLyog
SlNWYWx1ZU1hbGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVl
TWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMwNENBNEU0MTM3NTQzN0VC
RTkzMUQwMyAvKiBDb21wYWN0T3B0aW9uYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tcGFjdE9wdGlvbmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
Q0Y3NjkwMjExNUQ2QkEwMDkxREU0OCAvKiBDb21wYWN0UG9pbnRlclR1cGxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBhY3RQb2ludGVyVHVwbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZy
ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtRnJlZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDMxQ0M0QTIxMTg3QURCMDAwQzhBMDcgLyogRGlz
cGF0Y2hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGF0Y2hTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MSw2ICs4NDIsNyBAQAogCQkJCTBG
NjZCMjgwMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwICovLAogCQkJCTBGNjZCMjgx
MURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuaCAqLywKIAkJCQkwRkM0RURFNTE2OTYxNDk2
MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggKi8sCisJCQkJMzA0Q0E0RTQxMzc1NDM3RUJFOTMx
RDAzIC8qIENvbXBhY3RPcHRpb25hbC5oICovLAogCQkJCUUzQ0Y3NjkwMjExNUQ2QkEwMDkxREU0
OCAvKiBDb21wYWN0UG9pbnRlclR1cGxlLmggKi8sCiAJCQkJMEY4RjJCOEYxNzJFMDBGMDAwN0RC
REE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCAqLywKIAkJCQkwRjhGMkI5MDE3MkUwMEYwMDA3
REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NTBlNjJhMzExZDIwMTIxMzc1NmFmZjUyMWFhNDk2MmMwNTkyYTg3OC4uNWNlMWZhYTRjMjFiYTlh
N2JkYzRlOGI4MmJjMGRiMmI3NGZmMjBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI3LDYg
KzI3LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIENoZWNrZWRCb29sZWFuLmgKICAg
ICBDbG9ja1R5cGUuaAogICAgIENvbW1hUHJpbnRlci5oCisgICAgQ29tcGFjdE9wdGlvbmFsLmgK
ICAgICBDb21wYWN0UG9pbnRlclR1cGxlLmgKICAgICBDb21waWxhdGlvblRocmVhZC5oCiAgICAg
Q29tcGlsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29tcGFjdE9wdGlvbmFsLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Db21wYWN0T3B0aW9uYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjA3OWQyMGJm
ZmI0MWY5MGJkNTJmNjVkYzE2YzU1OWEwYjYzODg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvQ29tcGFjdE9wdGlvbmFsLmgKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gVGhlIGlk
ZWEgb2YgQ29tcGFjdE9wdGlvbmFsPFQ+IGlzIGRlcml2ZWQgZnJvbSBtYXJrYWJsZTxUPiBhdAor
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2FrcnplbWkxL21hcmthYmxlLgorLy8KKy8vIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE4IEFuZHJ6ZWogS3J6ZW1pZW5za2kuCisvLworLy8gVXNlLCBtb2RpZmlj
YXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUK
Ky8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0Vf
MV8wLnR4dCBvciBjb3B5IGF0CisvLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50
eHQpCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKworLy8gRXhhbXBsZToKKy8vICAgICBlbnVtIGNsYXNzIFR5cGUgeyBWYWx1ZTEs
IFZhbHVlMiwgVmFsdWUzIH07CisvLyAgICAgQ29tcGFjdE9wdGlvbmFsPFR5cGUsIEVudW1PcHRp
b25hbFRyYWl0czxUeXBlLCA0Mj4+IG9wdGlvbmFsOwordGVtcGxhdGU8CisgICAgdHlwZW5hbWUg
RW51bVR5cGUsCisgICAgdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bVR5cGU+Ojp0
eXBlIGNvbnN0YW50ID0gc3RkOjpudW1lcmljX2xpbWl0czx0eXBlbmFtZSBzdGQ6OnVuZGVybHlp
bmdfdHlwZTxFbnVtVHlwZT46OnR5cGU+OjptYXgoKT4KK3N0cnVjdCBFbnVtT3B0aW9uYWxUcmFp
dHMgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19lbnVtPEVudW1UeXBlPjo6dmFsdWUsICIi
KTsKKyAgICB1c2luZyBVbmRlcmx5aW5nVHlwZSA9IHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190
eXBlPEVudW1UeXBlPjo6dHlwZTsKKworICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBpc0VtcHR5
VmFsdWUoRW51bVR5cGUgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VW5kZXJseWluZ1R5cGU+KHZhbHVlKSA9PSBjb25zdGFudDsKKyAgICB9CisKKyAgICBjb25zdGV4
cHIgc3RhdGljIEVudW1UeXBlIGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVudW1UeXBlPihjb25zdGFudCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSW50ZWdyYWxUeXBlLCBJbnRlZ3JhbFR5cGUgY29uc3RhbnQgPSAwPgorc3RydWN0IElu
dGVncmFsT3B0aW9uYWxUcmFpdHMgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3Jh
bDxJbnRlZ3JhbFR5cGU+Ojp2YWx1ZSwgIiIpOworICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBp
c0VtcHR5VmFsdWUoSW50ZWdyYWxUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZh
bHVlID09IGNvbnN0YW50OworICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgSW50ZWdyYWxU
eXBlIGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0YW50OworICAgIH0K
K307CisKKy8vIFRoZSBnb2FsIG9mIENvbXBhY3RPcHRpb25hbCBpcyBvZmZlcmluZyBzdGQ6Om9w
dGlvbmFsIHdpdGhvdXQgc2FjcmlmaWNpbmcgc3RvcmFnZSBlZmZpY2llbmN5LgorLy8gQ29tcGFj
dE9wdGlvbmFsIHRha2VzIFRyYWl0cywgd2hpY2ggc2hvdWxkIGhhdmUgaXNFbXB0eVZhbHVlIGFu
ZCBlbXB0eVZhbHVlIGZ1bmN0aW9ucy4gQnkgdXNpbmcKKy8vIG9uZSB2YWx1ZSBvZiBUIGFzIGFu
IGVtcHR5IHZhbHVlLCB3ZSBjYW4gcmVtb3ZlIGJvb2wgZmxhZyBpbiBzdGQ6Om9wdGlvbmFsLiBU
aGlzIHN0cmF0ZWd5IGlzCisvLyBzaW1pbGFyIHRvIFdURjo6SGFzaFRhYmxlLCB3aGljaCB1c2Vz
IHR3byB2YWx1ZXMgb2YgVCBhcyBhbiBlbXB0eSB2YWx1ZSBhbmQgYSBkZWxldGVkIHZhbHVlLgor
Ly8gVGhpcyBjbGFzcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgbWVtYmVyIG9mIGEgY2xh
c3MgdG8gY29tcGFjdCB0aGUgc2l6ZSBvZiB0aGUgY2xhc3MuCisvLyBPdGhlcndpc2UsIHlvdSBz
aG91bGQgdXNlIHN0ZDo6b3B0aW9uYWwuCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBU
cmFpdHM+CitjbGFzcyBDb21wYWN0T3B0aW9uYWwgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBD
b21wYWN0T3B0aW9uYWwoKQorICAgICAgICA6IG1fdmFsdWUoVHJhaXRzOjplbXB0eVZhbHVlKCkp
CisgICAgeyB9CisKKyAgICBjb25zdGV4cHIgQ29tcGFjdE9wdGlvbmFsKHN0ZDo6bnVsbG9wdF90
KQorICAgICAgICA6IENvbXBhY3RPcHRpb25hbCgpCisgICAgeyB9CisKKyAgICBjb25zdGV4cHIg
Q29tcGFjdE9wdGlvbmFsKFQmJiB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKFdURk1vdmUodmFs
dWUpKQorICAgIHsgfQorCisgICAgY29uc3RleHByIENvbXBhY3RPcHRpb25hbChjb25zdCBUJiB2
YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBjb25zdGV4cHIgZXhwbGljaXQgQ29tcGFjdE9wdGlvbmFs
KHN0ZDo6aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV92YWx1ZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pCisgICAgeyB9CisKKyAgICBjb25zdGV4cHIgQ29tcGFj
dE9wdGlvbmFsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8VD4mIHZhbHVlKQorICAgICAgICA6IG1fdmFs
dWUoYm9vbCh2YWx1ZSkgPyAqdmFsdWUgOiBUcmFpdHM6OmVtcHR5VmFsdWUoKSkKKyAgICB7IH0K
KworICAgIGNvbnN0ZXhwciBDb21wYWN0T3B0aW9uYWwoc3RkOjpvcHRpb25hbDxUPiYmIHZhbHVl
KQorICAgICAgICA6IG1fdmFsdWUoYm9vbCh2YWx1ZSkgPyBXVEZNb3ZlKCp2YWx1ZSkgOiBUcmFp
dHM6OmVtcHR5VmFsdWUoKSkKKyAgICB7IH0KKworICAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIVRyYWl0czo6aXNFbXB0eVZhbHVlKG1fdmFsdWUp
OyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX3ZhbHVlID0gVHJhaXRzOjplbXB0eVZhbHVlKCk7
IH0KKworICAgIGNvbnN0ZXhwciBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0JiB7IHJldHVybiBtX3Zh
bHVlOyB9CisgICAgY29uc3RleHByIFQmIHZhbHVlKCkgJiB7IHJldHVybiBtX3ZhbHVlOyB9Cisg
ICAgY29uc3RleHByIFQmJiB2YWx1ZSgpICYmIHsgcmV0dXJuIFdURk1vdmUobV92YWx1ZSk7IH0K
KworICAgIGNvbnN0ZXhwciBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gc3Rk
OjphZGRyZXNzb2YobV92YWx1ZSk7IH0KKyAgICBjb25zdGV4cHIgVCogb3BlcmF0b3ItPigpIHsg
cmV0dXJuIHN0ZDo6YWRkcmVzc29mKG1fdmFsdWUpOyB9CisKKyAgICBjb25zdGV4cHIgY29uc3Qg
VCYgb3BlcmF0b3IqKCkgY29uc3QmIHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBjb25zdGV4cHIg
VCYgb3BlcmF0b3IqKCkgJiB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBvcGVyYXRvciBzdGQ6
Om9wdGlvbmFsPFQ+KCkgJiYKKyAgICB7CisgICAgICAgIGlmIChib29sKCp0aGlzKSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKG1fdmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIH0KKworICAgIG9wZXJhdG9yIHN0ZDo6b3B0aW9uYWw8VD4oKSBjb25zdCYKKyAg
ICB7CisgICAgICAgIGlmIChib29sKCp0aGlzKSkKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVl
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBU
IG1fdmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDb21wYWN0
T3B0aW9uYWw7Cit1c2luZyBXVEY6OkludGVncmFsT3B0aW9uYWxUcmFpdHM7Cit1c2luZyBXVEY6
OkVudW1PcHRpb25hbFRyYWl0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01vbm90b25p
Y1RpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL01vbm90b25pY1RpbWUuaAppbmRleCAwYmJlZTgyM2Q4
MjkxZjkzYmVjNzU3NjUyMTIxYjlmMDRjZDZjMmUzLi4zOGNjYjAyNDJlMGUxYzVlOGE2MDcwMmQx
M2M2MmU2OGI3NGY5OTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Nb25vdG9uaWNUaW1l
LmgKKysrIGIvU291cmNlL1dURi93dGYvTW9ub3RvbmljVGltZS5oCkBAIC0xNjUsNiArMTY1LDgg
QEAgY2xhc3MgTW9ub3RvbmljVGltZSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAor
ICAgIHN0cnVjdCBPcHRpb25hbFRyYWl0czsKKwogcHJpdmF0ZToKICAgICBjb25zdGV4cHIgTW9u
b3RvbmljVGltZShkb3VibGUgcmF3VmFsdWUpCiAgICAgICAgIDogbV92YWx1ZShyYXdWYWx1ZSkK
QEAgLTE3NCw2ICsxNzYsMTggQEAgY2xhc3MgTW9ub3RvbmljVGltZSB7CiAgICAgZG91YmxlIG1f
dmFsdWUgeyAwIH07CiB9OwogCitzdHJ1Y3QgTW9ub3RvbmljVGltZTo6T3B0aW9uYWxUcmFpdHMg
eworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShNb25vdG9uaWNUaW1lIHRpbWUpCisgICAg
eworICAgICAgICByZXR1cm4gc3RkOjppc25hbih0aW1lLm1fdmFsdWUpOworICAgIH0KKworICAg
IHN0YXRpYyBjb25zdGV4cHIgTW9ub3RvbmljVGltZSBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBNb25vdG9uaWNUaW1lOjpuYW4oKTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAogbmFtZXNwYWNlIHN0ZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
ZWNvbmRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKaW5kZXggNjEwODZmM2U0NjMzN2Vk
NzM5NDg4ZmNiNWY0ZDUzZThiNjRjMjgxMC4uODY3N2E4MGIwYThiZjYyYTNlOGI2NTVlOTRmMDUx
ZTIwNGMyMzA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1NlY29uZHMuaApAQCAtMjQ3LDEyICsyNDcsMjYgQEAgY2xhc3MgU2Vjb25k
cyB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHN0cnVjdCBPcHRpb25hbFRy
YWl0czsKKwogcHJpdmF0ZToKICAgICBkb3VibGUgbV92YWx1ZSB7IDAgfTsKIH07CiAKIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHNsZWVwKFNlY29uZHMpOwogCitzdHJ1Y3QgU2Vjb25kczo6T3B0
aW9uYWxUcmFpdHMgeworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShTZWNvbmRzIHNlY29u
ZHMpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjppc25hbihzZWNvbmRzLnZhbHVlKCkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBlbXB0eVZhbHVlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBTZWNvbmRzOjpuYW4oKTsKKyAgICB9Cit9OworCiBpbmxpbmUgbmFt
ZXNwYWNlIHNlY29uZHNfbGl0ZXJhbHMgewogCiBjb25zdGV4cHIgU2Vjb25kcyBvcGVyYXRvciIi
IF9taW4obG9uZyBkb3VibGUgbWludXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dh
bGxUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCmluZGV4IGJmNjYyMDEwOTBmMzMx
ZmZmZWI2YTc2NTJmNDEzZjM1YTllMjlkZjIuLjU1YjdmMDU2MWI5YWYzOTNmMDY5MGNkOTNiMWNm
ODFiYjBkODAyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmgKKysrIGIv
U291cmNlL1dURi93dGYvV2FsbFRpbWUuaApAQCAtNTYsNiArNTYsNyBAQCBjbGFzcyBXYWxsVGlt
ZSB7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBXYWxsVGltZSBub3coKTsKICAgICAK
ICAgICBzdGF0aWMgY29uc3RleHByIFdhbGxUaW1lIGluZmluaXR5KCkgeyByZXR1cm4gZnJvbVJh
d1NlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsgfQorICAg
IHN0YXRpYyBjb25zdGV4cHIgV2FsbFRpbWUgbmFuKCkgeyByZXR1cm4gZnJvbVJhd1NlY29uZHMo
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7IH0KICAgICAKICAgICBj
b25zdGV4cHIgU2Vjb25kcyBzZWNvbmRzU2luY2VFcG9jaCgpIGNvbnN0IHsgcmV0dXJuIFNlY29u
ZHMobV92YWx1ZSk7IH0KICAgICAKQEAgLTEzMiw2ICsxMzMsOSBAQCBjbGFzcyBXYWxsVGltZSB7
CiAgICAgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQorCisgICAgc3RydWN0IE9wdGlv
bmFsVHJhaXRzOworCiBwcml2YXRlOgogICAgIGNvbnN0ZXhwciBXYWxsVGltZShkb3VibGUgcmF3
VmFsdWUpCiAgICAgICAgIDogbV92YWx1ZShyYXdWYWx1ZSkKQEAgLTE0MSw2ICsxNDUsMTggQEAg
Y2xhc3MgV2FsbFRpbWUgewogICAgIGRvdWJsZSBtX3ZhbHVlIHsgMCB9OwogfTsKIAorc3RydWN0
IFdhbGxUaW1lOjpPcHRpb25hbFRyYWl0cyB7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVl
KFdhbGxUaW1lIHRpbWUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjppc25hbih0aW1lLm1f
dmFsdWUpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgV2FsbFRpbWUgZW1wdHlWYWx1
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2FsbFRpbWU6Om5hbigpOworICAgIH0KK307CisK
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNsZWVwKFdhbGxUaW1lKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggMmE0ZTQ5ZWZhOTU4MDNkMmI4NDkxMDJmYTVlYzQ2NWI2
NGRmOGU2My4uMjFiZGNjODA4MzljNTBiZGU2N2NhZDM5ZDZhN2JiNjU3OTI2ZjhkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5o
IgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgogI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9Db21wYWN0T3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjE0LDEwICsyMTUsMTAgQEAgY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZUJhc2UgewogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+IG1fY2VydGlmaWNhdGVJbmZvOwogCiBwcml2YXRlOgotICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBtX2FnZTsKLSAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+
IG1fZGF0ZTsKLSAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fZXhwaXJlczsK
LSAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fbGFzdE1vZGlmaWVkOworICAg
IG11dGFibGUgQ29tcGFjdE9wdGlvbmFsPFNlY29uZHMsIFNlY29uZHM6Ok9wdGlvbmFsVHJhaXRz
PiBtX2FnZTsKKyAgICBtdXRhYmxlIENvbXBhY3RPcHRpb25hbDxXYWxsVGltZSwgV2FsbFRpbWU6
Ok9wdGlvbmFsVHJhaXRzPiBtX2RhdGU7CisgICAgbXV0YWJsZSBDb21wYWN0T3B0aW9uYWw8V2Fs
bFRpbWUsIFdhbGxUaW1lOjpPcHRpb25hbFRyYWl0cz4gbV9leHBpcmVzOworICAgIG11dGFibGUg
Q29tcGFjdE9wdGlvbmFsPFdhbGxUaW1lLCBXYWxsVGltZTo6T3B0aW9uYWxUcmFpdHM+IG1fbGFz
dE1vZGlmaWVkOwogICAgIG11dGFibGUgUGFyc2VkQ29udGVudFJhbmdlIG1fY29udGVudFJhbmdl
OwogICAgIG11dGFibGUgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBtX2NhY2hlQ29udHJvbERpcmVj
dGl2ZXM7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA1YTQzM2FlZWY1MDZiNmY0NjU1NjAxM2JmYmI0MzYxYmYyMTlhYzFhLi5iMjM2NGRiYzg3
NWFlYTJlZjBlYjg4MTczMDMyZmE0ZWI2MzA4ZGZhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDktMDIgIFl1
c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbV1RG
XSBBZGQgQ29tcGFjdE9wdGlvbmFsPFQsIFRyYWl0cz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgQ29tcGFjdE9wdGlvbmFsLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db21wYWN0T3B0aW9uYWwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTA5LTAxICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSAyLjIxLjkx
IGZhaWxzIHRvIGJ1aWxkIHdpdGggRU5BQkxFX01JTklCUk9XU0VSCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA5NjhhZjc2NDk5MjNhNWUzZjQ5NjFkYTQ1ZWQ2ZGNjMTZjODE4Yzdk
Li5mYjAxODhmNmQ3NjJkMmUzM2E5NzZhMTJkN2UwMDE0OGZkMTZhZWIyIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ01ha2VMaXN0cy50eHQKQEAgLTkyLDYgKzkyLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9CbG9vbUZpbHRlci5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ1N0cmluZy5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAorICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db21wYWN0T3B0aW9uYWwuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcAog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggY2RiNjI0YWI4ZGQ1MzgwZmE4NzUzNTZjMzI3ZWE1MTJkYjMzOGFm
NS4uOWM1ZTI1ZmI5NDk4YzU5YzJiZTc1Y2QyOThhODc4ZDkyYmMxMGQ4NCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQxLDYgKzQxLDcgQEAKIAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5MEY1
IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1V
dGlsaXRpZXNDb2NvYS5tbSAqLzsgfTsKIAkJMEYyQzIwQjgxRENENTQ1MDAwNTQyRDlFIC8qIFRp
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
QzIwQjcxRENENTQ0ODAwNTQyRDlFIC8qIFRpbWUuY3BwICovOyB9OwogCQkwRjMwQ0I1QzFGQ0Ux
Nzk2MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMENCNUIxRkNFMTc5MjAwNEI1MzIzIC8q
IENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLzsgfTsKKwkJNDkwOUVFM0EyRDA5NDgwQzg4OTgy
RDU2IC8qIENvbXBhY3RPcHRpb25hbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFQzc5RjE2OEJFNDU0RTU3OUU0MTdCMDUgLyogQ29tcGFjdE9wdGlv
bmFsLmNwcCAqLzsgfTsKIAkJMEYzQjk0QTcxQTc3MjY3NDAwREUzMjcyIC8qIFdLV2ViVmlld0V2
YWx1YXRlSmF2YVNjcmlwdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0I5NEE1MUE3NzI2NkMwMERFMzI3MiAvKiBXS1dlYlZpZXdFdmFsdWF0ZUph
dmFTY3JpcHQubW0gKi87IH07CiAJCTBGNEZGQTlFMUVEM0FBODUwMEY3MTExRiAvKiBTbmFwc2hv
dFZpYVJlbmRlckluQ29udGV4dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNEZGQTlEMUVEM0FBODUwMEY3MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRl
ckluQ29udGV4dC5tbSAqLzsgfTsKIAkJMEY1NjUxRjcxRkNFNEREQzAwMzEwRkJDIC8qIE5vSGlz
dG9yeUl0ZW1TY3JvbGxUb0ZyYWdtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY1NjUxRjYxRkNFNEREQjAwMzEwRkJDIC8qIE5vSGlzdG9yeUl0
ZW1TY3JvbGxUb0ZyYWdtZW50Lm1tICovOyB9OwpAQCAtMTIzMyw2ICsxMjM0LDcgQEAKIAkJMEYx
N0JCRDQxNUFGNkM0RDAwN0FCNzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vz
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlU3RhdGlz
dGljc1dpdGhOb1dlYlByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDMjBCNzFEQ0Q1NDQ4MDA1NDJEOUUgLyogVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYzMENCNUIxRkNFMTc5MjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbmN1cnJlbnRQdHJIYXNoU2V0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3QjA1
IC8qIENvbXBhY3RPcHRpb25hbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb21wYWN0T3B0aW9uYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjNCOTRBNTFBNzcyNjZDMDBERTMyNzIgLyogV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3RXZhbHVh
dGVKYXZhU2NyaXB0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRGRkE5RDFF
RDNBQTg1MDBGNzExMUYgLyogU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0RkZBQTAxRUQzRDBERTAwRjcx
MTFGIC8qIEltYWdlSU8uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJbWFnZUlPLmZyYW1l
d29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcms7
IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAtMjk4Myw2ICsyOTg1LDcgQEAKIAkJCQkyNkYx
QjQ0MjE1Q0E0MzRGMDBEMUU0QkYgLyogQXRvbWljU3RyaW5nLmNwcCAqLywKIAkJCQlFNDAwMTkz
MDFBQ0U5QjVDMDAxQjBBMkEgLyogQmxvb21GaWx0ZXIuY3BwICovLAogCQkJCUE3QTk2NkRBMTQw
RUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAorCQkJ
CUVDNzlGMTY4QkU0NTRFNTc5RTQxN0IwNSAvKiBDb21wYWN0T3B0aW9uYWwuY3BwICovLAogCQkJ
CTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8s
CiAJCQkJMEZFQUUzNjcxQjdEMTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8sCiAJCQkJ
NTE3MTRFQjkxRDA4NzQxNjAwNDcyM0M0IC8qIENyb3NzVGhyZWFkVGFzay5jcHAgKi8sCkBAIC0z
NTcwLDYgKzM1NzMsNyBAQAogCQkJCTFBREFEMTUwMUQ3N0E5RjYwMDIxMjU4NiAvKiBCbG9ja1B0
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERTlDMUQwQTU5MEMwMEZFQkNGMyAvKiBCbG9v
bUZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBMDFEMEE1OTBDMDBGRUJDRjMg
LyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5
MDlFRTNBMkQwOTQ4MEM4ODk4MkQ1NiAvKiBDb21wYWN0T3B0aW9uYWwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYzMENCNUMxRkNFMTc5NjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUMzMUQwQTU5MEMwMEZFQkNGMyAvKiBDb25k
aXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFQTYxRDBBNTkwQzAwRkVCQ0YzIC8q
IENvdW50ZXJzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ29tcGFjdE9wdGlvbmFsLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0NvbXBhY3RPcHRpb25hbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U1MTg1YWMyODE3N2Qw
NDg3YmM3MzkwYmRkNWVhYTYzMDYzZjEzMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0NvbXBhY3RPcHRpb25hbC5jcHAKQEAgLTAsMCArMSwyNjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1a2kgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8
d3RmL0NvbXBhY3RPcHRpb25hbC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RF
U1QoV1RGX0NvbXBhY3RPcHRpb25hbCwgRGlzZW5nYWdlZCkKK3sKKyAgICB7CisgICAgICAgIENv
bXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlv
bmFsOworCisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxP
cHRpb25hbFRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyBzdGQ6Om51bGxvcHQgfTsKKworICAg
ICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICB9Cit9
CisKK1RFU1QoV1RGX0NvbXBhY3RPcHRpb25hbCwgRW5nYWdlZCkKK3sKKyAgICB7CisgICAgICAg
IENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9w
dGlvbmFsIHsgMTAgfTsKKworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihv
cHRpb25hbCkpOworICAgICAgICBFWFBFQ1RfRVEoMTAsIG9wdGlvbmFsLnZhbHVlKCkpOworCisg
ICAgICAgIG9wdGlvbmFsID0gNDE7CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJv
b2w+KG9wdGlvbmFsKSk7CisgICAgICAgIEVYUEVDVF9FUSg0MSwgb3B0aW9uYWwudmFsdWUoKSk7
CisKKyAgICAgICAgb3B0aW9uYWwgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIEVYUEVDVF9GQUxT
RShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworCisgICAgICAgIG9wdGlvbmFsID0gNDI7
CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAg
IH0KKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxU
cmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDIgfTsKKworICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKworICAgICAgICBvcHRpb25hbCA9IDQxOwor
CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAg
ICAgIEVYUEVDVF9FUSg0MSwgb3B0aW9uYWwudmFsdWUoKSk7CisgICAgfQorfQorCitURVNUKFdU
Rl9Db21wYWN0T3B0aW9uYWwsIERlc3RydWN0b3IpCit7CisgICAgc3RhdGljIGJvb2wgZGlkQ2Fs
bERlc3RydWN0b3IgPSBmYWxzZTsKKyAgICBzdHJ1Y3QgQSB7CisgICAgICAgIGV4cGxpY2l0IEEo
aW50IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICAgICB7IH0KKwor
ICAgICAgICB+QSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShkaWRDYWxs
RGVzdHJ1Y3Rvcik7CisgICAgICAgICAgICBkaWRDYWxsRGVzdHJ1Y3RvciA9IHRydWU7CisgICAg
ICAgIH0KKworICAgICAgICBpbnQgbV92YWx1ZSB7IDQyIH07CisgICAgfTsKKworICAgIHN0cnVj
dCBBVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IEEmIHZh
bHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUubV92YWx1ZSA9PSA0MjsK
KyAgICAgICAgfQorICAgICAgICBzdGF0aWMgQSBlbXB0eVZhbHVlKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIEEoNDIpOworICAgICAgICB9CisgICAgfTsKKworICAgIGRpZENhbGxE
ZXN0cnVjdG9yID0gZmFsc2U7CisgICAgeworICAgICAgICBDb21wYWN0T3B0aW9uYWw8QSwgQVRy
YWl0cz4gb3B0aW9uYWwgeyBzdGQ6OmluX3BsYWNlLCAyMCB9OworICAgICAgICBFWFBFQ1RfVFJV
RShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShk
aWRDYWxsRGVzdHJ1Y3Rvcik7CisKKyAgICBkaWRDYWxsRGVzdHJ1Y3RvciA9IGZhbHNlOworICAg
IHsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPEEsIEFUcmFpdHM+IG9wdGlvbmFsIHsgc3RkOjpp
bl9wbGFjZSwgNDIgfTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9w
dGlvbmFsKSk7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKGRpZENhbGxEZXN0cnVjdG9yKTsKK30K
KworVEVTVChXVEZfQ29tcGFjdE9wdGlvbmFsLCBGcm9tT3B0aW9uYWwpCit7CisgICAgeworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRp
Y19jYXN0PGJvb2w+KGZyb20pKTsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdy
YWxPcHRpb25hbFRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgPSBmcm9tOworICAgICAgICBFWFBF
Q1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICB9CisgICAgeworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbSB7IDQyIH07CisgICAgICAgIEVYUEVDVF9UUlVF
KHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwg
SW50ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgPSBmcm9tOworICAgICAg
ICAvLyBXZSBjb252ZXJ0IHRoaXMgdG8gbnVsbG9wdC4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0
YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IGZyb20geyA0MyB9OworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2Fz
dDxib29sPihmcm9tKSk7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0
aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsID0gZnJvbTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgRVhQRUNUX0VRKG9wdGlv
bmFsLnZhbHVlKCksIDQzKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGlu
dD4gZnJvbTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsK
KyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQs
IDQyPj4gb3B0aW9uYWwgeyBXVEZNb3ZlKGZyb20pIH07CisgICAgICAgIEVYUEVDVF9GQUxTRShz
dGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBmcm9tIHsgNDIgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nh
c3Q8Ym9vbD4oZnJvbSkpOworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9w
dGlvbmFsVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IFdURk1vdmUoZnJvbSkgfTsKKyAgICAg
ICAgLy8gV2UgY29udmVydCB0aGlzIHRvIG51bGxvcHQuCisgICAgICAgIEVYUEVDVF9GQUxTRShz
dGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBmcm9tIHsgNDMgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nh
c3Q8Ym9vbD4oZnJvbSkpOworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9w
dGlvbmFsVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IFdURk1vdmUoZnJvbSkgfTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKG9wdGlvbmFsLnZhbHVlKCksIDQzKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NvbXBh
Y3RPcHRpb25hbCwgVG9PcHRpb25hbCkKK3sKKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25h
bDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxpbnQ+IHRvID0gb3B0aW9uYWw7CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0
aWNfY2FzdDxib29sPih0bykpOworICAgIH0KKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25h
bDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDIgfTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAg
ICAgIC8vIFdlIGNvbnZlcnQgdGhpcyB0byBudWxsb3B0LgorICAgICAgICBzdGQ6Om9wdGlvbmFs
PGludD4gdG8gPSBvcHRpb25hbDsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJv
b2w+KHRvKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50
ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyA0MyB9OworICAgICAgICBF
WFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGludD4gdG8gPSBvcHRpb25hbDsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nh
c3Q8Ym9vbD4odG8pKTsKKyAgICAgICAgRVhQRUNUX0VRKHRvLnZhbHVlKCksIDQzKTsKKyAgICB9
CisgICAgeworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9wdGlvbmFsVHJh
aXRzPGludCwgNDI+PiBvcHRpb25hbDsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0
PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0byB7IFdURk1v
dmUob3B0aW9uYWwpIH07CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPih0
bykpOworICAgIH0KKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFs
T3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDIgfTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIC8vIFdlIGNvbnZl
cnQgdGhpcyB0byBudWxsb3B0LgorICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdG8geyBXVEZN
b3ZlKG9wdGlvbmFsKSB9OworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4o
dG8pKTsKKyAgICB9CisgICAgeworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3Jh
bE9wdGlvbmFsVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IDQzIH07CisgICAgICAgIEVYUEVD
VF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiB0byB7IFdURk1vdmUob3B0aW9uYWwpIH07CisgICAgICAgIEVYUEVDVF9UUlVFKHN0
YXRpY19jYXN0PGJvb2w+KHRvKSk7CisgICAgICAgIEVYUEVDVF9FUSh0by52YWx1ZSgpLCA0Myk7
CisgICAgfQorfQorCitURVNUKFdURl9Db21wYWN0T3B0aW9uYWwsIE1vdmVPcHRpb25hbCkKK3sK
KyAgICBjbGFzcyBPbmx5TW92YWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBjb25zdGV4cHIg
ZXhwbGljaXQgT25seU1vdmFibGUoaW50IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHZh
bHVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBpbnQgdmFsdWUoKSB7IHJldHVy
biBtX3ZhbHVlOyB9CisKKyAgICAgICAgT25seU1vdmFibGUmIG9wZXJhdG9yPShPbmx5TW92YWJs
ZSYmIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBtX3ZhbHVlID0gb3RoZXIubV92YWx1
ZTsKKyAgICAgICAgICAgIG90aGVyLm1fdmFsdWUgPSA0MjsKKyAgICAgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICAgICAgfQorCisgICAgICAgIE9ubHlNb3ZhYmxlKE9ubHlNb3ZhYmxlJiYgb3Ro
ZXIpCisgICAgICAgICAgICA6IG1fdmFsdWUob3RoZXIubV92YWx1ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgb3RoZXIubV92YWx1ZSA9IDQyOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBPbmx5TW92YWJsZSBlbXB0eVZhbHVlKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIE9ubHlNb3ZhYmxlKDQyKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgT25seU1vdmFibGUmIHZhbHVlKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUubV92YWx1ZSA9PSA0MjsKKyAgICAgICAg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgT25seU1vdmFibGUoY29uc3QgT25seU1vdmFibGUm
KSA9IGRlbGV0ZTsKKyAgICAgICAgT25seU1vdmFibGUmIG9wZXJhdG9yPShjb25zdCBPbmx5TW92
YWJsZSYpID0gZGVsZXRlOworCisgICAgICAgIGludCBtX3ZhbHVlOworICAgIH07CisgICAgewor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPE9ubHlNb3ZhYmxlPiBmcm9tIHsgc3RkOjppbl9wbGFjZSwg
MjAgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oZnJvbSkpOworICAg
ICAgICBFWFBFQ1RfRVEoZnJvbS52YWx1ZSgpLnZhbHVlKCksIDIwKTsKKyAgICAgICAgQ29tcGFj
dE9wdGlvbmFsPE9ubHlNb3ZhYmxlLCBPbmx5TW92YWJsZT4gY29tcGFjdCA9IFdURk1vdmUoZnJv
bSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KGNvbXBhY3QpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGNvbXBhY3QudmFsdWUoKS52YWx1ZSgpLCAyMCk7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8T25seU1vdmFibGU+IHRvID0gV1RGTW92ZShjb21wYWN0KTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKKyAgICAgICAgRVhQRUNUX0VRKHRv
LnZhbHVlKCkudmFsdWUoKSwgMjApOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348751</attachid>
            <date>2018-09-02 13:47:17 -0700</date>
            <delta_ts>2018-09-03 01:33:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189231-20180903054716.patch</filename>
            <type>text/plain</type>
            <size>31234</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM3OTQyYmM4NTc4NmQzODNlNWZlYTJj
YWNmYTk0OTBhMjEwMmU0YmMuLjJkNjQxMjc5ZjU2Mzg0MGEzMGRiZWM5OTAxMjRhZTliNzljMDNh
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTgtMDktMDIgIFl1c3VrZSBTdXp1a2kgIDx5dXN1
a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbV1RGXSBBZGQgQ29tcGFjdE9wdGlv
bmFsPFQsIFRyYWl0cz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4OTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIGNhbiByZXByZXNlbnQgYSB2YWx1ZSB3aXRoIG51bGxvcHQgYnkgdXNpbmcgc3Rk
OjpvcHRpb25hbDxUPi4gSG93ZXZlciwgYXMgeW91IGtub3csIHN0ZDo6b3B0aW9uYWw8VD4gaGFz
CisgICAgICAgIHN0b3JhZ2UgZWZmaWNpZW5jeSBwcm9ibGVtLiBJdCBhbHdheXMgaGFzIGEgYm9v
bCBpbmRpY2F0aW5nIHRoYXQgdGhlIHZhbHVlIGlzIG51bGxvcHQgb3Igbm90LiBJZiB5b3UgaGF2
ZSBhCisgICAgICAgIGNsYXNzIGxpa2UsCisKKyAgICAgICAgICAgIGNsYXNzIEEgeworICAgICAg
ICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fdGltZUE7CisgICAgICAgICAgICAg
ICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV90aW1lQjsKKyAgICAgICAgICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBtX3RpbWVDOworICAgICAgICAgICAgfTsKKworICAgICAgICBU
aGlzIGNsYXNzIGhhcyBzaWduaWZpY2FudCBhbW91bnQgb2YgcGFkZGluZyBiZXR3ZWVuIG1fdGlt
ZUEgLyBtX3RpbWVCLCBtX3RpbWVCIC8gbV90aW1lQyBkdWUgdG8gdGhlIGFib3ZlIGJvb2wuCisK
KyAgICAgICAgSWYgd2Uga25vdyB0aGF0IFdhbGxUaW1lIGhhcyBhIHZhbHVlIHRoYXQgcmVwcmVz
ZW50cyBpbnZhbGlkLCB3ZSBjYW4gdXNlIGl0IGluc3RlYWQgYW5kIHNhdmUgdGhlIHN0b3JhZ2Uu
CisgICAgICAgIFRoaXMgaXMgdmVyeSBzaW1pbGFyIHByb2JsZW0gdG8gb3VyIEhhc2hUYWJsZSBp
bXBsZW1lbnRhdGlvbi4gSW4gb3VyIEhhc2hUYWJsZSBpbXBsZW1lbnRhdGlvbiwgd2UgbmVlZCBE
ZWxldGVkCisgICAgICAgIGFuZCBFbXB0eSB2YWx1ZSwgd2hpY2ggY2FuIHJlcHJlc2VudCBEZWxl
dGVkIGFuZCBFbXB0eSB2YWx1ZXMgd2l0aG91dCBzYWNyaWZpY2luZyBzdG9yYWdlIGVmZmljaWVu
Y3kuCisKKyAgICAgICAgV2Ugc2hvdWxkIGhhdmUgc2ltaWxhciBtZWNoYW5pc20gaGVyZS4gSW4g
dGhpcyBwYXRjaCwgd2UgaGF2ZSBXVEY6OkNvbXBhY3RPcHRpb25hbDxULCBUcmFpdHM+LiBUcmFp
dHMgb2ZmZXJzCisgICAgICAgIGBUcmFpdHM6OmlzRW1wdHlWYWx1ZSh2YWx1ZSlgIGFuZCBgVHJh
aXRzOjplbXB0eVZhbHVlKClgLiBUaGVuLCB3ZSB1c2UgdGhpcyBlbXB0eSB2YWx1ZSBpbnN0ZWFk
IG9mIGhhdmluZyBib29sCisgICAgICAgIGZsYWcuIFRoaXMgd2F5LCB3ZSBjYW4gbWFrZSBgc2l6
ZW9mKFdURjo6Q29tcGFjdE9wdGlvbmFsPFQ+KSA9PSBzaXplb2YoVClgLgorCisgICAgICAgIFRo
aXMgaWRlYSBpcyBpbnNwaXJlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ha3J6ZW1pMS9tYXJr
YWJsZS4gQnV0IHdlIHdvdWxkIGxpa2UgdG8gaGF2ZSBXVEY6OkNvbXBhY3RPcHRpb25hbDxUPgor
ICAgICAgICBoZXJlIGluc3RlYWQgb2YgaW1wb3J0aW5nIGl0IHNpbmNlIHdlIHdvdWxkIGxpa2Ug
dG8gaGF2ZSAoMSkgaW50ZWdyYXRlZCBpbnRlcmZhY2VzIHdpdGggc3RkOjpvcHRpb25hbDxUPiBh
bmQgKDIpCisgICAgICAgIGFsaWduZWQgZnVuY3Rpb24gbmFtZXMgdG8gSGFzaFRyYWl0cycgYGlz
RW1wdHlWYWx1ZWAgYW5kIGBlbXB0eVZhbHVlYC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiB3dGYvQ29tcGFjdE9wdGlvbmFsLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpzdGQ6OnVuZGVy
bHlpbmdfdHlwZTxFbnVtVHlwZT46OnR5cGU+OjptYXgpOiBFbnVtT3B0aW9uYWxUcmFpdHMgY2Fu
IGJlIHVzZWQgYXMgYW4gT3B0aW9uYWxUcmFpdHMgZm9yIGVudW0KKyAgICAgICAgdmFsdWVzLiBX
ZSBjYW4gc3BlY2lmeSBhIGNvbnN0YW50IHZhbHVlIGFzIGFuIGVtcHR5IHZhbHVlLgorICAgICAg
ICAoV1RGOjpJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzOjppc0VtcHR5VmFsdWUpOgorICAgICAgICAo
V1RGOjpJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzOjplbXB0eVZhbHVlKTogSW50ZWdyYWxPcHRpb25h
bFRyYWl0cyBjYW4gYmUgdXNlZCBhcyBhbiBPcHRpb25hbFRyYWl0cyBmb3IgaW50ZWdyYWwKKyAg
ICAgICAgdHlwZXMgaW5jbHVkaW5nIGludCBldGMuCisgICAgICAgIChXVEY6OkNvbXBhY3RPcHRp
b25hbDo6Q29tcGFjdE9wdGlvbmFsKToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFsOjpv
cGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFsOjpyZXNl
dCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RPcHRpb25hbDo6dmFsdWUgY29uc3QpOgorICAgICAg
ICAoV1RGOjpDb21wYWN0T3B0aW9uYWw6OnZhbHVlKToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9w
dGlvbmFsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFs
OjpvcGVyYXRvci0+KToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFsOjpvcGVyYXRvciog
Y29uc3QpOgorICAgICAgICAoV1RGOjpDb21wYWN0T3B0aW9uYWw6Om9wZXJhdG9yKik6CisgICAg
ICAgIChXVEY6OkNvbXBhY3RPcHRpb25hbDo6b3BlcmF0b3Igc3RkOjpvcHRpb25hbDxUPik6Cisg
ICAgICAgIChXVEY6OkNvbXBhY3RPcHRpb25hbDo6b3BlcmF0b3Igc3RkOjpvcHRpb25hbDxUPiBj
b25zdCk6IFRoaXMgb3BlcmF0b3IgYWxsb3dzIHVzIHRvIGNhc3QgQ29tcGFjdE9wdGlvbmFsPFQ+
IHRvCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4uCisgICAgICAgICogd3RmL01vbm90b25pY1Rp
bWUuaDoKKyAgICAgICAgKFdURjo6TW9ub3RvbmljVGltZTo6T3B0aW9uYWxUcmFpdHM6OmlzRW1w
dHlWYWx1ZSk6CisgICAgICAgIChXVEY6Ok1vbm90b25pY1RpbWU6Ok9wdGlvbmFsVHJhaXRzOjpl
bXB0eVZhbHVlKTogT3B0aW9uYWxUcmFpdHMgZm9yIE1vbm90b25pY1RpbWUuIE1vbm90b25pY1Rp
bWU6Om5hbigpIGlzIHVzZWQKKyAgICAgICAgYXMgYW4gZW1wdHkgdmFsdWUuCisgICAgICAgICog
d3RmL1NlY29uZHMuaDoKKyAgICAgICAgKFdURjo6U2Vjb25kczo6T3B0aW9uYWxUcmFpdHM6Omlz
RW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6OlNlY29uZHM6Ok9wdGlvbmFsVHJhaXRzOjplbXB0
eVZhbHVlKTogT3B0aW9uYWxUcmFpdHMgZm9yIFNlY29uZHMuIFNlY29uZHM6Om5hbigpIGlzIHVz
ZWQgYXMgYW4gZW1wdHkgdmFsdWUuCisgICAgICAgICogd3RmL1dhbGxUaW1lLmg6CisgICAgICAg
IChXVEY6OldhbGxUaW1lOjpuYW4pOgorICAgICAgICAoV1RGOjpXYWxsVGltZTo6T3B0aW9uYWxU
cmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6OldhbGxUaW1lOjpPcHRpb25hbFRy
YWl0czo6ZW1wdHlWYWx1ZSk6IE9wdGlvbmFsVHJhaXRzIGZvciBXYWxsVGltZS4gV2FsbFRpbWU6
Om5hbigpIGlzIHVzZWQgYXMgYW4gZW1wdHkgdmFsdWUuCisKIDIwMTgtMDgtMzEgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgT3B0aW9uU2V0IHw9
IGFuZCAtPSBvcGVyYXRvcnMgd2l0aCBhZGQoKSBhbmQgcmVtb3ZlKCkgZnVuY3Rpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggZmZmMzcxOTNkZmRmZDY1NjUxNjMyYmE2NjAyYjc1NDZjNGJiMjAxOC4uN2Y5YzIy
NDA3NDM5MmZlMDM5YWRmNzMxZWE5NGJlNzQ3Nzg1NWE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDE4LTA5LTAyICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFy
dC5vcmc+CisKKyAgICAgICAgW1dURl0gQWRkIENvbXBhY3RPcHRpb25hbDxULCBUcmFpdHM+Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyMzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgQ29tcGFj
dE9wdGlvbmFsPFNlY29uZHM+IGFuZCBDb21wYWN0T3B0aW9uYWw8V2FsbFRpbWU+IGluIFJlc291
cmNlUmVzcG9uc2VCYXNlLgorICAgICAgICBTaW5jZSB0aGVzZSBmaWVsZHMgYXJlIHBhcnNlZCBy
ZXN1bHRzIGZyb20gaHR0cCBoZWFkZXIgZmllbGRzLCBTZWNvbmRzOjpuYW4oKSBhbmQgV2FsbFRp
bWU6Om5hbigpCisgICAgICAgIGNhbiBiZSB1c2VkIGFzIGFuIGVtcHR5IHZhbHVlIGZvciB0aGVz
ZSBmaWVsZHMuIFRodXMgd2UgY2FuIHVzZSBDb21wYWN0T3B0aW9uYWwgYmVjYXVzZSBpdCB1c2Vz
CisgICAgICAgIHRoZXNlIG5hbiB2YWx1ZXMgYXMgYW4gZW1wdHkgdmFsdWVzICh0aGV5IGFyZSBj
b25maWd1cmVkIGJ5IFNlY29uZHM6Ok9wdGlvbmFsVHJhaXRzIGFuZCBXYWxsVGltZTo6T3B0aW9u
YWxUcmFpdHMpLgorICAgICAgICBUaGlzIHJlZHVjZXMgdGhlIHNpemUgb2YgUmVzb3VyY2VSZXNw
b25zZUJhc2UgZnJvbSA0NDggdG8gNDE2LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorCiAyMDE4LTA5LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBGaWx0ZXJFZmZlY3RSZW5kZXJl
ciB0byBDU1NGaWx0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM1MTFlZDIyNzUxYjU1MGE3ZGZkMzNmYjkxYmM0YzU5NjFhMTNkZDguLmY2YzhiY2YyODQ1
ODhlMDA4OTY3MDNiOGUxZDRhOTkzNjRjNWY3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNjMyLDYgKzYzMiw3IEBACiAJCUUzOEQ2RTI2MUY1NTIyRTMw
MEE3NUNDNCAvKiBTdHJpbmdCdWlsZGVySlNPTi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVySlNPTi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzQTMyQkMyMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWVNYWxsb2MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMzFGQzgzMEUyMDA3RDdFNzYgLyog
SlNWYWx1ZU1hbGxvYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVl
TWFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMwNENBNEU0MTM3NTQzN0VC
RTkzMUQwMyAvKiBDb21wYWN0T3B0aW9uYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tcGFjdE9wdGlvbmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
Q0Y3NjkwMjExNUQ2QkEwMDkxREU0OCAvKiBDb21wYWN0UG9pbnRlclR1cGxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBhY3RQb2ludGVyVHVwbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZy
ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtRnJlZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDMxQ0M0QTIxMTg3QURCMDAwQzhBMDcgLyogRGlz
cGF0Y2hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGF0Y2hTUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MSw2ICs4NDIsNyBAQAogCQkJCTBG
NjZCMjgwMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwICovLAogCQkJCTBGNjZCMjgx
MURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuaCAqLywKIAkJCQkwRkM0RURFNTE2OTYxNDk2
MDBGNjUwNDEgLyogQ29tbWFQcmludGVyLmggKi8sCisJCQkJMzA0Q0E0RTQxMzc1NDM3RUJFOTMx
RDAzIC8qIENvbXBhY3RPcHRpb25hbC5oICovLAogCQkJCUUzQ0Y3NjkwMjExNUQ2QkEwMDkxREU0
OCAvKiBDb21wYWN0UG9pbnRlclR1cGxlLmggKi8sCiAJCQkJMEY4RjJCOEYxNzJFMDBGMDAwN0RC
REE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCAqLywKIAkJCQkwRjhGMkI5MDE3MkUwMEYwMDA3
REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXgg
NTBlNjJhMzExZDIwMTIxMzc1NmFmZjUyMWFhNDk2MmMwNTkyYTg3OC4uNWNlMWZhYTRjMjFiYTlh
N2JkYzRlOGI4MmJjMGRiMmI3NGZmMjBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI3LDYg
KzI3LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIENoZWNrZWRCb29sZWFuLmgKICAg
ICBDbG9ja1R5cGUuaAogICAgIENvbW1hUHJpbnRlci5oCisgICAgQ29tcGFjdE9wdGlvbmFsLmgK
ICAgICBDb21wYWN0UG9pbnRlclR1cGxlLmgKICAgICBDb21waWxhdGlvblRocmVhZC5oCiAgICAg
Q29tcGlsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29tcGFjdE9wdGlvbmFsLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Db21wYWN0T3B0aW9uYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjA3OWQyMGJm
ZmI0MWY5MGJkNTJmNjVkYzE2YzU1OWEwYjYzODg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvQ29tcGFjdE9wdGlvbmFsLmgKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gVGhlIGlk
ZWEgb2YgQ29tcGFjdE9wdGlvbmFsPFQ+IGlzIGRlcml2ZWQgZnJvbSBtYXJrYWJsZTxUPiBhdAor
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2FrcnplbWkxL21hcmthYmxlLgorLy8KKy8vIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE4IEFuZHJ6ZWogS3J6ZW1pZW5za2kuCisvLworLy8gVXNlLCBtb2RpZmlj
YXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUK
Ky8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0Vf
MV8wLnR4dCBvciBjb3B5IGF0CisvLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50
eHQpCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKworLy8gRXhhbXBsZToKKy8vICAgICBlbnVtIGNsYXNzIFR5cGUgeyBWYWx1ZTEs
IFZhbHVlMiwgVmFsdWUzIH07CisvLyAgICAgQ29tcGFjdE9wdGlvbmFsPFR5cGUsIEVudW1PcHRp
b25hbFRyYWl0czxUeXBlLCA0Mj4+IG9wdGlvbmFsOwordGVtcGxhdGU8CisgICAgdHlwZW5hbWUg
RW51bVR5cGUsCisgICAgdHlwZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bVR5cGU+Ojp0
eXBlIGNvbnN0YW50ID0gc3RkOjpudW1lcmljX2xpbWl0czx0eXBlbmFtZSBzdGQ6OnVuZGVybHlp
bmdfdHlwZTxFbnVtVHlwZT46OnR5cGU+OjptYXgoKT4KK3N0cnVjdCBFbnVtT3B0aW9uYWxUcmFp
dHMgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19lbnVtPEVudW1UeXBlPjo6dmFsdWUsICIi
KTsKKyAgICB1c2luZyBVbmRlcmx5aW5nVHlwZSA9IHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190
eXBlPEVudW1UeXBlPjo6dHlwZTsKKworICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBpc0VtcHR5
VmFsdWUoRW51bVR5cGUgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VW5kZXJseWluZ1R5cGU+KHZhbHVlKSA9PSBjb25zdGFudDsKKyAgICB9CisKKyAgICBjb25zdGV4
cHIgc3RhdGljIEVudW1UeXBlIGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVudW1UeXBlPihjb25zdGFudCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSW50ZWdyYWxUeXBlLCBJbnRlZ3JhbFR5cGUgY29uc3RhbnQgPSAwPgorc3RydWN0IElu
dGVncmFsT3B0aW9uYWxUcmFpdHMgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3Jh
bDxJbnRlZ3JhbFR5cGU+Ojp2YWx1ZSwgIiIpOworICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBp
c0VtcHR5VmFsdWUoSW50ZWdyYWxUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZh
bHVlID09IGNvbnN0YW50OworICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgSW50ZWdyYWxU
eXBlIGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0YW50OworICAgIH0K
K307CisKKy8vIFRoZSBnb2FsIG9mIENvbXBhY3RPcHRpb25hbCBpcyBvZmZlcmluZyBzdGQ6Om9w
dGlvbmFsIHdpdGhvdXQgc2FjcmlmaWNpbmcgc3RvcmFnZSBlZmZpY2llbmN5LgorLy8gQ29tcGFj
dE9wdGlvbmFsIHRha2VzIFRyYWl0cywgd2hpY2ggc2hvdWxkIGhhdmUgaXNFbXB0eVZhbHVlIGFu
ZCBlbXB0eVZhbHVlIGZ1bmN0aW9ucy4gQnkgdXNpbmcKKy8vIG9uZSB2YWx1ZSBvZiBUIGFzIGFu
IGVtcHR5IHZhbHVlLCB3ZSBjYW4gcmVtb3ZlIGJvb2wgZmxhZyBpbiBzdGQ6Om9wdGlvbmFsLiBU
aGlzIHN0cmF0ZWd5IGlzCisvLyBzaW1pbGFyIHRvIFdURjo6SGFzaFRhYmxlLCB3aGljaCB1c2Vz
IHR3byB2YWx1ZXMgb2YgVCBhcyBhbiBlbXB0eSB2YWx1ZSBhbmQgYSBkZWxldGVkIHZhbHVlLgor
Ly8gVGhpcyBjbGFzcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgbWVtYmVyIG9mIGEgY2xh
c3MgdG8gY29tcGFjdCB0aGUgc2l6ZSBvZiB0aGUgY2xhc3MuCisvLyBPdGhlcndpc2UsIHlvdSBz
aG91bGQgdXNlIHN0ZDo6b3B0aW9uYWwuCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBU
cmFpdHM+CitjbGFzcyBDb21wYWN0T3B0aW9uYWwgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBD
b21wYWN0T3B0aW9uYWwoKQorICAgICAgICA6IG1fdmFsdWUoVHJhaXRzOjplbXB0eVZhbHVlKCkp
CisgICAgeyB9CisKKyAgICBjb25zdGV4cHIgQ29tcGFjdE9wdGlvbmFsKHN0ZDo6bnVsbG9wdF90
KQorICAgICAgICA6IENvbXBhY3RPcHRpb25hbCgpCisgICAgeyB9CisKKyAgICBjb25zdGV4cHIg
Q29tcGFjdE9wdGlvbmFsKFQmJiB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKFdURk1vdmUodmFs
dWUpKQorICAgIHsgfQorCisgICAgY29uc3RleHByIENvbXBhY3RPcHRpb25hbChjb25zdCBUJiB2
YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBjb25zdGV4cHIgZXhwbGljaXQgQ29tcGFjdE9wdGlvbmFs
KHN0ZDo6aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV92YWx1ZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pCisgICAgeyB9CisKKyAgICBjb25zdGV4cHIgQ29tcGFj
dE9wdGlvbmFsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8VD4mIHZhbHVlKQorICAgICAgICA6IG1fdmFs
dWUoYm9vbCh2YWx1ZSkgPyAqdmFsdWUgOiBUcmFpdHM6OmVtcHR5VmFsdWUoKSkKKyAgICB7IH0K
KworICAgIGNvbnN0ZXhwciBDb21wYWN0T3B0aW9uYWwoc3RkOjpvcHRpb25hbDxUPiYmIHZhbHVl
KQorICAgICAgICA6IG1fdmFsdWUoYm9vbCh2YWx1ZSkgPyBXVEZNb3ZlKCp2YWx1ZSkgOiBUcmFp
dHM6OmVtcHR5VmFsdWUoKSkKKyAgICB7IH0KKworICAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIVRyYWl0czo6aXNFbXB0eVZhbHVlKG1fdmFsdWUp
OyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX3ZhbHVlID0gVHJhaXRzOjplbXB0eVZhbHVlKCk7
IH0KKworICAgIGNvbnN0ZXhwciBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0JiB7IHJldHVybiBtX3Zh
bHVlOyB9CisgICAgY29uc3RleHByIFQmIHZhbHVlKCkgJiB7IHJldHVybiBtX3ZhbHVlOyB9Cisg
ICAgY29uc3RleHByIFQmJiB2YWx1ZSgpICYmIHsgcmV0dXJuIFdURk1vdmUobV92YWx1ZSk7IH0K
KworICAgIGNvbnN0ZXhwciBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gc3Rk
OjphZGRyZXNzb2YobV92YWx1ZSk7IH0KKyAgICBjb25zdGV4cHIgVCogb3BlcmF0b3ItPigpIHsg
cmV0dXJuIHN0ZDo6YWRkcmVzc29mKG1fdmFsdWUpOyB9CisKKyAgICBjb25zdGV4cHIgY29uc3Qg
VCYgb3BlcmF0b3IqKCkgY29uc3QmIHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBjb25zdGV4cHIg
VCYgb3BlcmF0b3IqKCkgJiB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBvcGVyYXRvciBzdGQ6
Om9wdGlvbmFsPFQ+KCkgJiYKKyAgICB7CisgICAgICAgIGlmIChib29sKCp0aGlzKSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKG1fdmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIH0KKworICAgIG9wZXJhdG9yIHN0ZDo6b3B0aW9uYWw8VD4oKSBjb25zdCYKKyAg
ICB7CisgICAgICAgIGlmIChib29sKCp0aGlzKSkKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVl
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBU
IG1fdmFsdWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDb21wYWN0
T3B0aW9uYWw7Cit1c2luZyBXVEY6OkludGVncmFsT3B0aW9uYWxUcmFpdHM7Cit1c2luZyBXVEY6
OkVudW1PcHRpb25hbFRyYWl0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01vbm90b25p
Y1RpbWUuaCBiL1NvdXJjZS9XVEYvd3RmL01vbm90b25pY1RpbWUuaAppbmRleCAwYmJlZTgyM2Q4
MjkxZjkzYmVjNzU3NjUyMTIxYjlmMDRjZDZjMmUzLi4zOGNjYjAyNDJlMGUxYzVlOGE2MDcwMmQx
M2M2MmU2OGI3NGY5OTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Nb25vdG9uaWNUaW1l
LmgKKysrIGIvU291cmNlL1dURi93dGYvTW9ub3RvbmljVGltZS5oCkBAIC0xNjUsNiArMTY1LDgg
QEAgY2xhc3MgTW9ub3RvbmljVGltZSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAor
ICAgIHN0cnVjdCBPcHRpb25hbFRyYWl0czsKKwogcHJpdmF0ZToKICAgICBjb25zdGV4cHIgTW9u
b3RvbmljVGltZShkb3VibGUgcmF3VmFsdWUpCiAgICAgICAgIDogbV92YWx1ZShyYXdWYWx1ZSkK
QEAgLTE3NCw2ICsxNzYsMTggQEAgY2xhc3MgTW9ub3RvbmljVGltZSB7CiAgICAgZG91YmxlIG1f
dmFsdWUgeyAwIH07CiB9OwogCitzdHJ1Y3QgTW9ub3RvbmljVGltZTo6T3B0aW9uYWxUcmFpdHMg
eworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShNb25vdG9uaWNUaW1lIHRpbWUpCisgICAg
eworICAgICAgICByZXR1cm4gc3RkOjppc25hbih0aW1lLm1fdmFsdWUpOworICAgIH0KKworICAg
IHN0YXRpYyBjb25zdGV4cHIgTW9ub3RvbmljVGltZSBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBNb25vdG9uaWNUaW1lOjpuYW4oKTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAogbmFtZXNwYWNlIHN0ZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
ZWNvbmRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKaW5kZXggNjEwODZmM2U0NjMzN2Vk
NzM5NDg4ZmNiNWY0ZDUzZThiNjRjMjgxMC4uODY3N2E4MGIwYThiZjYyYTNlOGI2NTVlOTRmMDUx
ZTIwNGMyMzA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1NlY29uZHMuaApAQCAtMjQ3LDEyICsyNDcsMjYgQEAgY2xhc3MgU2Vjb25k
cyB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHN0cnVjdCBPcHRpb25hbFRy
YWl0czsKKwogcHJpdmF0ZToKICAgICBkb3VibGUgbV92YWx1ZSB7IDAgfTsKIH07CiAKIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHNsZWVwKFNlY29uZHMpOwogCitzdHJ1Y3QgU2Vjb25kczo6T3B0
aW9uYWxUcmFpdHMgeworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShTZWNvbmRzIHNlY29u
ZHMpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjppc25hbihzZWNvbmRzLnZhbHVlKCkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBlbXB0eVZhbHVlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBTZWNvbmRzOjpuYW4oKTsKKyAgICB9Cit9OworCiBpbmxpbmUgbmFt
ZXNwYWNlIHNlY29uZHNfbGl0ZXJhbHMgewogCiBjb25zdGV4cHIgU2Vjb25kcyBvcGVyYXRvciIi
IF9taW4obG9uZyBkb3VibGUgbWludXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dh
bGxUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCmluZGV4IGJmNjYyMDEwOTBmMzMx
ZmZmZWI2YTc2NTJmNDEzZjM1YTllMjlkZjIuLjU1YjdmMDU2MWI5YWYzOTNmMDY5MGNkOTNiMWNm
ODFiYjBkODAyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmgKKysrIGIv
U291cmNlL1dURi93dGYvV2FsbFRpbWUuaApAQCAtNTYsNiArNTYsNyBAQCBjbGFzcyBXYWxsVGlt
ZSB7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBXYWxsVGltZSBub3coKTsKICAgICAK
ICAgICBzdGF0aWMgY29uc3RleHByIFdhbGxUaW1lIGluZmluaXR5KCkgeyByZXR1cm4gZnJvbVJh
d1NlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsgfQorICAg
IHN0YXRpYyBjb25zdGV4cHIgV2FsbFRpbWUgbmFuKCkgeyByZXR1cm4gZnJvbVJhd1NlY29uZHMo
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7IH0KICAgICAKICAgICBj
b25zdGV4cHIgU2Vjb25kcyBzZWNvbmRzU2luY2VFcG9jaCgpIGNvbnN0IHsgcmV0dXJuIFNlY29u
ZHMobV92YWx1ZSk7IH0KICAgICAKQEAgLTEzMiw2ICsxMzMsOSBAQCBjbGFzcyBXYWxsVGltZSB7
CiAgICAgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQorCisgICAgc3RydWN0IE9wdGlv
bmFsVHJhaXRzOworCiBwcml2YXRlOgogICAgIGNvbnN0ZXhwciBXYWxsVGltZShkb3VibGUgcmF3
VmFsdWUpCiAgICAgICAgIDogbV92YWx1ZShyYXdWYWx1ZSkKQEAgLTE0MSw2ICsxNDUsMTggQEAg
Y2xhc3MgV2FsbFRpbWUgewogICAgIGRvdWJsZSBtX3ZhbHVlIHsgMCB9OwogfTsKIAorc3RydWN0
IFdhbGxUaW1lOjpPcHRpb25hbFRyYWl0cyB7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVl
KFdhbGxUaW1lIHRpbWUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjppc25hbih0aW1lLm1f
dmFsdWUpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgV2FsbFRpbWUgZW1wdHlWYWx1
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2FsbFRpbWU6Om5hbigpOworICAgIH0KK307CisK
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNsZWVwKFdhbGxUaW1lKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggMmE0ZTQ5ZWZhOTU4MDNkMmI4NDkxMDJmYTVlYzQ2NWI2
NGRmOGU2My4uMjFiZGNjODA4MzljNTBiZGU2N2NhZDM5ZDZhN2JiNjU3OTI2ZjhkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5o
IgogI2luY2x1ZGUgIlBhcnNlZENvbnRlbnRSYW5nZS5oIgogI2luY2x1ZGUgIlVSTC5oIgorI2lu
Y2x1ZGUgPHd0Zi9Db21wYWN0T3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjE0LDEwICsyMTUsMTAgQEAgY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZUJhc2UgewogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+IG1fY2VydGlmaWNhdGVJbmZvOwogCiBwcml2YXRlOgotICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxTZWNvbmRzPiBtX2FnZTsKLSAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+
IG1fZGF0ZTsKLSAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fZXhwaXJlczsK
LSAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fbGFzdE1vZGlmaWVkOworICAg
IG11dGFibGUgQ29tcGFjdE9wdGlvbmFsPFNlY29uZHMsIFNlY29uZHM6Ok9wdGlvbmFsVHJhaXRz
PiBtX2FnZTsKKyAgICBtdXRhYmxlIENvbXBhY3RPcHRpb25hbDxXYWxsVGltZSwgV2FsbFRpbWU6
Ok9wdGlvbmFsVHJhaXRzPiBtX2RhdGU7CisgICAgbXV0YWJsZSBDb21wYWN0T3B0aW9uYWw8V2Fs
bFRpbWUsIFdhbGxUaW1lOjpPcHRpb25hbFRyYWl0cz4gbV9leHBpcmVzOworICAgIG11dGFibGUg
Q29tcGFjdE9wdGlvbmFsPFdhbGxUaW1lLCBXYWxsVGltZTo6T3B0aW9uYWxUcmFpdHM+IG1fbGFz
dE1vZGlmaWVkOwogICAgIG11dGFibGUgUGFyc2VkQ29udGVudFJhbmdlIG1fY29udGVudFJhbmdl
OwogICAgIG11dGFibGUgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBtX2NhY2hlQ29udHJvbERpcmVj
dGl2ZXM7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA1YTQzM2FlZWY1MDZiNmY0NjU1NjAxM2JmYmI0MzYxYmYyMTlhYzFhLi5iMjM2NGRiYzg3
NWFlYTJlZjBlYjg4MTczMDMyZmE0ZWI2MzA4ZGZhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDktMDIgIFl1
c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbV1RG
XSBBZGQgQ29tcGFjdE9wdGlvbmFsPFQsIFRyYWl0cz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgQ29tcGFjdE9wdGlvbmFsLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db21wYWN0T3B0aW9uYWwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTA5LTAxICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSAyLjIxLjkx
IGZhaWxzIHRvIGJ1aWxkIHdpdGggRU5BQkxFX01JTklCUk9XU0VSCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA5NjhhZjc2NDk5MjNhNWUzZjQ5NjFkYTQ1ZWQ2ZGNjMTZjODE4Yzdk
Li5mYjAxODhmNmQ3NjJkMmUzM2E5NzZhMTJkN2UwMDE0OGZkMTZhZWIyIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ01ha2VMaXN0cy50eHQKQEAgLTkyLDYgKzkyLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9CbG9vbUZpbHRlci5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ1N0cmluZy5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAorICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db21wYWN0T3B0aW9uYWwuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcAog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggY2RiNjI0YWI4ZGQ1MzgwZmE4NzUzNTZjMzI3ZWE1MTJkYjMzOGFm
NS4uOWM1ZTI1ZmI5NDk4YzU5YzJiZTc1Y2QyOThhODc4ZDkyYmMxMGQ4NCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQxLDYgKzQxLDcgQEAKIAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5MEY1
IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1V
dGlsaXRpZXNDb2NvYS5tbSAqLzsgfTsKIAkJMEYyQzIwQjgxRENENTQ1MDAwNTQyRDlFIC8qIFRp
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
QzIwQjcxRENENTQ0ODAwNTQyRDlFIC8qIFRpbWUuY3BwICovOyB9OwogCQkwRjMwQ0I1QzFGQ0Ux
Nzk2MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMENCNUIxRkNFMTc5MjAwNEI1MzIzIC8q
IENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLzsgfTsKKwkJNDkwOUVFM0EyRDA5NDgwQzg4OTgy
RDU2IC8qIENvbXBhY3RPcHRpb25hbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFQzc5RjE2OEJFNDU0RTU3OUU0MTdCMDUgLyogQ29tcGFjdE9wdGlv
bmFsLmNwcCAqLzsgfTsKIAkJMEYzQjk0QTcxQTc3MjY3NDAwREUzMjcyIC8qIFdLV2ViVmlld0V2
YWx1YXRlSmF2YVNjcmlwdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0I5NEE1MUE3NzI2NkMwMERFMzI3MiAvKiBXS1dlYlZpZXdFdmFsdWF0ZUph
dmFTY3JpcHQubW0gKi87IH07CiAJCTBGNEZGQTlFMUVEM0FBODUwMEY3MTExRiAvKiBTbmFwc2hv
dFZpYVJlbmRlckluQ29udGV4dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNEZGQTlEMUVEM0FBODUwMEY3MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRl
ckluQ29udGV4dC5tbSAqLzsgfTsKIAkJMEY1NjUxRjcxRkNFNEREQzAwMzEwRkJDIC8qIE5vSGlz
dG9yeUl0ZW1TY3JvbGxUb0ZyYWdtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY1NjUxRjYxRkNFNEREQjAwMzEwRkJDIC8qIE5vSGlzdG9yeUl0
ZW1TY3JvbGxUb0ZyYWdtZW50Lm1tICovOyB9OwpAQCAtMTIzMyw2ICsxMjM0LDcgQEAKIAkJMEYx
N0JCRDQxNUFGNkM0RDAwN0FCNzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vz
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlU3RhdGlz
dGljc1dpdGhOb1dlYlByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDMjBCNzFEQ0Q1NDQ4MDA1NDJEOUUgLyogVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYzMENCNUIxRkNFMTc5MjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbmN1cnJlbnRQdHJIYXNoU2V0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3QjA1
IC8qIENvbXBhY3RPcHRpb25hbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb21wYWN0T3B0aW9uYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjNCOTRBNTFBNzcyNjZDMDBERTMyNzIgLyogV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3RXZhbHVh
dGVKYXZhU2NyaXB0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRGRkE5RDFF
RDNBQTg1MDBGNzExMUYgLyogU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0RkZBQTAxRUQzRDBERTAwRjcx
MTFGIC8qIEltYWdlSU8uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJbWFnZUlPLmZyYW1l
d29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcms7
IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwpAQCAtMjk4Myw2ICsyOTg1LDcgQEAKIAkJCQkyNkYx
QjQ0MjE1Q0E0MzRGMDBEMUU0QkYgLyogQXRvbWljU3RyaW5nLmNwcCAqLywKIAkJCQlFNDAwMTkz
MDFBQ0U5QjVDMDAxQjBBMkEgLyogQmxvb21GaWx0ZXIuY3BwICovLAogCQkJCUE3QTk2NkRBMTQw
RUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAorCQkJ
CUVDNzlGMTY4QkU0NTRFNTc5RTQxN0IwNSAvKiBDb21wYWN0T3B0aW9uYWwuY3BwICovLAogCQkJ
CTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8s
CiAJCQkJMEZFQUUzNjcxQjdEMTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8sCiAJCQkJ
NTE3MTRFQjkxRDA4NzQxNjAwNDcyM0M0IC8qIENyb3NzVGhyZWFkVGFzay5jcHAgKi8sCkBAIC0z
NTcwLDYgKzM1NzMsNyBAQAogCQkJCTFBREFEMTUwMUQ3N0E5RjYwMDIxMjU4NiAvKiBCbG9ja1B0
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERTlDMUQwQTU5MEMwMEZFQkNGMyAvKiBCbG9v
bUZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBMDFEMEE1OTBDMDBGRUJDRjMg
LyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5
MDlFRTNBMkQwOTQ4MEM4ODk4MkQ1NiAvKiBDb21wYWN0T3B0aW9uYWwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYzMENCNUMxRkNFMTc5NjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUMzMUQwQTU5MEMwMEZFQkNGMyAvKiBDb25k
aXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFQTYxRDBBNTkwQzAwRkVCQ0YzIC8q
IENvdW50ZXJzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ29tcGFjdE9wdGlvbmFsLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0NvbXBhY3RPcHRpb25hbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzIxZjRmZmY4YTA3NjE4
YmY5ODVkYzk3MWIzMjkwYmIyNDYxNmViNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0NvbXBhY3RPcHRpb25hbC5jcHAKQEAgLTAsMCArMSwyNjIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1a2kgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8
d3RmL0NvbXBhY3RPcHRpb25hbC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RF
U1QoV1RGX0NvbXBhY3RPcHRpb25hbCwgRGlzZW5nYWdlZCkKK3sKKyAgICB7CisgICAgICAgIENv
bXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlv
bmFsOworCisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxP
cHRpb25hbFRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyBzdGQ6Om51bGxvcHQgfTsKKworICAg
ICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICB9Cit9
CisKK1RFU1QoV1RGX0NvbXBhY3RPcHRpb25hbCwgRW5nYWdlZCkKK3sKKyAgICB7CisgICAgICAg
IENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9w
dGlvbmFsIHsgMTAgfTsKKworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihv
cHRpb25hbCkpOworICAgICAgICBFWFBFQ1RfRVEoMTAsIG9wdGlvbmFsLnZhbHVlKCkpOworCisg
ICAgICAgIG9wdGlvbmFsID0gNDE7CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJv
b2w+KG9wdGlvbmFsKSk7CisgICAgICAgIEVYUEVDVF9FUSg0MSwgb3B0aW9uYWwudmFsdWUoKSk7
CisKKyAgICAgICAgb3B0aW9uYWwgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIEVYUEVDVF9GQUxT
RShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworCisgICAgICAgIG9wdGlvbmFsID0gNDI7
CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAg
IH0KKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxU
cmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDIgfTsKKworICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKworICAgICAgICBvcHRpb25hbCA9IDQxOwor
CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAg
ICAgIEVYUEVDVF9FUSg0MSwgb3B0aW9uYWwudmFsdWUoKSk7CisgICAgfQorfQorCitURVNUKFdU
Rl9Db21wYWN0T3B0aW9uYWwsIERlc3RydWN0b3IpCit7CisgICAgc3RhdGljIGJvb2wgZGlkQ2Fs
bERlc3RydWN0b3IgPSBmYWxzZTsKKyAgICBzdHJ1Y3QgQSB7CisgICAgICAgIGV4cGxpY2l0IEEo
aW50IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICAgICB7IH0KKwor
ICAgICAgICB+QSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShkaWRDYWxs
RGVzdHJ1Y3Rvcik7CisgICAgICAgICAgICBkaWRDYWxsRGVzdHJ1Y3RvciA9IHRydWU7CisgICAg
ICAgIH0KKworICAgICAgICBpbnQgbV92YWx1ZSB7IDQyIH07CisgICAgfTsKKworICAgIHN0cnVj
dCBBVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IEEmIHZh
bHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUubV92YWx1ZSA9PSA0MjsK
KyAgICAgICAgfQorICAgICAgICBzdGF0aWMgQSBlbXB0eVZhbHVlKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIEEoNDIpOworICAgICAgICB9CisgICAgfTsKKworICAgIGRpZENhbGxE
ZXN0cnVjdG9yID0gZmFsc2U7CisgICAgeworICAgICAgICBDb21wYWN0T3B0aW9uYWw8QSwgQVRy
YWl0cz4gb3B0aW9uYWwgeyBzdGQ6OmluX3BsYWNlLCAyMCB9OworICAgICAgICBFWFBFQ1RfVFJV
RShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShk
aWRDYWxsRGVzdHJ1Y3Rvcik7CisKKyAgICBkaWRDYWxsRGVzdHJ1Y3RvciA9IGZhbHNlOworICAg
IHsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPEEsIEFUcmFpdHM+IG9wdGlvbmFsIHsgc3RkOjpp
bl9wbGFjZSwgNDIgfTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9w
dGlvbmFsKSk7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKGRpZENhbGxEZXN0cnVjdG9yKTsKK30K
KworVEVTVChXVEZfQ29tcGFjdE9wdGlvbmFsLCBGcm9tT3B0aW9uYWwpCit7CisgICAgeworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRp
Y19jYXN0PGJvb2w+KGZyb20pKTsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdy
YWxPcHRpb25hbFRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgPSBmcm9tOworICAgICAgICBFWFBF
Q1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICB9CisgICAgeworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbSB7IDQyIH07CisgICAgICAgIEVYUEVDVF9UUlVF
KHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwg
SW50ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgPSBmcm9tOworICAgICAg
ICAvLyBXZSBjb252ZXJ0IHRoaXMgdG8gbnVsbG9wdC4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0
YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IGZyb20geyA0MyB9OworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2Fz
dDxib29sPihmcm9tKSk7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0
aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsID0gZnJvbTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgRVhQRUNUX0VRKG9wdGlv
bmFsLnZhbHVlKCksIDQzKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGlu
dD4gZnJvbTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsK
KyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQs
IDQyPj4gb3B0aW9uYWwgeyBXVEZNb3ZlKGZyb20pIH07CisgICAgICAgIEVYUEVDVF9GQUxTRShz
dGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBmcm9tIHsgNDIgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nh
c3Q8Ym9vbD4oZnJvbSkpOworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9w
dGlvbmFsVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IFdURk1vdmUoZnJvbSkgfTsKKyAgICAg
ICAgLy8gV2UgY29udmVydCB0aGlzIHRvIG51bGxvcHQuCisgICAgICAgIEVYUEVDVF9GQUxTRShz
dGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBmcm9tIHsgNDMgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nh
c3Q8Ym9vbD4oZnJvbSkpOworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9w
dGlvbmFsVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IFdURk1vdmUoZnJvbSkgfTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKG9wdGlvbmFsLnZhbHVlKCksIDQzKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NvbXBh
Y3RPcHRpb25hbCwgVG9PcHRpb25hbCkKK3sKKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25h
bDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxpbnQ+IHRvID0gb3B0aW9uYWw7CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0
aWNfY2FzdDxib29sPih0bykpOworICAgIH0KKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25h
bDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDIgfTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAg
ICAgIC8vIFdlIGNvbnZlcnQgdGhpcyB0byBudWxsb3B0LgorICAgICAgICBzdGQ6Om9wdGlvbmFs
PGludD4gdG8gPSBvcHRpb25hbDsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJv
b2w+KHRvKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50
ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyA0MyB9OworICAgICAgICBF
WFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGludD4gdG8gPSBvcHRpb25hbDsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nh
c3Q8Ym9vbD4odG8pKTsKKyAgICAgICAgRVhQRUNUX0VRKHRvLnZhbHVlKCksIDQzKTsKKyAgICB9
CisgICAgeworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9wdGlvbmFsVHJh
aXRzPGludCwgNDI+PiBvcHRpb25hbDsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0
PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0byB7IFdURk1v
dmUob3B0aW9uYWwpIH07CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPih0
bykpOworICAgIH0KKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFs
T3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDIgfTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIC8vIFdlIGNvbnZl
cnQgdGhpcyB0byBudWxsb3B0LgorICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdG8geyBXVEZN
b3ZlKG9wdGlvbmFsKSB9OworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4o
dG8pKTsKKyAgICB9CisgICAgeworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3Jh
bE9wdGlvbmFsVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IDQzIH07CisgICAgICAgIEVYUEVD
VF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8aW50PiB0byB7IFdURk1vdmUob3B0aW9uYWwpIH07CisgICAgICAgIEVYUEVDVF9UUlVFKHN0
YXRpY19jYXN0PGJvb2w+KHRvKSk7CisgICAgICAgIEVYUEVDVF9FUSh0by52YWx1ZSgpLCA0Myk7
CisgICAgfQorfQorCitURVNUKFdURl9Db21wYWN0T3B0aW9uYWwsIE1vdmVPcHRpb25hbCkKK3sK
KyAgICBjbGFzcyBPbmx5TW92YWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBjb25zdGV4cHIg
ZXhwbGljaXQgT25seU1vdmFibGUoaW50IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHZh
bHVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBpbnQgdmFsdWUoKSB7IHJldHVy
biBtX3ZhbHVlOyB9CisKKyAgICAgICAgT25seU1vdmFibGUmIG9wZXJhdG9yPShPbmx5TW92YWJs
ZSYmIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBtX3ZhbHVlID0gb3RoZXIubV92YWx1
ZTsKKyAgICAgICAgICAgIG90aGVyLm1fdmFsdWUgPSA0MjsKKyAgICAgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICAgICAgfQorCisgICAgICAgIE9ubHlNb3ZhYmxlKE9ubHlNb3ZhYmxlJiYgb3Ro
ZXIpCisgICAgICAgICAgICA6IG1fdmFsdWUob3RoZXIubV92YWx1ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgb3RoZXIubV92YWx1ZSA9IDQyOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGlj
IE9ubHlNb3ZhYmxlIGVtcHR5VmFsdWUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
T25seU1vdmFibGUoNDIpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzRW1wdHlWYWx1ZShjb25zdCBPbmx5TW92YWJsZSYgdmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiB2YWx1ZS5tX3ZhbHVlID09IDQyOworICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBPbmx5TW92YWJsZShjb25zdCBPbmx5TW92YWJsZSYpID0gZGVsZXRl
OworICAgICAgICBPbmx5TW92YWJsZSYgb3BlcmF0b3I9KGNvbnN0IE9ubHlNb3ZhYmxlJikgPSBk
ZWxldGU7CisKKyAgICAgICAgaW50IG1fdmFsdWU7CisgICAgfTsKKyAgICB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8T25seU1vdmFibGU+IGZyb20geyBzdGQ6OmluX3BsYWNlLCAyMCB9OworICAg
ICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihmcm9tKSk7CisgICAgICAgIEVYUEVD
VF9FUShmcm9tLnZhbHVlKCkudmFsdWUoKSwgMjApOworICAgICAgICBDb21wYWN0T3B0aW9uYWw8
T25seU1vdmFibGUsIE9ubHlNb3ZhYmxlPiBjb21wYWN0ID0gV1RGTW92ZShmcm9tKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oY29tcGFjdCkpOworICAgICAgICBFWFBF
Q1RfRVEoY29tcGFjdC52YWx1ZSgpLnZhbHVlKCksIDIwKTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxPbmx5TW92YWJsZT4gdG8gPSBXVEZNb3ZlKGNvbXBhY3QpOworICAgICAgICBFWFBFQ1RfVFJV
RShzdGF0aWNfY2FzdDxib29sPih0bykpOworICAgICAgICBFWFBFQ1RfRVEodG8udmFsdWUoKS52
YWx1ZSgpLCAyMCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348761</attachid>
            <date>2018-09-03 01:33:28 -0700</date>
            <delta_ts>2018-09-09 07:35:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189231-20180903173327.patch</filename>
            <type>text/plain</type>
            <size>31216</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM3OTQyYmM4NTc4NmQzODNlNWZlYTJj
YWNmYTk0OTBhMjEwMmU0YmMuLjIyODViNDJjZmI3MWYyYTM3MDFjZWU2MmQzYTcyMzQ3NmI3YTlh
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTgtMDktMDMgIFl1c3VrZSBTdXp1a2kgIDx5dXN1
a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbV1RGXSBBZGQgQ29tcGFjdE9wdGlv
bmFsPFQsIFRyYWl0cz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4OTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIGNhbiByZXByZXNlbnQgYSB2YWx1ZSB3aXRoIG51bGxvcHQgYnkgdXNpbmcgc3Rk
OjpvcHRpb25hbDxUPi4gSG93ZXZlciwgc3RkOjpvcHRpb25hbDxUPiBoYXMgc3RvcmFnZSBlZmZp
Y2llbmN5CisgICAgICAgIHByb2JsZW0uIEl0IGFsd2F5cyBoYXMgYSBib29sIGluZGljYXRpbmcg
dGhhdCB0aGUgdmFsdWUgaXMgbnVsbG9wdCBvciBub3QuIElmIHdlIGhhdmUgYSBmb2xsb3dpbmcg
Y2xhc3MsCisKKyAgICAgICAgICAgIGNsYXNzIEEgeworICAgICAgICAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8V2FsbFRpbWU+IG1fdGltZUE7CisgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gbV90aW1lQjsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1l
PiBtX3RpbWVDOworICAgICAgICAgICAgfTsKKworICAgICAgICBUaGlzIGNsYXNzIGhhcyBzaWdu
aWZpY2FudCBhbW91bnQgb2YgcGFkZGluZyBiZXR3ZWVuIG1fdGltZUEgLyBtX3RpbWVCLCBtX3Rp
bWVCIC8gbV90aW1lQyBkdWUgdG8gdGhlIGFib3ZlIGJvb2wuCisKKyAgICAgICAgSWYgd2Uga25v
dyB0aGF0IFdhbGxUaW1lIGhhcyBhIHZhbHVlIHRoYXQgcmVwcmVzZW50cyBpbnZhbGlkLCB3ZSBj
YW4gdXNlIGl0IGluc3RlYWQgYW5kIHNhdmUgdGhlIHN0b3JhZ2UuCisgICAgICAgIFRoaXMgaXMg
dmVyeSBzaW1pbGFyIHByb2JsZW0gdG8gb3VyIEhhc2hUYWJsZSBpbXBsZW1lbnRhdGlvbi4gSW4g
b3VyIEhhc2hUYWJsZSBpbXBsZW1lbnRhdGlvbiwgd2UgbmVlZCBEZWxldGVkCisgICAgICAgIGFu
ZCBFbXB0eSB2YWx1ZSwgd2hpY2ggY2FuIHJlcHJlc2VudCBEZWxldGVkIGFuZCBFbXB0eSB2YWx1
ZXMgd2l0aG91dCBzYWNyaWZpY2luZyBzdG9yYWdlIGVmZmljaWVuY3kuCisKKyAgICAgICAgV2Ug
c2hvdWxkIGhhdmUgc2ltaWxhciBtZWNoYW5pc20gaGVyZS4gSW4gdGhpcyBwYXRjaCwgd2UgaGF2
ZSBXVEY6OkNvbXBhY3RPcHRpb25hbDxULCBUcmFpdHM+LiBUcmFpdHMgb2ZmZXJzCisgICAgICAg
IGBUcmFpdHM6OmlzRW1wdHlWYWx1ZSh2YWx1ZSlgIGFuZCBgVHJhaXRzOjplbXB0eVZhbHVlKClg
LiBUaGVuLCB3ZSB1c2UgdGhpcyBlbXB0eSB2YWx1ZSBpbnN0ZWFkIG9mIGhhdmluZyBib29sCisg
ICAgICAgIGZsYWcuIFRoaXMgd2F5LCB3ZSBjYW4gbWFrZSBgc2l6ZW9mKFdURjo6Q29tcGFjdE9w
dGlvbmFsPFQ+KSA9PSBzaXplb2YoVClgLgorCisgICAgICAgIFRoaXMgaWRlYSBpcyBpbnNwaXJl
ZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ha3J6ZW1pMS9tYXJrYWJsZS4gQnV0IHdlIHdvdWxk
IGxpa2UgdG8gaGF2ZSBXVEY6OkNvbXBhY3RPcHRpb25hbDxUPgorICAgICAgICBoZXJlIGluc3Rl
YWQgb2YgaW1wb3J0aW5nIGl0IHNpbmNlIHdlIHdvdWxkIGxpa2UgdG8gaGF2ZSAoMSkgaW50ZWdy
YXRlZCBpbnRlcmZhY2VzIHdpdGggc3RkOjpvcHRpb25hbDxUPiBhbmQgKDIpCisgICAgICAgIGFs
aWduZWQgZnVuY3Rpb24gbmFtZXMgdG8gSGFzaFRyYWl0cycgYGlzRW1wdHlWYWx1ZWAgYW5kIGBl
bXB0eVZhbHVlYC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvQ29tcGFjdE9wdGlv
bmFsLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpzdGQ6OnVuZGVybHlpbmdfdHlwZTxFbnVtVHlw
ZT46OnR5cGU+OjptYXgpOiBFbnVtT3B0aW9uYWxUcmFpdHMgY2FuIGJlIHVzZWQgYXMgYW4gT3B0
aW9uYWxUcmFpdHMgZm9yIGVudW0KKyAgICAgICAgdmFsdWVzLiBXZSBjYW4gc3BlY2lmeSBhIGNv
bnN0YW50IHZhbHVlIGFzIGFuIGVtcHR5IHZhbHVlLgorICAgICAgICAoV1RGOjpJbnRlZ3JhbE9w
dGlvbmFsVHJhaXRzOjppc0VtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpJbnRlZ3JhbE9wdGlv
bmFsVHJhaXRzOjplbXB0eVZhbHVlKTogSW50ZWdyYWxPcHRpb25hbFRyYWl0cyBjYW4gYmUgdXNl
ZCBhcyBhbiBPcHRpb25hbFRyYWl0cyBmb3IgaW50ZWdyYWwKKyAgICAgICAgdHlwZXMgaW5jbHVk
aW5nIGludCBldGMuCisgICAgICAgIChXVEY6OkNvbXBhY3RPcHRpb25hbDo6Q29tcGFjdE9wdGlv
bmFsKToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFsOjpvcGVyYXRvciBib29sIGNvbnN0
KToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFsOjpyZXNldCk6CisgICAgICAgIChXVEY6
OkNvbXBhY3RPcHRpb25hbDo6dmFsdWUgY29uc3QpOgorICAgICAgICAoV1RGOjpDb21wYWN0T3B0
aW9uYWw6OnZhbHVlKToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFsOjpvcGVyYXRvci0+
IGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFsOjpvcGVyYXRvci0+KToKKyAg
ICAgICAgKFdURjo6Q29tcGFjdE9wdGlvbmFsOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAo
V1RGOjpDb21wYWN0T3B0aW9uYWw6Om9wZXJhdG9yKik6CisgICAgICAgIChXVEY6OkNvbXBhY3RP
cHRpb25hbDo6b3BlcmF0b3Igc3RkOjpvcHRpb25hbDxUPik6CisgICAgICAgIChXVEY6OkNvbXBh
Y3RPcHRpb25hbDo6b3BlcmF0b3Igc3RkOjpvcHRpb25hbDxUPiBjb25zdCk6IFRoaXMgb3BlcmF0
b3IgYWxsb3dzIHVzIHRvIGNhc3QgQ29tcGFjdE9wdGlvbmFsPFQ+IHRvCisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8VD4uCisgICAgICAgICogd3RmL01vbm90b25pY1RpbWUuaDoKKyAgICAgICAgKFdU
Rjo6TW9ub3RvbmljVGltZTo6T3B0aW9uYWxUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAg
IChXVEY6Ok1vbm90b25pY1RpbWU6Ok9wdGlvbmFsVHJhaXRzOjplbXB0eVZhbHVlKTogT3B0aW9u
YWxUcmFpdHMgZm9yIE1vbm90b25pY1RpbWUuIE1vbm90b25pY1RpbWU6Om5hbigpIGlzIHVzZWQK
KyAgICAgICAgYXMgYW4gZW1wdHkgdmFsdWUuCisgICAgICAgICogd3RmL1NlY29uZHMuaDoKKyAg
ICAgICAgKFdURjo6U2Vjb25kczo6T3B0aW9uYWxUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAg
ICAgIChXVEY6OlNlY29uZHM6Ok9wdGlvbmFsVHJhaXRzOjplbXB0eVZhbHVlKTogT3B0aW9uYWxU
cmFpdHMgZm9yIFNlY29uZHMuIFNlY29uZHM6Om5hbigpIGlzIHVzZWQgYXMgYW4gZW1wdHkgdmFs
dWUuCisgICAgICAgICogd3RmL1dhbGxUaW1lLmg6CisgICAgICAgIChXVEY6OldhbGxUaW1lOjpu
YW4pOgorICAgICAgICAoV1RGOjpXYWxsVGltZTo6T3B0aW9uYWxUcmFpdHM6OmlzRW1wdHlWYWx1
ZSk6CisgICAgICAgIChXVEY6OldhbGxUaW1lOjpPcHRpb25hbFRyYWl0czo6ZW1wdHlWYWx1ZSk6
IE9wdGlvbmFsVHJhaXRzIGZvciBXYWxsVGltZS4gV2FsbFRpbWU6Om5hbigpIGlzIHVzZWQgYXMg
YW4gZW1wdHkgdmFsdWUuCisKIDIwMTgtMDgtMzEgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgT3B0aW9uU2V0IHw9IGFuZCAtPSBvcGVyYXRvcnMg
d2l0aCBhZGQoKSBhbmQgcmVtb3ZlKCkgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZmMzcxOTNk
ZmRmZDY1NjUxNjMyYmE2NjAyYjc1NDZjNGJiMjAxOC4uNTczOGVhNTk2ODgzYzhmMjgxMDNkYzY2
ZTNmYjJkZDYzNDM4OTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA5LTAz
ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAg
W1dURl0gQWRkIENvbXBhY3RPcHRpb25hbDxULCBUcmFpdHM+CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyMzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgQ29tcGFjdE9wdGlvbmFsPFNlY29uZHM+
IGFuZCBDb21wYWN0T3B0aW9uYWw8V2FsbFRpbWU+IGluIFJlc291cmNlUmVzcG9uc2VCYXNlLgor
ICAgICAgICBTaW5jZSB0aGVzZSBmaWVsZHMgYXJlIHBhcnNlZCByZXN1bHRzIGZyb20gaHR0cCBo
ZWFkZXIgZmllbGRzLCBTZWNvbmRzOjpuYW4oKSBhbmQgV2FsbFRpbWU6Om5hbigpCisgICAgICAg
IGNhbiBiZSB1c2VkIGFzIGFuIGVtcHR5IHZhbHVlIGZvciB0aGVzZSBmaWVsZHMuIFRodXMgd2Ug
Y2FuIHVzZSBDb21wYWN0T3B0aW9uYWwgYmVjYXVzZSBpdCB1c2VzCisgICAgICAgIHRoZXNlIG5h
biB2YWx1ZXMgYXMgYW4gZW1wdHkgdmFsdWVzICh0aGV5IGFyZSBjb25maWd1cmVkIGJ5IFNlY29u
ZHM6Ok9wdGlvbmFsVHJhaXRzIGFuZCBXYWxsVGltZTo6T3B0aW9uYWxUcmFpdHMpLgorICAgICAg
ICBUaGlzIHJlZHVjZXMgdGhlIHNpemUgb2YgUmVzb3VyY2VSZXNwb25zZUJhc2UgZnJvbSA0NDgg
dG8gNDE2LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oOgorCiAyMDE4LTA5LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbmFtZSBGaWx0ZXJFZmZlY3RSZW5kZXJlciB0byBDU1NGaWx0ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM1MTFlZDIyNzUxYjU1
MGE3ZGZkMzNmYjkxYmM0YzU5NjFhMTNkZDguLmY2YzhiY2YyODQ1ODhlMDA4OTY3MDNiOGUxZDRh
OTkzNjRjNWY3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNjMyLDYgKzYzMiw3IEBACiAJCUUzOEQ2RTI2MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdC
dWlsZGVySlNPTi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJp
bmdCdWlsZGVySlNPTi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTMyQkMy
MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWVNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0EzMkJDMzFGQzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlTWFsbG9jLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMwNENBNEU0MTM3NTQzN0VCRTkzMUQwMyAvKiBDb21wYWN0
T3B0aW9uYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGFjdE9wdGlv
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQ0Y3NjkwMjExNUQ2QkEwMDkx
REU0OCAvKiBDb21wYWN0UG9pbnRlclR1cGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbXBhY3RQb2ludGVyVHVwbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZyZWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtRnJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFNDMxQ0M0QTIxMTg3QURCMDAwQzhBMDcgLyogRGlzcGF0Y2hTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGF0Y2hTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg0MSw2ICs4NDIsNyBAQAogCQkJCTBGNjZCMjgwMURDOTdCQUIwMDRB
MUQzRiAvKiBDbG9ja1R5cGUuY3BwICovLAogCQkJCTBGNjZCMjgxMURDOTdCQUIwMDRBMUQzRiAv
KiBDbG9ja1R5cGUuaCAqLywKIAkJCQkwRkM0RURFNTE2OTYxNDk2MDBGNjUwNDEgLyogQ29tbWFQ
cmludGVyLmggKi8sCisJCQkJMzA0Q0E0RTQxMzc1NDM3RUJFOTMxRDAzIC8qIENvbXBhY3RPcHRp
b25hbC5oICovLAogCQkJCUUzQ0Y3NjkwMjExNUQ2QkEwMDkxREU0OCAvKiBDb21wYWN0UG9pbnRl
clR1cGxlLmggKi8sCiAJCQkJMEY4RjJCOEYxNzJFMDBGMDAwN0RCREE1IC8qIENvbXBpbGF0aW9u
VGhyZWFkLmNwcCAqLywKIAkJCQkwRjhGMkI5MDE3MkUwMEYwMDA3REJEQTUgLyogQ29tcGlsYXRp
b25UaHJlYWQuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNTBlNjJhMzExZDIwMTIxMzc1
NmFmZjUyMWFhNDk2MmMwNTkyYTg3OC4uNWNlMWZhYTRjMjFiYTlhN2JkYzRlOGI4MmJjMGRiMmI3
NGZmMjBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTI3LDYgKzI3LDcgQEAgc2V0KFdURl9Q
VUJMSUNfSEVBREVSUwogICAgIENoZWNrZWRCb29sZWFuLmgKICAgICBDbG9ja1R5cGUuaAogICAg
IENvbW1hUHJpbnRlci5oCisgICAgQ29tcGFjdE9wdGlvbmFsLmgKICAgICBDb21wYWN0UG9pbnRl
clR1cGxlLmgKICAgICBDb21waWxhdGlvblRocmVhZC5oCiAgICAgQ29tcGlsZXIuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ29tcGFjdE9wdGlvbmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi9D
b21wYWN0T3B0aW9uYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjA3OWQyMGJmZmI0MWY5MGJkNTJmNjVkYzE2
YzU1OWEwYjYzODg1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQ29tcGFjdE9w
dGlvbmFsLmgKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVz
dWtlIFN1enVraSA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+LgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gVGhlIGlkZWEgb2YgQ29tcGFjdE9wdGlv
bmFsPFQ+IGlzIGRlcml2ZWQgZnJvbSBtYXJrYWJsZTxUPiBhdAorLy8gaHR0cHM6Ly9naXRodWIu
Y29tL2FrcnplbWkxL21hcmthYmxlLgorLy8KKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFu
ZHJ6ZWogS3J6ZW1pZW5za2kuCisvLworLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmli
dXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKKy8vIExpY2Vuc2UsIFZlcnNp
b24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0
CisvLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Cisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gRXhh
bXBsZToKKy8vICAgICBlbnVtIGNsYXNzIFR5cGUgeyBWYWx1ZTEsIFZhbHVlMiwgVmFsdWUzIH07
CisvLyAgICAgQ29tcGFjdE9wdGlvbmFsPFR5cGUsIEVudW1PcHRpb25hbFRyYWl0czxUeXBlLCA0
Mj4+IG9wdGlvbmFsOwordGVtcGxhdGU8CisgICAgdHlwZW5hbWUgRW51bVR5cGUsCisgICAgdHlw
ZW5hbWUgc3RkOjp1bmRlcmx5aW5nX3R5cGU8RW51bVR5cGU+Ojp0eXBlIGNvbnN0YW50ID0gc3Rk
OjpudW1lcmljX2xpbWl0czx0eXBlbmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxFbnVtVHlwZT46
OnR5cGU+OjptYXgoKT4KK3N0cnVjdCBFbnVtT3B0aW9uYWxUcmFpdHMgeworICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19lbnVtPEVudW1UeXBlPjo6dmFsdWUsICIiKTsKKyAgICB1c2luZyBVbmRl
cmx5aW5nVHlwZSA9IHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEVudW1UeXBlPjo6dHlw
ZTsKKworICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoRW51bVR5cGUgdmFs
dWUpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VW5kZXJseWluZ1R5cGU+KHZh
bHVlKSA9PSBjb25zdGFudDsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgc3RhdGljIEVudW1UeXBl
IGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVudW1UeXBl
Pihjb25zdGFudCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBl
LCBJbnRlZ3JhbFR5cGUgY29uc3RhbnQgPSAwPgorc3RydWN0IEludGVncmFsT3B0aW9uYWxUcmFp
dHMgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxJbnRlZ3JhbFR5cGU+Ojp2
YWx1ZSwgIiIpOworICAgIGNvbnN0ZXhwciBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoSW50ZWdy
YWxUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlID09IGNvbnN0YW50Owor
ICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgSW50ZWdyYWxUeXBlIGVtcHR5VmFsdWUoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0YW50OworICAgIH0KK307CisKKy8vIFRoZSBnb2Fs
IG9mIENvbXBhY3RPcHRpb25hbCBpcyBvZmZlcmluZyBzdGQ6Om9wdGlvbmFsIHdpdGhvdXQgc2Fj
cmlmaWNpbmcgc3RvcmFnZSBlZmZpY2llbmN5LgorLy8gQ29tcGFjdE9wdGlvbmFsIHRha2VzIFRy
YWl0cywgd2hpY2ggc2hvdWxkIGhhdmUgaXNFbXB0eVZhbHVlIGFuZCBlbXB0eVZhbHVlIGZ1bmN0
aW9ucy4gQnkgdXNpbmcKKy8vIG9uZSB2YWx1ZSBvZiBUIGFzIGFuIGVtcHR5IHZhbHVlLCB3ZSBj
YW4gcmVtb3ZlIGJvb2wgZmxhZyBpbiBzdGQ6Om9wdGlvbmFsLiBUaGlzIHN0cmF0ZWd5IGlzCisv
LyBzaW1pbGFyIHRvIFdURjo6SGFzaFRhYmxlLCB3aGljaCB1c2VzIHR3byB2YWx1ZXMgb2YgVCBh
cyBhbiBlbXB0eSB2YWx1ZSBhbmQgYSBkZWxldGVkIHZhbHVlLgorLy8gVGhpcyBjbGFzcyBpcyBp
bnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgbWVtYmVyIG9mIGEgY2xhc3MgdG8gY29tcGFjdCB0aGUg
c2l6ZSBvZiB0aGUgY2xhc3MuCisvLyBPdGhlcndpc2UsIHlvdSBzaG91bGQgdXNlIHN0ZDo6b3B0
aW9uYWwuCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+CitjbGFzcyBDb21w
YWN0T3B0aW9uYWwgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBDb21wYWN0T3B0aW9uYWwoKQor
ICAgICAgICA6IG1fdmFsdWUoVHJhaXRzOjplbXB0eVZhbHVlKCkpCisgICAgeyB9CisKKyAgICBj
b25zdGV4cHIgQ29tcGFjdE9wdGlvbmFsKHN0ZDo6bnVsbG9wdF90KQorICAgICAgICA6IENvbXBh
Y3RPcHRpb25hbCgpCisgICAgeyB9CisKKyAgICBjb25zdGV4cHIgQ29tcGFjdE9wdGlvbmFsKFQm
JiB2YWx1ZSkKKyAgICAgICAgOiBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQorICAgIHsgfQorCisg
ICAgY29uc3RleHByIENvbXBhY3RPcHRpb25hbChjb25zdCBUJiB2YWx1ZSkKKyAgICAgICAgOiBt
X3ZhbHVlKHZhbHVlKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4K
KyAgICBjb25zdGV4cHIgZXhwbGljaXQgQ29tcGFjdE9wdGlvbmFsKHN0ZDo6aW5fcGxhY2VfdCwg
QXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV92YWx1ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pCisgICAgeyB9CisKKyAgICBjb25zdGV4cHIgQ29tcGFjdE9wdGlvbmFsKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8VD4mIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUoYm9vbCh2YWx1ZSkgPyAq
dmFsdWUgOiBUcmFpdHM6OmVtcHR5VmFsdWUoKSkKKyAgICB7IH0KKworICAgIGNvbnN0ZXhwciBD
b21wYWN0T3B0aW9uYWwoc3RkOjpvcHRpb25hbDxUPiYmIHZhbHVlKQorICAgICAgICA6IG1fdmFs
dWUoYm9vbCh2YWx1ZSkgPyBXVEZNb3ZlKCp2YWx1ZSkgOiBUcmFpdHM6OmVtcHR5VmFsdWUoKSkK
KyAgICB7IH0KKworICAgIGNvbnN0ZXhwciBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gIVRyYWl0czo6aXNFbXB0eVZhbHVlKG1fdmFsdWUpOyB9CisKKyAgICB2b2lkIHJl
c2V0KCkgeyBtX3ZhbHVlID0gVHJhaXRzOjplbXB0eVZhbHVlKCk7IH0KKworICAgIGNvbnN0ZXhw
ciBjb25zdCBUJiB2YWx1ZSgpIGNvbnN0JiB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgY29uc3Rl
eHByIFQmIHZhbHVlKCkgJiB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgY29uc3RleHByIFQmJiB2
YWx1ZSgpICYmIHsgcmV0dXJuIFdURk1vdmUobV92YWx1ZSk7IH0KKworICAgIGNvbnN0ZXhwciBj
b25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gc3RkOjphZGRyZXNzb2YobV92YWx1
ZSk7IH0KKyAgICBjb25zdGV4cHIgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIHN0ZDo6YWRkcmVz
c29mKG1fdmFsdWUpOyB9CisKKyAgICBjb25zdGV4cHIgY29uc3QgVCYgb3BlcmF0b3IqKCkgY29u
c3QmIHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBjb25zdGV4cHIgVCYgb3BlcmF0b3IqKCkgJiB7
IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBvcGVyYXRvciBzdGQ6Om9wdGlvbmFsPFQ+KCkgJiYK
KyAgICB7CisgICAgICAgIGlmIChib29sKCp0aGlzKSkKKyAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKG1fdmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAg
IG9wZXJhdG9yIHN0ZDo6b3B0aW9uYWw8VD4oKSBjb25zdCYKKyAgICB7CisgICAgICAgIGlmIChi
b29sKCp0aGlzKSkKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBUIG1fdmFsdWU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpDb21wYWN0T3B0aW9uYWw7Cit1c2luZyBX
VEY6OkludGVncmFsT3B0aW9uYWxUcmFpdHM7Cit1c2luZyBXVEY6OkVudW1PcHRpb25hbFRyYWl0
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01vbm90b25pY1RpbWUuaCBiL1NvdXJjZS9X
VEYvd3RmL01vbm90b25pY1RpbWUuaAppbmRleCAwYmJlZTgyM2Q4MjkxZjkzYmVjNzU3NjUyMTIx
YjlmMDRjZDZjMmUzLi4zOGNjYjAyNDJlMGUxYzVlOGE2MDcwMmQxM2M2MmU2OGI3NGY5OTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Nb25vdG9uaWNUaW1lLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvTW9ub3RvbmljVGltZS5oCkBAIC0xNjUsNiArMTY1LDggQEAgY2xhc3MgTW9ub3Rvbmlj
VGltZSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHN0cnVjdCBPcHRpb25h
bFRyYWl0czsKKwogcHJpdmF0ZToKICAgICBjb25zdGV4cHIgTW9ub3RvbmljVGltZShkb3VibGUg
cmF3VmFsdWUpCiAgICAgICAgIDogbV92YWx1ZShyYXdWYWx1ZSkKQEAgLTE3NCw2ICsxNzYsMTgg
QEAgY2xhc3MgTW9ub3RvbmljVGltZSB7CiAgICAgZG91YmxlIG1fdmFsdWUgeyAwIH07CiB9Owog
CitzdHJ1Y3QgTW9ub3RvbmljVGltZTo6T3B0aW9uYWxUcmFpdHMgeworICAgIHN0YXRpYyBib29s
IGlzRW1wdHlWYWx1ZShNb25vdG9uaWNUaW1lIHRpbWUpCisgICAgeworICAgICAgICByZXR1cm4g
c3RkOjppc25hbih0aW1lLm1fdmFsdWUpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIg
TW9ub3RvbmljVGltZSBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBNb25vdG9u
aWNUaW1lOjpuYW4oKTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogbmFtZXNw
YWNlIHN0ZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9TZWNvbmRzLmgKaW5kZXggNjEwODZmM2U0NjMzN2VkNzM5NDg4ZmNiNWY0ZDUzZThi
NjRjMjgxMC4uODY3N2E4MGIwYThiZjYyYTNlOGI2NTVlOTRmMDUxZTIwNGMyMzA3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NlY29u
ZHMuaApAQCAtMjQ3LDEyICsyNDcsMjYgQEAgY2xhc3MgU2Vjb25kcyB7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAorICAgIHN0cnVjdCBPcHRpb25hbFRyYWl0czsKKwogcHJpdmF0ZToK
ICAgICBkb3VibGUgbV92YWx1ZSB7IDAgfTsKIH07CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHNsZWVwKFNlY29uZHMpOwogCitzdHJ1Y3QgU2Vjb25kczo6T3B0aW9uYWxUcmFpdHMgeworICAg
IHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShTZWNvbmRzIHNlY29uZHMpCisgICAgeworICAgICAg
ICByZXR1cm4gc3RkOjppc25hbihzZWNvbmRzLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRp
YyBjb25zdGV4cHIgU2Vjb25kcyBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBT
ZWNvbmRzOjpuYW4oKTsKKyAgICB9Cit9OworCiBpbmxpbmUgbmFtZXNwYWNlIHNlY29uZHNfbGl0
ZXJhbHMgewogCiBjb25zdGV4cHIgU2Vjb25kcyBvcGVyYXRvciIiIF9taW4obG9uZyBkb3VibGUg
bWludXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9XYWxsVGltZS5oCmluZGV4IGJmNjYyMDEwOTBmMzMxZmZmZWI2YTc2NTJmNDEzZjM1
YTllMjlkZjIuLjU1YjdmMDU2MWI5YWYzOTNmMDY5MGNkOTNiMWNmODFiYjBkODAyZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmgKKysrIGIvU291cmNlL1dURi93dGYvV2Fs
bFRpbWUuaApAQCAtNTYsNiArNTYsNyBAQCBjbGFzcyBXYWxsVGltZSB7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBXYWxsVGltZSBub3coKTsKICAgICAKICAgICBzdGF0aWMgY29uc3Rl
eHByIFdhbGxUaW1lIGluZmluaXR5KCkgeyByZXR1cm4gZnJvbVJhd1NlY29uZHMoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIg
V2FsbFRpbWUgbmFuKCkgeyByZXR1cm4gZnJvbVJhd1NlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjpxdWlldF9OYU4oKSk7IH0KICAgICAKICAgICBjb25zdGV4cHIgU2Vjb25kcyBz
ZWNvbmRzU2luY2VFcG9jaCgpIGNvbnN0IHsgcmV0dXJuIFNlY29uZHMobV92YWx1ZSk7IH0KICAg
ICAKQEAgLTEzMiw2ICsxMzMsOSBAQCBjbGFzcyBXYWxsVGltZSB7CiAgICAgewogICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgfQorCisgICAgc3RydWN0IE9wdGlvbmFsVHJhaXRzOworCiBwcml2
YXRlOgogICAgIGNvbnN0ZXhwciBXYWxsVGltZShkb3VibGUgcmF3VmFsdWUpCiAgICAgICAgIDog
bV92YWx1ZShyYXdWYWx1ZSkKQEAgLTE0MSw2ICsxNDUsMTggQEAgY2xhc3MgV2FsbFRpbWUgewog
ICAgIGRvdWJsZSBtX3ZhbHVlIHsgMCB9OwogfTsKIAorc3RydWN0IFdhbGxUaW1lOjpPcHRpb25h
bFRyYWl0cyB7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKFdhbGxUaW1lIHRpbWUpCisg
ICAgeworICAgICAgICByZXR1cm4gc3RkOjppc25hbih0aW1lLm1fdmFsdWUpOworICAgIH0KKwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgV2FsbFRpbWUgZW1wdHlWYWx1ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gV2FsbFRpbWU6Om5hbigpOworICAgIH0KK307CisKIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHNsZWVwKFdhbGxUaW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgK
aW5kZXggMmE0ZTQ5ZWZhOTU4MDNkMmI4NDkxMDJmYTVlYzQ2NWI2NGRmOGU2My4uMjFiZGNjODA4
MzljNTBiZGU2N2NhZDM5ZDZhN2JiNjU3OTI2ZjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkTWV0cmljcy5oIgogI2luY2x1ZGUgIlBhcnNl
ZENvbnRlbnRSYW5nZS5oIgogI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgPHd0Zi9Db21wYWN0
T3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMjE0LDEwICsyMTUsMTAgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2Ugewog
ICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJ
bmZvOwogCiBwcml2YXRlOgotICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtX2Fn
ZTsKLSAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fZGF0ZTsKLSAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fZXhwaXJlczsKLSAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8V2FsbFRpbWU+IG1fbGFzdE1vZGlmaWVkOworICAgIG11dGFibGUgQ29tcGFjdE9w
dGlvbmFsPFNlY29uZHMsIFNlY29uZHM6Ok9wdGlvbmFsVHJhaXRzPiBtX2FnZTsKKyAgICBtdXRh
YmxlIENvbXBhY3RPcHRpb25hbDxXYWxsVGltZSwgV2FsbFRpbWU6Ok9wdGlvbmFsVHJhaXRzPiBt
X2RhdGU7CisgICAgbXV0YWJsZSBDb21wYWN0T3B0aW9uYWw8V2FsbFRpbWUsIFdhbGxUaW1lOjpP
cHRpb25hbFRyYWl0cz4gbV9leHBpcmVzOworICAgIG11dGFibGUgQ29tcGFjdE9wdGlvbmFsPFdh
bGxUaW1lLCBXYWxsVGltZTo6T3B0aW9uYWxUcmFpdHM+IG1fbGFzdE1vZGlmaWVkOwogICAgIG11
dGFibGUgUGFyc2VkQ29udGVudFJhbmdlIG1fY29udGVudFJhbmdlOwogICAgIG11dGFibGUgQ2Fj
aGVDb250cm9sRGlyZWN0aXZlcyBtX2NhY2hlQ29udHJvbERpcmVjdGl2ZXM7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YTQzM2FlZWY1MDZi
NmY0NjU1NjAxM2JmYmI0MzYxYmYyMTlhYzFhLi5mZjQ0ZjY5ZmVmMWNhYmJjMTgzMzIzM2Y1Y2Yw
OGY5NThhMDAyNzUzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDktMDMgIFl1c3VrZSBTdXp1a2kgIDx5dXN1
a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbV1RGXSBBZGQgQ29tcGFjdE9wdGlv
bmFsPFQsIFRyYWl0cz4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4OTIzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB0ZXN0cyBmb3IgQ29tcGFjdE9wdGlvbmFsLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Db21wYWN0T3B0aW9uYWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorCiAyMDE4LTA5LTAxICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnph
cm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSAyLjIxLjkxIGZhaWxzIHRvIGJ1aWxkIHdp
dGggRU5BQkxFX01JTklCUk9XU0VSCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCA5
NjhhZjc2NDk5MjNhNWUzZjQ5NjFkYTQ1ZWQ2ZGNjMTZjODE4YzdkLi5mYjAxODhmNmQ3NjJkMmUz
M2E5NzZhMTJkN2UwMDE0OGZkMTZhZWIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQK
QEAgLTkyLDYgKzkyLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dURi9CbG9vbUZpbHRlci5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvQ1N0cmluZy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
VEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzL1dURi9Db21wYWN0T3B0aW9uYWwuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcAogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
Y2RiNjI0YWI4ZGQ1MzgwZmE4NzUzNTZjMzI3ZWE1MTJkYjMzOGFmNS4uOWM1ZTI1ZmI5NDk4YzU5
YzJiZTc1Y2QyOThhODc4ZDkyYmMxMGQ4NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQx
LDYgKzQxLDcgQEAKIAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5MEY1IC8qIFBsYXRmb3JtVXRpbGl0
aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSAq
LzsgfTsKIAkJMEYyQzIwQjgxRENENTQ1MDAwNTQyRDlFIC8qIFRpbWUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzIwQjcxRENENTQ0ODAwNTQy
RDlFIC8qIFRpbWUuY3BwICovOyB9OwogCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0QjUzMjMgLyogQ29u
Y3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzMENCNUIxRkNFMTc5MjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNo
U2V0LmNwcCAqLzsgfTsKKwkJNDkwOUVFM0EyRDA5NDgwQzg4OTgyRDU2IC8qIENvbXBhY3RPcHRp
b25hbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Qzc5RjE2OEJFNDU0RTU3OUU0MTdCMDUgLyogQ29tcGFjdE9wdGlvbmFsLmNwcCAqLzsgfTsKIAkJ
MEYzQjk0QTcxQTc3MjY3NDAwREUzMjcyIC8qIFdLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I5NEE1
MUE3NzI2NkMwMERFMzI3MiAvKiBXS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gKi87IH07
CiAJCTBGNEZGQTlFMUVEM0FBODUwMEY3MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNEZG
QTlEMUVEM0FBODUwMEY3MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbSAqLzsg
fTsKIAkJMEY1NjUxRjcxRkNFNEREQzAwMzEwRkJDIC8qIE5vSGlzdG9yeUl0ZW1TY3JvbGxUb0Zy
YWdtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1NjUxRjYxRkNFNEREQjAwMzEwRkJDIC8qIE5vSGlzdG9yeUl0ZW1TY3JvbGxUb0ZyYWdtZW50
Lm1tICovOyB9OwpAQCAtMTIzMyw2ICsxMjM0LDcgQEAKIAkJMEYxN0JCRDQxNUFGNkM0RDAwN0FC
NzUzIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlU3RhdGlzdGljc1dpdGhOb1dlYlByb2Nl
c3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDMjBCNzFEQ0Q1NDQ4MDA1
NDJEOUUgLyogVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
aW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzMENCNUIxRkNFMTc5MjAw
NEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3QjA1IC8qIENvbXBhY3RPcHRpb25h
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wYWN0T3B0aW9u
YWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCOTRBNTFBNzcyNjZDMDBE
RTMyNzIgLyogV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjRGRkE5RDFFRDNBQTg1MDBGNzExMUYgLyog
U25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTbmFwc2hvdFZpYVJlbmRlckluQ29udGV4dC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY0RkZBQTAxRUQzRDBERTAwRjcxMTFGIC8qIEltYWdlSU8uZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBJbWFnZUlPLmZyYW1ld29yazsgcGF0aCA9IFN5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtS
T09UOyB9OwpAQCAtMjk4Myw2ICsyOTg1LDcgQEAKIAkJCQkyNkYxQjQ0MjE1Q0E0MzRGMDBEMUU0
QkYgLyogQXRvbWljU3RyaW5nLmNwcCAqLywKIAkJCQlFNDAwMTkzMDFBQ0U5QjVDMDAxQjBBMkEg
LyogQmxvb21GaWx0ZXIuY3BwICovLAogCQkJCUE3QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBD
aGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAorCQkJCUVDNzlGMTY4QkU0NTRFNTc5
RTQxN0IwNSAvKiBDb21wYWN0T3B0aW9uYWwuY3BwICovLAogCQkJCTBGMzBDQjVCMUZDRTE3OTIw
MDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8sCiAJCQkJMEZFQUUzNjcxQjdE
MTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8sCiAJCQkJNTE3MTRFQjkxRDA4NzQxNjAw
NDcyM0M0IC8qIENyb3NzVGhyZWFkVGFzay5jcHAgKi8sCkBAIC0zNTcwLDYgKzM1NzMsNyBAQAog
CQkJCTFBREFEMTUwMUQ3N0E5RjYwMDIxMjU4NiAvKiBCbG9ja1B0ci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERTlDMUQwQTU5MEMwMEZFQkNGMyAvKiBCbG9vbUZpbHRlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzREVBMDFEMEE1OTBDMDBGRUJDRjMgLyogQ2hlY2tlZEFyaXRobWV0
aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5MDlFRTNBMkQwOTQ4MEM4ODk4
MkQ1NiAvKiBDb21wYWN0T3B0aW9uYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMENCNUMx
RkNFMTc5NjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERUMzMUQwQTU5MEMwMEZFQkNGMyAvKiBDb25kaXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0RFQTYxRDBBNTkwQzAwRkVCQ0YzIC8qIENvdW50ZXJzLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29t
cGFjdE9wdGlvbmFsLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbXBhY3RP
cHRpb25hbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzIxZjRmZmY4YTA3NjE4YmY5ODVkYzk3MWIzMjkwYmIy
NDYxNmViNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0NvbXBhY3RPcHRpb25hbC5jcHAKQEAgLTAsMCArMSwyNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4IFl1c3VrZSBTdXp1a2kgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8d3RmL0NvbXBhY3RPcHRpb25h
bC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RGX0NvbXBhY3RPcHRp
b25hbCwgRGlzZW5nYWdlZCkKK3sKKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQs
IEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsOworCisgICAgICAgIEVY
UEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQs
IDQyPj4gb3B0aW9uYWwgeyBzdGQ6Om51bGxvcHQgfTsKKworICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NvbXBh
Y3RPcHRpb25hbCwgRW5nYWdlZCkKK3sKKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxp
bnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgMTAgfTsKKwor
ICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgICAg
ICBFWFBFQ1RfRVEoMTAsIG9wdGlvbmFsLnZhbHVlKCkpOworCisgICAgICAgIG9wdGlvbmFsID0g
NDE7CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSg0MSwgb3B0aW9uYWwudmFsdWUoKSk7CisKKyAgICAgICAgb3B0aW9u
YWwgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29s
PihvcHRpb25hbCkpOworCisgICAgICAgIG9wdGlvbmFsID0gNDI7CisgICAgICAgIEVYUEVDVF9G
QUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgIH0KKyAgICB7CisgICAgICAg
IENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9w
dGlvbmFsIHsgNDIgfTsKKworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4o
b3B0aW9uYWwpKTsKKworICAgICAgICBvcHRpb25hbCA9IDQxOworCisgICAgICAgIEVYUEVDVF9U
UlVFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIEVYUEVDVF9FUSg0MSwg
b3B0aW9uYWwudmFsdWUoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Db21wYWN0T3B0aW9uYWws
IERlc3RydWN0b3IpCit7CisgICAgc3RhdGljIGJvb2wgZGlkQ2FsbERlc3RydWN0b3IgPSBmYWxz
ZTsKKyAgICBzdHJ1Y3QgQSB7CisgICAgICAgIGV4cGxpY2l0IEEoaW50IHZhbHVlKQorICAgICAg
ICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICAgICB7IH0KKworICAgICAgICB+QSgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShkaWRDYWxsRGVzdHJ1Y3Rvcik7CisgICAg
ICAgICAgICBkaWRDYWxsRGVzdHJ1Y3RvciA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBp
bnQgbV92YWx1ZSB7IDQyIH07CisgICAgfTsKKworICAgIHN0cnVjdCBBVHJhaXRzIHsKKyAgICAg
ICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IEEmIHZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gdmFsdWUubV92YWx1ZSA9PSA0MjsKKyAgICAgICAgfQorICAgICAg
ICBzdGF0aWMgQSBlbXB0eVZhbHVlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEEo
NDIpOworICAgICAgICB9CisgICAgfTsKKworICAgIGRpZENhbGxEZXN0cnVjdG9yID0gZmFsc2U7
CisgICAgeworICAgICAgICBDb21wYWN0T3B0aW9uYWw8QSwgQVRyYWl0cz4gb3B0aW9uYWwgeyBz
dGQ6OmluX3BsYWNlLCAyMCB9OworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29s
PihvcHRpb25hbCkpOworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShkaWRDYWxsRGVzdHJ1Y3Rvcik7
CisKKyAgICBkaWRDYWxsRGVzdHJ1Y3RvciA9IGZhbHNlOworICAgIHsKKyAgICAgICAgQ29tcGFj
dE9wdGlvbmFsPEEsIEFUcmFpdHM+IG9wdGlvbmFsIHsgc3RkOjppbl9wbGFjZSwgNDIgfTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgfQor
ICAgIEVYUEVDVF9UUlVFKGRpZENhbGxEZXN0cnVjdG9yKTsKK30KKworVEVTVChXVEZfQ29tcGFj
dE9wdGlvbmFsLCBGcm9tT3B0aW9uYWwpCit7CisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGludD4gZnJvbTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20p
KTsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxPcHRpb25hbFRyYWl0czxp
bnQsIDQyPj4gb3B0aW9uYWwgPSBmcm9tOworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nh
c3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGludD4gZnJvbSB7IDQyIH07CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+
KGZyb20pKTsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxPcHRpb25hbFRy
YWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgPSBmcm9tOworICAgICAgICAvLyBXZSBjb252ZXJ0IHRo
aXMgdG8gbnVsbG9wdC4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9w
dGlvbmFsKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZyb20g
eyA0MyB9OworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihmcm9tKSk7Cisg
ICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50LCA0
Mj4+IG9wdGlvbmFsID0gZnJvbTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9v
bD4ob3B0aW9uYWwpKTsKKyAgICAgICAgRVhQRUNUX0VRKG9wdGlvbmFsLnZhbHVlKCksIDQzKTsK
KyAgICB9CisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKKyAgICAgICAgQ29tcGFjdE9w
dGlvbmFsPGludCwgSW50ZWdyYWxPcHRpb25hbFRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyBX
VEZNb3ZlKGZyb20pIH07CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihv
cHRpb25hbCkpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmcm9t
IHsgNDIgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oZnJvbSkpOwor
ICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzPGludCwg
NDI+PiBvcHRpb25hbCB7IFdURk1vdmUoZnJvbSkgfTsKKyAgICAgICAgLy8gV2UgY29udmVydCB0
aGlzIHRvIG51bGxvcHQuCisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihv
cHRpb25hbCkpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmcm9t
IHsgNDMgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oZnJvbSkpOwor
ICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzPGludCwg
NDI+PiBvcHRpb25hbCB7IFdURk1vdmUoZnJvbSkgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3Rh
dGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgRVhQRUNUX0VRKG9wdGlvbmFsLnZh
bHVlKCksIDQzKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NvbXBhY3RPcHRpb25hbCwgVG9PcHRp
b25hbCkKK3sKKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0
aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsOworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Rh
dGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHRv
ID0gb3B0aW9uYWw7CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPih0bykp
OworICAgIH0KKyAgICB7CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0
aW9uYWxUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDIgfTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIC8vIFdlIGNvbnZlcnQg
dGhpcyB0byBudWxsb3B0LgorICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdG8gPSBvcHRpb25h
bDsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KHRvKSk7CisgICAgfQor
ICAgIHsKKyAgICAgICAgQ29tcGFjdE9wdGlvbmFsPGludCwgSW50ZWdyYWxPcHRpb25hbFRyYWl0
czxpbnQsIDQyPj4gb3B0aW9uYWwgeyA0MyB9OworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNf
Y2FzdDxib29sPihvcHRpb25hbCkpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdG8gPSBv
cHRpb25hbDsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKKyAg
ICAgICAgRVhQRUNUX0VRKHRvLnZhbHVlKCksIDQzKTsKKyAgICB9CisgICAgeworICAgICAgICBD
b21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzPGludCwgNDI+PiBvcHRp
b25hbDsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0byB7IFdURk1vdmUob3B0aW9uYWwpIH07Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPih0bykpOworICAgIH0KKyAgICB7
CisgICAgICAgIENvbXBhY3RPcHRpb25hbDxpbnQsIEludGVncmFsT3B0aW9uYWxUcmFpdHM8aW50
LCA0Mj4+IG9wdGlvbmFsIHsgNDIgfTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0
PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIC8vIFdlIGNvbnZlcnQgdGhpcyB0byBudWxsb3B0
LgorICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdG8geyBXVEZNb3ZlKG9wdGlvbmFsKSB9Owor
ICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKKyAgICB9CisgICAg
eworICAgICAgICBDb21wYWN0T3B0aW9uYWw8aW50LCBJbnRlZ3JhbE9wdGlvbmFsVHJhaXRzPGlu
dCwgNDI+PiBvcHRpb25hbCB7IDQzIH07CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0
PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0byB7IFdURk1v
dmUob3B0aW9uYWwpIH07CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KHRv
KSk7CisgICAgICAgIEVYUEVDVF9FUSh0by52YWx1ZSgpLCA0Myk7CisgICAgfQorfQorCitURVNU
KFdURl9Db21wYWN0T3B0aW9uYWwsIE1vdmVPcHRpb25hbCkKK3sKKyAgICBjbGFzcyBPbmx5TW92
YWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgT25seU1vdmFi
bGUoaW50IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICBpbnQgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAg
ICAgICAgT25seU1vdmFibGUmIG9wZXJhdG9yPShPbmx5TW92YWJsZSYmIG90aGVyKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX3ZhbHVlID0gb3RoZXIubV92YWx1ZTsKKyAgICAgICAgICAgIG90
aGVyLm1fdmFsdWUgPSA0MjsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQor
CisgICAgICAgIE9ubHlNb3ZhYmxlKE9ubHlNb3ZhYmxlJiYgb3RoZXIpCisgICAgICAgICAgICA6
IG1fdmFsdWUob3RoZXIubV92YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgb3RoZXIubV92
YWx1ZSA9IDQyOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIE9ubHlNb3ZhYmxlIGVtcHR5
VmFsdWUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gT25seU1vdmFibGUoNDIpOwor
ICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRW1wdHlWYWx1ZShj
b25zdCBPbmx5TW92YWJsZSYgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2
YWx1ZS5tX3ZhbHVlID09IDQyOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBP
bmx5TW92YWJsZShjb25zdCBPbmx5TW92YWJsZSYpID0gZGVsZXRlOworICAgICAgICBPbmx5TW92
YWJsZSYgb3BlcmF0b3I9KGNvbnN0IE9ubHlNb3ZhYmxlJikgPSBkZWxldGU7CisKKyAgICAgICAg
aW50IG1fdmFsdWU7CisgICAgfTsKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8T25seU1v
dmFibGU+IGZyb20geyBzdGQ6OmluX3BsYWNlLCAyMCB9OworICAgICAgICBFWFBFQ1RfVFJVRShz
dGF0aWNfY2FzdDxib29sPihmcm9tKSk7CisgICAgICAgIEVYUEVDVF9FUShmcm9tLnZhbHVlKCku
dmFsdWUoKSwgMjApOworICAgICAgICBDb21wYWN0T3B0aW9uYWw8T25seU1vdmFibGUsIE9ubHlN
b3ZhYmxlPiBjb21wYWN0ID0gV1RGTW92ZShmcm9tKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3Rh
dGljX2Nhc3Q8Ym9vbD4oY29tcGFjdCkpOworICAgICAgICBFWFBFQ1RfRVEoY29tcGFjdC52YWx1
ZSgpLnZhbHVlKCksIDIwKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxPbmx5TW92YWJsZT4gdG8g
PSBXVEZNb3ZlKGNvbXBhY3QpOworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29s
Pih0bykpOworICAgICAgICBFWFBFQ1RfRVEodG8udmFsdWUoKS52YWx1ZSgpLCAyMCk7CisgICAg
fQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349286</attachid>
            <date>2018-09-09 07:35:33 -0700</date>
            <delta_ts>2018-09-10 11:19:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189231-20180909233532.patch</filename>
            <type>text/plain</type>
            <size>30430</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1ODM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFiODBjMjRmMWQzMTkzOWIzZDU4MGU3
MDI5ZWQzY2E3MzFjYWUyMjQuLjY4NjM2MGE5YzA3MjAyMTFlZjVjNjcyODcyNWNlODQ2ZmRhODUx
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTgtMDktMDkgIFl1c3VrZSBTdXp1a2kgIDx5dXN1
a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbV1RGXSBBZGQgTWFya2FibGU8VCwg
VHJhaXRzPgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg5MjMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2UgY2FuIHJlcHJlc2VudCBhIHZhbHVlIHdpdGggbnVsbG9wdCBieSB1c2luZyBzdGQ6Om9wdGlv
bmFsPFQ+LiBIb3dldmVyLCBzdGQ6Om9wdGlvbmFsPFQ+IGhhcyBzdG9yYWdlIGVmZmljaWVuY3kK
KyAgICAgICAgcHJvYmxlbS4gSXQgYWx3YXlzIGhhcyBhIGJvb2wgaW5kaWNhdGluZyB0aGF0IHRo
ZSB2YWx1ZSBpcyBudWxsb3B0IG9yIG5vdC4gSWYgd2UgaGF2ZSBhIGZvbGxvd2luZyBjbGFzcywK
KworICAgICAgICAgICAgY2xhc3MgQSB7CisgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gbV90aW1lQTsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1l
PiBtX3RpbWVCOworICAgICAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fdGlt
ZUM7CisgICAgICAgICAgICB9OworCisgICAgICAgIFRoaXMgY2xhc3MgaGFzIHNpZ25pZmljYW50
IGFtb3VudCBvZiBwYWRkaW5nIGJldHdlZW4gbV90aW1lQSAvIG1fdGltZUIsIG1fdGltZUIgLyBt
X3RpbWVDIGR1ZSB0byB0aGUgYWJvdmUgYm9vbC4KKworICAgICAgICBJZiB3ZSBrbm93IHRoYXQg
V2FsbFRpbWUgaGFzIGEgdmFsdWUgdGhhdCByZXByZXNlbnRzIGludmFsaWQsIHdlIGNhbiB1c2Ug
aXQgaW5zdGVhZCBhbmQgc2F2ZSB0aGUgc3RvcmFnZS4KKyAgICAgICAgVGhpcyBpcyB2ZXJ5IHNp
bWlsYXIgcHJvYmxlbSB0byBvdXIgSGFzaFRhYmxlIGltcGxlbWVudGF0aW9uLiBJbiBvdXIgSGFz
aFRhYmxlIGltcGxlbWVudGF0aW9uLCB3ZSBuZWVkIERlbGV0ZWQKKyAgICAgICAgYW5kIEVtcHR5
IHZhbHVlLCB3aGljaCBjYW4gcmVwcmVzZW50IERlbGV0ZWQgYW5kIEVtcHR5IHZhbHVlcyB3aXRo
b3V0IHNhY3JpZmljaW5nIHN0b3JhZ2UgZWZmaWNpZW5jeS4KKworICAgICAgICBXZSBzaG91bGQg
aGF2ZSBzaW1pbGFyIG1lY2hhbmlzbSBoZXJlLiBJbiB0aGlzIHBhdGNoLCB3ZSBoYXZlIFdURjo6
TWFya2FibGU8VCwgVHJhaXRzPi4gVHJhaXRzIG9mZmVycworICAgICAgICBgVHJhaXRzOjppc0Vt
cHR5VmFsdWUodmFsdWUpYCBhbmQgYFRyYWl0czo6ZW1wdHlWYWx1ZSgpYC4gVGhlbiwgd2UgdXNl
IHRoaXMgZW1wdHkgdmFsdWUgaW5zdGVhZCBvZiBoYXZpbmcgYm9vbAorICAgICAgICBmbGFnLiBU
aGlzIHdheSwgd2UgY2FuIG1ha2UgYHNpemVvZihXVEY6Ok1hcmthYmxlPFQ+KSA9PSBzaXplb2Yo
VClgLgorCisgICAgICAgIFRoaXMgaWRlYSBpcyBpbnNwaXJlZCBmcm9tIGh0dHBzOi8vZ2l0aHVi
LmNvbS9ha3J6ZW1pMS9tYXJrYWJsZS4gQnV0IHdlIHdvdWxkIGxpa2UgdG8gaGF2ZSBXVEY6Ok1h
cmthYmxlPFQ+CisgICAgICAgIGhlcmUgaW5zdGVhZCBvZiBpbXBvcnRpbmcgaXQgc2luY2Ugd2Ug
d291bGQgbGlrZSB0byBoYXZlICgxKSBpbnRlZ3JhdGVkIGludGVyZmFjZXMgd2l0aCBzdGQ6Om9w
dGlvbmFsPFQ+IGFuZCAoMikKKyAgICAgICAgYWxpZ25lZCBmdW5jdGlvbiBuYW1lcyB0byBIYXNo
VHJhaXRzJyBgaXNFbXB0eVZhbHVlYCBhbmQgYGVtcHR5VmFsdWVgLgorCisgICAgICAgICogV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIHd0Zi9NYXJrYWJsZS5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6c3RkOjp1
bmRlcmx5aW5nX3R5cGU8RW51bVR5cGU+Ojp0eXBlPjo6bWF4KTogRW51bU1hcmthYmxlVHJhaXRz
IGNhbiBiZSB1c2VkIGFzIGFuIE1hcmthYmxlVHJhaXRzIGZvciBlbnVtCisgICAgICAgIHZhbHVl
cy4gV2UgY2FuIHNwZWNpZnkgYSBjb25zdGFudCB2YWx1ZSBhcyBhbiBlbXB0eSB2YWx1ZS4KKyAg
ICAgICAgKFdURjo6SW50ZWdyYWxNYXJrYWJsZVRyYWl0czo6aXNFbXB0eVZhbHVlKToKKyAgICAg
ICAgKFdURjo6SW50ZWdyYWxNYXJrYWJsZVRyYWl0czo6ZW1wdHlWYWx1ZSk6IEludGVncmFsTWFy
a2FibGVUcmFpdHMgY2FuIGJlIHVzZWQgYXMgYW4gTWFya2FibGVUcmFpdHMgZm9yIGludGVncmFs
CisgICAgICAgIHR5cGVzIGluY2x1ZGluZyBpbnQgZXRjLgorICAgICAgICAoV1RGOjpNYXJrYWJs
ZTo6TWFya2FibGUpOgorICAgICAgICAoV1RGOjpNYXJrYWJsZTo6b3BlcmF0b3IgYm9vbCBjb25z
dCk6CisgICAgICAgIChXVEY6Ok1hcmthYmxlOjpyZXNldCk6CisgICAgICAgIChXVEY6Ok1hcmth
YmxlOjp2YWx1ZSBjb25zdCk6CisgICAgICAgIChXVEY6Ok1hcmthYmxlOjp2YWx1ZSk6CisgICAg
ICAgIChXVEY6Ok1hcmthYmxlOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6TWFy
a2FibGU6Om9wZXJhdG9yLT4pOgorICAgICAgICAoV1RGOjpNYXJrYWJsZTo6b3BlcmF0b3IqIGNv
bnN0KToKKyAgICAgICAgKFdURjo6TWFya2FibGU6Om9wZXJhdG9yKik6CisgICAgICAgIChXVEY6
Ok1hcmthYmxlOjpvcGVyYXRvciBzdGQ6Om9wdGlvbmFsPFQ+KToKKyAgICAgICAgKFdURjo6TWFy
a2FibGU6Om9wZXJhdG9yIHN0ZDo6b3B0aW9uYWw8VD4gY29uc3QpOiBUaGlzIG9wZXJhdG9yIGFs
bG93cyB1cyB0byBjYXN0IE1hcmthYmxlPFQ+IHRvCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VD4u
CisgICAgICAgICogd3RmL01vbm90b25pY1RpbWUuaDoKKyAgICAgICAgKFdURjo6TW9ub3Rvbmlj
VGltZTo6TWFya2FibGVUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Ok1vbm90
b25pY1RpbWU6Ok1hcmthYmxlVHJhaXRzOjplbXB0eVZhbHVlKTogTWFya2FibGVUcmFpdHMgZm9y
IE1vbm90b25pY1RpbWUuIE1vbm90b25pY1RpbWU6Om5hbigpIGlzIHVzZWQKKyAgICAgICAgYXMg
YW4gZW1wdHkgdmFsdWUuCisgICAgICAgICogd3RmL1NlY29uZHMuaDoKKyAgICAgICAgKFdURjo6
U2Vjb25kczo6TWFya2FibGVUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6OlNl
Y29uZHM6Ok1hcmthYmxlVHJhaXRzOjplbXB0eVZhbHVlKTogTWFya2FibGVUcmFpdHMgZm9yIFNl
Y29uZHMuIFNlY29uZHM6Om5hbigpIGlzIHVzZWQgYXMgYW4gZW1wdHkgdmFsdWUuCisgICAgICAg
ICogd3RmL1dhbGxUaW1lLmg6CisgICAgICAgIChXVEY6OldhbGxUaW1lOjpuYW4pOgorICAgICAg
ICAoV1RGOjpXYWxsVGltZTo6TWFya2FibGVUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAg
IChXVEY6OldhbGxUaW1lOjpNYXJrYWJsZVRyYWl0czo6ZW1wdHlWYWx1ZSk6IE1hcmthYmxlVHJh
aXRzIGZvciBXYWxsVGltZS4gV2FsbFRpbWU6Om5hbigpIGlzIHVzZWQgYXMgYW4gZW1wdHkgdmFs
dWUuCisKIDIwMTgtMDktMDcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzU3ODQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggODM3NTIxN2Y4Njg2ZTI1MGJiM2EyMzQyOWYwMjAwZmI1NzNmZmU3ZS4uNTAxOTdjODBlYjFm
MjY4ODA1YjM4MTcyYjkyZmRkNzczMWRjMWM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDE4LTA5LTA5ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+
CisKKyAgICAgICAgW1dURl0gQWRkIE1hcmthYmxlPFQsIFRyYWl0cz4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTIzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBNYXJrYWJsZTxTZWNvbmRzPiBh
bmQgTWFya2FibGU8V2FsbFRpbWU+IGluIFJlc291cmNlUmVzcG9uc2VCYXNlLgorICAgICAgICBT
aW5jZSB0aGVzZSBmaWVsZHMgYXJlIHBhcnNlZCByZXN1bHRzIGZyb20gaHR0cCBoZWFkZXIgZmll
bGRzLCBTZWNvbmRzOjpuYW4oKSBhbmQgV2FsbFRpbWU6Om5hbigpCisgICAgICAgIGNhbiBiZSB1
c2VkIGFzIGFuIGVtcHR5IHZhbHVlIGZvciB0aGVzZSBmaWVsZHMuIFRodXMgd2UgY2FuIHVzZSBN
YXJrYWJsZSBiZWNhdXNlIGl0IHVzZXMKKyAgICAgICAgdGhlc2UgbmFuIHZhbHVlcyBhcyBhbiBl
bXB0eSB2YWx1ZXMgKHRoZXkgYXJlIGNvbmZpZ3VyZWQgYnkgU2Vjb25kczo6TWFya2FibGVUcmFp
dHMgYW5kIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cykuCisgICAgICAgIFRoaXMgcmVkdWNlcyB0
aGUgc2l6ZSBvZiBSZXNvdXJjZVJlc3BvbnNlQmFzZSBmcm9tIDQ0OCB0byA0MTYuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisKIDIwMTgtMDkt
MDggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtBcHBsZSBQYXld
IERpc3BhdGNoIGEgcGF5bWVudG1ldGhvZGNoYW5nZSBldmVudCB3aGVuIHRoZSBwYXltZW50IG1l
dGhvZCBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjNTExZWQyMjc1MWI1NTBhN2RmZDMzZmI5MWJjNGM1OTYxYTEzZGQ4Li44NmY0YmRiYWQ3M2Nl
MGY2M2E0NjQ4ZjAzMzg2YmZmYzhlOTVmNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTYzMiw2ICs2MzIsNyBAQAogCQlFMzhENkUyNjFGNTUyMkUzMDBB
NzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RyaW5nQnVpbGRlckpTT04uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0EzMkJDMjFGQzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZhbHVlTWFsbG9jLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMzJCQzMxRkM4MzBFMjAwN0Q3RTc2IC8qIEpT
VmFsdWVNYWxsb2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZU1h
bGxvYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMDRDQTRFNDEzNzU0MzdFQkU5
MzFEMDMgLyogTWFya2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFy
a2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNDRjc2OTAyMTE1RDZCQTAw
OTFERTQ4IC8qIENvbXBhY3RQb2ludGVyVHVwbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29tcGFjdFBvaW50ZXJUdXBsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFM0UxNTgyNTFFQURBNTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1GcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0MzFDQzRBMjExODdBREIwMDBDOEEwNyAvKiBEaXNwYXRjaFNQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwYXRjaFNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTY0LDYgKzk2NSw3IEBACiAJCQkJQThBNDcyQzYxNTFBODI1QTAw
NDEyM0ZGIC8qIE1haW5UaHJlYWQuY3BwICovLAogCQkJCUE4QTQ3MkM3MTUxQTgyNUIwMDQxMjNG
RiAvKiBNYWluVGhyZWFkLmggKi8sCiAJCQkJMUEyMzNDN0MxN0RBQTZFMzAwQTkzQUNGIC8qIE1h
bGxvY1B0ci5oICovLAorCQkJCTMwNENBNEU0MTM3NTQzN0VCRTkzMUQwMyAvKiBNYXJrYWJsZS5o
ICovLAogCQkJCUE4QTQ3MkM5MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRoRXh0cmFzLmggKi8sCiAJ
CQkJMTQ0N0FFQzgxOEZDRTU5NDAwQjNEN0ZGIC8qIG1ibWFsbG9jLmNwcCAqLywKIAkJCQlBOEE0
NzJDQTE1MUE4MjVCMDA0MTIzRkYgLyogTUQ1LmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5k
ZXggNTBlNjJhMzExZDIwMTIxMzc1NmFmZjUyMWFhNDk2MmMwNTkyYTg3OC4uZmIzNDhhYmMzZjgy
ZDA1Mzk4NTgxNzE4ZDY0YWMwZjUyM2RjZmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTEy
Miw2ICsxMjIsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgTWFjaFNlbmRSaWdodC5o
CiAgICAgTWFpblRocmVhZC5oCiAgICAgTWFsbG9jUHRyLmgKKyAgICBNYXJrYWJsZS5oCiAgICAg
TWF0aEV4dHJhcy5oCiAgICAgTWVkaWFUaW1lLmgKICAgICBNZW1vcnlGb290cHJpbnQuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFya2FibGUuaCBiL1NvdXJjZS9XVEYvd3RmL01hcmth
YmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWE4ZWJlMTEwOWY1NWJiNmRkNjUwOTFiOGFiOGMxYTUxYjAwYjQx
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hcmthYmxlLmgKQEAgLTAsMCAr
MSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8eXVzdWtl
c3V6dWtpQHNsb3dzdGFydC5vcmc+LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworLy8gVGhlIGlkZWEgb2YgTWFya2FibGU8VD4gaXMgZGVyaXZlZCBmcm9tIG1h
cmthYmxlPFQ+IGF0CisvLyBodHRwczovL2dpdGh1Yi5jb20vYWtyemVtaTEvbWFya2FibGUuCisv
LworLy8gQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQW5kcnplaiBLcnplbWllbnNraS4KKy8vCisv
LyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBC
b29zdCBTb2Z0d2FyZQorLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5n
IGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKKy8vIGh0dHA6Ly93d3cuYm9vc3Qub3Jn
L0xJQ0VOU0VfMV8wLnR4dCkKKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBFeGFtcGxlOgorLy8gICAgIGVudW0gY2xhc3Mg
VHlwZSB7IFZhbHVlMSwgVmFsdWUyLCBWYWx1ZTMgfTsKKy8vICAgICBNYXJrYWJsZTxUeXBlLCBF
bnVtTWFya2FibGVUcmFpdHM8VHlwZSwgNDI+PiBvcHRpb25hbDsKK3RlbXBsYXRlPAorICAgIHR5
cGVuYW1lIEVudW1UeXBlLAorICAgIHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPEVudW1U
eXBlPjo6dHlwZSBjb25zdGFudCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZW5hbWUgc3RkOjp1
bmRlcmx5aW5nX3R5cGU8RW51bVR5cGU+Ojp0eXBlPjo6bWF4KCk+CitzdHJ1Y3QgRW51bU1hcmth
YmxlVHJhaXRzIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZW51bTxFbnVtVHlwZT46OnZh
bHVlLCAiIik7CisgICAgdXNpbmcgVW5kZXJseWluZ1R5cGUgPSB0eXBlbmFtZSBzdGQ6OnVuZGVy
bHlpbmdfdHlwZTxFbnVtVHlwZT46OnR5cGU7CisKKyAgICBjb25zdGV4cHIgc3RhdGljIGJvb2wg
aXNFbXB0eVZhbHVlKEVudW1UeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFVuZGVybHlpbmdUeXBlPih2YWx1ZSkgPT0gY29uc3RhbnQ7CisgICAgfQorCisgICAg
Y29uc3RleHByIHN0YXRpYyBFbnVtVHlwZSBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbnVtVHlwZT4oY29uc3RhbnQpOworICAgIH0KK307CisKK3RlbXBs
YXRlPHR5cGVuYW1lIEludGVncmFsVHlwZSwgSW50ZWdyYWxUeXBlIGNvbnN0YW50ID0gMD4KK3N0
cnVjdCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRzIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
aW50ZWdyYWw8SW50ZWdyYWxUeXBlPjo6dmFsdWUsICIiKTsKKyAgICBjb25zdGV4cHIgc3RhdGlj
IGJvb2wgaXNFbXB0eVZhbHVlKEludGVncmFsVHlwZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB2YWx1ZSA9PSBjb25zdGFudDsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgc3RhdGljIElu
dGVncmFsVHlwZSBlbXB0eVZhbHVlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBjb25zdGFudDsK
KyAgICB9Cit9OworCisvLyBUaGUgZ29hbCBvZiBNYXJrYWJsZSBpcyBvZmZlcmluZyBzdGQ6Om9w
dGlvbmFsIHdpdGhvdXQgc2FjcmlmaWNpbmcgc3RvcmFnZSBlZmZpY2llbmN5LgorLy8gTWFya2Fi
bGUgdGFrZXMgVHJhaXRzLCB3aGljaCBzaG91bGQgaGF2ZSBpc0VtcHR5VmFsdWUgYW5kIGVtcHR5
VmFsdWUgZnVuY3Rpb25zLiBCeSB1c2luZworLy8gb25lIHZhbHVlIG9mIFQgYXMgYW4gZW1wdHkg
dmFsdWUsIHdlIGNhbiByZW1vdmUgYm9vbCBmbGFnIGluIHN0ZDo6b3B0aW9uYWwuIFRoaXMgc3Ry
YXRlZ3kgaXMKKy8vIHNpbWlsYXIgdG8gV1RGOjpIYXNoVGFibGUsIHdoaWNoIHVzZXMgdHdvIHZh
bHVlcyBvZiBUIGFzIGFuIGVtcHR5IHZhbHVlIGFuZCBhIGRlbGV0ZWQgdmFsdWUuCisvLyBUaGlz
IGNsYXNzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBtZW1iZXIgb2YgYSBjbGFzcyB0byBj
b21wYWN0IHRoZSBzaXplIG9mIHRoZSBjbGFzcy4KKy8vIE90aGVyd2lzZSwgeW91IHNob3VsZCB1
c2Ugc3RkOjpvcHRpb25hbC4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4K
K2NsYXNzIE1hcmthYmxlIHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgTWFya2FibGUoKQorICAg
ICAgICA6IG1fdmFsdWUoVHJhaXRzOjplbXB0eVZhbHVlKCkpCisgICAgeyB9CisKKyAgICBjb25z
dGV4cHIgTWFya2FibGUoc3RkOjpudWxsb3B0X3QpCisgICAgICAgIDogTWFya2FibGUoKQorICAg
IHsgfQorCisgICAgY29uc3RleHByIE1hcmthYmxlKFQmJiB2YWx1ZSkKKyAgICAgICAgOiBtX3Zh
bHVlKFdURk1vdmUodmFsdWUpKQorICAgIHsgfQorCisgICAgY29uc3RleHByIE1hcmthYmxlKGNv
bnN0IFQmIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeyB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgorICAgIGNvbnN0ZXhwciBleHBsaWNpdCBNYXJrYWJs
ZShzdGQ6OmluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fdmFsdWUoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKQorICAgIHsgfQorCisgICAgY29uc3RleHByIE1hcmth
YmxlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8VD4mIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUoYm9v
bCh2YWx1ZSkgPyAqdmFsdWUgOiBUcmFpdHM6OmVtcHR5VmFsdWUoKSkKKyAgICB7IH0KKworICAg
IGNvbnN0ZXhwciBNYXJrYWJsZShzdGQ6Om9wdGlvbmFsPFQ+JiYgdmFsdWUpCisgICAgICAgIDog
bV92YWx1ZShib29sKHZhbHVlKSA/IFdURk1vdmUoKnZhbHVlKSA6IFRyYWl0czo6ZW1wdHlWYWx1
ZSgpKQorICAgIHsgfQorCisgICAgY29uc3RleHByIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhVHJhaXRzOjppc0VtcHR5VmFsdWUobV92YWx1ZSk7IH0KKworICAgIHZv
aWQgcmVzZXQoKSB7IG1fdmFsdWUgPSBUcmFpdHM6OmVtcHR5VmFsdWUoKTsgfQorCisgICAgY29u
c3RleHByIGNvbnN0IFQmIHZhbHVlKCkgY29uc3QmIHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBj
b25zdGV4cHIgVCYgdmFsdWUoKSAmIHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBjb25zdGV4cHIg
VCYmIHZhbHVlKCkgJiYgeyByZXR1cm4gV1RGTW92ZShtX3ZhbHVlKTsgfQorCisgICAgY29uc3Rl
eHByIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBzdGQ6OmFkZHJlc3NvZiht
X3ZhbHVlKTsgfQorICAgIGNvbnN0ZXhwciBUKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gc3RkOjph
ZGRyZXNzb2YobV92YWx1ZSk7IH0KKworICAgIGNvbnN0ZXhwciBjb25zdCBUJiBvcGVyYXRvcioo
KSBjb25zdCYgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIGNvbnN0ZXhwciBUJiBvcGVyYXRvcioo
KSAmIHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgIG9wZXJhdG9yIHN0ZDo6b3B0aW9uYWw8VD4o
KSAmJgorICAgIHsKKyAgICAgICAgaWYgKGJvb2woKnRoaXMpKQorICAgICAgICAgICAgcmV0dXJu
IFdURk1vdmUobV92YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQor
CisgICAgb3BlcmF0b3Igc3RkOjpvcHRpb25hbDxUPigpIGNvbnN0JgorICAgIHsKKyAgICAgICAg
aWYgKGJvb2woKnRoaXMpKQorICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFQgbV92YWx1ZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6Ok1hcmthYmxlOwordXNpbmcgV1RG
OjpJbnRlZ3JhbE1hcmthYmxlVHJhaXRzOwordXNpbmcgV1RGOjpFbnVtTWFya2FibGVUcmFpdHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Nb25vdG9uaWNUaW1lLmggYi9Tb3VyY2UvV1RG
L3d0Zi9Nb25vdG9uaWNUaW1lLmgKaW5kZXggMGJiZWU4MjNkODI5MWY5M2JlYzc1NzY1MjEyMWI5
ZjA0Y2Q2YzJlMy4uNzgwNTE5NTg5YTNkYmRkNDFjNjRhOThjMzE3NmU5ZDJiNDkxZGRjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvTW9ub3RvbmljVGltZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL01vbm90b25pY1RpbWUuaApAQCAtMTY1LDYgKzE2NSw4IEBAIGNsYXNzIE1vbm90b25pY1Rp
bWUgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBzdHJ1Y3QgTWFya2FibGVU
cmFpdHM7CisKIHByaXZhdGU6CiAgICAgY29uc3RleHByIE1vbm90b25pY1RpbWUoZG91YmxlIHJh
d1ZhbHVlKQogICAgICAgICA6IG1fdmFsdWUocmF3VmFsdWUpCkBAIC0xNzQsNiArMTc2LDE4IEBA
IGNsYXNzIE1vbm90b25pY1RpbWUgewogICAgIGRvdWJsZSBtX3ZhbHVlIHsgMCB9OwogfTsKIAor
c3RydWN0IE1vbm90b25pY1RpbWU6Ok1hcmthYmxlVHJhaXRzIHsKKyAgICBzdGF0aWMgYm9vbCBp
c0VtcHR5VmFsdWUoTW9ub3RvbmljVGltZSB0aW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6aXNuYW4odGltZS5tX3ZhbHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIE1v
bm90b25pY1RpbWUgZW1wdHlWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gTW9ub3Rvbmlj
VGltZTo6bmFuKCk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIG5hbWVzcGFj
ZSBzdGQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oIGIvU291cmNlL1dU
Ri93dGYvU2Vjb25kcy5oCmluZGV4IDYxMDg2ZjNlNDYzMzdlZDczOTQ4OGZjYjVmNGQ1M2U4YjY0
YzI4MTAuLmMwM2U2YTc3MWU5YWQ2YTQ0M2UzNmQxYTE1M2IyMTkyMDVmZmZlMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRz
LmgKQEAgLTI0NywxMiArMjQ3LDI2IEBAIGNsYXNzIFNlY29uZHMgewogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKKyAgICBzdHJ1Y3QgTWFya2FibGVUcmFpdHM7CisKIHByaXZhdGU6CiAg
ICAgZG91YmxlIG1fdmFsdWUgeyAwIH07CiB9OwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
bGVlcChTZWNvbmRzKTsKIAorc3RydWN0IFNlY29uZHM6Ok1hcmthYmxlVHJhaXRzIHsKKyAgICBz
dGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoU2Vjb25kcyBzZWNvbmRzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6aXNuYW4oc2Vjb25kcy52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
Y29uc3RleHByIFNlY29uZHMgZW1wdHlWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gU2Vj
b25kczo6bmFuKCk7CisgICAgfQorfTsKKwogaW5saW5lIG5hbWVzcGFjZSBzZWNvbmRzX2xpdGVy
YWxzIHsKIAogY29uc3RleHByIFNlY29uZHMgb3BlcmF0b3IiIiBfbWluKGxvbmcgZG91YmxlIG1p
bnV0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oIGIvU291cmNlL1dU
Ri93dGYvV2FsbFRpbWUuaAppbmRleCBiZjY2MjAxMDkwZjMzMWZmZmViNmE3NjUyZjQxM2YzNWE5
ZTI5ZGYyLi43M2VmNWQ3MDRjOGRiNWY0MmJkMTg3Y2YzNDEwY2VlMDQwMWMyMDY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dhbGxU
aW1lLmgKQEAgLTU2LDYgKzU2LDcgQEAgY2xhc3MgV2FsbFRpbWUgewogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgV2FsbFRpbWUgbm93KCk7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBXYWxsVGltZSBpbmZpbml0eSgpIHsgcmV0dXJuIGZyb21SYXdTZWNvbmRzKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFdh
bGxUaW1lIG5hbigpIHsgcmV0dXJuIGZyb21SYXdTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6cXVpZXRfTmFOKCkpOyB9CiAgICAgCiAgICAgY29uc3RleHByIFNlY29uZHMgc2Vj
b25kc1NpbmNlRXBvY2goKSBjb25zdCB7IHJldHVybiBTZWNvbmRzKG1fdmFsdWUpOyB9CiAgICAg
CkBAIC0xMzIsNiArMTMzLDkgQEAgY2xhc3MgV2FsbFRpbWUgewogICAgIHsKICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIH0KKworICAgIHN0cnVjdCBNYXJrYWJsZVRyYWl0czsKKwogcHJpdmF0
ZToKICAgICBjb25zdGV4cHIgV2FsbFRpbWUoZG91YmxlIHJhd1ZhbHVlKQogICAgICAgICA6IG1f
dmFsdWUocmF3VmFsdWUpCkBAIC0xNDEsNiArMTQ1LDE4IEBAIGNsYXNzIFdhbGxUaW1lIHsKICAg
ICBkb3VibGUgbV92YWx1ZSB7IDAgfTsKIH07CiAKK3N0cnVjdCBXYWxsVGltZTo6TWFya2FibGVU
cmFpdHMgeworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShXYWxsVGltZSB0aW1lKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6aXNuYW4odGltZS5tX3ZhbHVlKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgY29uc3RleHByIFdhbGxUaW1lIGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFdhbGxUaW1lOjpuYW4oKTsKKyAgICB9Cit9OworCiBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzbGVlcChXYWxsVGltZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmlu
ZGV4IDJhNGU0OWVmYTk1ODAzZDJiODQ5MTAyZmE1ZWM0NjViNjRkZjhlNjMuLmNiNDY1MzAxNTQ3
N2VhZTc2OWQ4Y2QzNGM2ZDZiZDQwYWQ0MTY5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrTG9hZE1ldHJpY3MuaCIKICNpbmNsdWRlICJQYXJzZWRD
b250ZW50UmFuZ2UuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvTWFya2FibGUu
aD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MjE0LDEwICsyMTUsMTAgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogICAgIG11dGFi
bGUgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogCiBw
cml2YXRlOgotICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtX2FnZTsKLSAgICBt
dXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fZGF0ZTsKLSAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8V2FsbFRpbWU+IG1fZXhwaXJlczsKLSAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
V2FsbFRpbWU+IG1fbGFzdE1vZGlmaWVkOworICAgIG11dGFibGUgTWFya2FibGU8U2Vjb25kcywg
U2Vjb25kczo6TWFya2FibGVUcmFpdHM+IG1fYWdlOworICAgIG11dGFibGUgTWFya2FibGU8V2Fs
bFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9kYXRlOworICAgIG11dGFibGUgTWFy
a2FibGU8V2FsbFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9leHBpcmVzOworICAg
IG11dGFibGUgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9s
YXN0TW9kaWZpZWQ7CiAgICAgbXV0YWJsZSBQYXJzZWRDb250ZW50UmFuZ2UgbV9jb250ZW50UmFu
Z2U7CiAgICAgbXV0YWJsZSBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIG1fY2FjaGVDb250cm9sRGly
ZWN0aXZlczsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGIxNzc2Njg5ZWRjZmE1ZjE0ZTQzMjNhYzQ1MzExMjNjMGVlZjIzOTMuLjI5MzFjODhi
YzE1N2IzNTUzN2FiY2ZkZDljMDRkOWQ0NWFhYTA2N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0wOS0wOSAg
WXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtX
VEZdIEFkZCBNYXJrYWJsZTxULCBUcmFpdHM+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODkyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIE1hcmthYmxlLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMTgtMDktMDggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgYWNjZXNzaWJpbGl0eS9ub3RpZmljYXRpb24tbGlzdGVuZXJz
Lmh0bWwgYWJhbmRvbnMgYSBkb2N1bWVudApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5k
ZXggY2FhODVmY2I1M2Q3MzM5ZjhiZTQ3MjFlMTE3MDc4MzA2YjM4MjY5ZC4uODMxYzFiYTljNjA0
NTcyZDliOWU1NmFkMTRkNmIwNTgwMzI4YWY3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CkBAIC0xMjMsNiArMTIzLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Mb2NrLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dURi9Mb2dnZXIuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L01ENS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTWFya2FibGUuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL01hdGhFeHRyYXMuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL01lZGlhVGltZS5jcHAKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvTWV0YUFsbG9jYXRvci5jcHAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNGNiNWVjY2E0YzRhNzE5MGNkMWUzNGVhYzZmMTQ0MWM5YjdkMTVjNC4uNzRi
OTkyZWU4MWEyMjQwNTQzOWMxZWZkNzg1NGRmZTE3ZWE0ZGQyMSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQxLDYgKzQxLDcgQEAKIAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5MEY1IC8qIFBs
YXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGlsaXRp
ZXNDb2NvYS5tbSAqLzsgfTsKIAkJMEYyQzIwQjgxRENENTQ1MDAwNTQyRDlFIC8qIFRpbWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzIwQjcx
RENENTQ0ODAwNTQyRDlFIC8qIFRpbWUuY3BwICovOyB9OwogCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0
QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMENCNUIxRkNFMTc5MjAwNEI1MzIzIC8qIENvbmN1
cnJlbnRQdHJIYXNoU2V0LmNwcCAqLzsgfTsKKwkJNDkwOUVFM0EyRDA5NDgwQzg4OTgyRDU2IC8q
IE1hcmthYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEVDNzlGMTY4QkU0NTRFNTc5RTQxN0IwNSAvKiBNYXJrYWJsZS5jcHAgKi87IH07CiAJCTBG
M0I5NEE3MUE3NzI2NzQwMERFMzI3MiAvKiBXS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCOTRBNTFB
NzcyNjZDMDBERTMyNzIgLyogV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tICovOyB9Owog
CQkwRjRGRkE5RTFFRDNBQTg1MDBGNzExMUYgLyogU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRGRkE5
RDFFRDNBQTg1MDBGNzExMUYgLyogU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0gKi87IH07
CiAJCTBGNTY1MUY3MUZDRTREREMwMDMxMEZCQyAvKiBOb0hpc3RvcnlJdGVtU2Nyb2xsVG9GcmFn
bWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NTY1MUY2MUZDRTREREIwMDMxMEZCQyAvKiBOb0hpc3RvcnlJdGVtU2Nyb2xsVG9GcmFnbWVudC5t
bSAqLzsgfTsKQEAgLTEyMzQsNiArMTIzNSw3IEBACiAJCTBGMTdCQkQ0MTVBRjZDNEQwMDdBQjc1
MyAvKiBXZWJDb3JlU3RhdGlzdGljc1dpdGhOb1dlYlByb2Nlc3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZVN0YXRpc3RpY3NXaXRoTm9XZWJQcm9jZXNz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzIwQjcxRENENTQ0ODAwNTQy
RDlFIC8qIFRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGlt
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzBDQjVCMUZDRTE3OTIwMDRC
NTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb25jdXJyZW50UHRySGFzaFNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUVDNzlGMTY4QkU0NTRFNTc5RTQxN0IwNSAvKiBNYXJrYWJsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrYWJsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0I5NEE1MUE3NzI2NkMwMERFMzI3MiAvKiBXS1dlYlZp
ZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNEZGQTlEMUVEM0FBODUwMEY3MTExRiAvKiBTbmFwc2hvdFZpYVJlbmRl
ckluQ29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNu
YXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjRGRkFBMDFFRDNEMERFMDBGNzExMUYgLyogSW1hZ2VJTy5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IEltYWdlSU8uZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9JbWFnZUlPLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CkBAIC0zMDEw
LDYgKzMwMTIsNyBAQAogCQkJCTBGRkM0NUE0MUI3M0VCRTIwMDg1QkQ2MiAvKiBMb2NrLmNwcCAq
LywKIAkJCQlBNTdENTRGNDFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2VyLmNwcCAqLywKIAkJCQlB
NTdENTRGNTFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2VyLmggKi8sCisJCQkJRUM3OUYxNjhCRTQ1
NEU1NzlFNDE3QjA1IC8qIE1hcmthYmxlLmNwcCAqLywKIAkJCQlCNDAzOUY5QzE1RTZEOEIzMDA3
MjU1RDYgLyogTWF0aEV4dHJhcy5jcHAgKi8sCiAJCQkJQ0Q1MzkzQzcxNzU3QkE5NzAwQzA3MTIz
IC8qIE1ENS5jcHAgKi8sCiAJCQkJQ0Q1NDk3QjMxNTg1N0YwQzAwQjVCQzMwIC8qIE1lZGlhVGlt
ZS5jcHAgKi8sCkBAIC0zNTk1LDYgKzM1OTgsNyBAQAogCQkJCTdDODNERUU4MUQwQTU5MEMwMEZF
QkNGMyAvKiBMaXN0SGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYxRDFEMEE1
OTBDMDBGRUJDRjMgLyogTG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdENTRGNjFGMzM5
NUQwMDBBOTdBQTcgLyogTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5MDlFRTNBMkQw
OTQ4MEM4ODk4MkQ1NiAvKiBNYXJrYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVF
RDFEMEE1OTBDMDBGRUJDRjMgLyogTWF0aEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QzgzREVFRjFEMEE1OTBDMDBGRUJDRjMgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
ODNERUYxMUQwQTU5MEMwMEZFQkNGMyAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU0
Mzg0ODgyZTMxZTIyZjc4MDAwY2EyMmYyMjMyZDAxNDZmODE5YgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01hcmthYmxlLmNwcApAQCAtMCwwICsxLDI2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8eXVzdWtlc3V6dWtp
QHNsb3dzdGFydC5vcmc+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlIDx3dGYvTWFya2FibGUuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNU
KFdURl9NYXJrYWJsZSwgRGlzZW5nYWdlZCkKK3sKKyAgICB7CisgICAgICAgIE1hcmthYmxlPGlu
dCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWw7CisKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgfQorCisgICAg
eworICAgICAgICBNYXJrYWJsZTxpbnQsIEludGVncmFsTWFya2FibGVUcmFpdHM8aW50LCA0Mj4+
IG9wdGlvbmFsIHsgc3RkOjpudWxsb3B0IH07CisKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRp
Y19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgfQorfQorCitURVNUKFdURl9NYXJrYWJsZSwg
RW5nYWdlZCkKK3sKKyAgICB7CisgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJs
ZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyAxMCB9OworCisgICAgICAgIEVYUEVDVF9UUlVF
KHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIEVYUEVDVF9FUSgxMCwgb3B0
aW9uYWwudmFsdWUoKSk7CisKKyAgICAgICAgb3B0aW9uYWwgPSA0MTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgRVhQRUNUX0VRKDQx
LCBvcHRpb25hbC52YWx1ZSgpKTsKKworICAgICAgICBvcHRpb25hbCA9IHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisKKyAg
ICAgICAgb3B0aW9uYWwgPSA0MjsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJv
b2w+KG9wdGlvbmFsKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgTWFya2FibGU8aW50LCBJbnRl
Z3JhbE1hcmthYmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IDQyIH07CisKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisKKyAgICAgICAgb3B0
aW9uYWwgPSA0MTsKKworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPihvcHRp
b25hbCkpOworICAgICAgICBFWFBFQ1RfRVEoNDEsIG9wdGlvbmFsLnZhbHVlKCkpOworICAgIH0K
K30KKworVEVTVChXVEZfTWFya2FibGUsIERlc3RydWN0b3IpCit7CisgICAgc3RhdGljIGJvb2wg
ZGlkQ2FsbERlc3RydWN0b3IgPSBmYWxzZTsKKyAgICBzdHJ1Y3QgQSB7CisgICAgICAgIGV4cGxp
Y2l0IEEoaW50IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICAgICB7
IH0KKworICAgICAgICB+QSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShk
aWRDYWxsRGVzdHJ1Y3Rvcik7CisgICAgICAgICAgICBkaWRDYWxsRGVzdHJ1Y3RvciA9IHRydWU7
CisgICAgICAgIH0KKworICAgICAgICBpbnQgbV92YWx1ZSB7IDQyIH07CisgICAgfTsKKworICAg
IHN0cnVjdCBBVHJhaXRzIHsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0
IEEmIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWUubV92YWx1ZSA9
PSA0MjsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgQSBlbXB0eVZhbHVlKCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIEEoNDIpOworICAgICAgICB9CisgICAgfTsKKworICAgIGRp
ZENhbGxEZXN0cnVjdG9yID0gZmFsc2U7CisgICAgeworICAgICAgICBNYXJrYWJsZTxBLCBBVHJh
aXRzPiBvcHRpb25hbCB7IHN0ZDo6aW5fcGxhY2UsIDIwIH07CisgICAgICAgIEVYUEVDVF9UUlVF
KHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKGRp
ZENhbGxEZXN0cnVjdG9yKTsKKworICAgIGRpZENhbGxEZXN0cnVjdG9yID0gZmFsc2U7CisgICAg
eworICAgICAgICBNYXJrYWJsZTxBLCBBVHJhaXRzPiBvcHRpb25hbCB7IHN0ZDo6aW5fcGxhY2Us
IDQyIH07CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkp
OworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShkaWRDYWxsRGVzdHJ1Y3Rvcik7Cit9CisKK1RFU1Qo
V1RGX01hcmthYmxlLCBGcm9tT3B0aW9uYWwpCit7CisgICAgeworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGludD4gZnJvbTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KGZy
b20pKTsKKyAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRzPGludCwg
NDI+PiBvcHRpb25hbCA9IGZyb207CisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxi
b29sPihvcHRpb25hbCkpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiBmcm9tIHsgNDIgfTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oZnJv
bSkpOworICAgICAgICBNYXJrYWJsZTxpbnQsIEludGVncmFsTWFya2FibGVUcmFpdHM8aW50LCA0
Mj4+IG9wdGlvbmFsID0gZnJvbTsKKyAgICAgICAgLy8gV2UgY29udmVydCB0aGlzIHRvIG51bGxv
cHQuCisgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwor
ICAgIH0KKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBmcm9tIHsgNDMgfTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oZnJvbSkpOworICAgICAgICBNYXJr
YWJsZTxpbnQsIEludGVncmFsTWFya2FibGVUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsID0gZnJv
bTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKG9wdGlvbmFsLnZhbHVlKCksIDQzKTsKKyAgICB9CisgICAgeworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRp
Y19jYXN0PGJvb2w+KGZyb20pKTsKKyAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmth
YmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IFdURk1vdmUoZnJvbSkgfTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgfQorICAgIHsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGZyb20geyA0MiB9OworICAgICAgICBFWFBFQ1Rf
VFJVRShzdGF0aWNfY2FzdDxib29sPihmcm9tKSk7CisgICAgICAgIE1hcmthYmxlPGludCwgSW50
ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyBXVEZNb3ZlKGZyb20pIH07
CisgICAgICAgIC8vIFdlIGNvbnZlcnQgdGhpcyB0byBudWxsb3B0LgorICAgICAgICBFWFBFQ1Rf
RkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICB9CisgICAgeworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPGludD4gZnJvbSB7IDQzIH07CisgICAgICAgIEVYUEVDVF9UUlVFKHN0
YXRpY19jYXN0PGJvb2w+KGZyb20pKTsKKyAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1h
cmthYmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IFdURk1vdmUoZnJvbSkgfTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKG9wdGlvbmFsLnZhbHVlKCksIDQzKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX01hcmth
YmxlLCBUb09wdGlvbmFsKQoreworICAgIHsKKyAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3Jh
bE1hcmthYmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbDsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50
PiB0byA9IG9wdGlvbmFsOworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4o
dG8pKTsKKyAgICB9CisgICAgeworICAgICAgICBNYXJrYWJsZTxpbnQsIEludGVncmFsTWFya2Fi
bGVUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDIgfTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAgICAgIC8vIFdlIGNvbnZlcnQgdGhp
cyB0byBudWxsb3B0LgorICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdG8gPSBvcHRpb25hbDsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KHRvKSk7CisgICAgfQorICAg
IHsKKyAgICAgICAgTWFya2FibGU8aW50LCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRzPGludCwgNDI+
PiBvcHRpb25hbCB7IDQzIH07CisgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+
KG9wdGlvbmFsKSk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB0byA9IG9wdGlvbmFsOwor
ICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxib29sPih0bykpOworICAgICAgICBFWFBF
Q1RfRVEodG8udmFsdWUoKSwgNDMpOworICAgIH0KKyAgICB7CisgICAgICAgIE1hcmthYmxlPGlu
dCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQsIDQyPj4gb3B0aW9uYWw7CisgICAgICAgIEVY
UEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPGludD4gdG8geyBXVEZNb3ZlKG9wdGlvbmFsKSB9OworICAgICAgICBFWFBFQ1RfRkFM
U0Uoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKKyAgICB9CisgICAgeworICAgICAgICBNYXJrYWJs
ZTxpbnQsIEludGVncmFsTWFya2FibGVUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDIgfTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CisgICAg
ICAgIC8vIFdlIGNvbnZlcnQgdGhpcyB0byBudWxsb3B0LgorICAgICAgICBzdGQ6Om9wdGlvbmFs
PGludD4gdG8geyBXVEZNb3ZlKG9wdGlvbmFsKSB9OworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Rh
dGljX2Nhc3Q8Ym9vbD4odG8pKTsKKyAgICB9CisgICAgeworICAgICAgICBNYXJrYWJsZTxpbnQs
IEludGVncmFsTWFya2FibGVUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgNDMgfTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxpbnQ+IHRvIHsgV1RGTW92ZShvcHRpb25hbCkgfTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4odG8pKTsKKyAgICAgICAgRVhQRUNUX0VRKHRvLnZhbHVl
KCksIDQzKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX01hcmthYmxlLCBNb3ZlT3B0aW9uYWwpCit7
CisgICAgY2xhc3MgT25seU1vdmFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgY29uc3RleHBy
IGV4cGxpY2l0IE9ubHlNb3ZhYmxlKGludCB2YWx1ZSkKKyAgICAgICAgICAgIDogbV92YWx1ZSh2
YWx1ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgaW50IHZhbHVlKCkgeyByZXR1
cm4gbV92YWx1ZTsgfQorCisgICAgICAgIE9ubHlNb3ZhYmxlJiBvcGVyYXRvcj0oT25seU1vdmFi
bGUmJiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgbV92YWx1ZSA9IG90aGVyLm1fdmFs
dWU7CisgICAgICAgICAgICBvdGhlci5tX3ZhbHVlID0gNDI7CisgICAgICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgICAgIH0KKworICAgICAgICBPbmx5TW92YWJsZShPbmx5TW92YWJsZSYmIG90
aGVyKQorICAgICAgICAgICAgOiBtX3ZhbHVlKG90aGVyLm1fdmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG90aGVyLm1fdmFsdWUgPSA0MjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRp
YyBPbmx5TW92YWJsZSBlbXB0eVZhbHVlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IE9ubHlNb3ZhYmxlKDQyKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc0VtcHR5VmFsdWUoY29uc3QgT25seU1vdmFibGUmIHZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gdmFsdWUubV92YWx1ZSA9PSA0MjsKKyAgICAgICAgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgT25seU1vdmFibGUoY29uc3QgT25seU1vdmFibGUmKSA9IGRlbGV0
ZTsKKyAgICAgICAgT25seU1vdmFibGUmIG9wZXJhdG9yPShjb25zdCBPbmx5TW92YWJsZSYpID0g
ZGVsZXRlOworCisgICAgICAgIGludCBtX3ZhbHVlOworICAgIH07CisgICAgeworICAgICAgICBz
dGQ6Om9wdGlvbmFsPE9ubHlNb3ZhYmxlPiBmcm9tIHsgc3RkOjppbl9wbGFjZSwgMjAgfTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oZnJvbSkpOworICAgICAgICBFWFBF
Q1RfRVEoZnJvbS52YWx1ZSgpLnZhbHVlKCksIDIwKTsKKyAgICAgICAgTWFya2FibGU8T25seU1v
dmFibGUsIE9ubHlNb3ZhYmxlPiBjb21wYWN0ID0gV1RGTW92ZShmcm9tKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oY29tcGFjdCkpOworICAgICAgICBFWFBFQ1RfRVEo
Y29tcGFjdC52YWx1ZSgpLnZhbHVlKCksIDIwKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxPbmx5
TW92YWJsZT4gdG8gPSBXVEZNb3ZlKGNvbXBhY3QpOworICAgICAgICBFWFBFQ1RfVFJVRShzdGF0
aWNfY2FzdDxib29sPih0bykpOworICAgICAgICBFWFBFQ1RfRVEodG8udmFsdWUoKS52YWx1ZSgp
LCAyMCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>