<?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>183791</bug_id>
          
          <creation_ts>2018-03-20 12:41:54 -0700</creation_ts>
          <short_desc>QuickLook.NavigationDelegate API test is failing on iOS with async policy delegates</short_desc>
          <delta_ts>2018-03-20 17:48:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>180568</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1407753</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-20 12:41:54 -0700</bug_when>
    <thetext>QuickLook.NavigationDelegate API test is failing on iOS with async policy delegates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407760</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-20 12:53:29 -0700</bug_when>
    <thetext>The issue is that we commit the load before we&apos;ve even validated the response:
0x122480000 - DocumentLoader::continueAfterContentPolicy(2) x-apple-ql-id://E98B3934-F318-4778-823F-AE27DE4B5EFB/x-apple-ql-magic/pages.pages
1   0x117212ec8 WebCore::DocumentLoader::continueAfterContentPolicy(WebCore::PolicyAction)
2   0x11721ef97 WTF::Function&lt;void (WebCore::PolicyAction)&gt;::CallableWrapper&lt;WebCore::DocumentLoader::responseReceived(WebCore::ResourceResponse const&amp;, WTF::CompletionHandler&lt;void ()&gt;&amp;&amp;)::$_7&gt;::call(WebCore::PolicyAction)
3   0x10d6fc64c WebKit::WebFrame::invalidatePolicyListener()
4   0x11722ca0a WebCore::FrameLoader::stopLoading(WebCore::UnloadEventPolicy)
5   0x117234d3b WebCore::FrameLoader::transitionToCommitted(WebCore::CachedPage*)
6   0x11723452f WebCore::FrameLoader::commitProvisionalLoad()
7   0x117213991 WebCore::DocumentLoader::commitLoad(char const*, int)
8   0x117294242 WebCore::CachedRawResource::notifyClientsDataWasReceived(char const*, unsigned int)
9   0x117293ffb WebCore::CachedRawResource::updateBuffer(WebCore::SharedBuffer&amp;)
10  0x11726771b WebCore::SubresourceLoader::didReceiveDataOrBuffer(char const*, int, WTF::RefPtr&lt;WebCore::SharedBuffer, WTF::DumbPtrTraits&lt;WebCore::SharedBuffer&gt; &gt;&amp;&amp;, long long, WebCore::DataPayloadType)
11  0x117267588 WebCore::SubresourceLoader::didReceiveData(char const*, unsigned int, long long, WebCore::DataPayloadType)
12  0x12384a161 -[QLThreadInvoker connectionDidReceiveDataLengthReceived:]
13  0x10cf84d5e __NSThreadPerformPerform
14  0x10ecebbb1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
15  0x10ecd04af __CFRunLoopDoSources0
16  0x10eccfa6f __CFRunLoopRun
17  0x10eccf30b CFRunLoopRunSpecific
18  0x10cf3fb4a -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
19  0x10cf3fa25 -[NSRunLoop(NSRunLoop) run]
20  0x1108f08c9 _xpc_objc_main
21  0x1108f2d73 xpc_main
22  0x10ce93257 main
23  0x110539955 start


So our Quicklook logic does not wait for the response policy to be complete because sending the data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407761</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-20 12:57:25 -0700</bug_when>
    <thetext>_sendDidReceiveResponseIfNecessary in PreviewLoader.mm calls _resourceLoader-&gt;didReceiveResponse(response, nullptr); and does not pass in a completion handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407795</commentid>
    <comment_count>3</comment_count>
      <attachid>336150</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-20 14:29:25 -0700</bug_when>
    <thetext>Created attachment 336150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407799</commentid>
    <comment_count>4</comment_count>
      <attachid>336150</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-03-20 14:35:50 -0700</bug_when>
    <thetext>Comment on attachment 336150
Patch

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

&gt; Source/WebCore/loader/ios/PreviewLoader.mm:53
&gt; +    long long _lengthReceived;

Use SharedBuffer::size instead of saving the same information in a duplicate location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407800</commentid>
    <comment_count>5</comment_count>
      <attachid>336150</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-20 14:38:53 -0700</bug_when>
    <thetext>Comment on attachment 336150
Patch

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

&gt;&gt; Source/WebCore/loader/ios/PreviewLoader.mm:53
&gt;&gt; +    long long _lengthReceived;
&gt; 
&gt; Use SharedBuffer::size instead of saving the same information in a duplicate location.

