<?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>139736</bug_id>
          
          <creation_ts>2014-12-17 11:15:43 -0800</creation_ts>
          <short_desc>[iOS] WebKitTestRunner: Tests fail due to incorrect web view size</short_desc>
          <delta_ts>2015-01-21 15:48:40 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 8.1</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Jon Honeycutt">jhoneycutt</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>jhoneycutt</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1056387</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-12-17 11:15:43 -0800</bug_when>
    <thetext>When I ran all the layout tests for iOS using WebKitTestRunner today, some tests intermittently fail because the size of the RenderView associated with the main web view is 1024 x 768 pixels instead of 800 x 600 pixels. For example, the test LayoutTests/tables/mozilla/dom/insertCellsExpand2.html failed with the following diff in one run of the full suite of layout tests:

[[
--- /Volumes/Data/WebKitDevGit/OpenSource/layout-test-results-rebase/tables/mozilla/dom/insertCellsExpand2-expected.txt
+++ /Volumes/Data/WebKitDevGit/OpenSource/layout-test-results-rebase/tables/mozilla/dom/insertCellsExpand2-actual.txt
@@ -1,9 +1,9 @@
-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderBlock {HTML} at (0,0) size 800x600
-    RenderBody {BODY} at (8,8) size 784x584
-      RenderBlock (anonymous) at (0,0) size 784x20
+layer at (0,0) size 1024x768
+  RenderView at (0,0) size 1024x768
+layer at (0,0) size 1024x768
+  RenderBlock {HTML} at (0,0) size 1024x768
+    RenderBody {BODY} at (8,8) size 1008x752
+      RenderBlock (anonymous) at (0,0) size 1008x20
         RenderText {#text} at (0,0) size 218x19
           text run at (0,0) width 218: &quot;The 2 tables should look the same&quot;
       RenderTable {TABLE} at (0,20) size 124x82 [bgcolor=#FFA500] [border: (1px outset #808080)]
@@ -38,7 +38,7 @@
             RenderTableCell {TD} at (92,54) size 28x24 [border: (1px inset #808080)] [r=2 c=3 rs=1 cs=1]
               RenderText {#text} at (2,2) size 24x19
                 text run at (2,2) width 24: &quot;c34&quot;
-      RenderBlock (anonymous) at (0,102) size 784x20
+      RenderBlock (anonymous) at (0,102) size 1008x20
         RenderBR {BR} at (0,0) size 0x19
       RenderTable {TABLE} at (0,122) size 124x82 [bgcolor=#FFA500] [border: (1px outset #808080)]
         RenderTableSection {TBODY} at (1,1) size 122x80
]]

The tests that fail with similar differences change between runs of the full suite of layout tests. Moreover, the tests that fail with such differences pass when run either individually or as part of running all the tests in some sub-directory of LayoutTests along its path. In particular, LayoutTests/tables/mozilla/dom/insertCellsExpand2.html passes when run individually or when run as part of running all the tests in LayoutTests/tables.

For completeness, I ran the full suite of layout tests using a command line of the form:

Tools/Scripts/run-webkit-tests --ios-sim --runtime com.apple.CoreSimulator.SimRuntime.iOS-[...] --device-type com.apple.CoreSimulator.SimDeviceType.iPhone-5s --no-sample-on-timeout --results-directory layout-test-results-rebase -2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056481</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-12-17 11:29:10 -0800</bug_when>
    <thetext>I forgot to add that when I run the full test suite run-webkit-tests runs 24 instances of WebKitTestRunnerApp.apps in parallel. The test failure of LayoutTests/tables/mozilla/dom/insertCellsExpand2.html occurred during a run with a debug build of WebKit at r177430. I am using a Mac Pro with 2 x 2.66 GHz 6-Core Intel Xeon processors, 12 GB RAM and OS X Yosemite (14A378).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056482</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-12-17 11:30:24 -0800</bug_when>
    <thetext>Some tests force a larger window size (imported svg tests I think?). Sounds like we fail to resize back when returning to normal tests.

run-webkit-tests --debug-rwt-logging shows the order of tests run on each worker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056489</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-12-17 12:04:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/19282196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056738</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-12-18 02:49:55 -0800</bug_when>
    <thetext>As a quick fix, can we &quot;isolate&quot; SVG tests to their own subset of parallel workers?  (Not sure if that&apos;s possible or not in run-webkit-tests.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060770</commentid>
    <comment_count>5</comment_count>
      <attachid>244497</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-01-12 22:54:26 -0800</bug_when>
    <thetext>Created attachment 244497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061022</commentid>
    <comment_count>6</comment_count>
      <attachid>244497</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-01-13 18:10:21 -0800</bug_when>
    <thetext>Comment on attachment 244497
Patch

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

&gt; Source/WebKit2/UIProcess/ios/PageClientImplIOS.h:49
&gt;      PageClientImpl(WKContentView *, WKWebView *);
&gt; +    PageClientImpl(WKContentView *, WKView *);

I don&apos;t think we want to add more uses of WKView in WebKit2, since it&apos;s obsolete and will be removed. Isn&apos;t there some other way we can get the _didRelaunchProcess notification out for WTR?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061040</commentid>
    <comment_count>7</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-01-13 19:33:32 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 244497 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244497&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/PageClientImplIOS.h:49
&gt; &gt;      PageClientImpl(WKContentView *, WKWebView *);
&gt; &gt; +    PageClientImpl(WKContentView *, WKView *);
&gt; 
&gt; I don&apos;t think we want to add more uses of WKView in WebKit2, since it&apos;s
&gt; obsolete and will be removed. Isn&apos;t there some other way we can get the
&gt; _didRelaunchProcess notification out for WTR?

I discussed this with Ben, and he felt it was OK to add a pointer to the WKView to PageClient until we reach the point that we can remove WKView.

I couldn&apos;t come up with a better approach to fix this for WKView, but we could fix this by adopting WKWebView for WKTR, because it already handles this case. &lt;rdar://problem/16947123&gt; covers that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061320</commentid>
    <comment_count>8</comment_count>
      <attachid>244497</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-01-14 14:54:43 -0800</bug_when>
    <thetext>Comment on attachment 244497
Patch

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

&gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:344
&gt; +- (void)_didRelaunchProcess
&gt; +{
&gt; +    // Update the WebView to our size rather than the default size it will have after being relaunched.
&gt; +    [self _frameOrBoundsChanged];
&gt; +}

But there&apos;s already -[WKView _didRelaunchProcess] in WKView.mm. Why can&apos;t you just add code there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061380</commentid>
    <comment_count>9</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-01-14 16:00:25 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 244497 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244497&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:344
&gt; &gt; +- (void)_didRelaunchProcess
&gt; &gt; +{
&gt; &gt; +    // Update the WebView to our size rather than the default size it will have after being relaunched.
&gt; &gt; +    [self _frameOrBoundsChanged];
&gt; &gt; +}
&gt; 
&gt; But there&apos;s already -[WKView _didRelaunchProcess] in WKView.mm. Why can&apos;t
&gt; you just add code there?

That&apos;s the Mac WKView impl. It&apos;s not shared with iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061383</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-01-14 16:03:45 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 244497 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=244497&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:344
&gt; &gt; &gt; +- (void)_didRelaunchProcess
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    // Update the WebView to our size rather than the default size it will have after being relaunched.
&gt; &gt; &gt; +    [self _frameOrBoundsChanged];
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; But there&apos;s already -[WKView _didRelaunchProcess] in WKView.mm. Why can&apos;t
&gt; &gt; you just add code there?
&gt; 
&gt; That&apos;s the Mac WKView impl. It&apos;s not shared with iOS.

Can we do something via the C SPI?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061543</commentid>
    <comment_count>11</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-01-15 07:10:06 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Comment on attachment 244497 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=244497&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/ios/WKViewIOS.mm:344
&gt; &gt; &gt; &gt; +- (void)_didRelaunchProcess
&gt; &gt; &gt; &gt; +{
&gt; &gt; &gt; &gt; +    // Update the WebView to our size rather than the default size it will have after being relaunched.
&gt; &gt; &gt; &gt; +    [self _frameOrBoundsChanged];
&gt; &gt; &gt; &gt; +}
&gt; &gt; &gt; 
&gt; &gt; &gt; But there&apos;s already -[WKView _didRelaunchProcess] in WKView.mm. Why can&apos;t
&gt; &gt; &gt; you just add code there?
&gt; &gt; 
&gt; &gt; That&apos;s the Mac WKView impl. It&apos;s not shared with iOS.
&gt; 
&gt; Can we do something via the C SPI?

AFAICT, the C SPI only goes as far as notifying the PageClient, which doesn&apos;t currently have access to the WKView.

I did consider another hacky fix for this. WKTR knows that it&apos;s killing and relaunching the web process, so it can force the WebView to resize itself, which will send a message to the web process telling it the correct layout size. However, WKView has an early return in -setFrame: if the size of the view hasn&apos;t changed, so we would have to first resize the view to something other than 800x600 and then resize it again to 800x600 whenever WKTR decides to kill the web process.

Given that both fixes are temporary workarounds, that approach would have the benefit of being a smaller change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061994</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-16 15:27:39 -0800</bug_when>
    <thetext>(In reply to comment #11)

I am ok with this patch a temporary measure to get more tests passing in the short term. I am working on getting WKWebView to be something we can base WebKitTestRunner on, but I don&apos;t see why this should be blocked on that in the interim.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063195</commentid>
    <comment_count>13</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-21 14:56:17 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; 
&gt; I am ok with this patch a temporary measure to get more tests passing in the
&gt; short term. I am working on getting WKWebView to be something we can base
&gt; WebKitTestRunner on, but I don&apos;t see why this should be blocked on that in
&gt; the interim.

+1

This is disgusting, but not running tests is worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063197</commentid>
    <comment_count>14</comment_count>
      <attachid>244497</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-01-21 15:01:24 -0800</bug_when>
    <thetext>Comment on attachment 244497
Patch

Ok, let&apos;s do it.

I r+ this as a workaround until WKWebView is the default for testing.

I hope I can outrun Simon if he tries to strangle me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063215</commentid>
    <comment_count>15</comment_count>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-01-21 15:48:40 -0800</bug_when>
    <thetext>Landed in &lt;http://trac.webkit.org/changeset/178870&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244497</attachid>
            <date>2015-01-12 22:54:26 -0800</date>
            <delta_ts>2015-01-21 15:01:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139736-20150112225432.patch</filename>
            <type>text/plain</type>
            <size>10212</size>
            <attacher name="Jon Honeycutt">jhoneycutt</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGQ2M2YxNDE1NTNkMWQ4
ZDA1ODI3OTFlMzliZTQ2MWNmNmE5ZmM1NC4uMjA3MGU0ZDlhMTQ4MTc3ODJmMjBhZWUzOTUyMDkw
MDBkODUwM2E5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE1LTAxLTEyICBKb24g
SG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gV2ViS2l0
VGVzdFJ1bm5lcjogVGVzdHMgZmFpbCBkdWUgdG8gaW5jb3JyZWN0IHdlYiB2aWV3IHNpemUKKwor
ICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTczNj4K
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE5MjgyMTk2PgorCisgICAgICAgIFRoaXMgc3RhcnRz
IGhhcHBlbmluZyBhZnRlciB3ZSBmYWlsIHRvIHJlc2V0IHRoZSB0ZXN0IGNvbnRyb2xsZXIgdG8K
KyAgICAgICAgY29uc2lzdGVudCB2YWx1ZXMgaW4gVGVzdEludm9jYXRpb246Omludm9rZSgpLiBX
aGVuIHdlIHRlcm1pbmF0ZSB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgYW5kIHJlbGF1bmNoIGl0
LCB0aGUgbmV3IFdlYlBhZ2Ugb2JqZWN0IGNyZWF0ZWQgaW4gdGhlIHdlYgorICAgICAgICBwcm9j
ZXNzIGlzIHVzaW5nIHRoZSBkZWZhdWx0IFZpZXdwb3J0Q29uZmlndXJhdGlvbiB3aXRoIGRpbWVu
c2lvbnMgb2YKKyAgICAgICAgMTAyNHg3NjguCisKKyAgICAgICAgVGhlIFBhZ2VDbGllbnQgb24g
aU9TIGN1cnJlbnRseSBub3RpZmllcyB0aGUgV0tXZWJWaWV3IGFuZCB0aGUKKyAgICAgICAgV0tD
b250ZW50VmlldyB3aGVuIHRoZSB3ZWIgcHJvY2VzcyBpcyByZWxhdW5jaGVkLiBUaGlzIHBhdGNo
IGV4dGVuZHMKKyAgICAgICAgdGhhdCB0byBhbHNvIG5vdGlmeSB0aGUgV0tWaWV3LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1ZpZXdQcml2YXRlLmg6CisgICAgICAgIERlY2xhcmUgLV9kaWRSZWxhdW5jaFBy
b2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1ZpZXdJT1MubW06CisgICAg
ICAgICgtW1dLVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoQ29udGV4dFJlZjpwYWdlR3Jv
dXBSZWY6cmVsYXRlZFRvUGFnZTpdKToKKyAgICAgICAgQ2FsbCB0aGUgbmV3IG1ldGhvZCB0aGF0
IGFjY2VwdHMgYSBXS1ZpZXcuCisgICAgICAgICgtW1dLVmlldyBfZGlkUmVsYXVuY2hQcm9jZXNz
XSk6CisgICAgICAgIENhbGwgLV9mcmFtZU9yQm91bmRzQ2hhbmdlZCB0byB1cGRhdGUgdGhlIHdl
YiBwcm9jZXNzJ3Mgc2l6ZSB0byB0aGUKKyAgICAgICAgc2l6ZSBvZiB0aGUgV0tWaWV3LgorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICBBZGQg
YSBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgV0tWaWV3LCBhbmQgYWRkIGEgbWVtYmVyIHZhciB0
byBob2xkIGl0LgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAg
ICAgICAgSW1wbGVtZW50IHRoZSBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgV0tWaWV3LgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKToKKyAgICAg
ICAgVGVsbCB0aGUgV0tWaWV3IHRoYXQgdGhlIHdlYiBwcm9jZXNzIHJlbGF1bmNoZWQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAgICAgICAgRGVjbGFyZSBh
biBpbml0aWFsaXplciB0aGF0IHRha2VzIGEgV0tWaWV3LgorCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25J
bml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICBT
cGxpdCBvdXQgZnJvbSAtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpj
b25maWd1cmF0aW9uOndlYlZpZXc6XS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBpbml0V2l0
aEZyYW1lOnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246d2ViVmlldzpdKToKKyAgICAgICAgUGVy
Zm9ybSBzb21lIGluaXRpYWxpemF0aW9uLCBpbmNsdWRpbmcgY3JlYXRpbmcgdGhlIFBhZ2VDbGll
bnQsIGFuZAorICAgICAgICBjYWxsIHRoZSBjb21tb24gaW5pdGlhbGl6ZXIuCisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndr
VmlldzpdKToKKyAgICAgICAgRGl0dG8uCisKIDIwMTUtMDEtMTIgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyB0YXJnZXR0aW5nIHRoZSBT
VkctPk9URiBmb250IGNvbnZlcnRlciB3aXRoIEVOQUJMRShTVkdfT1RGX0NPTlZFUlRFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgK
aW5kZXggNGRmN2NiNjBkN2M3NDMxMjM2NDk3MTAyNTAzYzVmMTNkODMzMTJjMC4uM2E5MTczOTZk
ZjkxZGViYTc5YWU5NTI3YjU2NTRmYzkzZjY3ZDMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKQEAgLTU2LDYgKzU2LDcgQEAK
IAogLSAodm9pZClfYmVnaW5JbnRlcmFjdGl2ZU9ic2N1cmVkSW5zZXRzQ2hhbmdlOwogLSAodm9p
ZClfZW5kSW50ZXJhY3RpdmVPYnNjdXJlZEluc2V0c0NoYW5nZTsKKy0gKHZvaWQpX2RpZFJlbGF1
bmNoUHJvY2VzczsKIAogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9p
b3MvV0tWaWV3SU9TLm1tCmluZGV4IGFlMzk4ODU0Njk1YzZlZjEyODY4ZTM4NDY5NjYwOTNiNTNm
ZWY1YjAuLjk3NTZiYmQ2ZGYxOWZjOWExN2Q3MDkzZTAwYTM1M2YxZjc4OGU3NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLVmlld0lPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS1ZpZXdJT1MubW0KQEAgLTIyMyw3ICsy
MjMsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhDb250ZXh0UmVmOihXS0Nv
bnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSZQogICAgIHdlYlBhZ2VDb25maWd1cmF0aW9u
LnBhZ2VHcm91cCA9IHRvSW1wbChwYWdlR3JvdXBSZWYpOwogICAgIHdlYlBhZ2VDb25maWd1cmF0
aW9uLnJlbGF0ZWRQYWdlID0gdG9JbXBsKHJlbGF0ZWRQYWdlKTsKIAotICAgIF9jb250ZW50Vmll
dyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kcyBw
cm9jZXNzUG9vbDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKHdl
YlBhZ2VDb25maWd1cmF0aW9uKSB3ZWJWaWV3Om5pbF0pOworICAgIF9jb250ZW50VmlldyA9IGFk
b3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmJvdW5kcyBwcm9jZXNz
UG9vbDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKHdlYlBhZ2VD
b25maWd1cmF0aW9uKSB3a1ZpZXc6c2VsZl0pOwogCiAgICAgW1tfY29udGVudFZpZXcgbGF5ZXJd
IHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKICAgICBbX2NvbnRlbnRWaWV3IHNldEZyYW1l
OmJvdW5kc107CkBAIC0zMzcsNiArMzM3LDEyIEBAIC0gKHZvaWQpc2V0TWluaW11bUxheW91dFNp
emVPdmVycmlkZTooQ0dTaXplKW1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUKICAgICBfbWluaW11
bUxheW91dFNpemVPdmVycmlkZSA9IG1pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGU7CiB9CiAKKy0g
KHZvaWQpX2RpZFJlbGF1bmNoUHJvY2VzcworeworICAgIC8vIFVwZGF0ZSB0aGUgV2ViVmlldyB0
byBvdXIgc2l6ZSByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBzaXplIGl0IHdpbGwgaGF2ZSBhZnRl
ciBiZWluZyByZWxhdW5jaGVkLgorICAgIFtzZWxmIF9mcmFtZU9yQm91bmRzQ2hhbmdlZF07Cit9
CisKIC0gKFVJRWRnZUluc2V0cylfb2JzY3VyZWRJbnNldHMKIHsKICAgICByZXR1cm4gX29ic2N1
cmVkSW5zZXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oCmluZGV4IDIzNWYyMmEzMTA5ODY4YWI3ZTEyNjY4NTMyYTlmYmY0ZmVkMmYxMmMu
LjMyZjQzNmRhY2ZiYjdlZGFkZjgzYjE2OWU2NWNkMWMwZDhhN2ZkYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogT0JKQ19DTEFTUyBXS0NvbnRlbnRW
aWV3OworT0JKQ19DTEFTUyBXS1ZpZXc7CiBPQkpDX0NMQVNTIFdLV2ViVmlldzsKIE9CSkNfQ0xB
U1MgV0tFZGl0b3JVbmRvVGFyZ2V0T2JqQzsKIApAQCAtNDUsNiArNDYsNyBAQCBjbGFzcyBQYWdl
Q2xpZW50SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50CiAgICAgewogcHVibGljOgogICAgIFBhZ2VD
bGllbnRJbXBsKFdLQ29udGVudFZpZXcgKiwgV0tXZWJWaWV3ICopOworICAgIFBhZ2VDbGllbnRJ
bXBsKFdLQ29udGVudFZpZXcgKiwgV0tWaWV3ICopOwogICAgIHZpcnR1YWwgflBhZ2VDbGllbnRJ
bXBsKCk7CiAgICAgCiBwcml2YXRlOgpAQCAtMTgxLDYgKzE4Myw3IEBAIHByaXZhdGU6CiAKICAg
ICBXS0NvbnRlbnRWaWV3ICptX2NvbnRlbnRWaWV3OwogICAgIFdLV2ViVmlldyAqbV93ZWJWaWV3
OworICAgIFdLVmlldyAqbV93a1ZpZXc7CiAgICAgUmV0YWluUHRyPFdLRWRpdG9yVW5kb1Rhcmdl
dE9iakM+IG1fdW5kb1RhcmdldDsKIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDA1
MGQxNGJhYzNjYzhmNGMwNDA5YmI3NTU3M2FlOWNhMzM1ZTg5ZDYuLmU3N2Q3YjYyZTQ5YTg3YzI3
MDhjYmM0ZDk0NjdhZDMxNDlkMjVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCAi
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCiAjaW1wb3J0ICJXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MuaCIKICNpbXBvcnQgIldLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tW
aWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgogI2ltcG9ydCAi
V0tXZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTExNCw2ICsxMTUsMTQgQEAgUGFnZUNsaWVudEltcGw6
OlBhZ2VDbGllbnRJbXBsKFdLQ29udGVudFZpZXcgKmNvbnRlbnRWaWV3LCBXS1dlYlZpZXcgKndl
YlZpZXcpCiB7CiB9CiAKK1BhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChXS0NvbnRlbnRW
aWV3ICpjb250ZW50VmlldywgV0tWaWV3ICp3ZWJWaWV3KQorICAgIDogbV9jb250ZW50Vmlldyhj
b250ZW50VmlldykKKyAgICAsIG1fd2ViVmlldyhuaWwpCisgICAgLCBtX3drVmlldyh3ZWJWaWV3
KQorICAgICwgbV91bmRvVGFyZ2V0KGFkb3B0TlMoW1tXS0VkaXRvclVuZG9UYXJnZXRPYmpDIGFs
bG9jXSBpbml0XSkpCit7Cit9CisKIFBhZ2VDbGllbnRJbXBsOjp+UGFnZUNsaWVudEltcGwoKQog
ewogfQpAQCAtMjEzLDYgKzIyMiw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlbGF1bmNo
UHJvY2VzcygpCiB7CiAgICAgW21fY29udGVudFZpZXcgX2RpZFJlbGF1bmNoUHJvY2Vzc107CiAg
ICAgW21fd2ViVmlldyBfZGlkUmVsYXVuY2hQcm9jZXNzXTsKKyAgICBbbV93a1ZpZXcgX2RpZFJl
bGF1bmNoUHJvY2Vzc107CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VDbG9zZWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAppbmRleCBiMDc3
NjVkNjU0NGUxMzc3NzAwYjRhOGZjMDMyNDk3YTNlZTdiZDAzLi5iMDYzNjNiMDk5ZGIyMmRlYTI5
NTg4Yjg1MmRmODBiMjliOGMxYzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXcuaApAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCiBAY2xhc3MgV0tDb250ZW50VmlldzsKK0BjbGFzcyBXS1ZpZXc7CiBAY2xhc3MgV0tX
ZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Miw2ICs2Myw3IEBAIHN0cnVjdCBX
ZWJQYWdlQ29uZmlndXJhdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBpc0JhY2tncm91bmQ7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3Qp
ZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNv
bmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRpb24pd2ViUGFnZUNvbmZpZ3Vy
YXRpb24gd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFdlYktpdDo6V2ViUGFnZUNvbmZpZ3VyYXRp
b24pd2ViUGFnZUNvbmZpZ3VyYXRpb24gd2tWaWV3OihXS1ZpZXcgKil3ZWJWaWV3OwogCiAtICh2
b2lkKWRpZFVwZGF0ZVZpc2libGVSZWN0OihDR1JlY3QpdmlzaWJsZVJlY3QgdW5vYnNjdXJlZFJl
Y3Q6KENHUmVjdCl1bm9ic2N1cmVkUmVjdAogICAgIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3
Q29vcmRpbmF0ZXM6KENHUmVjdCl1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXgg
ZjBmMGIxMWI0OGI4MTAyN2E2YjFlYjc2ZGZjNzBiMWM3MDg5Y2RhOS4uNzA1ZjU0M2VkZTE5N2I1
MDRjMjk2MjdiZmJlMjNjMWE5MmI2ZTAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMTc4LDE0ICsxNzgsOSBAQCBAaW1wbGVtZW50YXRp
b24gV0tDb250ZW50VmlldyB7CiAgICAgUmV0YWluUHRyPE5TVW5kb01hbmFnZXI+IF91bmRvTWFu
YWdlcjsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBw
cm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJh
dGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdlQ29uZmlndXJhdGlvbiB3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CistIChpbnN0YW5jZXR5cGUpX2NvbW1vbkluaXRp
YWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNz
UG9vbCBjb25maWd1cmF0aW9uOihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VD
b25maWd1cmF0aW9uCiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZy
YW1lXSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBJbml0aWFsaXplV2ViS2l0MigpOwot
Ci0gICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxm
LCB3ZWJWaWV3KTsKKyAgICBBU1NFUlQoX3BhZ2VDbGllbnQpOwogCiAgICAgX3BhZ2UgPSBwcm9j
ZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCpfcGFnZUNsaWVudCwgV1RGOjptb3ZlKHdlYlBhZ2VDb25m
aWd1cmF0aW9uKSk7CiAgICAgX3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKCk7CkBAIC0xOTMsOCAr
MTg4LDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9j
ZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYKICAgICBfcGFnZS0+c2V0VXNlRml4ZWRM
YXlvdXQodHJ1ZSk7CiAgICAgX3BhZ2UtPnNldERlbGVnYXRlc1Njcm9sbGluZyh0cnVlKTsKIAot
ICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKLSAgICAKICAgICBfaXNCYWNrZ3JvdW5kID0gW1VJQXBw
bGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dLmFwcGxpY2F0aW9uU3RhdGUgPT0gVUlBcHBsaWNh
dGlvblN0YXRlQmFja2dyb3VuZDsKIAogICAgIFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzKCku
d2tWaWV3Q291bnQrKzsKQEAgLTIyNiw2ICsyMTksMzEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYKICAgICByZXR1cm4gc2VsZjsKIH0KIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6
KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vz
c1Bvb2wgY29uZmlndXJhdGlvbjooV2ViS2l0OjpXZWJQYWdlQ29uZmlndXJhdGlvbil3ZWJQYWdl
Q29uZmlndXJhdGlvbiB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXSkpCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICBJbml0aWFsaXplV2ViS2l0MigpOworCisgICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKKyAgICBfd2ViVmlldyA9
IHdlYlZpZXc7CisKKyAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFBy
b2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246d2ViUGFnZUNvbmZpZ3VyYXRpb25d
OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nl
c3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9u
OihXZWJLaXQ6OldlYlBhZ2VDb25maWd1cmF0aW9uKXdlYlBhZ2VDb25maWd1cmF0aW9uIHdrVmll
dzooV0tWaWV3ICopd2tWaWV3Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEZy
YW1lOmZyYW1lXSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBJbml0aWFsaXplV2ViS2l0
MigpOworCisgICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBs
PihzZWxmLCB3a1ZpZXcpOworCisgICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOndlYlBhZ2VDb25maWd1
cmF0aW9uXTsKK30KKwogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW3NlbGYgY2xlYW51cEludGVy
YWN0aW9uXTsK
</data>
<flag name="review"
          id="269433"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>