<?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>87938</bug_id>
          
          <creation_ts>2012-05-31 01:10:33 -0700</creation_ts>
          <short_desc>[GTK] Avoid unnecessary heap allocations during drag and drop operations</short_desc>
          <delta_ts>2012-12-04 02:34:02 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>638092</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-31 01:10:33 -0700</bug_when>
    <thetext>The DragAndDropHelper returns a new allocated DragData object in several methods, while the only thing we need is the platformData (DataObjectGtk). So we could just return a pointer and create the DragData object in the stack</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638097</commentid>
    <comment_count>1</comment_count>
      <attachid>145013</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-31 01:17:11 -0700</bug_when>
    <thetext>Created attachment 145013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638100</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-31 01:19:40 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638304</commentid>
    <comment_count>3</comment_count>
      <attachid>145013</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-05-31 06:07:35 -0700</bug_when>
    <thetext>Comment on attachment 145013
Patch

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

Hrm. I&apos;m not sure if I prefer the new approach. It does avoid an allocation on the heap, but replaces it with an allocation on the stack which is arguably riskier and with the result of creating more code.   Additionally this moves from two places in the code having to create DragData  to six.

I worry also that the use of position as an in and out parameter could be confusing and would prefer to simply have a getter on DragAndDropHelper.

&gt; Source/WebCore/platform/gtk/GtkDragAndDropHelper.cpp:161
&gt; -        return adoptPtr(static_cast&lt;DragData*&gt;(0));
&gt; +        return 0;
&gt;  

I&apos;m not sure what I was thinking when I wrote this code. This should be return nullptr here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638307</commentid>
    <comment_count>4</comment_count>
      <attachid>145013</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-05-31 06:09:07 -0700</bug_when>
    <thetext>Comment on attachment 145013
Patch

An alternative approach would be to cache the DragData in DragData in DragAndDropHelper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638434</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-31 08:16:20 -0700</bug_when>
    <thetext>Look at how other ports use it, all of them create a DragData in the stack when needed, because I think it&apos;s thought as a temporary object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638441</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-05-31 08:25:16 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 145013 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145013&amp;action=review
&gt; 
&gt; Hrm. I&apos;m not sure if I prefer the new approach. It does avoid an allocation on the heap, but replaces it with an allocation on the stack which is arguably riskier and with the result of creating more code.   Additionally this moves from two places in the code having to create DragData  to six.
&gt; 
&gt; I worry also that the use of position as an in and out parameter could be confusing and would prefer to simply have a getter on DragAndDropHelper.
&gt; 

That&apos;s a workaround to use the last motion position instead of the coords passed to drag-data-received, the caller has everything required to build a DragData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639389</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-01 08:54:19 -0700</bug_when>
    <thetext>DragData has a small size so I don&apos;t think there&apos;s any risk in allocate it on the stack, and it&apos;s what all other ports do after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639399</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-06-01 08:59:59 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; DragData has a small size so I don&apos;t think there&apos;s any risk in allocate it on the stack, and it&apos;s what all other ports do after all.

It still seems like this is less clean than the old approach.  An allocation on the heap isn&apos;t such a terrible thing, but even so it can be eliminated by simply caching the DragData in the DragAndDropHelper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639406</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-01 09:03:17 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; DragData has a small size so I don&apos;t think there&apos;s any risk in allocate it on the stack, and it&apos;s what all other ports do after all.
&gt; 
&gt; It still seems like this is less clean than the old approach.  An allocation on the heap isn&apos;t such a terrible thing, but even so it can be eliminated by simply caching the DragData in the DragAndDropHelper.

Well, I don&apos;t see this is less clean, and DragData looks like a temp object to me, so I prefer not to cache it at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781461</commentid>
    <comment_count>10</comment_count>
      <attachid>177257</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-03 07:58:28 -0800</bug_when>
    <thetext>Created attachment 177257
Updated patch to apply on current git master

Let&apos;s give this another try, I still think the code is simpler, more efficient and consistent with *all* other ports in both WebKit1 and WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782409</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-04 02:34:02 -0800</bug_when>
    <thetext>Committed r136494: &lt;http://trac.webkit.org/changeset/136494&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145013</attachid>
            <date>2012-05-31 01:17:11 -0700</date>
            <delta_ts>2012-12-03 07:58:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-heap-alloc-dnd.diff</filename>
            <type>text/plain</type>
            <size>14633</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkYTg3M2ViLi4wM2NjYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMDUtMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEF2b2lkIHVubmVjZXNzYXJ5IGhlYXAgYWxsb2NhdGlvbnMgZHVy