Is it really duplicate information?

&gt; Source/WebCore/loader/ios/PreviewLoader.mm:145
&gt; +            _resourceLoader-&gt;didReceiveData(bufferedData-&gt;data(), bufferedData-&gt;size(), _lengthReceived, DataPayloadBytes);

Note here that we send both bufferedData-&gt;size() and _lengthReceived.

Or is _lengthReceived the total amount of data we&apos;ve received so far? while bufferedData-&gt;size() is only the size of the latest chunk of data we&apos;ve received?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407804</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-03-20 14:41:43 -0700</bug_when>
    <thetext>One of those is supposed to be the number of bytes received over the network and the other is the size of the data being pointed to.  For example, gzip-encoded messages would have one be the encoded length and one the decoded length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407805</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-20 14:42:38 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; One of those is supposed to be the number of bytes received over the network
&gt; and the other is the size of the data being pointed to.  For example,
&gt; gzip-encoded messages would have one be the encoded length and one the
&gt; decoded length.

So then, it is not duplicate information, is it? The buffer size may differ from lengthReceived no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407806</commentid>
    <comment_count>8</comment_count>
      <attachid>336150</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-03-20 14:44:29 -0700</bug_when>
    <thetext>Comment on attachment 336150
Patch

:|
You&apos;re right.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407816</commentid>
    <comment_count>9</comment_count>
      <attachid>336150</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-03-20 14:53:53 -0700</bug_when>
    <thetext>Comment on attachment 336150
Patch

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

&gt; Source/WebCore/platform/SharedBuffer.h:69
&gt; +    void append(NSData *);

Instead of append should we have a combination of both create and append?

    static void append(RefPtr&lt;SharedBuffer&gt;&amp;, NSData *);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407826</commentid>
    <comment_count>10</comment_count>
      <attachid>336150</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-03-20 15:28:38 -0700</bug_when>
    <thetext>Comment on attachment 336150
Patch

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

&gt;&gt; Source/WebCore/platform/SharedBuffer.h:69
&gt;&gt; +    void append(NSData *);
&gt; 
&gt; Instead of append should we have a combination of both create and append?
&gt; 
&gt;     static void append(RefPtr&lt;SharedBuffer&gt;&amp;, NSData *);

I merely wanted to match the API for CF types below:
static Ref&lt;SharedBuffer&gt; create(CFDataRef);
void append(CFDataRef);

It looked weird in my patch that I had to cast for append() but not create().

I am not sure it is worth introducing a new method here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407834</commentid>
    <comment_count>11</comment_count>
      <attachid>336150</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-20 15:54:25 -0700</bug_when>
    <thetext>Comment on attachment 336150
Patch

Clearing flags on attachment: 336150

Committed r229776: &lt;https://trac.webkit.org/changeset/229776&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407835</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-20 15:54:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407836</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-20 15:55:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/38683883&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407856</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-03-20 17:48:27 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 336150 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=336150&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.h:69
&gt; &gt; +    void append(NSData *);

We already had non-static appends that take a CFDataRef, a const SharedBuffer&amp;, a const char*/size_t, and a Vector&lt;char&gt;&amp;&amp;.  We also have a create that takes an NSData * and just calls the CF version.  I think this fits quite nicely.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336150</attachid>
            <date>2018-03-20 14:29:25 -0700</date>
            <delta_ts>2018-03-20 15:54:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183791-20180320142924.patch</filename>
            <type>text/plain</type>
            <size>8565</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWVlZWQzMDZkOTEyODYx
YjhlMjA3ZmY3MjQ4MzIwYTQxNjBmMDBjZS4uNzRmNTRiMDNlMzhiMzY5NTgyNWNjODQ3ZGVkZWM5
ODlhZDIzYjNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAzLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUXVpY2tMb29rLk5hdmlnYXRp
b25EZWxlZ2F0ZSBBUEkgdGVzdCBpcyBmYWlsaW5nIG9uIGlPUyB3aXRoIGFzeW5jIHBvbGljeSBk
ZWxlZ2F0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mzc5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBQcmV2aWV3TG9hZGVyIHRvIG5vdCBzZW5kIGRhdGEgKG9yIGNhbGwgZmluaXNoRmlu
aXNoTG9hZGluZykgdW50aWwKKyAgICAgICAgdGhlIHJlc291cmNlIHJlc3BvbnNlIGhhcyBiZWVu
IHByb2Nlc3NlZC4KKworICAgICAgICAqIGxvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbToKKyAg
ICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBfc2VuZERpZFJlY2VpdmVSZXNwb25zZUlmTmVjZXNz
YXJ5XSk6CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgY29ubmVjdGlvbjpkaWRSZWNlaXZl
RGF0YTpsZW5ndGhSZWNlaXZlZDpdKToKKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBjb25u
ZWN0aW9uRGlkRmluaXNoTG9hZGluZzpdKToKKwogMjAxOC0wMy0xOSAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBBcHBseSBzb21lIFNESyBjaGVja3Mg
aW4gTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9QcmV2aWV3TG9hZGVyLm1tCmluZGV4IDljMzEyNjA5ZjNiNmE2NTA3NmQ3YWE5MjY0MzU0MTM5
YTAzMzI0ZTAuLjk1MzM0Y2MyZWUwMWUxMDE1YTRiMjBjZTg0ODc0MGZjMTczNWRmNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KQEAgLTQ4LDYgKzQ4LDEw
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3
Q29udmVydGVyPiBfY29udmVydGVyOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX2J1
ZmZlcmVkRGF0YUFycmF5OwogICAgIEJPT0wgX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2U7Cisg
ICAgQk9PTCBfaGFzUHJvY2Vzc2VkUmVzcG9uc2U7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
X2J1ZmZlcmVkRGF0YTsKKyAgICBsb25nIGxvbmcgX2xlbmd0aFJlY2VpdmVkOworICAgIEJPT0wg
X25lZWRzVG9DYWxsRGlkRmluaXNoTG9hZGluZzsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUmVzb3VyY2VMb2FkZXI6KFJlc291cmNlTG9hZGVyJilyZXNvdXJjZUxvYWRlciByZXNvdXJj
ZVJlc3BvbnNlOihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJilyZXNvdXJjZVJlc3BvbnNlOwpAQCAt
MTMwLDcgKzEzNCwyNiBAQCBzdGF0aWMgUHJldmlld0xvYWRlckNsaWVudCYgZW1wdHlDbGllbnQo
KQogICAgIF9yZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZl
cnRlcihXVEZNb3ZlKF9jb252ZXJ0ZXIpKTsKIAogICAgIF9oYXNTZW50RGlkUmVjZWl2ZVJlc3Bv
bnNlID0gWUVTOwotICAgIF9yZXNvdXJjZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlLCBudWxscHRyKTsKKyAgICBfaGFzUHJvY2Vzc2VkUmVzcG9uc2UgPSBOTzsKKyAgICBfcmVz
b3VyY2VMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3NlbGYsIHJldGFpbmVk
U2VsZiA9IHJldGFpblB0cihzZWxmKV0geworICAgICAgICBfaGFzUHJvY2Vzc2VkUmVzcG9uc2Ug
PSBZRVM7CisKKyAgICAgICAgaWYgKF9yZXNvdXJjZUxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3Rh
dGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoYXV0byBidWZmZXJlZERh
dGEgPSBXVEZNb3ZlKF9idWZmZXJlZERhdGEpKSB7CisgICAgICAgICAgICBfcmVzb3VyY2VMb2Fk
ZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcmVkRGF0YS0+ZGF0YSgpLCBidWZmZXJlZERhdGEtPnNp
emUoKSwgX2xlbmd0aFJlY2VpdmVkLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICAgICAgICAgIF9s
ZW5ndGhSZWNlaXZlZCA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX3Jlc291cmNlTG9h
ZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmIChfbmVlZHNUb0NhbGxEaWRGaW5pc2hMb2FkaW5nKSB7CisgICAgICAgICAgICBfbmVl
ZHNUb0NhbGxEaWRGaW5pc2hMb2FkaW5nID0gTk87CisgICAgICAgICAgICBfcmVzb3VyY2VMb2Fk
ZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzIHsgfSk7CisgICAgICAgIH0K
KyAgICB9KTsKIH0KIAogLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25u
ZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihsb25n
IGxvbmcpbGVuZ3RoUmVjZWl2ZWQKQEAgLTE0MSwxMCArMTY0LDIzIEBAIHN0YXRpYyBQcmV2aWV3
TG9hZGVyQ2xpZW50JiBlbXB0eUNsaWVudCgpCiAgICAgCiAgICAgW3NlbGYgX3NlbmREaWRSZWNl
aXZlUmVzcG9uc2VJZk5lY2Vzc2FyeV07CiAKKyAgICBhdXRvIGRhdGFMZW5ndGggPSBkYXRhLmxl
bmd0aDsKKwogICAgIC8vIFF1aWNrTG9vayBjb2RlIHNlbmRzIHVzIGEgbmlsIGRhdGEgYXQgdGlt
ZXMuIFRoZSBjaGVjayBiZWxvdyBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGluCiAgICAgLy8gUmVz
b3VyY2VIYW5kbGVNYWMuY3BwIGFkZGVkIGZvciBhIGRpZmZlcmVudCBidWcuCi0gICAgaWYgKGF1
dG8gZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoKQorICAgIGlmICghZGF0YUxlbmd0aCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKF9oYXNQcm9jZXNzZWRSZXNwb25zZSkgewogICAgICAgICBf
cmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEuYnl0ZXMpLCBkYXRhTGVuZ3RoLCBsZW5ndGhSZWNlaXZlZCwgRGF0YVBheWxvYWRC
eXRlcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIV9idWZmZXJlZERhdGEp
CisgICAgICAgIF9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAg
ICBlbHNlCisgICAgICAgIF9idWZmZXJlZERhdGEtPmFwcGVuZChkYXRhKTsKKyAgICBfbGVuZ3Ro
UmVjZWl2ZWQgKz0gbGVuZ3RoUmVjZWl2ZWQ7CiB9CiAKIC0gKHZvaWQpY29ubmVjdGlvbkRpZEZp
bmlzaExvYWRpbmc6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KQEAgLTE1NSw4ICsxOTEs
MTIgQEAgc3RhdGljIFByZXZpZXdMb2FkZXJDbGllbnQmIGVtcHR5Q2xpZW50KCkKICAgICAKICAg
ICBBU1NFUlQoX2hhc1NlbnREaWRSZWNlaXZlUmVzcG9uc2UpOwogCi0gICAgTmV0d29ya0xvYWRN
ZXRyaWNzIGVtcHR5TWV0cmljczsKLSAgICBfcmVzb3VyY2VMb2FkZXItPmRpZEZpbmlzaExvYWRp
bmcoZW1wdHlNZXRyaWNzKTsKKyAgICBpZiAoIV9oYXNQcm9jZXNzZWRSZXNwb25zZSkgeworICAg
ICAgICBfbmVlZHNUb0NhbGxEaWRGaW5pc2hMb2FkaW5nID0gWUVTOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgX3Jlc291cmNlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtM
b2FkTWV0cmljcyB7IH0pOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNRdWlja0xvb2tQYXNz
d29yZEVycm9yKE5TRXJyb3IgKmVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaAppbmRleCBmYzAyM2VlMzJiYWM4NmQwNTI3MDhkZDlmY2M4YWZkYWIyYzFkNThlLi44OGI4
NGFjMTkxNDI4YzMzZGUxZmNhZDFiODEwMDA5ODA1Mjc0YjMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+
IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CiAgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShOU0RhdGEgKik7CisgICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwogI2VuZGlmCiAj
aWYgVVNFKENGKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVy
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbQppbmRleCA5MTFlZmFjOTc1YjA1NzBkMDI4OWQ2MzRhMzA1ZjUxM2Y0ZTYwZDBiLi41OTRk
MTEwODdkNTJiOGQ0MDI1MDE2ZWYzMzVkN2I5MTE4MTEyYzUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtODgsNiArODgs
MTEgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpuc0Rh
dGEpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKChDRkRhdGFSZWYpbnNE
YXRhKSk7CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpuc0RhdGEpCit7
CisgICAgcmV0dXJuIGFwcGVuZCgoQ0ZEYXRhUmVmKW5zRGF0YSk7Cit9CisKIFJldGFpblB0cjxO
U0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4g
YWRvcHROUygoTlNEYXRhICopY3JlYXRlQ0ZEYXRhKCkubGVha1JlZigpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNjJlZjhiZjRjZjkwMGNm
OWMyYTAwMGNhOWQ3YzY0MGZmNjRlZjlmLi5kMWQwZDQ2MmY2MjAwZTZkMjI5ZTViYTc0YmJjZDM0
Njk5MjI3Nzk2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDMtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBRdWlja0xvb2suTmF2aWdhdGlvbkRlbGVnYXRlIEFQSSB0ZXN0
IGlzIGZhaWxpbmcgb24gaU9TIHdpdGggYXN5bmMgcG9saWN5IGRlbGVnYXRlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVy
YWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xv
b2subW06CisgICAgICAgICgtW1F1aWNrTG9va0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZp
ZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bUXVpY2tMb29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlk
U3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTp1dGk6
XSk6CisgICAgICAgICgtW1F1aWNrTG9va0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3
OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOl0pOgorICAgICAg
ICAoLVtRdWlja0xvb2tBc3luY05hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5h
dmlnYXRpb246XSk6CisgICAgICAgIChURVNUKToKKwogMjAxOC0wMy0yMCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
Mjk3MjYgYW5kIHIyMjk3NjMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1F1aWNrTG9vay5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUXVpY2tMb29rLm1tCmluZGV4IDU4ZjgyNDMxMWRiYjJhODM2ZDU2ODllNmJiMmU3
MTFiZDU3Y2EzNWUuLmI5ZjVkM2IzZmRmNDRlNDM2MWRiZWJlYjJiZTBkNTNjNTViOTBlOTQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29r
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29r
Lm1tCkBAIC03NCw2ICs3NCw0MSBAQCBzdGF0aWMgTlNVUkxSZXF1ZXN0ICogY29uc3QgcGFnZXNE
b2N1bWVudFJlcXVlc3QgPSBbW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTAogCiBAZW5kCiAK
K0BpbnRlcmZhY2UgUXVpY2tMb29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gUXVp
Y2tMb29rQXN5bmNOYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkIChe
KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgaW50
NjRfdCBkZWZlcnJlZFdhaXRUaW1lID0gMTAwICogTlNFQ19QRVJfTVNFQzsKKyAgICBkaXNwYXRj
aF90aW1lX3Qgd2hlbiA9IGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGRlZmVycmVk
V2FpdFRpbWUpOworCisgICAgZGlzcGF0Y2hfYWZ0ZXIod2hlbiwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgXnsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QWxsb3cpOworICAgIH0pOworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRo
RmlsZU5hbWU6KE5TU3RyaW5nICopZmlsZU5hbWUgdXRpOihOU1N0cmluZyAqKXV0aQoreworICAg
IEVYUEVDVF9XS19TVFJFUShleHBlY3RlZEZpbGVOYW1lLCBmaWxlTmFtZSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKGV4cGVjdGVkVVRJLCB1dGkpOworICAgIGRpZFN0YXJ0UXVpY2tMb29rTG9hZCA9
IHRydWU7Cit9CisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6KE5TRGF0YSAqKWRvY3VtZW50
RGF0YQoreworICAgIEVYUEVDVF9FUShleHBlY3RlZEZpbGVTaXplLCBkb2N1bWVudERhdGEubGVu
Z3RoKTsKKyAgICBkaWRGaW5pc2hRdWlja0xvb2tMb2FkID0gdHJ1ZTsKK30KKworLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdh
dGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBpc0RvbmUgPSB0cnVlOworfQorCitAZW5kCisKIHN0
YXRpYyB2b2lkIHJ1blRlc3QoQ2xhc3MgbmF2aWdhdGlvbkRlbGVnYXRlQ2xhc3MsIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0XSk7CkBAIC05Miw2ICsxMjcsMTMgQEAgVEVTVChRdWlja0xvb2ssIE5hdmln
YXRpb25EZWxlZ2F0ZSkKICAgICBFWFBFQ1RfVFJVRShkaWRGaW5pc2hRdWlja0xvb2tMb2FkKTsK
IH0KIAorVEVTVChRdWlja0xvb2ssIEFzeW5jTmF2aWdhdGlvbkRlbGVnYXRlKQoreworICAgIHJ1
blRlc3QoW1F1aWNrTG9va0FzeW5jTmF2aWdhdGlvbkRlbGVnYXRlIGNsYXNzXSwgcGFnZXNEb2N1
bWVudFJlcXVlc3QpOworICAgIEVYUEVDVF9UUlVFKGRpZFN0YXJ0UXVpY2tMb29rTG9hZCk7Cisg
ICAgRVhQRUNUX1RSVUUoZGlkRmluaXNoUXVpY2tMb29rTG9hZCk7Cit9CisKIEBpbnRlcmZhY2Ug
UXVpY2tMb29rRGVjaWRlUG9saWN5RGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGU+CiBAZW5kCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>