<?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>140983</bug_id>
          
          <creation_ts>2015-01-27 20:31:42 -0800</creation_ts>
          <short_desc>Rename pageCache() to PageCache::shared() and return a reference</short_desc>
          <delta_ts>2015-01-28 10:02:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>japhet</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064788</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-27 20:31:42 -0800</bug_when>
    <thetext>Rename pageCache() to PageCache::shared() as this is a singleton class and have it return a reference instead of a pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064800</commentid>
    <comment_count>1</comment_count>
      <attachid>245515</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-27 21:04:18 -0800</bug_when>
    <thetext>Created attachment 245515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064804</commentid>
    <comment_count>2</comment_count>
      <attachid>245515</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-27 21:41:44 -0800</bug_when>
    <thetext>Comment on attachment 245515
Patch

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

r=me

&gt; Source/WebCore/history/PageCache.h:81
&gt; +        PageCache(); // Use instance() instead.

You mean use shared() instead :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064839</commentid>
    <comment_count>3</comment_count>
      <attachid>245522</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-28 00:48:26 -0800</bug_when>
    <thetext>Created attachment 245522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064851</commentid>
    <comment_count>4</comment_count>
      <attachid>245522</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-28 01:33:55 -0800</bug_when>
    <thetext>Comment on attachment 245522
Patch

Clearing flags on attachment: 245522

Committed r179247: &lt;http://trac.webkit.org/changeset/179247&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064852</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-28 01:33:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064863</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-01-28 03:23:03 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 245522 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 245522
&gt; 
&gt; Committed r179247: &lt;http://trac.webkit.org/changeset/179247&gt;

It broke the Windows build, as the EWS noticed it in time.

     1&gt;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\include\private\wtf/NeverDestroyed.h(53): error C2248: &apos;WebCore::PageCache::PageCache&apos; : cannot access private member declared in class &apos;WebCore::PageCache&apos; (..\history\PageCache.cpp)
                 c:\cygwin\home\buildbot\slave\win-release\build\source\webcore\history\PageCache.h(81) : see declaration of &apos;WebCore::PageCache::PageCache&apos;
                 c:\cygwin\home\buildbot\slave\win-release\build\source\webcore\history\PageCache.h(43) : see declaration of &apos;WebCore::PageCache&apos;
                 ..\history\PageCache.cpp(297) : see reference to function template instantiation &apos;WTF::NeverDestroyed&lt;WebCore::PageCache&gt;::NeverDestroyed&lt;&gt;(void)&apos; being compiled
                 ..\history\PageCache.cpp(297) : see reference to function template instantiation &apos;WTF::NeverDestroyed&lt;WebCore::PageCache&gt;::NeverDestroyed&lt;&gt;(void)&apos; being compiled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064887</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-01-28 07:27:40 -0800</bug_when>
    <thetext>Changing to a reference is fantastic. However, changing from a free function to a member function isn’t something I’m so happy about. I don’t think that PageCache::shared() is a better name than pageCache(), and generally I don’t think that singletons need to use member functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064906</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-28 08:47:10 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Changing to a reference is fantastic. However, changing from a free function
&gt; to a member function isn’t something I’m so happy about. I don’t think that
&gt; PageCache::shared() is a better name than pageCache(), and generally I don’t
&gt; think that singletons need to use member functions.

Ok, I have no strong feelings about this. I made this change because I think this is more consistent with our recent code (e.g. In WK2). I&apos;ll upload a partial revert today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064914</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-01-28 09:08:12 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Changing to a reference is fantastic. However, changing from a free function
&gt; &gt; to a member function isn’t something I’m so happy about. I don’t think that
&gt; &gt; PageCache::shared() is a better name than pageCache(), and generally I don’t
&gt; &gt; think that singletons need to use member functions.
&gt; 
&gt; Ok, I have no strong feelings about this. I made this change because I think
&gt; this is more consistent with our recent code (e.g. In WK2). I&apos;ll upload a
&gt; partial revert today.

If we are starting to go a particular direction with this, my personal taste alone should not be the driver. Maybe we should have a brief discussion.

More urgently, though, the Windows build is still broken!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064915</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-01-28 09:08:29 -0800</bug_when>
    <thetext>Brief discussion would be maybe on webkit-dev?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064916</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-28 09:14:35 -0800</bug_when>
    <thetext>This seems like a race between commit-queue and ews. The Windows bot was about 15 minutes slower than the mac ews. Once the reviewer marked it as cq+, it got applied and by the time the Windows ews noted the problem we were already sunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064917</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-01-28 09:20:59 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; This seems like a race between commit-queue and ews. The Windows bot was
&gt; about 15 minutes slower than the mac ews. Once the reviewer marked it as
&gt; cq+, it got applied and by the time the Windows ews noted the problem we
&gt; were already sunk.

That&apos;s why it was good to let the EWS set cq- and comment bug on failure.
But unfortunately it was stated SPAMs and disabled long time ago. :(
Now the only way to be informed about failures is polling bugzilla manually ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064918</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-01-28 09:23:01 -0800</bug_when>
    <thetext>I meant this thread: https://lists.webkit.org/pipermail/webkit-dev/2014-January/026068.html and bug127079 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064920</commentid>
    <comment_count>14</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-28 09:24:10 -0800</bug_when>
    <thetext>Windows build fix landed in r179255. &lt;http://trac.webkit.org/changeset/179255&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064924</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-28 09:43:48 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Windows build fix landed in r179255.
&gt; &lt;http://trac.webkit.org/changeset/179255&gt;

My patch already marked NeverDestroyed&lt;PageCache&gt; as a friend class of PageCache. Now you added it again so it is marked twice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064930</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-28 09:55:22 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; Windows build fix landed in r179255.
&gt; &gt; &lt;http://trac.webkit.org/changeset/179255&gt;
&gt; 
&gt; My patch already marked NeverDestroyed&lt;PageCache&gt; as a friend class of
&gt; PageCache. Now you added it again so it is marked twice?

- Mine is public, yours is private. AFAIK, this doesn&apos;t matter for friend class statements.
- Your specifies WTF:: explicitly but this shouldn&apos;t matter either. StringImpl has the following statement for e.g. &quot;friend class NeverDestroyed&lt;StringImpl&gt;;&quot;, and it builds fine on Windows.

I am not quite sure what&apos;s going on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064931</commentid>
    <comment_count>17</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-28 09:55:36 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; Windows build fix landed in r179255.
&gt; &gt; &lt;http://trac.webkit.org/changeset/179255&gt;
&gt; 
&gt; My patch already marked NeverDestroyed&lt;PageCache&gt; as a friend class of
&gt; PageCache. Now you added it again so it is marked twice?

Oh! The problem must have been namespacing. You declared &quot;WebCore::NeverDestroyed&lt;PageCache&gt;&quot; as a friend, which is a nonexistent class.

It needed to be declared as &quot;WTF::NeverDestroyed&lt;PageCache&gt;&quot;.

Can you delete the original incorrect declaration?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064932</commentid>
    <comment_count>18</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-28 09:56:18 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; Windows build fix landed in r179255.
&gt; &gt; &gt; &lt;http://trac.webkit.org/changeset/179255&gt;
&gt; &gt; 
&gt; &gt; My patch already marked NeverDestroyed&lt;PageCache&gt; as a friend class of
&gt; &gt; PageCache. Now you added it again so it is marked twice?
&gt; 
&gt; - Mine is public, yours is private. AFAIK, this doesn&apos;t matter for friend
&gt; class statements.
&gt; - Your specifies WTF:: explicitly but this shouldn&apos;t matter either.
&gt; StringImpl has the following statement for e.g. &quot;friend class
&gt; NeverDestroyed&lt;StringImpl&gt;;&quot;, and it builds fine on Windows.

StringImpl is in namespace WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064933</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-28 09:58:30 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; &gt; Windows build fix landed in r179255.
&gt; &gt; &gt; &gt; &lt;http://trac.webkit.org/changeset/179255&gt;
&gt; &gt; &gt; 
&gt; &gt; &gt; My patch already marked NeverDestroyed&lt;PageCache&gt; as a friend class of
&gt; &gt; &gt; PageCache. Now you added it again so it is marked twice?
&gt; &gt; 
&gt; &gt; - Mine is public, yours is private. AFAIK, this doesn&apos;t matter for friend
&gt; &gt; class statements.
&gt; &gt; - Your specifies WTF:: explicitly but this shouldn&apos;t matter either.
&gt; &gt; StringImpl has the following statement for e.g. &quot;friend class
&gt; &gt; NeverDestroyed&lt;StringImpl&gt;;&quot;, and it builds fine on Windows.
&gt; 
&gt; StringImpl is in namespace WTF.

There are examples outside WTF namespace:
Source/WebKit2/NetworkProcess/NetworkProcess.h:    friend class NeverDestroyed&lt;NetworkProcess&gt;;

Maybe this works if wtf/NeverDestroyed.h is included in the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064937</commentid>
    <comment_count>20</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-28 10:01:21 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; 
&gt; &gt; StringImpl is in namespace WTF.
&gt; 
&gt; There are examples outside WTF namespace:
&gt; Source/WebKit2/NetworkProcess/NetworkProcess.h:    friend class
&gt; NeverDestroyed&lt;NetworkProcess&gt;;
&gt; 
&gt; Maybe this works if wtf/NeverDestroyed.h is included in the header.

Right. Because wtf/NeverDestroyed.h provides a using declaration:

        } // namespace WTF;

        using WTF::LazyNeverDestroyed;
        using WTF::NeverDestroyed;

        #endif // NeverDestroyed_h

So anyone including this header can just say NeverDestroyed, just like you don&apos;t have to say &quot;std::string&quot; everywhere if you say &quot;using std::string&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064939</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-28 10:02:54 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; Windows build fix landed in r179255.
&gt; &gt; &gt; &lt;http://trac.webkit.org/changeset/179255&gt;
&gt; &gt; 
&gt; &gt; My patch already marked NeverDestroyed&lt;PageCache&gt; as a friend class of
&gt; &gt; PageCache. Now you added it again so it is marked twice?
&gt; 
&gt; Oh! The problem must have been namespacing. You declared
&gt; &quot;WebCore::NeverDestroyed&lt;PageCache&gt;&quot; as a friend, which is a nonexistent
&gt; class.
&gt; 
&gt; It needed to be declared as &quot;WTF::NeverDestroyed&lt;PageCache&gt;&quot;.
&gt; 
&gt; Can you delete the original incorrect declaration?

Done, &lt;http://trac.webkit.org/changeset/179262&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245515</attachid>
            <date>2015-01-27 21:04:18 -0800</date>
            <delta_ts>2015-01-28 00:48:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140983-20150127210422.patch</filename>
            <type>text/plain</type>
            <size>33475</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFiZWNhNTUyZWFhNDNi
YTQ3NzJhMmRlNmQxOWVjOGU3ZTFjN2E1OS4uMmRmYzUwYzE5NTE5ZTlhM2NkZWI2NzhhZGIyMDZl
Y2I1MDU5MWQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE1LTAxLTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIHBhZ2VDYWNoZSgp
IHRvIFBhZ2VDYWNoZTo6c2hhcmVkKCkgYW5kIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwOTgzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIHBhZ2VDYWNoZSgp
IHRvIFBhZ2VDYWNoZTo6c2hhcmVkKCkgYXMgdGhpcyBpcyBhIHNpbmdsZXRvbiBjbGFzcworICAg
ICAgICBhbmQgaGF2ZSBpdCByZXR1cm4gYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIu
CisKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja0Zv
cndhcmRMaXN0OjpzZXRDYXBhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExp
c3Q6OmNsZWFyQWxsUGFnZUNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZExp
c3Q6OmNsb3NlKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6CisgICAgICAgICogaGlzdG9yeS9I
aXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6c2V0VVJMKToK
KyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Q2FjaGU6OnNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpwYWdlQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIGhpc3RvcnkvUGFn
ZUNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAgICAq
IGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5
Q29udHJvbGxlcjo6aW52YWxpZGF0ZUN1cnJlbnRJdGVtQ2FjaGVkUGFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVsb2FkKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRQYWdlQW5kVGV4dFpv
b21GYWN0b3JzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6c2V0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0
UGFnaW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRWaXNpdGVkTGlua1N0b3Jl
KToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
R3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQpOgorICAgICAgICAqIHBhZ2UvU2V0dGlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldFVzZXNQYWdlQ2FjaGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VDcml0aWNhbE1lbW9yeSk6CisK
IDIwMTUtMDEtMjcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW9yZSBidWlsZCBmaXhlcyBmb3IgbmV3ZXIgY2xhbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
N2NmNjM5MWQ5ZjQ4ZjBjMjlmNTg1Y2U4Mjk5NjhiODYwNmRiN2ExMS4uYTFhZTA4YTRkNzViMTc1
ZmUzODRiM2M5NjQ4MGRhMWM0YzI1MDYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE1LTAxLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVuYW1lIHBhZ2VDYWNoZSgpIHRvIFBhZ2VDYWNoZTo6c2hhcmVkKCkgYW5kIHJldHVybiBh
IHJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQwOTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVuYW1lIHBhZ2VDYWNoZSgpIHRvIFBhZ2VDYWNoZTo6c2hhcmVkKCkgYXMgdGhpcyBpcyBh
IHNpbmdsZXRvbiBjbGFzcworICAgICAgICBhbmQgaGF2ZSBpdCByZXR1cm4gYSByZWZlcmVuY2Ug
aW5zdGVhZCBvZiBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYkJhY2tGb3J3YXJk
TGlzdC5tbToKKyAgICAgICAgKC1bV2ViQmFja0ZvcndhcmRMaXN0IHBhZ2VDYWNoZVNpemVdKToK
KyAgICAgICAgKiBNaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoK1tXZWJDb3Jl
U3RhdGlzdGljcyBjYWNoZWRQYWdlQ291bnRdKToKKyAgICAgICAgKCtbV2ViQ29yZVN0YXRpc3Rp
Y3MgY2FjaGVkRnJhbWVDb3VudF0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2l0
ZWRMaW5rU3RvcmUubW06CisgICAgICAgIChXZWJWaXNpdGVkTGlua1N0b3JlOjpyZW1vdmVBbGxW
aXNpdGVkTGlua3MpOgorICAgICAgICAoV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlVmlzaXRl
ZExpbmspOgorICAgICAgICAoV2ViVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRlZExpbmtIYXNo
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZpZXcgX3Nl
dENhY2hlTW9kZWw6XSk6CisKIDIwMTUtMDEtMjcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBidWlsZCBmaXhlcyBmb3IgbmV3ZXIgY2xhbmcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKaW5kZXggNDExYzYwMTJkMzMzNThlZTJkODcwM2IwOGIzOTA4ZTA4Mjg0N2I2
NC4uZDVmYWMyMGUzYzY3ZmNmNDY1YTM5ZDgwOGVmODRlNWJlZTc3NjM1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTAxLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIHBhZ2VDYWNoZSgpIHRvIFBhZ2VDYWNoZTo6c2hh
cmVkKCkgYW5kIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwOTgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIHBhZ2VDYWNoZSgpIHRvIFBhZ2VDYWNoZTo6c2hh
cmVkKCkgYXMgdGhpcyBpcyBhIHNpbmdsZXRvbiBjbGFzcworICAgICAgICBhbmQgaGF2ZSBpdCBy
ZXR1cm4gYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBXZWJD
b3JlU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkUGFn
ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRGcmFtZUNvdW50KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYlZpc2l0ZWRMaW5rU3RvcmU6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcyk6CisgICAgICAg
IChXZWJWaXNpdGVkTGlua1N0b3JlOjphZGRWaXNpdGVkTGlua0hhc2gpOgorICAgICAgICAqIFdl
YlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Q2FjaGVNb2RlbCk6CisKIDIwMTUtMDEt
MjYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0g
QVNTRVJUSU9OIEZBSUxFRCAhbV9wdHIgdW5kZXIgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6Ondp
bkFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDc3ZTYyN2I4YmRiNTI4Njgz
MTdhOTNjOTc1OWNjMGZhZTFkZDgxYy4uOTI2YTYxODJhZTk2N2I5Y2MzMjYyOWQ4Y2ZkNTI4MzAz
MmYxNGVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE1LTAxLTI3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIHBhZ2VDYWNoZSgpIHRv
IFBhZ2VDYWNoZTo6c2hhcmVkKCkgYW5kIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwOTgzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIHBhZ2VDYWNoZSgpIHRv
IFBhZ2VDYWNoZTo6c2hhcmVkKCkgYXMgdGhpcyBpcyBhIHNpbmdsZXRvbiBjbGFzcworICAgICAg
ICBhbmQgaGF2ZSBpdCByZXR1cm4gYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6c2V0Vmlz
aXRlZExpbmtUYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9s
bGVyOjp2aXNpdGVkTGlua1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRM
aW5rVGFibGVDb250cm9sbGVyOjphbGxWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpyZW1vdmVBbGxWaXNpdGVkTGlu
a3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpyZW1vdmVJ
dGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNsb3NlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpyZWxlYXNlUGFnZUNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZv
cm1TZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Nv
dXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9k
ZWwpOgorCiAyMDE1LTAxLTI3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vcmUgYnVpbGQgZml4ZXMgZm9yIG5ld2VyIGNsYW5nLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCAwZDBjM2M2N2ViY2YwZjdmYzJjMDA5YmUwNDY1NWU2ZmIzYWI1MWU4Li42ZDAx
MDRiYThiYzgwNmQ2NTVjMDcwYzU4ZTc2ODlhNjM5ZjMwMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMTYxMSw2ICsxNjExLDcgQEAgX19aTjdXZWJDb3JlOVBhZ2VDYWNoZTExc2V0Q2FwYWNp
dHlFaQogX19aTjdXZWJDb3JlOVBhZ2VDYWNoZTE4cHJ1bmVUb0NhcGFjaXR5Tm93RWlOU18xM1By
dW5pbmdSZWFzb25FCiBfX1pON1dlYkNvcmU5UGFnZUNhY2hlMzNtYXJrUGFnZXNGb3JWaXN0ZWRM
aW5rU3R5bGVSZWNhbGNFdgogX19aTjdXZWJDb3JlOVBhZ2VDYWNoZTZyZW1vdmVFUE5TXzExSGlz
dG9yeUl0ZW1FCitfX1pON1dlYkNvcmU5UGFnZUNhY2hlNnNoYXJlZEV2CiBfX1pON1dlYkNvcmU5
UGFnZUdyb3VwOXBhZ2VHcm91cEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTlTY3JvbGxi
YXIxMW1vdXNlRXhpdGVkRXYKIF9fWk43V2ViQ29yZTlTY3JvbGxiYXIxMm1vdXNlRW50ZXJlZEV2
CkBAIC0xNjI5LDcgKzE2MzAsNiBAQCBfX1pON1dlYkNvcmU5ZW5kT2ZMaW5lRVJLTlNfMTVWaXNp
YmxlUG9zaXRpb25FCiBfX1pON1dlYkNvcmU5ZW5kT2ZXb3JkRVJLTlNfMTVWaXNpYmxlUG9zaXRp
b25FTlNfOUVXb3JkU2lkZUUKIF9fWk43V2ViQ29yZTlmb250Q2FjaGVFdgogX19aTjdXZWJDb3Jl
OW1ha2VSYW5nZUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRVMyXwotX19aTjdXZWJDb3JlOXBhZ2VD
YWNoZUV2CiBfX1pON1dlYkNvcmU5cGxhaW5UZXh0RVBLTlNfNVJhbmdlRXRiCiBfX1pON1dlYkNv
cmU5dW5pb25SZWN0RVJLTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFJlY3RFTG0wRU5TMF8xNUNyYXNo
T25PdmVyZmxvd0VFRQogX19aTkszSlNDOEJpbmRpbmdzMTBSb290T2JqZWN0MTJnbG9iYWxPYmpl
Y3RFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDFl
NWU3NzRlN2M5NDQxM2JhOTZlMTlmY2NlYjA1MjM5OGMwZTcyZmIuLmNjZTA3ZjQ5OTkxNGRlMzdi
MzExOGJhMDc4YjNmOWE1MDI0Yzc2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkTGlzdC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmFk
ZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKICAgICAgICAgICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CiAgICAgICAgICAgICBtX2Vu
dHJpZXMucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0p
OwotICAgICAgICAgICAgcGFnZUNhY2hlKCktPnJlbW92ZShpdGVtLmdldCgpKTsKKyAgICAgICAg
ICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkucmVtb3ZlKGl0ZW0uZ2V0KCkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFBh
c3NSZWZQdHI8SGlzdG9yeUl0ZW0+IHBycEl0ZW0pCiAgICAgICAgIFJlZlB0cjxIaXN0b3J5SXRl
bT4gaXRlbSA9IG1fZW50cmllc1swXTsKICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZSgwKTsKICAg
ICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0pOwotICAgICAgICBwYWdlQ2FjaGUoKS0+cmVt
b3ZlKGl0ZW0uZ2V0KCkpOworICAgICAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLnJlbW92ZShpdGVt
LmdldCgpKTsKICAgICAgICAgbV9jdXJyZW50LS07CiAgICAgfQogCkBAIC0xNzUsNyArMTc1LDcg
QEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OnNldENhcGFjaXR5KGludCBzaXplKQogICAgICAgICBS
ZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXMubGFzdCgpOwogICAgICAgICBtX2Vu
dHJpZXMucmVtb3ZlTGFzdCgpOwogICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbSk7Ci0g
ICAgICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUoaXRlbS5nZXQoKSk7CisgICAgICAgIFBhZ2VDYWNo
ZTo6c2hhcmVkKCkucmVtb3ZlKGl0ZW0uZ2V0KCkpOwogICAgIH0KIAogICAgIGlmICghc2l6ZSkK
QEAgLTI0Nyw3ICsyNDcsNyBAQCBib29sIEJhY2tGb3J3YXJkTGlzdDo6Y2xlYXJBbGxQYWdlQ2Fj
aGVzKCkKICAgICAgICAgSGlzdG9yeUl0ZW0qIGl0ZW0gPSBtX2VudHJpZXNbaV0uZ2V0KCk7CiAg
ICAgICAgIGlmIChpdGVtLT5pc0luUGFnZUNhY2hlKCkpIHsKICAgICAgICAgICAgIGRpZFJlbW92
ZUF0TGVhc3RPbmVJdGVtID0gdHJ1ZTsKLSAgICAgICAgICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUo
aXRlbSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLnJlbW92ZShpdGVtKTsKICAg
ICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZGlkUmVtb3ZlQXRMZWFzdE9uZUl0ZW07CkBAIC0y
NTgsNyArMjU4LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlKCkKIHsKICAgICBpbnQg
c2l6ZSA9IG1fZW50cmllcy5zaXplKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUobV9lbnRyaWVzW2ldLmdldCgpKTsKKyAg
ICAgICAgUGFnZUNhY2hlOjpzaGFyZWQoKS5yZW1vdmUobV9lbnRyaWVzW2ldLmdldCgpKTsKICAg
ICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICBtX2VudHJ5SGFzaC5jbGVhcigpOwogICAgIG1fcGFn
ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDUwZTY1OTZk
MGE3MzViZTg3YTUyNjhjY2U2ODQxOTQ5ODdkOGMxYjAuLmVjZjRlYTg2ZTdhMjViOWRjNGIzMjFi
YmE2OWRiN2YwNTY0NGYxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3Bw
CkBAIC0xNzMsNyArMTczLDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFt
ZSkKIAogICAgIGZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hl
ZEZyYW1lKHRoaXMpOwogCi0gICAgaWYgKG1faXNDb21wb3NpdGVkICYmIHBhZ2VDYWNoZSgpLT5z
aG91bGRDbGVhckJhY2tpbmdTdG9yZXMoKSkKKyAgICBpZiAobV9pc0NvbXBvc2l0ZWQgJiYgUGFn
ZUNhY2hlOjpzaGFyZWQoKS5zaG91bGRDbGVhckJhY2tpbmdTdG9yZXMoKSkKICAgICAgICAgZnJh
bWUudmlldygpLT5jbGVhckJhY2tpbmdTdG9yZXMoKTsKIAogICAgIC8vIGRvY3VtZW50V2lsbFN1
c3BlbmRGb3JQYWdlQ2FjaGUoKSBjYW4gc2V0IHVwIGEgbGF5b3V0IHRpbWVyIG9uIHRoZSBGcmFt
ZVZpZXcsIHNvIGNsZWFyIHRpbWVycyBhZnRlciB0aGF0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hp
c3RvcnlJdGVtLmNwcAppbmRleCBmNTVmYTM0OTZlNzZjZGJjY2Y4M2NjYWYzYmViNjdjNTk4Nzcx
Njg2Li4wYzQ3M2MwOTZjMWI1MWMxNWIwZTZjMmM5MmRlNTlmMDUxNTM1ODEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgSGlz
dG9yeUl0ZW06OnNldFVSTFN0cmluZyhjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIAogdm9pZCBI
aXN0b3J5SXRlbTo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIHBhZ2VDYWNoZSgpLT5y
ZW1vdmUodGhpcyk7CisgICAgUGFnZUNhY2hlOjpzaGFyZWQoKS5yZW1vdmUodGhpcyk7CiAgICAg
c2V0VVJMU3RyaW5nKHVybC5zdHJpbmcoKSk7CiAgICAgY2xlYXJEb2N1bWVudFN0YXRlKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggZmQ5ZGY1MjMzZjc0M2YwMWJi
YWUxNGQzMTMwZDliNmVhYjkzZjUxOS4uYzFiZTM5MjY1ZDk0NzM5MjFlMTRiY2M0ZDFjNTYwNTM4
MWEzNzM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNTEsNiArNTEs
NyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIK
ICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CkBA
IC0yOTEsMTAgKzI5MiwxMCBAQCBzdGF0aWMgdm9pZCBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihQ
YWdlJiBwYWdlKQogICAgIGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFJlc3VsdChEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnBhZ2VDYWNoZUtleSgpLCBlbXB0
eVN0cmluZygpLCByZWplY3RSZWFzb25zID8gRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRGYWlsIDog
RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRQYXNzKTsKIH0KIAotUGFnZUNhY2hlKiBwYWdlQ2FjaGUo
KQorUGFnZUNhY2hlJiBQYWdlQ2FjaGU6OnNoYXJlZCgpCiB7Ci0gICAgc3RhdGljIFBhZ2VDYWNo
ZSogc3RhdGljUGFnZUNhY2hlID0gbmV3IFBhZ2VDYWNoZTsKLSAgICByZXR1cm4gc3RhdGljUGFn
ZUNhY2hlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYWdlQ2FjaGU+IGdsb2JhbFBhZ2VD
YWNoZTsKKyAgICByZXR1cm4gZ2xvYmFsUGFnZUNhY2hlOwogfQogCiBQYWdlQ2FjaGU6OlBhZ2VD
YWNoZSgpCkBAIC01MDcsNyArNTA4LDcgQEAgQ2FjaGVkUGFnZSogUGFnZUNhY2hlOjpnZXQoSGlz
dG9yeUl0ZW0qIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgICAgIAogICAgICAgICBMT0coUGFnZUNh
Y2hlLCAiTm90IHJlc3RvcmluZyBwYWdlIGZvciAlcyBmcm9tIGJhY2svZm9yd2FyZCBjYWNoZSBi
ZWNhdXNlIGNhY2hlIGVudHJ5IGhhcyBleHBpcmVkIiwgaXRlbS0+dXJsKCkuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOwogICAgICAgICBsb2dQYWdlQ2FjaGVGYWlsdXJlRGlhZ25vc3RpY01lc3Nh
Z2UocGFnZSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpleHBpcmVkS2V5KCkpOwotICAgICAgICBw
YWdlQ2FjaGUoKS0+cmVtb3ZlKGl0ZW0pOworICAgICAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLnJl
bW92ZShpdGVtKTsKICAgICB9IGVsc2UgaWYgKGl0ZW0tPm1fcHJ1bmluZ1JlYXNvbiAhPSBQcnVu
aW5nUmVhc29uOjpOb25lKQogICAgICAgICBsb2dQYWdlQ2FjaGVGYWlsdXJlRGlhZ25vc3RpY01l
c3NhZ2UocGFnZSwgcHJ1bmluZ1JlYXNvblRvRGlhZ25vc3RpY0xvZ2dpbmdLZXkoaXRlbS0+bV9w
cnVuaW5nUmVhc29uKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5oCmluZGV4IGYwZDA5
NWUzZjExMmFkMGIzYzdkNWZiMWY1MmFhNGJhZDFjMTE5YzIuLjIzMGZiNjNmNGQ1YTgyYmYxYWMx
NjMwMjQzYzk0MDNjYmY2M2ExYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaApAQCAt
NDMsNyArNDMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBhZ2VDYWNoZSB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VDYWNoZSk7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgZnJpZW5kIFBhZ2VDYWNoZSogcGFnZUNh
Y2hlKCk7CisgICAgICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxQYWdlQ2FjaGU+Owor
CisgICAgICAgIC8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgZ2xvYmFsIHBhZ2UgY2FjaGUuCisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYWdlQ2FjaGUmIHNoYXJlZCgpOwogICAgICAg
ICAKICAgICAgICAgYm9vbCBjYW5DYWNoZShQYWdlKikgY29uc3Q7CiAKQEAgLTc1LDcgKzc4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIG1hcmtQYWdlc0ZvckRldmljZVNj
YWxlQ2hhbmdlZChQYWdlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQYWdlQ2FjaGUoKTsg
Ly8gVXNlIHBhZ2VDYWNoZSgpIGluc3RlYWQuCisgICAgICAgIFBhZ2VDYWNoZSgpOyAvLyBVc2Ug
aW5zdGFuY2UoKSBpbnN0ZWFkLgogICAgICAgICB+UGFnZUNhY2hlKCk7IC8vIE5vdCBpbXBsZW1l
bnRlZCB0byBtYWtlIHN1cmUgbm9ib2R5IGFjY2lkZW50YWxseSBjYWxscyBkZWxldGUgLS0gV2Vi
Q29yZSBkb2VzIG5vdCBkZWxldGUgc2luZ2xldG9ucy4KICAgICAgICAgCiAgICAgICAgIHN0YXRp
YyBib29sIGNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaGlzRnJhbWUoRnJhbWUqKTsKQEAgLTk1LDkg
Kzk4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fc2hvdWxkQ2xlYXJC
YWNraW5nU3RvcmVzOwogICAgICB9OwogCi0gICAgLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBn
bG9iYWwgcGFnZSBjYWNoZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBQYWdlQ2FjaGUqIHBhZ2VDYWNo
ZSgpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQYWdlQ2FjaGVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNzIzZWFjMmUxODRiMDUyNWNi
YWIyZmNkNDU5NWUyNDQ2Yzg1M2Y0YS4uNzNkYTNhOGIzMDlmYWNlNjlhNjM1ZTgyNzU1M2U0ZGZl
MDFiZGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNzQxLDcg
KzE3NDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2U7CiAgICAgaWYgKG1fbG9h
ZGluZ0Zyb21DYWNoZWRQYWdlKQotICAgICAgICBjYWNoZWRQYWdlID0gcGFnZUNhY2hlKCktPnRh
a2UoaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpLCBtX2ZyYW1lLnBhZ2UoKSk7CisgICAgICAg
IGNhY2hlZFBhZ2UgPSBQYWdlQ2FjaGU6OnNoYXJlZCgpLnRha2UoaGlzdG9yeSgpLnByb3Zpc2lv
bmFsSXRlbSgpLCBtX2ZyYW1lLnBhZ2UoKSk7CiAKICAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29y
ZUxvYWRpbmcgJXM6IEFib3V0IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJldmlv
dXMgVVJMICclcycgdG8gbmV3IFVSTCAnJXMnIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKSA/IG1f
ZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCku
dXRmOCgpLmRhdGEoKSA6ICIiLApAQCAtMTc1OCwxMSArMTc1OCwxMSBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICAgICAgTE9HKE1lbW9yeVByZXNz
dXJlLCAiUHJ1bmluZyBwYWdlIGNhY2hlIGJlY2F1c2UgdW5kZXIgbWVtb3J5IHByZXNzdXJlIGF0
OiAlcyIsIF9fUFJFVFRZX0ZVTkNUSU9OX18pOwogICAgICAgICAgICAgTE9HKFBhZ2VDYWNoZSwg
IlBydW5pbmcgcGFnZSBjYWNoZSB0byAwIGR1ZSB0byBtZW1vcnkgcHJlc3N1cmUiKTsKICAgICAg
ICAgICAgIC8vIERvbid0IGNhY2hlIGFueSBwYWdlIGlmIHdlIGFyZSB1bmRlciBtZW1vcnkgcHJl
c3N1cmUuCi0gICAgICAgICAgICBwYWdlQ2FjaGUoKS0+cHJ1bmVUb0NhcGFjaXR5Tm93KDAsIFBy
dW5pbmdSZWFzb246Ok1lbW9yeVByZXNzdXJlKTsKKyAgICAgICAgICAgIFBhZ2VDYWNoZTo6c2hh
cmVkKCkucHJ1bmVUb0NhcGFjaXR5Tm93KDAsIFBydW5pbmdSZWFzb246Ok1lbW9yeVByZXNzdXJl
KTsKICAgICAgICAgfSBlbHNlIGlmIChzeXN0ZW1NZW1vcnlMZXZlbCgpIDw9IG1lbW9yeUxldmVs
VGhyZXNob2xkVG9QcnVuZVBhZ2VDYWNoZSkgewogICAgICAgICAgICAgTE9HKE1lbW9yeVByZXNz
dXJlLCAiUHJ1bmluZyBwYWdlIGNhY2hlIGJlY2F1c2Ugc3lzdGVtIG1lbW9yeSBsZXZlbCBpcyAl
ZCBhdDogJXMiLCBzeXN0ZW1NZW1vcnlMZXZlbCgpLCBfX1BSRVRUWV9GVU5DVElPTl9fKTsKLSAg
ICAgICAgICAgIExPRyhQYWdlQ2FjaGUsICJQcnVuaW5nIHBhZ2UgY2FjaGUgdG8gJWQgZHVlIHRv
IGxvdyBtZW1vcnkgKGxldmVsICVkIGxlc3Mgb3IgZXF1YWwgdG8gJWQgdGhyZXNob2xkKSIsIHBh
Z2VDYWNoZSgpLT5jYXBhY2l0eSgpIC8gMiwgc3lzdGVtTWVtb3J5TGV2ZWwoKSwgbWVtb3J5TGV2
ZWxUaHJlc2hvbGRUb1BydW5lUGFnZUNhY2hlKTsKLSAgICAgICAgICAgIHBhZ2VDYWNoZSgpLT5w
cnVuZVRvQ2FwYWNpdHlOb3cocGFnZUNhY2hlKCktPmNhcGFjaXR5KCkgLyAyLCBQcnVuaW5nUmVh
c29uOjpNZW1vcnlQcmVzc3VyZSk7CisgICAgICAgICAgICBMT0coUGFnZUNhY2hlLCAiUHJ1bmlu
ZyBwYWdlIGNhY2hlIHRvICVkIGR1ZSB0byBsb3cgbWVtb3J5IChsZXZlbCAlZCBsZXNzIG9yIGVx
dWFsIHRvICVkIHRocmVzaG9sZCkiLCBQYWdlQ2FjaGU6OnNoYXJlZCgpLmNhcGFjaXR5KCkgLyAy
LCBzeXN0ZW1NZW1vcnlMZXZlbCgpLCBtZW1vcnlMZXZlbFRocmVzaG9sZFRvUHJ1bmVQYWdlQ2Fj
aGUpOworICAgICAgICAgICAgUGFnZUNhY2hlOjpzaGFyZWQoKS5wcnVuZVRvQ2FwYWNpdHlOb3co
UGFnZUNhY2hlOjpzaGFyZWQoKS5jYXBhY2l0eSgpIC8gMiwgUHJ1bmluZ1JlYXNvbjo6TWVtb3J5
UHJlc3N1cmUpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0xNzcyLDggKzE3NzIsOCBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIC8vIENoZWNr
IHRvIHNlZSBpZiB3ZSBuZWVkIHRvIGNhY2hlIHRoZSBwYWdlIHdlIGFyZSBuYXZpZ2F0aW5nIGF3
YXkgZnJvbSBpbnRvIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuCiAgICAgLy8gV2UgYXJlIGRvaW5n
IHRoaXMgaGVyZSBiZWNhdXNlIHdlIGtub3cgZm9yIHN1cmUgdGhhdCBhIG5ldyBwYWdlIGlzIGFi
b3V0IHRvIGJlIGxvYWRlZC4KICAgICBIaXN0b3J5SXRlbSogaXRlbSA9IGhpc3RvcnkoKS5jdXJy
ZW50SXRlbSgpOwotICAgIGlmICghbV9mcmFtZS50cmVlKCkucGFyZW50KCkgJiYgcGFnZUNhY2hl
KCktPmNhbkNhY2hlKG1fZnJhbWUucGFnZSgpKSAmJiAhaXRlbS0+aXNJblBhZ2VDYWNoZSgpKQot
ICAgICAgICBwYWdlQ2FjaGUoKS0+YWRkKGl0ZW0sICptX2ZyYW1lLnBhZ2UoKSk7CisgICAgaWYg
KCFtX2ZyYW1lLnRyZWUoKS5wYXJlbnQoKSAmJiBQYWdlQ2FjaGU6OnNoYXJlZCgpLmNhbkNhY2hl
KG1fZnJhbWUucGFnZSgpKSAmJiAhaXRlbS0+aXNJblBhZ2VDYWNoZSgpKQorICAgICAgICBQYWdl
Q2FjaGU6OnNoYXJlZCgpLmFkZChpdGVtLCAqbV9mcmFtZS5wYWdlKCkpOwogCiAgICAgaWYgKG1f
bG9hZFR5cGUgIT0gRnJhbWVMb2FkVHlwZTo6UmVwbGFjZSkKICAgICAgICAgY2xvc2VPbGREYXRh
U291cmNlcygpOwpAQCAtMzE1OSw3ICszMTU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERp
ZmZlcmVudERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EK
ICAgICAvLyBSZW1lbWJlciB0aGlzIGl0ZW0gc28gd2UgY2FuIHRyYXZlcnNlIGFueSBjaGlsZCBp
dGVtcyBhcyBjaGlsZCBmcmFtZXMgbG9hZAogICAgIGhpc3RvcnkoKS5zZXRQcm92aXNpb25hbEl0
ZW0oaXRlbSk7CiAKLSAgICBpZiAoQ2FjaGVkUGFnZSogY2FjaGVkUGFnZSA9IHBhZ2VDYWNoZSgp
LT5nZXQoaXRlbSwgbV9mcmFtZS5wYWdlKCkpKSB7CisgICAgaWYgKENhY2hlZFBhZ2UqIGNhY2hl
ZFBhZ2UgPSBQYWdlQ2FjaGU6OnNoYXJlZCgpLmdldChpdGVtLCBtX2ZyYW1lLnBhZ2UoKSkpIHsK
ICAgICAgICAgYXV0byBkb2N1bWVudExvYWRlciA9IGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVy
KCk7CiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKE5hdmlnYXRp
b25BY3Rpb24oZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKSwgbG9hZFR5cGUsIGZhbHNlKSk7CiAg
ICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5k
ZXggYjcxYzViNTNkZDU3ZTY4Nzc5OGNhZjM0MTU1YjBjYTEyNGM1YzMzNC4uOWI4M2E4NDdkZDA1
MDhhN2FhNTZkNTk4YTMxNDQ4YTY1MzUxYjhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC0yMzUsMTAgKzIzNSwxMCBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSgpCiB2b2lkIEhpc3RvcnlDb250cm9sbGVy
OjppbnZhbGlkYXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKCkKIHsKICAgICAvLyBXaGVuIHdlIGFy
ZSBwcmUtY29tbWl0LCB0aGUgY3VycmVudEl0ZW0gaXMgd2hlcmUgYW55IHBhZ2UgY2FjaGUgZGF0
YSByZXNpZGVzLgotICAgIGlmICghcGFnZUNhY2hlKCktPmdldChjdXJyZW50SXRlbSgpLCBtX2Zy
YW1lLnBhZ2UoKSkpCisgICAgaWYgKCFQYWdlQ2FjaGU6OnNoYXJlZCgpLmdldChjdXJyZW50SXRl
bSgpLCBtX2ZyYW1lLnBhZ2UoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxDYWNoZWRQYWdlPiBjYWNoZWRQYWdlID0gcGFnZUNhY2hlKCktPnRha2UoY3VycmVudEl0
ZW0oKSwgbV9mcmFtZS5wYWdlKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBj
YWNoZWRQYWdlID0gUGFnZUNhY2hlOjpzaGFyZWQoKS50YWtlKGN1cnJlbnRJdGVtKCksIG1fZnJh
bWUucGFnZSgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgZ3JvdGVzcXVlIGhhY2sgdG8g
Zml4IDxyZGFyOi8vcHJvYmxlbS80MDU5MDU5PiBDcmFzaCBpbiBSZW5kZXJGbG93OjpkZXRhY2gK
ICAgICAvLyBTb21laG93IHRoZSBQYWdlU3RhdGUgb2JqZWN0IGlzIG5vdCBwcm9wZXJseSB1cGRh
dGVkLCBhbmQgaXMgaG9sZGluZyBvbnRvIGEgc3RhbGUgZG9jdW1lbnQuCkBAIC0zMzQsNyArMzM0
LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVsb2FkKCkKICNlbmRpZgog
CiAgICAgaWYgKG1fY3VycmVudEl0ZW0pIHsKLSAgICAgICAgcGFnZUNhY2hlKCktPnJlbW92ZSht
X2N1cnJlbnRJdGVtLmdldCgpKTsKKyAgICAgICAgUGFnZUNhY2hlOjpzaGFyZWQoKS5yZW1vdmUo
bV9jdXJyZW50SXRlbS5nZXQoKSk7CiAgICAgCiAgICAgICAgIGlmIChtX2ZyYW1lLmxvYWRlcigp
LmxvYWRUeXBlKCkgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkIHx8IG1fZnJhbWUubG9hZGVyKCku
bG9hZFR5cGUoKSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luKQogICAgICAgICAg
ICAgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKG1fY3VycmVudEl0ZW0uZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA4ZWRhZmJmNzdmODk3ZmMwNmYyOGU2Njc4NzRk
ZmRiMDZkOTA4MjgxLi44MzE0YzlhNGUzY2ViZGM2YjU3YjVkMzA0ZjA0NGZhMjg2ZmI2NjEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTg5LDcgKzk4OSw3IEBAIHZvaWQgRnJhbWU6OnNldFBh
Z2VBbmRUZXh0Wm9vbUZhY3RvcnMoZmxvYXQgcGFnZVpvb21GYWN0b3IsIGZsb2F0IHRleHRab29t
RmFjdG9yCiAgICAgfQogCiAgICAgaWYgKGlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHBhZ2VDYWNo
ZSgpLT5tYXJrUGFnZXNGb3JGdWxsU3R5bGVSZWNhbGMocGFnZSk7CisgICAgICAgIFBhZ2VDYWNo
ZTo6c2hhcmVkKCkubWFya1BhZ2VzRm9yRnVsbFN0eWxlUmVjYWxjKHBhZ2UpOwogfQogCiBmbG9h
dCBGcmFtZTo6ZnJhbWVTY2FsZUZhY3RvcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA4
YzMxOGIyZmJkOWNjZDU4NWUzOWM4Y2ZkOWM5MGM3MmQ1YTgzYzVkLi43YzUzNWQwNTcyMTJjYmM0
YWU3ZjdkNjQyMzBmMjdmZWNhNDY1NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTgzOSw5ICs4
MzksOSBAQCB2b2lkIFBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9y
KQogICAgIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogCiAgICAgbWFpbkZyYW1l
KCkuZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7Ci0gICAgcGFnZUNhY2hlKCktPm1h
cmtQYWdlc0ZvckRldmljZVNjYWxlQ2hhbmdlZCh0aGlzKTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJl
ZCgpLm1hcmtQYWdlc0ZvckRldmljZVNjYWxlQ2hhbmdlZCh0aGlzKTsKIAotICAgIHBhZ2VDYWNo
ZSgpLT5tYXJrUGFnZXNGb3JGdWxsU3R5bGVSZWNhbGModGhpcyk7CisgICAgUGFnZUNhY2hlOjpz
aGFyZWQoKS5tYXJrUGFnZXNGb3JGdWxsU3R5bGVSZWNhbGModGhpcyk7CiAgICAgR3JhcGhpY3ND
b250ZXh0Ojp1cGRhdGVEb2N1bWVudE1hcmtlclJlc291cmNlcygpOwogCiAgICAgbWFpbkZyYW1l
KCkucGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZGlkQ2hhbmdlRGV2aWNlU2NhbGVGYWN0b3IoKTsK
QEAgLTkyMSw3ICs5MjEsNyBAQCB2b2lkIFBhZ2U6OnNldFBhZ2luYXRpb24oY29uc3QgUGFnaW5h
dGlvbiYgcGFnaW5hdGlvbikKICAgICBtX3BhZ2luYXRpb24gPSBwYWdpbmF0aW9uOwogCiAgICAg
c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7Ci0gICAgcGFnZUNhY2hlKCktPm1hcmtQ
YWdlc0ZvckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLm1h
cmtQYWdlc0ZvckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKIH0KIAogdW5zaWduZWQgUGFnZTo6cGFn
ZUNvdW50KCkgY29uc3QKQEAgLTE2NjEsNyArMTY2MSw3IEBAIHZvaWQgUGFnZTo6c2V0VmlzaXRl
ZExpbmtTdG9yZShSZWY8VmlzaXRlZExpbmtTdG9yZT4mJiB2aXNpdGVkTGlua1N0b3JlKQogICAg
IG1fdmlzaXRlZExpbmtTdG9yZS0+YWRkUGFnZSgqdGhpcyk7CiAKICAgICBpbnZhbGlkYXRlU3R5
bGVzRm9yQWxsTGlua3MoKTsKLSAgICBwYWdlQ2FjaGUoKS0+bWFya1BhZ2VzRm9yRnVsbFN0eWxl
UmVjYWxjKHRoaXMpOworICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkubWFya1BhZ2VzRm9yRnVsbFN0
eWxlUmVjYWxjKHRoaXMpOwogfQogCiBTZXNzaW9uSUQgUGFnZTo6c2Vzc2lvbklEKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCBlOTY2NWE0ODQ2MGU2ZjNmNmYwMWY1OGMw
NmIwZjhkMjk5OTljMDAyLi5kYWMyNmYyNzhkN2ExNzUyMWYyOWQ3ZmEyY2QxMWM1NDYyZTI5NGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQ
YWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQogewogICAgIGZvciAoYXV0byBp
dCA9IG1fcGFnZXMuYmVnaW4oKSwgZW5kID0gbV9wYWdlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KQogICAgICAgICAoKml0KS0+Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwotICAgIHBhZ2VD
YWNoZSgpLT5tYXJrUGFnZXNGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CisgICAgUGFn
ZUNhY2hlOjpzaGFyZWQoKS5tYXJrUGFnZXNGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7
CiB9CiAKIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIFBhZ2VHcm91cDo6Y2FwdGlvblByZWZlcmVu
Y2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggODliNDMyMzNlNWRjYmQ2NzYwMTA3
M2Y4MTg4NTZhODgwZDEwNWRhMy4uOTZmNjhkM2Y5N2M4MzY2MGVhNTEzMzgwYzQyZWQ3OGEyZTg4
ZjU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lk
IFNldHRpbmdzOjpzZXRVc2VzUGFnZUNhY2hlKGJvb2wgdXNlc1BhZ2VDYWNoZSkKICAgICAgICAg
aW50IGZpcnN0ID0gLW1fcGFnZS0+YmFja0ZvcndhcmQoKS5iYWNrQ291bnQoKTsKICAgICAgICAg
aW50IGxhc3QgPSBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZm9yd2FyZENvdW50KCk7CiAgICAgICAg
IGZvciAoaW50IGkgPSBmaXJzdDsgaSA8PSBsYXN0OyBpKyspCi0gICAgICAgICAgICBwYWdlQ2Fj
aGUoKS0+cmVtb3ZlKG1fcGFnZS0+YmFja0ZvcndhcmQoKS5pdGVtQXRJbmRleChpKSk7CisgICAg
ICAgICAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLnJlbW92ZShtX3BhZ2UtPmJhY2tGb3J3YXJkKCku
aXRlbUF0SW5kZXgoaSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggN2Q3MDIyZDk1YTFlNTEyZjEwY2Ey
ZjU4ODY5NDQxODQyODVlOTc4Mi4uNWNkMjEwNTY0N2M0MjQ5MjExNmM1NDIyMGI0NmQ2N2Y2ZDEy
YTJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnJlbGVhc2VDcml0aWNhbE1lbW9yeSgpCiAgICAgICAgIFJlbGllZkxvZ2dlciBsb2coIkVtcHR5
IHRoZSBQYWdlQ2FjaGUiKTsKICAgICAgICAgLy8gUmlnaHQgbm93LCB0aGUgb25seSByZWFzb24g
d2UgY2FsbCByZWxlYXNlIGNyaXRpY2FsIG1lbW9yeSB3aGlsZSBub3QgdW5kZXIgbWVtb3J5IHBy
ZXNzdXJlIGlzIGlmIHRoZSBwcm9jZXNzIGlzIGFib3V0IHRvIGJlIHN1c3BlbmRlZC4KICAgICAg
ICAgUHJ1bmluZ1JlYXNvbiBwcnVuaW5nUmVhc29uID0gbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCku
aXNVbmRlck1lbW9yeVByZXNzdXJlKCkgPyBQcnVuaW5nUmVhc29uOjpNZW1vcnlQcmVzc3VyZSA6
IFBydW5pbmdSZWFzb246OlByb2Nlc3NTdXNwZW5kZWQ7Ci0gICAgICAgIHBhZ2VDYWNoZSgpLT5w
cnVuZVRvQ2FwYWNpdHlOb3coMCwgcHJ1bmluZ1JlYXNvbik7CisgICAgICAgIFBhZ2VDYWNoZTo6
c2hhcmVkKCkucHJ1bmVUb0NhcGFjaXR5Tm93KDAsIHBydW5pbmdSZWFzb24pOwogICAgIH0KIAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0Zvcndh
cmRMaXN0Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3Qu
bW0KaW5kZXggMDc3YzkwMzY2ZTBiYWNlNDU2NTk1YWE2YzhjOTdmYzcyNTg3NWQyZS4uODc1N2M4
YzIxZTAzYzZiNGVlNmI5NTUxZTQ5NmVkNGRiNTdmZmRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KQEAgLTM1NSw3ICszNTUsNyBAQCAt
ICh2b2lkKXNldFBhZ2VDYWNoZVNpemU6KE5TVUludGVnZXIpc2l6ZQogCiAtIChOU1VJbnRlZ2Vy
KXBhZ2VDYWNoZVNpemUKIHsKLSAgICByZXR1cm4gW2tpdChjb3JlKHNlbGYpLT5wYWdlKCkpIHVz
ZXNQYWdlQ2FjaGVdID8gcGFnZUNhY2hlKCktPmNhcGFjaXR5KCkgOiAwOworICAgIHJldHVybiBb
a2l0KGNvcmUoc2VsZiktPnBhZ2UoKSkgdXNlc1BhZ2VDYWNoZV0gPyBQYWdlQ2FjaGU6OnNoYXJl
ZCgpLmNhcGFjaXR5KCkgOiAwOwogfQogCiAtIChpbnQpYmFja0xpc3RDb3VudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KaW5kZXggZjRhYjE2ZTFlY2UxNWU1
ZGVjZDgyZmU2ZjU5NjEzNmJjODc3ODk2OS4uNTYzZWM4ZTk5MDZkOGFkODE1Njc5MTY2MWJmNDA5
N2U1ZGI5MWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3Rh
dGlzdGljcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNz
Lm1tCkBAIC0yMjQsMTIgKzIyNCwxMiBAQCArICh2b2lkKXJldHVybkZyZWVNZW1vcnlUb1N5c3Rl
bQogCiArIChpbnQpY2FjaGVkUGFnZUNvdW50CiB7Ci0gICAgcmV0dXJuIHBhZ2VDYWNoZSgpLT5w
YWdlQ291bnQoKTsKKyAgICByZXR1cm4gUGFnZUNhY2hlOjpzaGFyZWQoKS5wYWdlQ291bnQoKTsK
IH0KIAogKyAoaW50KWNhY2hlZEZyYW1lQ291bnQKIHsKLSAgICByZXR1cm4gcGFnZUNhY2hlKCkt
PmZyYW1lQ291bnQoKTsKKyAgICByZXR1cm4gUGFnZUNhY2hlOjpzaGFyZWQoKS5mcmFtZUNvdW50
KCk7CiB9CiAKIC8vIERlcHJlY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLm1tCmluZGV4IGEwMGZjMDY1YjA3Y2Vj
MWQ5YTYzNmQzMDZlZWE3NTY4YTkzNGI1NDYuLjg2NGRkNGUwM2NjMDVlMDU2ZTM4OTUzZDZkZDEx
NTZlMzg0Nzc2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlZpc2l0ZWRMaW5rU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5tbQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFdlYlZp
c2l0ZWRMaW5rU3RvcmU6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiB7CiAgICAgZm9yIChhdXRv
JiB2aXNpdGVkTGlua1N0b3JlIDogdmlzaXRlZExpbmtTdG9yZXMoKSkKICAgICAgICAgdmlzaXRl
ZExpbmtTdG9yZS0+cmVtb3ZlVmlzaXRlZExpbmtIYXNoZXMoKTsKLSAgICBwYWdlQ2FjaGUoKS0+
bWFya1BhZ2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CisgICAgUGFnZUNhY2hlOjpzaGFy
ZWQoKS5tYXJrUGFnZXNGb3JWaXN0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKIH0KIAogdm9pZCBXZWJW
aXNpdGVkTGlua1N0b3JlOjphZGRWaXNpdGVkTGluayhOU1N0cmluZyAqdXJsU3RyaW5nKQpAQCAt
MTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlVmlzaXRlZExp
bmsoTlNTdHJpbmcgKnVybFN0cmluZykKICAgICBtX3Zpc2l0ZWRMaW5rSGFzaGVzLnJlbW92ZShs
aW5rSGFzaCk7CiAKICAgICBpbnZhbGlkYXRlU3R5bGVzRm9yTGluayhsaW5rSGFzaCk7Ci0gICAg
cGFnZUNhY2hlKCktPm1hcmtQYWdlc0ZvclZpc3RlZExpbmtTdHlsZVJlY2FsYygpOworICAgIFBh
Z2VDYWNoZTo6c2hhcmVkKCkubWFya1BhZ2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CiB9
CiAKIGJvb2wgV2ViVmlzaXRlZExpbmtTdG9yZTo6aXNMaW5rVmlzaXRlZChQYWdlJiBwYWdlLCBM
aW5rSGFzaCBsaW5rSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZVVSTCkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFdlYlZpc2l0ZWRMaW5rU3Rv
cmU6OmFkZFZpc2l0ZWRMaW5rSGFzaChMaW5rSGFzaCBsaW5rSGFzaCkKICAgICBtX3Zpc2l0ZWRM
aW5rSGFzaGVzLmFkZChsaW5rSGFzaCk7CiAKICAgICBpbnZhbGlkYXRlU3R5bGVzRm9yTGluayhs
aW5rSGFzaCk7Ci0gICAgcGFnZUNhY2hlKCktPm1hcmtQYWdlc0ZvclZpc3RlZExpbmtTdHlsZVJl
Y2FsYygpOworICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkubWFya1BhZ2VzRm9yVmlzdGVkTGlua1N0
eWxlUmVjYWxjKCk7CiB9CiAKIHZvaWQgV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlVmlzaXRl
ZExpbmtIYXNoZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDBjYzFi
ZDQxNjU0YTEyZDBlNWI3ZjcxNzY1ODA0NDIwOTBjYTdiYmYuLjkwYmYwNmVkZWM0NDMwYTk4MzBl
M2ZkMzYyYzY1ZWI0YzdlZDIzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTc5MzUsOSArNzkzNSw5IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9k
ZWwpY2FjaGVNb2RlbAogCiAgICAgbWVtb3J5Q2FjaGUoKS5zZXRDYXBhY2l0aWVzKGNhY2hlTWlu
RGVhZENhcGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgY2FjaGVUb3RhbENhcGFjaXR5KTsK
ICAgICBtZW1vcnlDYWNoZSgpLnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVh
ZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7Ci0gICAgcGFnZUNhY2hlKCktPnNldENhcGFj
aXR5KHBhZ2VDYWNoZUNhcGFjaXR5KTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLnNldENhcGFj
aXR5KHBhZ2VDYWNoZUNhcGFjaXR5KTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgcGFnZUNhY2hl
KCktPnNldFNob3VsZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKKyAgICBQYWdlQ2FjaGU6OnNo
YXJlZCgpLnNldFNob3VsZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKICAgICBuc3VybENhY2hl
TWVtb3J5Q2FwYWNpdHkgPSBzdGQ6Om1heChuc3VybENhY2hlTWVtb3J5Q2FwYWNpdHksIFtuc3Vy
bENhY2hlIG1lbW9yeUNhcGFjaXR5XSk7CiAgICAgQ0ZVUkxDYWNoZVJlZiBjZkNhY2hlOwogICAg
IGlmIChbbnN1cmxDYWNoZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9DRlVSTENhY2hl
KV0gJiYgKGNmQ2FjaGUgPSBbbnN1cmxDYWNoZSBfQ0ZVUkxDYWNoZV0pKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDMyMjcxZjk3ZGFhNzIzOTBkY2ZlZWE3MDgy
NDMxNjZlYjRiY2M2Y2IuLmI0MzA3MWMyNTI4ZGE2ZTc4ZThiZDEyNzE1MTBmYzE1N2I0YTczN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTMyNyw3ICszMjcs
NyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRQYWdlQ291bnQoSU5UKiBjb3Vu
dCkKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKmNv
dW50ID0gcGFnZUNhY2hlKCktPnBhZ2VDb3VudCgpOworICAgICpjb3VudCA9IFBhZ2VDYWNoZTo6
c2hhcmVkKCkucGFnZUNvdW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTMzNiw2ICsz
MzYsNiBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRGcmFtZUNvdW50KElOVCog
Y291bnQpCiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAg
ICpjb3VudCA9IHBhZ2VDYWNoZSgpLT5mcmFtZUNvdW50KCk7CisgICAgKmNvdW50ID0gUGFnZUNh
Y2hlOjpzaGFyZWQoKS5mcmFtZUNvdW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3Rv
cmUuY3BwCmluZGV4IDUwODZmZmE3ODIxNTUyZGYxODBhNmU3ZTBkZWRlOGFjOTY4ZDcyYjcuLjBh
MTk1YWYxMjE5ZDM0MTk0NzMxM2QyYzBhOTU4ZTAwMGQyZTJmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuY3Bw
CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViVmlzaXRlZExpbmtTdG9yZTo6c2V0U2hvdWxkVHJh
Y2tWaXNpdGVkTGlua3MoYm9vbCBzaG91bGRUcmFja1Zpc2l0ZWRMaW5rCiB2b2lkIFdlYlZpc2l0
ZWRMaW5rU3RvcmU6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiB7CiAgICAgc2hhcmVkKCkucmVt
b3ZlVmlzaXRlZExpbmtIYXNoZXMoKTsKLSAgICBwYWdlQ2FjaGUoKS0+bWFya1BhZ2VzRm9yVmlz
dGVkTGlua1N0eWxlUmVjYWxjKCk7CisgICAgUGFnZUNhY2hlOjpzaGFyZWQoKS5tYXJrUGFnZXNG
b3JWaXN0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKIH0KIAogdm9pZCBXZWJWaXNpdGVkTGlua1N0b3Jl
OjphZGRWaXNpdGVkTGluayhjb25zdCBTdHJpbmcmIHVybFN0cmluZykKQEAgLTExNiw3ICsxMTYs
NyBAQCB2b2lkIFdlYlZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaChMaW5rSGFz
aCBsaW5rSGFzaCkKICAgICBtX3Zpc2l0ZWRMaW5rSGFzaGVzLmFkZChsaW5rSGFzaCk7CiAKICAg
ICBpbnZhbGlkYXRlU3R5bGVzRm9yTGluayhsaW5rSGFzaCk7Ci0gICAgcGFnZUNhY2hlKCktPm1h
cmtQYWdlc0ZvclZpc3RlZExpbmtTdHlsZVJlY2FsYygpOworICAgIFBhZ2VDYWNoZTo6c2hhcmVk
KCkubWFya1BhZ2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CiB9CiAKIHZvaWQgV2ViVmlz
aXRlZExpbmtTdG9yZTo6cmVtb3ZlVmlzaXRlZExpbmtIYXNoZXMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAppbmRleCA1NzY0NzI0ZTZhNTM1NDU4NWU2OGJhYjA2NmNiMjk5Mzg2NTc1MWMzLi4wZjE3ZWRh
MzI5ZTJmNWI2ZWIwOTY2OTBjZTNiZjdjNmIxOWY0MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApA
QCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1v
ZGVsIGNhY2hlTW9kZWwpCiAKICAgICBtZW1vcnlDYWNoZSgpLnNldENhcGFjaXRpZXMoY2FjaGVN
aW5EZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBjYWNoZVRvdGFsQ2FwYWNpdHkp
OwogICAgIG1lbW9yeUNhY2hlKCkuc2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChk
ZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKTsKLSAgICBwYWdlQ2FjaGUoKS0+c2V0Q2Fw
YWNpdHkocGFnZUNhY2hlQ2FwYWNpdHkpOworICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkuc2V0Q2Fw
YWNpdHkocGFnZUNhY2hlQ2FwYWNpdHkpOwogCiAjaWYgVVNFKENGTkVUV09SSykKICAgICAvLyBE
b24ndCBzaHJpbmsgYSBiaWcgZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBjaHVy
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDhlMzc0NjJjNDVjZWJkMTc4
MTU2OTc2YmFiNGM0YjIzN2QyYzdjMTUuLjllNmFkY2M5MzQzZWNiMDIyMzNkNjYxMTRlZTM4OGQ3
NzNmNDFhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9W
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcApAQCAtOTcsMjAgKzk3
LDIwIEBAIHZvaWQgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFi
bGUoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmCiAgICAgbV92aXNpdGVkTGlua1RhYmxlLnNl
dFNoYXJlZE1lbW9yeShzaGFyZWRNZW1vcnkucmVsZWFzZSgpKTsKIAogICAgIGludmFsaWRhdGVT
dHlsZXNGb3JBbGxMaW5rcygpOwotICAgIHBhZ2VDYWNoZSgpLT5tYXJrUGFnZXNGb3JWaXN0ZWRM
aW5rU3R5bGVSZWNhbGMoKTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLm1hcmtQYWdlc0ZvclZp
c3RlZExpbmtTdHlsZVJlY2FsYygpOwogfQogCiB2b2lkIFZpc2l0ZWRMaW5rVGFibGVDb250cm9s
bGVyOjp2aXNpdGVkTGlua1N0YXRlQ2hhbmdlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6TGlua0hh
c2g+JiBsaW5rSGFzaGVzKQogewogICAgIGZvciAoYXV0byBsaW5rSGFzaCA6IGxpbmtIYXNoZXMp
CiAgICAgICAgIGludmFsaWRhdGVTdHlsZXNGb3JMaW5rKGxpbmtIYXNoKTsKLSAgICBwYWdlQ2Fj
aGUoKS0+bWFya1BhZ2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CisgICAgUGFnZUNhY2hl
OjpzaGFyZWQoKS5tYXJrUGFnZXNGb3JWaXN0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKIH0KIAogdm9p
ZCBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6YWxsVmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQo
KQogewogICAgIGludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpOwotICAgIHBhZ2VDYWNoZSgp
LT5tYXJrUGFnZXNGb3JWaXN0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKKyAgICBQYWdlQ2FjaGU6OnNo
YXJlZCgpLm1hcmtQYWdlc0ZvclZpc3RlZExpbmtTdHlsZVJlY2FsYygpOwogfQogCiB2b2lkIFZp
c2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQpAQCAtMTE4
LDcgKzExOCw3IEBAIHZvaWQgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnJlbW92ZUFsbFZp
c2l0ZWRMaW5rcygpCiAgICAgbV92aXNpdGVkTGlua1RhYmxlLmNsZWFyKCk7CiAKICAgICBpbnZh
bGlkYXRlU3R5bGVzRm9yQWxsTGlua3MoKTsKLSAgICBwYWdlQ2FjaGUoKS0+bWFya1BhZ2VzRm9y
VmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CisgICAgUGFnZUNhY2hlOjpzaGFyZWQoKS5tYXJrUGFn
ZXNGb3JWaXN0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zv
cndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCA2NTIwNDQwODZlMTkxMTRhYmY0MWYwNmMy
OGQwZTFjNTZmYTExOTE0Li5hMTc2MTNiMjEzNjcwMmNiM2YzZGNkYWM3ZTBkNjQzYzMwNTk1Yzlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zv
cndhcmRMaXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdl
YkJhY2tGb3J3YXJkTGlzdFByb3h5OjpyZW1vdmVJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKICAgICBp
ZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgcGFnZUNhY2hlKCktPnJl
bW92ZShpdGVtLmdldCgpKTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLnJlbW92ZShpdGVtLmdl
dCgpKTsKICAgICBXZWJDb3JlOjpQYWdlOjpjbGVhclByZXZpb3VzSXRlbUZyb21BbGxQYWdlcyhp
dGVtLmdldCgpKTsKICAgICBoaXN0b3J5SXRlbVRvSURNYXAoKS5yZW1vdmUoaXRlbSk7CiB9CkBA
IC0yMTgsNyArMjE4LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2xvc2UoKQog
ewogICAgIEhhc2hTZXQ8dWludDY0X3Q+OjppdGVyYXRvciBlbmQgPSBtX2Fzc29jaWF0ZWRJdGVt
SURzLmVuZCgpOwogICAgIGZvciAoSGFzaFNldDx1aW50NjRfdD46Oml0ZXJhdG9yIGkgPSBtX2Fz
c29jaWF0ZWRJdGVtSURzLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpCi0gICAgICAgIFdlYkNvcmU6
OnBhZ2VDYWNoZSgpLT5yZW1vdmUoaXRlbUZvcklEKCppKSk7CisgICAgICAgIFdlYkNvcmU6OlBh
Z2VDYWNoZTo6c2hhcmVkKCkucmVtb3ZlKGl0ZW1Gb3JJRCgqaSkpOwogCiAgICAgbV9hc3NvY2lh
dGVkSXRlbUlEcy5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAppbmRleCBjN2MxODdlZjIwNzM0MDg5OGQ4ZDk0YjAzZDMxZDdlNzRmZjk1Y2IxLi44Yjhi
ODg0MmEzMmY5NDQ5YjVmZjVkZTM0YjI5YmQ0NTUzZmFkZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTExMTYsNyArMTExNiw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6c2V0VGV4dENoZWNrZXJTdGF0ZShjb25zdCBUZXh0Q2hlY2tlclN0YXRlJiB0ZXh0Q2hl
Y2tlclN0YXRlKQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlbGVhc2VQYWdlQ2FjaGUoKQogewotICAg
IHBhZ2VDYWNoZSgpLT5wcnVuZVRvQ2FwYWNpdHlOb3coMCwgUHJ1bmluZ1JlYXNvbjo6TWVtb3J5
UHJlc3N1cmUpOworICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkucHJ1bmVUb0NhcGFjaXR5Tm93KDAs
IFBydW5pbmdSZWFzb246Ok1lbW9yeVByZXNzdXJlKTsKIH0KIAogI2lmICFQTEFURk9STShDT0NP
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0KaW5kZXggMTEzZGM5YWQyODc0N2RkMzFiNzhlMDk0NzY1NWMwY2NlNDZmYTM1Ny4uODhl
NGQ5ODQwMzhhODM3ODFiMGI3YWM3ZTM1ODUyNzdhYzFiNGQxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVs
IGNhY2hlTW9kZWwpCiAKICAgICBtZW1vcnlDYWNoZSgpLnNldENhcGFjaXRpZXMoY2FjaGVNaW5E
ZWFkQ2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBjYWNoZVRvdGFsQ2FwYWNpdHkpOwog
ICAgIG1lbW9yeUNhY2hlKCkuc2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChkZWFk
RGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKTsKLSAgICBwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNp
dHkocGFnZUNhY2hlQ2FwYWNpdHkpOworICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkuc2V0Q2FwYWNp
dHkocGFnZUNhY2hlQ2FwYWNpdHkpOwogCiAgICAgTlNVUkxDYWNoZSAqbnN1cmxDYWNoZSA9IFtO
U1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKaW5kZXggN2Q4YTY4YWQ0ZDZhZmIwYjZhZjYy
ZjJjM2U2MjU4MjE2YjEyZjdjZC4uYmNjN2FkNjE2MTJiNzE4OTA1MjY5ZGNlNTg4Mjc0NDYwZWEx
MzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nl
c3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vz
c1NvdXAuY3BwCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3Jt
U2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgV2ViQ29yZTo6bWVtb3J5
Q2FjaGUoKS5zZXREaXNhYmxlZChjYWNoZU1vZGVsID09IENhY2hlTW9kZWxEb2N1bWVudFZpZXdl
cik7CiAgICAgV2ViQ29yZTo6bWVtb3J5Q2FjaGUoKS5zZXRDYXBhY2l0aWVzKGNhY2hlTWluRGVh
ZENhcGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgY2FjaGVUb3RhbENhcGFjaXR5KTsKICAg
ICBXZWJDb3JlOjptZW1vcnlDYWNoZSgpLnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2
YWwoZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7Ci0gICAgV2ViQ29yZTo6cGFnZUNh
Y2hlKCktPnNldENhcGFjaXR5KHBhZ2VDYWNoZUNhcGFjaXR5KTsKKyAgICBXZWJDb3JlOjpQYWdl
Q2FjaGU6OnNoYXJlZCgpLnNldENhcGFjaXR5KHBhZ2VDYWNoZUNhcGFjaXR5KTsKIAogI2lmIFBM
QVRGT1JNKEdUSykKLSAgICBXZWJDb3JlOjpwYWdlQ2FjaGUoKS0+c2V0U2hvdWxkQ2xlYXJCYWNr
aW5nU3RvcmVzKHRydWUpOworICAgIFdlYkNvcmU6OlBhZ2VDYWNoZTo6c2hhcmVkKCkuc2V0U2hv
dWxkQ2xlYXJCYWNraW5nU3RvcmVzKHRydWUpOwogI2VuZGlmCiAKICAgICBpZiAoIXVzZXNOZXR3
b3JrUHJvY2VzcygpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245522</attachid>
            <date>2015-01-28 00:48:26 -0800</date>
            <delta_ts>2015-01-28 01:33:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140983-20150128004830.patch</filename>
            <type>text/plain</type>
            <size>33469</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFiZWNhNTUyZWFhNDNi
YTQ3NzJhMmRlNmQxOWVjOGU3ZTFjN2E1OS4uOWIyOTM2ZjBhMGMyNWQwNjJhZDk1ZjY5N2NjNWU3
NGI5NjRiODAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE1LTAxLTI3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIHBhZ2VDYWNoZSgp
IHRvIFBhZ2VDYWNoZTo6c2hhcmVkKCkgYW5kIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwOTgzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBSZW5hbWUgcGFnZUNhY2hlKCkg
dG8gUGFnZUNhY2hlOjpzaGFyZWQoKSBhcyB0aGlzIGlzIGEgc2luZ2xldG9uIGNsYXNzCisgICAg
ICAgIGFuZCBoYXZlIGl0IHJldHVybiBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4K
KworICAgICAgICAqIGhpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9y
d2FyZExpc3Q6OnNldENhcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlz
dDo6Y2xlYXJBbGxQYWdlQ2FjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlz
dDo6Y2xvc2UpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBoaXN0b3J5L0hp
c3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpzZXRVUkwpOgor
ICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
YWNoZTo6c2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhZ2VDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgICogaGlzdG9yeS9QYWdl
Q2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SXRlbSk6CisgICAgICAgICog
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjppbnZhbGlkYXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWxvYWQpOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldFBhZ2VBbmRUZXh0Wm9v
bUZhY3RvcnMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXREZXZpY2VTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRQ
YWdpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFZpc2l0ZWRMaW5rU3RvcmUp
OgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VH
cm91cDo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgICogcGFnZS9TZXR0aW5n
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0VXNlc1BhZ2VDYWNoZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZUNyaXRpY2FsTWVtb3J5KToKKwog
MjAxNS0wMS0yNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNb3JlIGJ1aWxkIGZpeGVzIGZvciBuZXdlciBjbGFuZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA3
Y2Y2MzkxZDlmNDhmMGMyOWY1ODVjZTgyOTk2OGI4NjA2ZGI3YTExLi5kODM4NjYwYjcxMDk4NjE3
ZWVmODc5ZjdmNGEwNTA0MTI1OWUxODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTUtMDEtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW5hbWUgcGFnZUNhY2hlKCkgdG8gUGFnZUNhY2hlOjpzaGFyZWQoKSBhbmQgcmV0dXJuIGEg
cmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDA5ODMKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
IFJlbmFtZSBwYWdlQ2FjaGUoKSB0byBQYWdlQ2FjaGU6OnNoYXJlZCgpIGFzIHRoaXMgaXMgYSBz
aW5nbGV0b24gY2xhc3MKKyAgICAgICAgYW5kIGhhdmUgaXQgcmV0dXJuIGEgcmVmZXJlbmNlIGlu
c3RlYWQgb2YgYSBwb2ludGVyLgorCisgICAgICAgICogSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExp
c3QubW06CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBwYWdlQ2FjaGVTaXplXSk6Cisg
ICAgICAgICogTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbToKKyAgICAgICAgKCtbV2ViQ29yZVN0
YXRpc3RpY3MgY2FjaGVkUGFnZUNvdW50XSk6CisgICAgICAgICgrW1dlYkNvcmVTdGF0aXN0aWNz
IGNhY2hlZEZyYW1lQ291bnRdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVk
TGlua1N0b3JlLm1tOgorICAgICAgICAoV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlQWxsVmlz
aXRlZExpbmtzKToKKyAgICAgICAgKFdlYlZpc2l0ZWRMaW5rU3RvcmU6OnJlbW92ZVZpc2l0ZWRM
aW5rKToKKyAgICAgICAgKFdlYlZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaCk6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRD
YWNoZU1vZGVsOl0pOgorCiAyMDE1LTAxLTI3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgogCiAgICAgICAgIE1vcmUgYnVpbGQgZml4ZXMgZm9yIG5ld2VyIGNsYW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IDQxMWM2MDEyZDMzMzU4ZWUyZDg3MDNiMDhiMzkwOGUwODI4NDdiNjQu
LjkxN2JmZmRkOGZlM2I4MTk2MDI3NzJkYmJiOWU0MTU1ZjJjZmUxMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNS0wMS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlbmFtZSBwYWdlQ2FjaGUoKSB0byBQYWdlQ2FjaGU6OnNoYXJl
ZCgpIGFuZCByZXR1cm4gYSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MDk4MworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCisKKyAgICAgICAgUmVuYW1lIHBhZ2VDYWNoZSgpIHRvIFBhZ2VDYWNoZTo6c2hhcmVk
KCkgYXMgdGhpcyBpcyBhIHNpbmdsZXRvbiBjbGFzcworICAgICAgICBhbmQgaGF2ZSBpdCByZXR1
cm4gYSByZWZlcmVuY2UgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkUGFnZUNv
dW50KToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRGcmFtZUNvdW50KToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYlZpc2l0ZWRMaW5rU3RvcmU6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcyk6CisgICAgICAgIChX
ZWJWaXNpdGVkTGlua1N0b3JlOjphZGRWaXNpdGVkTGlua0hhc2gpOgorICAgICAgICAqIFdlYlZp
ZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0Q2FjaGVNb2RlbCk6CisKIDIwMTUtMDEtMjYg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gQVNT
RVJUSU9OIEZBSUxFRCAhbV9wdHIgdW5kZXIgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OndpbkFk
ZE5vdGlmaWNhdGlvbkxpc3RlbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDc3ZTYyN2I4YmRiNTI4NjgzMTdh
OTNjOTc1OWNjMGZhZTFkZDgxYy4uMDI0OTBiODU0Nzk1N2U5NjYwM2Q4MjgzOTU4MjYxNmNiYTU5
YTllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE1LTAxLTI3ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIHBhZ2VDYWNoZSgpIHRvIFBh
Z2VDYWNoZTo6c2hhcmVkKCkgYW5kIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwOTgzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBSZW5hbWUgcGFnZUNhY2hlKCkgdG8gUGFn
ZUNhY2hlOjpzaGFyZWQoKSBhcyB0aGlzIGlzIGEgc2luZ2xldG9uIGNsYXNzCisgICAgICAgIGFu
ZCBoYXZlIGl0IHJldHVybiBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpzZXRWaXNpdGVk
TGlua1RhYmxlKToKKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6
OnZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6VmlzaXRlZExpbmtU
YWJsZUNvbnRyb2xsZXI6OmFsbFZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2xvc2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnJlbGVhc2VQYWdlQ2FjaGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNl
dENhY2hlTW9kZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbCk6
CisKIDIwMTUtMDEtMjcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgTW9yZSBidWlsZCBmaXhlcyBmb3IgbmV3ZXIgY2xhbmcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDBkMGMzYzY3ZWJjZjBmN2ZjMmMwMDliZTA0NjU1ZTZmYjNhYjUxZTguLjZkMDEwNGJh
OGJjODA2ZDY1NWMwNzBjNThlNzY4OWE2MzlmMzAxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC0xNjExLDYgKzE2MTEsNyBAQCBfX1pON1dlYkNvcmU5UGFnZUNhY2hlMTFzZXRDYXBhY2l0eUVp
CiBfX1pON1dlYkNvcmU5UGFnZUNhY2hlMThwcnVuZVRvQ2FwYWNpdHlOb3dFaU5TXzEzUHJ1bmlu
Z1JlYXNvbkUKIF9fWk43V2ViQ29yZTlQYWdlQ2FjaGUzM21hcmtQYWdlc0ZvclZpc3RlZExpbmtT
dHlsZVJlY2FsY0V2CiBfX1pON1dlYkNvcmU5UGFnZUNhY2hlNnJlbW92ZUVQTlNfMTFIaXN0b3J5
SXRlbUUKK19fWk43V2ViQ29yZTlQYWdlQ2FjaGU2c2hhcmVkRXYKIF9fWk43V2ViQ29yZTlQYWdl
R3JvdXA5cGFnZUdyb3VwRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlOVNjcm9sbGJhcjEx
bW91c2VFeGl0ZWRFdgogX19aTjdXZWJDb3JlOVNjcm9sbGJhcjEybW91c2VFbnRlcmVkRXYKQEAg
LTE2MjksNyArMTYzMCw2IEBAIF9fWk43V2ViQ29yZTllbmRPZkxpbmVFUktOU18xNVZpc2libGVQ
b3NpdGlvbkUKIF9fWk43V2ViQ29yZTllbmRPZldvcmRFUktOU18xNVZpc2libGVQb3NpdGlvbkVO
U185RVdvcmRTaWRlRQogX19aTjdXZWJDb3JlOWZvbnRDYWNoZUV2CiBfX1pON1dlYkNvcmU5bWFr
ZVJhbmdlRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FUzJfCi1fX1pON1dlYkNvcmU5cGFnZUNhY2hl
RXYKIF9fWk43V2ViQ29yZTlwbGFpblRleHRFUEtOU181UmFuZ2VFdGIKIF9fWk43V2ViQ29yZTl1
bmlvblJlY3RFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0UmVjdEVMbTBFTlMwXzE1Q3Jhc2hPbk92
ZXJmbG93RUVFCiBfX1pOSzNKU0M4QmluZGluZ3MxMFJvb3RPYmplY3QxMmdsb2JhbE9iamVjdEV2
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggMWU1ZTc3
NGU3Yzk0NDEzYmE5NmUxOWZjY2ViMDUyMzk4YzBlNzJmYi4uY2NlMDdmNDk5OTE0ZGUzN2IzMTE4
YmEwNzhiM2Y5YTUwMjRjNzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRMaXN0LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRl
bShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBwcnBJdGVtKQogICAgICAgICAgICAgUmVmUHRyPEhp
c3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKICAgICAgICAgICAgIG1fZW50cmll
cy5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbSk7Ci0g
ICAgICAgICAgICBwYWdlQ2FjaGUoKS0+cmVtb3ZlKGl0ZW0uZ2V0KCkpOworICAgICAgICAgICAg
UGFnZUNhY2hlOjpzaGFyZWQoKS5yZW1vdmUoaXRlbS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUGFzc1Jl
ZlB0cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBp
dGVtID0gbV9lbnRyaWVzWzBdOwogICAgICAgICBtX2VudHJpZXMucmVtb3ZlKDApOwogICAgICAg
ICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbSk7Ci0gICAgICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUo
aXRlbS5nZXQoKSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkucmVtb3ZlKGl0ZW0uZ2V0
KCkpOwogICAgICAgICBtX2N1cnJlbnQtLTsKICAgICB9CiAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2
b2lkIEJhY2tGb3J3YXJkTGlzdDo6c2V0Q2FwYWNpdHkoaW50IHNpemUpCiAgICAgICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CiAgICAgICAgIG1fZW50cmll
cy5yZW1vdmVMYXN0KCk7CiAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAg
ICAgcGFnZUNhY2hlKCktPnJlbW92ZShpdGVtLmdldCgpKTsKKyAgICAgICAgUGFnZUNhY2hlOjpz
aGFyZWQoKS5yZW1vdmUoaXRlbS5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKCFzaXplKQpAQCAt
MjQ3LDcgKzI0Nyw3IEBAIGJvb2wgQmFja0ZvcndhcmRMaXN0OjpjbGVhckFsbFBhZ2VDYWNoZXMo
KQogICAgICAgICBIaXN0b3J5SXRlbSogaXRlbSA9IG1fZW50cmllc1tpXS5nZXQoKTsKICAgICAg
ICAgaWYgKGl0ZW0tPmlzSW5QYWdlQ2FjaGUoKSkgewogICAgICAgICAgICAgZGlkUmVtb3ZlQXRM
ZWFzdE9uZUl0ZW0gPSB0cnVlOwotICAgICAgICAgICAgcGFnZUNhY2hlKCktPnJlbW92ZShpdGVt
KTsKKyAgICAgICAgICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkucmVtb3ZlKGl0ZW0pOwogICAgICAg
ICB9CiAgICAgfQogICAgIHJldHVybiBkaWRSZW1vdmVBdExlYXN0T25lSXRlbTsKQEAgLTI1OCw3
ICsyNTgsNyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2UoKQogewogICAgIGludCBzaXpl
ID0gbV9lbnRyaWVzLnNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkK
LSAgICAgICAgcGFnZUNhY2hlKCktPnJlbW92ZShtX2VudHJpZXNbaV0uZ2V0KCkpOworICAgICAg
ICBQYWdlQ2FjaGU6OnNoYXJlZCgpLnJlbW92ZShtX2VudHJpZXNbaV0uZ2V0KCkpOwogICAgIG1f
ZW50cmllcy5jbGVhcigpOwogICAgIG1fZW50cnlIYXNoLmNsZWFyKCk7CiAgICAgbV9wYWdlID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNTBlNjU5NmQwYTcz
NWJlODdhNTI2OGNjZTY4NDE5NDk4N2Q4YzFiMC4uZWNmNGVhODZlN2EyNWI5ZGM0YjMyMWJiYTY5
ZGI3ZjA1NjQ0ZjExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAg
LTE3Myw3ICsxNzMsNyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUmIGZyYW1lKQog
CiAgICAgZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJh
bWUodGhpcyk7CiAKLSAgICBpZiAobV9pc0NvbXBvc2l0ZWQgJiYgcGFnZUNhY2hlKCktPnNob3Vs
ZENsZWFyQmFja2luZ1N0b3JlcygpKQorICAgIGlmIChtX2lzQ29tcG9zaXRlZCAmJiBQYWdlQ2Fj
aGU6OnNoYXJlZCgpLnNob3VsZENsZWFyQmFja2luZ1N0b3JlcygpKQogICAgICAgICBmcmFtZS52
aWV3KCktPmNsZWFyQmFja2luZ1N0b3JlcygpOwogCiAgICAgLy8gZG9jdW1lbnRXaWxsU3VzcGVu
ZEZvclBhZ2VDYWNoZSgpIGNhbiBzZXQgdXAgYSBsYXlvdXQgdGltZXIgb24gdGhlIEZyYW1lVmll
dywgc28gY2xlYXIgdGltZXJzIGFmdGVyIHRoYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9y
eUl0ZW0uY3BwCmluZGV4IGY1NWZhMzQ5NmU3NmNkYmNjZjgzY2NhZjNiZWI2N2M1OTg3NzE2ODYu
LjBjNDczYzA5NmMxYjUxYzE1YjBlNmMyYzkyZGU1OWYwNTE1MzU4MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBIaXN0b3J5
SXRlbTo6c2V0VVJMU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogCiB2b2lkIEhpc3Rv
cnlJdGVtOjpzZXRVUkwoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcGFnZUNhY2hlKCktPnJlbW92
ZSh0aGlzKTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLnJlbW92ZSh0aGlzKTsKICAgICBzZXRV
UkxTdHJpbmcodXJsLnN0cmluZygpKTsKICAgICBjbGVhckRvY3VtZW50U3RhdGUoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCBmZDlkZjUyMzNmNzQzZjAxYmJhZTE0
ZDMxMzBkOWI2ZWFiOTNmNTE5Li5jMWJlMzkyNjVkOTQ3MzkyMWUxNGJjYzRkMWM1NjA1MzgxYTM3
MzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBAIC01MSw2ICs1MSw3IEBA
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KQEAgLTI5
MSwxMCArMjkyLDEwIEBAIHN0YXRpYyB2b2lkIGxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKFBhZ2Um
IHBhZ2UpCiAgICAgZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQubG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KERpYWdub3N0aWNMb2dnaW5nS2V5czo6cGFnZUNhY2hlS2V5KCksIGVtcHR5U3Ry
aW5nKCksIHJlamVjdFJlYXNvbnMgPyBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdEZhaWwgOiBEaWFn
bm9zdGljTG9nZ2luZ1Jlc3VsdFBhc3MpOwogfQogCi1QYWdlQ2FjaGUqIHBhZ2VDYWNoZSgpCitQ
YWdlQ2FjaGUmIFBhZ2VDYWNoZTo6c2hhcmVkKCkKIHsKLSAgICBzdGF0aWMgUGFnZUNhY2hlKiBz
dGF0aWNQYWdlQ2FjaGUgPSBuZXcgUGFnZUNhY2hlOwotICAgIHJldHVybiBzdGF0aWNQYWdlQ2Fj
aGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBhZ2VDYWNoZT4gZ2xvYmFsUGFnZUNhY2hl
OworICAgIHJldHVybiBnbG9iYWxQYWdlQ2FjaGU7CiB9CiAKIFBhZ2VDYWNoZTo6UGFnZUNhY2hl
KCkKQEAgLTUwNyw3ICs1MDgsNyBAQCBDYWNoZWRQYWdlKiBQYWdlQ2FjaGU6OmdldChIaXN0b3J5
SXRlbSogaXRlbSwgUGFnZSogcGFnZSkKICAgICAgICAgCiAgICAgICAgIExPRyhQYWdlQ2FjaGUs
ICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1
c2UgY2FjaGUgZW50cnkgaGFzIGV4cGlyZWQiLCBpdGVtLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgICAgIGxvZ1BhZ2VDYWNoZUZhaWx1cmVEaWFnbm9zdGljTWVzc2FnZShw
YWdlLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmV4cGlyZWRLZXkoKSk7Ci0gICAgICAgIHBhZ2VD
YWNoZSgpLT5yZW1vdmUoaXRlbSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkucmVtb3Zl
KGl0ZW0pOwogICAgIH0gZWxzZSBpZiAoaXRlbS0+bV9wcnVuaW5nUmVhc29uICE9IFBydW5pbmdS
ZWFzb246Ok5vbmUpCiAgICAgICAgIGxvZ1BhZ2VDYWNoZUZhaWx1cmVEaWFnbm9zdGljTWVzc2Fn
ZShwYWdlLCBwcnVuaW5nUmVhc29uVG9EaWFnbm9zdGljTG9nZ2luZ0tleShpdGVtLT5tX3BydW5p
bmdSZWFzb24pKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmgKaW5kZXggZjBkMDk1ZTNm
MTEyYWQwYjNjN2Q1ZmIxZjUyYWE0YmFkMWMxMTljMi4uNjRjMGJiYTNiOGIyZWU0MDM4YmI0OWEz
YmUzMGM0NDM2N2U5NmUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5oCkBAIC00Myw3
ICs0MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUGFnZUNhY2hlIHsKICAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNhY2hlKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBmcmllbmQgUGFnZUNhY2hlKiBwYWdlQ2FjaGUo
KTsKKyAgICAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPFBhZ2VDYWNoZT47CisKKyAg
ICAgICAgLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9iYWwgcGFnZSBjYWNoZS4KKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhZ2VDYWNoZSYgc2hhcmVkKCk7CiAgICAgICAgIAog
ICAgICAgICBib29sIGNhbkNhY2hlKFBhZ2UqKSBjb25zdDsKIApAQCAtNzUsNyArNzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgbWFya1BhZ2VzRm9yRGV2aWNlU2NhbGVD
aGFuZ2VkKFBhZ2UqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFBhZ2VDYWNoZSgpOyAvLyBV
c2UgcGFnZUNhY2hlKCkgaW5zdGVhZC4KKyAgICAgICAgUGFnZUNhY2hlKCk7IC8vIFVzZSBzaGFy
ZWQoKSBpbnN0ZWFkLgogICAgICAgICB+UGFnZUNhY2hlKCk7IC8vIE5vdCBpbXBsZW1lbnRlZCB0
byBtYWtlIHN1cmUgbm9ib2R5IGFjY2lkZW50YWxseSBjYWxscyBkZWxldGUgLS0gV2ViQ29yZSBk
b2VzIG5vdCBkZWxldGUgc2luZ2xldG9ucy4KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBib29s
IGNhbkNhY2hlUGFnZUNvbnRhaW5pbmdUaGlzRnJhbWUoRnJhbWUqKTsKQEAgLTk1LDkgKzk4LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fc2hvdWxkQ2xlYXJCYWNraW5n
U3RvcmVzOwogICAgICB9OwogCi0gICAgLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9iYWwg
cGFnZSBjYWNoZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBQYWdlQ2FjaGUqIHBhZ2VDYWNoZSgpOwot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQYWdlQ2FjaGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNzIzZWFjMmUxODRiMDUyNWNiYWIyZmNk
NDU5NWUyNDQ2Yzg1M2Y0YS4uNzNkYTNhOGIzMDlmYWNlNjlhNjM1ZTgyNzU1M2U0ZGZlMDFiZGJj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNzQxLDcgKzE3NDEs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2U7CiAgICAgaWYgKG1fbG9hZGluZ0Zy
b21DYWNoZWRQYWdlKQotICAgICAgICBjYWNoZWRQYWdlID0gcGFnZUNhY2hlKCktPnRha2UoaGlz
dG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpLCBtX2ZyYW1lLnBhZ2UoKSk7CisgICAgICAgIGNhY2hl
ZFBhZ2UgPSBQYWdlQ2FjaGU6OnNoYXJlZCgpLnRha2UoaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRl
bSgpLCBtX2ZyYW1lLnBhZ2UoKSk7CiAKICAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZUxvYWRp
bmcgJXM6IEFib3V0IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJldmlvdXMgVVJM
ICclcycgdG8gbmV3IFVSTCAnJXMnIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKSA/IG1fZnJhbWUu
ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgp
LmRhdGEoKSA6ICIiLApAQCAtMTc1OCwxMSArMTc1OCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpj
b21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICAgICAgTE9HKE1lbW9yeVByZXNzdXJlLCAi
UHJ1bmluZyBwYWdlIGNhY2hlIGJlY2F1c2UgdW5kZXIgbWVtb3J5IHByZXNzdXJlIGF0OiAlcyIs
IF9fUFJFVFRZX0ZVTkNUSU9OX18pOwogICAgICAgICAgICAgTE9HKFBhZ2VDYWNoZSwgIlBydW5p
bmcgcGFnZSBjYWNoZSB0byAwIGR1ZSB0byBtZW1vcnkgcHJlc3N1cmUiKTsKICAgICAgICAgICAg
IC8vIERvbid0IGNhY2hlIGFueSBwYWdlIGlmIHdlIGFyZSB1bmRlciBtZW1vcnkgcHJlc3N1cmUu
Ci0gICAgICAgICAgICBwYWdlQ2FjaGUoKS0+cHJ1bmVUb0NhcGFjaXR5Tm93KDAsIFBydW5pbmdS
ZWFzb246Ok1lbW9yeVByZXNzdXJlKTsKKyAgICAgICAgICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCku
cHJ1bmVUb0NhcGFjaXR5Tm93KDAsIFBydW5pbmdSZWFzb246Ok1lbW9yeVByZXNzdXJlKTsKICAg
ICAgICAgfSBlbHNlIGlmIChzeXN0ZW1NZW1vcnlMZXZlbCgpIDw9IG1lbW9yeUxldmVsVGhyZXNo
b2xkVG9QcnVuZVBhZ2VDYWNoZSkgewogICAgICAgICAgICAgTE9HKE1lbW9yeVByZXNzdXJlLCAi
UHJ1bmluZyBwYWdlIGNhY2hlIGJlY2F1c2Ugc3lzdGVtIG1lbW9yeSBsZXZlbCBpcyAlZCBhdDog
JXMiLCBzeXN0ZW1NZW1vcnlMZXZlbCgpLCBfX1BSRVRUWV9GVU5DVElPTl9fKTsKLSAgICAgICAg
ICAgIExPRyhQYWdlQ2FjaGUsICJQcnVuaW5nIHBhZ2UgY2FjaGUgdG8gJWQgZHVlIHRvIGxvdyBt
ZW1vcnkgKGxldmVsICVkIGxlc3Mgb3IgZXF1YWwgdG8gJWQgdGhyZXNob2xkKSIsIHBhZ2VDYWNo
ZSgpLT5jYXBhY2l0eSgpIC8gMiwgc3lzdGVtTWVtb3J5TGV2ZWwoKSwgbWVtb3J5TGV2ZWxUaHJl
c2hvbGRUb1BydW5lUGFnZUNhY2hlKTsKLSAgICAgICAgICAgIHBhZ2VDYWNoZSgpLT5wcnVuZVRv
Q2FwYWNpdHlOb3cocGFnZUNhY2hlKCktPmNhcGFjaXR5KCkgLyAyLCBQcnVuaW5nUmVhc29uOjpN
ZW1vcnlQcmVzc3VyZSk7CisgICAgICAgICAgICBMT0coUGFnZUNhY2hlLCAiUHJ1bmluZyBwYWdl
IGNhY2hlIHRvICVkIGR1ZSB0byBsb3cgbWVtb3J5IChsZXZlbCAlZCBsZXNzIG9yIGVxdWFsIHRv
ICVkIHRocmVzaG9sZCkiLCBQYWdlQ2FjaGU6OnNoYXJlZCgpLmNhcGFjaXR5KCkgLyAyLCBzeXN0
ZW1NZW1vcnlMZXZlbCgpLCBtZW1vcnlMZXZlbFRocmVzaG9sZFRvUHJ1bmVQYWdlQ2FjaGUpOwor
ICAgICAgICAgICAgUGFnZUNhY2hlOjpzaGFyZWQoKS5wcnVuZVRvQ2FwYWNpdHlOb3coUGFnZUNh
Y2hlOjpzaGFyZWQoKS5jYXBhY2l0eSgpIC8gMiwgUHJ1bmluZ1JlYXNvbjo6TWVtb3J5UHJlc3N1
cmUpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0xNzcyLDggKzE3NzIsOCBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIC8vIENoZWNrIHRvIHNl
ZSBpZiB3ZSBuZWVkIHRvIGNhY2hlIHRoZSBwYWdlIHdlIGFyZSBuYXZpZ2F0aW5nIGF3YXkgZnJv
bSBpbnRvIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuCiAgICAgLy8gV2UgYXJlIGRvaW5nIHRoaXMg
aGVyZSBiZWNhdXNlIHdlIGtub3cgZm9yIHN1cmUgdGhhdCBhIG5ldyBwYWdlIGlzIGFib3V0IHRv
IGJlIGxvYWRlZC4KICAgICBIaXN0b3J5SXRlbSogaXRlbSA9IGhpc3RvcnkoKS5jdXJyZW50SXRl
bSgpOwotICAgIGlmICghbV9mcmFtZS50cmVlKCkucGFyZW50KCkgJiYgcGFnZUNhY2hlKCktPmNh
bkNhY2hlKG1fZnJhbWUucGFnZSgpKSAmJiAhaXRlbS0+aXNJblBhZ2VDYWNoZSgpKQotICAgICAg
ICBwYWdlQ2FjaGUoKS0+YWRkKGl0ZW0sICptX2ZyYW1lLnBhZ2UoKSk7CisgICAgaWYgKCFtX2Zy
YW1lLnRyZWUoKS5wYXJlbnQoKSAmJiBQYWdlQ2FjaGU6OnNoYXJlZCgpLmNhbkNhY2hlKG1fZnJh
bWUucGFnZSgpKSAmJiAhaXRlbS0+aXNJblBhZ2VDYWNoZSgpKQorICAgICAgICBQYWdlQ2FjaGU6
OnNoYXJlZCgpLmFkZChpdGVtLCAqbV9mcmFtZS5wYWdlKCkpOwogCiAgICAgaWYgKG1fbG9hZFR5
cGUgIT0gRnJhbWVMb2FkVHlwZTo6UmVwbGFjZSkKICAgICAgICAgY2xvc2VPbGREYXRhU291cmNl
cygpOwpAQCAtMzE1OSw3ICszMTU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVu
dERvY3VtZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAv
LyBSZW1lbWJlciB0aGlzIGl0ZW0gc28gd2UgY2FuIHRyYXZlcnNlIGFueSBjaGlsZCBpdGVtcyBh
cyBjaGlsZCBmcmFtZXMgbG9hZAogICAgIGhpc3RvcnkoKS5zZXRQcm92aXNpb25hbEl0ZW0oaXRl
bSk7CiAKLSAgICBpZiAoQ2FjaGVkUGFnZSogY2FjaGVkUGFnZSA9IHBhZ2VDYWNoZSgpLT5nZXQo
aXRlbSwgbV9mcmFtZS5wYWdlKCkpKSB7CisgICAgaWYgKENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2Ug
PSBQYWdlQ2FjaGU6OnNoYXJlZCgpLmdldChpdGVtLCBtX2ZyYW1lLnBhZ2UoKSkpIHsKICAgICAg
ICAgYXV0byBkb2N1bWVudExvYWRlciA9IGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCk7CiAg
ICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKE5hdmlnYXRpb25BY3Rp
b24oZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKSwgbG9hZFR5cGUsIGZhbHNlKSk7CiAgICAgICAg
IGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggYjcx
YzViNTNkZDU3ZTY4Nzc5OGNhZjM0MTU1YjBjYTEyNGM1YzMzNC4uOWI4M2E4NDdkZDA1MDhhN2Fh
NTZkNTk4YTMxNDQ4YTY1MzUxYjhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0hpc3RvcnlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9y
eUNvbnRyb2xsZXIuY3BwCkBAIC0yMzUsMTAgKzIzNSwxMCBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSgpCiB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbnZh
bGlkYXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKCkKIHsKICAgICAvLyBXaGVuIHdlIGFyZSBwcmUt
Y29tbWl0LCB0aGUgY3VycmVudEl0ZW0gaXMgd2hlcmUgYW55IHBhZ2UgY2FjaGUgZGF0YSByZXNp
ZGVzLgotICAgIGlmICghcGFnZUNhY2hlKCktPmdldChjdXJyZW50SXRlbSgpLCBtX2ZyYW1lLnBh
Z2UoKSkpCisgICAgaWYgKCFQYWdlQ2FjaGU6OnNoYXJlZCgpLmdldChjdXJyZW50SXRlbSgpLCBt
X2ZyYW1lLnBhZ2UoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxD
YWNoZWRQYWdlPiBjYWNoZWRQYWdlID0gcGFnZUNhY2hlKCktPnRha2UoY3VycmVudEl0ZW0oKSwg
bV9mcmFtZS5wYWdlKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBjYWNoZWRQ
YWdlID0gUGFnZUNhY2hlOjpzaGFyZWQoKS50YWtlKGN1cnJlbnRJdGVtKCksIG1fZnJhbWUucGFn
ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgZ3JvdGVzcXVlIGhhY2sgdG8gZml4IDxy
ZGFyOi8vcHJvYmxlbS80MDU5MDU5PiBDcmFzaCBpbiBSZW5kZXJGbG93OjpkZXRhY2gKICAgICAv
LyBTb21laG93IHRoZSBQYWdlU3RhdGUgb2JqZWN0IGlzIG5vdCBwcm9wZXJseSB1cGRhdGVkLCBh
bmQgaXMgaG9sZGluZyBvbnRvIGEgc3RhbGUgZG9jdW1lbnQuCkBAIC0zMzQsNyArMzM0LDcgQEAg
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVsb2FkKCkKICNlbmRpZgogCiAgICAg
aWYgKG1fY3VycmVudEl0ZW0pIHsKLSAgICAgICAgcGFnZUNhY2hlKCktPnJlbW92ZShtX2N1cnJl
bnRJdGVtLmdldCgpKTsKKyAgICAgICAgUGFnZUNhY2hlOjpzaGFyZWQoKS5yZW1vdmUobV9jdXJy
ZW50SXRlbS5nZXQoKSk7CiAgICAgCiAgICAgICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmxvYWRU
eXBlKCkgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkIHx8IG1fZnJhbWUubG9hZGVyKCkubG9hZFR5
cGUoKSA9PSBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luKQogICAgICAgICAgICAgc2F2
ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKG1fY3VycmVudEl0ZW0uZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA4ZWRhZmJmNzdmODk3ZmMwNmYyOGU2Njc4NzRkZmRiMDZk
OTA4MjgxLi44MzE0YzlhNGUzY2ViZGM2YjU3YjVkMzA0ZjA0NGZhMjg2ZmI2NjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcApAQCAtOTg5LDcgKzk4OSw3IEBAIHZvaWQgRnJhbWU6OnNldFBhZ2VBbmRU
ZXh0Wm9vbUZhY3RvcnMoZmxvYXQgcGFnZVpvb21GYWN0b3IsIGZsb2F0IHRleHRab29tRmFjdG9y
CiAgICAgfQogCiAgICAgaWYgKGlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHBhZ2VDYWNoZSgpLT5t
YXJrUGFnZXNGb3JGdWxsU3R5bGVSZWNhbGMocGFnZSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2hh
cmVkKCkubWFya1BhZ2VzRm9yRnVsbFN0eWxlUmVjYWxjKHBhZ2UpOwogfQogCiBmbG9hdCBGcmFt
ZTo6ZnJhbWVTY2FsZUZhY3RvcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA4YzMxOGIy
ZmJkOWNjZDU4NWUzOWM4Y2ZkOWM5MGM3MmQ1YTgzYzVkLi43YzUzNWQwNTcyMTJjYmM0YWU3Zjdk
NjQyMzBmMjdmZWNhNDY1NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTgzOSw5ICs4MzksOSBA
QCB2b2lkIFBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogICAg
IHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogCiAgICAgbWFpbkZyYW1lKCkuZGV2
aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7Ci0gICAgcGFnZUNhY2hlKCktPm1hcmtQYWdl
c0ZvckRldmljZVNjYWxlQ2hhbmdlZCh0aGlzKTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLm1h
cmtQYWdlc0ZvckRldmljZVNjYWxlQ2hhbmdlZCh0aGlzKTsKIAotICAgIHBhZ2VDYWNoZSgpLT5t
YXJrUGFnZXNGb3JGdWxsU3R5bGVSZWNhbGModGhpcyk7CisgICAgUGFnZUNhY2hlOjpzaGFyZWQo
KS5tYXJrUGFnZXNGb3JGdWxsU3R5bGVSZWNhbGModGhpcyk7CiAgICAgR3JhcGhpY3NDb250ZXh0
Ojp1cGRhdGVEb2N1bWVudE1hcmtlclJlc291cmNlcygpOwogCiAgICAgbWFpbkZyYW1lKCkucGFn
ZU92ZXJsYXlDb250cm9sbGVyKCkuZGlkQ2hhbmdlRGV2aWNlU2NhbGVGYWN0b3IoKTsKQEAgLTky
MSw3ICs5MjEsNyBAQCB2b2lkIFBhZ2U6OnNldFBhZ2luYXRpb24oY29uc3QgUGFnaW5hdGlvbiYg
cGFnaW5hdGlvbikKICAgICBtX3BhZ2luYXRpb24gPSBwYWdpbmF0aW9uOwogCiAgICAgc2V0TmVl
ZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7Ci0gICAgcGFnZUNhY2hlKCktPm1hcmtQYWdlc0Zv
ckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLm1hcmtQYWdl
c0ZvckZ1bGxTdHlsZVJlY2FsYyh0aGlzKTsKIH0KIAogdW5zaWduZWQgUGFnZTo6cGFnZUNvdW50
KCkgY29uc3QKQEAgLTE2NjEsNyArMTY2MSw3IEBAIHZvaWQgUGFnZTo6c2V0VmlzaXRlZExpbmtT
dG9yZShSZWY8VmlzaXRlZExpbmtTdG9yZT4mJiB2aXNpdGVkTGlua1N0b3JlKQogICAgIG1fdmlz
aXRlZExpbmtTdG9yZS0+YWRkUGFnZSgqdGhpcyk7CiAKICAgICBpbnZhbGlkYXRlU3R5bGVzRm9y
QWxsTGlua3MoKTsKLSAgICBwYWdlQ2FjaGUoKS0+bWFya1BhZ2VzRm9yRnVsbFN0eWxlUmVjYWxj
KHRoaXMpOworICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkubWFya1BhZ2VzRm9yRnVsbFN0eWxlUmVj
YWxjKHRoaXMpOwogfQogCiBTZXNzaW9uSUQgUGFnZTo6c2Vzc2lvbklEKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCBlOTY2NWE0ODQ2MGU2ZjNmNmYwMWY1OGMwNmIwZjhk
Mjk5OTljMDAyLi5kYWMyNmYyNzhkN2ExNzUyMWYyOWQ3ZmEyY2QxMWM1NDYyZTI5NGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYWdlR3Jv
dXA6OmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKQogewogICAgIGZvciAoYXV0byBpdCA9IG1f
cGFnZXMuYmVnaW4oKSwgZW5kID0gbV9wYWdlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQogICAg
ICAgICAoKml0KS0+Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCgpOwotICAgIHBhZ2VDYWNoZSgp
LT5tYXJrUGFnZXNGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CisgICAgUGFnZUNhY2hl
OjpzaGFyZWQoKS5tYXJrUGFnZXNGb3JDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiB9CiAK
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXMqIFBhZ2VHcm91cDo6Y2FwdGlvblByZWZlcmVuY2VzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggODliNDMyMzNlNWRjYmQ2NzYwMTA3M2Y4MTg4
NTZhODgwZDEwNWRhMy4uOTZmNjhkM2Y5N2M4MzY2MGVhNTEzMzgwYzQyZWQ3OGEyZTg4ZjU1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIFNldHRp
bmdzOjpzZXRVc2VzUGFnZUNhY2hlKGJvb2wgdXNlc1BhZ2VDYWNoZSkKICAgICAgICAgaW50IGZp
cnN0ID0gLW1fcGFnZS0+YmFja0ZvcndhcmQoKS5iYWNrQ291bnQoKTsKICAgICAgICAgaW50IGxh
c3QgPSBtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuZm9yd2FyZENvdW50KCk7CiAgICAgICAgIGZvciAo
aW50IGkgPSBmaXJzdDsgaSA8PSBsYXN0OyBpKyspCi0gICAgICAgICAgICBwYWdlQ2FjaGUoKS0+
cmVtb3ZlKG1fcGFnZS0+YmFja0ZvcndhcmQoKS5pdGVtQXRJbmRleChpKSk7CisgICAgICAgICAg
ICBQYWdlQ2FjaGU6OnNoYXJlZCgpLnJlbW92ZShtX3BhZ2UtPmJhY2tGb3J3YXJkKCkuaXRlbUF0
SW5kZXgoaSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXggN2Q3MDIyZDk1YTFlNTEyZjEwY2EyZjU4ODY5
NDQxODQyODVlOTc4Mi4uNWNkMjEwNTY0N2M0MjQ5MjExNmM1NDIyMGI0NmQ2N2Y2ZDEyYTJhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
Y3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVh
c2VDcml0aWNhbE1lbW9yeSgpCiAgICAgICAgIFJlbGllZkxvZ2dlciBsb2coIkVtcHR5IHRoZSBQ
YWdlQ2FjaGUiKTsKICAgICAgICAgLy8gUmlnaHQgbm93LCB0aGUgb25seSByZWFzb24gd2UgY2Fs
bCByZWxlYXNlIGNyaXRpY2FsIG1lbW9yeSB3aGlsZSBub3QgdW5kZXIgbWVtb3J5IHByZXNzdXJl
IGlzIGlmIHRoZSBwcm9jZXNzIGlzIGFib3V0IHRvIGJlIHN1c3BlbmRlZC4KICAgICAgICAgUHJ1
bmluZ1JlYXNvbiBwcnVuaW5nUmVhc29uID0gbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkuaXNVbmRl
ck1lbW9yeVByZXNzdXJlKCkgPyBQcnVuaW5nUmVhc29uOjpNZW1vcnlQcmVzc3VyZSA6IFBydW5p
bmdSZWFzb246OlByb2Nlc3NTdXNwZW5kZWQ7Ci0gICAgICAgIHBhZ2VDYWNoZSgpLT5wcnVuZVRv
Q2FwYWNpdHlOb3coMCwgcHJ1bmluZ1JlYXNvbik7CisgICAgICAgIFBhZ2VDYWNoZTo6c2hhcmVk
KCkucHJ1bmVUb0NhcGFjaXR5Tm93KDAsIHBydW5pbmdSZWFzb24pOwogICAgIH0KIAogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KaW5k
ZXggMDc3YzkwMzY2ZTBiYWNlNDU2NTk1YWE2YzhjOTdmYzcyNTg3NWQyZS4uODc1N2M4YzIxZTAz
YzZiNGVlNmI5NTUxZTQ5NmVkNGRiNTdmZmRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
SGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KQEAgLTM1NSw3ICszNTUsNyBAQCAtICh2b2lk
KXNldFBhZ2VDYWNoZVNpemU6KE5TVUludGVnZXIpc2l6ZQogCiAtIChOU1VJbnRlZ2VyKXBhZ2VD
YWNoZVNpemUKIHsKLSAgICByZXR1cm4gW2tpdChjb3JlKHNlbGYpLT5wYWdlKCkpIHVzZXNQYWdl
Q2FjaGVdID8gcGFnZUNhY2hlKCktPmNhcGFjaXR5KCkgOiAwOworICAgIHJldHVybiBba2l0KGNv
cmUoc2VsZiktPnBhZ2UoKSkgdXNlc1BhZ2VDYWNoZV0gPyBQYWdlQ2FjaGU6OnNoYXJlZCgpLmNh
cGFjaXR5KCkgOiAwOwogfQogCiAtIChpbnQpYmFja0xpc3RDb3VudApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KaW5kZXggZjRhYjE2ZTFlY2UxNWU1ZGVjZDgy
ZmU2ZjU5NjEzNmJjODc3ODk2OS4uNTYzZWM4ZTk5MDZkOGFkODE1Njc5MTY2MWJmNDA5N2U1ZGI5
MWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGlj
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBA
IC0yMjQsMTIgKzIyNCwxMiBAQCArICh2b2lkKXJldHVybkZyZWVNZW1vcnlUb1N5c3RlbQogCiAr
IChpbnQpY2FjaGVkUGFnZUNvdW50CiB7Ci0gICAgcmV0dXJuIHBhZ2VDYWNoZSgpLT5wYWdlQ291
bnQoKTsKKyAgICByZXR1cm4gUGFnZUNhY2hlOjpzaGFyZWQoKS5wYWdlQ291bnQoKTsKIH0KIAog
KyAoaW50KWNhY2hlZEZyYW1lQ291bnQKIHsKLSAgICByZXR1cm4gcGFnZUNhY2hlKCktPmZyYW1l
Q291bnQoKTsKKyAgICByZXR1cm4gUGFnZUNhY2hlOjpzaGFyZWQoKS5mcmFtZUNvdW50KCk7CiB9
CiAKIC8vIERlcHJlY2F0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLm1tCmluZGV4IGEwMGZjMDY1YjA3Y2VjMWQ5YTYz
NmQzMDZlZWE3NTY4YTkzNGI1NDYuLjg2NGRkNGUwM2NjMDVlMDU2ZTM4OTUzZDZkZDExNTZlMzg0
Nzc2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZp
c2l0ZWRMaW5rU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViVmlzaXRlZExpbmtTdG9yZS5tbQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFdlYlZpc2l0ZWRM
aW5rU3RvcmU6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiB7CiAgICAgZm9yIChhdXRvJiB2aXNp
dGVkTGlua1N0b3JlIDogdmlzaXRlZExpbmtTdG9yZXMoKSkKICAgICAgICAgdmlzaXRlZExpbmtT
dG9yZS0+cmVtb3ZlVmlzaXRlZExpbmtIYXNoZXMoKTsKLSAgICBwYWdlQ2FjaGUoKS0+bWFya1Bh
Z2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CisgICAgUGFnZUNhY2hlOjpzaGFyZWQoKS5t
YXJrUGFnZXNGb3JWaXN0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKIH0KIAogdm9pZCBXZWJWaXNpdGVk
TGlua1N0b3JlOjphZGRWaXNpdGVkTGluayhOU1N0cmluZyAqdXJsU3RyaW5nKQpAQCAtMTAzLDcg
KzEwMyw3IEBAIHZvaWQgV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlVmlzaXRlZExpbmsoTlNT
dHJpbmcgKnVybFN0cmluZykKICAgICBtX3Zpc2l0ZWRMaW5rSGFzaGVzLnJlbW92ZShsaW5rSGFz
aCk7CiAKICAgICBpbnZhbGlkYXRlU3R5bGVzRm9yTGluayhsaW5rSGFzaCk7Ci0gICAgcGFnZUNh
Y2hlKCktPm1hcmtQYWdlc0ZvclZpc3RlZExpbmtTdHlsZVJlY2FsYygpOworICAgIFBhZ2VDYWNo
ZTo6c2hhcmVkKCkubWFya1BhZ2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CiB9CiAKIGJv
b2wgV2ViVmlzaXRlZExpbmtTdG9yZTo6aXNMaW5rVmlzaXRlZChQYWdlJiBwYWdlLCBMaW5rSGFz
aCBsaW5rSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJp
YnV0ZVVSTCkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFdlYlZpc2l0ZWRMaW5rU3RvcmU6OmFk
ZFZpc2l0ZWRMaW5rSGFzaChMaW5rSGFzaCBsaW5rSGFzaCkKICAgICBtX3Zpc2l0ZWRMaW5rSGFz
aGVzLmFkZChsaW5rSGFzaCk7CiAKICAgICBpbnZhbGlkYXRlU3R5bGVzRm9yTGluayhsaW5rSGFz
aCk7Ci0gICAgcGFnZUNhY2hlKCktPm1hcmtQYWdlc0ZvclZpc3RlZExpbmtTdHlsZVJlY2FsYygp
OworICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkubWFya1BhZ2VzRm9yVmlzdGVkTGlua1N0eWxlUmVj
YWxjKCk7CiB9CiAKIHZvaWQgV2ViVmlzaXRlZExpbmtTdG9yZTo6cmVtb3ZlVmlzaXRlZExpbmtI
YXNoZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDBjYzFiZDQxNjU0
YTEyZDBlNWI3ZjcxNzY1ODA0NDIwOTBjYTdiYmYuLjkwYmYwNmVkZWM0NDMwYTk4MzBlM2ZkMzYy
YzY1ZWI0YzdlZDIzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTc5
MzUsOSArNzkzNSw5IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2Fj
aGVNb2RlbAogCiAgICAgbWVtb3J5Q2FjaGUoKS5zZXRDYXBhY2l0aWVzKGNhY2hlTWluRGVhZENh
cGFjaXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgY2FjaGVUb3RhbENhcGFjaXR5KTsKICAgICBt
ZW1vcnlDYWNoZSgpLnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVhZERlY29k
ZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7Ci0gICAgcGFnZUNhY2hlKCktPnNldENhcGFjaXR5KHBh
Z2VDYWNoZUNhcGFjaXR5KTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLnNldENhcGFjaXR5KHBh
Z2VDYWNoZUNhcGFjaXR5KTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgcGFnZUNhY2hlKCktPnNl
dFNob3VsZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgp
LnNldFNob3VsZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKICAgICBuc3VybENhY2hlTWVtb3J5
Q2FwYWNpdHkgPSBzdGQ6Om1heChuc3VybENhY2hlTWVtb3J5Q2FwYWNpdHksIFtuc3VybENhY2hl
IG1lbW9yeUNhcGFjaXR5XSk7CiAgICAgQ0ZVUkxDYWNoZVJlZiBjZkNhY2hlOwogICAgIGlmIChb
bnN1cmxDYWNoZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9DRlVSTENhY2hlKV0gJiYg
KGNmQ2FjaGUgPSBbbnN1cmxDYWNoZSBfQ0ZVUkxDYWNoZV0pKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDMyMjcxZjk3ZGFhNzIzOTBkY2ZlZWE3MDgyNDMxNjZl
YjRiY2M2Y2IuLmI0MzA3MWMyNTI4ZGE2ZTc4ZThiZDEyNzE1MTBmYzE1N2I0YTczN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTMyNyw3ICszMjcsNyBAQCBI
UkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRQYWdlQ291bnQoSU5UKiBjb3VudCkKICAg
ICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKmNvdW50ID0g
cGFnZUNhY2hlKCktPnBhZ2VDb3VudCgpOworICAgICpjb3VudCA9IFBhZ2VDYWNoZTo6c2hhcmVk
KCkucGFnZUNvdW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTMzNiw2ICszMzYsNiBA
QCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRGcmFtZUNvdW50KElOVCogY291bnQp
CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgICpjb3Vu
dCA9IHBhZ2VDYWNoZSgpLT5mcmFtZUNvdW50KCk7CisgICAgKmNvdW50ID0gUGFnZUNhY2hlOjpz
aGFyZWQoKS5mcmFtZUNvdW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuY3Bw
CmluZGV4IDUwODZmZmE3ODIxNTUyZGYxODBhNmU3ZTBkZWRlOGFjOTY4ZDcyYjcuLjBhMTk1YWYx
MjE5ZDM0MTk0NzMxM2QyYzBhOTU4ZTAwMGQyZTJmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIHZvaWQgV2ViVmlzaXRlZExpbmtTdG9yZTo6c2V0U2hvdWxkVHJhY2tWaXNp
dGVkTGlua3MoYm9vbCBzaG91bGRUcmFja1Zpc2l0ZWRMaW5rCiB2b2lkIFdlYlZpc2l0ZWRMaW5r
U3RvcmU6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiB7CiAgICAgc2hhcmVkKCkucmVtb3ZlVmlz
aXRlZExpbmtIYXNoZXMoKTsKLSAgICBwYWdlQ2FjaGUoKS0+bWFya1BhZ2VzRm9yVmlzdGVkTGlu
a1N0eWxlUmVjYWxjKCk7CisgICAgUGFnZUNhY2hlOjpzaGFyZWQoKS5tYXJrUGFnZXNGb3JWaXN0
ZWRMaW5rU3R5bGVSZWNhbGMoKTsKIH0KIAogdm9pZCBXZWJWaXNpdGVkTGlua1N0b3JlOjphZGRW
aXNpdGVkTGluayhjb25zdCBTdHJpbmcmIHVybFN0cmluZykKQEAgLTExNiw3ICsxMTYsNyBAQCB2
b2lkIFdlYlZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaChMaW5rSGFzaCBsaW5r
SGFzaCkKICAgICBtX3Zpc2l0ZWRMaW5rSGFzaGVzLmFkZChsaW5rSGFzaCk7CiAKICAgICBpbnZh
bGlkYXRlU3R5bGVzRm9yTGluayhsaW5rSGFzaCk7Ci0gICAgcGFnZUNhY2hlKCktPm1hcmtQYWdl
c0ZvclZpc3RlZExpbmtTdHlsZVJlY2FsYygpOworICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkubWFy
a1BhZ2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CiB9CiAKIHZvaWQgV2ViVmlzaXRlZExp
bmtTdG9yZTo6cmVtb3ZlVmlzaXRlZExpbmtIYXNoZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCA1NzY0NzI0ZTZhNTM1NDU4NWU2OGJhYjA2NmNiMjk5Mzg2NTc1MWMzLi4wZjE3ZWRhMzI5ZTJm
NWI2ZWIwOTY2OTBjZTNiZjdjNmIxOWY0MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtNjc1
LDcgKzY3NSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGVsIGNh
Y2hlTW9kZWwpCiAKICAgICBtZW1vcnlDYWNoZSgpLnNldENhcGFjaXRpZXMoY2FjaGVNaW5EZWFk
Q2FwYWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBjYWNoZVRvdGFsQ2FwYWNpdHkpOwogICAg
IG1lbW9yeUNhY2hlKCkuc2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChkZWFkRGVj
b2RlZERhdGFEZWxldGlvbkludGVydmFsKTsKLSAgICBwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHko
cGFnZUNhY2hlQ2FwYWNpdHkpOworICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkuc2V0Q2FwYWNpdHko
cGFnZUNhY2hlQ2FwYWNpdHkpOwogCiAjaWYgVVNFKENGTkVUV09SSykKICAgICAvLyBEb24ndCBz
aHJpbmsgYSBiaWcgZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBjaHVybi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1Rh
YmxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlz
aXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDhlMzc0NjJjNDVjZWJkMTc4MTU2OTc2
YmFiNGM0YjIzN2QyYzdjMTUuLjllNmFkY2M5MzQzZWNiMDIyMzNkNjYxMTRlZTM4OGQ3NzNmNDFh
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcApAQCAtOTcsMjAgKzk3LDIwIEBA
IHZvaWQgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFibGUoY29u
c3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmCiAgICAgbV92aXNpdGVkTGlua1RhYmxlLnNldFNoYXJl
ZE1lbW9yeShzaGFyZWRNZW1vcnkucmVsZWFzZSgpKTsKIAogICAgIGludmFsaWRhdGVTdHlsZXNG
b3JBbGxMaW5rcygpOwotICAgIHBhZ2VDYWNoZSgpLT5tYXJrUGFnZXNGb3JWaXN0ZWRMaW5rU3R5
bGVSZWNhbGMoKTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLm1hcmtQYWdlc0ZvclZpc3RlZExp
bmtTdHlsZVJlY2FsYygpOwogfQogCiB2b2lkIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjp2
aXNpdGVkTGlua1N0YXRlQ2hhbmdlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6TGlua0hhc2g+JiBs
aW5rSGFzaGVzKQogewogICAgIGZvciAoYXV0byBsaW5rSGFzaCA6IGxpbmtIYXNoZXMpCiAgICAg
ICAgIGludmFsaWRhdGVTdHlsZXNGb3JMaW5rKGxpbmtIYXNoKTsKLSAgICBwYWdlQ2FjaGUoKS0+
bWFya1BhZ2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CisgICAgUGFnZUNhY2hlOjpzaGFy
ZWQoKS5tYXJrUGFnZXNGb3JWaXN0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKIH0KIAogdm9pZCBWaXNp
dGVkTGlua1RhYmxlQ29udHJvbGxlcjo6YWxsVmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQoKQogewog
ICAgIGludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpOwotICAgIHBhZ2VDYWNoZSgpLT5tYXJr
UGFnZXNGb3JWaXN0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgp
Lm1hcmtQYWdlc0ZvclZpc3RlZExpbmtTdHlsZVJlY2FsYygpOwogfQogCiB2b2lkIFZpc2l0ZWRM
aW5rVGFibGVDb250cm9sbGVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQpAQCAtMTE4LDcgKzEx
OCw3IEBAIHZvaWQgVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnJlbW92ZUFsbFZpc2l0ZWRM
aW5rcygpCiAgICAgbV92aXNpdGVkTGlua1RhYmxlLmNsZWFyKCk7CiAKICAgICBpbnZhbGlkYXRl
U3R5bGVzRm9yQWxsTGlua3MoKTsKLSAgICBwYWdlQ2FjaGUoKS0+bWFya1BhZ2VzRm9yVmlzdGVk
TGlua1N0eWxlUmVjYWxjKCk7CisgICAgUGFnZUNhY2hlOjpzaGFyZWQoKS5tYXJrUGFnZXNGb3JW
aXN0ZWRMaW5rU3R5bGVSZWNhbGMoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCA2NTIwNDQwODZlMTkxMTRhYmY0MWYwNmMyOGQwZTFj
NTZmYTExOTE0Li5hMTc2MTNiMjEzNjcwMmNiM2YzZGNkYWM3ZTBkNjQzYzMwNTk1YzlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjpyZW1vdmVJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKICAgICBpZiAoIWl0
ZW0pCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgcGFnZUNhY2hlKCktPnJlbW92ZShp
dGVtLmdldCgpKTsKKyAgICBQYWdlQ2FjaGU6OnNoYXJlZCgpLnJlbW92ZShpdGVtLmdldCgpKTsK
ICAgICBXZWJDb3JlOjpQYWdlOjpjbGVhclByZXZpb3VzSXRlbUZyb21BbGxQYWdlcyhpdGVtLmdl
dCgpKTsKICAgICBoaXN0b3J5SXRlbVRvSURNYXAoKS5yZW1vdmUoaXRlbSk7CiB9CkBAIC0yMTgs
NyArMjE4LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2xvc2UoKQogewogICAg
IEhhc2hTZXQ8dWludDY0X3Q+OjppdGVyYXRvciBlbmQgPSBtX2Fzc29jaWF0ZWRJdGVtSURzLmVu
ZCgpOwogICAgIGZvciAoSGFzaFNldDx1aW50NjRfdD46Oml0ZXJhdG9yIGkgPSBtX2Fzc29jaWF0
ZWRJdGVtSURzLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpCi0gICAgICAgIFdlYkNvcmU6OnBhZ2VD
YWNoZSgpLT5yZW1vdmUoaXRlbUZvcklEKCppKSk7CisgICAgICAgIFdlYkNvcmU6OlBhZ2VDYWNo
ZTo6c2hhcmVkKCkucmVtb3ZlKGl0ZW1Gb3JJRCgqaSkpOwogCiAgICAgbV9hc3NvY2lhdGVkSXRl
bUlEcy5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApp
bmRleCBjN2MxODdlZjIwNzM0MDg5OGQ4ZDk0YjAzZDMxZDdlNzRmZjk1Y2IxLi44YjhiODg0MmEz
MmY5NDQ5YjVmZjVkZTM0YjI5YmQ0NTUzZmFkZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTExMTYsNyArMTExNiw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
c2V0VGV4dENoZWNrZXJTdGF0ZShjb25zdCBUZXh0Q2hlY2tlclN0YXRlJiB0ZXh0Q2hlY2tlclN0
YXRlKQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlbGVhc2VQYWdlQ2FjaGUoKQogewotICAgIHBhZ2VD
YWNoZSgpLT5wcnVuZVRvQ2FwYWNpdHlOb3coMCwgUHJ1bmluZ1JlYXNvbjo6TWVtb3J5UHJlc3N1
cmUpOworICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkucHJ1bmVUb0NhcGFjaXR5Tm93KDAsIFBydW5p
bmdSZWFzb246Ok1lbW9yeVByZXNzdXJlKTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
aW5kZXggMTEzZGM5YWQyODc0N2RkMzFiNzhlMDk0NzY1NWMwY2NlNDZmYTM1Ny4uODhlNGQ5ODQw
MzhhODM3ODFiMGI3YWM3ZTM1ODUyNzdhYzFiNGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTExNSw3ICsxMTUsNyBA
QCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNhY2hl
TW9kZWwpCiAKICAgICBtZW1vcnlDYWNoZSgpLnNldENhcGFjaXRpZXMoY2FjaGVNaW5EZWFkQ2Fw
YWNpdHksIGNhY2hlTWF4RGVhZENhcGFjaXR5LCBjYWNoZVRvdGFsQ2FwYWNpdHkpOwogICAgIG1l
bW9yeUNhY2hlKCkuc2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbChkZWFkRGVjb2Rl
ZERhdGFEZWxldGlvbkludGVydmFsKTsKLSAgICBwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkocGFn
ZUNhY2hlQ2FwYWNpdHkpOworICAgIFBhZ2VDYWNoZTo6c2hhcmVkKCkuc2V0Q2FwYWNpdHkocGFn
ZUNhY2hlQ2FwYWNpdHkpOwogCiAgICAgTlNVUkxDYWNoZSAqbnN1cmxDYWNoZSA9IFtOU1VSTENh
Y2hlIHNoYXJlZFVSTENhY2hlXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
c291cC9XZWJQcm9jZXNzU291cC5jcHAKaW5kZXggN2Q4YTY4YWQ0ZDZhZmIwYjZhZjYyZjJjM2U2
MjU4MjE2YjEyZjdjZC4uYmNjN2FkNjE2MTJiNzE4OTA1MjY5ZGNlNTg4Mjc0NDYwZWExMzJjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAu
Y3BwCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2Fj
aGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgV2ViQ29yZTo6bWVtb3J5Q2FjaGUo
KS5zZXREaXNhYmxlZChjYWNoZU1vZGVsID09IENhY2hlTW9kZWxEb2N1bWVudFZpZXdlcik7CiAg
ICAgV2ViQ29yZTo6bWVtb3J5Q2FjaGUoKS5zZXRDYXBhY2l0aWVzKGNhY2hlTWluRGVhZENhcGFj
aXR5LCBjYWNoZU1heERlYWRDYXBhY2l0eSwgY2FjaGVUb3RhbENhcGFjaXR5KTsKICAgICBXZWJD
b3JlOjptZW1vcnlDYWNoZSgpLnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoZGVh
ZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCk7Ci0gICAgV2ViQ29yZTo6cGFnZUNhY2hlKCkt
PnNldENhcGFjaXR5KHBhZ2VDYWNoZUNhcGFjaXR5KTsKKyAgICBXZWJDb3JlOjpQYWdlQ2FjaGU6
OnNoYXJlZCgpLnNldENhcGFjaXR5KHBhZ2VDYWNoZUNhcGFjaXR5KTsKIAogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBXZWJDb3JlOjpwYWdlQ2FjaGUoKS0+c2V0U2hvdWxkQ2xlYXJCYWNraW5nU3Rv
cmVzKHRydWUpOworICAgIFdlYkNvcmU6OlBhZ2VDYWNoZTo6c2hhcmVkKCkuc2V0U2hvdWxkQ2xl
YXJCYWNraW5nU3RvcmVzKHRydWUpOwogI2VuZGlmCiAKICAgICBpZiAoIXVzZXNOZXR3b3JrUHJv
Y2VzcygpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>