aW5nIGRyYWcgYW5kIGRyb3Agb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ01v
dGlvbik6IFJldHVybiBhCisgICAgICAgIHBvaW50ZXIgdG8gdGhlIERhdGFPYmplY3RHdGsgc28g
dGhhdCB0aGUgY2FsbGVyIGNhbiBjcmVhdGUgdGhlCisgICAgICAgIERyYWdEYXRhIG9iamVjdCBp
biB0aGUgc3RhY2suCisgICAgICAgIChXZWJDb3JlOjpHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFu
ZGxlRHJhZ0RhdGFSZWNlaXZlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3RrRHJhZ0Fu
ZERyb3BIZWxwZXI6OmhhbmRsZURyYWdEcm9wKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Z3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmg6CisKIDIwMTItMDUtMzAgIFlvc2hpZnVtaSBJbm91
ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbUGxhdGZvcm1dIEludHJvZHVjZSBE
ZWNpbWFsIGNsYXNzIGZvciBOdW1iZXIvUmFuZ2UgaW5wdXQgdHlwZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpp
bmRleCA3ZWNmNGQwLi5lNTY4NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTItMDUtMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEF2b2lkIHVubmVjZXNzYXJ5IGhlYXAgYWxsb2NhdGlvbnMgZHVyaW5n
IGRyYWcgYW5kIGRyb3Agb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19kcmFnX21vdGlvbik6IENyZWF0ZSBEcmFnRGF0YSBmb3IgdGhlIGdpdmVu
CisgICAgICAgIERhdGFPYmplY3RHdGsgaW4gdGhlIHN0YWNrLgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2RyYWdfZGF0YV9yZWNlaXZlZCk6IERpdHRvLgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2RyYWdfZHJvcCk6IERpdHRvLgorCiAyMDEyLTA1LTI1ICBKZXN1cyBTYW5jaGV6LVBhbGVu
Y2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBXZWJLaXRUZXN0
UnVubmVyIG5lZWRzIHRvIHN1cHBvcnQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SmF2YVNjcmlw
dFByb2ZpbGluZ0VuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1Njg0YzNiLi40YmZhNTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDUtMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEF2b2lkIHVubmVjZXNzYXJ5IGhl
YXAgYWxsb2NhdGlvbnMgZHVyaW5nIGRyYWcgYW5kIGRyb3Agb3BlcmF0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5MzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0Rh
dGFSZWNlaXZlZCk6IENyZWF0ZSBEcmFnRGF0YSBmb3IgdGhlIGdpdmVuCisgICAgICAgIERhdGFP
YmplY3RHdGsgaW4gdGhlIHN0YWNrLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEcmFnTW90
aW9uKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURyYWdEcm9wKTogRGl0dG8u
CisKIDIwMTItMDUtMzAgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNvbT4K
IAogICAgICAgICBbUXRdIGhhbmRsZWQgdG91Y2htb3ZlIGV2ZW50cyBzaG91bGQgbm90IGNhbmNl
bCB0YXAgZ2VzdHVyZSByZWNvZ25pdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5jcHAKaW5kZXggNzYzZDEyMC4uNWY2NjVjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BI
ZWxwZXIuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgog
I2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzEs
NyArMTMwLDcgQEAgc3RhdGljIHZvaWQgcXVlcnlOZXdEcm9wQ29udGV4dERhdGEoRHJvcHBpbmdD
b250ZXh0KiBkcm9wQ29udGV4dCwgR3RrV2lkZ2V0KiB3aWQKICAgICAgICAgZ3RrX2RyYWdfZ2V0
X2RhdGEod2lkZ2V0LCBnZGtDb250ZXh0LCBhY2NlcHRhYmxlVGFyZ2V0cy5hdChpKSwgdGltZSk7
CiB9CiAKLVBhc3NPd25QdHI8RHJhZ0RhdGE+IEd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVE
cmFnTW90aW9uKEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcG9zaXRp
b24sIHVuc2lnbmVkIHRpbWUpCitEYXRhT2JqZWN0R3RrKiBHdGtEcmFnQW5kRHJvcEhlbHBlcjo6
aGFuZGxlRHJhZ01vdGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQm
IHBvc2l0aW9uLCB1bnNpZ25lZCB0aW1lKQogewogICAgIERyb3BwaW5nQ29udGV4dCogZHJvcHBp
bmdDb250ZXh0ID0gMDsKICAgICBEcm9wcGluZ0NvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9y
ID0gbV9kcm9wcGluZ0NvbnRleHRzLmZpbmQoY29udGV4dCk7CkBAIC0xNDksNDggKzE0OCw0MiBA
QCBQYXNzT3duUHRyPERyYWdEYXRhPiBHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ01v
dGlvbihHZGtEcmFnQ29udGV4dCogY29udAogICAgIC8vIGZvciB0aGUgZHJhZydzIGRhdGEuCiAg
ICAgQVNTRVJUKGRyb3BwaW5nQ29udGV4dCk7CiAgICAgaWYgKGRyb3BwaW5nQ29udGV4dC0+cGVu
ZGluZ0RhdGFSZXF1ZXN0cyA+IDApCi0gICAgICAgIHJldHVybiBhZG9wdFB0cihzdGF0aWNfY2Fz
dDxEcmFnRGF0YSo+KDApKTsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IERyYWdEYXRhKGRyb3BwaW5nQ29udGV4dC0+ZGF0YU9iamVjdC5nZXQoKSwgcG9zaXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0V2lkZ2V0UG9pbnRU
b1NjcmVlblBvaW50KG1fd2lkZ2V0LCBwb3NpdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGdka19kcmFnX2NvbnRleHRf
Z2V0X2FjdGlvbnMoY29udGV4dCkpKSk7CisgICAgcmV0dXJuIGRyb3BwaW5nQ29udGV4dC0+ZGF0
YU9iamVjdC5nZXQoKTsKIH0KIAotUGFzc093blB0cjxEcmFnRGF0YT4gR3RrRHJhZ0FuZERyb3BI
ZWxwZXI6OmhhbmRsZURyYWdEYXRhUmVjZWl2ZWQoR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0
a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbkRhdGEsIGd1aW50IGluZm8pCitEYXRhT2JqZWN0R3Rr
KiBHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ0RhdGFSZWNlaXZlZChHZGtEcmFnQ29u
dGV4dCogY29udGV4dCwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwgZ3VpbnQgaW5m
bywgSW50UG9pbnQmIHBvc2l0aW9uKQogewogICAgIERyb3BwaW5nQ29udGV4dE1hcDo6aXRlcmF0
b3IgaXRlcmF0b3IgPSBtX2Ryb3BwaW5nQ29udGV4dHMuZmluZChjb250ZXh0KTsKICAgICBpZiAo
aXRlcmF0b3IgPT0gbV9kcm9wcGluZ0NvbnRleHRzLmVuZCgpKQotICAgICAgICByZXR1cm4gYWRv
cHRQdHIoc3RhdGljX2Nhc3Q8RHJhZ0RhdGEqPigwKSk7CisgICAgICAgIHJldHVybiAwOwogCiAg
ICAgRHJvcHBpbmdDb250ZXh0KiBkcm9wcGluZ0NvbnRleHQgPSBpdGVyYXRvci0+c2Vjb25kOwog
ICAgIGRyb3BwaW5nQ29udGV4dC0+cGVuZGluZ0RhdGFSZXF1ZXN0cy0tOwogICAgIFBhc3RlYm9h
cmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPmZpbGxEYXRhT2JqZWN0RnJvbURy
b3BEYXRhKHNlbGVjdGlvbkRhdGEsIGluZm8sIGRyb3BwaW5nQ29udGV4dC0+ZGF0YU9iamVjdC5n
ZXQoKSk7CiAKICAgICBpZiAoZHJvcHBpbmdDb250ZXh0LT5wZW5kaW5nRGF0YVJlcXVlc3RzKQot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIoc3RhdGljX2Nhc3Q8RHJhZ0RhdGEqPigwKSk7CisgICAg
ICAgIHJldHVybiAwOwogCiAgICAgLy8gVGhlIGNvb3JkaW5hdGVzIHBhc3NlZCB0byBkcmFnLWRh
dGEtcmVjZWl2ZWQgc2lnbmFsIGFyZSBzb21ldGltZXMKICAgICAvLyBpbmFjY3VyYXRlIGluIERS
VCwgc28gdXNlIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgbGFzdCBtb3Rpb24gZXZlbnQuCi0gICAg
Y29uc3QgSW50UG9pbnQmIHBvc2l0aW9uID0gZHJvcHBpbmdDb250ZXh0LT5sYXN0TW90aW9uUG9z
aXRpb247CisgICAgcG9zaXRpb24gPSBkcm9wcGluZ0NvbnRleHQtPmxhc3RNb3Rpb25Qb3NpdGlv
bjsKIAogICAgIC8vIElmIHRoZXJlIGFyZSBubyBtb3JlIHBlbmRpbmcgcmVxdWVzdHMsIHN0YXJ0
IHNlbmRpbmcgZHJhZ2dpbmcgZGF0YSB0byBXZWJDb3JlLgotICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgRHJhZ0RhdGEoZHJvcHBpbmdDb250ZXh0LT5kYXRhT2JqZWN0LmdldCgpLCBwb3NpdGlvbiwg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0V2lkZ2V0UG9pbnRUb1Nj
cmVlblBvaW50KG1fd2lkZ2V0LCBwb3NpdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGdka19kcmFnX2NvbnRleHRfZ2V0
X2FjdGlvbnMoY29udGV4dCkpKSk7CisgICAgcmV0dXJuIGRyb3BwaW5nQ29udGV4dC0+ZGF0YU9i
amVjdC5nZXQoKTsKIH0KIAotUGFzc093blB0cjxEcmFnRGF0YT4gR3RrRHJhZ0FuZERyb3BIZWxw
ZXI6OmhhbmRsZURyYWdEcm9wKEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2lu
dCYgcG9zaXRpb24pCitEYXRhT2JqZWN0R3RrKiBHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxl
RHJhZ0Ryb3AoR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgRHJvcHBpbmdDb250ZXh0
TWFwOjppdGVyYXRvciBpdGVyYXRvciA9IG1fZHJvcHBpbmdDb250ZXh0cy5maW5kKGNvbnRleHQp
OwogICAgIGlmIChpdGVyYXRvciA9PSBtX2Ryb3BwaW5nQ29udGV4dHMuZW5kKCkpCi0gICAgICAg
IHJldHVybiBhZG9wdFB0cihzdGF0aWNfY2FzdDxEcmFnRGF0YSo+KDApKTsKKyAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBEcm9wcGluZ0NvbnRleHQqIGRyb3BwaW5nQ29udGV4dCA9IGl0ZXJhdG9y
LT5zZWNvbmQ7CiAgICAgZHJvcHBpbmdDb250ZXh0LT5kcm9wSGFwcGVuZWQgPSB0cnVlOwogCi0g
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEcmFnRGF0YShkcm9wcGluZ0NvbnRleHQtPmRhdGFPYmpl
Y3QuZ2V0KCksIHBvc2l0aW9uLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV93aWRnZXQsIHBvc2l0aW9uKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24o
Z2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSkpKTsKKyAgICByZXR1cm4gZHJv
cHBpbmdDb250ZXh0LT5kYXRhT2JqZWN0LmdldCgpOwogfQogCiB2b2lkIEd0a0RyYWdBbmREcm9w
SGVscGVyOjpzdGFydGVkRHJhZyhHZGtEcmFnQ29udGV4dCogY29udGV4dCwgRGF0YU9iamVjdEd0
ayogZGF0YU9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtEcmFnQW5kRHJvcEhlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0Ry
YWdBbmREcm9wSGVscGVyLmgKaW5kZXggOTBlODRjMS4uMmIwZjhiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmgKQEAgLTQ3LDkg
KzQ3LDkgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlR2V0RHJhZ0RhdGEoR2RrRHJhZ0NvbnRl
eHQqLCBHdGtTZWxlY3Rpb25EYXRhKiwgZ3VpbnQgaW5mbyk7CiAgICAgdm9pZCBoYW5kbGVEcmFn
TGVhdmUoR2RrRHJhZ0NvbnRleHQqLCBEcmFnRXhpdGVkQ2FsbGJhY2spOwogICAgIHZvaWQgaGFu
ZGxlRHJhZ0xlYXZlTGF0ZXIoRHJvcHBpbmdDb250ZXh0Kik7Ci0gICAgUGFzc093blB0cjxEcmFn
RGF0YT4gaGFuZGxlRHJhZ01vdGlvbihHZGtEcmFnQ29udGV4dCosIGNvbnN0IEludFBvaW50Jiwg
dW5zaWduZWQgdGltZSk7Ci0gICAgUGFzc093blB0cjxEcmFnRGF0YT4gaGFuZGxlRHJhZ0RhdGFS
ZWNlaXZlZChHZGtEcmFnQ29udGV4dCosIEd0a1NlbGVjdGlvbkRhdGEqLCBndWludCBpbmZvKTsK
LSAgICBQYXNzT3duUHRyPERyYWdEYXRhPiBoYW5kbGVEcmFnRHJvcChHZGtEcmFnQ29udGV4dCos
IGNvbnN0IEludFBvaW50Jik7CisgICAgRGF0YU9iamVjdEd0ayogaGFuZGxlRHJhZ01vdGlvbihH
ZGtEcmFnQ29udGV4dCosIGNvbnN0IEludFBvaW50JiwgdW5zaWduZWQgdGltZSk7CisgICAgRGF0
YU9iamVjdEd0ayogaGFuZGxlRHJhZ0RhdGFSZWNlaXZlZChHZGtEcmFnQ29udGV4dCosIEd0a1Nl
bGVjdGlvbkRhdGEqLCBndWludCBpbmZvLCBJbnRQb2ludCYpOworICAgIERhdGFPYmplY3RHdGsq
IGhhbmRsZURyYWdEcm9wKEdka0RyYWdDb250ZXh0Kik7CiAgICAgdm9pZCBzdGFydGVkRHJhZyhH
ZGtEcmFnQ29udGV4dCosIERhdGFPYmplY3RHdGsqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAxYTU0ZWE4Li44ZWY3NTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0xNTE0LDEx
ICsxNTE0LDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kcmFnX2xlYXZlKEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtEcmFnQ29udGV4dCogY29udGV4CiBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2RyYWdfbW90aW9uKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtEcmFnQ29udGV4
dCogY29udGV4dCwgZ2ludCB4LCBnaW50IHksIGd1aW50IHRpbWUpCiB7CiAgICAgV2ViS2l0V2Vi
Vmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOwotICAgIE93blB0cjxEcmFn
RGF0YT4gZHJhZ0RhdGEod2ViVmlldy0+cHJpdi0+ZHJhZ0FuZERyb3BIZWxwZXIuaGFuZGxlRHJh
Z01vdGlvbihjb250ZXh0LCBJbnRQb2ludCh4LCB5KSwgdGltZSkpOwotICAgIGlmICghZHJhZ0Rh
dGEpCisgICAgSW50UG9pbnQgcG9zaXRpb24oeCwgeSk7CisgICAgRGF0YU9iamVjdEd0ayogZGF0
YU9iamVjdCA9IHdlYlZpZXctPnByaXYtPmRyYWdBbmREcm9wSGVscGVyLmhhbmRsZURyYWdNb3Rp
b24oY29udGV4dCwgcG9zaXRpb24sIHRpbWUpOworICAgIGlmICghZGF0YU9iamVjdCkKICAgICAg
ICAgcmV0dXJuIFRSVUU7CiAKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGNvcmUod2Vi
VmlldyktPmRyYWdDb250cm9sbGVyKCktPmRyYWdVcGRhdGVkKGRyYWdEYXRhLmdldCgpKS5vcGVy
YXRpb247CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZGF0YU9iamVjdCwgcG9zaXRpb24sIGNvbnZl
cnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQod2lkZ2V0LCBwb3NpdGlvbiksIGdka0RyYWdBY3Rp
b25Ub0RyYWdPcGVyYXRpb24oZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSkp
OworICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gY29yZSh3ZWJWaWV3KS0+ZHJhZ0NvbnRy
b2xsZXIoKS0+ZHJhZ1VwZGF0ZWQoJmRyYWdEYXRhKS5vcGVyYXRpb247CiAgICAgZ2RrX2RyYWdf
c3RhdHVzKGNvbnRleHQsIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24ob3BlcmF0
aW9uKSwgdGltZSk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CkBAIC0xNTI2LDIyICsxNTI4LDI2IEBA
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19tb3Rpb24oR3RrV2lkZ2V0KiB3
aWRnZXQsIEdka0RyYWdDb250ZXh0KiBjCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJh
Z19kYXRhX3JlY2VpdmVkKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtEcmFnQ29udGV4dCogY29udGV4
dCwgZ2ludCB4LCBnaW50IHksIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbkRhdGEsIGd1aW50
IGluZm8sIGd1aW50IHRpbWUpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyh3aWRnZXQpOwotICAgIE93blB0cjxEcmFnRGF0YT4gZHJhZ0RhdGEod2ViVmll
dy0+cHJpdi0+ZHJhZ0FuZERyb3BIZWxwZXIuaGFuZGxlRHJhZ0RhdGFSZWNlaXZlZChjb250ZXh0
LCBzZWxlY3Rpb25EYXRhLCBpbmZvKSk7Ci0gICAgaWYgKCFkcmFnRGF0YSkKKyAgICBJbnRQb2lu
dCBwb3NpdGlvbjsKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gd2ViVmlldy0+cHJp
di0+ZHJhZ0FuZERyb3BIZWxwZXIuaGFuZGxlRHJhZ0RhdGFSZWNlaXZlZChjb250ZXh0LCBzZWxl
Y3Rpb25EYXRhLCBpbmZvLCBwb3NpdGlvbik7CisgICAgaWYgKCFkYXRhT2JqZWN0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGNvcmUod2ViVmlldykt
PmRyYWdDb250cm9sbGVyKCktPmRyYWdFbnRlcmVkKGRyYWdEYXRhLmdldCgpKS5vcGVyYXRpb247
CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZGF0YU9iamVjdCwgcG9zaXRpb24sIGNvbnZlcnRXaWRn
ZXRQb2ludFRvU2NyZWVuUG9pbnQod2lkZ2V0LCBwb3NpdGlvbiksIGdka0RyYWdBY3Rpb25Ub0Ry
YWdPcGVyYXRpb24oZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSkpOworICAg
IERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gY29yZSh3ZWJWaWV3KS0+ZHJhZ0NvbnRyb2xsZXIo
KS0+ZHJhZ0VudGVyZWQoJmRyYWdEYXRhKS5vcGVyYXRpb247CiAgICAgZ2RrX2RyYWdfc3RhdHVz
KGNvbnRleHQsIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24ob3BlcmF0aW9uKSwg
dGltZSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kcm9wKEd0
a1dpZGdldCogd2lkZ2V0LCBHZGtEcmFnQ29udGV4dCogY29udGV4dCwgZ2ludCB4LCBnaW50IHks
IGd1aW50IHRpbWUpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyh3aWRnZXQpOwotICAgIE93blB0cjxEcmFnRGF0YT4gZHJhZ0RhdGEod2ViVmlldy0+cHJp
di0+ZHJhZ0FuZERyb3BIZWxwZXIuaGFuZGxlRHJhZ0Ryb3AoY29udGV4dCwgSW50UG9pbnQoeCwg
eSkpKTsKLSAgICBpZiAoIWRyYWdEYXRhKQorICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3Qg
PSB3ZWJWaWV3LT5wcml2LT5kcmFnQW5kRHJvcEhlbHBlci5oYW5kbGVEcmFnRHJvcChjb250ZXh0
KTsKKyAgICBpZiAoIWRhdGFPYmplY3QpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIGNv
cmUod2ViVmlldyktPmRyYWdDb250cm9sbGVyKCktPnBlcmZvcm1EcmFnKGRyYWdEYXRhLmdldCgp
KTsKKyAgICBJbnRQb2ludCBwb3NpdGlvbih4LCB5KTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShk
YXRhT2JqZWN0LCBwb3NpdGlvbiwgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludCh3aWRn
ZXQsIHBvc2l0aW9uKSwgZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihnZGtfZHJhZ19jb250
ZXh0X2dldF9hY3Rpb25zKGNvbnRleHQpKSk7CisgICAgY29yZSh3ZWJWaWV3KS0+ZHJhZ0NvbnRy
b2xsZXIoKS0+cGVyZm9ybURyYWcoJmRyYWdEYXRhKTsKICAgICBndGtfZHJhZ19maW5pc2goY29u
dGV4dCwgVFJVRSwgRkFMU0UsIHRpbWUpOwogICAgIHJldHVybiBUUlVFOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CmluZGV4IDRmYWE3NWYuLmY3NTIyNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTUxMSwxMiArNTExLDE0
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0VuZChHdGtXaWRnZXQqIHdpZGdl
dCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQpCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZURyYWdEYXRhUmVjZWl2ZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0KiBjb250
ZXh0LCBnaW50IHgsIGdpbnQgeSwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwgZ3Vp
bnQgaW5mbywgZ3VpbnQgdGltZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwotICAgIE93blB0cjxEcmFnRGF0YT4g
ZHJhZ0RhdGEod2ViVmlld0Jhc2UtPnByaXYtPmRyYWdBbmREcm9wSGVscGVyLmhhbmRsZURyYWdE
YXRhUmVjZWl2ZWQoY29udGV4dCwgc2VsZWN0aW9uRGF0YSwgaW5mbykpOwotICAgIGlmICghZHJh
Z0RhdGEpCisgICAgSW50UG9pbnQgcG9zaXRpb247CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9i
amVjdCA9IHdlYlZpZXdCYXNlLT5wcml2LT5kcmFnQW5kRHJvcEhlbHBlci5oYW5kbGVEcmFnRGF0
YVJlY2VpdmVkKGNvbnRleHQsIHNlbGVjdGlvbkRhdGEsIGluZm8sIHBvc2l0aW9uKTsKKyAgICBp
ZiAoIWRhdGFPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAorICAgIERyYWdEYXRhIGRyYWdEYXRh
KGRhdGFPYmplY3QsIHBvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KHdp
ZGdldCwgcG9zaXRpb24pLCBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGdka19kcmFnX2Nv
bnRleHRfZ2V0X2FjdGlvbnMoY29udGV4dCkpKTsKICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFn
ZVByb3h5LT5yZXNldERyYWdPcGVyYXRpb24oKTsKLSAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFn
ZVByb3h5LT5kcmFnRW50ZXJlZChkcmFnRGF0YS5nZXQoKSk7CisgICAgd2ViVmlld0Jhc2UtPnBy
aXYtPnBhZ2VQcm94eS0+ZHJhZ0VudGVyZWQoJmRyYWdEYXRhKTsKICAgICBEcmFnT3BlcmF0aW9u
IG9wZXJhdGlvbiA9IHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmRyYWdTZXNzaW9uKCku
b3BlcmF0aW9uOwogICAgIGdka19kcmFnX3N0YXR1cyhjb250ZXh0LCBkcmFnT3BlcmF0aW9uVG9T
aW5nbGVHZGtEcmFnQWN0aW9uKG9wZXJhdGlvbiksIHRpbWUpOwogfQpAQCAtNTUyLDExICs1NTQs
MTMgQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0V2ViVmlld0Jhc2VHZXRBY2Nlc3NpYmxlKEd0
a1dpZGdldCogd2lkZ2V0KQogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhZ01v
dGlvbihHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIGdpbnQgeCwg
Z2ludCB5LCBndWludCB0aW1lKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7Ci0gICAgT3duUHRyPERyYWdEYXRhPiBk
cmFnRGF0YSh3ZWJWaWV3QmFzZS0+cHJpdi0+ZHJhZ0FuZERyb3BIZWxwZXIuaGFuZGxlRHJhZ01v
dGlvbihjb250ZXh0LCBJbnRQb2ludCh4LCB5KSwgdGltZSkpOwotICAgIGlmICghZHJhZ0RhdGEp
CisgICAgSW50UG9pbnQgcG9zaXRpb24oeCwgeSk7CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9i
amVjdCA9IHdlYlZpZXdCYXNlLT5wcml2LT5kcmFnQW5kRHJvcEhlbHBlci5oYW5kbGVEcmFnTW90
aW9uKGNvbnRleHQsIHBvc2l0aW9uLCB0aW1lKTsKKyAgICBpZiAoIWRhdGFPYmplY3QpCiAgICAg
ICAgIHJldHVybiBUUlVFOwogCi0gICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJh
Z1VwZGF0ZWQoZHJhZ0RhdGEuZ2V0KCkpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKGRhdGFPYmpl
Y3QsIHBvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KHdpZGdldCwgcG9z
aXRpb24pLCBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGdka19kcmFnX2NvbnRleHRfZ2V0
X2FjdGlvbnMoY29udGV4dCkpKTsKKyAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5k
cmFnVXBkYXRlZCgmZHJhZ0RhdGEpOwogICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gd2Vi
Vmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhZ1Nlc3Npb24oKS5vcGVyYXRpb247CiAgICAg
Z2RrX2RyYWdfc3RhdHVzKGNvbnRleHQsIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rp
b24ob3BlcmF0aW9uKSwgdGltZSk7CiAgICAgcmV0dXJuIFRSVUU7CkBAIC01ODIsMTMgKzU4Niwx
NSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURyYWdMZWF2ZShHdGtXaWRnZXQqIHdp
ZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleAogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZp
ZXdCYXNlRHJhZ0Ryb3AoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0KiBjb250ZXh0
LCBnaW50IHgsIGdpbnQgeSwgZ3VpbnQgdGltZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwotICAgIE93blB0cjxE
cmFnRGF0YT4gZHJhZ0RhdGEod2ViVmlld0Jhc2UtPnByaXYtPmRyYWdBbmREcm9wSGVscGVyLmhh
bmRsZURyYWdEcm9wKGNvbnRleHQsIEludFBvaW50KHgsIHkpKSk7Ci0gICAgaWYgKCFkcmFnRGF0
YSkKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gd2ViVmlld0Jhc2UtPnByaXYtPmRy
YWdBbmREcm9wSGVscGVyLmhhbmRsZURyYWdEcm9wKGNvbnRleHQpOworICAgIGlmICghZGF0YU9i
amVjdCkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCisgICAgSW50UG9pbnQgcG9zaXRpb24oeCwg
eSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZGF0YU9iamVjdCwgcG9zaXRpb24sIGNvbnZlcnRX
aWRnZXRQb2ludFRvU2NyZWVuUG9pbnQod2lkZ2V0LCBwb3NpdGlvbiksIGdka0RyYWdBY3Rpb25U
b0RyYWdPcGVyYXRpb24oZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSkpOwog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZDsKLSAgICB3ZWJWaWV3QmFz
ZS0+cHJpdi0+cGFnZVByb3h5LT5wZXJmb3JtRHJhZyhkcmFnRGF0YS5nZXQoKSwgU3RyaW5nKCks
IGhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CisgICAgd2ViVmlld0Jhc2UtPnBy
aXYtPnBhZ2VQcm94eS0+cGVyZm9ybURyYWcoJmRyYWdEYXRhLCBTdHJpbmcoKSwgaGFuZGxlLCBz
YW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKICAgICBndGtfZHJhZ19maW5pc2goY29udGV4dCwg
VFJVRSwgRkFMU0UsIHRpbWUpOwogICAgIHJldHVybiBUUlVFOwogfQo=
</data>
<flag name="review"
          id="152032"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177257</attachid>
            <date>2012-12-03 07:58:28 -0800</date>
            <delta_ts>2012-12-03 10:59:50 -0800</delta_ts>
            <desc>Updated patch to apply on current git master</desc>
            <filename>wk-dnd-allocations.diff</filename>
            <type>text/plain</type>
            <size>14582</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ODNkOTZiLi45NjlmNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMTItMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEF2b2lkIHVubmVjZXNzYXJ5IGhlYXAgYWxsb2NhdGlvbnMgZHVy
