<?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>192613</bug_id>
          
          <creation_ts>2018-12-11 21:36:18 -0800</creation_ts>
          <short_desc>Make HTMLConverter take two Positions in preparation to make it work with shadow DOM</short_desc>
          <delta_ts>2018-12-12 20:05:26 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>192640</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1487117</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-12-11 21:36:18 -0800</bug_when>
    <thetext>In order to make HTMLConverter compatible with shadow DOM, we need to make it take two Positions instead of a Range
so that it can represent a selection which spans across shadow boundaries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487118</commentid>
    <comment_count>1</comment_count>
      <attachid>357099</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-12-11 21:42:50 -0800</bug_when>
    <thetext>Created attachment 357099
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487234</commentid>
    <comment_count>2</comment_count>
      <attachid>357099</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-12-12 09:19:23 -0800</bug_when>
    <thetext>Comment on attachment 357099
Cleanup

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

Wish we had a structure with two Positions instead of two separate ones.

If we take two positions, do we need to take precautions against traversing the entire document if end is not after start? Range takes care of that, but two positions don’t.

&gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:2459
&gt; +    HTMLConverter converter(range.startPosition(), range.endPosition());

I would have used { } syntax. And maybe not named the local variable.

&gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:2467
&gt; +    HTMLConverter converter(range-&gt;startPosition(), range-&gt;endPosition());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487309</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-12-12 13:11:04 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 357099 [details]
&gt; Cleanup
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357099&amp;action=review
&gt; 
&gt; Wish we had a structure with two Positions instead of two separate ones.
&gt; 
&gt; If we take two positions, do we need to take precautions against traversing
&gt; the entire document if end is not after start? Range takes care of that, but
&gt; two positions don’t.

That is a good point. We have an early return for that in serializePreservingVisualAppearanceInternal too:

if (!comparePositions(start, end))
    return emptyString();

We should probably update it to:

if (comparePositions(start, end) &gt;= 0)
    return emptyString();

I&apos;m gonna add the following early return to HTMLConverter::convert():
if (comparePositions(m_start, m_end) &gt; 0)
    return nil;

&gt; 
&gt; &gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:2459
&gt; &gt; +    HTMLConverter converter(range.startPosition(), range.endPosition());
&gt; 
&gt; I would have used { } syntax. And maybe not named the local variable.
&gt; 
&gt; &gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:2467
&gt; &gt; +    HTMLConverter converter(range-&gt;startPosition(), range-&gt;endPosition());
&gt; 
&gt; Ditto.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487313</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-12-12 13:20:12 -0800</bug_when>
    <thetext>Committed r239127: &lt;https://trac.webkit.org/changeset/239127&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487314</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-12 13:21:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/46673257&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357099</attachid>
            <date>2018-12-11 21:42:50 -0800</date>
            <delta_ts>2018-12-12 09:19:23 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-192613-20181211214250.patch</filename>
            <type>text/plain</type>
            <size>9281</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzOTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE4LTEyLTExICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgSFRNTENvbnZlcnRlciB0
YWtlIHR3byBQb3NpdGlvbnMgaW4gcHJlcGFyYXRpb24gdG8gbWFrZSBpdCB3b3JrIHdpdGggc2hh
ZG93IERPTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyNjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBtYWtlcyBIVE1MQ29udmVydGVyIHN0b3JlIHR3byBQb3NpdGlvbidzIGluc3Rl
YWQgb2YgYSBSYW5nZSBzbyB0aGF0IEhUTUxDb252ZXJ0ZXIgY2FuIHdvcmsgd2l0aAorICAgICAg
ICBhIHNlbGVjdGlvbiB3aGljaCBzcGFucyBhY3Jvc3Mgc2hhZG93IGJvdW5kYXJpZXMgaW4gdGhl
IGZ1dHVyZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgc2hvdWxkIGJlIG5v
IG9ic2VydmFibGUgYmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCk6IFVzZXMgdGhlIG5ld2x5IGludHJvZHVjZWQgd3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlU2VsZWN0aW9uKTog
RGl0dG8uCisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLmg6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRl
cjo6SFRNTENvbnZlcnRlcik6IE5vdyB0YWtlcyB0d28gUG9zaXRpb24ncy4KKyAgICAgICAgKEhU
TUxDb252ZXJ0ZXI6OmNvbnZlcnQpOiBVcGRhdGVkIHRvIHdvcmsgd2l0aCBQb3NpdGlvbidzLgor
ICAgICAgICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KTogRGl0dG8uCisgICAgICAgIChI
VE1MQ29udmVydGVyOjpfdHJhdmVyc2VOb2RlKTogRGl0dG8uCisgICAgICAgIChIVE1MQ29udmVy
dGVyOjpfdHJhdmVyc2VGb290ZXJOb2RlKTogRGl0dG8uCisgICAgICAgIChIVE1MQ29udmVydGVy
Q2FjaGVzOjpjYWNoZUFuY2VzdG9yc09mU3RhcnRUb0JlQ29udmVydGVkKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjphdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjphdHRyaWJ1dGVkU3RyaW5nRnJvbVNlbGVjdGlvbik6IEFkZGVkLiBGb3Igbm93
LCB3ZSBmaXJzdCBjcmVhdGUgYSBSYW5nZSB2aWEgdG9Ob3JtYWxpemVkUmFuZ2UKKyAgICAgICAg
aW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGV4YWN0IGJlaGF2aW9yLgorCiAyMDE4LTEyLTEwICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIGNvbm5lY3RlZENhbGxi
YWNrIGlzIGludm9rZWQgZHVyaW5nIHRoZSByZW1vdmFsIG9mIHRoZSBlbGVtZW50IGluc2lkZSBh
bm90aGVyIGVsZW1lbnQncyBjb25uZWN0ZWRDYWxsYmFjawpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCShyZXZpc2lvbiAyMzkwNjMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDMsNyArMTAzLDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFG
bwogCiB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYg
cGFzdGVib2FyZCkKIHsKLSAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcg
PSBhdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKCpzZWxlY3RlZFJhbmdlKCkpOworICAgIE5TQXR0
cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IGF0dHJpYnV0ZWRTdHJpbmdGcm9tU2Vs
ZWN0aW9uKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpOwogCiAgICAgUGFzdGVib2Fy
ZFdlYkNvbnRlbnQgY29udGVudDsKICAgICBjb250ZW50LmNvbnRlbnRPcmlnaW4gPSBtX2ZyYW1l
LmRvY3VtZW50KCktPm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CkBAIC0xMjEsNyAr
MTIxLDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKAogCiB2b2lk
IEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRX
cml0ZXJEYXRhKQogewotICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9
IGF0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoKnNlbGVjdGVkUmFuZ2UoKSk7CisgICAgTlNBdHRy
aWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gYXR0cmlidXRlZFN0cmluZ0Zyb21TZWxl
Y3Rpb24obV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7CiAKICAgICBQYXN0ZWJvYXJk
V3JpdGVyRGF0YTo6V2ViQ29udGVudCB3ZWJDb250ZW50OwogICAgIHdlYkNvbnRlbnQuY29udGVu
dE9yaWdpbiA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+b3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9h
cmQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5oCShyZXZpc2lvbiAyMzkwNjMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsMTEgQEAgT0JKQ19DTEFT
UyBOU0F0dHJpYnV0ZWRTdHJpbmc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBS
YW5nZTsKK2NsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKIGVudW0gY2xhc3MgSW5jbHVkZUltYWdl
c0luQXR0cmlidXRlZFN0cmluZyB7IFllcywgTm8gfTsKLSAgICAKKworTlNBdHRyaWJ1dGVkU3Ry
aW5nICphdHRyaWJ1dGVkU3RyaW5nRnJvbVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
Jik7CiBXRUJDT1JFX0VYUE9SVCBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmdG
cm9tUmFuZ2UoUmFuZ2UmKTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFdFQkNPUkVfRVhQ
T1JUIE5TQXR0cmlidXRlZFN0cmluZyAqZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2Uo
UmFuZ2UmLCBJbmNsdWRlSW1hZ2VzSW5BdHRyaWJ1dGVkU3RyaW5nID0gSW5jbHVkZUltYWdlc0lu
QXR0cmlidXRlZFN0cmluZzo6WWVzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0JKHJldmlzaW9uIDIzOTA2MykKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNjEs
NiArNjEsNyBAQAogI2ltcG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJTdHlsZWRF
bGVtZW50LmgiCiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCIKKyNpbXBvcnQgIlZpc2libGVTZWxl
Y3Rpb24uaCIKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9OU0F0dHJpYnV0ZWRTdHJpbmdTUEkuaD4KICNpbXBvcnQgPHd0Zi9BU0NJSUNUeXBlLmg+CkBA
IC0zMzYsNyArMzM3LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRT
dHlsZVByb3BlcnR5Rm9yRWxlbWVudChFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCk7CiAgICAgUmVm
UHRyPENTU1ZhbHVlPiBpbmxpbmVTdHlsZVByb3BlcnR5Rm9yRWxlbWVudChFbGVtZW50JiwgQ1NT
UHJvcGVydHlJRCk7CiAKLSAgICBOb2RlKiBjYWNoZUFuY2VzdG9yc09mU3RhcnRUb0JlQ29udmVy
dGVkKGNvbnN0IFJhbmdlJik7CisgICAgTm9kZSogY2FjaGVBbmNlc3RvcnNPZlN0YXJ0VG9CZUNv
bnZlcnRlZChjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CiAgICAgYm9vbCBpc0Fu
Y2VzdG9yc09mU3RhcnRUb0JlQ29udmVydGVkKE5vZGUmIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG1f
YW5jZXN0b3JzVW5kZXJDb21tb25BbmNlc3Rvci5jb250YWlucygmbm9kZSk7IH0KIAogcHJpdmF0
ZToKQEAgLTM1OSwxMyArMzYwLDE0IEBAICsgKHZvaWQpZG9jdW1lbnQ6KE5TT2JqZWN0ICoqKW91
dERvY3VtZW4KIAogY2xhc3MgSFRNTENvbnZlcnRlciB7CiBwdWJsaWM6Ci0gICAgSFRNTENvbnZl
cnRlcihSYW5nZSYpOworICAgIEhUTUxDb252ZXJ0ZXIoY29uc3QgUG9zaXRpb24mLCBjb25zdCBQ
b3NpdGlvbiYpOwogICAgIH5IVE1MQ29udmVydGVyKCk7CiAgICAgCiAgICAgTlNBdHRyaWJ1dGVk
U3RyaW5nKiBjb252ZXJ0KCk7CiAgICAgCiBwcml2YXRlOgotICAgIFJlZjxSYW5nZT4gbV9yYW5n
ZTsKKyAgICBQb3NpdGlvbiBtX3N0YXJ0OworICAgIFBvc2l0aW9uIG1fZW5kOwogICAgIERvY3Vt
ZW50TG9hZGVyKiBtX2RhdGFTb3VyY2U7CiAgICAgCiAgICAgSGFzaE1hcDxSZWZQdHI8RWxlbWVu
dD4sIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+PiBtX2F0dHJpYnV0ZXNGb3JFbGVtZW50czsKQEAg
LTQzNCw4ICs0MzYsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgX2FkanVzdFRyYWlsaW5nTmV3bGlu
ZSgpOwogfTsKIAotSFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcihSYW5nZSYgcmFuZ2UpCi0g
ICAgOiBtX3JhbmdlKHJhbmdlKQorSFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcihjb25zdCBQ
b3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCisgICAgOiBtX3N0YXJ0KHN0YXJ0
KQorICAgICwgbV9lbmQoZW5kKQogICAgICwgbV9kYXRhU291cmNlKG51bGxwdHIpCiB7CiAgICAg
X2F0dHJTdHIgPSBbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdOwpAQCAt
NDgxLDcgKzQ4NCw3IEBAIEhUTUxDb252ZXJ0ZXI6On5IVE1MQ29udmVydGVyKCkKIAogTlNBdHRy
aWJ1dGVkU3RyaW5nICpIVE1MQ29udmVydGVyOjpjb252ZXJ0KCkKIHsKLSAgICBOb2RlKiBjb21t
b25BbmNlc3RvckNvbnRhaW5lciA9IF9jYWNoZXMtPmNhY2hlQW5jZXN0b3JzT2ZTdGFydFRvQmVD
b252ZXJ0ZWQobV9yYW5nZSk7CisgICAgTm9kZSogY29tbW9uQW5jZXN0b3JDb250YWluZXIgPSBf
Y2FjaGVzLT5jYWNoZUFuY2VzdG9yc09mU3RhcnRUb0JlQ29udmVydGVkKG1fc3RhcnQsIG1fZW5k
KTsKICAgICBBU1NFUlQoY29tbW9uQW5jZXN0b3JDb250YWluZXIpOwogCiAgICAgbV9kYXRhU291
cmNlID0gY29tbW9uQW5jZXN0b3JDb250YWluZXItPmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKTsKQEAgLTIxOTcsMTMgKzIyMDAsMTMgQEAgdm9pZCBIVE1MQ29u
dmVydGVyOjpfcHJvY2Vzc1RleHQoQ2hhcmFjdAogICAgIFN0cmluZyBvcmlnaW5hbFN0cmluZyA9
IGNoYXJhY3RlckRhdGEuZGF0YSgpOwogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMDsKICAg
ICB1bnNpZ25lZCBlbmRPZmZzZXQgPSBvcmlnaW5hbFN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAo
JmNoYXJhY3RlckRhdGEgPT0gJm1fcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkpIHsKLSAgICAgICAg
c3RhcnRPZmZzZXQgPSBtX3JhbmdlLT5zdGFydE9mZnNldCgpOworICAgIGlmICgmY2hhcmFjdGVy
RGF0YSA9PSBtX3N0YXJ0LmNvbnRhaW5lck5vZGUoKSkgeworICAgICAgICBzdGFydE9mZnNldCA9
IG1fc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CiAgICAgICAgIF9kb21SYW5nZVN0YXJ0
SW5kZXggPSBbX2F0dHJTdHIgbGVuZ3RoXTsKICAgICAgICAgX2ZsYWdzLnJlYWNoZWRTdGFydCA9
IFlFUzsKICAgICB9Ci0gICAgaWYgKCZjaGFyYWN0ZXJEYXRhID09ICZtX3JhbmdlLT5lbmRDb250
YWluZXIoKSkgewotICAgICAgICBlbmRPZmZzZXQgPSBtX3JhbmdlLT5lbmRPZmZzZXQoKTsKKyAg
ICBpZiAoJmNoYXJhY3RlckRhdGEgPT0gbV9lbmQuY29udGFpbmVyTm9kZSgpKSB7CisgICAgICAg
IGVuZE9mZnNldCA9IG1fZW5kLm9mZnNldEluQ29udGFpbmVyTm9kZSgpOwogICAgICAgICBfZmxh
Z3MucmVhY2hlZEVuZCA9IFlFUzsKICAgICB9CiAgICAgaWYgKChzdGFydE9mZnNldCA+IDAgfHwg
ZW5kT2Zmc2V0IDwgb3JpZ2luYWxTdHJpbmcubGVuZ3RoKCkpICYmIGVuZE9mZnNldCA+PSBzdGFy
dE9mZnNldCkKQEAgLTIyNzcsMTMgKzIyODAsMTMgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfdHJh
dmVyc2VOb2RlKE5vZGUmIAogICAgIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYOwogICAg
IGJvb2wgaXNTdGFydCA9IGZhbHNlOwogICAgIGJvb2wgaXNFbmQgPSBmYWxzZTsKLSAgICBpZiAo
Jm5vZGUgPT0gJm1fcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkpIHsKLSAgICAgICAgc3RhcnRPZmZz
ZXQgPSBtX3JhbmdlLT5zdGFydE9mZnNldCgpOworICAgIGlmICgmbm9kZSA9PSBtX3N0YXJ0LmNv
bnRhaW5lck5vZGUoKSkgeworICAgICAgICBzdGFydE9mZnNldCA9IG1fc3RhcnQub2Zmc2V0SW5D
b250YWluZXJOb2RlKCk7CiAgICAgICAgIGlzU3RhcnQgPSB0cnVlOwogICAgICAgICBfZmxhZ3Mu
cmVhY2hlZFN0YXJ0ID0gWUVTOwogICAgIH0KLSAgICBpZiAoJm5vZGUgPT0gJm1fcmFuZ2UtPmVu
ZENvbnRhaW5lcigpKSB7Ci0gICAgICAgIGVuZE9mZnNldCA9IG1fcmFuZ2UtPmVuZE9mZnNldCgp
OworICAgIGlmICgmbm9kZSA9PSBtX2VuZC5jb250YWluZXJOb2RlKCkpIHsKKyAgICAgICAgZW5k
T2Zmc2V0ID0gbV9lbmQub2Zmc2V0SW5Db250YWluZXJOb2RlKCk7CiAgICAgICAgIGlzRW5kID0g
dHJ1ZTsKICAgICB9CiAgICAgCkBAIC0yMzM4LDEzICsyMzQxLDEzIEBAIHZvaWQgSFRNTENvbnZl
cnRlcjo6X3RyYXZlcnNlRm9vdGVyTm9kZSgKICAgICB1bnNpZ25lZCBlbmRPZmZzZXQgPSBVSU5U
X01BWDsKICAgICBib29sIGlzU3RhcnQgPSBmYWxzZTsKICAgICBib29sIGlzRW5kID0gZmFsc2U7
Ci0gICAgaWYgKCZlbGVtZW50ID09ICZtX3JhbmdlLT5zdGFydENvbnRhaW5lcigpKSB7Ci0gICAg
ICAgIHN0YXJ0T2Zmc2V0ID0gbV9yYW5nZS0+c3RhcnRPZmZzZXQoKTsKKyAgICBpZiAoJmVsZW1l
bnQgPT0gbV9zdGFydC5jb250YWluZXJOb2RlKCkpIHsKKyAgICAgICAgc3RhcnRPZmZzZXQgPSBt
X3N0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpOwogICAgICAgICBpc1N0YXJ0ID0gdHJ1ZTsK
ICAgICAgICAgX2ZsYWdzLnJlYWNoZWRTdGFydCA9IFlFUzsKICAgICB9Ci0gICAgaWYgKCZlbGVt
ZW50ID09ICZtX3JhbmdlLT5lbmRDb250YWluZXIoKSkgewotICAgICAgICBlbmRPZmZzZXQgPSBt
X3JhbmdlLT5lbmRPZmZzZXQoKTsKKyAgICBpZiAoJmVsZW1lbnQgPT0gbV9lbmQuY29udGFpbmVy
Tm9kZSgpKSB7CisgICAgICAgIGVuZE9mZnNldCA9IG1fZW5kLm9mZnNldEluQ29udGFpbmVyTm9k
ZSgpOwogICAgICAgICBpc0VuZCA9IHRydWU7CiAgICAgfQogICAgIApAQCAtMjM3OSwxMCArMjM4
MiwxMCBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9hZGp1c3RUcmFpbGluZ05ld2xpCiAgICAgICAg
IFtfYXR0clN0ciByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6TlNNYWtlUmFuZ2UodGV4dExlbmd0
aCwgMCkgd2l0aFN0cmluZzpAIlxuIl07CiB9CiAKLU5vZGUqIEhUTUxDb252ZXJ0ZXJDYWNoZXM6
OmNhY2hlQW5jZXN0b3JzT2ZTdGFydFRvQmVDb252ZXJ0ZWQoY29uc3QgUmFuZ2UmIHJhbmdlKQor
Tm9kZSogSFRNTENvbnZlcnRlckNhY2hlczo6Y2FjaGVBbmNlc3RvcnNPZlN0YXJ0VG9CZUNvbnZl
cnRlZChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCiB7Ci0gICAg
Tm9kZSogY29tbW9uQW5jZXN0b3IgPSByYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcigpOwot
ICAgIE5vZGUqIGFuY2VzdG9yID0gJnJhbmdlLnN0YXJ0Q29udGFpbmVyKCk7CisgICAgTm9kZSog
Y29tbW9uQW5jZXN0b3IgPSBSYW5nZTo6Y29tbW9uQW5jZXN0b3JDb250YWluZXIoc3RhcnQuY29u
dGFpbmVyTm9kZSgpLCBlbmQuY29udGFpbmVyTm9kZSgpKTsKKyAgICBOb2RlKiBhbmNlc3RvciA9
IHN0YXJ0LmNvbnRhaW5lck5vZGUoKTsKIAogICAgIHdoaWxlIChhbmNlc3RvcikgewogICAgICAg
ICBtX2FuY2VzdG9yc1VuZGVyQ29tbW9uQW5jZXN0b3IuYWRkKGFuY2VzdG9yKTsKQEAgLTI0NTMs
NyArMjQ1NiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGlzIGZ1bmN0aW9uIHN1cHBv
cnRzIG1vcmUgSFRNTCBmZWF0dXJlcyB0aGFuIHRoZSBlZGl0aW5nIHZhcmlhbnQgYmVsb3csIHN1
Y2ggYXMgdGFibGVzLgogTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nRnJvbVJh
bmdlKFJhbmdlJiByYW5nZSkKIHsKLSAgICBIVE1MQ29udmVydGVyIGNvbnZlcnRlcihyYW5nZSk7
CisgICAgSFRNTENvbnZlcnRlciBjb252ZXJ0ZXIocmFuZ2Uuc3RhcnRQb3NpdGlvbigpLCByYW5n
ZS5lbmRQb3NpdGlvbigpKTsKKyAgICByZXR1cm4gY29udmVydGVyLmNvbnZlcnQoKTsKK30KKwor
TlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nRnJvbVNlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgYXV0byByYW5nZSA9IHNlbGVjdGlv
bi50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgIEFTU0VSVChyYW5nZSk7CisgICAgSFRNTENvbnZl
cnRlciBjb252ZXJ0ZXIocmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcmFuZ2UtPmVuZFBvc2l0aW9u
KCkpOwogICAgIHJldHVybiBjb252ZXJ0ZXIuY29udmVydCgpOwogfQogICAgIAo=
</data>
<flag name="review"
          id="374016"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>