<?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>49141</bug_id>
          
          <creation_ts>2010-11-07 06:39:42 -0800</creation_ts>
          <short_desc>Use Blob URL instead of webkit-fake-url when pasting an image</short_desc>
          <delta_ts>2017-04-04 08:24:28 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=170449</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>163100</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris J. Shull">chrisjshull</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aleksander</cc>
    
    <cc>amla70</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dcomfort</cc>
    
    <cc>ebrahim</cc>
    
    <cc>enrica</cc>
    
    <cc>hemaravind1</cc>
    
    <cc>jon.fabritius</cc>
    
    <cc>kontakt</cc>
    
    <cc>markandey</cc>
    
    <cc>markschwarz</cc>
    
    <cc>mcdonald.ben</cc>
    
    <cc>me+wk</cc>
    
    <cc>mike.sherov</cc>
    
    <cc>mkwst</cc>
    
    <cc>orion</cc>
    
    <cc>rniwa</cc>
    
    <cc>vseraphin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>305881</commentid>
    <comment_count>0</comment_count>
    <who name="Chris J. Shull">chrisjshull</who>
    <bug_when>2010-11-07 06:39:42 -0800</bug_when>
    <thetext>When an element is set to be contentEditable, images can be pasted into the element. Currently the img src is set to a webkit-fake-url which makes the image data inaccessible via JS (I think because the same domain policy?).
However, this makes no sense in this case; if you are going to let people paste text into an element, and let JS access the text, then the same should be true for images. 
One way which might get around this is if the img&apos;s src was not a webkit-fake-url, but a data uri (I would guess, but I am not certain).