aW5nIGRyYWcgYW5kIGRyb3Agb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFuZGxlRHJhZ01v
dGlvbik6IFJldHVybiBhCisgICAgICAgIHBvaW50ZXIgdG8gdGhlIERhdGFPYmplY3RHdGsgc28g
dGhhdCB0aGUgY2FsbGVyIGNhbiBjcmVhdGUgdGhlCisgICAgICAgIERyYWdEYXRhIG9iamVjdCBp
biB0aGUgc3RhY2suCisgICAgICAgIChXZWJDb3JlOjpHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFu
ZGxlRHJhZ0RhdGFSZWNlaXZlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3RrRHJhZ0Fu
ZERyb3BIZWxwZXI6OmhhbmRsZURyYWdEcm9wKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Z3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmg6CisKIDIwMTItMTItMDMgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxMzYzNzcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
R3RrRHJhZ0FuZERyb3BIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a0RyYWdBbmREcm9wSGVscGVyLmNwcAppbmRleCBmYzJmNTZlLi4xNTdhNjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrRHJhZ0FuZERyb3BIZWxwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5kRHJvcEhlbHBlci5jcHAK
QEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAi
UGFzdGVib2FyZEhlbHBlci5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMSw3ICsxMzAsNyBA
QCBzdGF0aWMgdm9pZCBxdWVyeU5ld0Ryb3BDb250ZXh0RGF0YShEcm9wcGluZ0NvbnRleHQqIGRy
b3BDb250ZXh0LCBHdGtXaWRnZXQqIHdpZAogICAgICAgICBndGtfZHJhZ19nZXRfZGF0YSh3aWRn
ZXQsIGdka0NvbnRleHQsIGFjY2VwdGFibGVUYXJnZXRzLmF0KGkpLCB0aW1lKTsKIH0KIAotUGFz
c093blB0cjxEcmFnRGF0YT4gR3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZURyYWdNb3Rpb24o
R2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgdW5zaWdu
ZWQgdGltZSkKK0RhdGFPYmplY3RHdGsqIEd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVEcmFn
TW90aW9uKEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24s
IHVuc2lnbmVkIHRpbWUpCiB7CiAgICAgRHJvcHBpbmdDb250ZXh0KiBkcm9wcGluZ0NvbnRleHQg
PSAwOwogICAgIERyb3BwaW5nQ29udGV4dE1hcDo6aXRlcmF0b3IgaXRlcmF0b3IgPSBtX2Ryb3Bw
aW5nQ29udGV4dHMuZmluZChjb250ZXh0KTsKQEAgLTE0OSw0OCArMTQ4LDQyIEBAIFBhc3NPd25Q
dHI8RHJhZ0RhdGE+IEd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5kbGVEcmFnTW90aW9uKEdka0Ry
YWdDb250ZXh0KiBjb250CiAgICAgLy8gZm9yIHRoZSBkcmFnJ3MgZGF0YS4KICAgICBBU1NFUlQo
ZHJvcHBpbmdDb250ZXh0KTsKICAgICBpZiAoZHJvcHBpbmdDb250ZXh0LT5wZW5kaW5nRGF0YVJl
cXVlc3RzID4gMCkKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKHN0YXRpY19jYXN0PERyYWdEYXRh
Kj4oMCkpOworICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBhZG9wdFB0cihuZXcgRHJh
Z0RhdGEoZHJvcHBpbmdDb250ZXh0LT5kYXRhT2JqZWN0LmdldCgpLCBwb3NpdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9p
bnQobV93aWRnZXQsIHBvc2l0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9u
cyhjb250ZXh0KSkpKTsKKyAgICByZXR1cm4gZHJvcHBpbmdDb250ZXh0LT5kYXRhT2JqZWN0Lmdl
dCgpOwogfQogCi1QYXNzT3duUHRyPERyYWdEYXRhPiBHdGtEcmFnQW5kRHJvcEhlbHBlcjo6aGFu
ZGxlRHJhZ0RhdGFSZWNlaXZlZChHZGtEcmFnQ29udGV4dCogY29udGV4dCwgR3RrU2VsZWN0aW9u
RGF0YSogc2VsZWN0aW9uRGF0YSwgZ3VpbnQgaW5mbykKK0RhdGFPYmplY3RHdGsqIEd0a0RyYWdB
bmREcm9wSGVscGVyOjpoYW5kbGVEcmFnRGF0YVJlY2VpdmVkKEdka0RyYWdDb250ZXh0KiBjb250
ZXh0LCBHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25EYXRhLCB1bnNpZ25lZCBpbmZvLCBJbnRQ
b2ludCYgcG9zaXRpb24pCiB7CiAgICAgRHJvcHBpbmdDb250ZXh0TWFwOjppdGVyYXRvciBpdGVy
YXRvciA9IG1fZHJvcHBpbmdDb250ZXh0cy5maW5kKGNvbnRleHQpOwogICAgIGlmIChpdGVyYXRv
ciA9PSBtX2Ryb3BwaW5nQ29udGV4dHMuZW5kKCkpCi0gICAgICAgIHJldHVybiBhZG9wdFB0cihz
dGF0aWNfY2FzdDxEcmFnRGF0YSo+KDApKTsKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBEcm9w
cGluZ0NvbnRleHQqIGRyb3BwaW5nQ29udGV4dCA9IGl0ZXJhdG9yLT52YWx1ZTsKICAgICBkcm9w
cGluZ0NvbnRleHQtPnBlbmRpbmdEYXRhUmVxdWVzdHMtLTsKICAgICBQYXN0ZWJvYXJkSGVscGVy
OjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT5maWxsRGF0YU9iamVjdEZyb21Ecm9wRGF0YShz
ZWxlY3Rpb25EYXRhLCBpbmZvLCBkcm9wcGluZ0NvbnRleHQtPmRhdGFPYmplY3QuZ2V0KCkpOwog
CiAgICAgaWYgKGRyb3BwaW5nQ29udGV4dC0+cGVuZGluZ0RhdGFSZXF1ZXN0cykKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKHN0YXRpY19jYXN0PERyYWdEYXRhKj4oMCkpOworICAgICAgICByZXR1
cm4gMDsKIAogICAgIC8vIFRoZSBjb29yZGluYXRlcyBwYXNzZWQgdG8gZHJhZy1kYXRhLXJlY2Vp
dmVkIHNpZ25hbCBhcmUgc29tZXRpbWVzCiAgICAgLy8gaW5hY2N1cmF0ZSBpbiBEUlQsIHNvIHVz
ZSB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGxhc3QgbW90aW9uIGV2ZW50LgotICAgIGNvbnN0IElu
dFBvaW50JiBwb3NpdGlvbiA9IGRyb3BwaW5nQ29udGV4dC0+bGFzdE1vdGlvblBvc2l0aW9uOwor
ICAgIHBvc2l0aW9uID0gZHJvcHBpbmdDb250ZXh0LT5sYXN0TW90aW9uUG9zaXRpb247CiAKICAg
ICAvLyBJZiB0aGVyZSBhcmUgbm8gbW9yZSBwZW5kaW5nIHJlcXVlc3RzLCBzdGFydCBzZW5kaW5n
IGRyYWdnaW5nIGRhdGEgdG8gV2ViQ29yZS4KLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IERyYWdE
YXRhKGRyb3BwaW5nQ29udGV4dC0+ZGF0YU9iamVjdC5nZXQoKSwgcG9zaXRpb24sIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2lu
dChtX3dpZGdldCwgcG9zaXRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihnZGtfZHJhZ19jb250ZXh0X2dldF9hY3Rpb25z
KGNvbnRleHQpKSkpOworICAgIHJldHVybiBkcm9wcGluZ0NvbnRleHQtPmRhdGFPYmplY3QuZ2V0
KCk7CiB9CiAKLVBhc3NPd25QdHI8RHJhZ0RhdGE+IEd0a0RyYWdBbmREcm9wSGVscGVyOjpoYW5k
bGVEcmFnRHJvcChHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBvc2l0
aW9uKQorRGF0YU9iamVjdEd0ayogR3RrRHJhZ0FuZERyb3BIZWxwZXI6OmhhbmRsZURyYWdEcm9w
KEdka0RyYWdDb250ZXh0KiBjb250ZXh0KQogewogICAgIERyb3BwaW5nQ29udGV4dE1hcDo6aXRl
cmF0b3IgaXRlcmF0b3IgPSBtX2Ryb3BwaW5nQ29udGV4dHMuZmluZChjb250ZXh0KTsKICAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9kcm9wcGluZ0NvbnRleHRzLmVuZCgpKQotICAgICAgICByZXR1cm4g
YWRvcHRQdHIoc3RhdGljX2Nhc3Q8RHJhZ0RhdGEqPigwKSk7CisgICAgICAgIHJldHVybiAwOwog
CiAgICAgRHJvcHBpbmdDb250ZXh0KiBkcm9wcGluZ0NvbnRleHQgPSBpdGVyYXRvci0+dmFsdWU7
CiAgICAgZHJvcHBpbmdDb250ZXh0LT5kcm9wSGFwcGVuZWQgPSB0cnVlOwogCi0gICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBEcmFnRGF0YShkcm9wcGluZ0NvbnRleHQtPmRhdGFPYmplY3QuZ2V0KCks
IHBvc2l0aW9uLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRXaWRn
ZXRQb2ludFRvU2NyZWVuUG9pbnQobV93aWRnZXQsIHBvc2l0aW9uKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oZ2RrX2RyYWdf
Y29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSkpKTsKKyAgICByZXR1cm4gZHJvcHBpbmdDb250
ZXh0LT5kYXRhT2JqZWN0LmdldCgpOwogfQogCiB2b2lkIEd0a0RyYWdBbmREcm9wSGVscGVyOjpz
dGFydGVkRHJhZyhHZGtEcmFnQ29udGV4dCogY29udGV4dCwgRGF0YU9iamVjdEd0ayogZGF0YU9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtEcmFnQW5k
RHJvcEhlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9w
SGVscGVyLmgKaW5kZXggOTBlODRjMS4uMTU0YjAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmgKQEAgLTQ3LDkgKzQ3LDkgQEAg
cHVibGljOgogICAgIHZvaWQgaGFuZGxlR2V0RHJhZ0RhdGEoR2RrRHJhZ0NvbnRleHQqLCBHdGtT
ZWxlY3Rpb25EYXRhKiwgZ3VpbnQgaW5mbyk7CiAgICAgdm9pZCBoYW5kbGVEcmFnTGVhdmUoR2Rr
RHJhZ0NvbnRleHQqLCBEcmFnRXhpdGVkQ2FsbGJhY2spOwogICAgIHZvaWQgaGFuZGxlRHJhZ0xl
YXZlTGF0ZXIoRHJvcHBpbmdDb250ZXh0Kik7Ci0gICAgUGFzc093blB0cjxEcmFnRGF0YT4gaGFu
ZGxlRHJhZ01vdGlvbihHZGtEcmFnQ29udGV4dCosIGNvbnN0IEludFBvaW50JiwgdW5zaWduZWQg
dGltZSk7Ci0gICAgUGFzc093blB0cjxEcmFnRGF0YT4gaGFuZGxlRHJhZ0RhdGFSZWNlaXZlZChH
ZGtEcmFnQ29udGV4dCosIEd0a1NlbGVjdGlvbkRhdGEqLCBndWludCBpbmZvKTsKLSAgICBQYXNz
T3duUHRyPERyYWdEYXRhPiBoYW5kbGVEcmFnRHJvcChHZGtEcmFnQ29udGV4dCosIGNvbnN0IElu
dFBvaW50Jik7CisgICAgRGF0YU9iamVjdEd0ayogaGFuZGxlRHJhZ01vdGlvbihHZGtEcmFnQ29u
dGV4dCosIGNvbnN0IEludFBvaW50JiwgdW5zaWduZWQgdGltZSk7CisgICAgRGF0YU9iamVjdEd0
ayogaGFuZGxlRHJhZ0RhdGFSZWNlaXZlZChHZGtEcmFnQ29udGV4dCosIEd0a1NlbGVjdGlvbkRh
dGEqLCB1bnNpZ25lZCBpbmZvLCBJbnRQb2ludCYpOworICAgIERhdGFPYmplY3RHdGsqIGhhbmRs
ZURyYWdEcm9wKEdka0RyYWdDb250ZXh0Kik7CiAgICAgdm9pZCBzdGFydGVkRHJhZyhHZGtEcmFn
Q29udGV4dCosIERhdGFPYmplY3RHdGsqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRl
eCA5YWY0NWE5Li4zOWY1NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTItMTItMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIEF2b2lkIHVubmVjZXNzYXJ5IGhlYXAgYWxsb2NhdGlvbnMgZHVyaW5nIGRy
YWcgYW5kIGRyb3Agb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODc5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19kcmFnX21vdGlvbik6IENyZWF0ZSBEcmFnRGF0YSBmb3IgdGhlIGdpdmVuCisg
ICAgICAgIERhdGFPYmplY3RHdGsgaW4gdGhlIHN0YWNrLgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2RyYWdfZGF0YV9yZWNlaXZlZCk6IERpdHRvLgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X2RyYWdfZHJvcCk6IERpdHRvLgorCiAyMDEyLTEyLTAyICBNaWtlIFdlc3QgIDxta3dzdEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2d0a10gRW5hYmxlIHRoZSBDU1BfTkVYVCBydW50aW1lIGZs
YWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggY2Iy
MDNhYy4uMTRhMTMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcApAQCAtMTU0MywxMSArMTU0MywxMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
ZHJhZ19sZWF2ZShHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleAogc3Rh
dGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19kcmFnX21vdGlvbihHdGtXaWRnZXQqIHdpZGdl
dCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIGdpbnQgeCwgZ2ludCB5LCBndWludCB0aW1lKQog
ewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsK
LSAgICBPd25QdHI8RHJhZ0RhdGE+IGRyYWdEYXRhKHdlYlZpZXctPnByaXYtPmRyYWdBbmREcm9w
SGVscGVyLmhhbmRsZURyYWdNb3Rpb24oY29udGV4dCwgSW50UG9pbnQoeCwgeSksIHRpbWUpKTsK
LSAgICBpZiAoIWRyYWdEYXRhKQorICAgIEludFBvaW50IHBvc2l0aW9uKHgsIHkpOworICAgIERh
dGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSB3ZWJWaWV3LT5wcml2LT5kcmFnQW5kRHJvcEhlbHBl
ci5oYW5kbGVEcmFnTW90aW9uKGNvbnRleHQsIHBvc2l0aW9uLCB0aW1lKTsKKyAgICBpZiAoIWRh
dGFPYmplY3QpCiAgICAgICAgIHJldHVybiBUUlVFOwogCi0gICAgRHJhZ09wZXJhdGlvbiBvcGVy
YXRpb24gPSBjb3JlKHdlYlZpZXcpLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnVXBkYXRlZChkcmFn
RGF0YS5nZXQoKSkub3BlcmF0aW9uOworICAgIERyYWdEYXRhIGRyYWdEYXRhKGRhdGFPYmplY3Qs
IHBvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KHdpZGdldCwgcG9zaXRp
b24pLCBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGdka19kcmFnX2NvbnRleHRfZ2V0X2Fj
dGlvbnMoY29udGV4dCkpKTsKKyAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGNvcmUod2Vi
VmlldyktPmRyYWdDb250cm9sbGVyKCktPmRyYWdVcGRhdGVkKCZkcmFnRGF0YSkub3BlcmF0aW9u
OwogICAgIGdka19kcmFnX3N0YXR1cyhjb250ZXh0LCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtE
cmFnQWN0aW9uKG9wZXJhdGlvbiksIHRpbWUpOwogICAgIHJldHVybiBUUlVFOwogfQpAQCAtMTU1
NSwyMiArMTU1NywyNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2RyYWdfbW90
aW9uKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtEcmFnQ29udGV4dCogYwogc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X2RyYWdfZGF0YV9yZWNlaXZlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJh
Z0NvbnRleHQqIGNvbnRleHQsIGdpbnQgeCwgZ2ludCB5LCBHdGtTZWxlY3Rpb25EYXRhKiBzZWxl
Y3Rpb25EYXRhLCBndWludCBpbmZvLCBndWludCB0aW1lKQogewogICAgIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKLSAgICBPd25QdHI8RHJhZ0RhdGE+
IGRyYWdEYXRhKHdlYlZpZXctPnByaXYtPmRyYWdBbmREcm9wSGVscGVyLmhhbmRsZURyYWdEYXRh
UmVjZWl2ZWQoY29udGV4dCwgc2VsZWN0aW9uRGF0YSwgaW5mbykpOwotICAgIGlmICghZHJhZ0Rh
dGEpCisgICAgSW50UG9pbnQgcG9zaXRpb247CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVj
dCA9IHdlYlZpZXctPnByaXYtPmRyYWdBbmREcm9wSGVscGVyLmhhbmRsZURyYWdEYXRhUmVjZWl2
ZWQoY29udGV4dCwgc2VsZWN0aW9uRGF0YSwgaW5mbywgcG9zaXRpb24pOworICAgIGlmICghZGF0
YU9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24g
PSBjb3JlKHdlYlZpZXcpLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnRW50ZXJlZChkcmFnRGF0YS5n
ZXQoKSkub3BlcmF0aW9uOworICAgIERyYWdEYXRhIGRyYWdEYXRhKGRhdGFPYmplY3QsIHBvc2l0
aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KHdpZGdldCwgcG9zaXRpb24pLCBn
ZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGdka19kcmFnX2NvbnRleHRfZ2V0X2FjdGlvbnMo
Y29udGV4dCkpKTsKKyAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGNvcmUod2ViVmlldykt
PmRyYWdDb250cm9sbGVyKCktPmRyYWdFbnRlcmVkKCZkcmFnRGF0YSkub3BlcmF0aW9uOwogICAg
IGdka19kcmFnX3N0YXR1cyhjb250ZXh0LCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0
aW9uKG9wZXJhdGlvbiksIHRpbWUpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92
aWV3X2RyYWdfZHJvcChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQs
IGdpbnQgeCwgZ2ludCB5LCBndWludCB0aW1lKQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKLSAgICBPd25QdHI8RHJhZ0RhdGE+IGRyYWdE
YXRhKHdlYlZpZXctPnByaXYtPmRyYWdBbmREcm9wSGVscGVyLmhhbmRsZURyYWdEcm9wKGNvbnRl
eHQsIEludFBvaW50KHgsIHkpKSk7Ci0gICAgaWYgKCFkcmFnRGF0YSkKKyAgICBEYXRhT2JqZWN0
R3RrKiBkYXRhT2JqZWN0ID0gd2ViVmlldy0+cHJpdi0+ZHJhZ0FuZERyb3BIZWxwZXIuaGFuZGxl
RHJhZ0Ryb3AoY29udGV4dCk7CisgICAgaWYgKCFkYXRhT2JqZWN0KQogICAgICAgICByZXR1cm4g
RkFMU0U7CiAKLSAgICBjb3JlKHdlYlZpZXcpLT5kcmFnQ29udHJvbGxlcigpLT5wZXJmb3JtRHJh
ZyhkcmFnRGF0YS5nZXQoKSk7CisgICAgSW50UG9pbnQgcG9zaXRpb24oeCwgeSk7CisgICAgRHJh
Z0RhdGEgZHJhZ0RhdGEoZGF0YU9iamVjdCwgcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRv
U2NyZWVuUG9pbnQod2lkZ2V0LCBwb3NpdGlvbiksIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRp
b24oZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSkpOworICAgIGNvcmUod2Vi
VmlldyktPmRyYWdDb250cm9sbGVyKCktPnBlcmZvcm1EcmFnKCZkcmFnRGF0YSk7CiAgICAgZ3Rr
X2RyYWdfZmluaXNoKGNvbnRleHQsIFRSVUUsIEZBTFNFLCB0aW1lKTsKICAgICByZXR1cm4gVFJV
RTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCAzZGYzNDI4Li44YzEwNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTItMTItMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdIEF2b2lkIHVubmVjZXNzYXJ5IGhlYXAgYWxsb2NhdGlv
bnMgZHVyaW5nIGRyYWcgYW5kIGRyb3Agb3BlcmF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5MzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0RhdGFSZWNlaXZlZCk6
IENyZWF0ZSBEcmFnRGF0YSBmb3IgdGhlIGdpdmVuCisgICAgICAgIERhdGFPYmplY3RHdGsgaW4g
dGhlIHN0YWNrLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEcmFnTW90aW9uKTogRGl0dG8u
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURyYWdEcm9wKTogRGl0dG8uCisKIDIwMTItMTIt
MDMgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAK
ICAgICAgICAgQ1NTIERldmljZSBBZGFwdGF0aW9uOiB3aW5kb3cuaW5uZXJXaWR0aCByZXR1cm5z
IHdyb25nIHZhbHVlIGlmIENTUyB2aWV3cG9ydCBkZXNjcmlwdG9ycyBhcmUgYXBwbGllZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwCmluZGV4IGM0NmRlYjIuLjFlYzBhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTcyMCwxMiAr
NzIwLDE0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0VuZChHdGtXaWRnZXQq
IHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQpCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZURyYWdEYXRhUmVjZWl2ZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0
KiBjb250ZXh0LCBnaW50IHgsIGdpbnQgeSwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0
YSwgZ3VpbnQgaW5mbywgZ3VpbnQgdGltZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwotICAgIE93blB0cjxEcmFn
RGF0YT4gZHJhZ0RhdGEod2ViVmlld0Jhc2UtPnByaXYtPmRyYWdBbmREcm9wSGVscGVyLmhhbmRs
ZURyYWdEYXRhUmVjZWl2ZWQoY29udGV4dCwgc2VsZWN0aW9uRGF0YSwgaW5mbykpOwotICAgIGlm
ICghZHJhZ0RhdGEpCisgICAgSW50UG9pbnQgcG9zaXRpb247CisgICAgRGF0YU9iamVjdEd0ayog
ZGF0YU9iamVjdCA9IHdlYlZpZXdCYXNlLT5wcml2LT5kcmFnQW5kRHJvcEhlbHBlci5oYW5kbGVE
cmFnRGF0YVJlY2VpdmVkKGNvbnRleHQsIHNlbGVjdGlvbkRhdGEsIGluZm8sIHBvc2l0aW9uKTsK
KyAgICBpZiAoIWRhdGFPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAorICAgIERyYWdEYXRhIGRy
YWdEYXRhKGRhdGFPYmplY3QsIHBvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBv
aW50KHdpZGdldCwgcG9zaXRpb24pLCBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGdka19k
cmFnX2NvbnRleHRfZ2V0X2FjdGlvbnMoY29udGV4dCkpKTsKICAgICB3ZWJWaWV3QmFzZS0+cHJp
di0+cGFnZVByb3h5LT5yZXNldERyYWdPcGVyYXRpb24oKTsKLSAgICB3ZWJWaWV3QmFzZS0+cHJp
di0+cGFnZVByb3h5LT5kcmFnRW50ZXJlZChkcmFnRGF0YS5nZXQoKSk7CisgICAgd2ViVmlld0Jh
c2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhZ0VudGVyZWQoJmRyYWdEYXRhKTsKICAgICBEcmFnT3Bl
cmF0aW9uIG9wZXJhdGlvbiA9IHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmRyYWdTZXNz
aW9uKCkub3BlcmF0aW9uOwogICAgIGdka19kcmFnX3N0YXR1cyhjb250ZXh0LCBkcmFnT3BlcmF0
aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKG9wZXJhdGlvbiksIHRpbWUpOwogfQpAQCAtNzYxLDEx
ICs3NjMsMTMgQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0V2ViVmlld0Jhc2VHZXRBY2Nlc3Np
YmxlKEd0a1dpZGdldCogd2lkZ2V0KQogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNl
RHJhZ01vdGlvbihHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIGdp
bnQgeCwgZ2ludCB5LCBndWludCB0aW1lKQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJW
aWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7Ci0gICAgT3duUHRyPERyYWdE
YXRhPiBkcmFnRGF0YSh3ZWJWaWV3QmFzZS0+cHJpdi0+ZHJhZ0FuZERyb3BIZWxwZXIuaGFuZGxl
RHJhZ01vdGlvbihjb250ZXh0LCBJbnRQb2ludCh4LCB5KSwgdGltZSkpOwotICAgIGlmICghZHJh
Z0RhdGEpCisgICAgSW50UG9pbnQgcG9zaXRpb24oeCwgeSk7CisgICAgRGF0YU9iamVjdEd0ayog
ZGF0YU9iamVjdCA9IHdlYlZpZXdCYXNlLT5wcml2LT5kcmFnQW5kRHJvcEhlbHBlci5oYW5kbGVE
cmFnTW90aW9uKGNvbnRleHQsIHBvc2l0aW9uLCB0aW1lKTsKKyAgICBpZiAoIWRhdGFPYmplY3Qp
CiAgICAgICAgIHJldHVybiBUUlVFOwogCi0gICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94
eS0+ZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEuZ2V0KCkpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKGRh
dGFPYmplY3QsIHBvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KHdpZGdl
dCwgcG9zaXRpb24pLCBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGdka19kcmFnX2NvbnRl
eHRfZ2V0X2FjdGlvbnMoY29udGV4dCkpKTsKKyAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVBy
b3h5LT5kcmFnVXBkYXRlZCgmZHJhZ0RhdGEpOwogICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9u
ID0gd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhZ1Nlc3Npb24oKS5vcGVyYXRpb247
CiAgICAgZ2RrX2RyYWdfc3RhdHVzKGNvbnRleHQsIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0Ry
YWdBY3Rpb24ob3BlcmF0aW9uKSwgdGltZSk7CiAgICAgcmV0dXJuIFRSVUU7CkBAIC03OTEsMTMg
Kzc5NSwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURyYWdMZWF2ZShHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleAogc3RhdGljIGdib29sZWFuIHdlYmtp
dFdlYlZpZXdCYXNlRHJhZ0Ryb3AoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0KiBj
b250ZXh0LCBnaW50IHgsIGdpbnQgeSwgZ3VpbnQgdGltZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwotICAgIE93
blB0cjxEcmFnRGF0YT4gZHJhZ0RhdGEod2ViVmlld0Jhc2UtPnByaXYtPmRyYWdBbmREcm9wSGVs
cGVyLmhhbmRsZURyYWdEcm9wKGNvbnRleHQsIEludFBvaW50KHgsIHkpKSk7Ci0gICAgaWYgKCFk
cmFnRGF0YSkKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gd2ViVmlld0Jhc2UtPnBy
aXYtPmRyYWdBbmREcm9wSGVscGVyLmhhbmRsZURyYWdEcm9wKGNvbnRleHQpOworICAgIGlmICgh
ZGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCisgICAgSW50UG9pbnQgcG9zaXRp
b24oeCwgeSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZGF0YU9iamVjdCwgcG9zaXRpb24sIGNv
bnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQod2lkZ2V0LCBwb3NpdGlvbiksIGdka0RyYWdB
Y3Rpb25Ub0RyYWdPcGVyYXRpb24oZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0
KSkpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZDsKLSAgICB3ZWJW
aWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5wZXJmb3JtRHJhZyhkcmFnRGF0YS5nZXQoKSwgU3Ry
aW5nKCksIGhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CisgICAgd2ViVmlld0Jh
c2UtPnByaXYtPnBhZ2VQcm94eS0+cGVyZm9ybURyYWcoJmRyYWdEYXRhLCBTdHJpbmcoKSwgaGFu
ZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBsb2FkKTsKICAgICBndGtfZHJhZ19maW5pc2goY29u
dGV4dCwgVFJVRSwgRkFMU0UsIHRpbWUpOwogICAgIHJldHVybiBUUlVFOwogfQo=
</data>
<flag name="review"
          id="193320"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>