<?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>176894</bug_id>
          
          <creation_ts>2017-09-14 01:11:35 -0700</creation_ts>
          <short_desc>[WinCairo] Add WTF files for wincairo webkit</short_desc>
          <delta_ts>2017-11-15 13:06:49 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174003</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yousuke Kimoto">Yousuke.Kimoto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1348694</commentid>
    <comment_count>0</comment_count>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-09-14 01:11:35 -0700</bug_when>
    <thetext>Add WTF files for wincairo webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355664</commentid>
    <comment_count>1</comment_count>
      <attachid>322481</attachid>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-02 18:16:28 -0700</bug_when>
    <thetext>Created attachment 322481
[PATCH] Add WTF files for WinCairo WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355689</commentid>
    <comment_count>2</comment_count>
      <attachid>322481</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-02 21:18:10 -0700</bug_when>
    <thetext>Comment on attachment 322481
[PATCH] Add WTF files for WinCairo WebKit

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

&gt; Source/WTF/wtf/WorkQueue.h:28
&gt; -#ifndef WorkQueue_h
&gt; -#define WorkQueue_h
&gt; +#pragma once

Unfortunately we need to keep the c-style guard because of inconsistent including in the cocoa ports for now.

&gt; Source/WTF/wtf/threads/BinarySemaphore.h:51
&gt; +#if PLATFORM(WIN)
&gt; +    HANDLE m_event;

I think it&apos;s a bad idea to have such a platform-dependent difference in design of something like BinarySemaphore.  What&apos;s wrong with Mutex and ThreadCondition?

