<?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>208692</bug_id>
          
          <creation_ts>2020-03-05 20:56:36 -0800</creation_ts>
          <short_desc>TextManipulationController should preserve images</short_desc>
          <delta_ts>2020-03-06 17:14:25 -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>Images</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>koivisto</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1626485</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-05 20:56:36 -0800</bug_when>
    <thetext>TextManipulationController shouldn&apos;t rip out all the images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626486</commentid>
    <comment_count>1</comment_count>
      <attachid>392669</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-05 20:57:12 -0800</bug_when>
    <thetext>Created attachment 392669
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626573</commentid>
    <comment_count>2</comment_count>
      <attachid>392694</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 02:15:48 -0800</bug_when>
    <thetext>Created attachment 392694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626574</commentid>
    <comment_count>3</comment_count>
      <attachid>392695</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 02:22:14 -0800</bug_when>
    <thetext>Created attachment 392695
Added more change log descriptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626575</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 02:22:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/58810183&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626680</commentid>
    <comment_count>5</comment_count>
      <attachid>392695</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-06 08:41:47 -0800</bug_when>
    <thetext>Comment on attachment 392695
Added more change log descriptions

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        including ones that do not generate text in Textiterator. This also allows more code sharing between

Nit - Textiterator =&gt; TextIterator

&gt; Source/WebCore/ChangeLog:18
&gt; +        For now, we special case nodes with RenderReplace like img element and the root SVG element.

Nit - RenderReplace =&gt; RenderReplaced</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626936</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 15:55:40 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #5)
&gt; Comment on attachment 392695 [details]
&gt; Added more change log descriptions
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392695&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        including ones that do not generate text in Textiterator. This also allows more code sharing between
&gt; 
&gt; Nit - Textiterator =&gt; TextIterator
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:18
&gt; &gt; +        For now, we special case nodes with RenderReplace like img element and the root SVG element.
&gt; 
&gt; Nit - RenderReplace =&gt; RenderReplaced

Fixed these typos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627000</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-06 17:14:25 -0800</bug_when>
    <thetext>Committed r258037: &lt;https://trac.webkit.org/changeset/258037&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392669</attachid>
            <date>2020-03-05 20:57:12 -0800</date>
            <delta_ts>2020-03-06 02:15:47 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>17260</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggMTQwYTQzODY5MzkuLjJkMTJjZGJlNGYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApAQCAt
MTM5LDU2ICsxMzksMTQyIEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0
T2JzZXJ2aW5nUGFyYWdyYXBocyhNYW5pcHVsYXRpb25JdGVtQ2FsbGJhCiAgICAgZmx1c2hQZW5k
aW5nSXRlbXNGb3JDYWxsYmFjaygpOwogfQogCitjbGFzcyBQYXJhZ3JhcGhDb250ZW50SXRlcmF0
b3IgeworcHVibGljOgorICAgIFBhcmFncmFwaENvbnRlbnRJdGVyYXRvcihjb25zdCBQb3NpdGlv
biYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCisgICAgICAgIDogbV9pdGVyYXRvcihzdGFy
dCwgZW5kKQorICAgICAgICAsIG1faXRlcmF0b3JOb2RlKG1faXRlcmF0b3IuYXRFbmQoKSA/IG51
bGxwdHIgOiBtX2l0ZXJhdG9yLnJhbmdlKCktPmZpcnN0Tm9kZSgpKQorICAgICAgICAsIG1fY3Vy
cmVudE5vZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudChzdGFydC5maXJzdE5vZGUoKSkKKyAg
ICAgICAgLCBtX3Bhc3RFbmROb2RlKGVuZC5maXJzdE5vZGUoKSkKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBhZHZhbmNlKCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgYSBub2RlIGNh
bGxiYWNrIHRvIFRleHRJdGVyYXRvciBpbnN0ZWFkIG9mIHRyYXZlcnNpbmcgdGhlIG5vZGUgdHJl
ZSB0d2ljZSBsaWtlIHRoaXMuCisgICAgICAgIGlmIChtX2N1cnJlbnROb2RlRm9yRmluZGluZ0lu
dmlzaWJsZUNvbnRlbnQgIT0gbV9pdGVyYXRvck5vZGUgJiYgbV9jdXJyZW50Tm9kZUZvckZpbmRp
bmdJbnZpc2libGVDb250ZW50ICE9IG1fcGFzdEVuZE5vZGUpIHsKKyAgICAgICAgICAgIG1vdmVD
dXJyZW50Tm9kZUZvcndhcmQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChtX2l0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgYXV0byBwcmV2aW91c0l0ZXJhdG9yTm9kZSA9IG1faXRlcmF0b3JOb2RlOworCisgICAg
ICAgIG1faXRlcmF0b3IuYWR2YW5jZSgpOworICAgICAgICBtX2l0ZXJhdG9yTm9kZSA9IG1faXRl
cmF0b3IuYXRFbmQoKSA/IG51bGxwdHIgOiBtX2l0ZXJhdG9yLnJhbmdlKCktPmZpcnN0Tm9kZSgp
OworICAgICAgICBpZiAocHJldmlvdXNJdGVyYXRvck5vZGUgIT0gbV9pdGVyYXRvck5vZGUpCisg
ICAgICAgICAgICBtb3ZlQ3VycmVudE5vZGVGb3J3YXJkKCk7CisgICAgfQorCisgICAgc3RydWN0
IEN1cnJlbnRDb250ZW50IHsKKyAgICAgICAgUmVmUHRyPE5vZGU+IG5vZGU7CisgICAgICAgIFN0
cmluZ1ZpZXcgdGV4dDsKKyAgICAgICAgYm9vbCBpc1RleHRDb250ZW50IHsgZmFsc2UgfTsKKyAg
ICAgICAgYm9vbCBpc1JlcGxhY2VkQ29udGVudCB7IGZhbHNlIH07CisgICAgfTsKKworICAgIEN1
cnJlbnRDb250ZW50IGN1cnJlbnRDb250ZW50KCkKKyAgICB7CisgICAgICAgIEN1cnJlbnRDb250
ZW50IGNvbnRlbnQ7CisgICAgICAgIGlmIChtX2N1cnJlbnROb2RlRm9yRmluZGluZ0ludmlzaWJs
ZUNvbnRlbnQgJiYgbV9jdXJyZW50Tm9kZUZvckZpbmRpbmdJbnZpc2libGVDb250ZW50ICE9IG1f
aXRlcmF0b3JOb2RlKQorICAgICAgICAgICAgY29udGVudCA9IHsgbV9jdXJyZW50Tm9kZUZvckZp
bmRpbmdJbnZpc2libGVDb250ZW50LmNvcHlSZWYoKSwgU3RyaW5nVmlldyB7IH0gfTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY29udGVudCA9IHsgbV9pdGVyYXRvci5ub2RlKCksIG1faXRl
cmF0b3IudGV4dCgpLCB0cnVlIH07CisgICAgICAgIGlmIChjb250ZW50Lm5vZGUpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGNvbnRlbnQubm9kZS0+cmVuZGVyZXIoKSkgewor
ICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJSZXBsYWNlZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRlbnQuaXNUZXh0Q29udGVudCA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICBjb250ZW50LmlzUmVwbGFjZWRDb250ZW50ID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbnRlbnQ7
CisgICAgfQorCisgICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9pdGVyYXRvci5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCk7CisgICAgfQorCisgICAg
UG9zaXRpb24gZW5kUG9zaXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXRlcmF0b3Iu
cmFuZ2UoKS0+ZW5kUG9zaXRpb24oKTsKKyAgICB9CisKKyAgICBib29sIGF0RW5kKCkgY29uc3Qg
eyByZXR1cm4gbV9pdGVyYXRvci5hdEVuZCgpICYmIG1fY3VycmVudE5vZGVGb3JGaW5kaW5nSW52
aXNpYmxlQ29udGVudCA9PSBtX3Bhc3RFbmROb2RlOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBt
b3ZlQ3VycmVudE5vZGVGb3J3YXJkKCkKKyAgICB7CisgICAgICAgIG1fY3VycmVudE5vZGVGb3JG
aW5kaW5nSW52aXNpYmxlQ29udGVudCA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm1fY3VycmVudE5v
ZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudCk7CisgICAgICAgIGlmICghbV9jdXJyZW50Tm9k
ZUZvckZpbmRpbmdJbnZpc2libGVDb250ZW50KQorICAgICAgICAgICAgbV9jdXJyZW50Tm9kZUZv
ckZpbmRpbmdJbnZpc2libGVDb250ZW50ID0gbV9wYXN0RW5kTm9kZTsKKyAgICB9CisKKyAgICBU
ZXh0SXRlcmF0b3IgbV9pdGVyYXRvcjsKKyAgICBSZWZQdHI8Tm9kZT4gbV9pdGVyYXRvck5vZGU7
CisgICAgUmVmUHRyPE5vZGU+IG1fY3VycmVudE5vZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVu
dDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9wYXN0RW5kTm9kZTsKK307CisKIHZvaWQgVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKFZpc2libGVQb3NpdGlvbiYgc3Rh
cnQsIFZpc2libGVQb3NpdGlvbiYgZW5kKQogewogICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVm
UHRyKHN0YXJ0LmRlZXBFcXVpdmFsZW50KCkuZG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKGRvY3Vt
ZW50KTsKLSAgICBUZXh0SXRlcmF0b3IgaXRlcmF0b3IgeyBzdGFydC5kZWVwRXF1aXZhbGVudCgp
LCBlbmQuZGVlcEVxdWl2YWxlbnQoKSB9OworICAgIFBhcmFncmFwaENvbnRlbnRJdGVyYXRvciBp
dGVyYXRvciB7IHN0YXJ0LmRlZXBFcXVpdmFsZW50KCksIGVuZC5kZWVwRXF1aXZhbGVudCgpIH07
CiAgICAgaWYgKGRvY3VtZW50ICE9IHN0YXJ0LmRlZXBFcXVpdmFsZW50KCkuZG9jdW1lbnQoKSB8
fCBkb2N1bWVudCAhPSBlbmQuZGVlcEVxdWl2YWxlbnQoKS5kb2N1bWVudCgpKQogICAgICAgICBy
ZXR1cm47IC8vIFRleHRJdGVyYXRvcidzIGNvbnN0cnVjdG9yIG1heSBoYXZlIHVwZGF0ZWQgdGhl
IGxheW91dCBhbmQgZXhlY3V0ZWQgYXJiaXRyYXJ5IHNjcmlwdHMuCiAKICAgICBFeGNsdXNpb25S
dWxlTWF0Y2hlciBleGNsdXNpb25SdWxlTWF0Y2hlcihtX2V4Y2x1c2lvblJ1bGVzKTsKICAgICBW
ZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+IHRva2Vuc0luQ3VycmVudFBhcmFncmFwaDsKICAgICBQ
b3NpdGlvbiBzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9IHN0YXJ0LmRlZXBFcXVpdmFsZW50KCk7
Ci0gICAgd2hpbGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgIFN0cmluZ1ZpZXcgY3Vy
cmVudFRleHQgPSBpdGVyYXRvci50ZXh0KCk7Ci0KLSAgICAgICAgaWYgKHN0YXJ0T2ZDdXJyZW50
UGFyYWdyYXBoLmlzTnVsbCgpKQotICAgICAgICAgICAgc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGgg
PSBpdGVyYXRvci5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCk7Ci0KLSAgICAgICAgaWYgKGF1dG8q
IGN1cnJlbnROb2RlID0gaXRlcmF0b3Iubm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRy
PEVsZW1lbnQ+IGN1cnJlbnRFbGVtZW50QW5jZXN0b3IgPSBpczxFbGVtZW50PihjdXJyZW50Tm9k
ZSkgPyBkb3duY2FzdDxFbGVtZW50PihjdXJyZW50Tm9kZSkgOiBjdXJyZW50Tm9kZS0+cGFyZW50
T3JTaGFkb3dIb3N0RWxlbWVudCgpKSB7CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBp
dGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICAgICAgYXV0byBjb250ZW50ID0gaXRlcmF0b3IuY3Vy
cmVudENvbnRlbnQoKTsKKyAgICAgICAgaWYgKGNvbnRlbnQubm9kZSkgeworICAgICAgICAgICAg
aWYgKFJlZlB0cjxFbGVtZW50PiBjdXJyZW50RWxlbWVudEFuY2VzdG9yID0gaXM8RWxlbWVudD4o
KmNvbnRlbnQubm9kZSkgPyBkb3duY2FzdDxFbGVtZW50Pihjb250ZW50Lm5vZGUuZ2V0KCkpIDog
Y29udGVudC5ub2RlLT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoaXNJbk1hbmlwdWxhdGVkRWxlbWVudCgqY3VycmVudEVsZW1lbnRBbmNlc3Rvcikp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gV2UgY2FuIGV4aXQgZWFybHkgaGVyZSBi
ZWNhdXNlIHNjaGVkdWxlT2JzZXJ2YXJ0aW9uVXBkYXRlIGNhbGxzIHRoaXMgZnVuY3Rpb24gb24g
ZWFjaCBwYXJhZ3JhcGggc2VwYXJhdGVseS4KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIHN0
YXJ0T2ZDdXJyZW50UGFyYWdyYXBoID0gaXRlcmF0b3Iuc3RhcnRQb3NpdGlvbigpOwogICAgICAg
ICB9CiAKLSAgICAgICAgc2l6ZV90IGVuZE9mTGFzdE5ld0xpbmUgPSAwOwotICAgICAgICBzaXpl
X3Qgb2Zmc2V0T2ZOZXh0TmV3TGluZSA9IDA7Ci0gICAgICAgIHdoaWxlICgob2Zmc2V0T2ZOZXh0
TmV3TGluZSA9IGN1cnJlbnRUZXh0LmZpbmQoJ1xuJywgZW5kT2ZMYXN0TmV3TGluZSkpICE9IG5v
dEZvdW5kKSB7Ci0gICAgICAgICAgICBpZiAoZW5kT2ZMYXN0TmV3TGluZSA8IG9mZnNldE9mTmV4
dE5ld0xpbmUpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHN0cmluZ1VudGlsRW5kT2ZMaW5lID0g
Y3VycmVudFRleHQuc3Vic3RyaW5nKGVuZE9mTGFzdE5ld0xpbmUsIG9mZnNldE9mTmV4dE5ld0xp
bmUgLSBlbmRPZkxhc3ROZXdMaW5lKS50b1N0cmluZygpOwotICAgICAgICAgICAgICAgIHRva2Vu
c0luQ3VycmVudFBhcmFncmFwaC5hcHBlbmQoTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2VuSWRl
bnRpZmllci5nZW5lcmF0ZSgpLCBzdHJpbmdVbnRpbEVuZE9mTGluZSwgZXhjbHVzaW9uUnVsZU1h
dGNoZXIuaXNFeGNsdWRlZChpdGVyYXRvci5ub2RlKCkpIH0pOwotICAgICAgICAgICAgfQorICAg
ICAgICBpZiAoY29udGVudC5pc1JlcGxhY2VkQ29udGVudCkgeworICAgICAgICAgICAgdG9rZW5z
SW5DdXJyZW50UGFyYWdyYXBoLmFwcGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVu
dGlmaWVyLmdlbmVyYXRlKCksICJbXSIsIHRydWUgLyogaXNFeGNsdWRlZCAqLywgdHJ1ZSAvKiBy
ZXBsYWNlZCAqL30pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIWNvbnRlbnQuaXNUZXh0Q29udGVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgICAgICBhdXRvIGxhc3RSYW5nZSA9IGl0ZXJhdG9yLnJhbmdlKCk7Ci0gICAgICAgICAg
ICBpZiAob2Zmc2V0T2ZOZXh0TmV3TGluZSA8IGN1cnJlbnRUZXh0Lmxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICAgICAgbGFzdFJhbmdlLT5zZXRTdGFydChmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5v
ZGUoaXRlcmF0b3Iubm9kZSgpKSk7IC8vIE1vdmUgdGhlIHN0YXJ0IHRvIHRoZSBiZWdpbm5pbmcg
b2YgdGhlIGN1cnJlbnQgbm9kZS4KLSAgICAgICAgICAgICAgICBUZXh0SXRlcmF0b3I6OnN1YnJh
bmdlKGxhc3RSYW5nZSwgMCwgb2Zmc2V0T2ZOZXh0TmV3TGluZSk7CisgICAgICAgIHNpemVfdCBz
dGFydE9mQ3VycmVudExpbmUgPSAwOworICAgICAgICBzaXplX3Qgb2Zmc2V0T2ZOZXh0TmV3TGlu
ZSA9IDA7CisgICAgICAgIFN0cmluZ1ZpZXcgY3VycmVudFRleHQgPSBjb250ZW50LnRleHQ7Cisg
ICAgICAgIHdoaWxlICgob2Zmc2V0T2ZOZXh0TmV3TGluZSA9IGN1cnJlbnRUZXh0LmZpbmQoJ1xu
Jywgc3RhcnRPZkN1cnJlbnRMaW5lKSkgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIGlmIChz
dGFydE9mQ3VycmVudExpbmUgPCBvZmZzZXRPZk5leHROZXdMaW5lKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBzdHJpbmdVbnRpbEVuZE9mTGluZSA9IGN1cnJlbnRUZXh0LnN1YnN0cmluZyhzdGFy
dE9mQ3VycmVudExpbmUsIG9mZnNldE9mTmV4dE5ld0xpbmUgLSBzdGFydE9mQ3VycmVudExpbmUp
LnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLmFw
cGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCksIHN0
cmluZ1VudGlsRW5kT2ZMaW5lLCBleGNsdXNpb25SdWxlTWF0Y2hlci5pc0V4Y2x1ZGVkKGNvbnRl
bnQubm9kZS5nZXQoKSkgfSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQb3NpdGlvbiBl
bmRPZkN1cnJlbnRQYXJhZ3JhcGggPSBsYXN0UmFuZ2UtPmVuZFBvc2l0aW9uKCk7CiAKLSAgICAg
ICAgICAgIGlmICghdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIGlmICghdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgICAgIFBvc2l0aW9uIGVuZE9mQ3VycmVudFBhcmFncmFwaCA9IGl0ZXJhdG9yLmVuZFBvc2l0
aW9uKCk7CisgICAgICAgICAgICAgICAgaWYgKGlzPFRleHQ+KGNvbnRlbnQubm9kZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PigqY29udGVu
dC5ub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgZW5kT2ZDdXJyZW50UGFyYWdyYXBoID0gUG9z
aXRpb24oJnRleHROb2RlLCBvZmZzZXRPZk5leHROZXdMaW5lKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGggPSBQb3NpdGlvbigmdGV4dE5vZGUsIG9mZnNldE9m
TmV4dE5ld0xpbmUgKyAxKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYWRk
SXRlbShzdGFydE9mQ3VycmVudFBhcmFncmFwaCwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBXVEZN
b3ZlKHRva2Vuc0luQ3VycmVudFBhcmFncmFwaCkpOwotICAgICAgICAgICAgc3RhcnRPZkN1cnJl
bnRQYXJhZ3JhcGguY2xlYXIoKTsKLSAgICAgICAgICAgIGVuZE9mTGFzdE5ld0xpbmUgPSBvZmZz
ZXRPZk5leHROZXdMaW5lICsgMTsKKyAgICAgICAgICAgICAgICBzdGFydE9mQ3VycmVudFBhcmFn
cmFwaC5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhcnRPZkN1cnJlbnRM
aW5lID0gb2Zmc2V0T2ZOZXh0TmV3TGluZSArIDE7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRv
IHJlbWFpbmluZ1RleHQgPSBjdXJyZW50VGV4dC5zdWJzdHJpbmcoZW5kT2ZMYXN0TmV3TGluZSk7
CisgICAgICAgIGF1dG8gcmVtYWluaW5nVGV4dCA9IGN1cnJlbnRUZXh0LnN1YnN0cmluZyhzdGFy
dE9mQ3VycmVudExpbmUpOwogICAgICAgICBpZiAocmVtYWluaW5nVGV4dC5sZW5ndGgoKSkKLSAg
ICAgICAgICAgIHRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5hcHBlbmQoTWFuaXB1bGF0aW9uVG9r
ZW4geyBtX3Rva2VuSWRlbnRpZmllci5nZW5lcmF0ZSgpLCByZW1haW5pbmdUZXh0LnRvU3RyaW5n
KCksIGV4Y2x1c2lvblJ1bGVNYXRjaGVyLmlzRXhjbHVkZWQoaXRlcmF0b3Iubm9kZSgpKSB9KTsK
LQotICAgICAgICBpdGVyYXRvci5hZHZhbmNlKCk7CisgICAgICAgICAgICB0b2tlbnNJbkN1cnJl
bnRQYXJhZ3JhcGguYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIu
Z2VuZXJhdGUoKSwgcmVtYWluaW5nVGV4dC50b1N0cmluZygpLCBleGNsdXNpb25SdWxlTWF0Y2hl
ci5pc0V4Y2x1ZGVkKGNvbnRlbnQubm9kZS5nZXQoKSkgfSk7CiAgICAgfQogCiAgICAgaWYgKCF0
b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGguaXNFbXB0eSgpKQpAQCAtMzM1LDM2ICs0MjEsMzYgQEAg
YXV0byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRp
b25JdGVtRGF0YSYgaXRlbSwgY29uc3QKICAgICBpZiAoaXRlbS5zdGFydC5pc09ycGhhbigpIHx8
IGl0ZW0uZW5kLmlzT3JwaGFuKCkpCiAgICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25GYWlsdXJl
VHlwZTo6Q29udGVudENoYW5nZWQ7CiAKLSAgICBUZXh0SXRlcmF0b3IgaXRlcmF0b3IgeyBpdGVt
LnN0YXJ0LCBpdGVtLmVuZCB9OwogICAgIHNpemVfdCBjdXJyZW50VG9rZW5JbmRleCA9IDA7CiAg
ICAgSGFzaE1hcDxUb2tlbklkZW50aWZpZXIsIFRva2VuRXhjaGFuZ2VEYXRhPiB0b2tlbkV4Y2hh
bmdlTWFwOwogCiAgICAgUmVmUHRyPE5vZGU+IGNvbW1vbkFuY2VzdG9yOwotICAgIHdoaWxlICgh
aXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBhdXRvIHN0cmluZyA9IGl0ZXJhdG9yLnRleHQo
KS50b1N0cmluZygpOworICAgIFBhcmFncmFwaENvbnRlbnRJdGVyYXRvciBpdGVyYXRvciB7IGl0
ZW0uc3RhcnQsIGl0ZW0uZW5kIH07CisgICAgSGFzaFNldDxSZWY8Tm9kZT4+IGV4Y2x1ZGVkTm9k
ZXM7CisgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsK
KyAgICAgICAgYXV0byBjb250ZW50ID0gaXRlcmF0b3IuY3VycmVudENvbnRlbnQoKTsKKworICAg
ICAgICBpZiAoIWNvbnRlbnQuaXNSZXBsYWNlZENvbnRlbnQgJiYgIWNvbnRlbnQuaXNUZXh0Q29u
dGVudCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIGlmIChjdXJyZW50VG9rZW5J
bmRleCA+PSBpdGVtLnRva2Vucy5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gTWFuaXB1bGF0
aW9uRmFpbHVyZVR5cGU6OkNvbnRlbnRDaGFuZ2VkOworCiAgICAgICAgIGF1dG8mIGN1cnJlbnRU
b2tlbiA9IGl0ZW0udG9rZW5zW2N1cnJlbnRUb2tlbkluZGV4XTsKLSAgICAgICAgaWYgKGl0ZXJh
dG9yLnRleHQoKSAhPSBjdXJyZW50VG9rZW4uY29udGVudCkKKyAgICAgICAgaWYgKCFjb250ZW50
LmlzUmVwbGFjZWRDb250ZW50ICYmIGNvbnRlbnQudGV4dCAhPSBjdXJyZW50VG9rZW4uY29udGVu
dCkKICAgICAgICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25GYWlsdXJlVHlwZTo6Q29udGVudENo
YW5nZWQ7CiAKLSAgICAgICAgYXV0byBjdXJyZW50Tm9kZSA9IG1ha2VSZWZQdHIoaXRlcmF0b3Iu
bm9kZSgpKTsKLSAgICAgICAgdG9rZW5FeGNoYW5nZU1hcC5zZXQoY3VycmVudFRva2VuLmlkZW50
aWZpZXIsIFRva2VuRXhjaGFuZ2VEYXRhIHsgY3VycmVudE5vZGUuY29weVJlZigpLCBjdXJyZW50
VG9rZW4uY29udGVudCwgY3VycmVudFRva2VuLmlzRXhjbHVkZWQgfSk7CisgICAgICAgIHRva2Vu
RXhjaGFuZ2VNYXAuc2V0KGN1cnJlbnRUb2tlbi5pZGVudGlmaWVyLCBUb2tlbkV4Y2hhbmdlRGF0
YSB7IGNvbnRlbnQubm9kZS5jb3B5UmVmKCksIGN1cnJlbnRUb2tlbi5jb250ZW50LCBjdXJyZW50
VG9rZW4uaXNFeGNsdWRlZCB9KTsKKyAgICAgICAgKytjdXJyZW50VG9rZW5JbmRleDsKIAotICAg
ICAgICBpZiAoY3VycmVudE5vZGUpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUYWtlIGNhcmUg
b2Ygd2hlbiBjdXJyZW50Tm9kZSBpcyBudWxscHRyLgotICAgICAgICAgICAgaWYgKCFjb21tb25B
bmNlc3RvcikKLSAgICAgICAgICAgICAgICBjb21tb25BbmNlc3RvciA9IGN1cnJlbnROb2RlOwot
ICAgICAgICAgICAgZWxzZSBpZiAoIWN1cnJlbnROb2RlLT5pc0Rlc2NlbmRhbnRPZihjb21tb25B
bmNlc3Rvci5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBjb21tb25BbmNlc3RvciA9IFJhbmdl
Ojpjb21tb25BbmNlc3RvckNvbnRhaW5lcihjb21tb25BbmNlc3Rvci5nZXQoKSwgY3VycmVudE5v
ZGUuZ2V0KCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVChjb21tb25BbmNlc3Rvcik7Ci0gICAg
ICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBUYWtlIGNhcmUgb2Ygd2hlbiBjdXJyZW50Tm9k
ZSBpcyBudWxscHRyLgorICAgICAgICBpZiAoIWNvbW1vbkFuY2VzdG9yKQorICAgICAgICAgICAg
Y29tbW9uQW5jZXN0b3IgPSBjb250ZW50Lm5vZGU7CisgICAgICAgIGVsc2UgaWYgKCFjb250ZW50
Lm5vZGUtPmlzRGVzY2VuZGFudE9mKGNvbW1vbkFuY2VzdG9yLmdldCgpKSkgeworICAgICAgICAg
ICAgY29tbW9uQW5jZXN0b3IgPSBSYW5nZTo6Y29tbW9uQW5jZXN0b3JDb250YWluZXIoY29tbW9u
QW5jZXN0b3IuZ2V0KCksIGNvbnRlbnQubm9kZS5nZXQoKSk7CisgICAgICAgICAgICBBU1NFUlQo
Y29tbW9uQW5jZXN0b3IpOwogICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IuYWR2YW5jZSgp
OwotICAgICAgICArK2N1cnJlbnRUb2tlbkluZGV4OwogICAgIH0KLSAgICBBU1NFUlQoY29tbW9u
QW5jZXN0b3IpOwogCiAgICAgUmVmUHRyPE5vZGU+IG5vZGVBZnRlclN0YXJ0ID0gaXRlbS5zdGFy
dC5jb21wdXRlTm9kZUFmdGVyUG9zaXRpb24oKTsKICAgICBpZiAoIW5vZGVBZnRlclN0YXJ0KQpA
QCAtMzk4LDcgKzQ4NCwxMCBAQCBhdXRvIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZXBs
YWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW1EYXRhJiBpdGVtLCBjb25zdAogICAgICAgICAgICAg
ZXhjaGFuZ2VEYXRhLmlzQ29uc3VtZWQgPSB0cnVlOwogICAgICAgICAgICAgaWYgKCFuZXdUb2tl
bi5jb250ZW50LmlzTnVsbCgpICYmIG5ld1Rva2VuLmNvbnRlbnQgIT0gZXhjaGFuZ2VEYXRhLm9y
aWdpbmFsQ29udGVudCkKICAgICAgICAgICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uRmFpbHVy
ZVR5cGU6OkV4Y2x1c2lvblZpb2xhdGlvbjsKLSAgICAgICAgICAgIGNvbnRlbnROb2RlID0gVGV4
dDo6Y3JlYXRlKGNvbW1vbkFuY2VzdG9yLT5kb2N1bWVudCgpLCBleGNoYW5nZURhdGEub3JpZ2lu
YWxDb250ZW50KTsKKyAgICAgICAgICAgIGNvbnRlbnROb2RlID0gZXhjaGFuZ2VEYXRhLm5vZGU7
CisgICAgICAgICAgICBmb3IgKFJlZlB0cjxOb2RlPiBjdXJyZW50RGVzY2VuZGVudE5vZGUgPSBj
b250ZW50Tm9kZTsgY3VycmVudERlc2NlbmRlbnROb2RlOyBjdXJyZW50RGVzY2VuZGVudE5vZGUg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpjdXJyZW50RGVzY2VuZGVudE5vZGUsIGNvbnRlbnROb2Rl
LmdldCgpKSkgeworICAgICAgICAgICAgICAgIG5vZGVzVG9SZW1vdmUucmVtb3ZlKCpjdXJyZW50
RGVzY2VuZGVudE5vZGUpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGNvbnRlbnROb2RlID0gVGV4dDo6Y3JlYXRlKGNvbW1vbkFuY2VzdG9yLT5kb2N1bWVudCgp
LCBuZXdUb2tlbi5jb250ZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCmluZGV4IDVmNjIyOWFjMzg1Li44ZmIxMWUzNTJk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXIuaApAQCAtNTEsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFRva2VuSWRlbnRp
ZmllciBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgY29udGVudDsKICAgICAgICAgYm9vbCBp
c0V4Y2x1ZGVkIHsgZmFsc2UgfTsKLQorICAgICAgICBib29sIGlzUmVwbGFjZWQgeyBmYWxzZSB9
OworICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8TWFuaXB1bGF0aW9uVG9rZW4+IGRlY29kZShEZWNvZGVyJik7CiAgICAgfTsKQEAg
LTE1NSw3ICsxNTYsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgY29u
dGVudCA8PCBpc0V4Y2x1ZGVkOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCBjb250ZW50
IDw8IGlzRXhjbHVkZWQgPDwgaXNSZXBsYWNlZDsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KQEAgLTE2OCw2ICsxNjksOCBAQCBPcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
cjo6TWFuaXB1bGF0aW9uVG9rZW4+IFRleHRNYW5pcHVsYXRpb25Db250cm9sbAogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzRXhj
bHVkZWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmlzUmVwbGFjZWQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQppbmRleCA2Mjc5ODNkODBh
OC4uMTMzNDc1NTZlZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0KQEAgLTY5Nyw2ICs2OTcsOTAgQEAg
VEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25SZXBsYWNlTXVs
dGlwbGVTaW1wbGVQYXJhZ3JhcGhzQXQKICAgICAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOwogfQogCitURVNUKFRl
eHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblNob3VsZFByZXNlcnZlSW1h
Z2VzQXNFeGNsdWRlZFRva2VucykKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rl
eHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgX3NldFRleHRNYW5pcHVsYXRpb25EZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48ZGl2PmhlbGxvLCA8aW1nIHNy
Yz1cImFwcGxlLmdpZlwiPiB3b3JsZDwvZGl2PjwvYm9keT48L2h0bWw+Il07CisKKyAgICBkb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N0YXJ0VGV4dE1hbmlwdWxhdGlvbnNXaXRoQ29uZmln
dXJhdGlvbjpuaWwgY29tcGxldGlvbjpeeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgYXV0byAqaXRlbXMg
PSBbZGVsZWdhdGUgaXRlbXNdOworICAgIEVYUEVDVF9FUShpdGVtcy5jb3VudCwgMVVMKTsKKyAg
ICBhdXRvICp0b2tlbnMgPSBpdGVtc1swXS50b2tlbnM7CisgICAgRVhQRUNUX0VRKHRva2Vucy5j
b3VudCwgM1VMKTsKKyAgICBFWFBFQ1RfU1RSRVEoImhlbGxvLCAiLCB0b2tlbnNbMF0uY29udGVu
dC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfRkFMU0UodG9rZW5zWzBdLmlzRXhjbHVkZWQpOwor
ICAgIEVYUEVDVF9TVFJFUSgiW10iLCB0b2tlbnNbMV0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAg
ICBFWFBFQ1RfVFJVRSh0b2tlbnNbMV0uaXNFeGNsdWRlZCk7CisgICAgRVhQRUNUX1NUUkVRKCIg
d29ybGQiLCB0b2tlbnNbMl0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
dG9rZW5zWzJdLmlzRXhjbHVkZWQpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAWyhfV0tUZXh0TWFuaXB1bGF0aW9u
SXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgeworICAgICAgICB7IHRva2Vu
c1swXS5pZGVudGlmaWVyLCBAInRoaXMgaXMgIiB9LAorICAgICAgICB7IHRva2Vuc1sxXS5pZGVu
dGlmaWVyLCBuaWwgfSwKKyAgICAgICAgeyB0b2tlbnNbMl0uaWRlbnRpZmllciwgQCIgYSB0ZXN0
IiB9CisgICAgfSldIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykgewor
ICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLCBuaWwpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIEVYUEVDVF9X
S19TVFJFUSgiPGRpdj50aGlzIGlzIDxpbWcgc3JjPVwiYXBwbGUuZ2lmXCI+IGEgdGVzdDwvZGl2
PiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5
LmlubmVySFRNTCJdKTsKK30KKworVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRN
YW5pcHVsYXRpb25TaG91bGRQcmVzZXJ2ZVNWR0FzRXhjbHVkZWRUb2tlbnMpCit7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3
IF9zZXRUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPCFET0NUWVBFIGh0bWw+PGh0bWw+
PGJvZHk+IgorICAgICI8c2VjdGlvbj48ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2Nr
O1wiPmhlbGxvPC9kaXY+IgorICAgICI8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2Nr
O1wiPjxzcGFuIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWZsZXg7XCI+IgorICAgICI8c3ZnIHZp
ZXdCb3g9XCIwIDAgMjAgMjBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIj48cmVjdCB3aWR0
aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwiIzA2ZlwiPjwvcmVjdD48L3N2Zz4iCisgICAg
Ijwvc3Bhbj48L2Rpdj48L3NlY3Rpb24+PHA+d29ybGQ8L3A+PC9ib2R5PjwvaHRtbD4iXTsKKwor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dp
dGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uOl57CisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBhdXRv
ICppdGVtcyA9IFtkZWxlZ2F0ZSBpdGVtc107CisgICAgRVhQRUNUX0VRKGl0ZW1zLmNvdW50LCAy
VUwpOworICAgIGF1dG8gKnRva2VucyA9IGl0ZW1zWzBdLnRva2VuczsKKyAgICBFWFBFQ1RfRVEo
dG9rZW5zLmNvdW50LCAyVUwpOworICAgIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCB0b2tlbnNbMF0u
Y29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfRkFMU0UodG9rZW5zWzBdLmlzRXhjbHVk
ZWQpOworICAgIEVYUEVDVF9TVFJFUSgiW10iLCB0b2tlbnNbMV0uY29udGVudC5VVEY4U3RyaW5n
KTsKKyAgICBFWFBFQ1RfVFJVRSh0b2tlbnNbMV0uaXNFeGNsdWRlZCk7CisgICAgCisgICAgRVhQ
RUNUX0VRKGl0ZW1zWzFdLnRva2Vucy5jb3VudCwgMVVMKTsKKyAgICBFWFBFQ1RfU1RSRVEoIndv
cmxkIiwgaXRlbXNbMV0udG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNU
X0ZBTFNFKGl0ZW1zWzFdLnRva2Vuc1swXS5pc0V4Y2x1ZGVkKTsKKworICAgIGRvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFsoX1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsK
KyAgICAgICAgeyB0b2tlbnNbMF0uaWRlbnRpZmllciwgQCJoZXkiIH0sCisgICAgICAgIHsgdG9r
ZW5zWzFdLmlkZW50aWZpZXIsIG5pbCB9LAorICAgIH0pXSBjb21wbGV0aW9uOl4oTlNBcnJheTxO
U0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjxzZWN0aW9uPjxkaXYgc3R5bGU9XCJkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7XCI+aGV5PC9kaXY+IgorICAgICI8ZGl2IHN0eWxlPVwiZGlzcGxh
eTogaW5saW5lLWJsb2NrO1wiPjxzcGFuIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWZsZXg7XCI+
IgorICAgICI8c3ZnIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwi
MjBcIj48cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwiIzA2ZlwiPjwvcmVj
dD48L3N2Zz4iCisgICAgIjwvc3Bhbj48L2Rpdj48L3NlY3Rpb24+PHA+d29ybGQ8L3A+IiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJI
VE1MIl0pOworfQorCiBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxh
dGlvblNob3VsZEJhdGNoSXRlbUNhbGxiYWNrKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392694</attachid>
            <date>2020-03-06 02:15:48 -0800</date>
            <delta_ts>2020-03-06 02:22:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208692-20200306021548.patch</filename>
            <type>text/plain</type>
            <size>23465</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdiMzA4ODQ2YzlmM2Q5