Example Use Case:
Taking a screenshot to clipboard, which can be pasted into an online bug reporter.
(Much easier than; screenshot to file, drag file onto file input.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544137</commentid>
    <comment_count>1</comment_count>
    <who name="Orion Poplawski">orion</who>
    <bug_when>2012-01-27 09:54:16 -0800</bug_when>
    <thetext>I think we may be seeing this or something similar with the yui editor in Alfresco with OS X clients.  Pasting in images usually works, but at some point the image source will change to webkit-fake-url.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988669</commentid>
    <comment_count>2</comment_count>
    <who name="Vinod Seraphin">vseraphin</who>
    <bug_when>2014-03-08 18:03:57 -0800</bug_when>
    <thetext>Firefox pastes data: uris (inline image data) which works really well, and Chrome (even when it was webkit based) supported establishing a paste event listener, having a &apos;file&apos; type of clipboard data iteme on a paste, and using FileReader to allow accessing that data as a data: url value via readAsDataURL method.

Safari has fallen behind badly by not supporting some way paste clipboard image can be implemented.  Fixing this defect would greatly help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022511</commentid>
    <comment_count>3</comment_count>
    <who name="Mike Sherov">mike.sherov</who>
    <bug_when>2014-07-15 11:01:16 -0700</bug_when>
    <thetext>This is exacerbated by the fact that CSP directives would need to add webkit-fake-url: to all directives. Switching to a data-uri normalizes the behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022656</commentid>
    <comment_count>4</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2014-07-15 21:12:36 -0700</bug_when>
    <thetext>Both Blink and WebKit should have mechanisms for annotating certain schemes as bypassing CSP. For example, images at &apos;chrome-extension:&apos; URLs will load even in the presence of `img-src &apos;none&apos;`.

See `SchemeRegistry::schemeShouldBypassContentSecurityPolicy()` for the implementation, if that&apos;s the direction you&apos;d like to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091728</commentid>
    <comment_count>5</comment_count>
    <who name="Aleksander Nowodziński">aleksander</who>
    <bug_when>2015-05-05 04:42:24 -0700</bug_when>
    <thetext>This issue breaks pasting/upload feature in CKEditor (see more in https://dev.ckeditor.com/ticket/13029) and other WYSIWYG editors because there is no way to obtain image data pasted into the browser. 

It would be great to see this issue fixed after all these years, i.e. by using a base64-encoded resource representation instead of webkit-fake-url, like in other modern browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126453</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Schwarz">markschwarz</who>
    <bug_when>2015-09-16 13:57:26 -0700</bug_when>
    <thetext>This also affects users of Atlassian JIRA: https://confluence.atlassian.com/jira/attaching-a-screenshot-185729550.html.  

See Atlassian comment from Nov 5, 2014 at the link above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149439</commentid>
    <comment_count>7</comment_count>
    <who name="Markandey Singh">markandey</who>
    <bug_when>2015-12-15 16:37:33 -0800</bug_when>
    <thetext>I wonder when this bug will be fixed for safari. This is clearly one of the big limitation on safari where copy paste of images does not work. Would be nice if webkit supports similar implementation like Firefox where pasted image contains a data url instead for webkit-fake-url</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163738</commentid>
    <comment_count>8</comment_count>
    <who name="Mateusz">kontakt</who>
    <bug_when>2016-02-11 05:17:49 -0800</bug_when>
    <thetext>Guys, this bug is 5 years old and Safari is the only browser which is not capable of pasting images. It affects a lot software like JIRA, Google Docs, Online Office,  CKEditor and many many more. Is there any plan to fix that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210335</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Edenhofer">me+wk</who>
    <bug_when>2016-07-12 23:16:10 -0700</bug_when>
    <thetext>I confirm this in safari 9.1.1 (11601.6.17).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236614</commentid>
    <comment_count>10</comment_count>
    <who name="Mateusz">kontakt</who>
    <bug_when>2016-10-05 07:15:15 -0700</bug_when>
    <thetext>The same applies to iOS10.0.2 - nothing changed and the bug still exists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236650</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-05 09:07:40 -0700</bug_when>
    <thetext>Does anyone have a relatively simple test case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236964</commentid>
    <comment_count>12</comment_count>
    <who name="Mateusz">kontakt</who>
    <bug_when>2016-10-06 02:02:33 -0700</bug_when>
    <thetext>Sure, here are the steps:
1. open a page with images, e.g: http://www.bbc.com/news/science-environment-37511861 (or you can open google image search and type &quot;landscape&quot;)
2. right click on any image (or hold on iPad) and pick &quot;Copy picture&quot;
3. open this fiddle: https://jsfiddle.net/madkdzre/ and paste the image into frame.
4.  inspect its url in dev tools.

Result: you&apos;ll see that url of the image looks like this &quot;webkit-fake-url://FA85EB54-6F2A-4CC8-86A8-34D527A68789/blablabla.png&quot; instead of url to pasted image. And it doesn&apos;t matter if you copy image from finder or from browser. It also doesn&apos;t matter if the image copied from browser was referred by url or dataURL string (like in case of google image search).

This is really annoying on desktops, but on iOS Safari is usually the only browser, and because of that bug you cannot paste images into any online editor. That&apos;s the biggest problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237315</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-06 13:42:49 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Sure, here are the steps:
&gt; 1. open a page with images, e.g:
&gt; http://www.bbc.com/news/science-environment-37511861 (or you can open google
&gt; image search and type &quot;landscape&quot;)
&gt; 2. right click on any image (or hold on iPad) and pick &quot;Copy picture&quot;
&gt; 3. open this fiddle: https://jsfiddle.net/madkdzre/ and paste the image into
&gt; frame.
&gt; 4.  inspect its url in dev tools.
&gt; 
&gt; Result: you&apos;ll see that url of the image looks like this
&gt; &quot;webkit-fake-url://FA85EB54-6F2A-4CC8-86A8-34D527A68789/blablabla.png&quot;
&gt; instead of url to pasted image. And it doesn&apos;t matter if you copy image from
&gt; finder or from browser. It also doesn&apos;t matter if the image copied from
&gt; browser was referred by url or dataURL string (like in case of google image
&gt; search).
&gt; 
&gt; This is really annoying on desktops, but on iOS Safari is usually the only
&gt; browser, and because of that bug you cannot paste images into any online
&gt; editor. That&apos;s the biggest problem.

Thanks for the test case, I can reproduce the issue.

Interestingly, it seems to work fine if I copy from Firefox or Preview.app and then paste in Safari. The issue only seems to happen if we copy from Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237324</commentid>
    <comment_count>14</comment_count>
    <who name="Mateusz">kontakt</who>
    <bug_when>2016-10-06 13:55:04 -0700</bug_when>
    <thetext> 
&gt; Interestingly, it seems to work fine if I copy from Firefox or Preview.app
&gt; and then paste in Safari. The issue only seems to happen if we copy from
&gt; Safari.

On desktop that&apos;s true but on iOS all the images pasted into contenteditable are referenced by fake url (no matter where they are copied from). I&apos;ve just tried to paste image copied from the following apps: Notes, Pages, Keynote and Gmail and all of them have been pasted as webkit-fake-url.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237370</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-06 14:56:17 -0700</bug_when>
    <thetext>On my Mac, it seems we use RTFD format to copy/paste the image by default. There is an internal setting (preferMIMETypeForImages) to stop using RTFD format for images and simply treat them as images. If I turn on the setting, the image seems to paste fine.

The bug must be related to our RTFD formatting / processing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237371</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-06 14:57:54 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; On my Mac, it seems we use RTFD format to copy/paste the image by default.
&gt; There is an internal setting (preferMIMETypeForImages) to stop using RTFD
&gt; format for images and simply treat them as images. If I turn on the setting,
&gt; the image seems to paste fine.
&gt; 
&gt; The bug must be related to our RTFD formatting / processing code.

Also note that when not using RTFD, the pasted image looks like:
&lt;img src=&quot;webkit-fake-url://1d5cfcc6-f668-47ca-a47d-6e118d68df50/image.tiff&quot;&gt;

It is also using a webkit-fake-url and yet the image is displayed correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237380</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-06 15:30:42 -0700</bug_when>
    <thetext>In EditorMac.mm:
Editor::createFragmentAndAddResources(NSAttributedString *string)

We:
1. Defer loading
2. Create a DocumentFragment as a list of resources from the DTFD Data
3. Register the resources with the DocumentLoader (in this case, there is one resource with a webkit-fake-url and its associated data)
4. Stop load deferring

However, with WebKit2, I see the following
Calling createFragment()
WebLoaderStrategy::scheduleLoad(webkit-fake-url://36D48F33-17C4-4958-8856-569F23B788CE/_91448609_rosetta_crash_land_624_v3.png)
DocumentLoader::scheduleArchiveLoad(webkit-fake-url://36D48F33-17C4-4958-8856-569F23B788CE/_91448609_rosetta_crash_land_624_v3.png)
Adding archive resource to loader, url: webkit-fake-url://36D48F33-17C4-4958-8856-569F23B788CE/_91448609_rosetta_crash_land_624_v3.png // Too late

So load deferring seems to fail we try to load webkit-fake-url://36D48F33-17C4-4958-8856-569F23B788CE/_91448609_rosetta_crash_land_624_v3.png *before* we had a chance registering it with the DocumentLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237386</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-06 15:48:41 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; In EditorMac.mm:
&gt; Editor::createFragmentAndAddResources(NSAttributedString *string)
&gt; 
&gt; We:
&gt; 1. Defer loading
&gt; 2. Create a DocumentFragment as a list of resources from the DTFD Data
&gt; 3. Register the resources with the DocumentLoader (in this case, there is
&gt; one resource with a webkit-fake-url and its associated data)
&gt; 4. Stop load deferring
&gt; 
&gt; However, with WebKit2, I see the following
&gt; Calling createFragment()
&gt; WebLoaderStrategy::scheduleLoad(webkit-fake-url://36D48F33-17C4-4958-8856-
&gt; 569F23B788CE/_91448609_rosetta_crash_land_624_v3.png)
&gt; DocumentLoader::scheduleArchiveLoad(webkit-fake-url://36D48F33-17C4-4958-
&gt; 8856-569F23B788CE/_91448609_rosetta_crash_land_624_v3.png)
&gt; Adding archive resource to loader, url:
&gt; webkit-fake-url://36D48F33-17C4-4958-8856-569F23B788CE/
&gt; _91448609_rosetta_crash_land_624_v3.png // Too late
&gt; 
&gt; So load deferring seems to fail we try to load
&gt; webkit-fake-url://36D48F33-17C4-4958-8856-569F23B788CE/
&gt; _91448609_rosetta_crash_land_624_v3.png *before* we had a chance registering
&gt; it with the DocumentLoader.

Call track that causes the load to start:
1   0x105125d03 WebKit::WebLoaderStrategy::loadResource(WebCore::Frame&amp;, WebCore::CachedResource&amp;, WebCore::ResourceRequest const&amp;, WebCore::ResourceLoaderOptions const&amp;)
2   0x1089b892e WebCore::CachedResource::load(WebCore::CachedResourceLoader&amp;)
3   0x1089bde4c WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type, WebCore::CachedResourceRequest&amp;&amp;)
4   0x1089bcb79 WebCore::CachedResourceLoader::requestImage(WebCore::CachedResourceRequest&amp;&amp;)
5   0x108eb322b WebCore::ImageLoader::updateFromElement()
6   0x108dd7316 WebCore::HTMLImageElement::selectImageSource()
7   0x108c43ced WebCore::Element::attributeChanged(WebCore::QualifiedName const&amp;, WTF::AtomicString const&amp;, WTF::AtomicString const&amp;, WebCore::Element::AttributeModificationReason)
8   0x108c44709 WebCore::Element::parserSetAttributes(WTF::Vector&lt;WebCore::Attribute, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;)
9   0x108da3038 WebCore::HTMLConstructionSite::createHTMLElementOrFindCustomElementInterface(WebCore::AtomicHTMLToken&amp;, WebCore::JSCustomElementInterface**)
10  0x108da338d WebCore::HTMLConstructionSite::insertSelfClosingHTMLElement(WebCore::AtomicHTMLToken&amp;)
11  0x108e4de00 WebCore::HTMLTreeBuilder::processStartTagForInBody(WebCore::AtomicHTMLToken&amp;)
12  0x108e4a79a WebCore::HTMLTreeBuilder::processStartTag(WebCore::AtomicHTMLToken&amp;)
13  0x108e49a18 WebCore::HTMLTreeBuilder::constructTree(WebCore::AtomicHTMLToken&amp;)
14  0x108db6356 WebCore::HTMLDocumentParser::constructTreeFromHTMLToken(WebCore::HTMLTokenizer::TokenPtr&amp;)
15  0x108db617c WebCore::HTMLDocumentParser::pumpTokenizerLoop(WebCore::HTMLDocumentParser::SynchronousMode, bool, WebCore::PumpSession&amp;)
16  0x108db5b83 WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode)
17  0x108db6432 WebCore::HTMLDocumentParser::insert(WebCore::SegmentedString const&amp;)
18  0x108db6e28 WebCore::HTMLDocumentParser::parseDocumentFragment(WTF::String const&amp;, WebCore::DocumentFragment&amp;, WebCore::Element&amp;, WebCore::ParserContentPolicy)
19  0x1093e0a53 WebCore::createFragmentForInnerOuterHTML(WebCore::Element&amp;, WTF::String const&amp;, WebCore::ParserContentPolicy, int&amp;)
20  0x108c494db WebCore::Element::setInnerHTML(WTF::String const&amp;, int&amp;)
21  0x105ae21c8 -[DOMElement setInnerHTML:]
22  0x7fffac179539 -[NSHTMLWriter readDocumentFragment:]
23  0x7fffac1795e5 -[NSHTMLWriter documentFragmentForDocument:]
24  0x7fffac17f795 -[NSAttributedString(NSAttributedStringUIFoundationAdditions) _documentFromRange:document:documentAttributes:subresources:]
25  0x105b6b898 _WebCreateFragment
26  0x108c346ce WebCore::Editor::createFragment(NSAttributedString*)
27  0x108c3c623 WebCore::Editor::createFragmentAndAddResources(NSAttributedString*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237387</commentid>
    <comment_count>19</comment_count>
    <who name="Mateusz">kontakt</who>
    <bug_when>2016-10-06 15:51:07 -0700</bug_when>
    <thetext>Please also note that displaying the pasted image is one problem and using it is another problem. I mean even if the pasted image displays correctly (I can see it even if it has webkit-fake-url) I can&apos;t use it from JS code - so e.g. when I paste it to Gmail online app it looks fine, but when I send the email it&apos;s gone. I&apos;ve tried also to draw it on canvas and get as dataURL but of course that also fails because of security reasons (image comes from a different protocol than the web app).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237434</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-06 20:02:49 -0700</bug_when>
    <thetext>Ok, so I think I have a plan (in several steps):
1. Add HTML the pasteboard when copying an image in Safari, instead of RTFD. This matches Firefox and pasting this in Safari works great (Image shows and has a regular URL). Note that HTML has priority over images in WebKit when reading from the pasteboard.
2. When reading an image from the pasteboard, check if there is also a URL in the pasteboard and use it if there is, instead of creating a WebKit-fake-URL. This is testable by copying an image from Chrome to Safari. The pasted image would then have
a proper URL instead of a webkit-fake-url.
3. When reading an image from the pasteboard, and if there is no URL in the pasteboard, construct a Blob URL instead of a webkit-fake-url. Blob URLs have the benefit of being standard and convenient to use from JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237435</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-10-06 20:11:04 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Ok, so I think I have a plan (in several steps):
&gt; 1. Add HTML the pasteboard when copying an image in Safari, instead of RTFD.
&gt; This matches Firefox and pasting this in Safari works great (Image shows and
&gt; has a regular URL). Note that HTML has priority over images in WebKit when
&gt; reading from the pasteboard.

I don&apos;t think we can stop placing RTFD content into the pasteboard because other apps that don&apos;t support webarchive may depend on it being available (for pasting the content copied in WebKit).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237438</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-06 20:17:38 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Ok, so I think I have a plan (in several steps):
&gt; 1. Add HTML the pasteboard when copying an image in Safari, instead of RTFD.
&gt; This matches Firefox and pasting this in Safari works great (Image shows and
&gt; has a regular URL). Note that HTML has priority over images in WebKit when
&gt; reading from the pasteboard.
&gt; 2. When reading an image from the pasteboard, check if there is also a URL
&gt; in the pasteboard and use it if there is, instead of creating a
&gt; WebKit-fake-URL. This is testable by copying an image from Chrome to Safari.
&gt; The pasted image would then have
&gt; a proper URL instead of a webkit-fake-url.
&gt; 3. When reading an image from the pasteboard, and if there is no URL in the
&gt; pasteboard, construct a Blob URL instead of a webkit-fake-url. Blob URLs
&gt; have the benefit of being standard and convenient to use from JavaScript.

Ryosuke pointed out offline that not writing RTFD to the pasteboard anymore is risky compatibility-wise. Therefore, my fallback plan is to keep writing RTFD to the pasteboard but add HTML as well. HTML has priority over RTFD when reading the pasteboard in WebKit so this should be fine as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237547</commentid>
    <comment_count>23</comment_count>
    <who name="Mike Sherov">mike.sherov</who>
    <bug_when>2016-10-07 03:16:05 -0700</bug_when>
    <thetext>If the plan is to use Blob URLs instead of data-uris (like Firefox), will there be a way to convert them to data uris like Chrome does? That&apos;s main use case here: pasting an image into a WYSIWYG editor and being able to save the image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237552</commentid>
    <comment_count>24</comment_count>
    <who name="Aleksander Nowodziński">aleksander</who>
    <bug_when>2016-10-07 04:27:03 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; If the plan is to use Blob URLs instead of data-uris (like Firefox), will
&gt; there be a way to convert them to data uris like Chrome does? That&apos;s main
&gt; use case here: pasting an image into a WYSIWYG editor and being able to save
&gt; the image.

So +1. 

The point is that whatever the output in DOM (webkit-fake-url or data-uri in the &lt;img&gt; tag), an easy way to obtain the data-uri in the paste event is needed, so the content that has been pasted in the WYSIWYG editor can be i.e. uploaded to the server. 

At this moment, the webkit-fake-url gives no way to the developers to obtain the actual image and do anything with it. Users paste/drag&amp;drop tons of content into WYSIWYG (contenteditable) editors like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237599</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-07 08:48:52 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; If the plan is to use Blob URLs instead of data-uris (like Firefox), will
&gt; there be a way to convert them to data uris like Chrome does? That&apos;s main
&gt; use case here: pasting an image into a WYSIWYG editor and being able to save
&gt; the image.

What is this API that Chrome has to convert to data URIs and that WebKit does not have?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237653</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-07 10:30:14 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; If the plan is to use Blob URLs instead of data-uris (like Firefox), will
&gt; there be a way to convert them to data uris like Chrome does? That&apos;s main
&gt; use case here: pasting an image into a WYSIWYG editor and being able to save
&gt; the image.

I have confirmed that Firefox is indeed using Data URLs rather than Blob URLs when pasting images from Preview.app.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237800</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-07 14:40:49 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #23)
&gt; &gt; If the plan is to use Blob URLs instead of data-uris (like Firefox), will
&gt; &gt; there be a way to convert them to data uris like Chrome does? That&apos;s main
&gt; &gt; use case here: pasting an image into a WYSIWYG editor and being able to save
&gt; &gt; the image.
&gt; 
&gt; What is this API that Chrome has to convert to data URIs and that WebKit
&gt; does not have?

It seems like WebKit would easily allow you to convert a Blob into a Data URL using FileReader.readAsDataURL().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249115</commentid>
    <comment_count>28</comment_count>
      <attachid>294178</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-08 13:00:17 -0800</bug_when>
    <thetext>Created attachment 294178
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249119</commentid>
    <comment_count>29</comment_count>
      <attachid>294180</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-08 13:43:11 -0800</bug_when>
    <thetext>Created attachment 294180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249123</commentid>
    <comment_count>30</comment_count>
      <attachid>294181</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-08 13:51:28 -0800</bug_when>
    <thetext>Created attachment 294181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249133</commentid>
    <comment_count>31</comment_count>
      <attachid>294181</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-08 14:37:58 -0800</bug_when>
    <thetext>Comment on attachment 294181
Patch

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

&gt; Source/WebCore/editing/mac/EditorMac.mm:618
&gt; +    Vector&lt;uint8_t&gt; data;
&gt; +    data.append(buffer-&gt;data(), buffer-&gt;size());
&gt; +    auto blob = Blob::create(WTFMove(data), type);

Can we write it this way?

    auto blob = Blob::create(Vector&lt;uint8_t&gt; { buffer-&gt;data(), buffer-&gt;size() }, type);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249175</commentid>
    <comment_count>32</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-08 16:15:12 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; Comment on attachment 294181 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=294181&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/mac/EditorMac.mm:618
&gt; &gt; +    Vector&lt;uint8_t&gt; data;
&gt; &gt; +    data.append(buffer-&gt;data(), buffer-&gt;size());
&gt; &gt; +    auto blob = Blob::create(WTFMove(data), type);
&gt; 
&gt; Can we write it this way?
&gt; 
&gt;     auto blob = Blob::create(Vector&lt;uint8_t&gt; { buffer-&gt;data(),
&gt; buffer-&gt;size() }, type);

Vector has no such constructor AFAICT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249372</commentid>
    <comment_count>33</comment_count>
      <attachid>294181</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-09 11:17:22 -0800</bug_when>
    <thetext>Comment on attachment 294181
Patch

Clearing flags on attachment: 294181

Committed r208451: &lt;http://trac.webkit.org/changeset/208451&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249373</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-09 11:17:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294030</commentid>
    <comment_count>35</comment_count>
    <who name="Ebrahim Byagowi">ebrahim</who>
    <bug_when>2017-04-04 07:11:36 -0700</bug_when>
    <thetext>Similar still available issue on copy paste on other places on the web: Bug 170449</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294178</attachid>
            <date>2016-11-08 13:00:17 -0800</date>
            <delta_ts>2016-11-08 13:43:07 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>paste_image_blob_urls.patch</filename>
            <type>text/plain</type>
            <size>2681</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGUyYmJjNDkuLjI3ZWE2MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaApAQCAtNTE4LDYgKzUxOCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwogICAgIFJlZlB0
cjxSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOwogICAgIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiYmKTsKKyAgICBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGb3JJbWFnZUFuZFVSTChjb25zdCBTdHJpbmcmKTsKICAgICBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopOwogICAgIEZyYWdtZW50QW5kUmVzb3VyY2VzIGNyZWF0ZUZyYWdtZW50KE5TQXR0cmli
dXRlZFN0cmluZyAqKTsKICAgICB2b2lkIGZpbGxJblVzZXJWaXNpYmxlRm9ybShQYXN0ZWJvYXJk
VVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNWU3ZWFl
YS4uZjNiMzFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAt
MjYsMTAgKzI2LDEyIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkVkaXRvci5oIgog
CisjaW1wb3J0ICJCbG9iLmgiCiAjaW1wb3J0ICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgi
CiAjaW1wb3J0ICJDU1NWYWx1ZVBvb2wuaCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlTG9hZGVy
LmgiCiAjaW1wb3J0ICJDb2xvck1hYy5oIgorI2ltcG9ydCAiRE9NVVJMLmgiCiAjaW1wb3J0ICJE
YXRhVHJhbnNmZXIuaCIKICNpbXBvcnQgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbXBvcnQgIkRv
Y3VtZW50TG9hZGVyLmgiCkBAIC02MTAsOSArNjEyLDE0IEBAIGJvb2wgRWRpdG9yOjpXZWJDb250
ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluCiAgICAgQVNTRVJUKHR5cGUuY29udGFpbnMoJy8nKSk7CiAgICAgU3RyaW5nIHR5cGVBc0Zp
bGVuYW1lV2l0aEV4dGVuc2lvbiA9IHR5cGU7CiAgICAgdHlwZUFzRmlsZW5hbWVXaXRoRXh0ZW5z
aW9uLnJlcGxhY2UoJy8nLCAnLicpOwotICAgIFVSTCBpbWFnZVVSTCA9IFVSTDo6ZmFrZVVSTFdp
dGhSZWxhdGl2ZVBhcnQodHlwZUFzRmlsZW5hbWVXaXRoRXh0ZW5zaW9uKTsKIAotICAgIGZyYWdt
ZW50ID0gZnJhbWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRk
UmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpLCBpbWFnZVVS
TCwgdHlwZSwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpOworICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOworICAgIGRhdGEuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CisgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIHR5cGUpOwor
ICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKKyAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVS
TDo6Y3JlYXRlT2JqZWN0VVJMKCpmcmFtZS5kb2N1bWVudCgpLCBibG9iKTsKKworICAgIGZyYWdt
ZW50ID0gZnJhbWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChibG9iVVJM
KTsKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CiAKQEAgLTY3MSw2ICs2NzgsMTcgQEAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IEVkaXRvcjo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNl
QW5kQWRkUmVzb3VyY2UoUmUKICAgICByZXR1cm4gV1RGTW92ZShmcmFnbWVudCk7CiB9CiAKK1Jl
ZjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgYXV0byBpbWFnZUVsZW1lbnQgPSBIVE1MSW1hZ2VF
bGVtZW50OjpjcmVhdGUoKm1fZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgaW1hZ2VFbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgdXJs
KTsKKworICAgIGF1dG8gZnJhZ21lbnQgPSBkb2N1bWVudCgpLmNyZWF0ZURvY3VtZW50RnJhZ21l
bnQoKTsKKyAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTsKKworICAgIHJl
dHVybiBmcmFnbWVudDsKK30KKwogUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEVkaXRvcjo6Y3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7
CiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSB8fCAhZG9jdW1lbnQoKS5pc0hUTUxEb2N1bWVudCgp
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294180</attachid>
            <date>2016-11-08 13:43:11 -0800</date>
            <delta_ts>2016-11-08 13:51:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49141-20161108133902.patch</filename>
            <type>text/plain</type>
            <size>8890</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNlZWRjNmEwNmNhMjAx
ZGM2MTZkZGU3OTczZTExNTcxODNhYWY2Ni4uZDFlNWYxMjliMTg0YTNmNzUxZjA3MmUyOTk3M2E5
Zjk3M2ZlODMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTExLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIEJsb2IgVVJMIGluc3Rl
YWQgb2Ygd2Via2l0LWZha2UtdXJsIHdoZW4gcGFzdGluZyBhbiBpbWFnZSBhbmQgbm8gVVJMIGlz
IGF2YWlsYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDkxNDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgQmxvYiBVUkwgaW5zdGVhZCBvZiB3ZWJraXQtZmFrZS11cmwgd2hlbiBwYXN0aW5nIGFu
IGltYWdlIGFuZCBubyBVUkwgaXMgYXZhaWxhYmxlLgorCisgICAgICAgIFRlc3RzOiBlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtYXMtYmxvYi11cmwuaHRtbAorICAgICAgICAgICAgICAg
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLXVzaW5nLWltYWdlLWRhdGEuaHRtbAorCisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VB
bmRVUkwpOgorCiAyMDE2LTExLTA3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDgzODIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAppbmRleCBlMmJiYzQ5OTYwYTdmZmUxZjhiMzc4MzVhMjZmMzdiMmI3NzgzOWY4
Li4yN2VhNjE1NmJiNTNmM2RlYmIxYWY4ZDU1ODEwMjlkZGQwMDljNDA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKQEAgLTUxOCw2ICs1MTgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBSZWZQdHI8
UmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2UoUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4mJik7CisgICAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50Rm9ySW1hZ2VBbmRVUkwoY29uc3QgU3RyaW5nJik7CiAgICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKE5TQXR0cmlidXRlZFN0cmlu
ZyAqKTsKICAgICBGcmFnbWVudEFuZFJlc291cmNlcyBjcmVhdGVGcmFnbWVudChOU0F0dHJpYnV0
ZWRTdHJpbmcgKik7CiAgICAgdm9pZCBmaWxsSW5Vc2VyVmlzaWJsZUZvcm0oUGFzdGVib2FyZFVS
TCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDVlN2VhZWFi
NDYxMTgyOGUxMWIzYTJlN2Q5YTJmNGQxMjAyN2Y5YmUuLmYzYjMxZTFmZWNjZWE4OTFmOTRlNDc0
NzI4ZWE0MGYwNDA4ZmM4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0KQEAgLTI2LDEwICsyNiwxMiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJFZGl0
b3IuaCIKIAorI2ltcG9ydCAiQmxvYi5oIgogI2ltcG9ydCAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oIgogI2ltcG9ydCAiQ1NTVmFsdWVQb29sLmgiCiAjaW1wb3J0ICJDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIgogI2ltcG9ydCAiQ29sb3JNYWMuaCIKKyNpbXBvcnQgIkRPTVVSTC5oIgogI2lt
cG9ydCAiRGF0YVRyYW5zZmVyLmgiCiAjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW1w
b3J0ICJEb2N1bWVudExvYWRlci5oIgpAQCAtNjEwLDkgKzYxMiwxNCBAQCBib29sIEVkaXRvcjo6
V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbgogICAgIEFTU0VSVCh0eXBlLmNvbnRhaW5zKCcvJykpOwogICAgIFN0cmluZyB0
eXBlQXNGaWxlbmFtZVdpdGhFeHRlbnNpb24gPSB0eXBlOwogICAgIHR5cGVBc0ZpbGVuYW1lV2l0
aEV4dGVuc2lvbi5yZXBsYWNlKCcvJywgJy4nKTsKLSAgICBVUkwgaW1hZ2VVUkwgPSBVUkw6OmZh
a2VVUkxXaXRoUmVsYXRpdmVQYXJ0KHR5cGVBc0ZpbGVuYW1lV2l0aEV4dGVuc2lvbik7CiAKLSAg
ICBmcmFnbWVudCA9IGZyYW1lLmVkaXRvcigpLmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJj
ZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSwg
aW1hZ2VVUkwsIHR5cGUsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpKTsKKyAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKKyAgICBkYXRhLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB0
eXBlKTsKKyAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgU3RyaW5nIGJsb2JVUkwg
PSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwgYmxvYik7CisKKyAg
ICBmcmFnbWVudCA9IGZyYW1lLmVkaXRvcigpLmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwo
YmxvYlVSTCk7CiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQogCkBAIC02NzEsNiArNjc4LDE3IEBA
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VS
ZXNvdXJjZUFuZEFkZFJlc291cmNlKFJlCiAgICAgcmV0dXJuIFdURk1vdmUoZnJhZ21lbnQpOwog
fQogCitSZWY8RG9jdW1lbnRGcmFnbWVudD4gRWRpdG9yOjpjcmVhdGVGcmFnbWVudEZvckltYWdl
QW5kVVJMKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGF1dG8gaW1hZ2VFbGVtZW50ID0gSFRN
TEltYWdlRWxlbWVudDo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCkpOworICAgIGltYWdlRWxl
bWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0
dHIsIHVybCk7CisKKyAgICBhdXRvIGZyYWdtZW50ID0gZG9jdW1lbnQoKS5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7CisgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CisK
KyAgICByZXR1cm4gZnJhZ21lbnQ7Cit9CisKIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0
b3I6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKE5TQXR0cmlidXRlZFN0cmluZyAqc3Ry
aW5nKQogewogICAgIGlmICghbV9mcmFtZS5wYWdlKCkgfHwgIWRvY3VtZW50KCkuaXNIVE1MRG9j
dW1lbnQoKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA0MDA3ZGU4OWI2OGQ3NDExMGI3N2M2MzRkYjY1MDgyNGZkZDJjMTc3
Li44ZDMxMWMxOGVjZjhiNjA2NTU5NTA5NjU0ZTJmY2RhMTg5NDY0NGUyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTYtMTEtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBVc2UgQmxvYiBVUkwgaW5zdGVhZCBvZiB3ZWJraXQtZmFrZS11cmwgd2hlbiBwYXN0
aW5nIGFuIGltYWdlIGFuZCBubyBVUkwgaXMgYXZhaWxhYmxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTE0MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZSBjaGVj
a2luZyB0aGF0IHRoZSBpbWFnZSBzaG93cyBhcyBleHBlY3RlZCBhbmQgdGhhdCB0aGUKKyAgICAg
ICAgcmVzdWx0aW5nIFVSTCBpcyBpbmRlZWQgYSBCbG9iIFVSTC4KKworICAgICAgICAqIGVkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1hcy1ibG9iLXVybC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1hcy1ibG9iLXVybC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtdXNp
bmctaW1hZ2UtZGF0YS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtaW1hZ2UtdXNpbmctaW1hZ2UtZGF0YS5odG1sOiBBZGRlZC4KKwogMjAx
Ni0xMS0wNyAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjA4MzgyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWFzLWJsb2ItdXJsLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1hcy1ibG9iLXVybC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJjZDJkNDFjOTZmN2FmNzhjY2Y2MzViMGRmOTFiM2U3
N2ZhYWNlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1pbWFnZS1hcy1ibG9iLXVybC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAor
VGVzdHMgdGhhdCBwYXN0ZWQgaW1hZ2VzIHVzZSBibG9iIFVSTCwgbm90IHdlYmtpdCBmYWtlIFVS
THMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBhc3RlZEltYWdlcy5s
ZW5ndGggaXMgMQorUEFTUyB1cmwucHJvdG9jb2wgaXMgImJsb2I6IgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWFzLWJsb2ItdXJsLmh0bWwgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtYXMtYmxvYi11cmwuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNjFmZTI3ODVhNDYxZmZkNmIzOWM0MmI5MzZhNzZhNWJhZDE4ZDhlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWlt
YWdlLWFzLWJsb2ItdXJsLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudGVkaXRhYmxlPSJ0cnVl
IiBzdHlsZT0id2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6IHNvbGlkIHJlZCAx
cHgiPjwvZGl2PgorPGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9Ii4uL3Jlc291cmNlcy9hYmUucG5n
IiBvbmxvYWQ9InNlbGVjdEluRnJhbWUoKSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHBhc3RlZCBpbWFnZXMgdXNlIGJsb2IgVVJMLCBu
b3Qgd2Via2l0IGZha2UgVVJMcy4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
IGZ1bmN0aW9uIHNlbGVjdEluRnJhbWUoKSB7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRQcmVmZXJNSU1FVHlw
ZUZvckltYWdlcyh0cnVlKTsKKyAgICAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJpZnJhbWUiKTsKKyAgICAgICAgdmFyIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNv
bnRlbnREb2N1bWVudDsKKyAgICAgICAgdmFyIGRlc3RpbmF0aW9uID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImRlc3RpbmF0aW9uIik7CisgICAgICAgIGlmcmFtZURvY3VtZW50LmJvZHkuZm9j
dXMoKTsKKyAgICAgICAgaWZyYW1lRG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOwor
ICAgICAgICBpZnJhbWVEb2N1bWVudC5leGVjQ29tbWFuZCgiQ29weSIpOworICAgICAgICBkZXN0
aW5hdGlvbi5mb2N1cygpOworICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiUGFzdGUiKTsK
KworICAgICAgICBwYXN0ZWRJbWFnZXMgPSBkZXN0aW5hdGlvbi5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiaW1nIik7CisgICAgICAgIHNob3VsZEJlKCJwYXN0ZWRJbWFnZXMubGVuZ3RoIiwgIjEiKTsK
KyAgICAgICAgaW1nID0gcGFzdGVkSW1hZ2VzWzBdOworICAgICAgICB1cmwgPSBuZXcgVVJMKGlt
Zy5zcmMpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInVybC5wcm90b2NvbCIsICJi
bG9iOiIpOworCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWlt
YWdlLXVzaW5nLWltYWdlLWRhdGEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS1pbWFnZS11c2luZy1pbWFnZS1kYXRhLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2QxMDhlOTkxYTY5MmFiNWYwZGI1OTVmYmJlZDcwOTEzNGM1MjA4MQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS11
c2luZy1pbWFnZS1kYXRhLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudGVkaXRh
YmxlPSJ0cnVlIiBzdHlsZT0id2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDEwMHB4OyBib3JkZXI6IHNv
bGlkIHJlZCAxcHgiPgorPGltZyBzcmM9Ii4uL3Jlc291cmNlcy9hYmUucG5nIj4KKzwvZGl2Pgor
PGlmcmFtZSBpZD0iaWZyYW1lIiBzcmM9Ii4uL3Jlc291cmNlcy9hYmUucG5nIj48L2lmcmFtZT4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1pbWFnZS11c2luZy1pbWFnZS1kYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtdXNpbmctaW1hZ2UtZGF0YS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQzYzZiNDE0MTkwYjM0ODY1N2I2ZTMyZjI5NzEyMjk5NjhmYThiNDcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtdXNpbmct
aW1hZ2UtZGF0YS5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHN0
eWxlPSJ3aWR0aDogNTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjogc29saWQgcmVkIDFweCI+
PC9kaXY+Cis8aWZyYW1lIGlkPSJpZnJhbWUiIHNyYz0iLi4vcmVzb3VyY2VzL2FiZS5wbmciIG9u
bG9hZD0ic2VsZWN0SW5GcmFtZSgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzxzY3JpcHQ+CisgICAg
ZnVuY3Rpb24gc2VsZWN0SW5GcmFtZSgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFByZWZlck1JTUVUeXBl
Rm9ySW1hZ2VzKHRydWUpOworICAgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImlmcmFtZSIpOworICAgICAgICB2YXIgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29u
dGVudERvY3VtZW50OworICAgICAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZGVzdGluYXRpb24iKTsKKyAgICAgICAgaWZyYW1lRG9jdW1lbnQuYm9keS5mb2N1
cygpOworICAgICAgICBpZnJhbWVEb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7Cisg
ICAgICAgIGlmcmFtZURvY3VtZW50LmV4ZWNDb21tYW5kKCJDb3B5Iik7CisgICAgICAgIGRlc3Rp
bmF0aW9uLmZvY3VzKCk7CisgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJQYXN0ZSIpOwor
ICAgICAgICBkZXN0aW5hdGlvbi5ibHVyKCk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294181</attachid>
            <date>2016-11-08 13:51:28 -0800</date>
            <delta_ts>2016-11-09 11:17:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49141-20161108134719.patch</filename>
            <type>text/plain</type>
            <size>11403</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNlZWRjNmEwNmNhMjAx
ZGM2MTZkZGU3OTczZTExNTcxODNhYWY2Ni4uZjVlNDQ2YmNkMGE3ZTg5NDk0MjBlYmUxODMxMjdk
NzY0MmRlNWI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTExLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIEJsb2IgVVJMIGluc3Rl
YWQgb2Ygd2Via2l0LWZha2UtdXJsIHdoZW4gcGFzdGluZyBhbiBpbWFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkxNDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgQmxvYiBVUkwgaW5zdGVhZCBv
ZiB3ZWJraXQtZmFrZS11cmwgd2hlbiBwYXN0aW5nIGFuIGltYWdlLgorCisgICAgICAgIFRlc3Rz
OiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtYXMtYmxvYi11cmwuaHRtbAorICAgICAg
ICAgICAgICAgZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLXVzaW5nLWltYWdlLWRhdGEu
aHRtbAorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OldlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNyZWF0ZUZyYWdtZW50
Rm9ySW1hZ2VBbmRVUkwpOgorCiAyMDE2LTExLTA3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDgzODIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBlMmJiYzQ5OTYwYTdmZmUxZjhiMzc4MzVhMjZmMzdi
MmI3NzgzOWY4Li4yN2VhNjE1NmJiNTNmM2RlYmIxYWY4ZDU1ODEwMjlkZGQwMDljNDA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTUxOCw2ICs1MTgsNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAg
ICBSZWZQdHI8UmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKICAgICBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3Vy
Y2UoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJik7CisgICAgUmVmPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoY29uc3QgU3RyaW5nJik7CiAgICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKE5TQXR0cmli
dXRlZFN0cmluZyAqKTsKICAgICBGcmFnbWVudEFuZFJlc291cmNlcyBjcmVhdGVGcmFnbWVudChO
U0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAgICAgdm9pZCBmaWxsSW5Vc2VyVmlzaWJsZUZvcm0oUGFz
dGVib2FyZFVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4
IDVlN2VhZWFiNDYxMTgyOGUxMWIzYTJlN2Q5YTJmNGQxMjAyN2Y5YmUuLmYzYjMxZTFmZWNjZWE4
OTFmOTRlNDc0NzI4ZWE0MGYwNDA4ZmM4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0KQEAgLTI2LDEwICsyNiwxMiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJFZGl0b3IuaCIKIAorI2ltcG9ydCAiQmxvYi5oIgogI2ltcG9ydCAiQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oIgogI2ltcG9ydCAiQ1NTVmFsdWVQb29sLmgiCiAjaW1wb3J0ICJDYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiQ29sb3JNYWMuaCIKKyNpbXBvcnQgIkRPTVVS
TC5oIgogI2ltcG9ydCAiRGF0YVRyYW5zZmVyLmgiCiAjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50
LmgiCiAjaW1wb3J0ICJEb2N1bWVudExvYWRlci5oIgpAQCAtNjEwLDkgKzYxMiwxNCBAQCBib29s
IEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBjb25zdCBTdHJpbgogICAgIEFTU0VSVCh0eXBlLmNvbnRhaW5zKCcvJykpOwogICAg
IFN0cmluZyB0eXBlQXNGaWxlbmFtZVdpdGhFeHRlbnNpb24gPSB0eXBlOwogICAgIHR5cGVBc0Zp
bGVuYW1lV2l0aEV4dGVuc2lvbi5yZXBsYWNlKCcvJywgJy4nKTsKLSAgICBVUkwgaW1hZ2VVUkwg
PSBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KHR5cGVBc0ZpbGVuYW1lV2l0aEV4dGVuc2lv
bik7CiAKLSAgICBmcmFnbWVudCA9IGZyYW1lLmVkaXRvcigpLmNyZWF0ZUZyYWdtZW50Rm9ySW1h
Z2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSwgaW1hZ2VVUkwsIHR5cGUsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpKTsK
KyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICBkYXRhLmFwcGVuZChidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpLCB0eXBlKTsKKyAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgU3RyaW5n
IGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwgYmxv
Yik7CisKKyAgICBmcmFnbWVudCA9IGZyYW1lLmVkaXRvcigpLmNyZWF0ZUZyYWdtZW50Rm9ySW1h
Z2VBbmRVUkwoYmxvYlVSTCk7CiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQogCkBAIC02NzEsNiAr
Njc4LDE3IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50
Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmNlKFJlCiAgICAgcmV0dXJuIFdURk1vdmUoZnJh
Z21lbnQpOwogfQogCitSZWY8RG9jdW1lbnRGcmFnbWVudD4gRWRpdG9yOjpjcmVhdGVGcmFnbWVu
dEZvckltYWdlQW5kVVJMKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGF1dG8gaW1hZ2VFbGVt
ZW50ID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCkpOworICAg
IGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFt
ZXM6OnNyY0F0dHIsIHVybCk7CisKKyAgICBhdXRvIGZyYWdtZW50ID0gZG9jdW1lbnQoKS5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGltYWdlRWxl
bWVudCk7CisKKyAgICByZXR1cm4gZnJhZ21lbnQ7Cit9CisKIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nKQogewogICAgIGlmICghbV9mcmFtZS5wYWdlKCkgfHwgIWRvY3VtZW50KCku
aXNIVE1MRG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IGNkMDMxYTM3ZGZi
ZGFhNWRhODA2ZWM4N2Y5Y2Q3N2I5ZjlmYTliZDYuLmY2NDI2MjY2NGMyNmNjODc2ZjZhNDcwZjA4
ODI4YWJlNjQ0YzU1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNzcsNyArNzcsNyBA
QCBCbG9iOjpCbG9iKCkKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkwobV9pbnRlcm5hbFVSTCwgVmVjdG9yPEJsb2JQYXJ0PigpLCBTdHJpbmcoKSk7CiB9CiAKLUJs
b2I6OkJsb2IoVmVjdG9yPHVpbnQ4X3Q+IGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CitCbG9iOjpCbG9iKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCiAgICAgOiBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoZGF0YS5zaXpl
KCkpCiB7CkBAIC04Nyw3ICs4Nyw3IEBAIEJsb2I6OkJsb2IoVmVjdG9yPHVpbnQ4X3Q+IGRhdGEs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVu
dFR5cGUpOwogfQogCi1CbG9iOjpCbG9iKFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlKQorQmxvYjo6QmxvYihWZWN0b3I8QmxvYlBhcnQ+JiYgYmxv
YlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIDogbV90eXBlKGNvbnRlbnRU
eXBlKQogICAgICwgbV9zaXplKC0xKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCBlZjdkZDQ2
MTYxMTk1YmMxZjE4NzQ4OGNhZDkzZGFjMTAzYTJkM2MwLi5hODg5ZWVlNDFhY2Q2NjJkODBmYzY2
OTIyOTIyNWQ5Y2U1ZTY4ZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNDgsMTIgKzQ4LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYik7CiAgICAgfQog
Ci0gICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+IGRhdGEsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCisgICAgc3RhdGljIFJlZjxCbG9iPiBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8QmxvYlBhcnQ+
IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKKyAgICBzdGF0aWMgUmVmPEJs
b2I+IGNyZWF0ZShWZWN0b3I8QmxvYlBhcnQ+JiYgYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihXVEZN
b3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKSk7CiAgICAgfQpAQCAtOTEsOCArOTEsOCBAQCBw
dWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBCbG9iKCk7Ci0gICAgQmxvYihWZWN0b3I8dWludDhf
dD4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIEJsb2IoVmVjdG9yPEJsb2JQYXJ0
PiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgQmxvYihWZWN0b3I8dWludDhfdD4m
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgQmxvYihWZWN0b3I8QmxvYlBhcnQ+
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogCiAgICAgZW51bSBVbmluaXRpYWxpemVk
Q29udHJ1Y3RvciB7IHVuaW5pdGlhbGl6ZWRDb250cnVjdG9yIH07CiAgICAgQmxvYihVbmluaXRp
YWxpemVkQ29udHJ1Y3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JQYXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JQ
YXJ0LmgKaW5kZXggYmExOWMzYzBmNGVjZjE2YmI4OGI3OWY0YjY2YTk0OGYxZmUyZTEyMS4uOWZl
Zjc2MTMwOGZjYTg5Mzk2ZWNhNjM1NzhlY2EwN2QxMWJhNmNiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUGFydC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIEJsb2JQYXJ0KFZlY3Rvcjx1aW50OF90PiBkYXRhKQorICAgIEJs
b2JQYXJ0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgICAgIDogbV90eXBlKERhdGEpCiAg
ICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQwMDdkZTg5YjY4
ZDc0MTEwYjc3YzYzNGRiNjUwODI0ZmRkMmMxNzcuLjNjOGE1NDJjODMyNzM4MzhiZjRiY2FkN2Q2
N2MzYWExNDIyOTc4OTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0xMS0wOCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBCbG9iIFVSTCBpbnN0ZWFk
IG9mIHdlYmtpdC1mYWtlLXVybCB3aGVuIHBhc3RpbmcgYW4gaW1hZ2UKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MTQxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdl
IGNoZWNraW5nIHRoYXQgdGhlIGltYWdlIHNob3dzIGFzIGV4cGVjdGVkIGFuZCB0aGF0IHRoZQor
ICAgICAgICByZXN1bHRpbmcgVVJMIGlzIGluZGVlZCBhIEJsb2IgVVJMLgorCisgICAgICAgICog
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWFzLWJsb2ItdXJsLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWFzLWJsb2It
dXJsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFn
ZS11c2luZy1pbWFnZS1kYXRhLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS11c2luZy1pbWFnZS1kYXRhLmh0bWw6IEFkZGVkLgor
CiAyMDE2LTExLTA3ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDgzODIuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtYXMtYmxvYi11cmwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWFzLWJsb2It
dXJsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmNkMmQ0MWM5NmY3YWY3OGNjZjYzNWIwZGY5
MWIzZTc3ZmFhY2UxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLWltYWdlLWFzLWJsb2ItdXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEy
IEBACitUZXN0cyB0aGF0IHBhc3RlZCBpbWFnZXMgdXNlIGJsb2IgVVJMLCBub3Qgd2Via2l0IGZh
a2UgVVJMcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcGFzdGVkSW1h
Z2VzLmxlbmd0aCBpcyAxCitQQVNTIHVybC5wcm90b2NvbCBpcyAiYmxvYjoiCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtYXMtYmxvYi11cmwuaHRt
bCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1hcy1ibG9iLXVy
bC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI2MWZlMjc4NWE0NjFmZmQ2YjM5YzQyYjkzNmE3NmE1YmFkMThk
OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtaW1hZ2UtYXMtYmxvYi11cmwuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50ZWRpdGFibGU9
InRydWUiIHN0eWxlPSJ3aWR0aDogNTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRlcjogc29saWQg
cmVkIDFweCI+PC9kaXY+Cis8aWZyYW1lIGlkPSJpZnJhbWUiIHNyYz0iLi4vcmVzb3VyY2VzL2Fi
ZS5wbmciIG9ubG9hZD0ic2VsZWN0SW5GcmFtZSgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzxzY3Jp
cHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgcGFzdGVkIGltYWdlcyB1c2UgYmxvYiBV
UkwsIG5vdCB3ZWJraXQgZmFrZSBVUkxzLiIpOworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgZnVuY3Rpb24gc2VsZWN0SW5GcmFtZSgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFByZWZlck1J
TUVUeXBlRm9ySW1hZ2VzKHRydWUpOworICAgICAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImlmcmFtZSIpOworICAgICAgICB2YXIgaWZyYW1lRG9jdW1lbnQgPSBpZnJh
bWUuY29udGVudERvY3VtZW50OworICAgICAgICB2YXIgZGVzdGluYXRpb24gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZGVzdGluYXRpb24iKTsKKyAgICAgICAgaWZyYW1lRG9jdW1lbnQuYm9k
eS5mb2N1cygpOworICAgICAgICBpZnJhbWVEb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxs
Iik7CisgICAgICAgIGlmcmFtZURvY3VtZW50LmV4ZWNDb21tYW5kKCJDb3B5Iik7CisgICAgICAg
IGRlc3RpbmF0aW9uLmZvY3VzKCk7CisgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJQYXN0
ZSIpOworCisgICAgICAgIHBhc3RlZEltYWdlcyA9IGRlc3RpbmF0aW9uLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJpbWciKTsKKyAgICAgICAgc2hvdWxkQmUoInBhc3RlZEltYWdlcy5sZW5ndGgiLCAi
MSIpOworICAgICAgICBpbWcgPSBwYXN0ZWRJbWFnZXNbMF07CisgICAgICAgIHVybCA9IG5ldyBV
UkwoaW1nLnNyYyk7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygidXJsLnByb3RvY29s
IiwgImJsb2I6Iik7CisKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtaW1hZ2UtdXNpbmctaW1hZ2UtZGF0YS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLXVzaW5nLWltYWdlLWRhdGEtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZDEwOGU5OTFhNjkyYWI1ZjBkYjU5NWZiYmVkNzA5MTM0YzUyMDgxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWlt
YWdlLXVzaW5nLWltYWdlLWRhdGEtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc3RpbmF0aW9uIiBjb250ZW50
ZWRpdGFibGU9InRydWUiIHN0eWxlPSJ3aWR0aDogNTAwcHg7IGhlaWdodDogMTAwcHg7IGJvcmRl
cjogc29saWQgcmVkIDFweCI+Cis8aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FiZS5wbmciPgorPC9k
aXY+Cis8aWZyYW1lIGlkPSJpZnJhbWUiIHNyYz0iLi4vcmVzb3VyY2VzL2FiZS5wbmciPjwvaWZy
YW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLWltYWdlLXVzaW5nLWltYWdlLWRhdGEuaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS11c2luZy1pbWFnZS1kYXRhLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDNjNmI0MTQxOTBiMzQ4NjU3YjZlMzJmMjk3MTIyOTk2OGZhOGI0NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS11
c2luZy1pbWFnZS1kYXRhLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorPGRpdiBpZD0iZGVzdGluYXRpb24iIGNvbnRlbnRlZGl0YWJsZT0idHJ1
ZSIgc3R5bGU9IndpZHRoOiA1MDBweDsgaGVpZ2h0OiAxMDBweDsgYm9yZGVyOiBzb2xpZCByZWQg
MXB4Ij48L2Rpdj4KKzxpZnJhbWUgaWQ9ImlmcmFtZSIgc3JjPSIuLi9yZXNvdXJjZXMvYWJlLnBu
ZyIgb25sb2FkPSJzZWxlY3RJbkZyYW1lKCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPHNjcmlwdD4K
KyAgICBmdW5jdGlvbiBzZWxlY3RJbkZyYW1lKCkgeworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UHJlZmVyTUlN
RVR5cGVGb3JJbWFnZXModHJ1ZSk7CisgICAgICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiaWZyYW1lIik7CisgICAgICAgIHZhciBpZnJhbWVEb2N1bWVudCA9IGlmcmFt
ZS5jb250ZW50RG9jdW1lbnQ7CisgICAgICAgIHZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbiIpOworICAgICAgICBpZnJhbWVEb2N1bWVudC5ib2R5
LmZvY3VzKCk7CisgICAgICAgIGlmcmFtZURvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwi
KTsKKyAgICAgICAgaWZyYW1lRG9jdW1lbnQuZXhlY0NvbW1hbmQoIkNvcHkiKTsKKyAgICAgICAg
ZGVzdGluYXRpb24uZm9jdXMoKTsKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlBhc3Rl
Iik7CisgICAgICAgIGRlc3RpbmF0aW9uLmJsdXIoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvaHRt
bD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>