&gt; Source/WTF/wtf/threads/win/BinarySemaphoreWin.cpp:39
&gt; +BinarySemaphore::~BinarySemaphore()
&gt; +{
&gt; +    ::CloseHandle(m_event);

The Win32 API has quite a bit of overhead for things like this.  We have our custom WTF types to make them thin and lightweight.  c++11 added many things we can use instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356848</commentid>
    <comment_count>3</comment_count>
      <attachid>322784</attachid>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-04 22:29:35 -0700</bug_when>
    <thetext>Created attachment 322784
[PATCH] Add WTF files for WinCairo WebKit

Thank you for your review.

(In reply to Alex Christensen from comment #2)
&gt; &gt; Source/WTF/wtf/WorkQueue.h:28
&gt; &gt; -#ifndef WorkQueue_h
&gt; &gt; -#define WorkQueue_h
&gt; &gt; +#pragma once
&gt; 
&gt; Unfortunately we need to keep the c-style guard because of inconsistent including in the cocoa ports for now.
Should only be WorkQueue.h considered for cocoa ports to keep c-style guard?
I&apos;m interested in which file should use the guard to avoid the inconsistency.

&gt; &gt; Source/WTF/wtf/threads/BinarySemaphore.h:51
&gt; &gt; +#if PLATFORM(WIN)
&gt; &gt; +    HANDLE m_event;
&gt; 
&gt; I think it&apos;s a bad idea to have such a platform-dependent difference in
&gt; design of something like BinarySemaphore.  What&apos;s wrong with Mutex and
&gt; ThreadCondition?
&gt; 
&gt; &gt; Source/WTF/wtf/threads/win/BinarySemaphoreWin.cpp:39
&gt; &gt; +BinarySemaphore::~BinarySemaphore()
&gt; &gt; +{
&gt; &gt; +    ::CloseHandle(m_event);
&gt; 
&gt; The Win32 API has quite a bit of overhead for things like this.  We have our
&gt; custom WTF types to make them thin and lightweight.  c++11 added many things
&gt; we can use instead.
I fixed this point, WTF/wtf/BinarySemaphore.cpp is used in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357570</commentid>
    <comment_count>4</comment_count>
      <attachid>323012</attachid>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-06 06:09:13 -0700</bug_when>
    <thetext>Created attachment 323012
[PATCH] Add WTF files for WinCairo WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357574</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-06 06:12:15 -0700</bug_when>
    <thetext>Attachment 323012 did not pass style-queue:


ERROR: Source/WTF/wtf/win/WorkItemWin.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/WorkItemWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357576</commentid>
    <comment_count>6</comment_count>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-06 06:59:47 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #5)
&gt; Attachment 323012 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WTF/wtf/win/WorkItemWin.cpp:28:  Found other header before a
&gt; header this file implements. Should be: config.h, primary header, blank
&gt; line, and then alphabetically sorted.  [build/include_order] [4]
&gt; ERROR: Source/WTF/wtf/win/WorkItemWin.cpp:29:  Alphabetical sorting problem.
&gt; [build/include_order] [4]
&gt; Total errors found: 2 in 6 files

It is to avoid a redeclaration error by referring WorkItemWin.h where exists in the forwarding header directory and the WTF directory. The method just mimics &quot;Source/WTF/wtf/CrossThreadCopier.cpp&quot;.

If this workaround is acceptable, I&apos;d like to file a bug that these errors are false positives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357663</commentid>
    <comment_count>7</comment_count>
      <attachid>323012</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-06 10:52:56 -0700</bug_when>
    <thetext>Comment on attachment 323012
[PATCH] Add WTF files for WinCairo WebKit

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

&gt; Source/WTF/wtf/WorkQueue.h:114
&gt; +    HashMap&lt;HANDLE, RefPtr&lt;HandleWorkItem&gt; &gt; m_items;

&gt;&gt; instead of &gt; &gt;
Also, could the value be made a Ref?

&gt; Source/WTF/wtf/win/WorkQueueWin.cpp:76
&gt; +    unregisterWaitAndDestroyItemSoon(item);

Would it be useful to assert that item is non-null?  Maybe unregisterWaitAndDestroyItemSoon could take a Ref.

&gt; Source/WTF/wtf/win/WorkQueueWin.cpp:256
&gt; +        DWORD error = ::GetLastError();

Do we want to return this?

&gt; Source/WTF/wtf/win/WorkItemWin.cpp:44
&gt; +    return adoptRef(new WorkItemWin(WTFMove(function), queue));

adoptRef(*new

&gt; Source/WTF/wtf/win/WorkItemWin.cpp:54
&gt; +    , m_waitHandle(0)

This should use C++11-style initializer lists in the header.

&gt; Source/WTF/wtf/win/WorkItemWin.cpp:61
&gt; +    return adoptRef(new HandleWorkItem(handle, WTFMove(function), queue));

This should return a Ref.
return adoptRef(*new ...)

&gt; Source/WTF/wtf/win/WorkItemWin.h:61
&gt; +    void setWaitHandle(HANDLE waitHandle) { m_waitHandle = waitHandle; }

Can we not put this waitHandle in the constructor somehow?  It&apos;s usually a bad idea to make an object and then have to remember to call setters in order to make that object valid.  It makes it easy to forget or to have complicated flow paths that makes it hard to tell that you forgot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361095</commentid>
    <comment_count>8</comment_count>
      <attachid>323984</attachid>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-16 20:45:31 -0700</bug_when>
    <thetext>Created attachment 323984
[PATCH] Add WTF files for WinCairo WebKit

(In reply to Alex Christensen from comment #7)
&gt; &gt; Source/WTF/wtf/WorkQueue.h:114
&gt; &gt; +    HashMap&lt;HANDLE, RefPtr&lt;HandleWorkItem&gt; &gt; m_items;
&gt; &gt; +    unregisterWaitAndDestroyItemSoon(item);
&gt; &gt; +    return adoptRef(new WorkItemWin(WTFMove(function), queue));
&gt; &gt; +    return adoptRef(new HandleWorkItem(handle, WTFMove(function), queue));

Fixed these points which used RefPtr.

&gt; &gt; Source/WTF/wtf/win/WorkQueueWin.cpp:256
&gt; &gt; +        DWORD error = ::GetLastError();
&gt; 
&gt; Do we want to return this?

&quot;error&quot; is unnecessary. Those codes to just get errors are deleted, and those cases are treated as ASSERT cases.
 
&gt; &gt; Source/WTF/wtf/win/WorkItemWin.cpp:54
&gt; &gt; +    , m_waitHandle(0)
&gt; 
&gt; This should use C++11-style initializer lists in the header.

Fixed.

&gt; &gt; Source/WTF/wtf/win/WorkItemWin.h:61
&gt; &gt; +    void setWaitHandle(HANDLE waitHandle) { m_waitHandle = waitHandle; }
&gt; 
&gt; Can we not put this waitHandle in the constructor somehow?  It&apos;s usually a
&gt; bad idea to make an object and then have to remember to call setters in
&gt; order to make that object valid.  It makes it easy to forget or to have
&gt; complicated flow paths that makes it hard to tell that you forgot.

In this patch, WorkItemContext is added to handle context for tasks to solve the point.
It is not a good method but setWaitHandle() was deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361098</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-16 20:48:10 -0700</bug_when>
    <thetext>Attachment 323984 did not pass style-queue:


ERROR: Source/WTF/wtf/win/WorkItemContext.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/WorkItemContext.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361150</commentid>
    <comment_count>10</comment_count>
      <attachid>323999</attachid>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-16 23:51:42 -0700</bug_when>
    <thetext>Created attachment 323999
[PATCH] Add WTF files for WinCairo WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361151</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-16 23:53:57 -0700</bug_when>
    <thetext>Attachment 323999 did not pass style-queue:


ERROR: Source/WTF/wtf/win/WorkItemContext.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/win/WorkItemContext.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361206</commentid>
    <comment_count>12</comment_count>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-17 03:33:35 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #11)
&gt; Attachment 323999 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WTF/wtf/win/WorkItemContext.cpp:28:  Found other header before
&gt; a header this file implements. Should be: config.h, primary header, blank
&gt; line, and then alphabetically sorted.  [build/include_order] [4]
&gt; ERROR: Source/WTF/wtf/win/WorkItemContext.cpp:29:  Alphabetical sorting
&gt; problem.  [build/include_order] [4]
&gt; Total errors found: 2 in 6 files

I&apos;m trying to fix this style error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361279</commentid>
    <comment_count>13</comment_count>
      <attachid>324021</attachid>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-17 10:07:06 -0700</bug_when>
    <thetext>Created attachment 324021
[PATCH] Add WTF files for WinCairo WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364001</commentid>
    <comment_count>14</comment_count>
      <attachid>324021</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-10-24 16:34:23 -0700</bug_when>
    <thetext>Comment on attachment 324021
[PATCH] Add WTF files for WinCairo WebKit

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

&gt; Source/WTF/wtf/win/WorkItemContext.cpp:43
&gt; +    ASSERT_ARG(handle, handle);

There is a Win32Handle class that might be of use for lifetime of handles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364076</commentid>
    <comment_count>15</comment_count>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-24 20:01:59 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #14)
&gt; Comment on attachment 324021 [details]
&gt; [PATCH] Add WTF files for WinCairo WebKit
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=324021&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/win/WorkItemContext.cpp:43
&gt; &gt; +    ASSERT_ARG(handle, handle);
&gt; 
&gt; There is a Win32Handle class that might be of use for lifetime of handles.

Thank you for your advice. I&apos;ll try to use the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364445</commentid>
    <comment_count>16</comment_count>
      <attachid>324021</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-25 13:48:58 -0700</bug_when>
    <thetext>Comment on attachment 324021
[PATCH] Add WTF files for WinCairo WebKit

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

&gt; Source/WTF/wtf/win/WorkItemContext.cpp:42
&gt; +    // how to delete handles??

Yeah, let&apos;s not land code with a comment like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364880</commentid>
    <comment_count>17</comment_count>
      <attachid>325022</attachid>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-26 10:03:12 -0700</bug_when>
    <thetext>Created attachment 325022
[PATCH] Add WTF files for WinCairo WebKit

(In reply to Alex Christensen from comment #16)
&gt; Comment on attachment 324021 [details]
&gt; [PATCH] Add WTF files for WinCairo WebKit
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=324021&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/win/WorkItemContext.cpp:42
&gt; &gt; +    // how to delete handles??
&gt; 
&gt; Yeah, let&apos;s not land code with a comment like this.
The unnecessary comment was deleted and Win32Handle is used to manage windows handles in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364960</commentid>
    <comment_count>18</comment_count>
      <attachid>325022</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-26 12:06:03 -0700</bug_when>
    <thetext>Comment on attachment 325022
[PATCH] Add WTF files for WinCairo WebKit

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

&gt; Source/WTF/wtf/win/WorkItemContext.h:49
&gt; +    HANDLE* waitHandlePtr() { return &amp;m_waitHandle.m_handle; }

This is unnecessary.

&gt; Source/WTF/wtf/win/WorkItemContext.h:56
&gt; +    Win32Handle m_handle = { };

These default constructors are unnecessary.  If we needed them, the = would be unnecessary.

&gt; Source/WTF/wtf/win/WorkQueueWin.cpp:57
&gt; +    {

This scope is unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365218</commentid>
    <comment_count>19</comment_count>
      <attachid>325106</attachid>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-26 20:03:45 -0700</bug_when>
    <thetext>Created attachment 325106
[PATCH] Add WTF files for WinCairo WebKit

(In reply to Alex Christensen from comment #18)
&gt; Comment on attachment 325022 [details]
&gt; [PATCH] Add WTF files for WinCairo WebKit
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=325022&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/win/WorkItemContext.h:49
&gt; &gt; +    HANDLE* waitHandlePtr() { return &amp;m_waitHandle.m_handle; }
&gt; 
&gt; This is unnecessary.

I deleted this line and used a direct reference to the address.

&gt; &gt; Source/WTF/wtf/win/WorkItemContext.h:56
&gt; &gt; +    Win32Handle m_handle = { };
&gt; 
&gt; These default constructors are unnecessary.  If we needed them, the = would
&gt; be unnecessary.
&gt;
&gt; &gt; Source/WTF/wtf/win/WorkQueueWin.cpp:57
&gt; &gt; +    {
&gt; 
&gt; This scope is unnecessary.

Those unnecessary lines were deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365307</commentid>
    <comment_count>20</comment_count>
      <attachid>325142</attachid>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-27 01:53:36 -0700</bug_when>
    <thetext>Created attachment 325142
[PATCH] Add WTF files for WinCairo WebKit

(In reply to Yousuke Kimoto from comment #19)
&gt; Created attachment 325106 [details]
&gt; [PATCH] Add WTF files for WinCairo WebKit

This patch is just modified its reviewer part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365591</commentid>
    <comment_count>21</comment_count>
      <attachid>325142</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-27 17:09:50 -0700</bug_when>
    <thetext>Comment on attachment 325142
[PATCH] Add WTF files for WinCairo WebKit

Clearing flags on attachment: 325142

Committed r224137: &lt;https://trac.webkit.org/changeset/224137&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365592</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-27 17:09:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372365</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 13:06:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/35568814&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322481</attachid>
            <date>2017-10-02 18:16:28 -0700</date>
            <delta_ts>2017-10-04 22:29:35 -0700</delta_ts>
            <desc>[PATCH] Add WTF files for WinCairo WebKit</desc>
            <filename>bz176894-2.patch</filename>
            <type>text/plain</type>
            <size>20187</size>
            <attacher name="Yousuke Kimoto">Yousuke.Kimoto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNGM0OGEzMC4uNDk5NzZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNy0xMC0wMSAg
WW91c3VrZSBLaW1vdG8gIDx5b3VzdWtlLmtpbW90b0Bzb255LmNvbT4KKworICAgICAgICBbV2lu
Q2Fpcm9dIEFkZCBXVEYgZmlsZXMgZm9yIHdpbmNhaXJvIHdlYmtpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV29ya1F1ZXVlIGFuZCByZWxhdGVkIGNs
YXNzZXMgZm9yIFdpbkNhaXJvIFdlYktpdCBhcmUgaW1wbGVtZW50ZWQuIAorCisgICAgICAgICog
d3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAg
ICAgKiB3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaDoKKyAgICAgICAgKFdURjo6QmluYXJ5
U2VtYXBob3JlOjpldmVudCBjb25zdCk6CisgICAgICAgICogd3RmL3RocmVhZHMvd2luL0JpbmFy
eVNlbWFwaG9yZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpCaW5hcnlTZW1hcGhvcmU6
OkJpbmFyeVNlbWFwaG9yZSk6CisgICAgICAgIChXVEY6OkJpbmFyeVNlbWFwaG9yZTo6fkJpbmFy
eVNlbWFwaG9yZSk6CisgICAgICAgIChXVEY6OkJpbmFyeVNlbWFwaG9yZTo6c2lnbmFsKToKKyAg
ICAgICAgKFdURjo6QmluYXJ5U2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAgKiB3dGYvd2luL1dv
cmtJdGVtV2luLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OldvcmtJdGVtV2luOjpXb3JrSXRl
bVdpbik6CisgICAgICAgIChXVEY6OldvcmtJdGVtV2luOjpjcmVhdGUpOgorICAgICAgICAoV1RG
OjpXb3JrSXRlbVdpbjo6fldvcmtJdGVtV2luKToKKyAgICAgICAgKFdURjo6SGFuZGxlV29ya0l0
ZW06OkhhbmRsZVdvcmtJdGVtKToKKyAgICAgICAgKFdURjo6SGFuZGxlV29ya0l0ZW06OmNyZWF0
ZUJ5QWRvcHRpbmdIYW5kbGUpOgorICAgICAgICAoV1RGOjpIYW5kbGVXb3JrSXRlbTo6fkhhbmRs
ZVdvcmtJdGVtKToKKyAgICAgICAgKiB3dGYvd2luL1dvcmtJdGVtV2luLmg6IEFkZGVkLgorICAg
ICAgICAoV1RGOjpXb3JrSXRlbVdpbjo6RnVuY3Rpb248dm9pZCgpPik6CisgICAgICAgIChXVEY6
OldvcmtJdGVtV2luOjpxdWV1ZSBjb25zdCk6CisgICAgICAgIChXVEY6OkhhbmRsZVdvcmtJdGVt
OjpzZXRXYWl0SGFuZGxlKToKKyAgICAgICAgKFdURjo6SGFuZGxlV29ya0l0ZW06OndhaXRIYW5k
bGUgY29uc3QpOgorICAgICAgICAqIHd0Zi93aW4vV29ya1F1ZXVlV2luLmNwcDoKKyAgICAgICAg
KFdURjo6V29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayk6CisgICAgICAgIChXVEY6OldvcmtRdWV1
ZTo6cmVnaXN0ZXJIYW5kbGUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnVucmVnaXN0ZXJB
bmRDbG9zZUhhbmRsZSk6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6dW5yZWdpc3RlcldhaXRB
bmREZXN0cm95SXRlbVNvb24pOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnVucmVnaXN0ZXJX
YWl0QW5kRGVzdHJveUl0ZW1DYWxsYmFjayk6CisKIDIwMTctMDktMjcgIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW42NF0gQ29tcGlsZSBlcnJvciwg
J0Jhc2VQdHJzJyBpcyB1bmRlZmluZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDVj
ZmVjMDcuLjliYTdjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNt
YWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xLDMgKzEsNiBA
QAorbGlzdChSRU1PVkVfSVRFTSBXVEZfU09VUkNFUworICAgIHRocmVhZHMvQmluYXJ5U2VtYXBo
b3JlLmNwcAorKQogbGlzdChBUFBFTkQgV1RGX0hFQURFUlMKICAgICBjZi9UeXBlQ2FzdHNDRi5o
CiApCkBAIC01LDEyICs4LDE1IEBAIGxpc3QoQVBQRU5EIFdURl9IRUFERVJTCiBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogICAgIHRleHQvd2luL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VX
aW4uY3BwCiAKKyAgICB0aHJlYWRzL3dpbi9CaW5hcnlTZW1hcGhvcmVXaW4uY3BwCisKICAgICB3
aW4vQ1BVVGltZVdpbi5jcHAKICAgICB3aW4vTGFuZ3VhZ2VXaW4uY3BwCiAgICAgd2luL01haW5U
aHJlYWRXaW4uY3BwCiAgICAgd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAKICAgICB3aW4vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcAogICAgIHdpbi9SdW5Mb29wV2luLmNwcAorICAgIHdp
bi9Xb3JrSXRlbVdpbi5jcHAKICAgICB3aW4vV29ya1F1ZXVlV2luLmNwcAogKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1
ZS5oCmluZGV4IGQ3Nzg2MGYuLmIxOTgwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dv
cmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCkBAIC0xLDYgKzEsNyBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxp
dHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjQsOCArMjUsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV29ya1F1ZXVlX2gKLSNkZWZpbmUgV29ya1F1ZXVlX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb25EaXNwYXRjaGVyLmg+CkBAIC0zNyw4ICszNywxMCBAQAogI2VuZGlmCiAKICNpZiBVU0Uo
V0lORE9XU19FVkVOVF9MT09QKQorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdpbi5oPgogI2VuZGlmCiAKICNpZiBVU0UoR0xJQl9FVkVO
VF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQpAQCAtNzQsNiArNzYsOSBAQCBwdWJs
aWM6CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwYXRjaFF1ZXVlOyB9CiAjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VO
RVJJQ19FVkVOVF9MT09QKQogICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAq
bV9ydW5Mb29wOyB9CisjZWxpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHJlZ2lzdGVySGFuZGxlKEhBTkRMRSwgRnVuY3Rpb248dm9pZCgpPiYm
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB1bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUo
SEFORExFKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtODMsMTIgKzg4LDE2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAogI2lmIFVTRShXSU5ET1dTX0VWRU5U
X0xPT1ApCisgICAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgaGFuZGxlQ2FsbGJhY2sodm9pZCogY29u
dGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVkKTsKICAgICBzdGF0aWMgdm9pZCBDQUxMQkFD
SyB0aW1lckNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7
CiAgICAgc3RhdGljIERXT1JEIFdJTkFQSSB3b3JrVGhyZWFkQ2FsbGJhY2sodm9pZCogY29udGV4
dCk7CiAKICAgICBib29sIHRyeVJlZ2lzdGVyQXNXb3JrVGhyZWFkKCk7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyQXNXb3JrVGhyZWFkKCk7CiAgICAgdm9pZCBwZXJmb3JtV29ya09uUmVnaXN0ZXJlZFdv
cmtUaHJlYWQoKTsKKworICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0
ZW1Tb29uKFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4pOworICAgIHN0YXRpYyBEV09SRCBXSU5BUEkg
dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbUNhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwogI2Vu
ZGlmCiAKICNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKQEAgLTEwMCw2ICsxMDksOSBAQCBwcml2
YXRlOgogICAgIE11dGV4IG1fZnVuY3Rpb25RdWV1ZUxvY2s7CiAgICAgVmVjdG9yPEZ1bmN0aW9u
PHZvaWQoKT4+IG1fZnVuY3Rpb25RdWV1ZTsKIAorICAgIE11dGV4IG1faXRlbXNMb2NrOworICAg
IEhhc2hNYXA8SEFORExFLCBSZWZQdHI8SGFuZGxlV29ya0l0ZW0+ID4gbV9pdGVtczsKKwogICAg
IEhBTkRMRSBtX3RpbWVyUXVldWU7CiAjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0Uo
R0VORVJJQ19FVkVOVF9MT09QKQogICAgIFJlZlB0cjxUaHJlYWQ+IG1fd29ya1F1ZXVlVGhyZWFk
OwpAQCAtMTEyLDUgKzEyNCwzIEBAIHByaXZhdGU6CiB9CiAKIHVzaW5nIFdURjo6V29ya1F1ZXVl
OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmluYXJ5U2Vt
YXBob3JlLmggYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oCmluZGV4
IGJiMDBkNzcuLmEzMWI5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvQmlu
YXJ5U2VtYXBob3JlLmgKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhv
cmUuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsOCArMjQsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgQmluYXJ5U2VtYXBob3JlX2gKLSNkZWZpbmUgQmluYXJ5U2VtYXBo
b3JlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KQEAgLTQyLDE1ICs0MiwyMiBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2lnbmFsKCk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgd2FpdChUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUpOwogCisjaWYgUExB
VEZPUk0oV0lOKQorICAgIEhBTkRMRSBldmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnQ7IH0K
KyNlbmRpZgorCiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBIQU5ETEUgbV9ldmVu
dDsKKyNlbHNlCisKICAgICBib29sIG1faXNTZXQ7CiAKICAgICBNdXRleCBtX211dGV4OwogICAg
IFRocmVhZENvbmRpdGlvbiBtX2NvbmRpdGlvbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKIHVzaW5nIFdURjo6QmluYXJ5U2VtYXBob3JlOwotCi0jZW5kaWYgLy8gQmluYXJ5
U2VtYXBob3JlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXggZTAxMWNlZC4u
NzkxYTBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKQEAgLTEsMjcgKzEsMjgg
QEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSogYXJlIG1ldDoKLSogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0qICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0qIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0qIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0qIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0qIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0q
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5o
IgpAQCAtMzEsNiArMzIsNTAgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKK3ZvaWQgV29ya1F1ZXVl
OjpoYW5kbGVDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQp
Cit7CisgICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKKyAgICBBU1NFUlRfQVJHKHRp
bWVyT3JXYWl0RmlyZWQsICF0aW1lck9yV2FpdEZpcmVkKTsKKworICAgIEhhbmRsZVdvcmtJdGVt
KiBpdGVtID0gc3RhdGljX2Nhc3Q8SGFuZGxlV29ya0l0ZW0qPihjb250ZXh0KTsKKyAgICBXb3Jr
UXVldWUqIHF1ZXVlID0gaXRlbS0+cXVldWUoKTsKKworICAgIFJlZlB0cjxIYW5kbGVXb3JrSXRl
bT4gcHJvdGVjdG9yKGl0ZW0pOworICAgIHF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdG9yXSB7Cisg
ICAgICAgIHByb3RlY3Rvci0+ZnVuY3Rpb24oKSgpOworICAgIH0pOworfQorCit2b2lkIFdvcmtR
dWV1ZTo6cmVnaXN0ZXJIYW5kbGUoSEFORExFIGhhbmRsZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1
bmN0aW9uKQoreworICAgIFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4gaGFuZGxlSXRlbSA9IEhhbmRs
ZVdvcmtJdGVtOjpjcmVhdGVCeUFkb3B0aW5nSGFuZGxlKGhhbmRsZSwgV1RGTW92ZShmdW5jdGlv
biksIHRoaXMpOworCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrKG1faXRlbXNMb2Nr
KTsKKyAgICAgICAgQVNTRVJUX0FSRyhoYW5kbGUsICFtX2l0ZW1zLmNvbnRhaW5zKGhhbmRsZSkp
OworICAgICAgICBtX2l0ZW1zLnNldChoYW5kbGUsIGhhbmRsZUl0ZW0pOworICAgIH0KKworICAg
IEhBTkRMRSB3YWl0SGFuZGxlOworICAgIGlmICghOjpSZWdpc3RlcldhaXRGb3JTaW5nbGVPYmpl
Y3QoJndhaXRIYW5kbGUsIGhhbmRsZSwgaGFuZGxlQ2FsbGJhY2ssIGhhbmRsZUl0ZW0uZ2V0KCks
IElORklOSVRFLCBXVF9FWEVDVVRFREVGQVVMVCkpIHsKKyAgICAgICAgRFdPUkQgZXJyb3IgPSA6
OkdldExhc3RFcnJvcigpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cisg
ICAgaGFuZGxlSXRlbS0+c2V0V2FpdEhhbmRsZSh3YWl0SGFuZGxlKTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZShIQU5ETEUgaGFuZGxlKQoreworICAgIFJl
ZlB0cjxIYW5kbGVXb3JrSXRlbT4gaXRlbTsKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2l0ZW1zTG9jayk7CisgICAgICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBtX2l0ZW1zLmNv
bnRhaW5zKGhhbmRsZSkpOworICAgICAgICBpdGVtID0gbV9pdGVtcy50YWtlKGhhbmRsZSk7Cisg
ICAgfQorCisgICAgdW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24oaXRlbSk7Cit9CisK
IERXT1JEIFdvcmtRdWV1ZTo6d29ya1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRleHQpCiB7CiAg
ICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKQEAgLTE5MCw0ICsyMzUsMjkgQEAgdm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGZ1bmN0aW9uKQogICAgIGNvbnRleHQubGVha1JlZigpOwogfQogCit2b2lkIFdvcmtR
dWV1ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24oUmVmUHRyPEhhbmRsZVdvcmtJ
dGVtPiBpdGVtKQoreworICAgIC8vIFdlJ3JlIGdvaW5nIHRvIG1ha2UgYSBibG9ja2luZyBjYWxs
IHRvIDo6VW5yZWdpc3RlcldhaXRFeCBiZWZvcmUgY2xvc2luZyB0aGUgaGFuZGxlLiAoVGhlCisg
ICAgLy8gYmxvY2tpbmcgdmVyc2lvbiBvZiA6OlVucmVnaXN0ZXJXYWl0RXggaXMgbXVjaCBzaW1w
bGVyIHRoYW4gdGhlIG5vbi1ibG9ja2luZyB2ZXJzaW9uLikgSWYgd2UKKyAgICAvLyBkbyB0aGlz
IG9uIHRoZSBjdXJyZW50IHRocmVhZCwgd2UnbGwgZGVhZGxvY2sgaWYgd2UncmUgY3VycmVudGx5
IGluIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yCisgICAgLy8gdGhlIHdhaXQgd2UncmUgdW5yZWdp
c3RlcmluZy4gU28gaW5zdGVhZCB3ZSBkbyBpdCBhc3luY2hyb25vdXNseSBvbiBzb21lIG90aGVy
IHdvcmtlciB0aHJlYWQuCisKKyAgICA6OlF1ZXVlVXNlcldvcmtJdGVtKHVucmVnaXN0ZXJXYWl0
QW5kRGVzdHJveUl0ZW1DYWxsYmFjaywgaXRlbS5sZWFrUmVmKCksIFdUX0VYRUNVVEVERUZBVUxU
KTsKK30KKworRFdPUkQgV0lOQVBJIFdvcmtRdWV1ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95
SXRlbUNhbGxiYWNrKHZvaWQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUX0FSRyhjb250ZXh0LCBj
b250ZXh0KTsKKyAgICBSZWZQdHI8SGFuZGxlV29ya0l0ZW0+IGl0ZW0gPSBhZG9wdFJlZihzdGF0
aWNfY2FzdDxIYW5kbGVXb3JrSXRlbSo+KGNvbnRleHQpKTsKKworICAgIC8vIE5vdyB0aGF0IHdl
IGtub3cgd2UncmUgbm90IGluIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSB3YWl0IHdlJ3Jl
IHVucmVnaXN0ZXJpbmcsIHdlIGNhbgorICAgIC8vIG1ha2UgYSBibG9ja2luZyBjYWxsIHRvIDo6
VW5yZWdpc3RlcldhaXRFeC4KKyAgICBpZiAoITo6VW5yZWdpc3RlcldhaXRFeChpdGVtLT53YWl0
SGFuZGxlKCksIElOVkFMSURfSEFORExFX1ZBTFVFKSkgeworICAgICAgICBEV09SRCBlcnJvciA9
IDo6R2V0TGFzdEVycm9yKCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
KworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RocmVhZHMvd2luL0JpbmFyeVNlbWFwaG9yZVdpbi5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90aHJlYWRzL3dpbi9CaW5hcnlTZW1hcGhvcmVXaW4uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNDYyMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90aHJlYWRzL3dpbi9CaW5hcnlTZW1hcGhvcmVXaW4uY3BwCkBAIC0wLDAgKzEsNzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCaW5hcnlT
ZW1hcGhvcmUuaCIKKworbmFtZXNwYWNlIFdURiB7CisKK0JpbmFyeVNlbWFwaG9yZTo6QmluYXJ5
U2VtYXBob3JlKCkKKyAgICA6IG1fZXZlbnQoOjpDcmVhdGVFdmVudFcoMCwgRkFMU0UsIEZBTFNF
LCAwKSkKK3sKK30KKworQmluYXJ5U2VtYXBob3JlOjp+QmluYXJ5U2VtYXBob3JlKCkKK3sKKyAg
ICA6OkNsb3NlSGFuZGxlKG1fZXZlbnQpOworfQorCit2b2lkIEJpbmFyeVNlbWFwaG9yZTo6c2ln
bmFsKCkKK3sKKyAgICA6OlNldEV2ZW50KG1fZXZlbnQpOworfQorCitib29sIEJpbmFyeVNlbWFw
aG9yZTo6d2FpdChUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgd2FpdFRpbWUpCit7CisgICAgRFdP
UkQgaW50ZXJ2YWwgPSBhYnNvbHV0ZVRpbWVUb1dhaXRUaW1lb3V0SW50ZXJ2YWwod2FpdFRpbWUu
c2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKyAgICBpZiAoIWludGVydmFsKSB7CisgICAg
ICAgIC8vIENvbnNpZGVyIHRoZSB3YWl0IHRvIGhhdmUgdGltZWQgb3V0LCBldmVuIGlmIHRoZSBl
dmVudCBoYXMgYWxyZWFkeSBiZWVuIHNpZ25hbGVkLCB0bworICAgICAgICAvLyBtYXRjaCB0aGUg
V1RGOjpUaHJlYWRDb25kaXRpb24gaW1wbGVtZW50YXRpb24uCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBEV09SRCByZXN1bHQgPSA6OldhaXRGb3JTaW5nbGVPYmplY3QobV9l
dmVudCwgaW50ZXJ2YWwpOworICAgIHN3aXRjaCAocmVzdWx0KSB7CisgICAgY2FzZSBXQUlUX09C
SkVDVF8wOgorICAgICAgICAvLyBUaGUgZXZlbnQgd2FzIHNpZ25hbGVkLgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGNhc2UgV0FJVF9USU1FT1VUOgorICAgICAgICAvLyBUaGUgd2FpdCB0
aW1lZCBvdXQuCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNhc2UgV0FJVF9GQUlMRUQ6
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICI6OldhaXRGb3JTaW5nbGVPYmpl
Y3QgZmFpbGVkIHdpdGggZXJyb3IgJWx1IiwgOjpHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
ZmFsc2UsICI6OldhaXRGb3JTaW5nbGVPYmplY3QgcmV0dXJuZWQgdW5leHBlY3RlZCByZXN1bHQg
JWx1IiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1XaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtV2luLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xZDI5MmY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvd2luL1dvcmtJdGVtV2luLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya0l0ZW1XaW4uaCIKKwor
I2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworV29ya0l0ZW1XaW46Oldv
cmtJdGVtV2luKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkK
KyAgICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCisgICAgLCBtX3F1ZXVlKHF1ZXVl
KQoreworfQorCitSZWZQdHI8V29ya0l0ZW1XaW4+IFdvcmtJdGVtV2luOjpjcmVhdGUoRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV29ya0l0ZW1XaW4oV1RGTW92ZShmdW5jdGlvbiksIHF1ZXVlKSk7Cit9CisK
K1dvcmtJdGVtV2luOjp+V29ya0l0ZW1XaW4oKQoreworfQorCitIYW5kbGVXb3JrSXRlbTo6SGFu
ZGxlV29ya0l0ZW0oSEFORExFIGhhbmRsZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uLCBX
b3JrUXVldWUqIHF1ZXVlKQorICAgIDogV29ya0l0ZW1XaW4oV1RGTW92ZShmdW5jdGlvbiksIHF1
ZXVlKQorICAgICwgbV9oYW5kbGUoaGFuZGxlKQorICAgICwgbV93YWl0SGFuZGxlKDApCit7Cisg
ICAgQVNTRVJUX0FSRyhoYW5kbGUsIGhhbmRsZSk7Cit9CisKK1JlZlB0cjxIYW5kbGVXb3JrSXRl
bT4gSGFuZGxlV29ya0l0ZW06OmNyZWF0ZUJ5QWRvcHRpbmdIYW5kbGUoSEFORExFIGhhbmRsZSwg
RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSGFuZGxlV29ya0l0ZW0oaGFuZGxlLCBXVEZNb3ZlKGZ1bmN0aW9u
KSwgcXVldWUpKTsKK30KKworSGFuZGxlV29ya0l0ZW06On5IYW5kbGVXb3JrSXRlbSgpCit7Cisg
ICAgOjpDbG9zZUhhbmRsZShtX2hhbmRsZSk7Cit9Cit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbVdpbi5oIGIvU291cmNlL1dURi93dGYv
d2luL1dvcmtJdGVtV2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI1
NzcyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbVdpbi5o
CkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEw
IE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2luZG93cy5oPgorI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK2NsYXNzIFdvcmtRdWV1ZTsKKworY2xhc3MgV29ya0l0ZW1XaW4gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya0l0ZW1XaW4+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmUHRyPFdvcmtJdGVtV2luPiBjcmVhdGUoRnVuY3Rpb248dm9pZCgpPiYmLCBXb3Jr
UXVldWUqKTsKKyAgICB2aXJ0dWFsIH5Xb3JrSXRlbVdpbigpOworCisgICAgRnVuY3Rpb248dm9p
ZCgpPiYgZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CisgICAgV29ya1F1ZXVlKiBx
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAg
IFdvcmtJdGVtV2luKEZ1bmN0aW9uPHZvaWQoKT4mJiwgV29ya1F1ZXVlKik7CisKK3ByaXZhdGU6
CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOworICAgIFJlZlB0cjxXb3JrUXVldWU+
IG1fcXVldWU7Cit9OworCitjbGFzcyBIYW5kbGVXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbVdp
biB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4gY3JlYXRlQnlB
ZG9wdGluZ0hhbmRsZShIQU5ETEUsIEZ1bmN0aW9uPHZvaWQoKT4mJiwgV29ya1F1ZXVlKik7Cisg
ICAgdmlydHVhbCB+SGFuZGxlV29ya0l0ZW0oKTsKKworICAgIHZvaWQgc2V0V2FpdEhhbmRsZShI
QU5ETEUgd2FpdEhhbmRsZSkgeyBtX3dhaXRIYW5kbGUgPSB3YWl0SGFuZGxlOyB9CisgICAgSEFO
RExFIHdhaXRIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3dhaXRIYW5kbGU7IH0KKworcHJpdmF0
ZToKKyAgICBIYW5kbGVXb3JrSXRlbShIQU5ETEUsIEZ1bmN0aW9uPHZvaWQoKT4mJiwgV29ya1F1
ZXVlKik7CisKKyAgICBIQU5ETEUgbV9oYW5kbGU7CisgICAgSEFORExFIG1fd2FpdEhhbmRsZTsK
K307CisKK30K
</data>
<flag name="review"
          id="342359"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322784</attachid>
            <date>2017-10-04 22:29:35 -0700</date>
            <delta_ts>2017-10-06 06:09:13 -0700</delta_ts>
            <desc>[PATCH] Add WTF files for WinCairo WebKit</desc>
            <filename>bz176894-3.patch</filename>
            <type>text/plain</type>
            <size>15204</size>
            <attacher name="Yousuke Kimoto">Yousuke.Kimoto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzIzM2FiZC4uMzdkYjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0xMC0wNCAg
WW91c3VrZSBLaW1vdG8gIDx5b3VzdWtlLmtpbW90b0Bzb255LmNvbT4KKworICAgICAgICBbV2lu
Q2Fpcm9dIEFkZCBXVEYgZmlsZXMgZm9yIHdpbmNhaXJvIHdlYmtpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV29ya1F1ZXVlIGFuZCByZWxhdGVkIGNs
YXNzZXMgZm9yIFdpbkNhaXJvIFdlYktpdCBhcmUgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogd3RmL1dvcmtRdWV1ZS5oOgorICAgICAg
ICAqIHd0Zi93aW4vV29ya0l0ZW1XaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6V29ya0l0
ZW1XaW46OldvcmtJdGVtV2luKToKKyAgICAgICAgKFdURjo6V29ya0l0ZW1XaW46OmNyZWF0ZSk6
CisgICAgICAgIChXVEY6OldvcmtJdGVtV2luOjp+V29ya0l0ZW1XaW4pOgorICAgICAgICAoV1RG
OjpIYW5kbGVXb3JrSXRlbTo6SGFuZGxlV29ya0l0ZW0pOgorICAgICAgICAoV1RGOjpIYW5kbGVX
b3JrSXRlbTo6Y3JlYXRlQnlBZG9wdGluZ0hhbmRsZSk6CisgICAgICAgIChXVEY6OkhhbmRsZVdv
cmtJdGVtOjp+SGFuZGxlV29ya0l0ZW0pOgorICAgICAgICAqIHd0Zi93aW4vV29ya0l0ZW1XaW4u
aDogQWRkZWQuCisgICAgICAgIChXVEY6OldvcmtJdGVtV2luOjpGdW5jdGlvbjx2b2lkKToKKyAg
ICAgICAgKFdURjo6V29ya0l0ZW1XaW46OnF1ZXVlIGNvbnN0KToKKyAgICAgICAgKFdURjo6SGFu
ZGxlV29ya0l0ZW06OnNldFdhaXRIYW5kbGUpOgorICAgICAgICAoV1RGOjpIYW5kbGVXb3JrSXRl
bTo6d2FpdEhhbmRsZSBjb25zdCk6CisgICAgICAgICogd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3Bw
OgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmhhbmRsZUNhbGxiYWNrKToKKyAgICAgICAgKFdU
Rjo6V29ya1F1ZXVlOjpyZWdpc3RlckhhbmRsZSk6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
dW5yZWdpc3RlckFuZENsb3NlSGFuZGxlKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjp1bnJl
Z2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbik6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbUNhbGxiYWNrKToKKwogMjAxNy0xMC0wMyAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgYXNzaWduaW5n
IFdlYWtQdHI8RGVyaXZlZD4gdG8gV2Vha1B0cjxCYXNlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFr
ZQppbmRleCA1Y2ZlYzA3Li43YzZmZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAt
MTEsNiArMTEsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIHdpbi9NZW1vcnlGb290
cHJpbnRXaW4uY3BwCiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKICAgICB3
aW4vUnVuTG9vcFdpbi5jcHAKKyAgICB3aW4vV29ya0l0ZW1XaW4uY3BwCiAgICAgd2luL1dvcmtR
dWV1ZVdpbi5jcHAKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCBkNzc4NjBmLi5mZDkzZTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9X
b3JrUXVldWUuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0
IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDggKzM4LDEwIEBACiAjZW5k
aWYKIAogI2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvd2luL1dvcmtJdGVtV2luLmg+CiAjZW5kaWYKIAogI2lm
IFVTRShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCkBAIC03NCw2
ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBj
b25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KICNlbGlmIFVTRShHTElCX0VWRU5UX0xP
T1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNv
bnN0IHsgcmV0dXJuICptX3J1bkxvb3A7IH0KKyNlbGlmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1Ap
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0ZXJIYW5kbGUoSEFORExFLCBGdW5j
dGlvbjx2b2lkKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHVucmVnaXN0ZXJB
bmRDbG9zZUhhbmRsZShIQU5ETEUpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC04MywxMiArODks
MTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCiAjaWYgVVNF
KFdJTkRPV1NfRVZFTlRfTE9PUCkKKyAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyBoYW5kbGVDYWxs
YmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRp
YyB2b2lkIENBTExCQUNLIHRpbWVyQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1l
ck9yV2FpdEZpcmVkKTsKICAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIHdvcmtUaHJlYWRDYWxsYmFj
ayh2b2lkKiBjb250ZXh0KTsKIAogICAgIGJvb2wgdHJ5UmVnaXN0ZXJBc1dvcmtUaHJlYWQoKTsK
ICAgICB2b2lkIHVucmVnaXN0ZXJBc1dvcmtUaHJlYWQoKTsKICAgICB2b2lkIHBlcmZvcm1Xb3Jr
T25SZWdpc3RlcmVkV29ya1RocmVhZCgpOworCisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3Rlcldh
aXRBbmREZXN0cm95SXRlbVNvb24oUmVmUHRyPEhhbmRsZVdvcmtJdGVtPik7CisgICAgc3RhdGlj
IERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sodm9pZCog
Y29udGV4dCk7CiAjZW5kaWYKIAogI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQpAQCAtMTAwLDYg
KzExMCw5IEBAIHByaXZhdGU6CiAgICAgTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKICAgICBW
ZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9mdW5jdGlvblF1ZXVlOwogCisgICAgTXV0ZXggbV9p
dGVtc0xvY2s7CisgICAgSGFzaE1hcDxIQU5ETEUsIFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4gPiBt
X2l0ZW1zOworCiAgICAgSEFORExFIG1fdGltZXJRdWV1ZTsKICNlbGlmIFVTRShHTElCX0VWRU5U
X0xPT1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAgUmVmUHRyPFRocmVhZD4gbV93
b3JrUXVldWVUaHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVl
V2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwCmluZGV4IGUwMTFj
ZWQuLjc5MWEwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwCkBAIC0xLDI3ICsx
LDI4IEBACiAvKgotKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0qIGFyZSBtZXQ6Ci0q
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotKgotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0qIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0qIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0qIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0qIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0qIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSov
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKQEAgLTMxLDYgKzMyLDUwIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCit2b2lkIFdvcmtR
dWV1ZTo6aGFuZGxlQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZp
cmVkKQoreworICAgIEFTU0VSVF9BUkcoY29udGV4dCwgY29udGV4dCk7CisgICAgQVNTRVJUX0FS
Ryh0aW1lck9yV2FpdEZpcmVkLCAhdGltZXJPcldhaXRGaXJlZCk7CisKKyAgICBIYW5kbGVXb3Jr
SXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PEhhbmRsZVdvcmtJdGVtKj4oY29udGV4dCk7CisgICAg
V29ya1F1ZXVlKiBxdWV1ZSA9IGl0ZW0tPnF1ZXVlKCk7CisKKyAgICBSZWZQdHI8SGFuZGxlV29y
a0l0ZW0+IHByb3RlY3RvcihpdGVtKTsKKyAgICBxdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3Rvcl0g
eworICAgICAgICBwcm90ZWN0b3ItPmZ1bmN0aW9uKCkoKTsKKyAgICB9KTsKK30KKwordm9pZCBX
b3JrUXVldWU6OnJlZ2lzdGVySGFuZGxlKEhBTkRMRSBoYW5kbGUsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBmdW5jdGlvbikKK3sKKyAgICBSZWZQdHI8SGFuZGxlV29ya0l0ZW0+IGhhbmRsZUl0ZW0gPSBI
YW5kbGVXb3JrSXRlbTo6Y3JlYXRlQnlBZG9wdGluZ0hhbmRsZShoYW5kbGUsIFdURk1vdmUoZnVu
Y3Rpb24pLCB0aGlzKTsKKworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX2l0ZW1z
TG9jayk7CisgICAgICAgIEFTU0VSVF9BUkcoaGFuZGxlLCAhbV9pdGVtcy5jb250YWlucyhoYW5k
bGUpKTsKKyAgICAgICAgbV9pdGVtcy5zZXQoaGFuZGxlLCBoYW5kbGVJdGVtKTsKKyAgICB9CisK
KyAgICBIQU5ETEUgd2FpdEhhbmRsZTsKKyAgICBpZiAoITo6UmVnaXN0ZXJXYWl0Rm9yU2luZ2xl
T2JqZWN0KCZ3YWl0SGFuZGxlLCBoYW5kbGUsIGhhbmRsZUNhbGxiYWNrLCBoYW5kbGVJdGVtLmdl
dCgpLCBJTkZJTklURSwgV1RfRVhFQ1VURURFRkFVTFQpKSB7CisgICAgICAgIERXT1JEIGVycm9y
ID0gOjpHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorICAgIGhhbmRsZUl0ZW0tPnNldFdhaXRIYW5kbGUod2FpdEhhbmRsZSk7Cit9CisKK3ZvaWQg
V29ya1F1ZXVlOjp1bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUoSEFORExFIGhhbmRsZSkKK3sKKyAg
ICBSZWZQdHI8SGFuZGxlV29ya0l0ZW0+IGl0ZW07CisgICAgeworICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9pdGVtc0xvY2spOworICAgICAgICBBU1NFUlRfQVJHKGhhbmRsZSwgbV9pdGVt
cy5jb250YWlucyhoYW5kbGUpKTsKKyAgICAgICAgaXRlbSA9IG1faXRlbXMudGFrZShoYW5kbGUp
OworICAgIH0KKworICAgIHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKGl0ZW0pOwor
fQorCiBEV09SRCBXb3JrUXVldWU6OndvcmtUaHJlYWRDYWxsYmFjayh2b2lkKiBjb250ZXh0KQog
ewogICAgIEFTU0VSVF9BUkcoY29udGV4dCwgY29udGV4dCk7CkBAIC0xOTAsNCArMjM1LDI5IEBA
IHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0aW9u
PHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAordm9pZCBX
b3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKFJlZlB0cjxIYW5kbGVX
b3JrSXRlbT4gaXRlbSkKK3sKKyAgICAvLyBXZSdyZSBnb2luZyB0byBtYWtlIGEgYmxvY2tpbmcg
Y2FsbCB0byA6OlVucmVnaXN0ZXJXYWl0RXggYmVmb3JlIGNsb3NpbmcgdGhlIGhhbmRsZS4gKFRo
ZQorICAgIC8vIGJsb2NraW5nIHZlcnNpb24gb2YgOjpVbnJlZ2lzdGVyV2FpdEV4IGlzIG11Y2gg
c2ltcGxlciB0aGFuIHRoZSBub24tYmxvY2tpbmcgdmVyc2lvbi4pIElmIHdlCisgICAgLy8gZG8g
dGhpcyBvbiB0aGUgY3VycmVudCB0aHJlYWQsIHdlJ2xsIGRlYWRsb2NrIGlmIHdlJ3JlIGN1cnJl
bnRseSBpbiBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvcgorICAgIC8vIHRoZSB3YWl0IHdlJ3JlIHVu
cmVnaXN0ZXJpbmcuIFNvIGluc3RlYWQgd2UgZG8gaXQgYXN5bmNocm9ub3VzbHkgb24gc29tZSBv
dGhlciB3b3JrZXIgdGhyZWFkLgorCisgICAgOjpRdWV1ZVVzZXJXb3JrSXRlbSh1bnJlZ2lzdGVy
V2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2ssIGl0ZW0ubGVha1JlZigpLCBXVF9FWEVDVVRFREVG
QVVMVCk7Cit9CisKK0RXT1JEIFdJTkFQSSBXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVz
dHJveUl0ZW1DYWxsYmFjayh2b2lkKiBjb250ZXh0KQoreworICAgIEFTU0VSVF9BUkcoY29udGV4
dCwgY29udGV4dCk7CisgICAgUmVmUHRyPEhhbmRsZVdvcmtJdGVtPiBpdGVtID0gYWRvcHRSZWYo
c3RhdGljX2Nhc3Q8SGFuZGxlV29ya0l0ZW0qPihjb250ZXh0KSk7CisKKyAgICAvLyBOb3cgdGhh
dCB3ZSBrbm93IHdlJ3JlIG5vdCBpbiBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgd2FpdCB3
ZSdyZSB1bnJlZ2lzdGVyaW5nLCB3ZSBjYW4KKyAgICAvLyBtYWtlIGEgYmxvY2tpbmcgY2FsbCB0
byA6OlVucmVnaXN0ZXJXYWl0RXguCisgICAgaWYgKCE6OlVucmVnaXN0ZXJXYWl0RXgoaXRlbS0+
d2FpdEhhbmRsZSgpLCBJTlZBTElEX0hBTkRMRV9WQUxVRSkpIHsKKyAgICAgICAgRFdPUkQgZXJy
b3IgPSA6OkdldExhc3RFcnJvcigpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2lu
L1dvcmtJdGVtV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDI5
MmY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtV2luLmNw
cApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IElu
dGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV29ya0l0ZW1XaW4uaCIKKworI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworV29ya0l0ZW1XaW46OldvcmtJdGVtV2luKEZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKKyAgICA6IG1fZnVuY3Rpb24oV1RGTW92
ZShmdW5jdGlvbikpCisgICAgLCBtX3F1ZXVlKHF1ZXVlKQoreworfQorCitSZWZQdHI8V29ya0l0
ZW1XaW4+IFdvcmtJdGVtV2luOjpjcmVhdGUoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uLCBX
b3JrUXVldWUqIHF1ZXVlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV29ya0l0ZW1XaW4o
V1RGTW92ZShmdW5jdGlvbiksIHF1ZXVlKSk7Cit9CisKK1dvcmtJdGVtV2luOjp+V29ya0l0ZW1X
aW4oKQoreworfQorCitIYW5kbGVXb3JrSXRlbTo6SGFuZGxlV29ya0l0ZW0oSEFORExFIGhhbmRs
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgIDog
V29ya0l0ZW1XaW4oV1RGTW92ZShmdW5jdGlvbiksIHF1ZXVlKQorICAgICwgbV9oYW5kbGUoaGFu
ZGxlKQorICAgICwgbV93YWl0SGFuZGxlKDApCit7CisgICAgQVNTRVJUX0FSRyhoYW5kbGUsIGhh
bmRsZSk7Cit9CisKK1JlZlB0cjxIYW5kbGVXb3JrSXRlbT4gSGFuZGxlV29ya0l0ZW06OmNyZWF0
ZUJ5QWRvcHRpbmdIYW5kbGUoSEFORExFIGhhbmRsZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0
aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSGFuZGxl
V29ya0l0ZW0oaGFuZGxlLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgcXVldWUpKTsKK30KKworSGFuZGxl
V29ya0l0ZW06On5IYW5kbGVXb3JrSXRlbSgpCit7CisgICAgOjpDbG9zZUhhbmRsZShtX2hhbmRs
ZSk7Cit9Cit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dp
bi9Xb3JrSXRlbVdpbi5oIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtV2luLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI1NzcyNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbVdpbi5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJh
Y3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8V2luZG93cy5oPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFdv
cmtRdWV1ZTsKKworY2xhc3MgV29ya0l0ZW1XaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8V29ya0l0ZW1XaW4+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFdvcmtJdGVtV2lu
PiBjcmVhdGUoRnVuY3Rpb248dm9pZCgpPiYmLCBXb3JrUXVldWUqKTsKKyAgICB2aXJ0dWFsIH5X
b3JrSXRlbVdpbigpOworCisgICAgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24oKSB7IHJldHVy
biBtX2Z1bmN0aW9uOyB9CisgICAgV29ya1F1ZXVlKiBxdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cXVldWUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIFdvcmtJdGVtV2luKEZ1bmN0aW9uPHZv
aWQoKT4mJiwgV29ya1F1ZXVlKik7CisKK3ByaXZhdGU6CisgICAgRnVuY3Rpb248dm9pZCgpPiBt
X2Z1bmN0aW9uOworICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcXVldWU7Cit9OworCitjbGFzcyBI
YW5kbGVXb3JrSXRlbSA6IHB1YmxpYyBXb3JrSXRlbVdpbiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4gY3JlYXRlQnlBZG9wdGluZ0hhbmRsZShIQU5ETEUsIEZ1
bmN0aW9uPHZvaWQoKT4mJiwgV29ya1F1ZXVlKik7CisgICAgdmlydHVhbCB+SGFuZGxlV29ya0l0
ZW0oKTsKKworICAgIHZvaWQgc2V0V2FpdEhhbmRsZShIQU5ETEUgd2FpdEhhbmRsZSkgeyBtX3dh
aXRIYW5kbGUgPSB3YWl0SGFuZGxlOyB9CisgICAgSEFORExFIHdhaXRIYW5kbGUoKSBjb25zdCB7
IHJldHVybiBtX3dhaXRIYW5kbGU7IH0KKworcHJpdmF0ZToKKyAgICBIYW5kbGVXb3JrSXRlbShI
QU5ETEUsIEZ1bmN0aW9uPHZvaWQoKT4mJiwgV29ya1F1ZXVlKik7CisKKyAgICBIQU5ETEUgbV9o
YW5kbGU7CisgICAgSEFORExFIG1fd2FpdEhhbmRsZTsKK307CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323012</attachid>
            <date>2017-10-06 06:09:13 -0700</date>
            <delta_ts>2017-10-16 20:45:31 -0700</delta_ts>
            <desc>[PATCH] Add WTF files for WinCairo WebKit</desc>
            <filename>bz176894-4.patch</filename>
            <type>text/plain</type>
            <size>15212</size>
            <attacher name="Yousuke Kimoto">Yousuke.Kimoto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzIzM2FiZC4uMzdkYjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0xMC0wNCAg
WW91c3VrZSBLaW1vdG8gIDx5b3VzdWtlLmtpbW90b0Bzb255LmNvbT4KKworICAgICAgICBbV2lu
Q2Fpcm9dIEFkZCBXVEYgZmlsZXMgZm9yIHdpbmNhaXJvIHdlYmtpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV29ya1F1ZXVlIGFuZCByZWxhdGVkIGNs
YXNzZXMgZm9yIFdpbkNhaXJvIFdlYktpdCBhcmUgaW1wbGVtZW50ZWQuCisKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogd3RmL1dvcmtRdWV1ZS5oOgorICAgICAg
ICAqIHd0Zi93aW4vV29ya0l0ZW1XaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6V29ya0l0
ZW1XaW46OldvcmtJdGVtV2luKToKKyAgICAgICAgKFdURjo6V29ya0l0ZW1XaW46OmNyZWF0ZSk6
CisgICAgICAgIChXVEY6OldvcmtJdGVtV2luOjp+V29ya0l0ZW1XaW4pOgorICAgICAgICAoV1RG
OjpIYW5kbGVXb3JrSXRlbTo6SGFuZGxlV29ya0l0ZW0pOgorICAgICAgICAoV1RGOjpIYW5kbGVX
b3JrSXRlbTo6Y3JlYXRlQnlBZG9wdGluZ0hhbmRsZSk6CisgICAgICAgIChXVEY6OkhhbmRsZVdv
cmtJdGVtOjp+SGFuZGxlV29ya0l0ZW0pOgorICAgICAgICAqIHd0Zi93aW4vV29ya0l0ZW1XaW4u
aDogQWRkZWQuCisgICAgICAgIChXVEY6OldvcmtJdGVtV2luOjpGdW5jdGlvbjx2b2lkKToKKyAg
ICAgICAgKFdURjo6V29ya0l0ZW1XaW46OnF1ZXVlIGNvbnN0KToKKyAgICAgICAgKFdURjo6SGFu
ZGxlV29ya0l0ZW06OnNldFdhaXRIYW5kbGUpOgorICAgICAgICAoV1RGOjpIYW5kbGVXb3JrSXRl
bTo6d2FpdEhhbmRsZSBjb25zdCk6CisgICAgICAgICogd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3Bw
OgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmhhbmRsZUNhbGxiYWNrKToKKyAgICAgICAgKFdU
Rjo6V29ya1F1ZXVlOjpyZWdpc3RlckhhbmRsZSk6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
dW5yZWdpc3RlckFuZENsb3NlSGFuZGxlKToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjp1bnJl
Z2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbik6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbUNhbGxiYWNrKToKKwogMjAxNy0xMC0wMyAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgYXNzaWduaW5n
IFdlYWtQdHI8RGVyaXZlZD4gdG8gV2Vha1B0cjxCYXNlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFr
ZQppbmRleCA1Y2ZlYzA3Li43YzZmZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAt
MTEsNiArMTEsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIHdpbi9NZW1vcnlGb290
cHJpbnRXaW4uY3BwCiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKICAgICB3
aW4vUnVuTG9vcFdpbi5jcHAKKyAgICB3aW4vV29ya0l0ZW1XaW4uY3BwCiAgICAgd2luL1dvcmtR
dWV1ZVdpbi5jcHAKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCBkNzc4NjBmLi5mZDkzZTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9X
b3JrUXVldWUuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0
IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDggKzM4LDEwIEBACiAjZW5k
aWYKIAogI2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvd2luL1dvcmtJdGVtV2luLmg+CiAjZW5kaWYKIAogI2lm
IFVTRShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCkBAIC03NCw2
ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBj
b25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KICNlbGlmIFVTRShHTElCX0VWRU5UX0xP
T1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNv
bnN0IHsgcmV0dXJuICptX3J1bkxvb3A7IH0KKyNlbGlmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1Ap
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0ZXJIYW5kbGUoSEFORExFLCBGdW5j
dGlvbjx2b2lkKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHVucmVnaXN0ZXJB
bmRDbG9zZUhhbmRsZShIQU5ETEUpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC04MywxMiArODks
MTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCiAjaWYgVVNF
KFdJTkRPV1NfRVZFTlRfTE9PUCkKKyAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyBoYW5kbGVDYWxs
YmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRp
YyB2b2lkIENBTExCQUNLIHRpbWVyQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1l
ck9yV2FpdEZpcmVkKTsKICAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIHdvcmtUaHJlYWRDYWxsYmFj
ayh2b2lkKiBjb250ZXh0KTsKIAogICAgIGJvb2wgdHJ5UmVnaXN0ZXJBc1dvcmtUaHJlYWQoKTsK
ICAgICB2b2lkIHVucmVnaXN0ZXJBc1dvcmtUaHJlYWQoKTsKICAgICB2b2lkIHBlcmZvcm1Xb3Jr
T25SZWdpc3RlcmVkV29ya1RocmVhZCgpOworCisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3Rlcldh
aXRBbmREZXN0cm95SXRlbVNvb24oUmVmUHRyPEhhbmRsZVdvcmtJdGVtPik7CisgICAgc3RhdGlj
IERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sodm9pZCog
Y29udGV4dCk7CiAjZW5kaWYKIAogI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQpAQCAtMTAwLDYg
KzExMCw5IEBAIHByaXZhdGU6CiAgICAgTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKICAgICBW
ZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9mdW5jdGlvblF1ZXVlOwogCisgICAgTXV0ZXggbV9p
dGVtc0xvY2s7CisgICAgSGFzaE1hcDxIQU5ETEUsIFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4gPiBt
X2l0ZW1zOworCiAgICAgSEFORExFIG1fdGltZXJRdWV1ZTsKICNlbGlmIFVTRShHTElCX0VWRU5U
X0xPT1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAgUmVmUHRyPFRocmVhZD4gbV93
b3JrUXVldWVUaHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVl
V2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwCmluZGV4IGUwMTFj
ZWQuLjc5MWEwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwCkBAIC0xLDI3ICsx
LDI4IEBACiAvKgotKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0qIGFyZSBtZXQ6Ci0q
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotKgotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0qIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0qIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0qIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0qIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0qIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSov
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKQEAgLTMxLDYgKzMyLDUwIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCit2b2lkIFdvcmtR
dWV1ZTo6aGFuZGxlQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZp
cmVkKQoreworICAgIEFTU0VSVF9BUkcoY29udGV4dCwgY29udGV4dCk7CisgICAgQVNTRVJUX0FS
Ryh0aW1lck9yV2FpdEZpcmVkLCAhdGltZXJPcldhaXRGaXJlZCk7CisKKyAgICBIYW5kbGVXb3Jr
SXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PEhhbmRsZVdvcmtJdGVtKj4oY29udGV4dCk7CisgICAg
V29ya1F1ZXVlKiBxdWV1ZSA9IGl0ZW0tPnF1ZXVlKCk7CisKKyAgICBSZWZQdHI8SGFuZGxlV29y
a0l0ZW0+IHByb3RlY3RvcihpdGVtKTsKKyAgICBxdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3Rvcl0g
eworICAgICAgICBwcm90ZWN0b3ItPmZ1bmN0aW9uKCkoKTsKKyAgICB9KTsKK30KKwordm9pZCBX
b3JrUXVldWU6OnJlZ2lzdGVySGFuZGxlKEhBTkRMRSBoYW5kbGUsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBmdW5jdGlvbikKK3sKKyAgICBSZWZQdHI8SGFuZGxlV29ya0l0ZW0+IGhhbmRsZUl0ZW0gPSBI
YW5kbGVXb3JrSXRlbTo6Y3JlYXRlQnlBZG9wdGluZ0hhbmRsZShoYW5kbGUsIFdURk1vdmUoZnVu
Y3Rpb24pLCB0aGlzKTsKKworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX2l0ZW1z
TG9jayk7CisgICAgICAgIEFTU0VSVF9BUkcoaGFuZGxlLCAhbV9pdGVtcy5jb250YWlucyhoYW5k
bGUpKTsKKyAgICAgICAgbV9pdGVtcy5zZXQoaGFuZGxlLCBoYW5kbGVJdGVtKTsKKyAgICB9CisK
KyAgICBIQU5ETEUgd2FpdEhhbmRsZTsKKyAgICBpZiAoITo6UmVnaXN0ZXJXYWl0Rm9yU2luZ2xl
T2JqZWN0KCZ3YWl0SGFuZGxlLCBoYW5kbGUsIGhhbmRsZUNhbGxiYWNrLCBoYW5kbGVJdGVtLmdl
dCgpLCBJTkZJTklURSwgV1RfRVhFQ1VURURFRkFVTFQpKSB7CisgICAgICAgIERXT1JEIGVycm9y
ID0gOjpHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorICAgIGhhbmRsZUl0ZW0tPnNldFdhaXRIYW5kbGUod2FpdEhhbmRsZSk7Cit9CisKK3ZvaWQg
V29ya1F1ZXVlOjp1bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUoSEFORExFIGhhbmRsZSkKK3sKKyAg
ICBSZWZQdHI8SGFuZGxlV29ya0l0ZW0+IGl0ZW07CisgICAgeworICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9pdGVtc0xvY2spOworICAgICAgICBBU1NFUlRfQVJHKGhhbmRsZSwgbV9pdGVt
cy5jb250YWlucyhoYW5kbGUpKTsKKyAgICAgICAgaXRlbSA9IG1faXRlbXMudGFrZShoYW5kbGUp
OworICAgIH0KKworICAgIHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKGl0ZW0pOwor
fQorCiBEV09SRCBXb3JrUXVldWU6OndvcmtUaHJlYWRDYWxsYmFjayh2b2lkKiBjb250ZXh0KQog
ewogICAgIEFTU0VSVF9BUkcoY29udGV4dCwgY29udGV4dCk7CkBAIC0xOTAsNCArMjM1LDI5IEBA
IHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0aW9u
PHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAordm9pZCBX
b3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKFJlZlB0cjxIYW5kbGVX
b3JrSXRlbT4gaXRlbSkKK3sKKyAgICAvLyBXZSdyZSBnb2luZyB0byBtYWtlIGEgYmxvY2tpbmcg
Y2FsbCB0byA6OlVucmVnaXN0ZXJXYWl0RXggYmVmb3JlIGNsb3NpbmcgdGhlIGhhbmRsZS4gKFRo
ZQorICAgIC8vIGJsb2NraW5nIHZlcnNpb24gb2YgOjpVbnJlZ2lzdGVyV2FpdEV4IGlzIG11Y2gg
c2ltcGxlciB0aGFuIHRoZSBub24tYmxvY2tpbmcgdmVyc2lvbi4pIElmIHdlCisgICAgLy8gZG8g
dGhpcyBvbiB0aGUgY3VycmVudCB0aHJlYWQsIHdlJ2xsIGRlYWRsb2NrIGlmIHdlJ3JlIGN1cnJl
bnRseSBpbiBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvcgorICAgIC8vIHRoZSB3YWl0IHdlJ3JlIHVu
cmVnaXN0ZXJpbmcuIFNvIGluc3RlYWQgd2UgZG8gaXQgYXN5bmNocm9ub3VzbHkgb24gc29tZSBv
dGhlciB3b3JrZXIgdGhyZWFkLgorCisgICAgOjpRdWV1ZVVzZXJXb3JrSXRlbSh1bnJlZ2lzdGVy
V2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2ssIGl0ZW0ubGVha1JlZigpLCBXVF9FWEVDVVRFREVG
QVVMVCk7Cit9CisKK0RXT1JEIFdJTkFQSSBXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVz
dHJveUl0ZW1DYWxsYmFjayh2b2lkKiBjb250ZXh0KQoreworICAgIEFTU0VSVF9BUkcoY29udGV4
dCwgY29udGV4dCk7CisgICAgUmVmUHRyPEhhbmRsZVdvcmtJdGVtPiBpdGVtID0gYWRvcHRSZWYo
c3RhdGljX2Nhc3Q8SGFuZGxlV29ya0l0ZW0qPihjb250ZXh0KSk7CisKKyAgICAvLyBOb3cgdGhh
dCB3ZSBrbm93IHdlJ3JlIG5vdCBpbiBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgd2FpdCB3
ZSdyZSB1bnJlZ2lzdGVyaW5nLCB3ZSBjYW4KKyAgICAvLyBtYWtlIGEgYmxvY2tpbmcgY2FsbCB0
byA6OlVucmVnaXN0ZXJXYWl0RXguCisgICAgaWYgKCE6OlVucmVnaXN0ZXJXYWl0RXgoaXRlbS0+
d2FpdEhhbmRsZSgpLCBJTlZBTElEX0hBTkRMRV9WQUxVRSkpIHsKKyAgICAgICAgRFdPUkQgZXJy
b3IgPSA6OkdldExhc3RFcnJvcigpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1XaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2lu
L1dvcmtJdGVtV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTYz
MzI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtV2luLmNw
cApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IElu
dGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdpbi5oPgorCisjaW5jbHVkZSA8V2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitXb3JrSXRlbVdpbjo6V29ya0l0ZW1XaW4oRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgIDogbV9mdW5jdGlv
bihXVEZNb3ZlKGZ1bmN0aW9uKSkKKyAgICAsIG1fcXVldWUocXVldWUpCit7Cit9CisKK1JlZlB0
cjxXb3JrSXRlbVdpbj4gV29ya0l0ZW1XaW46OmNyZWF0ZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVu
Y3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3Jr
SXRlbVdpbihXVEZNb3ZlKGZ1bmN0aW9uKSwgcXVldWUpKTsKK30KKworV29ya0l0ZW1XaW46On5X
b3JrSXRlbVdpbigpCit7Cit9CisKK0hhbmRsZVdvcmtJdGVtOjpIYW5kbGVXb3JrSXRlbShIQU5E
TEUgaGFuZGxlLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUp
CisgICAgOiBXb3JrSXRlbVdpbihXVEZNb3ZlKGZ1bmN0aW9uKSwgcXVldWUpCisgICAgLCBtX2hh
bmRsZShoYW5kbGUpCisgICAgLCBtX3dhaXRIYW5kbGUoMCkKK3sKKyAgICBBU1NFUlRfQVJHKGhh
bmRsZSwgaGFuZGxlKTsKK30KKworUmVmUHRyPEhhbmRsZVdvcmtJdGVtPiBIYW5kbGVXb3JrSXRl
bTo6Y3JlYXRlQnlBZG9wdGluZ0hhbmRsZShIQU5ETEUgaGFuZGxlLCBGdW5jdGlvbjx2b2lkKCk+
JiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIYW5kbGVXb3JrSXRlbShoYW5kbGUsIFdURk1vdmUoZnVuY3Rpb24pLCBxdWV1ZSkpOworfQor
CitIYW5kbGVXb3JrSXRlbTo6fkhhbmRsZVdvcmtJdGVtKCkKK3sKKyAgICA6OkNsb3NlSGFuZGxl
KG1faGFuZGxlKTsKK30KK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvd2luL1dvcmtJdGVtV2luLmggYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1XaW4u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjU3NzI0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtV2luLmgKQEAgLTAsMCArMSw3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxp
dHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxXaW5kb3dzLmg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRl
IDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
Y2xhc3MgV29ya1F1ZXVlOworCitjbGFzcyBXb3JrSXRlbVdpbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxXb3JrSXRlbVdpbj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8V29y
a0l0ZW1XaW4+IGNyZWF0ZShGdW5jdGlvbjx2b2lkKCk+JiYsIFdvcmtRdWV1ZSopOworICAgIHZp
cnR1YWwgfldvcmtJdGVtV2luKCk7CisKKyAgICBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbigp
IHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KKyAgICBXb3JrUXVldWUqIHF1ZXVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgV29ya0l0ZW1XaW4oRnVu
Y3Rpb248dm9pZCgpPiYmLCBXb3JrUXVldWUqKTsKKworcHJpdmF0ZToKKyAgICBGdW5jdGlvbjx2
b2lkKCk+IG1fZnVuY3Rpb247CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKK307CisK
K2NsYXNzIEhhbmRsZVdvcmtJdGVtIDogcHVibGljIFdvcmtJdGVtV2luIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmUHRyPEhhbmRsZVdvcmtJdGVtPiBjcmVhdGVCeUFkb3B0aW5nSGFuZGxlKEhB
TkRMRSwgRnVuY3Rpb248dm9pZCgpPiYmLCBXb3JrUXVldWUqKTsKKyAgICB2aXJ0dWFsIH5IYW5k
bGVXb3JrSXRlbSgpOworCisgICAgdm9pZCBzZXRXYWl0SGFuZGxlKEhBTkRMRSB3YWl0SGFuZGxl
KSB7IG1fd2FpdEhhbmRsZSA9IHdhaXRIYW5kbGU7IH0KKyAgICBIQU5ETEUgd2FpdEhhbmRsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2FpdEhhbmRsZTsgfQorCitwcml2YXRlOgorICAgIEhhbmRsZVdv
cmtJdGVtKEhBTkRMRSwgRnVuY3Rpb248dm9pZCgpPiYmLCBXb3JrUXVldWUqKTsKKworICAgIEhB
TkRMRSBtX2hhbmRsZTsKKyAgICBIQU5ETEUgbV93YWl0SGFuZGxlOworfTsKKworfQo=
</data>
<flag name="review"
          id="342806"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323984</attachid>
            <date>2017-10-16 20:45:31 -0700</date>
            <delta_ts>2017-10-16 23:51:42 -0700</delta_ts>
            <desc>[PATCH] Add WTF files for WinCairo WebKit</desc>
            <filename>bz176894-5.patch</filename>
            <type>text/plain</type>
            <size>14629</size>
            <attacher name="Yousuke Kimoto">Yousuke.Kimoto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNTU0NTAxYy4uY2UwMzNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0xMC0xNiAg
WW91c3VrZSBLaW1vdG8gIDx5b3VzdWtlLmtpbW90b0Bzb255LmNvbT4KKworICAgICAgICBbV2lu
Q2Fpcm9dIEFkZCBXVEYgZmlsZXMgZm9yIHdpbmNhaXJvIHdlYmtpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XaW4uY21ha2U6
CisgICAgICAgICogd3RmL1dvcmtRdWV1ZS5oOgorICAgICAgICAqIHd0Zi93aW4vV29ya0l0ZW1D
b250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6V29ya0l0
ZW1Db250ZXh0KToKKyAgICAgICAgKFdURjo6V29ya0l0ZW1Db250ZXh0OjpjcmVhdGUpOgorICAg
ICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6On5Xb3JrSXRlbUNvbnRleHQpOgorICAgICAgICAq
IHd0Zi93aW4vV29ya0l0ZW1Db250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpXb3JrSXRl
bUNvbnRleHQ6OmhhbmRsZSk6CisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6d2FpdEhh
bmRsZSk6CisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6d2FpdEhhbmRsZVB0cik6Cisg
ICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6RnVuY3Rpb248dm9pZCk6CisgICAgICAgIChX
VEY6OldvcmtJdGVtQ29udGV4dDo6cXVldWUgY29uc3QpOgorICAgICAgICAqIHd0Zi93aW4vV29y
a1F1ZXVlV2luLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayk6
CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6cmVnaXN0ZXJIYW5kbGUpOgorICAgICAgICAoV1RG
OjpXb3JrUXVldWU6OnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZSk6CisgICAgICAgIChXVEY6Oldv
cmtRdWV1ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24pOgorICAgICAgICAoV1RG
OjpXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1DYWxsYmFjayk6CisKIDIw
MTctMTAtMTYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigpIG1hY3JvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDVjZmVjMDcuLjdjNmZkOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtV2luLmNtYWtlCkBAIC0xMSw2ICsxMSw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAg
ICAgd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAKICAgICB3aW4vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyV2luLmNwcAogICAgIHdpbi9SdW5Mb29wV2luLmNwcAorICAgIHdpbi9Xb3JrSXRlbVdpbi5j
cHAKICAgICB3aW4vV29ya1F1ZXVlV2luLmNwcAogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCmluZGV4IGQ3Nzg2
MGYuLjcwY2MwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcs
OCArMzgsMTAgQEAKICNlbmRpZgogCiAjaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi93aW4vV29ya0l0ZW1Db250
ZXh0Lmg+CiAjZW5kaWYKIAogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShHRU5FUklD
X0VWRU5UX0xPT1ApCkBAIC03NCw2ICs3Nyw5IEBAIHB1YmxpYzoKICAgICBkaXNwYXRjaF9xdWV1
ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KICNl
bGlmIFVTRShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAg
UnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7IH0KKyNlbGlmIFVT
RShXSU5ET1dTX0VWRU5UX0xPT1ApCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVnaXN0
ZXJIYW5kbGUoSEFORExFLCBGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZShIQU5ETEUpOwogI2VuZGlmCiAKIHBy
aXZhdGU6CkBAIC04MywxMiArODksMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW52
YWxpZGF0ZSgpOwogCiAjaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKKyAgICBzdGF0aWMgdm9p
ZCBDQUxMQkFDSyBoYW5kbGVDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JX
YWl0RmlyZWQpOwogICAgIHN0YXRpYyB2b2lkIENBTExCQUNLIHRpbWVyQ2FsbGJhY2sodm9pZCog
Y29udGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVkKTsKICAgICBzdGF0aWMgRFdPUkQgV0lO
QVBJIHdvcmtUaHJlYWRDYWxsYmFjayh2b2lkKiBjb250ZXh0KTsKIAogICAgIGJvb2wgdHJ5UmVn
aXN0ZXJBc1dvcmtUaHJlYWQoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJBc1dvcmtUaHJlYWQoKTsK
ICAgICB2b2lkIHBlcmZvcm1Xb3JrT25SZWdpc3RlcmVkV29ya1RocmVhZCgpOworCisgICAgc3Rh
dGljIHZvaWQgdW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24oUmVmPFdvcmtJdGVtQ29u
dGV4dD4mJik7CisgICAgc3RhdGljIERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ry
b3lJdGVtQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAogI2lmIFVTRShDT0NPQV9F
VkVOVF9MT09QKQpAQCAtMTAwLDYgKzExMCw5IEBAIHByaXZhdGU6CiAgICAgTXV0ZXggbV9mdW5j
dGlvblF1ZXVlTG9jazsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9mdW5jdGlvblF1
ZXVlOwogCisgICAgTXV0ZXggbV9pdGVtc01hcExvY2s7CisgICAgSGFzaE1hcDxIQU5ETEUsIFJl
ZjxXb3JrSXRlbUNvbnRleHQ+PiBtX2l0ZW1zTWFwOworCiAgICAgSEFORExFIG1fdGltZXJRdWV1
ZTsKICNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1ApIHx8IFVTRShHRU5FUklDX0VWRU5UX0xPT1Ap
CiAgICAgUmVmUHRyPFRocmVhZD4gbV93b3JrUXVldWVUaHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1Db250ZXh0LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9X
b3JrSXRlbUNvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE5
ZGVlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1Db250
ZXh0LmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaD4KKworI2luY2x1
ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L1dvcmtRdWV1ZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworV29ya0l0ZW1Db250ZXh0OjpXb3Jr
SXRlbUNvbnRleHQoSEFORExFIGhhbmRsZSwgSEFORExFIHdhaXRIYW5kbGUsIEZ1bmN0aW9uPHZv
aWQoKT4mJiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKKyAgICA6IG1faGFuZGxlKGhhbmRs
ZSkKKyAgICAsIG1fd2FpdEhhbmRsZSh3YWl0SGFuZGxlKQorICAgICwgbV9mdW5jdGlvbihXVEZN
b3ZlKGZ1bmN0aW9uKSkKKyAgICAsIG1fcXVldWUocXVldWUpCit7CisgICAgLy8gaG93IHRvIGRl
bGV0ZSBoYW5kbGVzPz8KKyAgICBBU1NFUlRfQVJHKGhhbmRsZSwgaGFuZGxlKTsKKyAgICBBU1NF
UlRfQVJHKHdhaXRIYW5kbGUsIHdhaXRIYW5kbGUpOworICAgIEFTU0VSVF9BUkcocXVldWUsIHF1
ZXVlKTsKK30KKworUmVmPFdvcmtJdGVtQ29udGV4dD4gV29ya0l0ZW1Db250ZXh0OjpjcmVhdGUo
SEFORExFIGhhbmRsZSwgSEFORExFIHdhaXRIYW5kbGUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5j
dGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3Jr
SXRlbUNvbnRleHQoaGFuZGxlLCB3YWl0SGFuZGxlLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgcXVldWUp
KTsKK30KKworV29ya0l0ZW1Db250ZXh0Ojp+V29ya0l0ZW1Db250ZXh0KCkKK3sKKyAgICA6OkNs
b3NlSGFuZGxlKG1faGFuZGxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1Db250ZXh0LmggYi9Tb3VyY2UvV1RGL3d0Zi93
aW4vV29ya0l0ZW1Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4u
NDI3NDU5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNv
bnRleHQuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAo
YykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRl
IDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBXb3JrUXVldWU7CisKK2NsYXNzIFdvcmtJdGVt
Q29udGV4dCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrSXRlbUNvbnRleHQ+IHsK
KworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V29ya0l0ZW1Db250ZXh0PiBjcmVhdGUoSEFORExF
LCBIQU5ETEUsIEZ1bmN0aW9uPHZvaWQoKT4mJiwgV29ya1F1ZXVlKik7CisgICAgdmlydHVhbCB+
V29ya0l0ZW1Db250ZXh0KCk7CisKKyAgICBIQU5ETEUgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5k
bGU7ICB9CisgICAgSEFORExFIHdhaXRIYW5kbGUoKSB7IHJldHVybiBtX3dhaXRIYW5kbGU7IH0K
KyAgICBIQU5ETEUqIHdhaXRIYW5kbGVQdHIoKSB7IHJldHVybiAmbV93YWl0SGFuZGxlOyB9Cisg
ICAgRnVuY3Rpb248dm9pZCgpPiYgZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0aW9uOyB9Cisg
ICAgV29ya1F1ZXVlKiBxdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWUuZ2V0KCk7IH0KKwor
cHJpdmF0ZToKKyAgICBXb3JrSXRlbUNvbnRleHQoSEFORExFLCBIQU5ETEUsIEZ1bmN0aW9uPHZv
aWQoKT4mJiwgV29ya1F1ZXVlKik7CisKKyAgICBIQU5ETEUgbV9oYW5kbGU7CisgICAgSEFORExF
IG1fd2FpdEhhbmRsZTsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb24gPSB7IH07Cisg
ICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtR
dWV1ZVdpbi5jcHAKaW5kZXggZTAxMWNlZC4uN2NkYmEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtR
dWV1ZVdpbi5jcHAKQEAgLTEsMjcgKzEsMjggQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSogYXJlIG1ldDoKLSogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0qICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0qCi0qIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0qIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0qIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0qIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0qIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0qIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgpAQCAtMzEsNiArMzIsNDIgQEAKIAogbmFtZXNw
YWNlIFdURiB7CiAKK3ZvaWQgV29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayh2b2lkKiBkYXRhLCBC
T09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpCit7CisgICAgQVNTRVJUX0FSRyhkYXRhLCBkYXRhKTsK
KyAgICBBU1NFUlRfQVJHKHRpbWVyT3JXYWl0RmlyZWQsICF0aW1lck9yV2FpdEZpcmVkKTsKKwor
ICAgIFdvcmtJdGVtQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtJdGVtQ29udGV4
dCo+KGRhdGEpOworICAgIFdvcmtRdWV1ZSogcXVldWUgPSBjb250ZXh0LT5xdWV1ZSgpOworCisg
ICAgUmVmUHRyPFdvcmtJdGVtQ29udGV4dD4gcHJvdGVjdG9yKGNvbnRleHQpOworICAgIHF1ZXVl
LT5kaXNwYXRjaChbcHJvdGVjdG9yXSB7CisgICAgICAgIHByb3RlY3Rvci0+ZnVuY3Rpb24oKSgp
OworICAgIH0pOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJIYW5kbGUoSEFORExFIGhh
bmRsZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIFJlZjxXb3JrSXRlbUNv
bnRleHQ+IGNvbnRleHQgPSBXb3JrSXRlbUNvbnRleHQ6OmNyZWF0ZShoYW5kbGUsIG51bGxwdHIs
IFdURk1vdmUoZnVuY3Rpb24pLCB0aGlzKTsKKworICAgIGlmICghOjpSZWdpc3RlcldhaXRGb3JT
aW5nbGVPYmplY3QoY29udGV4dC0+d2FpdEhhbmRsZVB0cigpLCBoYW5kbGUsIGhhbmRsZUNhbGxi
YWNrLCBjb250ZXh0LnB0cigpLCBJTkZJTklURSwgV1RfRVhFQ1VURURFRkFVTFQpKQorICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fdGltZXJRdWV1ZSwgIjo6UmVnaXN0ZXJXYWl0Rm9yU2lu
Z2xlT2JqZWN0ICVsdSIsIDo6R2V0TGFzdEVycm9yKCkpOworCisgICAgeworICAgICAgICBNdXRl
eExvY2tlciBsb2NrKG1faXRlbXNNYXBMb2NrKTsKKyAgICAgICAgQVNTRVJUX0FSRyhoYW5kbGUs
ICFtX2l0ZW1zTWFwLmNvbnRhaW5zKGhhbmRsZSkpOworICAgICAgICBtX2l0ZW1zTWFwLnNldCho
YW5kbGUsIFdURk1vdmUoY29udGV4dCkpOworICAgIH0KK30KKwordm9pZCBXb3JrUXVldWU6OnVu
cmVnaXN0ZXJBbmRDbG9zZUhhbmRsZShIQU5ETEUgaGFuZGxlKQoreworICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX2l0ZW1zTWFwTG9jayk7CisgICAgQVNTRVJUX0FSRyhoYW5kbGUsIG1faXRlbXMu
Y29udGFpbnMoaGFuZGxlKSk7CisKKyAgICB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29v
bihXVEZNb3ZlKG1faXRlbXNNYXAudGFrZShoYW5kbGUpLnZhbHVlKCkpKTsKK30KKwogRFdPUkQg
V29ya1F1ZXVlOjp3b3JrVGhyZWFkQ2FsbGJhY2sodm9pZCogY29udGV4dCkKIHsKICAgICBBU1NF
UlRfQVJHKGNvbnRleHQsIGNvbnRleHQpOwpAQCAtMTkwLDQgKzIyNywyNiBAQCB2b2lkIFdvcmtR
dWV1ZTo6ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24pCiAgICAgY29udGV4dC5sZWFrUmVmKCk7CiB9CiAKK3ZvaWQgV29ya1F1ZXVlOjp1
bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbihSZWY8V29ya0l0ZW1Db250ZXh0PiYmIHdv
cmtJdGVtKQoreworICAgIC8vIFdlJ3JlIGdvaW5nIHRvIG1ha2UgYSBibG9ja2luZyBjYWxsIHRv
IDo6VW5yZWdpc3RlcldhaXRFeCBiZWZvcmUgY2xvc2luZyB0aGUgaGFuZGxlLiAoVGhlCisgICAg
Ly8gYmxvY2tpbmcgdmVyc2lvbiBvZiA6OlVucmVnaXN0ZXJXYWl0RXggaXMgbXVjaCBzaW1wbGVy
IHRoYW4gdGhlIG5vbi1ibG9ja2luZyB2ZXJzaW9uLikgSWYgd2UKKyAgICAvLyBkbyB0aGlzIG9u
IHRoZSBjdXJyZW50IHRocmVhZCwgd2UnbGwgZGVhZGxvY2sgaWYgd2UncmUgY3VycmVudGx5IGlu
IGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yCisgICAgLy8gdGhlIHdhaXQgd2UncmUgdW5yZWdpc3Rl
cmluZy4gU28gaW5zdGVhZCB3ZSBkbyBpdCBhc3luY2hyb25vdXNseSBvbiBzb21lIG90aGVyIHdv
cmtlciB0aHJlYWQuCisgICAgOjpRdWV1ZVVzZXJXb3JrSXRlbSh1bnJlZ2lzdGVyV2FpdEFuZERl
c3Ryb3lJdGVtQ2FsbGJhY2ssIHdvcmtJdGVtLnB0cigpLCBXVF9FWEVDVVRFREVGQVVMVCk7Cit9
CisKK0RXT1JEIFdJTkFQSSBXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1D
YWxsYmFjayh2b2lkKiBkYXRhKQoreworICAgIEFTU0VSVF9BUkcoY29udGV4dCwgY29udGV4dCk7
CisgICAgV29ya0l0ZW1Db250ZXh0KiB3b3JrSXRlbSA9IHN0YXRpY19jYXN0PFdvcmtJdGVtQ29u
dGV4dCo+KGRhdGEpOworCisgICAgLy8gTm93IHRoYXQgd2Uga25vdyB3ZSdyZSBub3QgaW4gYSBj
YWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIHdhaXQgd2UncmUgdW5yZWdpc3RlcmluZywgd2UgY2Fu
CisgICAgLy8gbWFrZSBhIGJsb2NraW5nIGNhbGwgdG8gOjpVbnJlZ2lzdGVyV2FpdEV4LgorICAg
IGlmICghOjpVbnJlZ2lzdGVyV2FpdEV4KHdvcmtJdGVtLT53YWl0SGFuZGxlKCksIElOVkFMSURf
SEFORExFX1ZBTFVFKSkKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShmYWxzZSwgIjo6VW5y
ZWdpc3RlcldhaXRFeCBmYWlsZWQgd2l0aCAnJXMnIiwgOjpHZXRMYXN0RXJyb3IoKSk7CisKKyAg
ICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323999</attachid>
            <date>2017-10-16 23:51:42 -0700</date>
            <delta_ts>2017-10-17 10:07:06 -0700</delta_ts>
            <desc>[PATCH] Add WTF files for WinCairo WebKit</desc>
            <filename>bz176894-6.patch</filename>
            <type>text/plain</type>
            <size>14633</size>
            <attacher name="Yousuke Kimoto">Yousuke.Kimoto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNTU0NTAxYy4uY2UwMzNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0xMC0xNiAg
WW91c3VrZSBLaW1vdG8gIDx5b3VzdWtlLmtpbW90b0Bzb255LmNvbT4KKworICAgICAgICBbV2lu
Q2Fpcm9dIEFkZCBXVEYgZmlsZXMgZm9yIHdpbmNhaXJvIHdlYmtpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XaW4uY21ha2U6
CisgICAgICAgICogd3RmL1dvcmtRdWV1ZS5oOgorICAgICAgICAqIHd0Zi93aW4vV29ya0l0ZW1D
b250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6V29ya0l0
ZW1Db250ZXh0KToKKyAgICAgICAgKFdURjo6V29ya0l0ZW1Db250ZXh0OjpjcmVhdGUpOgorICAg
ICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6On5Xb3JrSXRlbUNvbnRleHQpOgorICAgICAgICAq
IHd0Zi93aW4vV29ya0l0ZW1Db250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpXb3JrSXRl
bUNvbnRleHQ6OmhhbmRsZSk6CisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6d2FpdEhh
bmRsZSk6CisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6d2FpdEhhbmRsZVB0cik6Cisg
ICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6RnVuY3Rpb248dm9pZCk6CisgICAgICAgIChX
VEY6OldvcmtJdGVtQ29udGV4dDo6cXVldWUgY29uc3QpOgorICAgICAgICAqIHd0Zi93aW4vV29y
a1F1ZXVlV2luLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayk6
CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6cmVnaXN0ZXJIYW5kbGUpOgorICAgICAgICAoV1RG
OjpXb3JrUXVldWU6OnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZSk6CisgICAgICAgIChXVEY6Oldv
cmtRdWV1ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24pOgorICAgICAgICAoV1RG
OjpXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1DYWxsYmFjayk6CisKIDIw
MTctMTAtMTYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigpIG1hY3JvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDVjZmVjMDcuLmEyNDU0YWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtV2luLmNtYWtlCkBAIC0xMSw2ICsxMSw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAg
ICAgd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAKICAgICB3aW4vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyV2luLmNwcAogICAgIHdpbi9SdW5Mb29wV2luLmNwcAorICAgIHdpbi9Xb3JrSXRlbUNvbnRl
eHQuY3BwCiAgICAgd2luL1dvcmtRdWV1ZVdpbi5jcHAKICkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCBk
Nzc4NjBmLi43MGNjMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3Rp
dmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM3LDggKzM4LDEwIEBACiAjZW5kaWYKIAogI2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvd2luL1dvcmtJdGVt
Q29udGV4dC5oPgogI2VuZGlmCiAKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VO
RVJJQ19FVkVOVF9MT09QKQpAQCAtNzQsNiArNzcsOSBAQCBwdWJsaWM6CiAgICAgZGlzcGF0Y2hf
cXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9
CiAjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQog
ICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9CisjZWxp
ZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJl
Z2lzdGVySGFuZGxlKEhBTkRMRSwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCB1bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUoSEFORExFKTsKICNlbmRpZgog
CiBwcml2YXRlOgpAQCAtODMsMTIgKzg5LDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9y
bUludmFsaWRhdGUoKTsKIAogI2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCisgICAgc3RhdGlj
IHZvaWQgQ0FMTEJBQ0sgaGFuZGxlQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1l
ck9yV2FpdEZpcmVkKTsKICAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyB0aW1lckNhbGxiYWNrKHZv
aWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGljIERXT1JE
IFdJTkFQSSB3b3JrVGhyZWFkQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAKICAgICBib29sIHRy
eVJlZ2lzdGVyQXNXb3JrVGhyZWFkKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQXNXb3JrVGhyZWFk
KCk7CiAgICAgdm9pZCBwZXJmb3JtV29ya09uUmVnaXN0ZXJlZFdvcmtUaHJlYWQoKTsKKworICAg
IHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKFJlZjxXb3JrSXRl
bUNvbnRleHQ+JiYpOworICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgdW5yZWdpc3RlcldhaXRBbmRE
ZXN0cm95SXRlbUNhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwogI2VuZGlmCiAKICNpZiBVU0UoQ09D
T0FfRVZFTlRfTE9PUCkKQEAgLTEwMCw2ICsxMTAsOSBAQCBwcml2YXRlOgogICAgIE11dGV4IG1f
ZnVuY3Rpb25RdWV1ZUxvY2s7CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnVuY3Rp
b25RdWV1ZTsKIAorICAgIE11dGV4IG1faXRlbXNNYXBMb2NrOworICAgIEhhc2hNYXA8SEFORExF
LCBSZWY8V29ya0l0ZW1Db250ZXh0Pj4gbV9pdGVtc01hcDsKKwogICAgIEhBTkRMRSBtX3RpbWVy
UXVldWU7CiAjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9M
T09QKQogICAgIFJlZlB0cjxUaHJlYWQ+IG1fd29ya1F1ZXVlVGhyZWFkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtQ29udGV4dC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93
aW4vV29ya0l0ZW1Db250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
Li4xOWRlZWI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVt
Q29udGV4dC5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi93aW4vV29ya0l0ZW1Db250ZXh0Lmg+CisKKyNp
bmNsdWRlIDxXaW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUg
PHd0Zi9Xb3JrUXVldWUuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1dvcmtJdGVtQ29udGV4dDo6
V29ya0l0ZW1Db250ZXh0KEhBTkRMRSBoYW5kbGUsIEhBTkRMRSB3YWl0SGFuZGxlLCBGdW5jdGlv
bjx2b2lkKCk+JiYgZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCisgICAgOiBtX2hhbmRsZSho
YW5kbGUpCisgICAgLCBtX3dhaXRIYW5kbGUod2FpdEhhbmRsZSkKKyAgICAsIG1fZnVuY3Rpb24o
V1RGTW92ZShmdW5jdGlvbikpCisgICAgLCBtX3F1ZXVlKHF1ZXVlKQoreworICAgIC8vIGhvdyB0
byBkZWxldGUgaGFuZGxlcz8/CisgICAgQVNTRVJUX0FSRyhoYW5kbGUsIGhhbmRsZSk7CisgICAg
QVNTRVJUX0FSRyh3YWl0SGFuZGxlLCB3YWl0SGFuZGxlKTsKKyAgICBBU1NFUlRfQVJHKHF1ZXVl
LCBxdWV1ZSk7Cit9CisKK1JlZjxXb3JrSXRlbUNvbnRleHQ+IFdvcmtJdGVtQ29udGV4dDo6Y3Jl
YXRlKEhBTkRMRSBoYW5kbGUsIEhBTkRMRSB3YWl0SGFuZGxlLCBGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V29ya0l0ZW1Db250ZXh0KGhhbmRsZSwgd2FpdEhhbmRsZSwgV1RGTW92ZShmdW5jdGlvbiksIHF1
ZXVlKSk7Cit9CisKK1dvcmtJdGVtQ29udGV4dDo6fldvcmtJdGVtQ29udGV4dCgpCit7CisgICAg
OjpDbG9zZUhhbmRsZShtX2hhbmRsZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtQ29udGV4dC5oIGIvU291cmNlL1dURi93
dGYvd2luL1dvcmtJdGVtQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAuLjQyNzQ1OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0
ZW1Db250ZXh0LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmln
aHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXaW5kb3dzLmg+CisjaW5j
bHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgV29ya1F1ZXVlOworCitjbGFzcyBXb3Jr
SXRlbUNvbnRleHQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V29ya0l0ZW1Db250ZXh0
PiB7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdvcmtJdGVtQ29udGV4dD4gY3JlYXRlKEhB
TkRMRSwgSEFORExFLCBGdW5jdGlvbjx2b2lkKCk+JiYsIFdvcmtRdWV1ZSopOworICAgIHZpcnR1
YWwgfldvcmtJdGVtQ29udGV4dCgpOworCisgICAgSEFORExFIGhhbmRsZSgpIHsgcmV0dXJuIG1f
aGFuZGxlOyAgfQorICAgIEhBTkRMRSB3YWl0SGFuZGxlKCkgeyByZXR1cm4gbV93YWl0SGFuZGxl
OyB9CisgICAgSEFORExFKiB3YWl0SGFuZGxlUHRyKCkgeyByZXR1cm4gJm1fd2FpdEhhbmRsZTsg
fQorICAgIEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsg
fQorICAgIFdvcmtRdWV1ZSogcXVldWUoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlLmdldCgpOyB9
CisKK3ByaXZhdGU6CisgICAgV29ya0l0ZW1Db250ZXh0KEhBTkRMRSwgSEFORExFLCBGdW5jdGlv
bjx2b2lkKCk+JiYsIFdvcmtRdWV1ZSopOworCisgICAgSEFORExFIG1faGFuZGxlOworICAgIEhB
TkRMRSBtX3dhaXRIYW5kbGU7CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uID0geyB9
OworICAgIFJlZlB0cjxXb3JrUXVldWU+IG1fcXVldWU7Cit9OworCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9X
b3JrUXVldWVXaW4uY3BwCmluZGV4IGUwMTFjZWQuLjdjZGJhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9X
b3JrUXVldWVXaW4uY3BwCkBAIC0xLDI3ICsxLDI4IEBACiAvKgotKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0qIGFyZSBtZXQ6Ci0qIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKgotKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0qIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0qIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0qIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0qIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0qIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXb3JrUXVldWUuaCIKQEAgLTMxLDYgKzMyLDQyIEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCit2b2lkIFdvcmtRdWV1ZTo6aGFuZGxlQ2FsbGJhY2sodm9pZCogZGF0
YSwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVkKQoreworICAgIEFTU0VSVF9BUkcoZGF0YSwgZGF0
YSk7CisgICAgQVNTRVJUX0FSRyh0aW1lck9yV2FpdEZpcmVkLCAhdGltZXJPcldhaXRGaXJlZCk7
CisKKyAgICBXb3JrSXRlbUNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrSXRlbUNv
bnRleHQqPihkYXRhKTsKKyAgICBXb3JrUXVldWUqIHF1ZXVlID0gY29udGV4dC0+cXVldWUoKTsK
KworICAgIFJlZlB0cjxXb3JrSXRlbUNvbnRleHQ+IHByb3RlY3Rvcihjb250ZXh0KTsKKyAgICBx
dWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3Rvcl0geworICAgICAgICBwcm90ZWN0b3ItPmZ1bmN0aW9u
KCkoKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVySGFuZGxlKEhBTkRM
RSBoYW5kbGUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3sKKyAgICBSZWY8V29ya0l0
ZW1Db250ZXh0PiBjb250ZXh0ID0gV29ya0l0ZW1Db250ZXh0OjpjcmVhdGUoaGFuZGxlLCBudWxs
cHRyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdGhpcyk7CisKKyAgICBpZiAoITo6UmVnaXN0ZXJXYWl0
Rm9yU2luZ2xlT2JqZWN0KGNvbnRleHQtPndhaXRIYW5kbGVQdHIoKSwgaGFuZGxlLCBoYW5kbGVD
YWxsYmFjaywgY29udGV4dC5wdHIoKSwgSU5GSU5JVEUsIFdUX0VYRUNVVEVERUZBVUxUKSkKKyAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3RpbWVyUXVldWUsICI6OlJlZ2lzdGVyV2FpdEZv
clNpbmdsZU9iamVjdCAlbHUiLCA6OkdldExhc3RFcnJvcigpKTsKKworICAgIHsKKyAgICAgICAg
TXV0ZXhMb2NrZXIgbG9jayhtX2l0ZW1zTWFwTG9jayk7CisgICAgICAgIEFTU0VSVF9BUkcoaGFu
ZGxlLCAhbV9pdGVtc01hcC5jb250YWlucyhoYW5kbGUpKTsKKyAgICAgICAgbV9pdGVtc01hcC5z
ZXQoaGFuZGxlLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICB9Cit9CisKK3ZvaWQgV29ya1F1ZXVl
Ojp1bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUoSEFORExFIGhhbmRsZSkKK3sKKyAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9pdGVtc01hcExvY2spOworICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBtX2l0
ZW1zLmNvbnRhaW5zKGhhbmRsZSkpOworCisgICAgdW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRl
bVNvb24oV1RGTW92ZShtX2l0ZW1zTWFwLnRha2UoaGFuZGxlKS52YWx1ZSgpKSk7Cit9CisKIERX
T1JEIFdvcmtRdWV1ZTo6d29ya1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRleHQpCiB7CiAgICAg
QVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKQEAgLTE5MCw0ICsyMjcsMjYgQEAgdm9pZCBX
b3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9pZCgp
PiYmIGZ1bmN0aW9uKQogICAgIGNvbnRleHQubGVha1JlZigpOwogfQogCit2b2lkIFdvcmtRdWV1
ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24oUmVmPFdvcmtJdGVtQ29udGV4dD4m
JiB3b3JrSXRlbSkKK3sKKyAgICAvLyBXZSdyZSBnb2luZyB0byBtYWtlIGEgYmxvY2tpbmcgY2Fs
bCB0byA6OlVucmVnaXN0ZXJXYWl0RXggYmVmb3JlIGNsb3NpbmcgdGhlIGhhbmRsZS4gKFRoZQor
ICAgIC8vIGJsb2NraW5nIHZlcnNpb24gb2YgOjpVbnJlZ2lzdGVyV2FpdEV4IGlzIG11Y2ggc2lt
cGxlciB0aGFuIHRoZSBub24tYmxvY2tpbmcgdmVyc2lvbi4pIElmIHdlCisgICAgLy8gZG8gdGhp
cyBvbiB0aGUgY3VycmVudCB0aHJlYWQsIHdlJ2xsIGRlYWRsb2NrIGlmIHdlJ3JlIGN1cnJlbnRs
eSBpbiBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvcgorICAgIC8vIHRoZSB3YWl0IHdlJ3JlIHVucmVn
aXN0ZXJpbmcuIFNvIGluc3RlYWQgd2UgZG8gaXQgYXN5bmNocm9ub3VzbHkgb24gc29tZSBvdGhl
ciB3b3JrZXIgdGhyZWFkLgorICAgIDo6UXVldWVVc2VyV29ya0l0ZW0odW5yZWdpc3RlcldhaXRB
bmREZXN0cm95SXRlbUNhbGxiYWNrLCB3b3JrSXRlbS5wdHIoKSwgV1RfRVhFQ1VURURFRkFVTFQp
OworfQorCitEV09SRCBXSU5BUEkgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJ
dGVtQ2FsbGJhY2sodm9pZCogZGF0YSkKK3sKKyAgICBBU1NFUlRfQVJHKGNvbnRleHQsIGNvbnRl
eHQpOworICAgIFdvcmtJdGVtQ29udGV4dCogd29ya0l0ZW0gPSBzdGF0aWNfY2FzdDxXb3JrSXRl
bUNvbnRleHQqPihkYXRhKTsKKworICAgIC8vIE5vdyB0aGF0IHdlIGtub3cgd2UncmUgbm90IGlu
IGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSB3YWl0IHdlJ3JlIHVucmVnaXN0ZXJpbmcsIHdl
IGNhbgorICAgIC8vIG1ha2UgYSBibG9ja2luZyBjYWxsIHRvIDo6VW5yZWdpc3RlcldhaXRFeC4K
KyAgICBpZiAoITo6VW5yZWdpc3RlcldhaXRFeCh3b3JrSXRlbS0+d2FpdEhhbmRsZSgpLCBJTlZB
TElEX0hBTkRMRV9WQUxVRSkpCisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICI6
OlVucmVnaXN0ZXJXYWl0RXggZmFpbGVkIHdpdGggJyVzJyIsIDo6R2V0TGFzdEVycm9yKCkpOwor
CisgICAgcmV0dXJuIDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324021</attachid>
            <date>2017-10-17 10:07:06 -0700</date>
            <delta_ts>2017-10-26 10:03:12 -0700</delta_ts>
            <desc>[PATCH] Add WTF files for WinCairo WebKit</desc>
            <filename>bz176894-7.patch</filename>
            <type>text/plain</type>
            <size>15539</size>
            <attacher name="Yousuke Kimoto">Yousuke.Kimoto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNTU0NTAxYy4uZTBjMTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNy0xMC0xNyAg
WW91c3VrZSBLaW1vdG8gIDx5b3VzdWtlLmtpbW90b0Bzb255LmNvbT4KKworICAgICAgICBbV2lu
Q2Fpcm9dIEFkZCBXVEYgZmlsZXMgZm9yIHdpbmNhaXJvIHdlYmtpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XaW4uY21ha2U6
CisgICAgICAgICogd3RmL1dvcmtRdWV1ZS5jcHA6CisgICAgICAgICogd3RmL1dvcmtRdWV1ZS5o
OgorICAgICAgICAqIHd0Zi93aW4vV29ya0l0ZW1Db250ZXh0LmNwcDogQWRkZWQuCisgICAgICAg
IChXVEY6OldvcmtJdGVtQ29udGV4dDo6V29ya0l0ZW1Db250ZXh0KToKKyAgICAgICAgKFdURjo6
V29ya0l0ZW1Db250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6
On5Xb3JrSXRlbUNvbnRleHQpOgorICAgICAgICAqIHd0Zi93aW4vV29ya0l0ZW1Db250ZXh0Lmg6
IEFkZGVkLgorICAgICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6OmhhbmRsZSk6CisgICAgICAg
IChXVEY6OldvcmtJdGVtQ29udGV4dDo6d2FpdEhhbmRsZSk6CisgICAgICAgIChXVEY6OldvcmtJ
dGVtQ29udGV4dDo6d2FpdEhhbmRsZVB0cik6CisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4
dDo6RnVuY3Rpb248dm9pZCk6CisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6cXVldWUg
Y29uc3QpOgorICAgICAgICAqIHd0Zi93aW4vV29ya1F1ZXVlV2luLmNwcDoKKyAgICAgICAgKFdU
Rjo6V29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayk6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
cmVnaXN0ZXJIYW5kbGUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnVucmVnaXN0ZXJBbmRD
bG9zZUhhbmRsZSk6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6dW5yZWdpc3RlcldhaXRBbmRE
ZXN0cm95SXRlbVNvb24pOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0
QW5kRGVzdHJveUl0ZW1DYWxsYmFjayk6CisKIDIwMTctMTAtMTYgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTigpIG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDVj
ZmVjMDcuLmEyNDU0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNt
YWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xMSw2ICsxMSw3
IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgd2luL01lbW9yeUZvb3RwcmludFdpbi5j
cHAKICAgICB3aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcAogICAgIHdpbi9SdW5Mb29w
V2luLmNwcAorICAgIHdpbi9Xb3JrSXRlbUNvbnRleHQuY3BwCiAgICAgd2luL1dvcmtRdWV1ZVdp
bi5jcHAKICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKaW5kZXggZjQ0OWY5Yi4uNWFlMzJmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9X
b3JrUXVldWUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzgsNiArMzksMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAorI2lmIFVTRShX
SU5ET1dTX0VWRU5UX0xPT1ApCisjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogUmVmPFdvcmtRdWV1ZT4gV29ya1F1ZXVlOjpj
cmVhdGUoY29uc3QgY2hhciogbmFtZSwgVHlwZSB0eXBlLCBRT1MgcW9zKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApp
bmRleCBkNzc4NjBmLi5iMmEyOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVl
dWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtMSw2ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM3LDYgKzM4LDcgQEAKICNlbmRpZgogCiAjaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9P
UCkKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmlt
aXRpdmVzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2VuZGlmCkBAIC00OCw2ICs1MCwx
MCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorI2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCitj
bGFzcyBXb3JrSXRlbUNvbnRleHQ7CisjZW5kaWYKKwogY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDog
cHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBl
IHsKQEAgLTc0LDYgKzgwLDkgQEAgcHVibGljOgogICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0
Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQogI2VsaWYgVVNFKEdM
SUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICBSdW5Mb29wJiBy
dW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQorI2VsaWYgVVNFKFdJTkRPV1Nf
RVZFTlRfTE9PUCkKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlckhhbmRsZShI
QU5ETEUsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
dW5yZWdpc3RlckFuZENsb3NlSGFuZGxlKEhBTkRMRSk7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAg
LTgzLDEyICs5MiwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7
CiAKICNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorICAgIHN0YXRpYyB2b2lkIENBTExCQUNL
IGhhbmRsZUNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7
CiAgICAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgdGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBC
T09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgd29ya1Ro
cmVhZENhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwogCiAgICAgYm9vbCB0cnlSZWdpc3RlckFzV29y
a1RocmVhZCgpOwogICAgIHZvaWQgdW5yZWdpc3RlckFzV29ya1RocmVhZCgpOwogICAgIHZvaWQg
cGVyZm9ybVdvcmtPblJlZ2lzdGVyZWRXb3JrVGhyZWFkKCk7CisKKyAgICBzdGF0aWMgdm9pZCB1
bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbihSZWY8V29ya0l0ZW1Db250ZXh0PiYmKTsK
KyAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1DYWxs
YmFjayh2b2lkKiBjb250ZXh0KTsKICNlbmRpZgogCiAjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1Ap
CkBAIC0xMDAsNiArMTEzLDkgQEAgcHJpdmF0ZToKICAgICBNdXRleCBtX2Z1bmN0aW9uUXVldWVM
b2NrOwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX2Z1bmN0aW9uUXVldWU7CiAKKyAg
ICBNdXRleCBtX2l0ZW1zTWFwTG9jazsKKyAgICBIYXNoTWFwPEhBTkRMRSwgUmVmPFdvcmtJdGVt
Q29udGV4dD4+IG1faXRlbXNNYXA7CisKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOwogI2VsaWYg
VVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAgICBSZWZQ
dHI8VGhyZWFkPiBtX3dvcmtRdWV1ZVRocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3dpbi9Xb3JrSXRlbUNvbnRleHQuY3BwIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtQ29u
dGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWFhMjQwZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuY3BwCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJh
Y3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXb3JrSXRlbUNvbnRleHQuaCIKKworI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworV29ya0l0ZW1Db250ZXh0OjpXb3JrSXRlbUNvbnRleHQoSEFORExF
IGhhbmRsZSwgSEFORExFIHdhaXRIYW5kbGUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbiwg
V29ya1F1ZXVlKiBxdWV1ZSkKKyAgICA6IG1faGFuZGxlKGhhbmRsZSkKKyAgICAsIG1fd2FpdEhh
bmRsZSh3YWl0SGFuZGxlKQorICAgICwgbV9mdW5jdGlvbihXVEZNb3ZlKGZ1bmN0aW9uKSkKKyAg
ICAsIG1fcXVldWUocXVldWUpCit7CisgICAgLy8gaG93IHRvIGRlbGV0ZSBoYW5kbGVzPz8KKyAg
ICBBU1NFUlRfQVJHKGhhbmRsZSwgaGFuZGxlKTsKKyAgICBBU1NFUlRfQVJHKHdhaXRIYW5kbGUs
IHdhaXRIYW5kbGUpOworICAgIEFTU0VSVF9BUkcocXVldWUsIHF1ZXVlKTsKK30KKworUmVmPFdv
cmtJdGVtQ29udGV4dD4gV29ya0l0ZW1Db250ZXh0OjpjcmVhdGUoSEFORExFIGhhbmRsZSwgSEFO
RExFIHdhaXRIYW5kbGUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBx
dWV1ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrSXRlbUNvbnRleHQoaGFuZGxl
LCB3YWl0SGFuZGxlLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgcXVldWUpKTsKK30KKworV29ya0l0ZW1D
b250ZXh0Ojp+V29ya0l0ZW1Db250ZXh0KCkKK3sKKyAgICA6OkNsb3NlSGFuZGxlKG1faGFuZGxl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vV29ya0l0ZW1Db250ZXh0LmggYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1Db250ZXh0
LmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDI3NDU5YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBN
b2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXVEYg
eworCitjbGFzcyBXb3JrUXVldWU7CisKK2NsYXNzIFdvcmtJdGVtQ29udGV4dCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrSXRlbUNvbnRleHQ+IHsKKworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8V29ya0l0ZW1Db250ZXh0PiBjcmVhdGUoSEFORExFLCBIQU5ETEUsIEZ1bmN0aW9u
PHZvaWQoKT4mJiwgV29ya1F1ZXVlKik7CisgICAgdmlydHVhbCB+V29ya0l0ZW1Db250ZXh0KCk7
CisKKyAgICBIQU5ETEUgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGU7ICB9CisgICAgSEFORExF
IHdhaXRIYW5kbGUoKSB7IHJldHVybiBtX3dhaXRIYW5kbGU7IH0KKyAgICBIQU5ETEUqIHdhaXRI
YW5kbGVQdHIoKSB7IHJldHVybiAmbV93YWl0SGFuZGxlOyB9CisgICAgRnVuY3Rpb248dm9pZCgp
PiYgZnVuY3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CisgICAgV29ya1F1ZXVlKiBxdWV1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXb3Jr
SXRlbUNvbnRleHQoSEFORExFLCBIQU5ETEUsIEZ1bmN0aW9uPHZvaWQoKT4mJiwgV29ya1F1ZXVl
Kik7CisKKyAgICBIQU5ETEUgbV9oYW5kbGU7CisgICAgSEFORExFIG1fd2FpdEhhbmRsZTsKKyAg
ICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb24gPSB7IH07CisgICAgUmVmUHRyPFdvcmtRdWV1
ZT4gbV9xdWV1ZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3Jr
UXVldWVXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKaW5kZXgg
ZTAxMWNlZC4uZmMwMTBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKQEAgLTEs
MzYgKzEsNzQgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSogYXJlIG1l
dDoKLSogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0qICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0q
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0qIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0qIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0qIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0qIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotKi8KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRh
aW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldv
cmtRdWV1ZS5oIgogCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaD4KIAogbmFt
ZXNwYWNlIFdURiB7CiAKK3ZvaWQgV29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayh2b2lkKiBkYXRh
LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpCit7CisgICAgQVNTRVJUX0FSRyhkYXRhLCBkYXRh
KTsKKyAgICBBU1NFUlRfQVJHKHRpbWVyT3JXYWl0RmlyZWQsICF0aW1lck9yV2FpdEZpcmVkKTsK
KworICAgIFdvcmtJdGVtQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtJdGVtQ29u
dGV4dCo+KGRhdGEpOworICAgIFdvcmtRdWV1ZSogcXVldWUgPSBjb250ZXh0LT5xdWV1ZSgpOwor
CisgICAgUmVmUHRyPFdvcmtJdGVtQ29udGV4dD4gcHJvdGVjdG9yKGNvbnRleHQpOworICAgIHF1
ZXVlLT5kaXNwYXRjaChbcHJvdGVjdG9yXSB7CisgICAgICAgIHByb3RlY3Rvci0+ZnVuY3Rpb24o
KSgpOworICAgIH0pOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJIYW5kbGUoSEFORExF
IGhhbmRsZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIFJlZjxXb3JrSXRl
bUNvbnRleHQ+IGNvbnRleHQgPSBXb3JrSXRlbUNvbnRleHQ6OmNyZWF0ZShoYW5kbGUsIG51bGxw
dHIsIFdURk1vdmUoZnVuY3Rpb24pLCB0aGlzKTsKKworICAgIGlmICghOjpSZWdpc3RlcldhaXRG
b3JTaW5nbGVPYmplY3QoY29udGV4dC0+d2FpdEhhbmRsZVB0cigpLCBoYW5kbGUsIGhhbmRsZUNh
bGxiYWNrLCBjb250ZXh0LnB0cigpLCBJTkZJTklURSwgV1RfRVhFQ1VURURFRkFVTFQpKQorICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fdGltZXJRdWV1ZSwgIjo6UmVnaXN0ZXJXYWl0Rm9y
U2luZ2xlT2JqZWN0ICVsdSIsIDo6R2V0TGFzdEVycm9yKCkpOworCisgICAgeworICAgICAgICBN
dXRleExvY2tlciBsb2NrKG1faXRlbXNNYXBMb2NrKTsKKyAgICAgICAgQVNTRVJUX0FSRyhoYW5k
bGUsICFtX2l0ZW1zTWFwLmNvbnRhaW5zKGhhbmRsZSkpOworICAgICAgICBtX2l0ZW1zTWFwLnNl
dChoYW5kbGUsIFdURk1vdmUoY29udGV4dCkpOworICAgIH0KK30KKwordm9pZCBXb3JrUXVldWU6
OnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZShIQU5ETEUgaGFuZGxlKQoreworICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2l0ZW1zTWFwTG9jayk7CisgICAgQVNTRVJUX0FSRyhoYW5kbGUsIG1faXRl
bXNNYXAuY29udGFpbnMoaGFuZGxlKSk7CisKKyAgICB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJ
dGVtU29vbihXVEZNb3ZlKG1faXRlbXNNYXAudGFrZShoYW5kbGUpLnZhbHVlKCkpKTsKK30KKwog
RFdPUkQgV29ya1F1ZXVlOjp3b3JrVGhyZWFkQ2FsbGJhY2sodm9pZCogY29udGV4dCkKIHsKICAg
ICBBU1NFUlRfQVJHKGNvbnRleHQsIGNvbnRleHQpOwpAQCAtMTkwLDQgKzIyOCwyNiBAQCB2b2lk
IFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lk
KCk+JiYgZnVuY3Rpb24pCiAgICAgY29udGV4dC5sZWFrUmVmKCk7CiB9CiAKK3ZvaWQgV29ya1F1
ZXVlOjp1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbihSZWY8V29ya0l0ZW1Db250ZXh0
PiYmIHdvcmtJdGVtKQoreworICAgIC8vIFdlJ3JlIGdvaW5nIHRvIG1ha2UgYSBibG9ja2luZyBj
YWxsIHRvIDo6VW5yZWdpc3RlcldhaXRFeCBiZWZvcmUgY2xvc2luZyB0aGUgaGFuZGxlLiAoVGhl
CisgICAgLy8gYmxvY2tpbmcgdmVyc2lvbiBvZiA6OlVucmVnaXN0ZXJXYWl0RXggaXMgbXVjaCBz
aW1wbGVyIHRoYW4gdGhlIG5vbi1ibG9ja2luZyB2ZXJzaW9uLikgSWYgd2UKKyAgICAvLyBkbyB0
aGlzIG9uIHRoZSBjdXJyZW50IHRocmVhZCwgd2UnbGwgZGVhZGxvY2sgaWYgd2UncmUgY3VycmVu
dGx5IGluIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yCisgICAgLy8gdGhlIHdhaXQgd2UncmUgdW5y
ZWdpc3RlcmluZy4gU28gaW5zdGVhZCB3ZSBkbyBpdCBhc3luY2hyb25vdXNseSBvbiBzb21lIG90
aGVyIHdvcmtlciB0aHJlYWQuCisgICAgOjpRdWV1ZVVzZXJXb3JrSXRlbSh1bnJlZ2lzdGVyV2Fp
dEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2ssIHdvcmtJdGVtLnB0cigpLCBXVF9FWEVDVVRFREVGQVVM
VCk7Cit9CisKK0RXT1JEIFdJTkFQSSBXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJv
eUl0ZW1DYWxsYmFjayh2b2lkKiBkYXRhKQoreworICAgIEFTU0VSVF9BUkcoZGF0YSwgZGF0YSk7
CisgICAgV29ya0l0ZW1Db250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V29ya0l0ZW1Db250
ZXh0Kj4oZGF0YSk7CisKKyAgICAvLyBOb3cgdGhhdCB3ZSBrbm93IHdlJ3JlIG5vdCBpbiBhIGNh
bGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgd2FpdCB3ZSdyZSB1bnJlZ2lzdGVyaW5nLCB3ZSBjYW4K
KyAgICAvLyBtYWtlIGEgYmxvY2tpbmcgY2FsbCB0byA6OlVucmVnaXN0ZXJXYWl0RXguCisgICAg
aWYgKCE6OlVucmVnaXN0ZXJXYWl0RXgoY29udGV4dC0+d2FpdEhhbmRsZSgpLCBJTlZBTElEX0hB
TkRMRV9WQUxVRSkpCisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICI6OlVucmVn
aXN0ZXJXYWl0RXggZmFpbGVkIHdpdGggJyVzJyIsIDo6R2V0TGFzdEVycm9yKCkpOworCisgICAg
cmV0dXJuIDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgo=
</data>
<flag name="review"
          id="344429"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325022</attachid>
            <date>2017-10-26 10:03:12 -0700</date>
            <delta_ts>2017-10-26 20:03:45 -0700</delta_ts>
            <desc>[PATCH] Add WTF files for WinCairo WebKit</desc>
            <filename>bz176894-8.patch</filename>
            <type>text/plain</type>
            <size>16002</size>
            <attacher name="Yousuke Kimoto">Yousuke.Kimoto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzQ3ZWYxMC4uMWE0MTVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxNy0xMC0yNiAg
WW91c3VrZSBLaW1vdG8gIDx5b3VzdWtlLmtpbW90b0Bzb255LmNvbT4KKworICAgICAgICBbV2lu
Q2Fpcm9dIEFkZCBXVEYgZmlsZXMgZm9yIHdpbmNhaXJvIHdlYmtpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XaW4uY21ha2U6
CisgICAgICAgICogd3RmL1dvcmtRdWV1ZS5jcHA6CisgICAgICAgICogd3RmL1dvcmtRdWV1ZS5o
OgorICAgICAgICAqIHd0Zi93aW4vV2luMzJIYW5kbGUuaDoKKyAgICAgICAgKiB3dGYvd2luL1dv
cmtJdGVtQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6
OldvcmtJdGVtQ29udGV4dCk6CisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6Y3JlYXRl
KToKKyAgICAgICAgKFdURjo6V29ya0l0ZW1Db250ZXh0Ojp+V29ya0l0ZW1Db250ZXh0KToKKyAg
ICAgICAgKiB3dGYvd2luL1dvcmtJdGVtQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
V29ya0l0ZW1Db250ZXh0OjpoYW5kbGUpOgorICAgICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6
OndhaXRIYW5kbGUpOgorICAgICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6OndhaXRIYW5kbGVQ
dHIpOgorICAgICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6OkZ1bmN0aW9uPHZvaWQpOgorICAg
ICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6OnF1ZXVlIGNvbnN0KToKKyAgICAgICAgKiB3dGYv
d2luL1dvcmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6aGFuZGxlQ2Fs
bGJhY2spOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnJlZ2lzdGVySGFuZGxlKToKKyAgICAg
ICAgKFdURjo6V29ya1F1ZXVlOjp1bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUpOgorICAgICAgICAo
V1RGOjpXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKToKKyAgICAg
ICAgKFdURjo6V29ya1F1ZXVlOjp1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sp
OgorCiAyMDE3LTEwLTI1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIyOTQ1LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdpbi5jbWFrZQppbmRleCA1Y2ZlYzA3Li5hMjQ1NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5j
bWFrZQpAQCAtMTEsNiArMTEsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgIHdpbi9N
ZW1vcnlGb290cHJpbnRXaW4uY3BwCiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5j
cHAKICAgICB3aW4vUnVuTG9vcFdpbi5jcHAKKyAgICB3aW4vV29ya0l0ZW1Db250ZXh0LmNwcAog
ICAgIHdpbi9Xb3JrUXVldWVXaW4uY3BwCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1dvcmtRdWV1ZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZjQ0OWY5Yi4uNWFlMzJmMwotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Xb3JrUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
OCw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCisjaWYgVVNFKFdJTkRPV1NfRVZFTlRf
TE9PUCkKKyNpbmNsdWRlIDx3dGYvd2luL1dvcmtJdGVtQ29udGV4dC5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXVEYgewogCiBSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNyZWF0ZShjb25zdCBj
aGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCm9sZCBtb2RlIDEwMDY0
NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZDc3ODYwZi4uYjJhMjliOAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtMSw2
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xh
IE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM4LDcgQEAKICNlbmRpZgogCiAjaWYgVVNFKFdJTkRP
V1NfRVZFTlRfTE9PUCkKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmdQcmltaXRpdmVzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2VuZGlmCkBA
IC00OCw2ICs1MCwxMCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorI2lmIFVTRShXSU5ET1dTX0VW
RU5UX0xPT1ApCitjbGFzcyBXb3JrSXRlbUNvbnRleHQ7CisjZW5kaWYKKwogY2xhc3MgV29ya1F1
ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgZW51
bSBjbGFzcyBUeXBlIHsKQEAgLTc0LDYgKzgwLDkgQEAgcHVibGljOgogICAgIGRpc3BhdGNoX3F1
ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQog
I2VsaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKICAg
ICBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQorI2VsaWYg
VVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdp
c3RlckhhbmRsZShIQU5ETEUsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgdW5yZWdpc3RlckFuZENsb3NlSGFuZGxlKEhBTkRMRSk7CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTgzLDEyICs5MiwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1J
bnZhbGlkYXRlKCk7CiAKICNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorICAgIHN0YXRpYyB2
b2lkIENBTExCQUNLIGhhbmRsZUNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJP
cldhaXRGaXJlZCk7CiAgICAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgdGltZXJDYWxsYmFjayh2b2lk
KiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRpYyBEV09SRCBX
SU5BUEkgd29ya1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwogCiAgICAgYm9vbCB0cnlS
ZWdpc3RlckFzV29ya1RocmVhZCgpOwogICAgIHZvaWQgdW5yZWdpc3RlckFzV29ya1RocmVhZCgp
OwogICAgIHZvaWQgcGVyZm9ybVdvcmtPblJlZ2lzdGVyZWRXb3JrVGhyZWFkKCk7CisKKyAgICBz
dGF0aWMgdm9pZCB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbihSZWY8V29ya0l0ZW1D
b250ZXh0PiYmKTsKKyAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIHVucmVnaXN0ZXJXYWl0QW5kRGVz
dHJveUl0ZW1DYWxsYmFjayh2b2lkKiBjb250ZXh0KTsKICNlbmRpZgogCiAjaWYgVVNFKENPQ09B
X0VWRU5UX0xPT1ApCkBAIC0xMDAsNiArMTEzLDkgQEAgcHJpdmF0ZToKICAgICBNdXRleCBtX2Z1
bmN0aW9uUXVldWVMb2NrOwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX2Z1bmN0aW9u
UXVldWU7CiAKKyAgICBNdXRleCBtX2l0ZW1zTWFwTG9jazsKKyAgICBIYXNoTWFwPEhBTkRMRSwg
UmVmPFdvcmtJdGVtQ29udGV4dD4+IG1faXRlbXNNYXA7CisKICAgICBIQU5ETEUgbV90aW1lclF1
ZXVlOwogI2VsaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9P
UCkKICAgICBSZWZQdHI8VGhyZWFkPiBtX3dvcmtRdWV1ZVRocmVhZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9XaW4zMkhhbmRsZS5oIGIvU291cmNlL1dURi93dGYvd2luL1dpbjMy
SGFuZGxlLmgKaW5kZXggMGI4NDk0Zi4uMTVkOWQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvd2luL1dpbjMySGFuZGxlLmgKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dpbjMySGFuZGxl
LmgKQEAgLTMyLDYgKzMyLDkgQEAgbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFdpbjMySGFuZGxl
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaW4zMkhhbmRsZSk7CisKKyAgICBmcmllbmQg
Y2xhc3MgV29ya0l0ZW1Db250ZXh0OworCiBwdWJsaWM6CiAgICAgV2luMzJIYW5kbGUoKSA6IG1f
aGFuZGxlKElOVkFMSURfSEFORExFX1ZBTFVFKSB7IH0KICAgICBleHBsaWNpdCBXaW4zMkhhbmRs
ZShIQU5ETEUgaGFuZGxlKSA6IG1faGFuZGxlKGhhbmRsZSkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1Db250ZXh0LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9X
b3JrSXRlbUNvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjll
YzExYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1Db250
ZXh0LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV29ya0l0ZW1Db250ZXh0LmgiCisKKyNpbmNsdWRlIDxXaW5k
b3dzLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVl
dWUuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1dvcmtJdGVtQ29udGV4dDo6V29ya0l0ZW1Db250
ZXh0KEhBTkRMRSBoYW5kbGUsIEhBTkRMRSB3YWl0SGFuZGxlLCBGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCisgICAgOiBtX2hhbmRsZShoYW5kbGUpCisgICAg
LCBtX3dhaXRIYW5kbGUod2FpdEhhbmRsZSkKKyAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5j
dGlvbikpCisgICAgLCBtX3F1ZXVlKHF1ZXVlKQoreworfQorCitSZWY8V29ya0l0ZW1Db250ZXh0
PiBXb3JrSXRlbUNvbnRleHQ6OmNyZWF0ZShIQU5ETEUgaGFuZGxlLCBIQU5ETEUgd2FpdEhhbmRs
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtJdGVtQ29udGV4dChoYW5kbGUsIHdhaXRIYW5kbGUs
IFdURk1vdmUoZnVuY3Rpb24pLCBxdWV1ZSkpOworfQorCitXb3JrSXRlbUNvbnRleHQ6On5Xb3Jr
SXRlbUNvbnRleHQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9X
b3JrSXRlbUNvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yOTA2
ZTQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtQ29udGV4
dC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2luZG93cy5oPgorI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvd2luL1dpbjMySGFuZGxlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFz
cyBXb3JrUXVldWU7CisKK2NsYXNzIFdvcmtJdGVtQ29udGV4dCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxXb3JrSXRlbUNvbnRleHQ+IHsKKworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
V29ya0l0ZW1Db250ZXh0PiBjcmVhdGUoSEFORExFLCBIQU5ETEUsIEZ1bmN0aW9uPHZvaWQoKT4m
JiwgV29ya1F1ZXVlKik7CisgICAgdmlydHVhbCB+V29ya0l0ZW1Db250ZXh0KCk7CisKKyAgICBX
aW4zMkhhbmRsZSYgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGU7IH0KKyAgICBXaW4zMkhhbmRs
ZSYgd2FpdEhhbmRsZSgpIHsgcmV0dXJuIG1fd2FpdEhhbmRsZTsgfQorICAgIEhBTkRMRSogd2Fp
dEhhbmRsZVB0cigpIHsgcmV0dXJuICZtX3dhaXRIYW5kbGUubV9oYW5kbGU7IH0KKyAgICBGdW5j
dGlvbjx2b2lkKCk+JiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KKyAgICBXb3Jr
UXVldWUqIHF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQorCitwcml2YXRl
OgorICAgIFdvcmtJdGVtQ29udGV4dChIQU5ETEUsIEhBTkRMRSwgRnVuY3Rpb248dm9pZCgpPiYm
LCBXb3JrUXVldWUqKTsKKworICAgIFdpbjMySGFuZGxlIG1faGFuZGxlID0geyB9OworICAgIFdp
bjMySGFuZGxlIG1fd2FpdEhhbmRsZSA9IHsgfTsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVu
Y3Rpb24gPSB7IH07CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKK307CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwIGIvU291cmNlL1dU
Ri93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1
NQppbmRleCBlMDExY2VkLi44MDlkODk0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVl
dWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrUXVldWVXaW4uY3BwCkBAIC0x
LDM2ICsxLDc0IEBACiAvKgotKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0qIGFyZSBt
ZXQ6Ci0qIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0qICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotKgotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0qIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0qIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0qIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0qIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0qIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSovCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
b3JrUXVldWUuaCIKIAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi93aW4vV29ya0l0ZW1Db250ZXh0Lmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCit2b2lkIFdvcmtRdWV1ZTo6aGFuZGxlQ2FsbGJhY2sodm9pZCogZGF0
YSwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVkKQoreworICAgIEFTU0VSVF9BUkcoZGF0YSwgZGF0
YSk7CisgICAgQVNTRVJUX0FSRyh0aW1lck9yV2FpdEZpcmVkLCAhdGltZXJPcldhaXRGaXJlZCk7
CisKKyAgICBXb3JrSXRlbUNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrSXRlbUNv
bnRleHQqPihkYXRhKTsKKyAgICBXb3JrUXVldWUqIHF1ZXVlID0gY29udGV4dC0+cXVldWUoKTsK
KworICAgIFJlZlB0cjxXb3JrSXRlbUNvbnRleHQ+IHByb3RlY3Rvcihjb250ZXh0KTsKKyAgICBx
dWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3Rvcl0geworICAgICAgICBwcm90ZWN0b3ItPmZ1bmN0aW9u
KCkoKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrUXVldWU6OnJlZ2lzdGVySGFuZGxlKEhBTkRM
RSBoYW5kbGUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3sKKyAgICBSZWY8V29ya0l0
ZW1Db250ZXh0PiBjb250ZXh0ID0gV29ya0l0ZW1Db250ZXh0OjpjcmVhdGUoaGFuZGxlLCBudWxs
cHRyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdGhpcyk7CisKKyAgICBpZiAoITo6UmVnaXN0ZXJXYWl0
Rm9yU2luZ2xlT2JqZWN0KGNvbnRleHQtPndhaXRIYW5kbGVQdHIoKSwgaGFuZGxlLCBoYW5kbGVD
YWxsYmFjaywgY29udGV4dC5wdHIoKSwgSU5GSU5JVEUsIFdUX0VYRUNVVEVERUZBVUxUKSkKKyAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3RpbWVyUXVldWUsICI6OlJlZ2lzdGVyV2FpdEZv
clNpbmdsZU9iamVjdCAlbHUiLCA6OkdldExhc3RFcnJvcigpKTsKKworICAgIHsKKyAgICAgICAg
TXV0ZXhMb2NrZXIgbG9jayhtX2l0ZW1zTWFwTG9jayk7CisgICAgICAgIEFTU0VSVF9BUkcoaGFu
ZGxlLCAhbV9pdGVtc01hcC5jb250YWlucyhoYW5kbGUpKTsKKyAgICAgICAgbV9pdGVtc01hcC5z
ZXQoaGFuZGxlLCBXVEZNb3ZlKGNvbnRleHQpKTsKKyAgICB9Cit9CisKK3ZvaWQgV29ya1F1ZXVl
Ojp1bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUoSEFORExFIGhhbmRsZSkKK3sKKyAgICBNdXRleExv
Y2tlciBsb2NrZXIobV9pdGVtc01hcExvY2spOworICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBtX2l0
ZW1zTWFwLmNvbnRhaW5zKGhhbmRsZSkpOworCisgICAgdW5yZWdpc3RlcldhaXRBbmREZXN0cm95
SXRlbVNvb24oV1RGTW92ZShtX2l0ZW1zTWFwLnRha2UoaGFuZGxlKS52YWx1ZSgpKSk7Cit9CisK
IERXT1JEIFdvcmtRdWV1ZTo6d29ya1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRleHQpCiB7CiAg
ICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsKQEAgLTE5MCw0ICsyMjgsMjYgQEAgdm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGZ1bmN0aW9uKQogICAgIGNvbnRleHQubGVha1JlZigpOwogfQogCit2b2lkIFdvcmtR
dWV1ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24oUmVmPFdvcmtJdGVtQ29udGV4
dD4mJiB3b3JrSXRlbSkKK3sKKyAgICAvLyBXZSdyZSBnb2luZyB0byBtYWtlIGEgYmxvY2tpbmcg
Y2FsbCB0byA6OlVucmVnaXN0ZXJXYWl0RXggYmVmb3JlIGNsb3NpbmcgdGhlIGhhbmRsZS4gKFRo
ZQorICAgIC8vIGJsb2NraW5nIHZlcnNpb24gb2YgOjpVbnJlZ2lzdGVyV2FpdEV4IGlzIG11Y2gg
c2ltcGxlciB0aGFuIHRoZSBub24tYmxvY2tpbmcgdmVyc2lvbi4pIElmIHdlCisgICAgLy8gZG8g
dGhpcyBvbiB0aGUgY3VycmVudCB0aHJlYWQsIHdlJ2xsIGRlYWRsb2NrIGlmIHdlJ3JlIGN1cnJl
bnRseSBpbiBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvcgorICAgIC8vIHRoZSB3YWl0IHdlJ3JlIHVu
cmVnaXN0ZXJpbmcuIFNvIGluc3RlYWQgd2UgZG8gaXQgYXN5bmNocm9ub3VzbHkgb24gc29tZSBv
dGhlciB3b3JrZXIgdGhyZWFkLgorICAgIDo6UXVldWVVc2VyV29ya0l0ZW0odW5yZWdpc3Rlcldh
aXRBbmREZXN0cm95SXRlbUNhbGxiYWNrLCB3b3JrSXRlbS5wdHIoKSwgV1RfRVhFQ1VURURFRkFV
TFQpOworfQorCitEV09SRCBXSU5BUEkgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyV2FpdEFuZERlc3Ry
b3lJdGVtQ2FsbGJhY2sodm9pZCogZGF0YSkKK3sKKyAgICBBU1NFUlRfQVJHKGRhdGEsIGRhdGEp
OworICAgIFdvcmtJdGVtQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtJdGVtQ29u
dGV4dCo+KGRhdGEpOworCisgICAgLy8gTm93IHRoYXQgd2Uga25vdyB3ZSdyZSBub3QgaW4gYSBj
YWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIHdhaXQgd2UncmUgdW5yZWdpc3RlcmluZywgd2UgY2Fu
CisgICAgLy8gbWFrZSBhIGJsb2NraW5nIGNhbGwgdG8gOjpVbnJlZ2lzdGVyV2FpdEV4LgorICAg
IGlmICghOjpVbnJlZ2lzdGVyV2FpdEV4KGNvbnRleHQtPndhaXRIYW5kbGUoKS5nZXQoKSwgSU5W
QUxJRF9IQU5ETEVfVkFMVUUpKQorICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGZhbHNlLCAi
OjpVbnJlZ2lzdGVyV2FpdEV4IGZhaWxlZCB3aXRoICclcyciLCA6OkdldExhc3RFcnJvcigpKTsK
KworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>
<flag name="review"
          id="344559"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325106</attachid>
            <date>2017-10-26 20:03:45 -0700</date>
            <delta_ts>2017-10-26 22:45:07 -0700</delta_ts>
            <desc>[PATCH] Add WTF files for WinCairo WebKit</desc>
            <filename>bz176894-9.patch</filename>
            <type>text/plain</type>
            <size>15817</size>
            <attacher name="Yousuke Kimoto">Yousuke.Kimoto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzQ3ZWYxMC4uY2ViMDFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNy0xMC0yNiAg
WW91c3VrZSBLaW1vdG8gIDx5b3VzdWtlLmtpbW90b0Bzb255LmNvbT4KKworICAgICAgICBbV2lu
Q2Fpcm9dIEFkZCBXVEYgZmlsZXMgZm9yIHdpbmNhaXJvIHdlYmtpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1XaW4uY21ha2U6
CisgICAgICAgICogd3RmL1dvcmtRdWV1ZS5jcHA6CisgICAgICAgICogd3RmL1dvcmtRdWV1ZS5o
OgorICAgICAgICAqIHd0Zi93aW4vV2luMzJIYW5kbGUuaDoKKyAgICAgICAgKiB3dGYvd2luL1dv
cmtJdGVtQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6
OldvcmtJdGVtQ29udGV4dCk6CisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6Y3JlYXRl
KToKKyAgICAgICAgKFdURjo6V29ya0l0ZW1Db250ZXh0Ojp+V29ya0l0ZW1Db250ZXh0KToKKyAg
ICAgICAgKiB3dGYvd2luL1dvcmtJdGVtQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
V29ya0l0ZW1Db250ZXh0OjpoYW5kbGUpOgorICAgICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6
OndhaXRIYW5kbGUpOgorICAgICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6OkZ1bmN0aW9uPHZv
aWQpOgorICAgICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6OnF1ZXVlIGNvbnN0KToKKyAgICAg
ICAgKiB3dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHA6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6
aGFuZGxlQ2FsbGJhY2spOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnJlZ2lzdGVySGFuZGxl
KToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjp1bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUpOgor
ICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29u
KToKKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjp1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVt
Q2FsbGJhY2spOgorCiAyMDE3LTEwLTI1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIyOTQ1LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA1Y2ZlYzA3Li5hMjQ1NGFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbi5jbWFrZQpAQCAtMTEsNiArMTEsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwog
ICAgIHdpbi9NZW1vcnlGb290cHJpbnRXaW4uY3BwCiAgICAgd2luL01lbW9yeVByZXNzdXJlSGFu
ZGxlcldpbi5jcHAKICAgICB3aW4vUnVuTG9vcFdpbi5jcHAKKyAgICB3aW4vV29ya0l0ZW1Db250
ZXh0LmNwcAogICAgIHdpbi9Xb3JrUXVldWVXaW4uY3BwCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCm9s
ZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZjQ0OWY5Yi4uNWFlMzJmMwotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtR
dWV1ZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IElu
dGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zOCw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCisjaWYgVVNFKFdJTkRP
V1NfRVZFTlRfTE9PUCkKKyNpbmNsdWRlIDx3dGYvd2luL1dvcmtJdGVtQ29udGV4dC5oPgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXVEYgewogCiBSZWY8V29ya1F1ZXVlPiBXb3JrUXVldWU6OmNyZWF0
ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlIHR5cGUsIFFPUyBxb3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCmluZGV4
IGQ3Nzg2MGYuLjZkMDdmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzcsNiArMzgsNyBAQAogI2VuZGlmCiAKICNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjZW5kaWYKQEAgLTQ4LDcgKzUwLDEyIEBA
CiAKIG5hbWVzcGFjZSBXVEYgewogCisjaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKK2NsYXNz
IFdvcmtJdGVtQ29udGV4dDsKKyNlbmRpZgorCiBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJs
aWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKKwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7
CiAgICAgICAgIFNlcmlhbCwKQEAgLTc0LDYgKzgxLDkgQEAgcHVibGljOgogICAgIGRpc3BhdGNo
X3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsg
fQogI2VsaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkK
ICAgICBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQorI2Vs
aWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZWdpc3RlckhhbmRsZShIQU5ETEUsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgdW5yZWdpc3RlckFuZENsb3NlSGFuZGxlKEhBTkRMRSk7CiAjZW5kaWYK
IAogcHJpdmF0ZToKQEAgLTgzLDEyICs5MywxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZv
cm1JbnZhbGlkYXRlKCk7CiAKICNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorICAgIHN0YXRp
YyB2b2lkIENBTExCQUNLIGhhbmRsZUNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGlt
ZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgdGltZXJDYWxsYmFjayh2
b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRpYyBEV09S
RCBXSU5BUEkgd29ya1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwogCiAgICAgYm9vbCB0
cnlSZWdpc3RlckFzV29ya1RocmVhZCgpOwogICAgIHZvaWQgdW5yZWdpc3RlckFzV29ya1RocmVh
ZCgpOwogICAgIHZvaWQgcGVyZm9ybVdvcmtPblJlZ2lzdGVyZWRXb3JrVGhyZWFkKCk7CisKKyAg
ICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29vbihSZWY8V29ya0l0
ZW1Db250ZXh0PiYmKTsKKyAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIHVucmVnaXN0ZXJXYWl0QW5k
RGVzdHJveUl0ZW1DYWxsYmFjayh2b2lkKiBjb250ZXh0KTsKICNlbmRpZgogCiAjaWYgVVNFKENP
Q09BX0VWRU5UX0xPT1ApCkBAIC0xMDAsNiArMTE0LDkgQEAgcHJpdmF0ZToKICAgICBNdXRleCBt
X2Z1bmN0aW9uUXVldWVMb2NrOwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX2Z1bmN0
aW9uUXVldWU7CiAKKyAgICBNdXRleCBtX2l0ZW1zTWFwTG9jazsKKyAgICBIYXNoTWFwPEhBTkRM
RSwgUmVmPFdvcmtJdGVtQ29udGV4dD4+IG1faXRlbXNNYXA7CisKICAgICBIQU5ETEUgbV90aW1l
clF1ZXVlOwogI2VsaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRf
TE9PUCkKICAgICBSZWZQdHI8VGhyZWFkPiBtX3dvcmtRdWV1ZVRocmVhZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9XaW4zMkhhbmRsZS5oIGIvU291cmNlL1dURi93dGYvd2luL1dp
bjMySGFuZGxlLmgKaW5kZXggMGI4NDk0Zi4uYTZmMWRmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3dpbi9XaW4zMkhhbmRsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9XaW4zMkhh
bmRsZS5oCkBAIC0zMiw2ICszMiw5IEBAIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBXaW4zMkhh
bmRsZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2luMzJIYW5kbGUpOworCisgICAgZnJp
ZW5kIGNsYXNzIFdvcmtRdWV1ZTsKKwogcHVibGljOgogICAgIFdpbjMySGFuZGxlKCkgOiBtX2hh
bmRsZShJTlZBTElEX0hBTkRMRV9WQUxVRSkgeyB9CiAgICAgZXhwbGljaXQgV2luMzJIYW5kbGUo
SEFORExFIGhhbmRsZSkgOiBtX2hhbmRsZShoYW5kbGUpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvd2luL1dvcmtJdGVtQ29udGV4dC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29y
a0l0ZW1Db250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45ZWMx
MWE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtQ29udGV4
dC5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29u
eSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldvcmtJdGVtQ29udGV4dC5oIgorCisjaW5jbHVkZSA8V2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitXb3JrSXRlbUNvbnRleHQ6OldvcmtJdGVtQ29udGV4
dChIQU5ETEUgaGFuZGxlLCBIQU5ETEUgd2FpdEhhbmRsZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1
bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgIDogbV9oYW5kbGUoaGFuZGxlKQorICAgICwg
bV93YWl0SGFuZGxlKHdhaXRIYW5kbGUpCisgICAgLCBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rp
b24pKQorICAgICwgbV9xdWV1ZShxdWV1ZSkKK3sKK30KKworUmVmPFdvcmtJdGVtQ29udGV4dD4g
V29ya0l0ZW1Db250ZXh0OjpjcmVhdGUoSEFORExFIGhhbmRsZSwgSEFORExFIHdhaXRIYW5kbGUs
IEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrSXRlbUNvbnRleHQoaGFuZGxlLCB3YWl0SGFuZGxlLCBX
VEZNb3ZlKGZ1bmN0aW9uKSwgcXVldWUpKTsKK30KKworV29ya0l0ZW1Db250ZXh0Ojp+V29ya0l0
ZW1Db250ZXh0KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1Db250ZXh0LmggYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29y
a0l0ZW1Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFhMTVj
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQu
aApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAx
MCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRlIDxmdW5j
dGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5j
bHVkZSA8d3RmL3dpbi9XaW4zMkhhbmRsZS5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3Mg
V29ya1F1ZXVlOworCitjbGFzcyBXb3JrSXRlbUNvbnRleHQgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8V29ya0l0ZW1Db250ZXh0PiB7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdv
cmtJdGVtQ29udGV4dD4gY3JlYXRlKEhBTkRMRSwgSEFORExFLCBGdW5jdGlvbjx2b2lkKCk+JiYs
IFdvcmtRdWV1ZSopOworICAgIHZpcnR1YWwgfldvcmtJdGVtQ29udGV4dCgpOworCisgICAgV2lu
MzJIYW5kbGUmIGhhbmRsZSgpIHsgcmV0dXJuIG1faGFuZGxlOyB9CisgICAgV2luMzJIYW5kbGUm
IHdhaXRIYW5kbGUoKSB7IHJldHVybiBtX3dhaXRIYW5kbGU7IH0KKyAgICBGdW5jdGlvbjx2b2lk
KCk+JiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb247IH0KKyAgICBXb3JrUXVldWUqIHF1
ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFdv
cmtJdGVtQ29udGV4dChIQU5ETEUsIEhBTkRMRSwgRnVuY3Rpb248dm9pZCgpPiYmLCBXb3JrUXVl
dWUqKTsKKworICAgIFdpbjMySGFuZGxlIG1faGFuZGxlOworICAgIFdpbjMySGFuZGxlIG1fd2Fp
dEhhbmRsZTsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CisgICAgUmVmUHRyPFdv
cmtRdWV1ZT4gbV9xdWV1ZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dp
bi9Xb3JrUXVldWVXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAK
aW5kZXggZTAxMWNlZC4uYzgxODZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL1dv
cmtRdWV1ZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAK
QEAgLTEsMzYgKzEsNzIgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSog
YXJlIG1ldDoKLSogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0qICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0qIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0qIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0qIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0qIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0qIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotKi8KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldvcmtRdWV1ZS5oIgogCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKK3ZvaWQgV29ya1F1ZXVlOjpoYW5kbGVDYWxsYmFjayh2b2lk
KiBkYXRhLCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpCit7CisgICAgQVNTRVJUX0FSRyhkYXRh
LCBkYXRhKTsKKyAgICBBU1NFUlRfQVJHKHRpbWVyT3JXYWl0RmlyZWQsICF0aW1lck9yV2FpdEZp
cmVkKTsKKworICAgIFdvcmtJdGVtQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtJ
dGVtQ29udGV4dCo+KGRhdGEpOworICAgIFdvcmtRdWV1ZSogcXVldWUgPSBjb250ZXh0LT5xdWV1
ZSgpOworCisgICAgUmVmUHRyPFdvcmtJdGVtQ29udGV4dD4gcHJvdGVjdG9yKGNvbnRleHQpOwor
ICAgIHF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdG9yXSB7CisgICAgICAgIHByb3RlY3Rvci0+ZnVu
Y3Rpb24oKSgpOworICAgIH0pOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cmVnaXN0ZXJIYW5kbGUo
SEFORExFIGhhbmRsZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIFJlZjxX
b3JrSXRlbUNvbnRleHQ+IGNvbnRleHQgPSBXb3JrSXRlbUNvbnRleHQ6OmNyZWF0ZShoYW5kbGUs
IG51bGxwdHIsIFdURk1vdmUoZnVuY3Rpb24pLCB0aGlzKTsKKworICAgIGlmICghOjpSZWdpc3Rl
cldhaXRGb3JTaW5nbGVPYmplY3QoJmNvbnRleHQtPndhaXRIYW5kbGUoKS5tX2hhbmRsZSwgaGFu
ZGxlLCBoYW5kbGVDYWxsYmFjaywgY29udGV4dC5wdHIoKSwgSU5GSU5JVEUsIFdUX0VYRUNVVEVE
RUZBVUxUKSkKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3RpbWVyUXVldWUsICI6OlJl
Z2lzdGVyV2FpdEZvclNpbmdsZU9iamVjdCAlbHUiLCA6OkdldExhc3RFcnJvcigpKTsKKworICAg
IE11dGV4TG9ja2VyIGxvY2sobV9pdGVtc01hcExvY2spOworICAgIEFTU0VSVF9BUkcoaGFuZGxl
LCAhbV9pdGVtc01hcC5jb250YWlucyhoYW5kbGUpKTsKKyAgICBtX2l0ZW1zTWFwLnNldChoYW5k
bGUsIFdURk1vdmUoY29udGV4dCkpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlckFu
ZENsb3NlSGFuZGxlKEhBTkRMRSBoYW5kbGUpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
aXRlbXNNYXBMb2NrKTsKKyAgICBBU1NFUlRfQVJHKGhhbmRsZSwgbV9pdGVtc01hcC5jb250YWlu
cyhoYW5kbGUpKTsKKworICAgIHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKFdURk1v
dmUobV9pdGVtc01hcC50YWtlKGhhbmRsZSkudmFsdWUoKSkpOworfQorCiBEV09SRCBXb3JrUXVl
dWU6OndvcmtUaHJlYWRDYWxsYmFjayh2b2lkKiBjb250ZXh0KQogewogICAgIEFTU0VSVF9BUkco
Y29udGV4dCwgY29udGV4dCk7CkBAIC0xOTAsNCArMjI2LDI2IEBAIHZvaWQgV29ya1F1ZXVlOjpk
aXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlv
bikKICAgICBjb250ZXh0LmxlYWtSZWYoKTsKIH0KIAordm9pZCBXb3JrUXVldWU6OnVucmVnaXN0
ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKFJlZjxXb3JrSXRlbUNvbnRleHQ+JiYgd29ya0l0ZW0p
Cit7CisgICAgLy8gV2UncmUgZ29pbmcgdG8gbWFrZSBhIGJsb2NraW5nIGNhbGwgdG8gOjpVbnJl
Z2lzdGVyV2FpdEV4IGJlZm9yZSBjbG9zaW5nIHRoZSBoYW5kbGUuIChUaGUKKyAgICAvLyBibG9j
a2luZyB2ZXJzaW9uIG9mIDo6VW5yZWdpc3RlcldhaXRFeCBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0
aGUgbm9uLWJsb2NraW5nIHZlcnNpb24uKSBJZiB3ZQorICAgIC8vIGRvIHRoaXMgb24gdGhlIGN1
cnJlbnQgdGhyZWFkLCB3ZSdsbCBkZWFkbG9jayBpZiB3ZSdyZSBjdXJyZW50bHkgaW4gYSBjYWxs
YmFjayBmdW5jdGlvbiBmb3IKKyAgICAvLyB0aGUgd2FpdCB3ZSdyZSB1bnJlZ2lzdGVyaW5nLiBT
byBpbnN0ZWFkIHdlIGRvIGl0IGFzeW5jaHJvbm91c2x5IG9uIHNvbWUgb3RoZXIgd29ya2VyIHRo
cmVhZC4KKyAgICA6OlF1ZXVlVXNlcldvcmtJdGVtKHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0
ZW1DYWxsYmFjaywgd29ya0l0ZW0ucHRyKCksIFdUX0VYRUNVVEVERUZBVUxUKTsKK30KKworRFdP
UkQgV0lOQVBJIFdvcmtRdWV1ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbUNhbGxiYWNr
KHZvaWQqIGRhdGEpCit7CisgICAgQVNTRVJUX0FSRyhkYXRhLCBkYXRhKTsKKyAgICBXb3JrSXRl
bUNvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrSXRlbUNvbnRleHQqPihkYXRhKTsK
KworICAgIC8vIE5vdyB0aGF0IHdlIGtub3cgd2UncmUgbm90IGluIGEgY2FsbGJhY2sgZnVuY3Rp
b24gZm9yIHRoZSB3YWl0IHdlJ3JlIHVucmVnaXN0ZXJpbmcsIHdlIGNhbgorICAgIC8vIG1ha2Ug
YSBibG9ja2luZyBjYWxsIHRvIDo6VW5yZWdpc3RlcldhaXRFeC4KKyAgICBpZiAoITo6VW5yZWdp
c3RlcldhaXRFeChjb250ZXh0LT53YWl0SGFuZGxlKCkuZ2V0KCksIElOVkFMSURfSEFORExFX1ZB
TFVFKSkKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShmYWxzZSwgIjo6VW5yZWdpc3Rlcldh
aXRFeCBmYWlsZWQgd2l0aCAnJXMnIiwgOjpHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4g
MDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325142</attachid>
            <date>2017-10-27 01:53:36 -0700</date>
            <delta_ts>2017-10-27 17:09:50 -0700</delta_ts>
            <desc>[PATCH] Add WTF files for WinCairo WebKit</desc>
            <filename>bz176894-10.patch</filename>
            <type>text/plain</type>
            <size>15819</size>
            <attacher name="Yousuke Kimoto">Yousuke.Kimoto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNzQ3ZWYxMC4uNDFhZDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNy0xMC0yNiAg
WW91c3VrZSBLaW1vdG8gIDx5b3VzdWtlLmtpbW90b0Bzb255LmNvbT4KKworICAgICAgICBbV2lu
Q2Fpcm9dIEFkZCBXVEYgZmlsZXMgZm9yIHdpbmNhaXJvIHdlYmtpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFr
ZToKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVlLmNwcDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVl
Lmg6CisgICAgICAgICogd3RmL3dpbi9XaW4zMkhhbmRsZS5oOgorICAgICAgICAqIHd0Zi93aW4v
V29ya0l0ZW1Db250ZXh0LmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4
dDo6V29ya0l0ZW1Db250ZXh0KToKKyAgICAgICAgKFdURjo6V29ya0l0ZW1Db250ZXh0OjpjcmVh
dGUpOgorICAgICAgICAoV1RGOjpXb3JrSXRlbUNvbnRleHQ6On5Xb3JrSXRlbUNvbnRleHQpOgor
ICAgICAgICAqIHd0Zi93aW4vV29ya0l0ZW1Db250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV1RG
OjpXb3JrSXRlbUNvbnRleHQ6OmhhbmRsZSk6CisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4
dDo6d2FpdEhhbmRsZSk6CisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6RnVuY3Rpb248
dm9pZCk6CisgICAgICAgIChXVEY6OldvcmtJdGVtQ29udGV4dDo6cXVldWUgY29uc3QpOgorICAg
ICAgICAqIHd0Zi93aW4vV29ya1F1ZXVlV2luLmNwcDoKKyAgICAgICAgKFdURjo6V29ya1F1ZXVl
OjpoYW5kbGVDYWxsYmFjayk6CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6cmVnaXN0ZXJIYW5k
bGUpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZSk6
CisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6dW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNv
b24pOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0
ZW1DYWxsYmFjayk6CisKIDIwMTctMTAtMjUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjI5NDUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDVjZmVjMDcuLmEyNDU0YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV2luLmNtYWtlCkBAIC0xMSw2ICsxMSw3IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VT
CiAgICAgd2luL01lbW9yeUZvb3RwcmludFdpbi5jcHAKICAgICB3aW4vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyV2luLmNwcAogICAgIHdpbi9SdW5Mb29wV2luLmNwcAorICAgIHdpbi9Xb3JrSXRlbUNv
bnRleHQuY3BwCiAgICAgd2luL1dvcmtRdWV1ZVdpbi5jcHAKICkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvV29ya1F1ZXVlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAK
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBmNDQ5ZjliLi41YWUzMmYzCi0t
LSBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvV29y
a1F1ZXVlLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNvbnkg
SW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM4LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKKyNpZiBVU0UoV0lO
RE9XU19FVkVOVF9MT09QKQorI2luY2x1ZGUgPHd0Zi93aW4vV29ya0l0ZW1Db250ZXh0Lmg+Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKIFJlZjxXb3JrUXVldWU+IFdvcmtRdWV1ZTo6Y3Jl
YXRlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUgdHlwZSwgUU9TIHFvcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5k
ZXggZDc3ODYwZi4uNmQwN2YzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVl
LmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTEsNiArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNyw2ICszOCw3IEBACiAjZW5kaWYKIAogI2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1Ap
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNlbmRpZgpAQCAtNDgsNyArNTAsMTIg
QEAKIAogbmFtZXNwYWNlIFdURiB7CiAKKyNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorY2xh
c3MgV29ya0l0ZW1Db250ZXh0OworI2VuZGlmCisKIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1
YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgeworCiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBl
IHsKICAgICAgICAgU2VyaWFsLApAQCAtNzQsNiArODEsOSBAQCBwdWJsaWM6CiAgICAgZGlzcGF0
Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVl
OyB9CiAjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVOVF9MT09Q
KQogICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9Cisj
ZWxpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IHJlZ2lzdGVySGFuZGxlKEhBTkRMRSwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCB1bnJlZ2lzdGVyQW5kQ2xvc2VIYW5kbGUoSEFORExFKTsKICNlbmRp
ZgogCiBwcml2YXRlOgpAQCAtODMsMTIgKzkzLDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0
Zm9ybUludmFsaWRhdGUoKTsKIAogI2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCisgICAgc3Rh
dGljIHZvaWQgQ0FMTEJBQ0sgaGFuZGxlQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0
aW1lck9yV2FpdEZpcmVkKTsKICAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyB0aW1lckNhbGxiYWNr
KHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGljIERX
T1JEIFdJTkFQSSB3b3JrVGhyZWFkQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAKICAgICBib29s
IHRyeVJlZ2lzdGVyQXNXb3JrVGhyZWFkKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyQXNXb3JrVGhy
ZWFkKCk7CiAgICAgdm9pZCBwZXJmb3JtV29ya09uUmVnaXN0ZXJlZFdvcmtUaHJlYWQoKTsKKwor
ICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKFJlZjxXb3Jr
SXRlbUNvbnRleHQ+JiYpOworICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgdW5yZWdpc3RlcldhaXRB
bmREZXN0cm95SXRlbUNhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwogI2VuZGlmCiAKICNpZiBVU0Uo
Q09DT0FfRVZFTlRfTE9PUCkKQEAgLTEwMCw2ICsxMTQsOSBAQCBwcml2YXRlOgogICAgIE11dGV4
IG1fZnVuY3Rpb25RdWV1ZUxvY2s7CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnVu
Y3Rpb25RdWV1ZTsKIAorICAgIE11dGV4IG1faXRlbXNNYXBMb2NrOworICAgIEhhc2hNYXA8SEFO
RExFLCBSZWY8V29ya0l0ZW1Db250ZXh0Pj4gbV9pdGVtc01hcDsKKwogICAgIEhBTkRMRSBtX3Rp
bWVyUXVldWU7CiAjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19FVkVO
VF9MT09QKQogICAgIFJlZlB0cjxUaHJlYWQ+IG1fd29ya1F1ZXVlVGhyZWFkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvd2luL1dpbjMySGFuZGxlLmggYi9Tb3VyY2UvV1RGL3d0Zi93aW4v
V2luMzJIYW5kbGUuaAppbmRleCAwYjg0OTRmLi5hNmYxZGYzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL1dpbjMySGFuZGxlLmgKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dpbjMy
SGFuZGxlLmgKQEAgLTMyLDYgKzMyLDkgQEAgbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFdpbjMy
SGFuZGxlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaW4zMkhhbmRsZSk7CisKKyAgICBm
cmllbmQgY2xhc3MgV29ya1F1ZXVlOworCiBwdWJsaWM6CiAgICAgV2luMzJIYW5kbGUoKSA6IG1f
aGFuZGxlKElOVkFMSURfSEFORExFX1ZBTFVFKSB7IH0KICAgICBleHBsaWNpdCBXaW4zMkhhbmRs
ZShIQU5ETEUgaGFuZGxlKSA6IG1faGFuZGxlKGhhbmRsZSkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1Db250ZXh0LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9X
b3JrSXRlbUNvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjll
YzExYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1Db250
ZXh0LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBT
b255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV29ya0l0ZW1Db250ZXh0LmgiCisKKyNpbmNsdWRlIDxXaW5k
b3dzLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVl
dWUuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1dvcmtJdGVtQ29udGV4dDo6V29ya0l0ZW1Db250
ZXh0KEhBTkRMRSBoYW5kbGUsIEhBTkRMRSB3YWl0SGFuZGxlLCBGdW5jdGlvbjx2b2lkKCk+JiYg
ZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCisgICAgOiBtX2hhbmRsZShoYW5kbGUpCisgICAg
LCBtX3dhaXRIYW5kbGUod2FpdEhhbmRsZSkKKyAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5j
dGlvbikpCisgICAgLCBtX3F1ZXVlKHF1ZXVlKQoreworfQorCitSZWY8V29ya0l0ZW1Db250ZXh0
PiBXb3JrSXRlbUNvbnRleHQ6OmNyZWF0ZShIQU5ETEUgaGFuZGxlLCBIQU5ETEUgd2FpdEhhbmRs
ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtJdGVtQ29udGV4dChoYW5kbGUsIHdhaXRIYW5kbGUs
IFdURk1vdmUoZnVuY3Rpb24pLCBxdWV1ZSkpOworfQorCitXb3JrSXRlbUNvbnRleHQ6On5Xb3Jr
SXRlbUNvbnRleHQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRlbUNvbnRleHQuaCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9X
b3JrSXRlbUNvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWEx
NWM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtQ29udGV4
dC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy
MDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2luZG93cy5oPgorI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvd2luL1dpbjMySGFuZGxlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFz
cyBXb3JrUXVldWU7CisKK2NsYXNzIFdvcmtJdGVtQ29udGV4dCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxXb3JrSXRlbUNvbnRleHQ+IHsKKworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
V29ya0l0ZW1Db250ZXh0PiBjcmVhdGUoSEFORExFLCBIQU5ETEUsIEZ1bmN0aW9uPHZvaWQoKT4m
JiwgV29ya1F1ZXVlKik7CisgICAgdmlydHVhbCB+V29ya0l0ZW1Db250ZXh0KCk7CisKKyAgICBX
aW4zMkhhbmRsZSYgaGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGU7IH0KKyAgICBXaW4zMkhhbmRs
ZSYgd2FpdEhhbmRsZSgpIHsgcmV0dXJuIG1fd2FpdEhhbmRsZTsgfQorICAgIEZ1bmN0aW9uPHZv
aWQoKT4mIGZ1bmN0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQorICAgIFdvcmtRdWV1ZSog
cXVldWUoKSBjb25zdCB7IHJldHVybiBtX3F1ZXVlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
V29ya0l0ZW1Db250ZXh0KEhBTkRMRSwgSEFORExFLCBGdW5jdGlvbjx2b2lkKCk+JiYsIFdvcmtR
dWV1ZSopOworCisgICAgV2luMzJIYW5kbGUgbV9oYW5kbGU7CisgICAgV2luMzJIYW5kbGUgbV93
YWl0SGFuZGxlOworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsKKyAgICBSZWZQdHI8
V29ya1F1ZXVlPiBtX3F1ZXVlOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
d2luL1dvcmtRdWV1ZVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNw
cAppbmRleCBlMDExY2VkLi5jODE4NmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
V29ya1F1ZXVlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vV29ya1F1ZXVlV2luLmNw
cApAQCAtMSwzNiArMSw3MiBAQAogLyoKLSogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
KiBhcmUgbWV0OgotKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSoKLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0qLworICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV29ya1F1ZXVlLmgiCiAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvd2luL1dvcmtJdGVtQ29udGV4dC5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKIAordm9pZCBXb3JrUXVldWU6OmhhbmRsZUNhbGxiYWNrKHZv
aWQqIGRhdGEsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCkKK3sKKyAgICBBU1NFUlRfQVJHKGRh
dGEsIGRhdGEpOworICAgIEFTU0VSVF9BUkcodGltZXJPcldhaXRGaXJlZCwgIXRpbWVyT3JXYWl0
RmlyZWQpOworCisgICAgV29ya0l0ZW1Db250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V29y
a0l0ZW1Db250ZXh0Kj4oZGF0YSk7CisgICAgV29ya1F1ZXVlKiBxdWV1ZSA9IGNvbnRleHQtPnF1
ZXVlKCk7CisKKyAgICBSZWZQdHI8V29ya0l0ZW1Db250ZXh0PiBwcm90ZWN0b3IoY29udGV4dCk7
CisgICAgcXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0b3JdIHsKKyAgICAgICAgcHJvdGVjdG9yLT5m
dW5jdGlvbigpKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpyZWdpc3RlckhhbmRs
ZShIQU5ETEUgaGFuZGxlLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgUmVm
PFdvcmtJdGVtQ29udGV4dD4gY29udGV4dCA9IFdvcmtJdGVtQ29udGV4dDo6Y3JlYXRlKGhhbmRs
ZSwgbnVsbHB0ciwgV1RGTW92ZShmdW5jdGlvbiksIHRoaXMpOworCisgICAgaWYgKCE6OlJlZ2lz
dGVyV2FpdEZvclNpbmdsZU9iamVjdCgmY29udGV4dC0+d2FpdEhhbmRsZSgpLm1faGFuZGxlLCBo
YW5kbGUsIGhhbmRsZUNhbGxiYWNrLCBjb250ZXh0LnB0cigpLCBJTkZJTklURSwgV1RfRVhFQ1VU
RURFRkFVTFQpKQorICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fdGltZXJRdWV1ZSwgIjo6
UmVnaXN0ZXJXYWl0Rm9yU2luZ2xlT2JqZWN0ICVsdSIsIDo6R2V0TGFzdEVycm9yKCkpOworCisg
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX2l0ZW1zTWFwTG9jayk7CisgICAgQVNTRVJUX0FSRyhoYW5k
bGUsICFtX2l0ZW1zTWFwLmNvbnRhaW5zKGhhbmRsZSkpOworICAgIG1faXRlbXNNYXAuc2V0KGhh
bmRsZSwgV1RGTW92ZShjb250ZXh0KSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjp1bnJlZ2lzdGVy
QW5kQ2xvc2VIYW5kbGUoSEFORExFIGhhbmRsZSkKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9pdGVtc01hcExvY2spOworICAgIEFTU0VSVF9BUkcoaGFuZGxlLCBtX2l0ZW1zTWFwLmNvbnRh
aW5zKGhhbmRsZSkpOworCisgICAgdW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24oV1RG
TW92ZShtX2l0ZW1zTWFwLnRha2UoaGFuZGxlKS52YWx1ZSgpKSk7Cit9CisKIERXT1JEIFdvcmtR
dWV1ZTo6d29ya1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUX0FS
Ryhjb250ZXh0LCBjb250ZXh0KTsKQEAgLTE5MCw0ICsyMjYsMjYgQEAgdm9pZCBXb3JrUXVldWU6
OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0
aW9uKQogICAgIGNvbnRleHQubGVha1JlZigpOwogfQogCit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdp
c3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24oUmVmPFdvcmtJdGVtQ29udGV4dD4mJiB3b3JrSXRl
bSkKK3sKKyAgICAvLyBXZSdyZSBnb2luZyB0byBtYWtlIGEgYmxvY2tpbmcgY2FsbCB0byA6OlVu
cmVnaXN0ZXJXYWl0RXggYmVmb3JlIGNsb3NpbmcgdGhlIGhhbmRsZS4gKFRoZQorICAgIC8vIGJs
b2NraW5nIHZlcnNpb24gb2YgOjpVbnJlZ2lzdGVyV2FpdEV4IGlzIG11Y2ggc2ltcGxlciB0aGFu
IHRoZSBub24tYmxvY2tpbmcgdmVyc2lvbi4pIElmIHdlCisgICAgLy8gZG8gdGhpcyBvbiB0aGUg
Y3VycmVudCB0aHJlYWQsIHdlJ2xsIGRlYWRsb2NrIGlmIHdlJ3JlIGN1cnJlbnRseSBpbiBhIGNh
bGxiYWNrIGZ1bmN0aW9uIGZvcgorICAgIC8vIHRoZSB3YWl0IHdlJ3JlIHVucmVnaXN0ZXJpbmcu
IFNvIGluc3RlYWQgd2UgZG8gaXQgYXN5bmNocm9ub3VzbHkgb24gc29tZSBvdGhlciB3b3JrZXIg
dGhyZWFkLgorICAgIDo6UXVldWVVc2VyV29ya0l0ZW0odW5yZWdpc3RlcldhaXRBbmREZXN0cm95
SXRlbUNhbGxiYWNrLCB3b3JrSXRlbS5wdHIoKSwgV1RfRVhFQ1VURURFRkFVTFQpOworfQorCitE
V09SRCBXSU5BUEkgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJh
Y2sodm9pZCogZGF0YSkKK3sKKyAgICBBU1NFUlRfQVJHKGRhdGEsIGRhdGEpOworICAgIFdvcmtJ
dGVtQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtJdGVtQ29udGV4dCo+KGRhdGEp
OworCisgICAgLy8gTm93IHRoYXQgd2Uga25vdyB3ZSdyZSBub3QgaW4gYSBjYWxsYmFjayBmdW5j
dGlvbiBmb3IgdGhlIHdhaXQgd2UncmUgdW5yZWdpc3RlcmluZywgd2UgY2FuCisgICAgLy8gbWFr
ZSBhIGJsb2NraW5nIGNhbGwgdG8gOjpVbnJlZ2lzdGVyV2FpdEV4LgorICAgIGlmICghOjpVbnJl
Z2lzdGVyV2FpdEV4KGNvbnRleHQtPndhaXRIYW5kbGUoKS5nZXQoKSwgSU5WQUxJRF9IQU5ETEVf
VkFMVUUpKQorICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGZhbHNlLCAiOjpVbnJlZ2lzdGVy
V2FpdEV4IGZhaWxlZCB3aXRoICclcyciLCA6OkdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVy
biAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
      

    </bug>

</bugzilla>