NWQ4NGViNzg2ZmQ4ZDFmYTcwMDAwNWE0OC4uOGEwMjFhOTQ2ZjA0NzZkNzQyMDg1NWY3N2UzNDVh
MGNhYzhhMjk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIwLTAzLTA2ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyIHNob3VsZCBwcmVzZXJ2ZSBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIgcHJlc2VydmUgaW1hZ2VzIChpbWcgYW5kIFNWRykgYW5kIHRoZWlyIG9yZGVy
aW5nLAorICAgICAgICBhbmQgbGF5cyBkb3duIHRoZSBmb3VuZGF0aW9uIGZvciBwcmVzZXJ2aW5n
IG90aGVyIG5vbi10ZXh0IGNvbnRlbnQuCisKKyAgICAgICAgVG8gZG8gdGhpcywgdGhpcyBwYXRj
aCBpbnRyb2R1Y2VzIFBhcmFncmFwaENvbnRlbnRJdGVyYXRvciB3aGljaCB3cmFwcyBUZXh0SXRl
cmF0b3IgYW5kIGludHJvZHVjZXMKKyAgICAgICAgYSBzZWNvbmRhcnkgbm9kZSBpdGVyYXRpb24g
d2hpY2ggZGV0ZWN0cyBhbGwgbmRvZXMgdGhhdCBoYXZlIGJlZW4gc2tpcHBlZC4gSWRlYWxseSwg
d2Ugd291bGQgdXBkYXRlCisgICAgICAgIFRleHRJdGVyYXRvciB0byBkbyB0aGlzIG5hdGl2ZWx5
IGJ1dCB0aGlzIGlzIHRyaWNreSBkdWUgdG8gdGhlIG11bHRpdHVkZSBvZiB0aGUgbm9kZSB0cmF2
ZXJhbCBvcHRpb25zCisgICAgICAgIHN1cHBvcnRlZCBieSBUZXh0SXRlcmF0b3IgYXQgdGhlIG1v
bWVudC4gUGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjphZHZhbmNlIHN0b3BzIGF0IGV2ZXJ5IG5v
ZGUKKyAgICAgICAgaW5jbHVkaW5nIG9uZXMgdGhhdCBkbyBub3QgZ2VuZXJhdGUgdGV4dCBpbiBU
ZXh0aXRlcmF0b3IuIFRoaXMgYWxzbyBhbGxvd3MgbW9yZSBjb2RlIHNoYXJpbmcgYmV0d2Vlbgor
ICAgICAgICBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcidzIG9ic2VydmVQYXJhZ3JhcGhzIGFu
ZCByZXBsYWNlIGZ1bmN0aW9ucy4KKworICAgICAgICBGb3Igbm93LCB3ZSBzcGVjaWFsIGNhc2Ug
bm9kZXMgd2l0aCBSZW5kZXJSZXBsYWNlIGxpa2UgaW1nIGVsZW1lbnQgYW5kIHRoZSByb290IFNW
RyBlbGVtZW50LgorCisgICAgICAgIFRlc3RzOiBUZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4
dE1hbmlwdWxhdGlvblNob3VsZFByZXNlcnZlSW1hZ2VzQXNFeGNsdWRlZFRva2VucworICAgICAg
ICAgICAgICAgVGV4dE1hbmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVsYXRpb25TaG91bGRQ
cmVzZXJ2ZVNWR0FzRXhjbHVkZWRUb2tlbnMKKyAgICAgICAgICAgICAgIFRleHRNYW5pcHVsYXRp
b24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uU2hvdWxkUHJlc2VydmVPcmRlck9mQmxvY2tJbWFn
ZQorCisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhcmFncmFwaENvbnRlbnRJdGVyYXRvcjo6UGFyYWdyYXBoQ29udGVudEl0
ZXJhdG9yKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0
b3I6OmFkdmFuY2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhcmFncmFwaENvbnRlbnRJ
dGVyYXRvcjo6Y3VycmVudENvbnRlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhcmFn
cmFwaENvbnRlbnRJdGVyYXRvcjo6c3RhcnRQb3NpdGlvbik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjplbmRQb3NpdGlvbik6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjphdEVuZCBjb25zdCk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjptb3ZlQ3Vy
cmVudE5vZGVGb3J3YXJkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6b2JzZXJ2ZVBhcmFncmFwaHMpOiBBZG9wdGVkIFBhcmFncmFwaENvbnRl
bnRJdGVyYXRvci4gRm9yCisgICAgICAgIG5vZGVzIHdpdGggUmVuZGVyUmVwbGFjZSwgd2UgZ2Vu
ZXJhdGUgYW4gZXhjbHVkZWQgdG9rZW4gIltdIi4gUmVtb3ZlZCB0aGUgZGVhZCBjb2RlIHdoaWNo
IHdhcworICAgICAgICBjcmVhdGluZyBhIHN1YnJhbmdlIGZyb20gVGV4dEl0ZXJhdG9yLCBhbmQg
cmVuYW1lZCB0aGUgcHJldmlvdXNseSBtaXNsZWFkaW5nbHkgbmFtZWQgZW5kT2ZMYXN0TmV3TGlu
ZQorICAgICAgICB0byBzdGFydE9mQ3VycmVudExpbmUgZm9yIGNsYXJpdHkuCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZSk6IEFkb3B0ZWQgUGFy
YWdyYXBoQ29udGVudEl0ZXJhdG9yLgorCiAyMDIwLTAzLTAzICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEJhdGNoIG9ic2VydmF0aW9ucyBhbmQgY29tcGxldGlv
bnMgb2YgdGV4dCBtYW5pcHVsYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDE0MGE0Mzg2OTM5NjY0MzE5
MmEzOWUyNWY5MTE1ZDExNjQ1MGRhMzQuLjA5ZDBlY2Q1NWFjYTEwNzcyNTJlMTJjZmE1YTdlYmJl
MzRkNDEwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMzksNTYgKzEzOSwxNDIgQEAgdm9pZCBUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6c3RhcnRPYnNlcnZpbmdQYXJhZ3JhcGhzKE1hbmlwdWxhdGlv
bkl0ZW1DYWxsYmEKICAgICBmbHVzaFBlbmRpbmdJdGVtc0ZvckNhbGxiYWNrKCk7CiB9CiAKK2Ns
YXNzIFBhcmFncmFwaENvbnRlbnRJdGVyYXRvciB7CitwdWJsaWM6CisgICAgUGFyYWdyYXBoQ29u
dGVudEl0ZXJhdG9yKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkK
KyAgICAgICAgOiBtX2l0ZXJhdG9yKHN0YXJ0LCBlbmQpCisgICAgICAgICwgbV9pdGVyYXRvck5v
ZGUobV9pdGVyYXRvci5hdEVuZCgpID8gbnVsbHB0ciA6IG1faXRlcmF0b3IucmFuZ2UoKS0+Zmly
c3ROb2RlKCkpCisgICAgICAgICwgbV9jdXJyZW50Tm9kZUZvckZpbmRpbmdJbnZpc2libGVDb250
ZW50KHN0YXJ0LmZpcnN0Tm9kZSgpKQorICAgICAgICAsIG1fcGFzdEVuZE5vZGUoZW5kLmZpcnN0
Tm9kZSgpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGFkdmFuY2UoKQorICAgIHsKKyAgICAg
ICAgLy8gRklYTUU6IEFkZCBhIG5vZGUgY2FsbGJhY2sgdG8gVGV4dEl0ZXJhdG9yIGluc3RlYWQg
b2YgdHJhdmVyc2luZyB0aGUgbm9kZSB0cmVlIHR3aWNlIGxpa2UgdGhpcy4KKyAgICAgICAgaWYg
KG1fY3VycmVudE5vZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudCAhPSBtX2l0ZXJhdG9yTm9k
ZSAmJiBtX2N1cnJlbnROb2RlRm9yRmluZGluZ0ludmlzaWJsZUNvbnRlbnQgIT0gbV9wYXN0RW5k
Tm9kZSkgeworICAgICAgICAgICAgbW92ZUN1cnJlbnROb2RlRm9yd2FyZCgpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1faXRlcmF0b3IuYXRFbmQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIHByZXZpb3VzSXRlcmF0b3JOb2Rl
ID0gbV9pdGVyYXRvck5vZGU7CisKKyAgICAgICAgbV9pdGVyYXRvci5hZHZhbmNlKCk7CisgICAg
ICAgIG1faXRlcmF0b3JOb2RlID0gbV9pdGVyYXRvci5hdEVuZCgpID8gbnVsbHB0ciA6IG1faXRl
cmF0b3IucmFuZ2UoKS0+Zmlyc3ROb2RlKCk7CisgICAgICAgIGlmIChwcmV2aW91c0l0ZXJhdG9y
Tm9kZSAhPSBtX2l0ZXJhdG9yTm9kZSkKKyAgICAgICAgICAgIG1vdmVDdXJyZW50Tm9kZUZvcndh
cmQoKTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgQ3VycmVudENvbnRlbnQgeworICAgICAgICBSZWZQ
dHI8Tm9kZT4gbm9kZTsKKyAgICAgICAgU3RyaW5nVmlldyB0ZXh0OworICAgICAgICBib29sIGlz
VGV4dENvbnRlbnQgeyBmYWxzZSB9OworICAgICAgICBib29sIGlzUmVwbGFjZWRDb250ZW50IHsg
ZmFsc2UgfTsKKyAgICB9OworCisgICAgQ3VycmVudENvbnRlbnQgY3VycmVudENvbnRlbnQoKQor
ICAgIHsKKyAgICAgICAgQ3VycmVudENvbnRlbnQgY29udGVudDsKKyAgICAgICAgaWYgKG1fY3Vy
cmVudE5vZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudCAmJiBtX2N1cnJlbnROb2RlRm9yRmlu
ZGluZ0ludmlzaWJsZUNvbnRlbnQgIT0gbV9pdGVyYXRvck5vZGUpCisgICAgICAgICAgICBjb250
ZW50ID0geyBtX2N1cnJlbnROb2RlRm9yRmluZGluZ0ludmlzaWJsZUNvbnRlbnQuY29weVJlZigp
LCBTdHJpbmdWaWV3IHsgfSB9OworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb250ZW50ID0g
eyBtX2l0ZXJhdG9yLm5vZGUoKSwgbV9pdGVyYXRvci50ZXh0KCksIHRydWUgfTsKKyAgICAgICAg
aWYgKGNvbnRlbnQubm9kZSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gY29u
dGVudC5ub2RlLT5yZW5kZXJlcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5p
c1JlbmRlclJlcGxhY2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGVudC5pc1RleHRD
b250ZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuaXNSZXBsYWNlZENv
bnRlbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gY29udGVudDsKKyAgICB9CisKKyAgICBQb3NpdGlvbiBzdGFydFBv
c2l0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2l0ZXJhdG9yLnJhbmdlKCktPnN0YXJ0
UG9zaXRpb24oKTsKKyAgICB9CisKKyAgICBQb3NpdGlvbiBlbmRQb3NpdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9pdGVyYXRvci5yYW5nZSgpLT5lbmRQb3NpdGlvbigpOworICAgIH0K
KworICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yLmF0RW5kKCkgJiYg
bV9jdXJyZW50Tm9kZUZvckZpbmRpbmdJbnZpc2libGVDb250ZW50ID09IG1fcGFzdEVuZE5vZGU7
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIG1vdmVDdXJyZW50Tm9kZUZvcndhcmQoKQorICAgIHsK
KyAgICAgICAgbV9jdXJyZW50Tm9kZUZvckZpbmRpbmdJbnZpc2libGVDb250ZW50ID0gTm9kZVRy
YXZlcnNhbDo6bmV4dCgqbV9jdXJyZW50Tm9kZUZvckZpbmRpbmdJbnZpc2libGVDb250ZW50KTsK
KyAgICAgICAgaWYgKCFtX2N1cnJlbnROb2RlRm9yRmluZGluZ0ludmlzaWJsZUNvbnRlbnQpCisg
ICAgICAgICAgICBtX2N1cnJlbnROb2RlRm9yRmluZGluZ0ludmlzaWJsZUNvbnRlbnQgPSBtX3Bh
c3RFbmROb2RlOworICAgIH0KKworICAgIFRleHRJdGVyYXRvciBtX2l0ZXJhdG9yOworICAgIFJl
ZlB0cjxOb2RlPiBtX2l0ZXJhdG9yTm9kZTsKKyAgICBSZWZQdHI8Tm9kZT4gbV9jdXJyZW50Tm9k
ZUZvckZpbmRpbmdJbnZpc2libGVDb250ZW50OworICAgIFJlZlB0cjxOb2RlPiBtX3Bhc3RFbmRO
b2RlOworfTsKKwogdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2JzZXJ2ZVBhcmFn
cmFwaHMoVmlzaWJsZVBvc2l0aW9uJiBzdGFydCwgVmlzaWJsZVBvc2l0aW9uJiBlbmQpCiB7CiAg
ICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIoc3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5kb2N1
bWVudCgpKTsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAgIFRleHRJdGVyYXRvciBpdGVyYXRv
ciB7IHN0YXJ0LmRlZXBFcXVpdmFsZW50KCksIGVuZC5kZWVwRXF1aXZhbGVudCgpIH07CisgICAg
UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yIGl0ZXJhdG9yIHsgc3RhcnQuZGVlcEVxdWl2YWxlbnQo
KSwgZW5kLmRlZXBFcXVpdmFsZW50KCkgfTsKICAgICBpZiAoZG9jdW1lbnQgIT0gc3RhcnQuZGVl
cEVxdWl2YWxlbnQoKS5kb2N1bWVudCgpIHx8IGRvY3VtZW50ICE9IGVuZC5kZWVwRXF1aXZhbGVu
dCgpLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsgLy8gVGV4dEl0ZXJhdG9yJ3MgY29uc3Ry
dWN0b3IgbWF5IGhhdmUgdXBkYXRlZCB0aGUgbGF5b3V0IGFuZCBleGVjdXRlZCBhcmJpdHJhcnkg
c2NyaXB0cy4KIAogICAgIEV4Y2x1c2lvblJ1bGVNYXRjaGVyIGV4Y2x1c2lvblJ1bGVNYXRjaGVy
KG1fZXhjbHVzaW9uUnVsZXMpOwogICAgIFZlY3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4gdG9rZW5z
SW5DdXJyZW50UGFyYWdyYXBoOwogICAgIFBvc2l0aW9uIHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBo
ID0gc3RhcnQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkp
IHsKLSAgICAgICAgU3RyaW5nVmlldyBjdXJyZW50VGV4dCA9IGl0ZXJhdG9yLnRleHQoKTsKLQot
ICAgICAgICBpZiAoc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGguaXNOdWxsKCkpCi0gICAgICAgICAg
ICBzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9IGl0ZXJhdG9yLnJhbmdlKCktPnN0YXJ0UG9zaXRp
b24oKTsKLQotICAgICAgICBpZiAoYXV0byogY3VycmVudE5vZGUgPSBpdGVyYXRvci5ub2RlKCkp
IHsKLSAgICAgICAgICAgIGlmIChSZWZQdHI8RWxlbWVudD4gY3VycmVudEVsZW1lbnRBbmNlc3Rv
ciA9IGlzPEVsZW1lbnQ+KGN1cnJlbnROb2RlKSA/IGRvd25jYXN0PEVsZW1lbnQ+KGN1cnJlbnRO
b2RlKSA6IGN1cnJlbnROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3RFbGVtZW50KCkpIHsKKyAgICBm
b3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7IGl0ZXJhdG9yLmFkdmFuY2UoKSkgeworICAgICAgICBh
dXRvIGNvbnRlbnQgPSBpdGVyYXRvci5jdXJyZW50Q29udGVudCgpOworICAgICAgICBpZiAoY29u
dGVudC5ub2RlKSB7CisgICAgICAgICAgICBpZiAoUmVmUHRyPEVsZW1lbnQ+IGN1cnJlbnRFbGVt
ZW50QW5jZXN0b3IgPSBpczxFbGVtZW50PigqY29udGVudC5ub2RlKSA/IGRvd25jYXN0PEVsZW1l
bnQ+KGNvbnRlbnQubm9kZS5nZXQoKSkgOiBjb250ZW50Lm5vZGUtPnBhcmVudE9yU2hhZG93SG9z
dEVsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGlmIChpc0luTWFuaXB1bGF0ZWRFbGVtZW50
KCpjdXJyZW50RWxlbWVudEFuY2VzdG9yKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAv
LyBXZSBjYW4gZXhpdCBlYXJseSBoZXJlIGJlY2F1c2Ugc2NoZWR1bGVPYnNlcnZhcnRpb25VcGRh
dGUgY2FsbHMgdGhpcyBmdW5jdGlvbiBvbiBlYWNoIHBhcmFncmFwaCBzZXBhcmF0ZWx5LgogICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGguaXNO
dWxsKCkpCisgICAgICAgICAgICAgICAgc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGggPSBpdGVyYXRv
ci5zdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3QgZW5kT2ZMYXN0
TmV3TGluZSA9IDA7Ci0gICAgICAgIHNpemVfdCBvZmZzZXRPZk5leHROZXdMaW5lID0gMDsKLSAg
ICAgICAgd2hpbGUgKChvZmZzZXRPZk5leHROZXdMaW5lID0gY3VycmVudFRleHQuZmluZCgnXG4n
LCBlbmRPZkxhc3ROZXdMaW5lKSkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIGlmIChlbmRP
Zkxhc3ROZXdMaW5lIDwgb2Zmc2V0T2ZOZXh0TmV3TGluZSkgewotICAgICAgICAgICAgICAgIGF1
dG8gc3RyaW5nVW50aWxFbmRPZkxpbmUgPSBjdXJyZW50VGV4dC5zdWJzdHJpbmcoZW5kT2ZMYXN0
TmV3TGluZSwgb2Zmc2V0T2ZOZXh0TmV3TGluZSAtIGVuZE9mTGFzdE5ld0xpbmUpLnRvU3RyaW5n
KCk7Ci0gICAgICAgICAgICAgICAgdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLmFwcGVuZChNYW5p
cHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCksIHN0cmluZ1VudGls
RW5kT2ZMaW5lLCBleGNsdXNpb25SdWxlTWF0Y2hlci5pc0V4Y2x1ZGVkKGl0ZXJhdG9yLm5vZGUo
KSkgfSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChjb250ZW50LmlzUmVwbGFjZWRDb250
ZW50KSB7CisgICAgICAgICAgICB0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1hbmlw
dWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUoKSwgIltdIiwgdHJ1ZSAv
KiBpc0V4Y2x1ZGVkICovfSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghY29udGVudC5pc1RleHRDb250ZW50KQorICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgICAgIGF1dG8gbGFzdFJhbmdlID0gaXRlcmF0b3IucmFuZ2UoKTsKLSAgICAg
ICAgICAgIGlmIChvZmZzZXRPZk5leHROZXdMaW5lIDwgY3VycmVudFRleHQubGVuZ3RoKCkpIHsK
LSAgICAgICAgICAgICAgICBsYXN0UmFuZ2UtPnNldFN0YXJ0KGZpcnN0UG9zaXRpb25Jbk9yQmVm
b3JlTm9kZShpdGVyYXRvci5ub2RlKCkpKTsgLy8gTW92ZSB0aGUgc3RhcnQgdG8gdGhlIGJlZ2lu
bmluZyBvZiB0aGUgY3VycmVudCBub2RlLgotICAgICAgICAgICAgICAgIFRleHRJdGVyYXRvcjo6
c3VicmFuZ2UobGFzdFJhbmdlLCAwLCBvZmZzZXRPZk5leHROZXdMaW5lKTsKKyAgICAgICAgc2l6
ZV90IHN0YXJ0T2ZDdXJyZW50TGluZSA9IDA7CisgICAgICAgIHNpemVfdCBvZmZzZXRPZk5leHRO
ZXdMaW5lID0gMDsKKyAgICAgICAgU3RyaW5nVmlldyBjdXJyZW50VGV4dCA9IGNvbnRlbnQudGV4
dDsKKyAgICAgICAgd2hpbGUgKChvZmZzZXRPZk5leHROZXdMaW5lID0gY3VycmVudFRleHQuZmlu
ZCgnXG4nLCBzdGFydE9mQ3VycmVudExpbmUpKSAhPSBub3RGb3VuZCkgeworICAgICAgICAgICAg
aWYgKHN0YXJ0T2ZDdXJyZW50TGluZSA8IG9mZnNldE9mTmV4dE5ld0xpbmUpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIHN0cmluZ1VudGlsRW5kT2ZMaW5lID0gY3VycmVudFRleHQuc3Vic3RyaW5n
KHN0YXJ0T2ZDdXJyZW50TGluZSwgb2Zmc2V0T2ZOZXh0TmV3TGluZSAtIHN0YXJ0T2ZDdXJyZW50
TGluZSkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICB0b2tlbnNJbkN1cnJlbnRQYXJhZ3Jh
cGguYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUo
KSwgc3RyaW5nVW50aWxFbmRPZkxpbmUsIGV4Y2x1c2lvblJ1bGVNYXRjaGVyLmlzRXhjbHVkZWQo
Y29udGVudC5ub2RlLmdldCgpKSB9KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFBvc2l0
aW9uIGVuZE9mQ3VycmVudFBhcmFncmFwaCA9IGxhc3RSYW5nZS0+ZW5kUG9zaXRpb24oKTsKIAot
ICAgICAgICAgICAgaWYgKCF0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGguaXNFbXB0eSgpKQorICAg
ICAgICAgICAgaWYgKCF0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGguaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICAgICAgUG9zaXRpb24gZW5kT2ZDdXJyZW50UGFyYWdyYXBoID0gaXRlcmF0b3IuZW5k
UG9zaXRpb24oKTsKKyAgICAgICAgICAgICAgICBpZiAoaXM8VGV4dD4oY29udGVudC5ub2RlKSkg
eworICAgICAgICAgICAgICAgICAgICBhdXRvJiB0ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KCpj
b250ZW50Lm5vZGUpOworICAgICAgICAgICAgICAgICAgICBlbmRPZkN1cnJlbnRQYXJhZ3JhcGgg
PSBQb3NpdGlvbigmdGV4dE5vZGUsIG9mZnNldE9mTmV4dE5ld0xpbmUpOworICAgICAgICAgICAg
ICAgICAgICBzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9IFBvc2l0aW9uKCZ0ZXh0Tm9kZSwgb2Zm
c2V0T2ZOZXh0TmV3TGluZSArIDEpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBhZGRJdGVtKHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoLCBlbmRPZkN1cnJlbnRQYXJhZ3JhcGgs
IFdURk1vdmUodG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoKSk7Ci0gICAgICAgICAgICBzdGFydE9m
Q3VycmVudFBhcmFncmFwaC5jbGVhcigpOwotICAgICAgICAgICAgZW5kT2ZMYXN0TmV3TGluZSA9
IG9mZnNldE9mTmV4dE5ld0xpbmUgKyAxOworICAgICAgICAgICAgICAgIHN0YXJ0T2ZDdXJyZW50
UGFyYWdyYXBoLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGFydE9mQ3Vy
cmVudExpbmUgPSBvZmZzZXRPZk5leHROZXdMaW5lICsgMTsKICAgICAgICAgfQogCi0gICAgICAg
IGF1dG8gcmVtYWluaW5nVGV4dCA9IGN1cnJlbnRUZXh0LnN1YnN0cmluZyhlbmRPZkxhc3ROZXdM
aW5lKTsKKyAgICAgICAgYXV0byByZW1haW5pbmdUZXh0ID0gY3VycmVudFRleHQuc3Vic3RyaW5n
KHN0YXJ0T2ZDdXJyZW50TGluZSk7CiAgICAgICAgIGlmIChyZW1haW5pbmdUZXh0Lmxlbmd0aCgp
KQotICAgICAgICAgICAgdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLmFwcGVuZChNYW5pcHVsYXRp
b25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCksIHJlbWFpbmluZ1RleHQudG9T
dHJpbmcoKSwgZXhjbHVzaW9uUnVsZU1hdGNoZXIuaXNFeGNsdWRlZChpdGVyYXRvci5ub2RlKCkp
IH0pOwotCi0gICAgICAgIGl0ZXJhdG9yLmFkdmFuY2UoKTsKKyAgICAgICAgICAgIHRva2Vuc0lu
Q3VycmVudFBhcmFncmFwaC5hcHBlbmQoTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2VuSWRlbnRp
Zmllci5nZW5lcmF0ZSgpLCByZW1haW5pbmdUZXh0LnRvU3RyaW5nKCksIGV4Y2x1c2lvblJ1bGVN
YXRjaGVyLmlzRXhjbHVkZWQoY29udGVudC5ub2RlLmdldCgpKSB9KTsKICAgICB9CiAKICAgICBp
ZiAoIXRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5pc0VtcHR5KCkpCkBAIC0zMzUsMzYgKzQyMSwz
OCBAQCBhdXRvIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZXBsYWNlKGNvbnN0IE1hbmlw
dWxhdGlvbkl0ZW1EYXRhJiBpdGVtLCBjb25zdAogICAgIGlmIChpdGVtLnN0YXJ0LmlzT3JwaGFu
KCkgfHwgaXRlbS5lbmQuaXNPcnBoYW4oKSkKICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvbkZh
aWx1cmVUeXBlOjpDb250ZW50Q2hhbmdlZDsKIAotICAgIFRleHRJdGVyYXRvciBpdGVyYXRvciB7
IGl0ZW0uc3RhcnQsIGl0ZW0uZW5kIH07CiAgICAgc2l6ZV90IGN1cnJlbnRUb2tlbkluZGV4ID0g
MDsKICAgICBIYXNoTWFwPFRva2VuSWRlbnRpZmllciwgVG9rZW5FeGNoYW5nZURhdGE+IHRva2Vu
RXhjaGFuZ2VNYXA7CiAKICAgICBSZWZQdHI8Tm9kZT4gY29tbW9uQW5jZXN0b3I7Ci0gICAgd2hp
bGUgKCFpdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgIGF1dG8gc3RyaW5nID0gaXRlcmF0b3Iu
dGV4dCgpLnRvU3RyaW5nKCk7CisgICAgUGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yIGl0ZXJhdG9y
IHsgaXRlbS5zdGFydCwgaXRlbS5lbmQgfTsKKyAgICBIYXNoU2V0PFJlZjxOb2RlPj4gZXhjbHVk
ZWROb2RlczsKKyAgICBmb3IgKDsgIWl0ZXJhdG9yLmF0RW5kKCk7IGl0ZXJhdG9yLmFkdmFuY2Uo
KSkgeworICAgICAgICBhdXRvIGNvbnRlbnQgPSBpdGVyYXRvci5jdXJyZW50Q29udGVudCgpOwor
CisgICAgICAgIGlmICghY29udGVudC5pc1JlcGxhY2VkQ29udGVudCAmJiAhY29udGVudC5pc1Rl
eHRDb250ZW50KQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgaWYgKGN1cnJlbnRU
b2tlbkluZGV4ID49IGl0ZW0udG9rZW5zLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBNYW5p
cHVsYXRpb25GYWlsdXJlVHlwZTo6Q29udGVudENoYW5nZWQ7CisKICAgICAgICAgYXV0byYgY3Vy
cmVudFRva2VuID0gaXRlbS50b2tlbnNbY3VycmVudFRva2VuSW5kZXhdOwotICAgICAgICBpZiAo
aXRlcmF0b3IudGV4dCgpICE9IGN1cnJlbnRUb2tlbi5jb250ZW50KQorICAgICAgICBpZiAoIWNv
bnRlbnQuaXNSZXBsYWNlZENvbnRlbnQgJiYgY29udGVudC50ZXh0ICE9IGN1cnJlbnRUb2tlbi5j
b250ZW50KQogICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpDb250
ZW50Q2hhbmdlZDsKIAotICAgICAgICBhdXRvIGN1cnJlbnROb2RlID0gbWFrZVJlZlB0cihpdGVy
YXRvci5ub2RlKCkpOwotICAgICAgICB0b2tlbkV4Y2hhbmdlTWFwLnNldChjdXJyZW50VG9rZW4u
aWRlbnRpZmllciwgVG9rZW5FeGNoYW5nZURhdGEgeyBjdXJyZW50Tm9kZS5jb3B5UmVmKCksIGN1
cnJlbnRUb2tlbi5jb250ZW50LCBjdXJyZW50VG9rZW4uaXNFeGNsdWRlZCB9KTsKKyAgICAgICAg
dG9rZW5FeGNoYW5nZU1hcC5zZXQoY3VycmVudFRva2VuLmlkZW50aWZpZXIsIFRva2VuRXhjaGFu
Z2VEYXRhIHsgY29udGVudC5ub2RlLmNvcHlSZWYoKSwgY3VycmVudFRva2VuLmNvbnRlbnQsIGN1
cnJlbnRUb2tlbi5pc0V4Y2x1ZGVkIH0pOworICAgICAgICArK2N1cnJlbnRUb2tlbkluZGV4Owog
Ci0gICAgICAgIGlmIChjdXJyZW50Tm9kZSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFRha2Ug
Y2FyZSBvZiB3aGVuIGN1cnJlbnROb2RlIGlzIG51bGxwdHIuCisgICAgICAgIC8vIEZJWE1FOiBU
YWtlIGNhcmUgb2Ygd2hlbiBjdXJyZW50Tm9kZSBpcyBudWxscHRyLgorICAgICAgICBpZiAoY29u
dGVudC5ub2RlKSB7CiAgICAgICAgICAgICBpZiAoIWNvbW1vbkFuY2VzdG9yKQotICAgICAgICAg
ICAgICAgIGNvbW1vbkFuY2VzdG9yID0gY3VycmVudE5vZGU7Ci0gICAgICAgICAgICBlbHNlIGlm
ICghY3VycmVudE5vZGUtPmlzRGVzY2VuZGFudE9mKGNvbW1vbkFuY2VzdG9yLmdldCgpKSkgewot
ICAgICAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yID0gUmFuZ2U6OmNvbW1vbkFuY2VzdG9yQ29u
dGFpbmVyKGNvbW1vbkFuY2VzdG9yLmdldCgpLCBjdXJyZW50Tm9kZS5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgY29tbW9uQW5jZXN0b3IgPSBjb250ZW50Lm5vZGU7CisgICAgICAgICAgICBlbHNl
IGlmICghY29udGVudC5ub2RlLT5pc0Rlc2NlbmRhbnRPZihjb21tb25BbmNlc3Rvci5nZXQoKSkp
IHsKKyAgICAgICAgICAgICAgICBjb21tb25BbmNlc3RvciA9IFJhbmdlOjpjb21tb25BbmNlc3Rv
ckNvbnRhaW5lcihjb21tb25BbmNlc3Rvci5nZXQoKSwgY29udGVudC5ub2RlLmdldCgpKTsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoY29tbW9uQW5jZXN0b3IpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IuYWR2YW5jZSgpOwotICAgICAgICArK2N1cnJlbnRU
b2tlbkluZGV4OwogICAgIH0KLSAgICBBU1NFUlQoY29tbW9uQW5jZXN0b3IpOwogCiAgICAgUmVm
UHRyPE5vZGU+IG5vZGVBZnRlclN0YXJ0ID0gaXRlbS5zdGFydC5jb21wdXRlTm9kZUFmdGVyUG9z
aXRpb24oKTsKICAgICBpZiAoIW5vZGVBZnRlclN0YXJ0KQpAQCAtMzk4LDcgKzQ4Niw5IEBAIGF1
dG8gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UoY29uc3QgTWFuaXB1bGF0aW9u
SXRlbURhdGEmIGl0ZW0sIGNvbnN0CiAgICAgICAgICAgICBleGNoYW5nZURhdGEuaXNDb25zdW1l
ZCA9IHRydWU7CiAgICAgICAgICAgICBpZiAoIW5ld1Rva2VuLmNvbnRlbnQuaXNOdWxsKCkgJiYg
bmV3VG9rZW4uY29udGVudCAhPSBleGNoYW5nZURhdGEub3JpZ2luYWxDb250ZW50KQogICAgICAg
ICAgICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25GYWlsdXJlVHlwZTo6RXhjbHVzaW9uVmlvbGF0
aW9uOwotICAgICAgICAgICAgY29udGVudE5vZGUgPSBUZXh0OjpjcmVhdGUoY29tbW9uQW5jZXN0
b3ItPmRvY3VtZW50KCksIGV4Y2hhbmdlRGF0YS5vcmlnaW5hbENvbnRlbnQpOworICAgICAgICAg
ICAgY29udGVudE5vZGUgPSBleGNoYW5nZURhdGEubm9kZTsKKyAgICAgICAgICAgIGZvciAoUmVm
UHRyPE5vZGU+IGN1cnJlbnREZXNjZW5kZW50Tm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKmNv
bnRlbnROb2RlLCBjb250ZW50Tm9kZS5nZXQoKSk7IGN1cnJlbnREZXNjZW5kZW50Tm9kZTsgY3Vy
cmVudERlc2NlbmRlbnROb2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqY3VycmVudERlc2NlbmRl
bnROb2RlLCBjb250ZW50Tm9kZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgbm9kZXNUb1JlbW92
ZS5yZW1vdmUoKmN1cnJlbnREZXNjZW5kZW50Tm9kZSk7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgY29udGVudE5vZGUgPSBUZXh0OjpjcmVhdGUoY29tbW9uQW5jZXN0b3ItPmRvY3VtZW50
KCksIG5ld1Rva2VuLmNvbnRlbnQpOwogCkBAIC00MzYsMTcgKzUyNiwyMSBAQCBhdXRvIFRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyOjpyZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW1EYXRh
JiBpdGVtLCBjb25zdAogICAgIH0KIAogICAgIFBvc2l0aW9uIGluc2VydGlvblBvaW50ID0gaXRl
bS5zdGFydDsKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQuYW5jaG9yTm9kZSgpICE9IGluc2VydGlv
blBvaW50LmNvbnRhaW5lck5vZGUoKSkKKyAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRp
b25Qb2ludC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICB3aGlsZSAoaW5zZXJ0aW9u
UG9pbnQuY29udGFpbmVyTm9kZSgpICE9IGNvbW1vbkFuY2VzdG9yKQogICAgICAgICBpbnNlcnRp
b25Qb2ludCA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKGluc2VydGlvblBvaW50LmNvbnRh
aW5lck5vZGUoKSk7CiAgICAgQVNTRVJUKCFpbnNlcnRpb25Qb2ludC5pc051bGwoKSk7CisgICAg
QVNTRVJUKCFpbnNlcnRpb25Qb2ludC5pc09ycGhhbigpKTsKIAogICAgIGZvciAoYXV0byYgbm9k
ZSA6IG5vZGVzVG9SZW1vdmUpCiAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwogCiAgICAgZm9yIChh
dXRvJiBpbnNlcnRpb24gOiBpbnNlcnRpb25zKSB7Ci0gICAgICAgIGlmICghaW5zZXJ0aW9uLnBh
cmVudElmRGlmZmVyZW50RnJvbUNvbW1vbkFuY2VzdG9yKQotICAgICAgICAgICAgaW5zZXJ0aW9u
UG9pbnQuY29udGFpbmVyTm9kZSgpLT5pbnNlcnRCZWZvcmUoaW5zZXJ0aW9uLmNoaWxkLCBpbnNl
cnRpb25Qb2ludC5jb21wdXRlTm9kZUJlZm9yZVBvc2l0aW9uKCkpOwotICAgICAgICBlbHNlCisg
ICAgICAgIGlmICghaW5zZXJ0aW9uLnBhcmVudElmRGlmZmVyZW50RnJvbUNvbW1vbkFuY2VzdG9y
KSB7CisgICAgICAgICAgICBpbnNlcnRpb25Qb2ludC5jb250YWluZXJOb2RlKCktPmluc2VydEJl
Zm9yZShpbnNlcnRpb24uY2hpbGQsIGluc2VydGlvblBvaW50LmNvbXB1dGVOb2RlQWZ0ZXJQb3Np
dGlvbigpKTsKKyAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gcG9zaXRpb25JblBhcmVudEFm
dGVyTm9kZShpbnNlcnRpb24uY2hpbGQucHRyKCkpOworICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGluc2VydGlvbi5wYXJlbnRJZkRpZmZlcmVudEZyb21Db21tb25BbmNlc3Rvci0+YXBwZW5k
Q2hpbGQoaW5zZXJ0aW9uLmNoaWxkKTsKICAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KGluc2VydGlv
bi5jaGlsZC5nZXQoKSkpCiAgICAgICAgICAgICBtX21hbmlwdWxhdGVkRWxlbWVudHMuYWRkKGRv
d25jYXN0PEVsZW1lbnQ+KGluc2VydGlvbi5jaGlsZC5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGExNjhhODA1NTQ2ZmU2YjdmMjcy
OTBiNDM4OWE5MmM0MDg3ZTQwY2EuLjI4ZjA3YzUxOWQxODUwMmIzZWVhNGRkZTRkMTk1MDEzYTFj
MWRkZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMy0wNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlciBzaG91bGQgcHJlc2Vy
dmUgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDg2OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCB0ZXN0cyBmb3IgcHJlc2VydmluZyBpbWFnZXMgYW5kIHRoZWlyIG9yZGVyaW5nLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0
aW9uLm1tOgorICAgICAgICAoVGV4dE1hbmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVsYXRp
b25TaG91bGRQcmVzZXJ2ZUltYWdlc0FzRXhjbHVkZWRUb2tlbnMpOgorICAgICAgICAoVGV4dE1h
bmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVsYXRpb25TaG91bGRQcmVzZXJ2ZVNWR0FzRXhj
bHVkZWRUb2tlbnMpOgorICAgICAgICAoVGV4dE1hbmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5p
cHVsYXRpb25TaG91bGRQcmVzZXJ2ZU9yZGVyT2ZCbG9ja0ltYWdlKToKKwogMjAyMC0wMy0wMyAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCYXRjaCBvYnNlcnZh
dGlvbnMgYW5kIGNvbXBsZXRpb25zIG9mIHRleHQgbWFuaXB1bGF0aW9ucwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9u
Lm1tCmluZGV4IDYyNzk4M2Q4MGE4NTM5NTQ0YTZkNDBmMzFiYzUwOWQ5MjUzZDA3ZTMuLmIwMzQ4
Yzk5ZmY3NjQxOGY0ZDNhMjI4ZWU0OTcyYTVkOTE3YTBkODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0K
QEAgLTY5Nyw2ICs2OTcsMTMzIEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0
TWFuaXB1bGF0aW9uUmVwbGFjZU11bHRpcGxlU2ltcGxlUGFyYWdyYXBoc0F0CiAgICAgICAgIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVy
SFRNTCJdKTsKIH0KIAorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVs
YXRpb25TaG91bGRQcmVzZXJ2ZUltYWdlc0FzRXhjbHVkZWRUb2tlbnMpCit7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IF9z
ZXRUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPCFET0NUWVBFIGh0bWw+PGh0bWw+PGJv
ZHk+PGRpdj5oZWxsbywgPGltZyBzcmM9XCJhcHBsZS5naWZcIj4gd29ybGQ8L2Rpdj48L2JvZHk+
PC9odG1sPiJdOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRN
YW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb246XnsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKworICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKKyAgICBFWFBFQ1RfRVEo
aXRlbXMuY291bnQsIDFVTCk7CisgICAgYXV0byAqdG9rZW5zID0gaXRlbXNbMF0udG9rZW5zOwor
ICAgIEVYUEVDVF9FUSh0b2tlbnMuY291bnQsIDNVTCk7CisgICAgRVhQRUNUX1NUUkVRKCJoZWxs
bywgIiwgdG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX0ZBTFNFKHRv
a2Vuc1swXS5pc0V4Y2x1ZGVkKTsKKyAgICBFWFBFQ1RfU1RSRVEoIltdIiwgdG9rZW5zWzFdLmNv
bnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1RSVUUodG9rZW5zWzFdLmlzRXhjbHVkZWQp
OworICAgIEVYUEVDVF9TVFJFUSgiIHdvcmxkIiwgdG9rZW5zWzJdLmNvbnRlbnQuVVRGOFN0cmlu
Zyk7CisgICAgRVhQRUNUX0ZBTFNFKHRva2Vuc1syXS5pc0V4Y2x1ZGVkKTsKKworICAgIGRvbmUg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6
QFsoX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZp
ZXIsIHsKKyAgICAgICAgeyB0b2tlbnNbMF0uaWRlbnRpZmllciwgQCJ0aGlzIGlzICIgfSwKKyAg
ICAgICAgeyB0b2tlbnNbMV0uaWRlbnRpZmllciwgbmlsIH0sCisgICAgICAgIHsgdG9rZW5zWzJd
LmlkZW50aWZpZXIsIEAiIGEgdGVzdCIgfQorICAgIH0pXSBjb21wbGV0aW9uOl4oTlNBcnJheTxO
U0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjxkaXY+dGhpcyBpcyA8aW1nIHNyYz1cImFw
cGxlLmdpZlwiPiBhIHRlc3Q8L2Rpdj4iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXSk7Cit9CisKK1RFU1QoVGV4dE1hbmlw
dWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uU2hvdWxkUHJlc2VydmVTVkdBc0V4Y2x1
ZGVkVG9rZW5zKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGV4dE1hbmlwdWxh
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAs
IDQwMCldKTsKKyAgICBbd2ViVmlldyBfc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpA
IjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5PiIKKyAgICAiPHNlY3Rpb24+PGRpdiBzdHlsZT1c
ImRpc3BsYXk6IGlubGluZS1ibG9jaztcIj5oZWxsbzwvZGl2PiIKKyAgICAiPGRpdiBzdHlsZT1c
ImRpc3BsYXk6IGlubGluZS1ibG9jaztcIj48c3BhbiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1m
bGV4O1wiPiIKKyAgICAiPHN2ZyB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgd2lkdGg9XCIyMFwiIGhl
aWdodD1cIjIwXCI+PHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIiMwNmZc
Ij48L3JlY3Q+PC9zdmc+IgorICAgICI8L3NwYW4+PC9kaXY+PC9zZWN0aW9uPjxwPndvcmxkPC9w
PjwvYm9keT48L2h0bWw+Il07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N0
YXJ0VGV4dE1hbmlwdWxhdGlvbnNXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbjpeewor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworCisgICAgYXV0byAqaXRlbXMgPSBbZGVsZWdhdGUgaXRlbXNdOworICAgIEVY
UEVDVF9FUShpdGVtcy5jb3VudCwgMlVMKTsKKyAgICBhdXRvICp0b2tlbnMgPSBpdGVtc1swXS50
b2tlbnM7CisgICAgRVhQRUNUX0VRKHRva2Vucy5jb3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfU1RS
RVEoImhlbGxvIiwgdG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX0ZB
TFNFKHRva2Vuc1swXS5pc0V4Y2x1ZGVkKTsKKyAgICBFWFBFQ1RfU1RSRVEoIltdIiwgdG9rZW5z
WzFdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1RSVUUodG9rZW5zWzFdLmlzRXhj
bHVkZWQpOworICAgIAorICAgIEVYUEVDVF9FUShpdGVtc1sxXS50b2tlbnMuY291bnQsIDFVTCk7
CisgICAgRVhQRUNUX1NUUkVRKCJ3b3JsZCIsIGl0ZW1zWzFdLnRva2Vuc1swXS5jb250ZW50LlVU
RjhTdHJpbmcpOworICAgIEVYUEVDVF9GQUxTRShpdGVtc1sxXS50b2tlbnNbMF0uaXNFeGNsdWRl
ZCk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlw
dWxhdGlvbkZvckl0ZW1zOkBbKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRlbShp
dGVtc1swXS5pZGVudGlmaWVyLCB7CisgICAgICAgIHsgdG9rZW5zWzBdLmlkZW50aWZpZXIsIEAi
aGV5IiB9LAorICAgICAgICB7IHRva2Vuc1sxXS5pZGVudGlmaWVyLCBuaWwgfSwKKyAgICB9KV0g
Y29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVD
VF9FUShlcnJvcnMsIG5pbCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCI8c2Vj
dGlvbj48ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPmhleTwvZGl2PiIKKyAg
ICAiPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztcIj48c3BhbiBzdHlsZT1cImRp
c3BsYXk6IGlubGluZS1mbGV4O1wiPiIKKyAgICAiPHN2ZyB2aWV3Qm94PVwiMCAwIDIwIDIwXCIg
d2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+PHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIw
XCIgZmlsbD1cIiMwNmZcIj48L3JlY3Q+PC9zdmc+IgorICAgICI8L3NwYW4+PC9kaXY+PC9zZWN0
aW9uPjxwPndvcmxkPC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKK30KKworVEVTVChUZXh0TWFuaXB1bGF0aW9u
LCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25TaG91bGRQcmVzZXJ2ZU9yZGVyT2ZCbG9ja0ltYWdl
KQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGV4dE1hbmlwdWxhdGlvbkRlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsK
KyAgICBbd2ViVmlldyBfc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjwhRE9DVFlQ
RSBodG1sPjxodG1sPjxib2R5Pjxzdmcgdmlld0JveD1cIjAgMCAxMCAxMFwiIHdpZHRoPVwiMTAw
XCIgaGVpZ2h0PVwiMTAwXCI+IgorICAgICI8cmVjdCB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBc
IiBmaWxsPVwicmVkXCI+PC9yZWN0Pjwvc3ZnPjxpbWcgc3JjPVwiZGF0YTppbWFnZS9wbmc7YmFz
ZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRSIKKyAgICAiQUFBQUJDQUlBQUFDUWQxUGVB
QUFBQVhOU1IwSUFyczRjNlFBQUFBeEpSRUZVQ05kallLaG5BQUFCQWdDQWJWN3Rad0FBQUFCSlJV
NUVya0pnZ2c9PVwiIgorICAgICJzdHlsZT1cImRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwcHg7
XCI+PHNlY3Rpb24+aGVsbGxvIHdvcmxkPC9zZWN0aW9uPjwvYm9keT48L2h0bWw+Il07CisKKyAg
ICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N0YXJ0VGV4dE1hbmlwdWxhdGlvbnNXaXRo
Q29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbjpeeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgYXV0byAq
aXRlbXMgPSBbZGVsZWdhdGUgaXRlbXNdOworICAgIEVYUEVDVF9FUShpdGVtcy5jb3VudCwgMlVM
KTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNbMF0udG9rZW5zLmNvdW50LCAxVUwpOworICAgIEVYUEVD
VF9TVFJFUSgiW10iLCBpdGVtc1swXS50b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAg
ICBFWFBFQ1RfVFJVRShpdGVtc1swXS50b2tlbnNbMF0uaXNFeGNsdWRlZCk7CisKKyAgICBhdXRv
ICp0b2tlbnMgPSBpdGVtc1sxXS50b2tlbnM7CisgICAgRVhQRUNUX0VRKHRva2Vucy5jb3VudCwg
MVVMKTsKKyAgICBFWFBFQ1RfU1RSRVEoImhlbGxsbyB3b3JsZCIsIHRva2Vuc1swXS5jb250ZW50
LlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9GQUxTRSh0b2tlbnNbMF0uaXNFeGNsdWRlZCk7CisK
KyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlv
bkZvckl0ZW1zOkBbCisgICAgICAgIChfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0
ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgeyB7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVy
LCBuaWwgfSB9KSwKKyAgICAgICAgKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRl
bShpdGVtc1sxXS5pZGVudGlmaWVyLCB7IHsgaXRlbXNbMV0udG9rZW5zWzBdLmlkZW50aWZpZXIs
IEAiaGVsbG8sIHdvcmxkIiB9IH0pLAorICAgIF0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJv
ciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5pbCk7CisgICAgICAg
IGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCI8c3ZnIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiB3aWR0
aD1cIjEwMFwiIGhlaWdodD1cIjEwMFwiPjxyZWN0IHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwi
IGZpbGw9XCJyZWRcIj48L3JlY3Q+PC9zdmc+IgorICAgICI8aW1nIHNyYz1cImRhdGE6aW1hZ2Uv
cG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBSUFBQUNRZDFQZUFB
QUFBWE5TUjBJQXJzNGM2UUFBQUF4SlJFRlVDTiIKKyAgICAiZGpZS2huQUFBQkFnQ0FiVjd0WndB
QUFBQkpSVTVFcmtKZ2dnPT1cIiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwcHg7
XCI+PHNlY3Rpb24+aGVsbG8sIHdvcmxkPC9zZWN0aW9uPiIsCisgICAgICAgIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsK
K30KKwogVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25TaG91
bGRCYXRjaEl0ZW1DYWxsYmFjaykKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rl
eHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392695</attachid>
            <date>2020-03-06 02:22:14 -0800</date>
            <delta_ts>2020-03-06 08:41:47 -0800</delta_ts>
            <desc>Added more change log descriptions</desc>
            <filename>bug-208692-20200306022213.patch</filename>
            <type>text/plain</type>
            <size>23974</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdiMzA4ODQ2YzlmM2Q5
NWQ4NGViNzg2ZmQ4ZDFmYTcwMDAwNWE0OC4uYTViM2E1MjNkNzMwMTk1ZWVlNGYyOGJjZGRjN2Y4
Nzk4YmQyMTA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTAzLTA2ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyIHNob3VsZCBwcmVzZXJ2ZSBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODY5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIgcHJlc2VydmUgaW1hZ2VzIChpbWcgYW5kIFNWRykgYW5kIHRoZWlyIG9yZGVy
aW5nLAorICAgICAgICBhbmQgbGF5cyBkb3duIHRoZSBmb3VuZGF0aW9uIGZvciBwcmVzZXJ2aW5n
IG90aGVyIG5vbi10ZXh0IGNvbnRlbnQuCisKKyAgICAgICAgVG8gZG8gdGhpcywgdGhpcyBwYXRj
aCBpbnRyb2R1Y2VzIFBhcmFncmFwaENvbnRlbnRJdGVyYXRvciB3aGljaCB3cmFwcyBUZXh0SXRl
cmF0b3IgYW5kIGludHJvZHVjZXMKKyAgICAgICAgYSBzZWNvbmRhcnkgbm9kZSBpdGVyYXRpb24g
d2hpY2ggZGV0ZWN0cyBhbGwgbmRvZXMgdGhhdCBoYXZlIGJlZW4gc2tpcHBlZC4gSWRlYWxseSwg
d2Ugd291bGQgdXBkYXRlCisgICAgICAgIFRleHRJdGVyYXRvciB0byBkbyB0aGlzIG5hdGl2ZWx5
IGJ1dCB0aGlzIGlzIHRyaWNreSBkdWUgdG8gdGhlIG11bHRpdHVkZSBvZiB0aGUgbm9kZSB0cmF2
ZXJhbCBvcHRpb25zCisgICAgICAgIHN1cHBvcnRlZCBieSBUZXh0SXRlcmF0b3IgYXQgdGhlIG1v
bWVudC4gUGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjphZHZhbmNlIHN0b3BzIGF0IGV2ZXJ5IG5v
ZGUKKyAgICAgICAgaW5jbHVkaW5nIG9uZXMgdGhhdCBkbyBub3QgZ2VuZXJhdGUgdGV4dCBpbiBU
ZXh0aXRlcmF0b3IuIFRoaXMgYWxzbyBhbGxvd3MgbW9yZSBjb2RlIHNoYXJpbmcgYmV0d2Vlbgor
ICAgICAgICBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcidzIG9ic2VydmVQYXJhZ3JhcGhzIGFu
ZCByZXBsYWNlIGZ1bmN0aW9ucy4KKworICAgICAgICBGb3Igbm93LCB3ZSBzcGVjaWFsIGNhc2Ug
bm9kZXMgd2l0aCBSZW5kZXJSZXBsYWNlIGxpa2UgaW1nIGVsZW1lbnQgYW5kIHRoZSByb290IFNW
RyBlbGVtZW50LgorCisgICAgICAgIFRlc3RzOiBUZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4
dE1hbmlwdWxhdGlvblNob3VsZFByZXNlcnZlSW1hZ2VzQXNFeGNsdWRlZFRva2VucworICAgICAg
ICAgICAgICAgVGV4dE1hbmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVsYXRpb25TaG91bGRQ
cmVzZXJ2ZVNWR0FzRXhjbHVkZWRUb2tlbnMKKyAgICAgICAgICAgICAgIFRleHRNYW5pcHVsYXRp
b24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uU2hvdWxkUHJlc2VydmVPcmRlck9mQmxvY2tJbWFn
ZQorCisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhcmFncmFwaENvbnRlbnRJdGVyYXRvcjo6UGFyYWdyYXBoQ29udGVudEl0
ZXJhdG9yKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0
b3I6OmFkdmFuY2UpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhcmFncmFwaENvbnRlbnRJ
dGVyYXRvcjo6Y3VycmVudENvbnRlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhcmFn
cmFwaENvbnRlbnRJdGVyYXRvcjo6c3RhcnRQb3NpdGlvbik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjplbmRQb3NpdGlvbik6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjphdEVuZCBjb25zdCk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjptb3ZlQ3Vy
cmVudE5vZGVGb3J3YXJkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6b2JzZXJ2ZVBhcmFncmFwaHMpOiBBZG9wdGVkIFBhcmFncmFwaENvbnRl
bnRJdGVyYXRvci4gRm9yCisgICAgICAgIG5vZGVzIHdpdGggUmVuZGVyUmVwbGFjZSwgd2UgZ2Vu
ZXJhdGUgYW4gZXhjbHVkZWQgdG9rZW4gIltdIi4gUmVtb3ZlZCB0aGUgZGVhZCBjb2RlIHdoaWNo
IHdhcworICAgICAgICBjcmVhdGluZyBhIHN1YnJhbmdlIGZyb20gVGV4dEl0ZXJhdG9yLCBhbmQg
cmVuYW1lZCB0aGUgcHJldmlvdXNseSBtaXNsZWFkaW5nbHkgbmFtZWQgZW5kT2ZMYXN0TmV3TGlu
ZQorICAgICAgICB0byBzdGFydE9mQ3VycmVudExpbmUgZm9yIGNsYXJpdHkuCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZSk6IEFkb3B0ZWQgUGFy
YWdyYXBoQ29udGVudEl0ZXJhdG9yLiBGaXhlZCBhIGJ1ZyB0aGF0CisgICAgICAgIGV4Y2x1ZGVk
IGNvbnRlbnQgd2VyZSBhbHdheXMgYXNzdW1lZCB0byBiZSB0ZXh0LCBhbmQgYSBidWcgdGhhdCB0
aGUgcmVwbGFjZWQgY29udGVudCB3YXMgaW5zZXJ0ZWQKKyAgICAgICAgYXQgYSB3cm9uZyBsb2Nh
dGlvbiB3aGVuIGluc2VydGlvblBvaW50IGlzIGEgcG9zaXRpb24gYW5jaG9yZWQgYXQgYSBub2Rl
IGJlaW5nIHJlbW92ZWQuIEFsc28gZml4ZWQKKyAgICAgICAgYW4gb2J2aW91cyBidWcgdGhhdCB3
ZSB3ZXJlIGluc2VydGluZyByb290IHJlcGxhY2VkIGNvbnRlbnRzIGF0IHRoZSBwb3NpdGlvbiBi
ZWZvcmUgYSBub2RlIHdoaWNoCisgICAgICAgIGFwcGVhcnMgaW1tZWRpYXRlbHkgYmVmb3JlIGlu
c2VydGlvblBvaW50IGluc3RlYWQgb2YgYWZ0ZXI7IHRoaXMgYWxzbyByZXN1bHRlZCBpbiB0aGUg
cmVwbGFjZWQgY29udGVudAorICAgICAgICBiZWluZyBpbnNlcnRlZCBhdCBhIHdyb25nIGxvY2F0
aW9uIGluIHNvbWUgY2FzZXMuCisKIDIwMjAtMDMtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQmF0Y2ggb2JzZXJ2YXRpb25zIGFuZCBjb21wbGV0aW9ucyBv
ZiB0ZXh0IG1hbmlwdWxhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMTQwYTQzODY5Mzk2NjQzMTkyYTM5
ZTI1ZjkxMTVkMTE2NDUwZGEzNC4uMDlkMGVjZDU1YWNhMTA3NzI1MmUxMmNmYTVhN2ViYmUzNGQ0
MTAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlci5jcHAKQEAgLTEzOSw1NiArMTM5LDE0MiBAQCB2b2lkIFRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpzdGFydE9ic2VydmluZ1BhcmFncmFwaHMoTWFuaXB1bGF0aW9uSXRl
bUNhbGxiYQogICAgIGZsdXNoUGVuZGluZ0l0ZW1zRm9yQ2FsbGJhY2soKTsKIH0KIAorY2xhc3Mg
UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBQYXJhZ3JhcGhDb250ZW50
SXRlcmF0b3IoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQorICAg
ICAgICA6IG1faXRlcmF0b3Ioc3RhcnQsIGVuZCkKKyAgICAgICAgLCBtX2l0ZXJhdG9yTm9kZSht
X2l0ZXJhdG9yLmF0RW5kKCkgPyBudWxscHRyIDogbV9pdGVyYXRvci5yYW5nZSgpLT5maXJzdE5v
ZGUoKSkKKyAgICAgICAgLCBtX2N1cnJlbnROb2RlRm9yRmluZGluZ0ludmlzaWJsZUNvbnRlbnQo
c3RhcnQuZmlyc3ROb2RlKCkpCisgICAgICAgICwgbV9wYXN0RW5kTm9kZShlbmQuZmlyc3ROb2Rl
KCkpCisgICAgeworICAgIH0KKworICAgIHZvaWQgYWR2YW5jZSgpCisgICAgeworICAgICAgICAv
LyBGSVhNRTogQWRkIGEgbm9kZSBjYWxsYmFjayB0byBUZXh0SXRlcmF0b3IgaW5zdGVhZCBvZiB0
cmF2ZXJzaW5nIHRoZSBub2RlIHRyZWUgdHdpY2UgbGlrZSB0aGlzLgorICAgICAgICBpZiAobV9j
dXJyZW50Tm9kZUZvckZpbmRpbmdJbnZpc2libGVDb250ZW50ICE9IG1faXRlcmF0b3JOb2RlICYm
IG1fY3VycmVudE5vZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudCAhPSBtX3Bhc3RFbmROb2Rl
KSB7CisgICAgICAgICAgICBtb3ZlQ3VycmVudE5vZGVGb3J3YXJkKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9pdGVyYXRvci5hdEVuZCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gcHJldmlvdXNJdGVyYXRvck5vZGUgPSBt
X2l0ZXJhdG9yTm9kZTsKKworICAgICAgICBtX2l0ZXJhdG9yLmFkdmFuY2UoKTsKKyAgICAgICAg
bV9pdGVyYXRvck5vZGUgPSBtX2l0ZXJhdG9yLmF0RW5kKCkgPyBudWxscHRyIDogbV9pdGVyYXRv
ci5yYW5nZSgpLT5maXJzdE5vZGUoKTsKKyAgICAgICAgaWYgKHByZXZpb3VzSXRlcmF0b3JOb2Rl
ICE9IG1faXRlcmF0b3JOb2RlKQorICAgICAgICAgICAgbW92ZUN1cnJlbnROb2RlRm9yd2FyZCgp
OworICAgIH0KKworICAgIHN0cnVjdCBDdXJyZW50Q29udGVudCB7CisgICAgICAgIFJlZlB0cjxO
b2RlPiBub2RlOworICAgICAgICBTdHJpbmdWaWV3IHRleHQ7CisgICAgICAgIGJvb2wgaXNUZXh0
Q29udGVudCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgaXNSZXBsYWNlZENvbnRlbnQgeyBmYWxz
ZSB9OworICAgIH07CisKKyAgICBDdXJyZW50Q29udGVudCBjdXJyZW50Q29udGVudCgpCisgICAg
eworICAgICAgICBDdXJyZW50Q29udGVudCBjb250ZW50OworICAgICAgICBpZiAobV9jdXJyZW50
Tm9kZUZvckZpbmRpbmdJbnZpc2libGVDb250ZW50ICYmIG1fY3VycmVudE5vZGVGb3JGaW5kaW5n
SW52aXNpYmxlQ29udGVudCAhPSBtX2l0ZXJhdG9yTm9kZSkKKyAgICAgICAgICAgIGNvbnRlbnQg
PSB7IG1fY3VycmVudE5vZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudC5jb3B5UmVmKCksIFN0
cmluZ1ZpZXcgeyB9IH07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnRlbnQgPSB7IG1f
aXRlcmF0b3Iubm9kZSgpLCBtX2l0ZXJhdG9yLnRleHQoKSwgdHJ1ZSB9OworICAgICAgICBpZiAo
Y29udGVudC5ub2RlKSB7CisgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBjb250ZW50
Lm5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVu
ZGVyUmVwbGFjZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBjb250ZW50LmlzVGV4dENvbnRl
bnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY29udGVudC5pc1JlcGxhY2VkQ29udGVu
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBjb250ZW50OworICAgIH0KKworICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRQb3Np
dGlvbigpOworICAgIH0KKworICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2l0ZXJhdG9yLnJhbmdlKCktPmVuZFBvc2l0aW9uKCk7CisgICAgfQorCisg
ICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3IuYXRFbmQoKSAmJiBtX2N1
cnJlbnROb2RlRm9yRmluZGluZ0ludmlzaWJsZUNvbnRlbnQgPT0gbV9wYXN0RW5kTm9kZTsgfQor
Citwcml2YXRlOgorICAgIHZvaWQgbW92ZUN1cnJlbnROb2RlRm9yd2FyZCgpCisgICAgeworICAg
ICAgICBtX2N1cnJlbnROb2RlRm9yRmluZGluZ0ludmlzaWJsZUNvbnRlbnQgPSBOb2RlVHJhdmVy
c2FsOjpuZXh0KCptX2N1cnJlbnROb2RlRm9yRmluZGluZ0ludmlzaWJsZUNvbnRlbnQpOworICAg
ICAgICBpZiAoIW1fY3VycmVudE5vZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudCkKKyAgICAg
ICAgICAgIG1fY3VycmVudE5vZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudCA9IG1fcGFzdEVu
ZE5vZGU7CisgICAgfQorCisgICAgVGV4dEl0ZXJhdG9yIG1faXRlcmF0b3I7CisgICAgUmVmUHRy
PE5vZGU+IG1faXRlcmF0b3JOb2RlOworICAgIFJlZlB0cjxOb2RlPiBtX2N1cnJlbnROb2RlRm9y
RmluZGluZ0ludmlzaWJsZUNvbnRlbnQ7CisgICAgUmVmUHRyPE5vZGU+IG1fcGFzdEVuZE5vZGU7
Cit9OworCiB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpvYnNlcnZlUGFyYWdyYXBo
cyhWaXNpYmxlUG9zaXRpb24mIHN0YXJ0LCBWaXNpYmxlUG9zaXRpb24mIGVuZCkKIHsKICAgICBh
dXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihzdGFydC5kZWVwRXF1aXZhbGVudCgpLmRvY3VtZW50
KCkpOwogICAgIEFTU0VSVChkb2N1bWVudCk7Ci0gICAgVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yIHsg
c3RhcnQuZGVlcEVxdWl2YWxlbnQoKSwgZW5kLmRlZXBFcXVpdmFsZW50KCkgfTsKKyAgICBQYXJh
Z3JhcGhDb250ZW50SXRlcmF0b3IgaXRlcmF0b3IgeyBzdGFydC5kZWVwRXF1aXZhbGVudCgpLCBl
bmQuZGVlcEVxdWl2YWxlbnQoKSB9OwogICAgIGlmIChkb2N1bWVudCAhPSBzdGFydC5kZWVwRXF1
aXZhbGVudCgpLmRvY3VtZW50KCkgfHwgZG9jdW1lbnQgIT0gZW5kLmRlZXBFcXVpdmFsZW50KCku
ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOyAvLyBUZXh0SXRlcmF0b3IncyBjb25zdHJ1Y3Rv
ciBtYXkgaGF2ZSB1cGRhdGVkIHRoZSBsYXlvdXQgYW5kIGV4ZWN1dGVkIGFyYml0cmFyeSBzY3Jp
cHRzLgogCiAgICAgRXhjbHVzaW9uUnVsZU1hdGNoZXIgZXhjbHVzaW9uUnVsZU1hdGNoZXIobV9l
eGNsdXNpb25SdWxlcyk7CiAgICAgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiB0b2tlbnNJbkN1
cnJlbnRQYXJhZ3JhcGg7CiAgICAgUG9zaXRpb24gc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGggPSBz
dGFydC5kZWVwRXF1aXZhbGVudCgpOwotICAgIHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewot
ICAgICAgICBTdHJpbmdWaWV3IGN1cnJlbnRUZXh0ID0gaXRlcmF0b3IudGV4dCgpOwotCi0gICAg
ICAgIGlmIChzdGFydE9mQ3VycmVudFBhcmFncmFwaC5pc051bGwoKSkKLSAgICAgICAgICAgIHN0
YXJ0T2ZDdXJyZW50UGFyYWdyYXBoID0gaXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRQb3NpdGlvbigp
OwotCi0gICAgICAgIGlmIChhdXRvKiBjdXJyZW50Tm9kZSA9IGl0ZXJhdG9yLm5vZGUoKSkgewot
ICAgICAgICAgICAgaWYgKFJlZlB0cjxFbGVtZW50PiBjdXJyZW50RWxlbWVudEFuY2VzdG9yID0g
aXM8RWxlbWVudD4oY3VycmVudE5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4oY3VycmVudE5vZGUp
IDogY3VycmVudE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdEVsZW1lbnQoKSkgeworICAgIGZvciAo
OyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CisgICAgICAgIGF1dG8g
Y29udGVudCA9IGl0ZXJhdG9yLmN1cnJlbnRDb250ZW50KCk7CisgICAgICAgIGlmIChjb250ZW50
Lm5vZGUpIHsKKyAgICAgICAgICAgIGlmIChSZWZQdHI8RWxlbWVudD4gY3VycmVudEVsZW1lbnRB
bmNlc3RvciA9IGlzPEVsZW1lbnQ+KCpjb250ZW50Lm5vZGUpID8gZG93bmNhc3Q8RWxlbWVudD4o
Y29udGVudC5ub2RlLmdldCgpKSA6IGNvbnRlbnQubm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0RWxl
bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzSW5NYW5pcHVsYXRlZEVsZW1lbnQoKmN1
cnJlbnRFbGVtZW50QW5jZXN0b3IpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIFdl
IGNhbiBleGl0IGVhcmx5IGhlcmUgYmVjYXVzZSBzY2hlZHVsZU9ic2VydmFydGlvblVwZGF0ZSBj
YWxscyB0aGlzIGZ1bmN0aW9uIG9uIGVhY2ggcGFyYWdyYXBoIHNlcGFyYXRlbHkuCiAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChzdGFydE9mQ3VycmVudFBhcmFncmFwaC5pc051bGwo
KSkKKyAgICAgICAgICAgICAgICBzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9IGl0ZXJhdG9yLnN0
YXJ0UG9zaXRpb24oKTsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBlbmRPZkxhc3ROZXdM
aW5lID0gMDsKLSAgICAgICAgc2l6ZV90IG9mZnNldE9mTmV4dE5ld0xpbmUgPSAwOwotICAgICAg
ICB3aGlsZSAoKG9mZnNldE9mTmV4dE5ld0xpbmUgPSBjdXJyZW50VGV4dC5maW5kKCdcbicsIGVu
ZE9mTGFzdE5ld0xpbmUpKSAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgaWYgKGVuZE9mTGFz
dE5ld0xpbmUgPCBvZmZzZXRPZk5leHROZXdMaW5lKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBz
dHJpbmdVbnRpbEVuZE9mTGluZSA9IGN1cnJlbnRUZXh0LnN1YnN0cmluZyhlbmRPZkxhc3ROZXdM
aW5lLCBvZmZzZXRPZk5leHROZXdMaW5lIC0gZW5kT2ZMYXN0TmV3TGluZSkudG9TdHJpbmcoKTsK
LSAgICAgICAgICAgICAgICB0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1hbmlwdWxh
dGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUoKSwgc3RyaW5nVW50aWxFbmRP
ZkxpbmUsIGV4Y2x1c2lvblJ1bGVNYXRjaGVyLmlzRXhjbHVkZWQoaXRlcmF0b3Iubm9kZSgpKSB9
KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbnRlbnQuaXNSZXBsYWNlZENvbnRlbnQp
IHsKKyAgICAgICAgICAgIHRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5hcHBlbmQoTWFuaXB1bGF0
aW9uVG9rZW4geyBtX3Rva2VuSWRlbnRpZmllci5nZW5lcmF0ZSgpLCAiW10iLCB0cnVlIC8qIGlz
RXhjbHVkZWQgKi99KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCFjb250ZW50LmlzVGV4dENvbnRlbnQpCisgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICAgICAgYXV0byBsYXN0UmFuZ2UgPSBpdGVyYXRvci5yYW5nZSgpOwotICAgICAgICAg
ICAgaWYgKG9mZnNldE9mTmV4dE5ld0xpbmUgPCBjdXJyZW50VGV4dC5sZW5ndGgoKSkgewotICAg
ICAgICAgICAgICAgIGxhc3RSYW5nZS0+c2V0U3RhcnQoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVO
b2RlKGl0ZXJhdG9yLm5vZGUoKSkpOyAvLyBNb3ZlIHRoZSBzdGFydCB0byB0aGUgYmVnaW5uaW5n
IG9mIHRoZSBjdXJyZW50IG5vZGUuCi0gICAgICAgICAgICAgICAgVGV4dEl0ZXJhdG9yOjpzdWJy
YW5nZShsYXN0UmFuZ2UsIDAsIG9mZnNldE9mTmV4dE5ld0xpbmUpOworICAgICAgICBzaXplX3Qg
c3RhcnRPZkN1cnJlbnRMaW5lID0gMDsKKyAgICAgICAgc2l6ZV90IG9mZnNldE9mTmV4dE5ld0xp
bmUgPSAwOworICAgICAgICBTdHJpbmdWaWV3IGN1cnJlbnRUZXh0ID0gY29udGVudC50ZXh0Owor
ICAgICAgICB3aGlsZSAoKG9mZnNldE9mTmV4dE5ld0xpbmUgPSBjdXJyZW50VGV4dC5maW5kKCdc
bicsIHN0YXJ0T2ZDdXJyZW50TGluZSkpICE9IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBpZiAo
c3RhcnRPZkN1cnJlbnRMaW5lIDwgb2Zmc2V0T2ZOZXh0TmV3TGluZSkgeworICAgICAgICAgICAg
ICAgIGF1dG8gc3RyaW5nVW50aWxFbmRPZkxpbmUgPSBjdXJyZW50VGV4dC5zdWJzdHJpbmcoc3Rh
cnRPZkN1cnJlbnRMaW5lLCBvZmZzZXRPZk5leHROZXdMaW5lIC0gc3RhcnRPZkN1cnJlbnRMaW5l
KS50b1N0cmluZygpOworICAgICAgICAgICAgICAgIHRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5h
cHBlbmQoTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2VuSWRlbnRpZmllci5nZW5lcmF0ZSgpLCBz
dHJpbmdVbnRpbEVuZE9mTGluZSwgZXhjbHVzaW9uUnVsZU1hdGNoZXIuaXNFeGNsdWRlZChjb250
ZW50Lm5vZGUuZ2V0KCkpIH0pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUG9zaXRpb24g
ZW5kT2ZDdXJyZW50UGFyYWdyYXBoID0gbGFzdFJhbmdlLT5lbmRQb3NpdGlvbigpOwogCi0gICAg
ICAgICAgICBpZiAoIXRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBpZiAoIXRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgICAgICBQb3NpdGlvbiBlbmRPZkN1cnJlbnRQYXJhZ3JhcGggPSBpdGVyYXRvci5lbmRQb3Np
dGlvbigpOworICAgICAgICAgICAgICAgIGlmIChpczxUZXh0Pihjb250ZW50Lm5vZGUpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8mIHRleHROb2RlID0gZG93bmNhc3Q8VGV4dD4oKmNvbnRl
bnQubm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGVuZE9mQ3VycmVudFBhcmFncmFwaCA9IFBv
c2l0aW9uKCZ0ZXh0Tm9kZSwgb2Zmc2V0T2ZOZXh0TmV3TGluZSk7CisgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoID0gUG9zaXRpb24oJnRleHROb2RlLCBvZmZzZXRP
Zk5leHROZXdMaW5lICsgMSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFk
ZEl0ZW0oc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGgsIGVuZE9mQ3VycmVudFBhcmFncmFwaCwgV1RG
TW92ZSh0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGgpKTsKLSAgICAgICAgICAgIHN0YXJ0T2ZDdXJy
ZW50UGFyYWdyYXBoLmNsZWFyKCk7Ci0gICAgICAgICAgICBlbmRPZkxhc3ROZXdMaW5lID0gb2Zm
c2V0T2ZOZXh0TmV3TGluZSArIDE7CisgICAgICAgICAgICAgICAgc3RhcnRPZkN1cnJlbnRQYXJh
Z3JhcGguY2xlYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXJ0T2ZDdXJyZW50
TGluZSA9IG9mZnNldE9mTmV4dE5ld0xpbmUgKyAxOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byByZW1haW5pbmdUZXh0ID0gY3VycmVudFRleHQuc3Vic3RyaW5nKGVuZE9mTGFzdE5ld0xpbmUp
OworICAgICAgICBhdXRvIHJlbWFpbmluZ1RleHQgPSBjdXJyZW50VGV4dC5zdWJzdHJpbmcoc3Rh
cnRPZkN1cnJlbnRMaW5lKTsKICAgICAgICAgaWYgKHJlbWFpbmluZ1RleHQubGVuZ3RoKCkpCi0g
ICAgICAgICAgICB0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1hbmlwdWxhdGlvblRv
a2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUoKSwgcmVtYWluaW5nVGV4dC50b1N0cmlu
ZygpLCBleGNsdXNpb25SdWxlTWF0Y2hlci5pc0V4Y2x1ZGVkKGl0ZXJhdG9yLm5vZGUoKSkgfSk7
Ci0KLSAgICAgICAgaXRlcmF0b3IuYWR2YW5jZSgpOworICAgICAgICAgICAgdG9rZW5zSW5DdXJy
ZW50UGFyYWdyYXBoLmFwcGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVy
LmdlbmVyYXRlKCksIHJlbWFpbmluZ1RleHQudG9TdHJpbmcoKSwgZXhjbHVzaW9uUnVsZU1hdGNo
ZXIuaXNFeGNsdWRlZChjb250ZW50Lm5vZGUuZ2V0KCkpIH0pOwogICAgIH0KIAogICAgIGlmICgh
dG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLmlzRW1wdHkoKSkKQEAgLTMzNSwzNiArNDIxLDM4IEBA
IGF1dG8gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UoY29uc3QgTWFuaXB1bGF0
aW9uSXRlbURhdGEmIGl0ZW0sIGNvbnN0CiAgICAgaWYgKGl0ZW0uc3RhcnQuaXNPcnBoYW4oKSB8
fCBpdGVtLmVuZC5pc09ycGhhbigpKQogICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uRmFpbHVy
ZVR5cGU6OkNvbnRlbnRDaGFuZ2VkOwogCi0gICAgVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yIHsgaXRl
bS5zdGFydCwgaXRlbS5lbmQgfTsKICAgICBzaXplX3QgY3VycmVudFRva2VuSW5kZXggPSAwOwog
ICAgIEhhc2hNYXA8VG9rZW5JZGVudGlmaWVyLCBUb2tlbkV4Y2hhbmdlRGF0YT4gdG9rZW5FeGNo
YW5nZU1hcDsKIAogICAgIFJlZlB0cjxOb2RlPiBjb21tb25BbmNlc3RvcjsKLSAgICB3aGlsZSAo
IWl0ZXJhdG9yLmF0RW5kKCkpIHsKLSAgICAgICAgYXV0byBzdHJpbmcgPSBpdGVyYXRvci50ZXh0
KCkudG9TdHJpbmcoKTsKKyAgICBQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IgaXRlcmF0b3IgeyBp
dGVtLnN0YXJ0LCBpdGVtLmVuZCB9OworICAgIEhhc2hTZXQ8UmVmPE5vZGU+PiBleGNsdWRlZE5v
ZGVzOworICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7
CisgICAgICAgIGF1dG8gY29udGVudCA9IGl0ZXJhdG9yLmN1cnJlbnRDb250ZW50KCk7CisKKyAg
ICAgICAgaWYgKCFjb250ZW50LmlzUmVwbGFjZWRDb250ZW50ICYmICFjb250ZW50LmlzVGV4dENv
bnRlbnQpCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBpZiAoY3VycmVudFRva2Vu
SW5kZXggPj0gaXRlbS50b2tlbnMuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxh
dGlvbkZhaWx1cmVUeXBlOjpDb250ZW50Q2hhbmdlZDsKKwogICAgICAgICBhdXRvJiBjdXJyZW50
VG9rZW4gPSBpdGVtLnRva2Vuc1tjdXJyZW50VG9rZW5JbmRleF07Ci0gICAgICAgIGlmIChpdGVy
YXRvci50ZXh0KCkgIT0gY3VycmVudFRva2VuLmNvbnRlbnQpCisgICAgICAgIGlmICghY29udGVu
dC5pc1JlcGxhY2VkQ29udGVudCAmJiBjb250ZW50LnRleHQgIT0gY3VycmVudFRva2VuLmNvbnRl
bnQpCiAgICAgICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkNvbnRlbnRD
aGFuZ2VkOwogCi0gICAgICAgIGF1dG8gY3VycmVudE5vZGUgPSBtYWtlUmVmUHRyKGl0ZXJhdG9y
Lm5vZGUoKSk7Ci0gICAgICAgIHRva2VuRXhjaGFuZ2VNYXAuc2V0KGN1cnJlbnRUb2tlbi5pZGVu
dGlmaWVyLCBUb2tlbkV4Y2hhbmdlRGF0YSB7IGN1cnJlbnROb2RlLmNvcHlSZWYoKSwgY3VycmVu
dFRva2VuLmNvbnRlbnQsIGN1cnJlbnRUb2tlbi5pc0V4Y2x1ZGVkIH0pOworICAgICAgICB0b2tl
bkV4Y2hhbmdlTWFwLnNldChjdXJyZW50VG9rZW4uaWRlbnRpZmllciwgVG9rZW5FeGNoYW5nZURh
dGEgeyBjb250ZW50Lm5vZGUuY29weVJlZigpLCBjdXJyZW50VG9rZW4uY29udGVudCwgY3VycmVu
dFRva2VuLmlzRXhjbHVkZWQgfSk7CisgICAgICAgICsrY3VycmVudFRva2VuSW5kZXg7CiAKLSAg
ICAgICAgaWYgKGN1cnJlbnROb2RlKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGFrZSBjYXJl
IG9mIHdoZW4gY3VycmVudE5vZGUgaXMgbnVsbHB0ci4KKyAgICAgICAgLy8gRklYTUU6IFRha2Ug
Y2FyZSBvZiB3aGVuIGN1cnJlbnROb2RlIGlzIG51bGxwdHIuCisgICAgICAgIGlmIChjb250ZW50
Lm5vZGUpIHsKICAgICAgICAgICAgIGlmICghY29tbW9uQW5jZXN0b3IpCi0gICAgICAgICAgICAg
ICAgY29tbW9uQW5jZXN0b3IgPSBjdXJyZW50Tm9kZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFj
dXJyZW50Tm9kZS0+aXNEZXNjZW5kYW50T2YoY29tbW9uQW5jZXN0b3IuZ2V0KCkpKSB7Ci0gICAg
ICAgICAgICAgICAgY29tbW9uQW5jZXN0b3IgPSBSYW5nZTo6Y29tbW9uQW5jZXN0b3JDb250YWlu
ZXIoY29tbW9uQW5jZXN0b3IuZ2V0KCksIGN1cnJlbnROb2RlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBjb21tb25BbmNlc3RvciA9IGNvbnRlbnQubm9kZTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KCFjb250ZW50Lm5vZGUtPmlzRGVzY2VuZGFudE9mKGNvbW1vbkFuY2VzdG9yLmdldCgpKSkgewor
ICAgICAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yID0gUmFuZ2U6OmNvbW1vbkFuY2VzdG9yQ29u
dGFpbmVyKGNvbW1vbkFuY2VzdG9yLmdldCgpLCBjb250ZW50Lm5vZGUuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChjb21tb25BbmNlc3Rvcik7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLQotICAgICAgICBpdGVyYXRvci5hZHZhbmNlKCk7Ci0gICAgICAgICsrY3VycmVudFRva2Vu
SW5kZXg7CiAgICAgfQotICAgIEFTU0VSVChjb21tb25BbmNlc3Rvcik7CiAKICAgICBSZWZQdHI8
Tm9kZT4gbm9kZUFmdGVyU3RhcnQgPSBpdGVtLnN0YXJ0LmNvbXB1dGVOb2RlQWZ0ZXJQb3NpdGlv
bigpOwogICAgIGlmICghbm9kZUFmdGVyU3RhcnQpCkBAIC0zOTgsNyArNDg2LDkgQEAgYXV0byBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVt
RGF0YSYgaXRlbSwgY29uc3QKICAgICAgICAgICAgIGV4Y2hhbmdlRGF0YS5pc0NvbnN1bWVkID0g
dHJ1ZTsKICAgICAgICAgICAgIGlmICghbmV3VG9rZW4uY29udGVudC5pc051bGwoKSAmJiBuZXdU
b2tlbi5jb250ZW50ICE9IGV4Y2hhbmdlRGF0YS5vcmlnaW5hbENvbnRlbnQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpFeGNsdXNpb25WaW9sYXRpb247
Ci0gICAgICAgICAgICBjb250ZW50Tm9kZSA9IFRleHQ6OmNyZWF0ZShjb21tb25BbmNlc3Rvci0+
ZG9jdW1lbnQoKSwgZXhjaGFuZ2VEYXRhLm9yaWdpbmFsQ29udGVudCk7CisgICAgICAgICAgICBj
b250ZW50Tm9kZSA9IGV4Y2hhbmdlRGF0YS5ub2RlOworICAgICAgICAgICAgZm9yIChSZWZQdHI8
Tm9kZT4gY3VycmVudERlc2NlbmRlbnROb2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqY29udGVu
dE5vZGUsIGNvbnRlbnROb2RlLmdldCgpKTsgY3VycmVudERlc2NlbmRlbnROb2RlOyBjdXJyZW50
RGVzY2VuZGVudE5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpjdXJyZW50RGVzY2VuZGVudE5v
ZGUsIGNvbnRlbnROb2RlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBub2Rlc1RvUmVtb3ZlLnJl
bW92ZSgqY3VycmVudERlc2NlbmRlbnROb2RlKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBjb250ZW50Tm9kZSA9IFRleHQ6OmNyZWF0ZShjb21tb25BbmNlc3Rvci0+ZG9jdW1lbnQoKSwg
bmV3VG9rZW4uY29udGVudCk7CiAKQEAgLTQzNiwxNyArNTI2LDIxIEBAIGF1dG8gVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UoY29uc3QgTWFuaXB1bGF0aW9uSXRlbURhdGEmIGl0
ZW0sIGNvbnN0CiAgICAgfQogCiAgICAgUG9zaXRpb24gaW5zZXJ0aW9uUG9pbnQgPSBpdGVtLnN0
YXJ0OworICAgIGlmIChpbnNlcnRpb25Qb2ludC5hbmNob3JOb2RlKCkgIT0gaW5zZXJ0aW9uUG9p
bnQuY29udGFpbmVyTm9kZSgpKQorICAgICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGlvblBv
aW50LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIHdoaWxlIChpbnNlcnRpb25Qb2lu
dC5jb250YWluZXJOb2RlKCkgIT0gY29tbW9uQW5jZXN0b3IpCiAgICAgICAgIGluc2VydGlvblBv
aW50ID0gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoaW5zZXJ0aW9uUG9pbnQuY29udGFpbmVy
Tm9kZSgpKTsKICAgICBBU1NFUlQoIWluc2VydGlvblBvaW50LmlzTnVsbCgpKTsKKyAgICBBU1NF
UlQoIWluc2VydGlvblBvaW50LmlzT3JwaGFuKCkpOwogCiAgICAgZm9yIChhdXRvJiBub2RlIDog
bm9kZXNUb1JlbW92ZSkKICAgICAgICAgbm9kZS0+cmVtb3ZlKCk7CiAKICAgICBmb3IgKGF1dG8m
IGluc2VydGlvbiA6IGluc2VydGlvbnMpIHsKLSAgICAgICAgaWYgKCFpbnNlcnRpb24ucGFyZW50
SWZEaWZmZXJlbnRGcm9tQ29tbW9uQW5jZXN0b3IpCi0gICAgICAgICAgICBpbnNlcnRpb25Qb2lu
dC5jb250YWluZXJOb2RlKCktPmluc2VydEJlZm9yZShpbnNlcnRpb24uY2hpbGQsIGluc2VydGlv
blBvaW50LmNvbXB1dGVOb2RlQmVmb3JlUG9zaXRpb24oKSk7Ci0gICAgICAgIGVsc2UKKyAgICAg
ICAgaWYgKCFpbnNlcnRpb24ucGFyZW50SWZEaWZmZXJlbnRGcm9tQ29tbW9uQW5jZXN0b3IpIHsK
KyAgICAgICAgICAgIGluc2VydGlvblBvaW50LmNvbnRhaW5lck5vZGUoKS0+aW5zZXJ0QmVmb3Jl
KGluc2VydGlvbi5jaGlsZCwgaW5zZXJ0aW9uUG9pbnQuY29tcHV0ZU5vZGVBZnRlclBvc2l0aW9u
KCkpOworICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBwb3NpdGlvbkluUGFyZW50QWZ0ZXJO
b2RlKGluc2VydGlvbi5jaGlsZC5wdHIoKSk7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
aW5zZXJ0aW9uLnBhcmVudElmRGlmZmVyZW50RnJvbUNvbW1vbkFuY2VzdG9yLT5hcHBlbmRDaGls
ZChpbnNlcnRpb24uY2hpbGQpOwogICAgICAgICBpZiAoaXM8RWxlbWVudD4oaW5zZXJ0aW9uLmNo
aWxkLmdldCgpKSkKICAgICAgICAgICAgIG1fbWFuaXB1bGF0ZWRFbGVtZW50cy5hZGQoZG93bmNh
c3Q8RWxlbWVudD4oaW5zZXJ0aW9uLmNoaWxkLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTE2OGE4MDU1NDZmZTZiN2YyNzI5MGI0
Mzg5YTkyYzQwODdlNDBjYS4uMjhmMDdjNTE5ZDE4NTAyYjNlZWE0ZGRlNGQxOTUwMTNhMWMxZGRl
YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDIwLTAzLTA2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyIHNob3VsZCBwcmVzZXJ2ZSBp
bWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODY5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIHRlc3RzIGZvciBwcmVzZXJ2aW5nIGltYWdlcyBhbmQgdGhlaXIgb3JkZXJpbmcuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24u
bW06CisgICAgICAgIChUZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblNo
b3VsZFByZXNlcnZlSW1hZ2VzQXNFeGNsdWRlZFRva2Vucyk6CisgICAgICAgIChUZXh0TWFuaXB1
bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblNob3VsZFByZXNlcnZlU1ZHQXNFeGNsdWRl
ZFRva2Vucyk6CisgICAgICAgIChUZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxh
dGlvblNob3VsZFByZXNlcnZlT3JkZXJPZkJsb2NrSW1hZ2UpOgorCiAyMDIwLTAzLTAzICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEJhdGNoIG9ic2VydmF0aW9u
cyBhbmQgY29tcGxldGlvbnMgb2YgdGV4dCBtYW5pcHVsYXRpb25zCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0K
aW5kZXggNjI3OTgzZDgwYTg1Mzk1NDRhNmQ0MGYzMWJjNTA5ZDkyNTNkMDdlMy4uYjAzNDhjOTlm
Zjc2NDE4ZjRkM2EyMjhlZTQ5NzJhNWQ5MTdhMGQ4MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQpAQCAt
Njk3LDYgKzY5NywxMzMgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5p
cHVsYXRpb25SZXBsYWNlTXVsdGlwbGVTaW1wbGVQYXJhZ3JhcGhzQXQKICAgICAgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1M
Il0pOwogfQogCitURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlv
blNob3VsZFByZXNlcnZlSW1hZ2VzQXNFeGNsdWRlZFRva2VucykKK3sKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgX3NldFRl
eHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48
ZGl2PmhlbGxvLCA8aW1nIHNyYz1cImFwcGxlLmdpZlwiPiB3b3JsZDwvZGl2PjwvYm9keT48L2h0
bWw+Il07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N0YXJ0VGV4dE1hbmlw
dWxhdGlvbnNXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbjpeeworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
CisgICAgYXV0byAqaXRlbXMgPSBbZGVsZWdhdGUgaXRlbXNdOworICAgIEVYUEVDVF9FUShpdGVt
cy5jb3VudCwgMVVMKTsKKyAgICBhdXRvICp0b2tlbnMgPSBpdGVtc1swXS50b2tlbnM7CisgICAg
RVhQRUNUX0VRKHRva2Vucy5jb3VudCwgM1VMKTsKKyAgICBFWFBFQ1RfU1RSRVEoImhlbGxvLCAi
LCB0b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfRkFMU0UodG9rZW5z
WzBdLmlzRXhjbHVkZWQpOworICAgIEVYUEVDVF9TVFJFUSgiW10iLCB0b2tlbnNbMV0uY29udGVu
dC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfVFJVRSh0b2tlbnNbMV0uaXNFeGNsdWRlZCk7Cisg
ICAgRVhQRUNUX1NUUkVRKCIgd29ybGQiLCB0b2tlbnNbMl0uY29udGVudC5VVEY4U3RyaW5nKTsK
KyAgICBFWFBFQ1RfRkFMU0UodG9rZW5zWzJdLmlzRXhjbHVkZWQpOworCisgICAgZG9uZSA9IGZh
bHNlOworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAWyhf
V0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwg
eworICAgICAgICB7IHRva2Vuc1swXS5pZGVudGlmaWVyLCBAInRoaXMgaXMgIiB9LAorICAgICAg
ICB7IHRva2Vuc1sxXS5pZGVudGlmaWVyLCBuaWwgfSwKKyAgICAgICAgeyB0b2tlbnNbMl0uaWRl
bnRpZmllciwgQCIgYSB0ZXN0IiB9CisgICAgfSldIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJy
b3IgKj4gKmVycm9ycykgeworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLCBuaWwpOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgIEVYUEVDVF9XS19TVFJFUSgiPGRpdj50aGlzIGlzIDxpbWcgc3JjPVwiYXBwbGUu
Z2lmXCI+IGEgdGVzdDwvZGl2PiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKK30KKworVEVTVChUZXh0TWFuaXB1bGF0
aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25TaG91bGRQcmVzZXJ2ZVNWR0FzRXhjbHVkZWRU
b2tlbnMpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXh0TWFuaXB1bGF0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAw
KV0pOworICAgIFt3ZWJWaWV3IF9zZXRUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPCFE
T0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+IgorICAgICI8c2VjdGlvbj48ZGl2IHN0eWxlPVwiZGlz
cGxheTogaW5saW5lLWJsb2NrO1wiPmhlbGxvPC9kaXY+IgorICAgICI8ZGl2IHN0eWxlPVwiZGlz
cGxheTogaW5saW5lLWJsb2NrO1wiPjxzcGFuIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWZsZXg7
XCI+IgorICAgICI8c3ZnIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0
PVwiMjBcIj48cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwiIzA2ZlwiPjwv
cmVjdD48L3N2Zz4iCisgICAgIjwvc3Bhbj48L2Rpdj48L3NlY3Rpb24+PHA+d29ybGQ8L3A+PC9i
b2R5PjwvaHRtbD4iXTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfc3RhcnRU
ZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uOl57CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisKKyAgICBhdXRvICppdGVtcyA9IFtkZWxlZ2F0ZSBpdGVtc107CisgICAgRVhQRUNU
X0VRKGl0ZW1zLmNvdW50LCAyVUwpOworICAgIGF1dG8gKnRva2VucyA9IGl0ZW1zWzBdLnRva2Vu
czsKKyAgICBFWFBFQ1RfRVEodG9rZW5zLmNvdW50LCAyVUwpOworICAgIEVYUEVDVF9TVFJFUSgi
aGVsbG8iLCB0b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
dG9rZW5zWzBdLmlzRXhjbHVkZWQpOworICAgIEVYUEVDVF9TVFJFUSgiW10iLCB0b2tlbnNbMV0u
Y29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfVFJVRSh0b2tlbnNbMV0uaXNFeGNsdWRl
ZCk7CisgICAgCisgICAgRVhQRUNUX0VRKGl0ZW1zWzFdLnRva2Vucy5jb3VudCwgMVVMKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoIndvcmxkIiwgaXRlbXNbMV0udG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0
cmluZyk7CisgICAgRVhQRUNUX0ZBTFNFKGl0ZW1zWzFdLnRva2Vuc1swXS5pc0V4Y2x1ZGVkKTsK
KworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0
aW9uRm9ySXRlbXM6QFsoX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1z
WzBdLmlkZW50aWZpZXIsIHsKKyAgICAgICAgeyB0b2tlbnNbMF0uaWRlbnRpZmllciwgQCJoZXki
IH0sCisgICAgICAgIHsgdG9rZW5zWzFdLmlkZW50aWZpZXIsIG5pbCB9LAorICAgIH0pXSBjb21w
bGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VR
KGVycm9ycywgbmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjxzZWN0aW9u
PjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCI+aGV5PC9kaXY+IgorICAgICI8
ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPjxzcGFuIHN0eWxlPVwiZGlzcGxh
eTogaW5saW5lLWZsZXg7XCI+IgorICAgICI8c3ZnIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB3aWR0
aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIj48cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBm
aWxsPVwiIzA2ZlwiPjwvcmVjdD48L3N2Zz4iCisgICAgIjwvc3Bhbj48L2Rpdj48L3NlY3Rpb24+
PHA+d29ybGQ8L3A+IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOworfQorCitURVNUKFRleHRNYW5pcHVsYXRpb24sIENv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvblNob3VsZFByZXNlcnZlT3JkZXJPZkJsb2NrSW1hZ2UpCit7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAg
IFt3ZWJWaWV3IF9zZXRUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwor
CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPCFET0NUWVBFIGh0
bWw+PGh0bWw+PGJvZHk+PHN2ZyB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgd2lkdGg9XCIxMDBcIiBo
ZWlnaHQ9XCIxMDBcIj4iCisgICAgIjxyZWN0IHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIGZp
bGw9XCJyZWRcIj48L3JlY3Q+PC9zdmc+PGltZyBzcmM9XCJkYXRhOmltYWdlL3BuZztiYXNlNjQs
aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFFIgorICAgICJBQUFBQkNBSUFBQUNRZDFQZUFBQUFB
WE5TUjBJQXJzNGM2UUFBQUF4SlJFRlVDTmRqWUtobkFBQUJBZ0NBYlY3dFp3QUFBQUJKUlU1RXJr
SmdnZz09XCIiCisgICAgInN0eWxlPVwiZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDBweDtcIj48
c2VjdGlvbj5oZWxsbG8gd29ybGQ8L3NlY3Rpb24+PC9ib2R5PjwvaHRtbD4iXTsKKworICAgIGRv
bmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25m
aWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uOl57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBhdXRvICppdGVt
cyA9IFtkZWxlZ2F0ZSBpdGVtc107CisgICAgRVhQRUNUX0VRKGl0ZW1zLmNvdW50LCAyVUwpOwor
ICAgIEVYUEVDVF9FUShpdGVtc1swXS50b2tlbnMuY291bnQsIDFVTCk7CisgICAgRVhQRUNUX1NU
UkVRKCJbXSIsIGl0ZW1zWzBdLnRva2Vuc1swXS5jb250ZW50LlVURjhTdHJpbmcpOworICAgIEVY
UEVDVF9UUlVFKGl0ZW1zWzBdLnRva2Vuc1swXS5pc0V4Y2x1ZGVkKTsKKworICAgIGF1dG8gKnRv
a2VucyA9IGl0ZW1zWzFdLnRva2VuczsKKyAgICBFWFBFQ1RfRVEodG9rZW5zLmNvdW50LCAxVUwp
OworICAgIEVYUEVDVF9TVFJFUSgiaGVsbGxvIHdvcmxkIiwgdG9rZW5zWzBdLmNvbnRlbnQuVVRG
OFN0cmluZyk7CisgICAgRVhQRUNUX0ZBTFNFKHRva2Vuc1swXS5pc0V4Y2x1ZGVkKTsKKworICAg
IGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9y
SXRlbXM6QFsKKyAgICAgICAgKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRlbShp
dGVtc1swXS5pZGVudGlmaWVyLCB7IHsgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIG5p
bCB9IH0pLAorICAgICAgICAoX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0
ZW1zWzFdLmlkZW50aWZpZXIsIHsgeyBpdGVtc1sxXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJo
ZWxsbywgd29ybGQiIH0gfSksCisgICAgXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+
ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoIjxzdmcgdmlld0JveD1cIjAgMCAxMCAxMFwiIHdpZHRoPVwi
MTAwXCIgaGVpZ2h0PVwiMTAwXCI+PHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgZmls
bD1cInJlZFwiPjwvcmVjdD48L3N2Zz4iCisgICAgIjxpbWcgc3JjPVwiZGF0YTppbWFnZS9wbmc7
YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBRUFBQUFCQ0FJQUFBQ1FkMVBlQUFBQUFY
TlNSMElBcnM0YzZRQUFBQXhKUkVGVUNOIgorICAgICJkallLaG5BQUFCQWdDQWJWN3Rad0FBQUFC
SlJVNUVya0pnZ2c9PVwiIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDBweDtcIj48
c2VjdGlvbj5oZWxsbywgd29ybGQ8L3NlY3Rpb24+IiwKKyAgICAgICAgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOworfQor
CiBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblNob3VsZEJh
dGNoSXRlbUNhbGxiYWNrKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGV4dE1h
bmlwdWxhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cg==
</data>
<flag name="review"
          id="408087"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>