<?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>90859</bug_id>
          
          <creation_ts>2012-07-10 01:59:31 -0700</creation_ts>
          <short_desc>ShadowDOM for &lt;iframe&gt;</short_desc>
          <delta_ts>2013-01-06 20:48:20 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>82313</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>hayato</cc>
    
    <cc>webcomponents-bugzilla</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>665576</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-07-10 01:59:31 -0700</bug_when>
    <thetext>According to the spec, &lt;iframe&gt; should behave like having a Shadow DOM.
https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#html-elements-and-their-shadow-dom-subtrees</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705105</commentid>
    <comment_count>1</comment_count>
      <attachid>160680</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-08-27 02:30:49 -0700</bug_when>
    <thetext>Created attachment 160680
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717407</commentid>
    <comment_count>2</comment_count>
      <attachid>163407</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-09-11 11:18:35 -0700</bug_when>
    <thetext>Created attachment 163407
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801144</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-06 20:48:20 -0800</bug_when>
    <thetext>We don&apos;t have a plan to implement this. Marking WONTFIX.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160680</attachid>
            <date>2012-08-27 02:30:49 -0700</date>
            <delta_ts>2012-09-11 11:18:32 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-90859-20120827183042.patch</filename>
            <type>text/plain</type>
            <size>26022</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVlMDEzZWFkMDkzOGM4
YTQxZTc3NmRmZjExMjdjOTAxZGU2ZTJiNi4uMzUwYTRjYzQ4NTkwZGFjNTM5YTEyYWIwZGRlYzI0
N2EzNTQ1OGJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA4LTI3ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBTaGFkb3dET00gZm9yIDxp
ZnJhbWU+LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTA4NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
SVAuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6b3BlblVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6YXR0YWNoKToKKyAgICAgICAgKiBodG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OnJlbmRlcldpZGdldCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChI
VE1MRnJhbWVPd25lckVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SUZyYW1lRWxlbWVudDo6c2V0SUZyYW1lSWZOZWNlc3Nh
cnkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJRnJhbWVFbGVtZW50
OjpjcmVhdGVSZW5kZXJlckZvcklGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1l
RWxlbWVudDo6d2lsbEFkZEF1dGhvclNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElGcmFtZUVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElGcmFtZUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1l
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSUZyYW1lRWxlbWVudCk6CisgICAg
ICAgIChIVE1MSUZyYW1lRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxJRnJhbWVF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSFRNTElGcmFtZUVsZW1lbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTFRhZ05hbWVzLmluOgorICAgICAgICAqIGh0bWwvc2hhZG93L0lGcmFtZUlu
bmVyRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJRnJhbWVJbm5lckVsZW1lbnQ6OklGcmFtZUlubmVyRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJRnJhbWVJbm5lckVsZW1lbnQ6Omhvc3RJRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SUZyYW1lSW5uZXJFbGVtZW50OjpmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJRnJhbWVJ
bm5lckVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpJRnJhbWVJbm5lckVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklGcmFtZUlubmVyRWxlbWVu
dDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0lGcmFtZUlubmVyRWxl
bWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSUZyYW1lSW5uZXJF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklGcmFtZUlubmVyRWxlbWVudDo6aUZyYW1lUmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SUZyYW1lSW5uZXJFbGVtZW50OjpjYW5TdGFydFNl
bGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJRnJhbWVJbm5lckVsZW1lbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjppc0lGcmFtZUlubmVyRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjp0b0lGcmFtZUlubmVyRWxlbWVudCk6CisgICAgICAgICogbG9hZGVyL1N1YmZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUp
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6aXNJbkNoaWxkRnJhbWVXaXRoRnJhbWVGbGF0dGVuaW5nKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySUZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklGcmFtZTo6
UmVuZGVySUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklGcmFtZTo6Y29tcHV0ZUxv
Z2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJRnJhbWU6OmlzU2VhbWxlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpmbGF0dGVuRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySUZyYW1lOjpob3N0SUZyYW1lRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUGFydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQ
YXJ0OjpzZXRXaWRnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQpOgorCiAyMDEyLTA4LTI2
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcGFy
ZW50IHBvaW50ZXIgZnJvbSBTdHlsZVNoZWV0Q29udGVudHMgYW5kIFN0eWxlUnVsZUltcG9ydApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGQ4MzBjNTIzMTJiYjhhM2NlNjg4NzhiNWFhNjQ1ZTExNjRjMjc2
OTguLmFhMGEwZWQ5OTRhOGIzNDI2ZWUzNGY2MDljYjNiNTg3MDUwNmYwYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTU3ODQsNiArNTc4NCw4IEBACiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxTaGFkb3dF
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQu
aCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSUZyYW1lSW5uZXJFbGVtZW50LmNwcCcsCisg
ICAgICAgICAgICAnaHRtbC9zaGFkb3cvSUZyYW1lSW5uZXJFbGVtZW50LmgnLAogICAgICAgICAg
ICAgJ2h0bWwvc2hhZG93L0ltYWdlSW5uZXJFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC9zaGFkb3cvSW1hZ2VJbm5lckVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAKaW5kZXggM2E5M2ExYWJkNjhjN2JkN2I3MGIwNjc3ZWE0ZmU5NDUyZDkyMTY2
Mi4uYjE3OTE2NDRlMzIyNTMzMjUzODNjNWJlYzdjZjFmMDE5YjJhMmY3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKQEAgLTkzLDYgKzkzLDkgQEAg
dm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6b3BlblVSTChib29sIGxvY2tIaXN0b3J5LCBib29s
IGxvY2tCYWNrRm9yd2FyZExpc3QpCiAgICAgaWYgKG1fVVJMLmlzRW1wdHkoKSkKICAgICAgICAg
bV9VUkwgPSBibGFua1VSTCgpLnN0cmluZygpOwogCisgICAgZnByaW50ZihzdGRlcnIsICI+PiBI
VE1MRnJhbWVFbGVtZW50QmFzZTo6b3BlblVSTDogVVJMOiAlc1xuIiwgbV9VUkwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgdGhpcy0+c2hvd05vZGVQYXRoRm9yVGhpcygpOworCiAgICAg
RnJhbWUqIHBhcmVudEZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIXBhcmVu
dEZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC0xODIsMTEgKzE4NSwxNSBAQCB2b2lkIEhUTUxG
cmFtZUVsZW1lbnRCYXNlOjpkaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyhDb250YWluZXJOb2Rl
KiBpbnNlcnRpb25QbwogCiB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjphdHRhY2goKQogewor
ICAgIGZwcmludGYoc3RkZXJyLCAiPj4gSFRNTEZyYW1lRWxlbWVudEJhc2U6OmF0dGFjaCgpICVw
XG4iLCB0aGlzKTsKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmF0dGFjaCgpOwogCiAgICAg
aWYgKFJlbmRlclBhcnQqIHBhcnQgPSByZW5kZXJQYXJ0KCkpIHsKLSAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGNvbnRlbnRGcmFtZSgpKQorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjphdHRhY2goKSBSZW5kZXJQYXJ0OiAlcFxuIiwgcGFydCk7Cisg
ICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBjb250ZW50RnJhbWUoKSkgeworICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICI+PiBIVE1MRnJhbWVFbGVtZW50QmFzZTo6YXR0YWNoKCkgRnJhbWU6
ICVwXG4iLCBmcmFtZSk7CiAgICAgICAgICAgICBwYXJ0LT5zZXRXaWRnZXQoZnJhbWUtPnZpZXco
KSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lT3duZXJFbGVtZW50LmNwcAppbmRleCA1NjBmMzhiOTY3OWNhMjI3YzQ2MjY2MGY5YjRmMjlj
ZmRhZDBkNmFmLi40OTJhNTRmMTBmMTYyYTRlOTIwNjc1NjFkN2JjYWM4YzlmYjg4YjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC0yNCw3
ICsyNCwxMCBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJJRnJhbWVJbm5lckVsZW1lbnQuaCIK
ICNpbmNsdWRlICJSZW5kZXJQYXJ0LmgiCisjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCisjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCkBAIC05OCw0ICsxMDEsMTYgQEAgU1ZHRG9jdW1lbnQqIEhUTUxGcmFtZU93bmVy
RWxlbWVudDo6Z2V0U1ZHRG9jdW1lbnQoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB9CiAjZW5k
aWYKIAorUmVuZGVyV2lkZ2V0KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnJlbmRlcldpZGdldCgp
IGNvbnN0IHsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IHJlbmRlcmVyKCk7Cisg
ICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCkpIHsK
KyAgICAgICAgTm9kZSogY2hpbGQgPSBzaGFkb3dSb290LT5maXJzdENoaWxkKCk7CisgICAgICAg
IEFTU0VSVChpc0lGcmFtZUlubmVyRWxlbWVudChjaGlsZCkpOworICAgICAgICByZW5kZXJPYmpl
Y3QgPSBjaGlsZC0+cmVuZGVyZXIoKTsKKyAgICB9CisgICAgaWYgKHJlbmRlck9iamVjdCAmJiBy
ZW5kZXJPYmplY3QtPmlzV2lkZ2V0KCkpCisgICAgICAgIHJldHVybiB0b1JlbmRlcldpZGdldChy
ZW5kZXJPYmplY3QpOworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRleCA1ZTI0
MjZhN2Q5ZTZlNjNkYTM4NjZiYjM5MmRjYWYwMzI2NTRiODEwLi43YzE5YmM2ZTNjMjRlMTFlZTRm
YmQyZmE2MDQ5MDBjNWMzZTYzYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
T3duZXJFbGVtZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRE9NV2luZG93OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBSZW5kZXJQYXJ0OworY2xhc3MgUmVu
ZGVyV2lkZ2V0OwogCiAjaWYgRU5BQkxFKFNWRykKIGNsYXNzIFNWR0RvY3VtZW50OwpAQCAtNTYs
NiArNTcsOCBAQCBwdWJsaWM6CiAgICAgU2FuZGJveEZsYWdzIHNhbmRib3hGbGFncygpIGNvbnN0
IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9CiAgICAgdm9pZCBkaXNjb25uZWN0Q29udGVudEZy
YW1lKCk7CiAKKyAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldCgpIGNvbnN0OworCiBwcm90
ZWN0ZWQ6CiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50Kik7CiAgICAgdm9pZCBzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMGViZTA5
NDY5YzZjMDQxMTViZjk4YWI1MDU2ZGViMmNmYTJjOGVhYi4uMmI5Y2NhN2QwNjA4MWE4ZmZlNDUw
MmE5YjgzOWNhMzc1YWI5ZjQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKQEAgLTI3LDE2ICsyNywzOSBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAj
aW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIklG
cmFtZUlubmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVk
ZSAiUmVuZGVyUGFydC5oIgogI2luY2x1ZGUgIlJlbmRlcklGcmFtZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK3ZvaWQgSUZyYW1lRWxl
bWVudDo6c2V0SUZyYW1lSWZOZWNlc3NhcnkoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIEZy
YW1lKiBmcmFtZSkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IElGcmFtZUVsZW1lbnQ6OnNl
dElmcmFtZUlmTmVjZXNzYXJ5XG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IElGcmFtZUVs
ZW1lbnQ6OnNldElmcmFtZUlmTmVjZXNzYXJ5IHJlbmRlck9iamVjdDogJXBcbiIsIHJlbmRlck9i
amVjdCk7CisgICAgZnByaW50ZihzdGRlcnIsICI+PiBJRnJhbWVFbGVtZW50OjpzZXRJZnJhbWVJ
Zk5lY2Vzc2FyeSBmcmFtZTogJXBcbiIsIGZyYW1lKTsKKyAgICBpZiAocmVuZGVyT2JqZWN0ICYm
IHJlbmRlck9iamVjdC0+aXNSZW5kZXJQYXJ0KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiB2aWV3
ID0gZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICI+PiBJRnJhbWVFbGVt
ZW50OjpzZXRJZnJhbWVJZk5lY2Vzc2FyeSA+PiBzZXRXaWRnZXQ6IHZpZXc6ICVwXG4iLCB2aWV3
KTsKKyAgICAgICAgdG9SZW5kZXJQYXJ0KHJlbmRlck9iamVjdCktPnNldFdpZGdldCh2aWV3KTsK
KyAgICB9Cit9CisKK1JlbmRlck9iamVjdCogSUZyYW1lRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXJG
b3JJRnJhbWUoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlckFyZW5hKiBhcmVuYSkKK3sKKyAg
ICBSZW5kZXJJRnJhbWUqIGlmcmFtZSA9IG5ldyAoYXJlbmEpIFJlbmRlcklGcmFtZShlbGVtZW50
KTsKKyAgICAvLyBpbWFnZS0+c2V0SW1hZ2VSZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNlOjpj
cmVhdGUoKSk7CisgICAgcmV0dXJuIGlmcmFtZTsKK30KKwogaW5saW5lIEhUTUxJRnJhbWVFbGVt
ZW50OjpIVE1MSUZyYW1lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRnJhbWVFbGVtZW50QmFzZSh0YWdOYW1lLCBkb2N1
bWVudCkKIHsKQEAgLTQ5LDYgKzcyLDIwIEBAIFBhc3NSZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+
IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSUZyYW1lRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwogfQogCit2b2lkIEhUTUxJRnJhbWVFbGVtZW50Ojp3aWxsQWRkQXV0aG9yU2hhZG93Um9vdCgp
Cit7CisgICAgaWYgKCFzaGFkb3coKS0+b2xkZXN0U2hhZG93Um9vdCgpKQorICAgICAgICBjcmVh
dGVTaGFkb3dTdWJ0cmVlKCk7Cit9CisKK3ZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZVNo
YWRvd1N1YnRyZWUoKQoreworICAgIFJlZlB0cjxJRnJhbWVJbm5lckVsZW1lbnQ+IGlubmVyRWxl
bWVudCA9IElGcmFtZUlubmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOworCisgICAgUmVm
UHRyPFNoYWRvd1Jvb3Q+IHJvb3QgPSBTaGFkb3dSb290OjpjcmVhdGUodGhpcywgU2hhZG93Um9v
dDo6VXNlckFnZW50U2hhZG93Um9vdCk7CisgICAgcm9vdC0+YXBwZW5kQ2hpbGQoaW5uZXJFbGVt
ZW50KTsKK30KKwogYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICBpZiAobmFtZSA9PSB3
aWR0aEF0dHIgfHwgbmFtZSA9PSBoZWlnaHRBdHRyIHx8IG5hbWUgPT0gYWxpZ25BdHRyIHx8IG5h
bWUgPT0gZnJhbWVib3JkZXJBdHRyIHx8IG5hbWUgPT0gc2VhbWxlc3NBdHRyKQpAQCAtMTAwLDkg
KzEzNywxOSBAQCBib29sIEhUTUxJRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogICAgIHJldHVybiBpc1VSTEFsbG93ZWQo
KSAmJiBjb250ZXh0LnN0eWxlKCktPmRpc3BsYXkoKSAhPSBOT05FOwogfQogCi1SZW5kZXJPYmpl
Y3QqIEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKikKK3ZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OmF0dGFjaCgpCit7CisgICAg
ZnByaW50ZihzdGRlcnIsICI+PiBIVE1MSUZyYW1lRWxlbWVudDo6YXR0YWNoIFxuIik7CisgICAg
SFRNTEZyYW1lRWxlbWVudEJhc2U6OmF0dGFjaCgpOworICAgIHNldElGcmFtZUlmTmVjZXNzYXJ5
KHJlbmRlcmVyKCksIGNvbnRlbnRGcmFtZSgpKTsKK30KKworCitSZW5kZXJPYmplY3QqIEhUTUxJ
RnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKiBzdHlsZSkKIHsKLSAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVySUZyYW1lKHRoaXMp
OworICAgIGlmIChzaGFkb3coKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRl
T2JqZWN0KHRoaXMsIHN0eWxlKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXJGb3JJRnJhbWUo
dGhpcywgYXJlbmEpOwogfQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhU
TUxJRnJhbWVFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9p
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKaW5kZXggN2JjMmIwZWNl
OTgwNDZjNjE5NjJiZThkZDQwYmNhNzQ1ZTAwMTMxYy4uZDkzZTBhYWEyMjMwYTM2OWI0NWI0NGUy
NTRlMjhmOGM0OGU5NGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQu
aApAQCAtMjgsMTIgKzI4LDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRN
TElGcmFtZUVsZW1lbnQgOiBwdWJsaWMgSFRNTEZyYW1lRWxlbWVudEJhc2UgeworY2xhc3MgSUZy
YW1lSW5uZXJFbGVtZW50OworCitjbGFzcyBJRnJhbWVFbGVtZW50IHsKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIHNldElGcmFtZUlmTmVjZXNzYXJ5KFJlbmRlck9iamVjdCosIEZyYW1lKik7CisgICAg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlckZvcklGcmFtZShIVE1MRWxlbWVudCosIFJlbmRl
ckFyZW5hKik7Cit9OworCitjbGFzcyBIVE1MSUZyYW1lRWxlbWVudCA6IHB1YmxpYyBIVE1MRnJh
bWVFbGVtZW50QmFzZSwgcHVibGljIElGcmFtZUVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhUTUxJRnJhbWVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CiAKICAgICBib29sIHNob3VsZERpc3BsYXlTZWFtbGVzc2x5KCkgY29u
c3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEFkZEF1dGhvclNoYWRvd1Jvb3QoKSBPVkVSUklE
RTsKKwogcHJpdmF0ZToKICAgICBIVE1MSUZyYW1lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKIApAQCAtNDUsNiArNTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOworICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKSBPVkVSUklERTsKQEAgLTU0LDkg
KzY1LDI1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogI2VuZGlmCiAKKworICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CisgICAgSUZyYW1lSW5uZXJFbGVtZW50
KiBpbm5lckVsZW1lbnQoKSBjb25zdDsKKwogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CiB9Owog
CitpbmxpbmUgYm9vbCBpc0hUTUxJRnJhbWVFbGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgcmV0
dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpOworfQorCitpbmxpbmUg
SFRNTElGcmFtZUVsZW1lbnQqIHRvSFRNTElGcmFtZUVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQoIW5vZGUgfHwgaXNIVE1MSUZyYW1lRWxlbWVudChub2RlKSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4obm9kZSk7Cit9CisKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSFRNTElGcmFtZUVsZW1lbnRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWdOYW1lcy5pbgppbmRleCAzNjYwYWI5NDhlMDc4Nzg5NzQ3YmNhZWJlZTVkMGI2
OThjZjM1YWZlLi4zNGZmMWI4MjliZWYzNjdiODUwM2M1NDI1YmI1OWM5OGQ2ZTliYTc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgpAQCAtNjYsNiArNjYsNyBAQCBociBpbnRlcmZh
Y2VOYW1lPUhUTUxIUkVsZW1lbnQKIGh0bWwKIGkgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAog
aWZyYW1lIGludGVyZmFjZU5hbWU9SFRNTElGcmFtZUVsZW1lbnQKK3dlYmtpdElubmVySUZyYW1l
IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQsIG5vQ29uc3RydWN0b3IKIGltYWdlIG1hcFRvVGFn
TmFtZT1pbWcKIGltZyBpbnRlcmZhY2VOYW1lPUhUTUxJbWFnZUVsZW1lbnQsIGNvbnN0cnVjdG9y
TmVlZHNGb3JtRWxlbWVudAogd2Via2l0SW5uZXJJbWFnZSBpbnRlcmZhY2VOYW1lPUhUTUxFbGVt
ZW50LCBub0NvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JRnJhbWVJbm5lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSUZy
YW1lSW5uZXJFbGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTE2NzRjNWZhNTA1YmEwZGE3MDUzYWNl
ZWJiMjg5ODBmOGQyYzMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSUZyYW1lSW5uZXJFbGVtZW50LmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIklGcmFtZUlubmVyRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRN
TElGcmFtZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJJRnJhbWUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitJRnJhbWVJbm5lckVs
ZW1lbnQ6OklGcmFtZUlubmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBIVE1M
RWxlbWVudChIVE1MTmFtZXM6OndlYmtpdElubmVySUZyYW1lVGFnLCBkb2N1bWVudCkKK3sKK30K
KworaW5saW5lIEhUTUxJRnJhbWVFbGVtZW50KiBJRnJhbWVJbm5lckVsZW1lbnQ6Omhvc3RJRnJh
bWUoKQoreworICAgIHJldHVybiB0b0hUTUxJRnJhbWVFbGVtZW50KHNoYWRvd0FuY2VzdG9yTm9k
ZSgpKTsKK30KKworRnJhbWUqIElGcmFtZUlubmVyRWxlbWVudDo6ZnJhbWUoKQoreworICAgIHJl
dHVybiBob3N0SUZyYW1lKCktPmNvbnRlbnRGcmFtZSgpOworfQorCit2b2lkIElGcmFtZUlubmVy
RWxlbWVudDo6YXR0YWNoKCkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IElGcmFtZUlubmVy
RWxlbWVudDo6YXR0YWNoIFxuIik7CisgICAgSFRNTEVsZW1lbnQ6OmF0dGFjaCgpOworICAgIEZy
YW1lKiBob3N0RnJhbWUgPSBmcmFtZSgpOworICAgIGZwcmludGYoc3RkZXJyLCAiPj4gSUZyYW1l
SW5uZXJFbGVtZW50OjphdHRhY2ggPj4gaG9zdEZyYW1lICVwXG4iLCBob3N0RnJhbWUpOworICAg
IHNldElGcmFtZUlmTmVjZXNzYXJ5KHJlbmRlcmVyKCksIGhvc3RGcmFtZSk7Cit9CisKK1JlbmRl
ck9iamVjdCogSUZyYW1lSW5uZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKK3sKKyAgICBpZiAoc3R5bGUtPmhhc0NvbnRlbnQo
KSkKKyAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxl
KTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXJGb3JJRnJhbWUodGhpcywgYXJlbmEpOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIElGcmFtZUlubmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQo
KSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBwc2V1ZG9J
ZCwgKCItd2Via2l0LWlmcmFtZS1pbm5lci1lbGVtZW50IikpOworICAgIHJldHVybiBwc2V1ZG9J
ZDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSUZyYW1l
SW5uZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JRnJhbWVJbm5lckVs
ZW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hYWE2NjkzZTQwMzM1ZjEyMDRiOTFjMzY4NjJhZTE3ZjY2M2Vl
ODU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSUZyYW1l
SW5uZXJFbGVtZW50LmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSUZyYW1lSW5uZXJFbGVtZW50
X2gKKyNkZWZpbmUgSUZyYW1lSW5uZXJFbGVtZW50X2gKKworI2luY2x1ZGUgIkhUTUxJRnJhbWVF
bGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTElGcmFtZUVsZW1l
bnQ7CisKK2NsYXNzIElGcmFtZUlubmVyRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVi
bGljIElGcmFtZUVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElGcmFt
ZUlubmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgSUZyYW1l
SW5uZXJFbGVtZW50KERvY3VtZW50Kik7CisKKyAgICBIVE1MSUZyYW1lRWxlbWVudCogaG9zdElG
cmFtZSgpOworCisgICAgRnJhbWUqIGZyYW1lKCk7CisKKyAgICAvLyBJRnJhbWVMb2FkZXIqIGlt
YWdlTG9hZGVyKCk7CisgICAgUmVuZGVyT2JqZWN0KiBpRnJhbWVSZW5kZXJlcigpIGNvbnN0IHsg
cmV0dXJuIEhUTUxFbGVtZW50OjpyZW5kZXJlcigpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9v
bCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsK
K307CisKK2lubGluZSBQYXNzUmVmUHRyPElGcmFtZUlubmVyRWxlbWVudD4gSUZyYW1lSW5uZXJF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSUZyYW1lSW5uZXJFbGVtZW50KGRvY3VtZW50KSk7Cit9CisKK2lubGluZSBib29sIGlz
SUZyYW1lSW5uZXJFbGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuICFub2RlIHx8IG5v
ZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp3ZWJraXRJbm5lcklGcmFtZVRhZyk7Cit9CisKK2lu
bGluZSBJRnJhbWVJbm5lckVsZW1lbnQqIHRvSUZyYW1lSW5uZXJFbGVtZW50KE5vZGUqIG5vZGUp
Cit7CisgICAgQVNTRVJUKGlzSUZyYW1lSW5uZXJFbGVtZW50KG5vZGUpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SUZyYW1lSW5uZXJFbGVtZW50Kj4obm9kZSk7Cit9CisKK30KKworI2VuZGlm
IC8vIElGcmFtZUlubmVyRWxlbWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9h
ZGVyLmNwcAppbmRleCBkN2ViMDAxNDFhY2M5NDQwZmU2ODM4YzA5YTk4ZWU2NTBkZmUyNjNkLi45
NGQxMDRmMmQ0MTZmY2EzNWVmZGY2MWM0Y2Q4MmMwOThmNjcyN2YwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKQEAgLTM3NCwxMSArMzc0LDE1IEBAIEZyYW1lKiBT
dWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBLCiAgICAgLy8gbG9hZHMsIHNvIHRoYXQgY2hlY2tDb21wbGV0ZWQoKSBi
ZWxvdyB3b24ndCBiYWlsIGVhcmx5LikKICAgICAvLyBGSVhNRTogQ2FuIHdlIHJlbW92ZSB0aGlz
IGVudGlyZWx5PyBtX2lzQ29tcGxldGUgbm9ybWFsbHkgZ2V0cyBzZXQgdG8gZmFsc2Ugd2hlbiBh
IGxvYWQgaXMgY29tbWl0dGVkLgogICAgIGZyYW1lLT5sb2FkZXIoKS0+c3RhcnRlZCgpOwotICAg
Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG93bmVyRWxlbWVudC0+cmVuZGVyZXIoKTsK
KwogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKHJlbmRlcmVy
ICYmIHJlbmRlcmVyLT5pc1dpZGdldCgpICYmIHZpZXcpCi0gICAgICAgIHRvUmVuZGVyV2lkZ2V0
KHJlbmRlcmVyKS0+c2V0V2lkZ2V0KHZpZXcpOworICAgIFJlbmRlcldpZGdldCogcmVuZGVyV2lk
Z2V0ID0gb3duZXJFbGVtZW50LT5yZW5kZXJXaWRnZXQoKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwg
Ij4+IFN1YmZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUgb3duZXJFbGVtZW50OiAlcCBcbiIsIG93
bmVyRWxlbWVudCk7CisgICAgZnByaW50ZihzdGRlcnIsICI+PiBTdWJmcmFtZUxvYWRlcjo6bG9h
ZFN1YmZyYW1lIG93bmVyRWxlbWVudC0+cmVuZGVyZXIoKTogJXAgXG4iLCBvd25lckVsZW1lbnQt
PnJlbmRlcmVyKCkpOworICAgIGZwcmludGYoc3RkZXJyLCAiPj4gU3ViZnJhbWVMb2FkZXI6Omxv
YWRTdWJmcmFtZSBSZW5kZXJXaWRnZXQ6ICVwIFxuIiwgcmVuZGVyV2lkZ2V0KTsKKyAgICBmcHJp
bnRmKHN0ZGVyciwgIj4+IFN1YmZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUgRnJhbWVWaWV3OiAl
cCBcbiIsIHZpZXcpOworICAgIGlmIChyZW5kZXJXaWRnZXQgJiYgdmlldykKKyAgICAgICAgcmVu
ZGVyV2lkZ2V0LT5zZXRXaWRnZXQodmlldyk7CiAgICAgCiAgICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmNoZWNrQ2FsbEltcGxpY2l0Q2xvc2UoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCA0YzQ5NWZkNWE1MzgxYzkxYzY0NDQyZDIxNzkxYzRjMmQ1ZmFmNmIyLi4xMzkxMTY1
ZjBkMTYzYzc1NDY3NTY1MmVhNDAwMjBjOTc5OWRmM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0zMDAxLDkgKzMwMDEsMTQgQEAgYm9vbCBGcmFtZVZpZXc6OmlzSW5DaGlsZEZy
YW1lV2l0aEZyYW1lRmxhdHRlbmluZygpIGNvbnN0CiAgICAgLy8gRnJhbWUgZmxhdHRlbmluZyBh
cHBsaWVzIHdoZW4gdGhlIG93bmVyIGVsZW1lbnQgaXMgZWl0aGVyIGluIGEgZnJhbWVzZXQgb3IK
ICAgICAvLyBhbiBpZnJhbWUgd2l0aCBmbGF0dGVuaW5nIHBhcmFtZXRlcnMuCiAgICAgaWYgKG1f
ZnJhbWUtPm93bmVyRWxlbWVudCgpLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKLSAgICAgICAg
UmVuZGVySUZyYW1lKiBpZnJhbWVSZW5kZXJlciA9IHRvUmVuZGVySUZyYW1lKG1fZnJhbWUtPm93
bmVyRWxlbWVudCgpLT5yZW5kZXJQYXJ0KCkpOwotICAgICAgICBpZiAoaWZyYW1lUmVuZGVyZXIt
PmZsYXR0ZW5GcmFtZSgpIHx8IGlmcmFtZVJlbmRlcmVyLT5pc1NlYW1sZXNzKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gVG9kbzogb3duZXJFbGVtZW50J3MgcmVuZGVy
ZXIgZG8gbm90IGhhdmUgdG8gYmUgYSBSZW5kZXJQYXJ0KCkKKyAgICAgICAgLy8gVG9kbzogSWYg
b3duZXJFbGVtZW50IGhhcyBTaGFkb3dSb290LCB3ZSBzaG91bGQgcmV0dXJuIHJlbmRlclBhcnQK
KyAgICAgICAgUmVuZGVyUGFydCogcmVuZGVyUGFydCA9IG1fZnJhbWUtPm93bmVyRWxlbWVudCgp
LT5yZW5kZXJQYXJ0KCk7CisgICAgICAgIGlmIChyZW5kZXJQYXJ0ICYmIHJlbmRlclBhcnQtPmlz
UmVuZGVySUZyYW1lKCkpIHsKKyAgICAgICAgICAgIFJlbmRlcklGcmFtZSogaWZyYW1lUmVuZGVy
ZXIgPSB0b1JlbmRlcklGcmFtZShyZW5kZXJQYXJ0KTsKKyAgICAgICAgICAgIGlmIChpZnJhbWVS
ZW5kZXJlci0+ZmxhdHRlbkZyYW1lKCkgfHwgaWZyYW1lUmVuZGVyZXItPmlzU2VhbWxlc3MoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlm
ICghbV9mcmFtZS0+c2V0dGluZ3MoKSB8fCAhbV9mcmFtZS0+c2V0dGluZ3MoKS0+ZnJhbWVGbGF0
dGVuaW5nRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNw
cAppbmRleCA0MjQ4MGEwODUzYzgyZDI0ZGM4MzViNTQyNDkxNWI0YTZmZjY1OTI0Li45NjQzYjU3
OGYxMjlhMmQzOGI5ZjYwZjg4ODZiZjM5NmEwYjViZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySUZyYW1lLmNwcApAQCAtNDEsNiArNDEsMTAgQEAgdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIFJlbmRlcklGcmFtZTo6UmVuZGVySUZyYW1lKEVsZW1lbnQqIGVsZW1lbnQp
CiAgICAgOiBSZW5kZXJGcmFtZUJhc2UoZWxlbWVudCkKIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwg
Ij4+IFJlbmRlcklGcmFtZTo6UmVuZGVySUZyYW1lXG4iKTsKKyAgICBpZiAoZWxlbWVudCkgewor
ICAgICAgICBlbGVtZW50LT5zaG93Tm9kZVBhdGhGb3JUaGlzKCk7CisgICAgfQogfQogCiB2b2lk
IFJlbmRlcklGcmFtZTo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKQpAQCAtNzEsNyArNzUsMTAgQEAg
dm9pZCBSZW5kZXJJRnJhbWU6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogICAgIGlmICghZmxhdHRl
bkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhUTUxJRnJhbWVFbGVtZW50KiBmcmFt
ZSA9IHN0YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4obm9kZSgpKTsKKyAgICAvLyBIVE1M
SUZyYW1lRWxlbWVudCogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MSUZyYW1lRWxlbWVudCo+KG5v
ZGUoKSk7CisgICAgSFRNTElGcmFtZUVsZW1lbnQqIGZyYW1lID0gaG9zdElGcmFtZUVsZW1lbnQo
KTsKKyAgICBBU1NFUlQoZnJhbWUpOworCiAgICAgYm9vbCBpc1Njcm9sbGFibGUgPSBmcmFtZS0+
c2Nyb2xsaW5nTW9kZSgpICE9IFNjcm9sbGJhckFsd2F5c09mZjsKIAogICAgIGlmIChpc1Njcm9s
bGFibGUgfHwgIXN0eWxlKCktPndpZHRoKCkuaXNGaXhlZCgpKSB7CkBAIC0xMjAsNyArMTI3LDgg
QEAgTGF5b3V0VW5pdCBSZW5kZXJJRnJhbWU6Om1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNv
bnN0CiAKIGJvb2wgUmVuZGVySUZyYW1lOjppc1NlYW1sZXNzKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpICYmIHN0YXRpY19jYXN0
PEhUTUxJRnJhbWVFbGVtZW50Kj4obm9kZSgpKS0+c2hvdWxkRGlzcGxheVNlYW1sZXNzbHkoKTsK
KyAgICBIVE1MSUZyYW1lRWxlbWVudCogZWxlbWVudCA9IGhvc3RJRnJhbWVFbGVtZW50KCk7Cisg
ICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+c2hvdWxkRGlzcGxheVNlYW1sZXNzbHkoKTsK
IH0KIAogUmVuZGVyVmlldyogUmVuZGVySUZyYW1lOjpjb250ZW50Um9vdFJlbmRlcmVyKCkgY29u
c3QKQEAgLTEzMywxMCArMTQxLDEwIEBAIFJlbmRlclZpZXcqIFJlbmRlcklGcmFtZTo6Y29udGVu
dFJvb3RSZW5kZXJlcigpIGNvbnN0CiAKIGJvb2wgUmVuZGVySUZyYW1lOjpmbGF0dGVuRnJhbWUo
KSBjb25zdAogewotICAgIGlmICghbm9kZSgpIHx8ICFub2RlKCktPmhhc1RhZ05hbWUoaWZyYW1l
VGFnKSkKKyAgICBIVE1MSUZyYW1lRWxlbWVudCogZWxlbWVudCA9IGhvc3RJRnJhbWVFbGVtZW50
KCk7CisgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBIVE1M
SUZyYW1lRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4o
bm9kZSgpKTsKICAgICBGcmFtZSogZnJhbWUgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgp
OwogCiAgICAgaWYgKGlzU2VhbWxlc3MoKSkKQEAgLTE4OSw2ICsxOTcsMTIgQEAgdm9pZCBSZW5k
ZXJJRnJhbWU6OmxheW91dCgpCiB7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogCisgICAg
ZnByaW50ZihzdGRlcnIsICI+PiBSZW5kZXJJRnJhbWU6OmxheW91dFxuIik7CisgICAgaWYgKG5v
ZGUoKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IG5vZGU6XG4iKTsKKyAgICAgICAg
bm9kZSgpLT5zaG93Tm9kZVBhdGhGb3JUaGlzKCk7CisgICAgfQorCiAgICAgaWYgKGZsYXR0ZW5G
cmFtZSgpKSB7CiAgICAgICAgIFJlbmRlclBhcnQ6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKTsKICAg
ICAgICAgUmVuZGVyUGFydDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKTsKQEAgLTIxMSw0ICsyMjUs
MTkgQEAgdm9pZCBSZW5kZXJJRnJhbWU6OmxheW91dCgpCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFs
c2UpOwogfQogCitIVE1MSUZyYW1lRWxlbWVudCogUmVuZGVySUZyYW1lOjpob3N0SUZyYW1lRWxl
bWVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFub2RlKCkpCisgICAgICAgIHJldHVybiAwOworICAg
IGlmIChpc0hUTUxJRnJhbWVFbGVtZW50KG5vZGUoKSkpCisgICAgICAgIHJldHVybiB0b0hUTUxJ
RnJhbWVFbGVtZW50KG5vZGUoKSk7CisgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZSh3ZWJraXRJ
bm5lcklGcmFtZVRhZykpIHsKKyAgICAgICAgaWYgKE5vZGUqIGFuY2VzdG9yID0gbm9kZSgpLT5z
aGFkb3dBbmNlc3Rvck5vZGUoKSkgeworICAgICAgICAgICAgaWYgKGlzSFRNTElGcmFtZUVsZW1l
bnQoYW5jZXN0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiB0b0hUTUxJRnJhbWVFbGVtZW50
KGFuY2VzdG9yKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCmluZGV4IDhiOTM0MDdlMzEzZGNhOWYy
NDQ5ODM5YTEwZTQ5YWZmNWRkZDNkOTcuLmMwMzNiYjA3NmZlYWIxYWQyOGU4YTBhNmEyZDVhMWJi
YzM2Zjk5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKQEAgLTMw
LDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MSUZyYW1lRWxl
bWVudDsKIGNsYXNzIFJlbmRlclZpZXc7CiAKIGNsYXNzIFJlbmRlcklGcmFtZSA6IHB1YmxpYyBS
ZW5kZXJGcmFtZUJhc2UgewpAQCAtNTgsNiArNTksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5
b3V0U2VhbWxlc3NseSgpOwogCiAgICAgUmVuZGVyVmlldyogY29udGVudFJvb3RSZW5kZXJlcigp
IGNvbnN0OworCisgICAgSFRNTElGcmFtZUVsZW1lbnQqIGhvc3RJRnJhbWVFbGVtZW50KCkgY29u
c3Q7CiB9OwogCiBpbmxpbmUgUmVuZGVySUZyYW1lKiB0b1JlbmRlcklGcmFtZShSZW5kZXJPYmpl
Y3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
YXJ0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0LmNwcAppbmRleCA5
MmZjZjVkODU3N2VlYzMwZWI1ODc4MDhmM2IyNmUwYmIzZDg5OTA4Li5mNTI5N2NhOTVmYjIzY2Jh
ZmE5Nzc0ZTdlMTJiNDdiM2I4MWNkYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUGFydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clBhcnQuY3BwCkBAIC00OSw2ICs0OSw3IEBAIFJlbmRlclBhcnQ6On5SZW5kZXJQYXJ0KCkKIAog
dm9pZCBSZW5kZXJQYXJ0OjpzZXRXaWRnZXQoUGFzc1JlZlB0cjxXaWRnZXQ+IHdpZGdldCkKIHsK
KyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IFJlbmRlclBhcnQ6OnNldFdpZGdldCAlcFxuIiwgd2lk
Z2V0LmdldCgpKTsKICAgICBpZiAod2lkZ2V0ID09IHRoaXMtPndpZGdldCgpKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXgg
ZmM0ZjJmMzVhM2U3NzBkMDRhYzRjNmNiMjBhMzMxMjQ4MTNmZDhiNy4uOTdhOWNkZDViNmQ5ZjRm
MTRiNWQ5NzEwN2Y1NzkzNzc1YTkxNWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5jcHAKQEAgLTE5MSw2ICsxOTEsNyBAQCBib29sIFJlbmRlcldpZGdldDo6dXBk
YXRlV2lkZ2V0R2VvbWV0cnkoKQogCiB2b2lkIFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0KFBhc3NS
ZWZQdHI8V2lkZ2V0PiB3aWRnZXQpCiB7CisgICAgZnByaW50ZihzdGRlcnIsICI+PiBSZW5kZXJX
aWRnZXQ6OnNldFdpZGdldCAlcFxuIiwgd2lkZ2V0LmdldCgpKTsKICAgICBpZiAod2lkZ2V0ID09
IG1fd2lkZ2V0KQogICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163407</attachid>
            <date>2012-09-11 11:18:35 -0700</date>
            <delta_ts>2012-09-11 11:18:35 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-90859-20120912031809.patch</filename>
            <type>text/plain</type>
            <size>36352</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVlMDEzZWFkMDkzOGM4
YTQxZTc3NmRmZjExMjdjOTAxZGU2ZTJiNi4uZTQxMmQwYzNmMmVmZWUwODhlYmZlZTlhYjAyYWE3
YzJiMjY5MjY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEyLTA4LTI3ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBTaGFkb3dET00gZm9yIDxp
ZnJhbWU+LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTA4NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
SVAuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogY3NzL2h0bWwuY3NzOgorICAgICAgICAoaWZyYW1lOjotd2Via2l0
LWlmcmFtZS1pbm5lci1lbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjphdHRhY2gpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGcmFtZU93bmVyRWxlbWVudDo6aWZyYW1lSW5uZXJFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50OjpyZW5kZXJX
aWRnZXQpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKEhUTUxGcmFtZU93bmVyRWxlbWVudCk6CisgICAgICAgICog
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJRnJhbWVFbGVt
ZW50OjpzZXRJRnJhbWVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklGcmFtZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyRm9ySUZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojp3aWxsQWRkQXV0aG9yU2hhZG93Um9vdCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlU2hhZG93U3VidHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6YXR0YWNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAg
ICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChJRnJhbWVFbGVtZW50KToKKyAgICAgICAgKEhUTUxJRnJhbWVFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmlzSFRNTElGcmFtZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dG9IVE1M
SUZyYW1lRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVGFnTmFtZXMuaW46CisgICAgICAg
ICogaHRtbC9zaGFkb3cvSUZyYW1lSW5uZXJFbGVtZW50LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklGcmFtZUlubmVyRWxlbWVudDo6SUZyYW1lSW5u
ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklGcmFtZUlubmVyRWxlbWVudDo6aG9zdElG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJRnJhbWVJbm5lckVsZW1lbnQ6OmZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OklGcmFtZUlubmVyRWxlbWVudDo6c2V0RnJhbWVWaWV3KToKKyAgICAg
ICAgKFdlYkNvcmU6OklGcmFtZUlubmVyRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OklGcmFtZUlubmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SUZyYW1lSW5uZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvSUZyYW1lSW5uZXJFbGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChJRnJhbWVJbm5lckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SUZyYW1lSW5u
ZXJFbGVtZW50OjppRnJhbWVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpJRnJhbWVJbm5l
ckVsZW1lbnQ6OmNhblN0YXJ0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklGcmFtZUlu
bmVyRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSUZyYW1lSW5uZXJFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSUZyYW1lSW5uZXJFbGVtZW50KToKKyAgICAgICAg
KiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVM
b2FkZXI6OmxvYWRTdWJmcmFtZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6Cisg
ICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0Vmll
dyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6Y2hlY2tJRnJhbWVJbm5lcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpjcmVhdGVWaWV3KToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChGcmFtZSk6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmlzSW5DaGlsZEZyYW1lV2l0aEZyYW1lRmxhdHRlbmluZyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
RnJhbWU6OlJlbmRlcklGcmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlcklGcmFtZTo6flJlbmRlcklGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJRnJhbWU6OmNvbXB1dGVMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SUZyYW1lOjppc1NlYW1sZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklGcmFtZTo6Zmxh
dHRlbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklGcmFtZTo6bGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklGcmFtZTo6aG9zdElGcmFtZUVsZW1lbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoUmVuZGVySUZyYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUGFydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJQYXJ0OjpzZXRXaWRnZXQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0Ojpz
ZXRXaWRnZXQpOgorCiAyMDEyLTA4LTI2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgcGFyZW50IHBvaW50ZXIgZnJvbSBTdHlsZVNoZWV0Q29udGVu
dHMgYW5kIFN0eWxlUnVsZUltcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGQ4MzBjNTIzMTJiYjhh
M2NlNjg4NzhiNWFhNjQ1ZTExNjRjMjc2OTguLmFhMGEwZWQ5OTRhOGIzNDI2ZWUzNGY2MDljYjNi
NTg3MDUwNmYwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU3ODQsNiArNTc4NCw4IEBACiAgICAg
ICAgICAgICAnaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgnLAogICAgICAgICAgICAg
J2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9z
aGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSUZy
YW1lSW5uZXJFbGVtZW50LmNwcCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSUZyYW1lSW5u
ZXJFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0ltYWdlSW5uZXJFbGVtZW50
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSW1hZ2VJbm5lckVsZW1lbnQuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNz
cwppbmRleCBjMjEzZDM4ZDZiMDMzMTE0ODVkNTRlZmEwYTc3MjVjZGE3ZjFmYWMyLi4yZWYxY2E0
YzNmMjI5ZWE4ZGI1ZTRhMzY2MjIyMzQ1YjJkZWYzODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzCkBAIC0x
MTMwLDYgKzExMzAsMTAgQEAgaWZyYW1lW3NlYW1sZXNzXSB7CiAgICAgZGlzcGxheTogYmxvY2sK
IH0KIAoraWZyYW1lOjotd2Via2l0LWlmcmFtZS1pbm5lci1lbGVtZW50IHsKKyAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2sKK30KKwogZGV0YWlscyB7CiAgICAgZGlzcGxheTogYmxvY2sKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKaW5kZXggM2E5M2Ex
YWJkNjhjN2JkN2I3MGIwNjc3ZWE0ZmU5NDUyZDkyMTY2Mi4uYjE3OTE2NDRlMzIyNTMzMjUzODNj
NWJlYzdjZjFmMDE5YjJhMmY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50QmFzZS5jcHAKQEAgLTkzLDYgKzkzLDkgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFz
ZTo6b3BlblVSTChib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCiAg
ICAgaWYgKG1fVVJMLmlzRW1wdHkoKSkKICAgICAgICAgbV9VUkwgPSBibGFua1VSTCgpLnN0cmlu
ZygpOwogCisgICAgZnByaW50ZihzdGRlcnIsICI+PiBIVE1MRnJhbWVFbGVtZW50QmFzZTo6b3Bl
blVSTDogVVJMOiAlc1xuIiwgbV9VUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgdGhp
cy0+c2hvd05vZGVQYXRoRm9yVGhpcygpOworCiAgICAgRnJhbWUqIHBhcmVudEZyYW1lID0gZG9j
dW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIXBhcmVudEZyYW1lKQogICAgICAgICByZXR1cm47
CkBAIC0xODIsMTEgKzE4NSwxNSBAQCB2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpkaWROb3Rp
ZnlTdWJ0cmVlSW5zZXJ0aW9ucyhDb250YWluZXJOb2RlKiBpbnNlcnRpb25QbwogCiB2b2lkIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjphdHRhY2goKQogeworICAgIGZwcmludGYoc3RkZXJyLCAiPj4g
SFRNTEZyYW1lRWxlbWVudEJhc2U6OmF0dGFjaCgpICVwXG4iLCB0aGlzKTsKICAgICBIVE1MRnJh
bWVPd25lckVsZW1lbnQ6OmF0dGFjaCgpOwogCiAgICAgaWYgKFJlbmRlclBhcnQqIHBhcnQgPSBy
ZW5kZXJQYXJ0KCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGNvbnRlbnRGcmFtZSgp
KQorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjphdHRh
Y2goKSBSZW5kZXJQYXJ0OiAlcFxuIiwgcGFydCk7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUg
PSBjb250ZW50RnJhbWUoKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI+PiBIVE1M
RnJhbWVFbGVtZW50QmFzZTo6YXR0YWNoKCkgRnJhbWU6ICVwXG4iLCBmcmFtZSk7CiAgICAgICAg
ICAgICBwYXJ0LT5zZXRXaWRnZXQoZnJhbWUtPnZpZXcoKSk7CisgICAgICAgIH0KICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAppbmRl
eCA1NjBmMzhiOTY3OWNhMjI3YzQ2MjY2MGY5YjRmMjljZmRhZDBkNmFmLi4zYTgxYmNlMjRmNTIz
ZGI2MDY4OTI0YmQ0Mjg3NWQ4N2U3NDExMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC0yNCw3ICsyNCwxMCBAQAogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
KyNpbmNsdWRlICJJRnJhbWVJbm5lckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJQYXJ0Lmgi
CisjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiAj
aWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC05OCw0ICsxMDEs
MjMgQEAgU1ZHRG9jdW1lbnQqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Z2V0U1ZHRG9jdW1lbnQo
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB9CiAjZW5kaWYKIAorSUZyYW1lSW5uZXJFbGVtZW50
KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmlmcmFtZUlubmVyRWxlbWVudCgpIGNvbnN0IHsKKyAg
ICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgewor
ICAgICAgICBOb2RlKiBjaGlsZCA9IHNoYWRvd1Jvb3QtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAg
QVNTRVJUKGlzSUZyYW1lSW5uZXJFbGVtZW50KGNoaWxkKSk7CisgICAgICAgIHJldHVybiB0b0lG
cmFtZUlubmVyRWxlbWVudChjaGlsZCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitSZW5k
ZXJXaWRnZXQqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6cmVuZGVyV2lkZ2V0KCkgY29uc3Qgewor
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gcmVuZGVyZXIoKTsKKyAgICBpZiAoSUZy
YW1lSW5uZXJFbGVtZW50KiBpbm5lciA9IGlmcmFtZUlubmVyRWxlbWVudCgpKSB7CisgICAgICAg
IHJlbmRlck9iamVjdCA9IGlubmVyLT5yZW5kZXJlcigpOworICAgIH0KKyAgICBpZiAocmVuZGVy
T2JqZWN0ICYmIHJlbmRlck9iamVjdC0+aXNXaWRnZXQoKSkKKyAgICAgICAgcmV0dXJuIHRvUmVu
ZGVyV2lkZ2V0KHJlbmRlck9iamVjdCk7CisgICAgcmV0dXJuIDA7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5o
CmluZGV4IDVlMjQyNmE3ZDllNmU2M2RhMzg2NmJiMzkyZGNhZjAzMjY1NGI4MTAuLjgzZWIzYzEx
MDI0NWE2ZjAyZTZmZDYzNjE3Y2E4ZGY0MjJlMzI2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaApAQCAtMjgsNyArMjgsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIERPTVdpbmRvdzsKIGNsYXNzIEZyYW1lOworY2xhc3MgSUZyYW1lSW5u
ZXJFbGVtZW50OwogY2xhc3MgUmVuZGVyUGFydDsKK2NsYXNzIFJlbmRlcldpZGdldDsKIAogI2lm
IEVOQUJMRShTVkcpCiBjbGFzcyBTVkdEb2N1bWVudDsKQEAgLTU2LDYgKzU4LDkgQEAgcHVibGlj
OgogICAgIFNhbmRib3hGbGFncyBzYW5kYm94RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3NhbmRi
b3hGbGFnczsgfQogICAgIHZvaWQgZGlzY29ubmVjdENvbnRlbnRGcmFtZSgpOwogCisgICAgUmVu
ZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQoKSBjb25zdDsKKyAgICBJRnJhbWVJbm5lckVsZW1lbnQq
IGlmcmFtZUlubmVyRWxlbWVudCgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEZyYW1l
T3duZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CiAg
ICAgdm9pZCBzZXRTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMGViZTA5NDY5YzZjMDQxMTViZjk4YWI1MDU2
ZGViMmNmYTJjOGVhYi4uODE5ZjlkODRmYzc5YWNiNGE1ZDRlNzBlZWE5MmZhNzgxMGVhYzliZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTI3LDE2ICsy
Nyw0NSBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlO
YW1lcy5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIklGcmFtZUlubmVyRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2lu
Y2x1ZGUgIlJlbmRlcklGcmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKK3ZvaWQgSUZyYW1lRWxlbWVudDo6c2V0SUZyYW1lSWZOZWNl
c3NhcnkoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIEZyYW1lKiBmcmFtZSkKK3sKKyAgICBm
cHJpbnRmKHN0ZGVyciwgIj4+IElGcmFtZUVsZW1lbnQ6OnNldElmcmFtZUlmTmVjZXNzYXJ5IHRo
aXM6ICVwXG4iLCB0aGlzKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IElGcmFtZUVsZW1lbnQ6
OnNldElmcmFtZUlmTmVjZXNzYXJ5IHJlbmRlck9iamVjdDogJXBcbiIsIHJlbmRlck9iamVjdCk7
CisgICAgZnByaW50ZihzdGRlcnIsICI+PiBJRnJhbWVFbGVtZW50OjpzZXRJZnJhbWVJZk5lY2Vz
c2FyeSBmcmFtZTogJXBcbiIsIGZyYW1lKTsKKyAgICBpZiAocmVuZGVyT2JqZWN0ICYmIHJlbmRl
ck9iamVjdC0+aXNSZW5kZXJQYXJ0KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJh
bWUtPnZpZXcoKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICI+PiBJRnJhbWVFbGVtZW50Ojpz
ZXRJZnJhbWVJZk5lY2Vzc2FyeSA+PiBzZXRXaWRnZXQ6IHZpZXc6ICVwXG4iLCB2aWV3KTsKKyAg
ICAgICAgdG9SZW5kZXJQYXJ0KHJlbmRlck9iamVjdCktPnNldFdpZGdldCh2aWV3KTsKKyAgICB9
Cit9CisKK1JlbmRlck9iamVjdCogSUZyYW1lRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXJGb3JJRnJh
bWUoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlckFyZW5hKiBhcmVuYSkKK3sKKyAgICBmcHJp
bnRmKHN0ZGVyciwgIj4+IElGcmFtZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyRm9ySUZyYW1lIHRo
aXM6ICVwXG4iLCB0aGlzKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IElGcmFtZUVsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyRm9ySUZyYW1lIGVsZW1lbnQ6ICVwXG4iLCBlbGVtZW50KTsKKworICAg
IFJlbmRlcklGcmFtZSogaWZyYW1lID0gbmV3IChhcmVuYSkgUmVuZGVySUZyYW1lKGVsZW1lbnQp
OworICAgIC8vIGltYWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6OmNy
ZWF0ZSgpKTsKKworICAgIGZwcmludGYoc3RkZXJyLCAiPj4gSUZyYW1lRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXJGb3JJRnJhbWUgY3JlYXRlZCBSZW5kZXJJRnJhbWU6ICVwXG4iLCBpZnJhbWUpOwor
CisgICAgcmV0dXJuIGlmcmFtZTsKK30KKwogaW5saW5lIEhUTUxJRnJhbWVFbGVtZW50OjpIVE1M
SUZyYW1lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBIVE1MRnJhbWVFbGVtZW50QmFzZSh0YWdOYW1lLCBkb2N1bWVudCkKIHsK
QEAgLTQ5LDYgKzc4LDIwIEBAIFBhc3NSZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+IEhUTUxJRnJh
bWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnCiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVE1MSUZyYW1lRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCit2
b2lkIEhUTUxJRnJhbWVFbGVtZW50Ojp3aWxsQWRkQXV0aG9yU2hhZG93Um9vdCgpCit7CisgICAg
aWYgKCFzaGFkb3coKS0+b2xkZXN0U2hhZG93Um9vdCgpKQorICAgICAgICBjcmVhdGVTaGFkb3dT
dWJ0cmVlKCk7Cit9CisKK3ZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUoKQoreworICAgIFJlZlB0cjxJRnJhbWVJbm5lckVsZW1lbnQ+IGlubmVyRWxlbWVudCA9IElG
cmFtZUlubmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOworCisgICAgUmVmUHRyPFNoYWRv
d1Jvb3Q+IHJvb3QgPSBTaGFkb3dSb290OjpjcmVhdGUodGhpcywgU2hhZG93Um9vdDo6VXNlckFn
ZW50U2hhZG93Um9vdCk7CisgICAgcm9vdC0+YXBwZW5kQ2hpbGQoaW5uZXJFbGVtZW50KTsKK30K
KwogYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIg
fHwgbmFtZSA9PSBoZWlnaHRBdHRyIHx8IG5hbWUgPT0gYWxpZ25BdHRyIHx8IG5hbWUgPT0gZnJh
bWVib3JkZXJBdHRyIHx8IG5hbWUgPT0gc2VhbWxlc3NBdHRyKQpAQCAtMTAwLDkgKzE0MywxOSBA
QCBib29sIEhUTUxJRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0JiBjb250ZXh0KQogICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKSAmJiBjb250
ZXh0LnN0eWxlKCktPmRpc3BsYXkoKSAhPSBOT05FOwogfQogCi1SZW5kZXJPYmplY3QqIEhUTUxJ
RnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKikKK3ZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OmF0dGFjaCgpCit7CisgICAgZnByaW50Zihz
dGRlcnIsICI+PiBIVE1MSUZyYW1lRWxlbWVudDo6YXR0YWNoIFxuIik7CisgICAgSFRNTEZyYW1l
RWxlbWVudEJhc2U6OmF0dGFjaCgpOworICAgIHNldElGcmFtZUlmTmVjZXNzYXJ5KHJlbmRlcmVy
KCksIGNvbnRlbnRGcmFtZSgpKTsKK30KKworCitSZW5kZXJPYmplY3QqIEhUTUxJRnJhbWVFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHls
ZSkKIHsKLSAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVySUZyYW1lKHRoaXMpOworICAgIGlm
IChzaGFkb3coKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRo
aXMsIHN0eWxlKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXJGb3JJRnJhbWUodGhpcywgYXJl
bmEpOwogfQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxJRnJhbWVF
bGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKaW5kZXggN2JjMmIwZWNlOTgwNDZjNjE5
NjJiZThkZDQwYmNhNzQ1ZTAwMTMxYy4uZDkzZTBhYWEyMjMwYTM2OWI0NWI0NGUyNTRlMjhmOGM0
OGU5NGQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaApAQCAtMjgs
MTIgKzI4LDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTElGcmFtZUVs
ZW1lbnQgOiBwdWJsaWMgSFRNTEZyYW1lRWxlbWVudEJhc2UgeworY2xhc3MgSUZyYW1lSW5uZXJF
bGVtZW50OworCitjbGFzcyBJRnJhbWVFbGVtZW50IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHNl
dElGcmFtZUlmTmVjZXNzYXJ5KFJlbmRlck9iamVjdCosIEZyYW1lKik7CisgICAgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlckZvcklGcmFtZShIVE1MRWxlbWVudCosIFJlbmRlckFyZW5hKik7
Cit9OworCitjbGFzcyBIVE1MSUZyYW1lRWxlbWVudCA6IHB1YmxpYyBIVE1MRnJhbWVFbGVtZW50
QmFzZSwgcHVibGljIElGcmFtZUVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxJRnJhbWVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAKICAgICBib29sIHNob3VsZERpc3BsYXlTZWFtbGVzc2x5KCkgY29uc3Q7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEFkZEF1dGhvclNoYWRvd1Jvb3QoKSBPVkVSUklERTsKKwogcHJp
dmF0ZToKICAgICBIVE1MSUZyYW1lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIApAQCAtNDUsNiArNTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOworICAgIHZpcnR1YWwg
dm9pZCBhdHRhY2goKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKSBPVkVSUklERTsKQEAgLTU0LDkgKzY1LDI1IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogI2VuZGlmCiAKKworICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CisgICAgSUZyYW1lSW5uZXJFbGVtZW50KiBpbm5lckVs
ZW1lbnQoKSBjb25zdDsKKwogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CiB9OwogCitpbmxpbmUg
Ym9vbCBpc0hUTUxJRnJhbWVFbGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppZnJhbWVUYWcpOworfQorCitpbmxpbmUgSFRNTElGcmFt
ZUVsZW1lbnQqIHRvSFRNTElGcmFtZUVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
IW5vZGUgfHwgaXNIVE1MSUZyYW1lRWxlbWVudChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4obm9kZSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gSFRNTElGcmFtZUVsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWdOYW1lcy5pbgppbmRleCAzNjYwYWI5NDhlMDc4Nzg5NzQ3YmNhZWJlZTVkMGI2OThjZjM1YWZl
Li4zNGZmMWI4MjliZWYzNjdiODUwM2M1NDI1YmI1OWM5OGQ2ZTliYTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWdOYW1lcy5pbgpAQCAtNjYsNiArNjYsNyBAQCBociBpbnRlcmZhY2VOYW1lPUhU
TUxIUkVsZW1lbnQKIGh0bWwKIGkgaW50ZXJmYWNlTmFtZT1IVE1MRWxlbWVudAogaWZyYW1lIGlu
dGVyZmFjZU5hbWU9SFRNTElGcmFtZUVsZW1lbnQKK3dlYmtpdElubmVySUZyYW1lIGludGVyZmFj
ZU5hbWU9SFRNTEVsZW1lbnQsIG5vQ29uc3RydWN0b3IKIGltYWdlIG1hcFRvVGFnTmFtZT1pbWcK
IGltZyBpbnRlcmZhY2VOYW1lPUhUTUxJbWFnZUVsZW1lbnQsIGNvbnN0cnVjdG9yTmVlZHNGb3Jt
RWxlbWVudAogd2Via2l0SW5uZXJJbWFnZSBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50LCBub0Nv
bnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JRnJhbWVJ
bm5lckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSUZyYW1lSW5uZXJF
bGVtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMWFlNGI4Yzk1ZjU2YTBkZDI0MDA0ODkwYmMxY2U4ZmRj
NzU4MDFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSUZy
YW1lSW5uZXJFbGVtZW50LmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIklGcmFtZUlubmVyRWxlbWVudC5oIgorCisjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJJRnJhbWUu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwor
CitJRnJhbWVJbm5lckVsZW1lbnQ6OklGcmFtZUlubmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1l
bnQpCisgICAgOiBIVE1MRWxlbWVudChIVE1MTmFtZXM6OndlYmtpdElubmVySUZyYW1lVGFnLCBk
b2N1bWVudCkKK3sKK30KKworaW5saW5lIEhUTUxJRnJhbWVFbGVtZW50KiBJRnJhbWVJbm5lckVs
ZW1lbnQ6Omhvc3RJRnJhbWUoKQoreworICAgIHJldHVybiB0b0hUTUxJRnJhbWVFbGVtZW50KHNo
YWRvd0FuY2VzdG9yTm9kZSgpKTsKK30KKworRnJhbWUqIElGcmFtZUlubmVyRWxlbWVudDo6ZnJh
bWUoKQoreworICAgIHJldHVybiBob3N0SUZyYW1lKCktPmNvbnRlbnRGcmFtZSgpOworfQorCit2
b2lkIElGcmFtZUlubmVyRWxlbWVudDo6c2V0RnJhbWVWaWV3KFBhc3NSZWZQdHI8RnJhbWVWaWV3
PiBmcmFtZVZpZXcpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSByZW5kZXJl
cigpOworICAgIGlmIChyZW5kZXJPYmplY3QgJiYgcmVuZGVyT2JqZWN0LT5pc1dpZGdldCgpKQor
ICAgICAgICB0b1JlbmRlcldpZGdldChyZW5kZXJPYmplY3QpLT5zZXRXaWRnZXQoZnJhbWVWaWV3
KTsKK30KKwordm9pZCBJRnJhbWVJbm5lckVsZW1lbnQ6OmF0dGFjaCgpCit7CisgICAgZnByaW50
ZihzdGRlcnIsICI+PiBJRnJhbWVJbm5lckVsZW1lbnQ6OmF0dGFjaCBcbiIpOworICAgIEhUTUxF
bGVtZW50OjphdHRhY2goKTsKKyAgICBGcmFtZSogaG9zdEZyYW1lID0gZnJhbWUoKTsKKyAgICBm
cHJpbnRmKHN0ZGVyciwgIiAgIElGcmFtZUlubmVyRWxlbWVudDo6YXR0YWNoID4+IGhvc3RGcmFt
ZSAlcFxuIiwgaG9zdEZyYW1lKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIElGcmFtZUlubmVy
RWxlbWVudDo6YXR0YWNoID4+Pj4gc2V0SUZyYW1lSWZOZWNlc3NhcnlcbiIpOworICAgIHNldElG
cmFtZUlmTmVjZXNzYXJ5KHJlbmRlcmVyKCksIGhvc3RGcmFtZSk7Cit9CisKK1JlbmRlck9iamVj
dCogSUZyYW1lSW5uZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKiBzdHlsZSkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IElGcmFtZUlu
bmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIgdGhpczolcFxuIiwgdGhpcyk7CisgICAgaWYgKHN0
eWxlLT5oYXNDb250ZW50KCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICI+PiBJRnJhbWVJ
bm5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyICA+Pj4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmpl
Y3RcbiIpOworICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywg
c3R5bGUpOworICAgIH0KKyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IElGcmFtZUlubmVyRWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIgID4+PiBjcmVhdGVSZW5kZXJlckZvcklGcmFtZVxuIik7CisgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyRm9ySUZyYW1lKHRoaXMsIGFyZW5hKTsKK30KKworY29uc3Qg
QXRvbWljU3RyaW5nJiBJRnJhbWVJbm5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcHNldWRvSWQsICgiLXdl
YmtpdC1pZnJhbWUtaW5uZXItZWxlbWVudCIpKTsKKyAgICByZXR1cm4gcHNldWRvSWQ7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lGcmFtZUlubmVyRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSUZyYW1lSW5uZXJFbGVtZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGMyNjE0M2Q3YTJkZjg4ZTlkZGU3NmEyMzUzMDllM2ZiM2MzMWM0MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lGcmFtZUlubmVyRWxl
bWVudC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElGcmFtZUlubmVyRWxlbWVudF9oCisjZGVm
aW5lIElGcmFtZUlubmVyRWxlbWVudF9oCisKKyNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lVmlldzsKK2NsYXNzIEhUTUxJ
RnJhbWVFbGVtZW50OworCitjbGFzcyBJRnJhbWVJbm5lckVsZW1lbnQgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQsIHB1YmxpYyBJRnJhbWVFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJRnJhbWVJbm5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOworCisgICAgdm9pZCBz
ZXRGcmFtZVZpZXcoUGFzc1JlZlB0cjxGcmFtZVZpZXc+KTsKKyAgICBIVE1MSUZyYW1lRWxlbWVu
dCogaG9zdElGcmFtZSgpOworCitwcml2YXRlOgorICAgIElGcmFtZUlubmVyRWxlbWVudChEb2N1
bWVudCopOworCisKKyAgICBGcmFtZSogZnJhbWUoKTsKKworICAgIC8vIElGcmFtZUxvYWRlciog
aW1hZ2VMb2FkZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIGlGcmFtZVJlbmRlcmVyKCkgY29uc3Qg
eyByZXR1cm4gSFRNTEVsZW1lbnQ6OnJlbmRlcmVyKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBh
dHRhY2goKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOworCisgICAgdmlydHVhbCBi
b29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURF
OworfTsKKworaW5saW5lIFBhc3NSZWZQdHI8SUZyYW1lSW5uZXJFbGVtZW50PiBJRnJhbWVJbm5l
ckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJRnJhbWVJbm5lckVsZW1lbnQoZG9jdW1lbnQpKTsKK30KKworaW5saW5lIGJvb2wg
aXNJRnJhbWVJbm5lckVsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gIW5vZGUgfHwg
bm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OndlYmtpdElubmVySUZyYW1lVGFnKTsKK30KKwor
aW5saW5lIElGcmFtZUlubmVyRWxlbWVudCogdG9JRnJhbWVJbm5lckVsZW1lbnQoTm9kZSogbm9k
ZSkKK3sKKyAgICBBU1NFUlQoaXNJRnJhbWVJbm5lckVsZW1lbnQobm9kZSkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxJRnJhbWVJbm5lckVsZW1lbnQqPihub2RlKTsKK30KKworfQorCisjZW5k
aWYgLy8gSUZyYW1lSW5uZXJFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVM
b2FkZXIuY3BwCmluZGV4IGQ3ZWIwMDE0MWFjYzk0NDBmZTY4MzhjMDlhOThlZTY1MGRmZTI2M2Qu
LmY3MjA5OTczOTlmOWFiODM2ZGFmNWQ5NTBkMjIwOTcyNGM4ZjUzOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApAQCAtMzYwLDYgKzM2MCw3IEBAIEZyYW1lKiBT
dWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBLCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU3RyaW5nIHJlZmVycmVy
VG9Vc2UgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihvd25lckVsZW1l
bnQtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHVybCwgcmVmZXJyZXIpOworICAgIGZw
cmludGYoc3RkZXJyLCAiPj4gU3ViZnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZSA+PiBjcmVhdGVG
cmFtZSBcbiIpOwogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+
Y2xpZW50KCktPmNyZWF0ZUZyYW1lKHVybCwgbmFtZSwgb3duZXJFbGVtZW50LCByZWZlcnJlclRv
VXNlLCBhbGxvd3NTY3JvbGxpbmcsIG1hcmdpbldpZHRoLCBtYXJnaW5IZWlnaHQpOwogCiAgICAg
aWYgKCFmcmFtZSkgIHsKQEAgLTM3NCwxMSArMzc1LDE1IEBAIEZyYW1lKiBTdWJmcmFtZUxvYWRl
cjo6bG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25z
dCBLCiAgICAgLy8gbG9hZHMsIHNvIHRoYXQgY2hlY2tDb21wbGV0ZWQoKSBiZWxvdyB3b24ndCBi
YWlsIGVhcmx5LikKICAgICAvLyBGSVhNRTogQ2FuIHdlIHJlbW92ZSB0aGlzIGVudGlyZWx5PyBt
X2lzQ29tcGxldGUgbm9ybWFsbHkgZ2V0cyBzZXQgdG8gZmFsc2Ugd2hlbiBhIGxvYWQgaXMgY29t
bWl0dGVkLgogICAgIGZyYW1lLT5sb2FkZXIoKS0+c3RhcnRlZCgpOwotICAgCi0gICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG93bmVyRWxlbWVudC0+cmVuZGVyZXIoKTsKKwogICAgIEZyYW1l
VmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVy
LT5pc1dpZGdldCgpICYmIHZpZXcpCi0gICAgICAgIHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVyKS0+
c2V0V2lkZ2V0KHZpZXcpOworICAgIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0ID0gb3duZXJF
bGVtZW50LT5yZW5kZXJXaWRnZXQoKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IFN1YmZyYW1l
TG9hZGVyOjpsb2FkU3ViZnJhbWUgb3duZXJFbGVtZW50OiAlcCBcbiIsIG93bmVyRWxlbWVudCk7
CisgICAgZnByaW50ZihzdGRlcnIsICI+PiBTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lIG93
bmVyRWxlbWVudC0+cmVuZGVyZXIoKTogJXAgXG4iLCBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCkp
OworICAgIGZwcmludGYoc3RkZXJyLCAiPj4gU3ViZnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZSBS
ZW5kZXJXaWRnZXQ6ICVwIFxuIiwgcmVuZGVyV2lkZ2V0KTsKKyAgICBmcHJpbnRmKHN0ZGVyciwg
Ij4+IFN1YmZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUgRnJhbWVWaWV3OiAlcCBcbiIsIHZpZXcp
OworICAgIGlmIChyZW5kZXJXaWRnZXQgJiYgdmlldykKKyAgICAgICAgcmVuZGVyV2lkZ2V0LT5z
ZXRXaWRnZXQodmlldyk7CiAgICAgCiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNoZWNrQ2FsbElt
cGxpY2l0Q2xvc2UoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRl
eCA5NTdhZGEzNDAxNDA1ZTI2MzMwZGQ0MmQ1YjQ1NzVlZjI5ZDY2NWFkLi4zNWE2Y2I3NDFiYjZi
MDg0ODU5MTA3OTM1MjY3ZjhiOGY3N2QxOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVk
ZSAiSUZyYW1lSW5uZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCkBA
IC0xMDU4LDcgKzEwNTksOSBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJl
c3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAgICAgICAgIFdpZGdl
dCogd2lkZ2V0ID0gcmVuZGVyV2lkZ2V0LT53aWRnZXQoKTsKICAgICAgICAgaWYgKCF3aWRnZXQg
fHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBG
cmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4pLT5jb250
ZW50RnJhbWUoKTsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gaXNJRnJhbWVJbm5lckVsZW1lbnQo
bikKKyAgICAgICAgICAgID8gdG9JRnJhbWVJbm5lckVsZW1lbnQobiktPmhvc3RJRnJhbWUoKS0+
Y29udGVudEZyYW1lKCkKKyAgICAgICAgICAgIDogc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVu
dEJhc2UqPihuKS0+Y29udGVudEZyYW1lKCk7CiAgICAgICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAppbmRleCAxODc0ZGRlZjJlMWQxNjQ0Njg1ZmEyMGYxOTkwNDE3NTQyZWYzOTgyLi4xZGU4
M2M0ZDMxNDk1Y2M0ZmY4ZjQyMWFhNmEwOGMzNzY4ZTQzNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cApAQCAtNTYsOSArNTYsMTEgQEAKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaCIKKyNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0
VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIklGcmFtZUlubmVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMjg0LDYgKzI4NiwxMyBAQCB2b2lkIEZyYW1lOjpzZXRW
aWV3KFBhc3NSZWZQdHI8RnJhbWVWaWV3PiB2aWV3KQogICAgIGlmIChtX3ZpZXcgJiYgdGlsZWRC
YWNraW5nU3RvcmUoKSkKICAgICAgICAgbV92aWV3LT5zZXRQYWludHNFbnRpcmVDb250ZW50cyh0
cnVlKTsKICNlbmRpZgorCisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IG93bmVy
RWxlbWVudCgpOworICAgIGlmIChvd25lcikgeworICAgICAgICBJRnJhbWVJbm5lckVsZW1lbnQq
IGlubmVyID0gb3duZXItPmlmcmFtZUlubmVyRWxlbWVudCgpOworICAgICAgICBpZiAoaW5uZXIp
CisgICAgICAgICAgICBpbm5lci0+c2V0RnJhbWVWaWV3KG1fdmlldy5nZXQoKSk7CisgICAgfQog
fQogCiB2b2lkIEZyYW1lOjpzZXREb2N1bWVudChQYXNzUmVmUHRyPERvY3VtZW50PiBuZXdEb2Mp
CkBAIC03NzUsNiArNzg0LDIzIEBAIFBhc3NSZWZQdHI8UmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBv
aW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgIHJldHVybiAwOwogfQogCit2b2lk
IEZyYW1lOjpjaGVja0lGcmFtZUlubmVyKEZyYW1lVmlldyogZnJhbWVWaWV3KQoreworICAgIGlm
ICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm47CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lciA9IG93bmVyRWxlbWVudCgpOworICAgIGlmICghb3duZXIpCisgICAgICAgIHJldHVy
bjsKKyAgICBJRnJhbWVJbm5lckVsZW1lbnQqIGlubmVyID0gb3duZXItPmlmcmFtZUlubmVyRWxl
bWVudCgpOworICAgIGlmICghaW5uZXIpCisgICAgICAgIHJldHVybjsKKyAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlck9iamVjdCA9IGlubmVyLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyT2Jq
ZWN0KQorICAgICAgICByZXR1cm47CisgICAgaWYgKHJlbmRlck9iamVjdC0+aXNXaWRnZXQoKSkK
KyAgICAgICAgQVNTRVJUKGZyYW1lVmlldyA9PSB0b1JlbmRlcldpZGdldChyZW5kZXJPYmplY3Qp
LT53aWRnZXQoKSk7Cit9CisKIHZvaWQgRnJhbWU6OmNyZWF0ZVZpZXcoY29uc3QgSW50U2l6ZSYg
dmlld3BvcnRTaXplLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvciYgYmFja2dy
b3VuZENvbG9yLCBib29sIHRyYW5zcGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBJbnRTaXplJiBmaXhlZExheW91dFNpemUsIGJvb2wgdXNlRml4ZWRMYXlvdXQsCkBAIC03OTQs
MjEgKzgyMCwzMyBAQCB2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSwKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBmcmFtZVZpZXc7CiAgICAgaWYgKGlzTWFp
bkZyYW1lKSB7CiAgICAgICAgIGZyYW1lVmlldyA9IEZyYW1lVmlldzo6Y3JlYXRlKHRoaXMsIHZp
ZXdwb3J0U2l6ZSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiPj4gRnJhbWU6OmNyZWF0ZVZp
ZXcgaXNNYWluRnJhbWVcbiIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IEZyYW1lOjpj
cmVhdGVWaWV3IHRoaXM6ICVwXG4iLCB0aGlzKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICI+
PiBGcmFtZTo6Y3JlYXRlVmlldyBmcmFtZVZpZXc6ICVwXG4iLCBmcmFtZVZpZXcuZ2V0KCkpOwor
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IEZyYW1lOjpjcmVhdGVWaWV3IHRoaXMtPm93bmVy
RWxlbWVudDogJXBcbiIsIG93bmVyRWxlbWVudCgpKTsKICAgICAgICAgZnJhbWVWaWV3LT5zZXRG
aXhlZExheW91dFNpemUoZml4ZWRMYXlvdXRTaXplKTsKICAgICAgICAgZnJhbWVWaWV3LT5zZXRV
c2VGaXhlZExheW91dCh1c2VGaXhlZExheW91dCk7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIHsK
ICAgICAgICAgZnJhbWVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUodGhpcyk7CisgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiPj4gRnJhbWU6OmNyZWF0ZVZpZXcgIShpc01haW5GcmFtZSlcbiIpOwor
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IEZyYW1lOjpjcmVhdGVWaWV3IHRoaXM6ICVwXG4i
LCB0aGlzKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICI+PiBGcmFtZTo6Y3JlYXRlVmlldyBm
cmFtZVZpZXc6ICVwXG4iLCBmcmFtZVZpZXcuZ2V0KCkpOworICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIj4+IEZyYW1lOjpjcmVhdGVWaWV3IHRoaXMtPm93bmVyRWxlbWVudDogJXBcbiIsIG93bmVy
RWxlbWVudCgpKTsKKyAgICB9CiAKICAgICBmcmFtZVZpZXctPnNldFNjcm9sbGJhck1vZGVzKGhv
cml6b250YWxTY3JvbGxiYXJNb2RlLCB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUsIGhvcml6b250YWxM
b2NrLCB2ZXJ0aWNhbExvY2spOwogCiAgICAgc2V0VmlldyhmcmFtZVZpZXcpOwogCisgICAgY2hl
Y2tJRnJhbWVJbm5lcihmcmFtZVZpZXcuZ2V0KCkpOworCiAgICAgaWYgKGJhY2tncm91bmRDb2xv
ci5pc1ZhbGlkKCkpCiAgICAgICAgIGZyYW1lVmlldy0+dXBkYXRlQmFja2dyb3VuZFJlY3Vyc2l2
ZWx5KGJhY2tncm91bmRDb2xvciwgdHJhbnNwYXJlbnQpOwogCiAgICAgaWYgKGlzTWFpbkZyYW1l
KQogICAgICAgICBmcmFtZVZpZXctPnNldFBhcmVudFZpc2libGUodHJ1ZSk7CiAKKyAgICAvLyBG
SVhNRTogb3duZXJSZW5kZXJlciBpcyBhbHdheXMgcmVuZGVySUZyYW1lKCk/Pz8/CiAgICAgaWYg
KG93bmVyUmVuZGVyZXIoKSkKICAgICAgICAgb3duZXJSZW5kZXJlcigpLT5zZXRXaWRnZXQoZnJh
bWVWaWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDNhNTI5NTZhNDUzYjhjYTYyNTQ2MzI5YzE5
MDdiYTg5M2E5Mjg3MjkuLjkwMzZiMjk5ZmIzNDc3OGE0ZWVmYjcwMDE4NmQ2ZThjMTExMWQ2NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKQEAgLTg5LDYgKzg5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIH5GcmFtZSgpOwogCisgICAgICAgIHZvaWQgY2hlY2tJRnJhbWVJbm5lcihGcmFt
ZVZpZXcqIGZyYW1lVmlldyk7CisKICAgICAgICAgdm9pZCBhZGREZXN0cnVjdGlvbk9ic2VydmVy
KEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciopOwogICAgICAgICB2b2lkIHJlbW92ZURlc3RydWN0
aW9uT2JzZXJ2ZXIoRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCA0YzQ5NWZkNWE1MzgxYzkxYzY0NDQyZDIxNzkxYzRjMmQ1ZmFmNmIy
Li4xNjRiZmRhMWRkM2ExMmRjOWJmMGZmMTllZjZhYWFhODM3ODE4MDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCkBAIC0yMDksOCArMjA5LDEzIEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3
KEZyYW1lKiBmcmFtZSkKIAogUGFzc1JlZlB0cjxGcmFtZVZpZXc+IEZyYW1lVmlldzo6Y3JlYXRl
KEZyYW1lKiBmcmFtZSkKIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIj4+IEZyYW1lVmlldzo6Y3Jl
YXRlIEZyYW1lOiAlcFxuIiwgZnJhbWUpOworICAgIGZwcmludGYoc3RkZXJyLCAiPj4gRnJhbWVW
aWV3OjpjcmVhdGUgZnJhbWUtPm93bmVyRWxlbWVudDogJXBcbiIsIGZyYW1lLT5vd25lckVsZW1l
bnQoKSk7CisgICAgZnByaW50ZihzdGRlcnIsICI+PiBGcmFtZVZpZXc6OmNyZWF0ZSBmcmFtZS0+
b3duZXJFbGVtZW50IG5vZGVwYXRoOiAiKTsKKyAgICBmcmFtZS0+b3duZXJFbGVtZW50KCktPnNo
b3dOb2RlUGF0aEZvclRoaXMoKTsKICAgICBSZWZQdHI8RnJhbWVWaWV3PiB2aWV3ID0gYWRvcHRS
ZWYobmV3IEZyYW1lVmlldyhmcmFtZSkpOwogICAgIHZpZXctPnNob3coKTsKKyAgICBmcHJpbnRm
KHN0ZGVyciwgIj4+IEZyYW1lVmlldzo6Y3JlYXRlIENyZWF0ZWQgRnJhbWVWaWV3OiAlcFxuIiwg
dmlldy5nZXQoKSk7CiAgICAgcmV0dXJuIHZpZXcucmVsZWFzZSgpOwogfQogCkBAIC03NzksNyAr
Nzg0LDE0IEBAIGJvb2wgRnJhbWVWaWV3OjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNGcmFt
ZShGcmFtZSogcm9vdEZyYW1lRm9yU3luYykKICAgICBpZiAoIXJvb3QpCiAgICAgICAgIHJldHVy
biB0cnVlOyAvLyBXZSBkb24ndCB3YW50IHRvIGtlZXAgdHJ5aW5nIHRvIHVwZGF0ZSBsYXllcnMg
aWYgd2UgaGF2ZSBubyByZW5kZXJlci4KIAotICAgIEFTU0VSVChtX2ZyYW1lLT52aWV3KCkgPT0g
dGhpcyk7CisgICAgLy8gRklYTUU6IChoYXlhdG8pCisgICAgLy8gQVNTRVJUKG1fZnJhbWUtPnZp
ZXcoKSA9PSB0aGlzKTsKKyAgICBpZiAobV9mcmFtZS0+dmlldygpICE9IHRoaXMpIHsKKyAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJBU1NFUlRJT04gRVJST1I6IEZyYW1lVmlldzo6c3luY0NvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzRnJhbWVcbiIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkFT
U0VSVElPTiBFUlJPUjogdGhpczogJXAgXG4iLCB0aGlzKTsKKyAgICAgICAgZnByaW50ZihzdGRl
cnIsICJBU1NFUlRJT04gRVJST1I6IG1fZnJhbWU6ICVwIFxuIiwgbV9mcmFtZS5nZXQoKSk7Cisg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiQVNTRVJUSU9OIEVSUk9SOiBtX2ZyYW1lLT52aWV3KCk6
ICVwIFxuIiwgbV9mcmFtZS0+dmlldygpKTsKKyAgICB9CiAKICAgICAvLyBJZiB3ZSBzeW5jIGNv
bXBvc2l0aW5nIGxheWVycyB3aGVuIGEgbGF5b3V0IGlzIHBlbmRpbmcsIHdlIG1heSBjYXVzZSBw
YWludGluZyBvZiBjb21wb3NpdGluZwogICAgIC8vIGxheWVyIGNvbnRlbnQgdG8gb2NjdXIgYmVm
b3JlIGxheW91dCBoYXMgaGFwcGVuZWQsIHdoaWNoIHdpbGwgY2F1c2UgcGFpbnRDb250ZW50cygp
IHRvIGJhaWwuCkBAIC0xMDEwLDcgKzEwMjIsMTMgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChi
b29sIGFsbG93U3VidHJlZSkKICAgICAgICAgbV9sYXlvdXRSb290ID0gMDsKICAgICB9CiAKLSAg
ICBBU1NFUlQobV9mcmFtZS0+dmlldygpID09IHRoaXMpOworICAgIC8vIEFTU0VSVChtX2ZyYW1l
LT52aWV3KCkgPT0gdGhpcyk7CisgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSAhPSB0aGlzKSB7Cisg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiPj4gRnJhbWVWaWV3OjpsYXlvdXQgQVNTRVJUSU9OIEVS
Uk9SIG1fZnJhbWUtPnZpZXcoKSAhPSB0aGlzIFxuIik7CisgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiPj4gRnJhbWVWaWV3OjpsYXlvdXQgbV9mcmFtZS0+dmlldygpOiAlcFxuIiwgbV9mcmFtZS0+
dmlldygpKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICI+PiBGcmFtZVZpZXc6OmxheW91dCB0
aGlzOiAlcFxuIiwgdGhpcyk7CisgICAgfQorCiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBt
X2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGJvb2wgc3VidHJlZTsKQEAgLTMwMDEsOSArMzAxOSwx
NCBAQCBib29sIEZyYW1lVmlldzo6aXNJbkNoaWxkRnJhbWVXaXRoRnJhbWVGbGF0dGVuaW5nKCkg
Y29uc3QKICAgICAvLyBGcmFtZSBmbGF0dGVuaW5nIGFwcGxpZXMgd2hlbiB0aGUgb3duZXIgZWxl
bWVudCBpcyBlaXRoZXIgaW4gYSBmcmFtZXNldCBvcgogICAgIC8vIGFuIGlmcmFtZSB3aXRoIGZs
YXR0ZW5pbmcgcGFyYW1ldGVycy4KICAgICBpZiAobV9mcmFtZS0+b3duZXJFbGVtZW50KCktPmhh
c1RhZ05hbWUoaWZyYW1lVGFnKSkgewotICAgICAgICBSZW5kZXJJRnJhbWUqIGlmcmFtZVJlbmRl
cmVyID0gdG9SZW5kZXJJRnJhbWUobV9mcmFtZS0+b3duZXJFbGVtZW50KCktPnJlbmRlclBhcnQo
KSk7Ci0gICAgICAgIGlmIChpZnJhbWVSZW5kZXJlci0+ZmxhdHRlbkZyYW1lKCkgfHwgaWZyYW1l
UmVuZGVyZXItPmlzU2VhbWxlc3MoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAvLyBUb2RvOiBvd25lckVsZW1lbnQncyByZW5kZXJlciBkbyBub3QgaGF2ZSB0byBiZSBhIFJl
bmRlclBhcnQoKQorICAgICAgICAvLyBUb2RvOiBJZiBvd25lckVsZW1lbnQgaGFzIFNoYWRvd1Jv
b3QsIHdlIHNob3VsZCByZXR1cm4gcmVuZGVyUGFydAorICAgICAgICBSZW5kZXJQYXJ0KiByZW5k
ZXJQYXJ0ID0gbV9mcmFtZS0+b3duZXJFbGVtZW50KCktPnJlbmRlclBhcnQoKTsKKyAgICAgICAg
aWYgKHJlbmRlclBhcnQgJiYgcmVuZGVyUGFydC0+aXNSZW5kZXJJRnJhbWUoKSkgeworICAgICAg
ICAgICAgUmVuZGVySUZyYW1lKiBpZnJhbWVSZW5kZXJlciA9IHRvUmVuZGVySUZyYW1lKHJlbmRl
clBhcnQpOworICAgICAgICAgICAgaWYgKGlmcmFtZVJlbmRlcmVyLT5mbGF0dGVuRnJhbWUoKSB8
fCBpZnJhbWVSZW5kZXJlci0+aXNTZWFtbGVzcygpKQorICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFtX2ZyYW1lLT5zZXR0aW5ncygpIHx8
ICFtX2ZyYW1lLT5zZXR0aW5ncygpLT5mcmFtZUZsYXR0ZW5pbmdFbmFibGVkKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCmluZGV4IDQyNDgwYTA4NTNjODJkMjRk
YzgzNWI1NDI0OTE1YjRhNmZmNjU5MjQuLmY1Yjg2YjcwNjM5MWE3MzhhNDk3OGZiN2Y1NzgzYjZm
MjA3ZWQ5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCkBA
IC00MSw4ICs0MSwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogUmVuZGVySUZyYW1l
OjpSZW5kZXJJRnJhbWUoRWxlbWVudCogZWxlbWVudCkKICAgICA6IFJlbmRlckZyYW1lQmFzZShl
bGVtZW50KQogeworICAgIGZwcmludGYoc3RkZXJyLCAiPj4gUmVuZGVySUZyYW1lOjpSZW5kZXJJ
RnJhbWVcbiIpOworICAgIGlmIChlbGVtZW50KSB7CisgICAgICAgIGVsZW1lbnQtPnNob3dOb2Rl
UGF0aEZvclRoaXMoKTsKKyAgICB9Cit9CisKK1JlbmRlcklGcmFtZTo6flJlbmRlcklGcmFtZSgp
Cit7CisgICAgLy8gUmVuZGVyRnJhbWVCYXNlOjp+UmVuZGVyRnJhbWVCYXNlKCk7CisgICAgZnBy
aW50ZihzdGRlcnIsICI+PiBSZW5kZXJJRnJhbWU6On5SZW5kZXJJRnJhbWUgPj4+IGRlc3RydWN0
ZWQgJXBcbiIsIHRoaXMpOwogfQogCisKIHZvaWQgUmVuZGVySUZyYW1lOjpjb21wdXRlTG9naWNh
bEhlaWdodCgpCiB7CiAgICAgUmVuZGVyUGFydDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKTsKQEAg
LTcxLDcgKzgyLDEwIEBAIHZvaWQgUmVuZGVySUZyYW1lOjpjb21wdXRlTG9naWNhbFdpZHRoKCkK
ICAgICBpZiAoIWZsYXR0ZW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBIVE1MSUZy
YW1lRWxlbWVudCogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MSUZyYW1lRWxlbWVudCo+KG5vZGUo
KSk7CisgICAgLy8gSFRNTElGcmFtZUVsZW1lbnQqIGZyYW1lID0gc3RhdGljX2Nhc3Q8SFRNTElG
cmFtZUVsZW1lbnQqPihub2RlKCkpOworICAgIEhUTUxJRnJhbWVFbGVtZW50KiBmcmFtZSA9IGhv
c3RJRnJhbWVFbGVtZW50KCk7CisgICAgQVNTRVJUKGZyYW1lKTsKKwogICAgIGJvb2wgaXNTY3Jv
bGxhYmxlID0gZnJhbWUtPnNjcm9sbGluZ01vZGUoKSAhPSBTY3JvbGxiYXJBbHdheXNPZmY7CiAK
ICAgICBpZiAoaXNTY3JvbGxhYmxlIHx8ICFzdHlsZSgpLT53aWR0aCgpLmlzRml4ZWQoKSkgewpA
QCAtMTIwLDcgKzEzNCw4IEBAIExheW91dFVuaXQgUmVuZGVySUZyYW1lOjptYXhQcmVmZXJyZWRM
b2dpY2FsV2lkdGgoKSBjb25zdAogCiBib29sIFJlbmRlcklGcmFtZTo6aXNTZWFtbGVzcygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05hbWUoaWZyYW1lVGFn
KSAmJiBzdGF0aWNfY2FzdDxIVE1MSUZyYW1lRWxlbWVudCo+KG5vZGUoKSktPnNob3VsZERpc3Bs
YXlTZWFtbGVzc2x5KCk7CisgICAgSFRNTElGcmFtZUVsZW1lbnQqIGVsZW1lbnQgPSBob3N0SUZy
YW1lRWxlbWVudCgpOworICAgIHJldHVybiBlbGVtZW50ICYmIGVsZW1lbnQtPnNob3VsZERpc3Bs
YXlTZWFtbGVzc2x5KCk7CiB9CiAKIFJlbmRlclZpZXcqIFJlbmRlcklGcmFtZTo6Y29udGVudFJv
b3RSZW5kZXJlcigpIGNvbnN0CkBAIC0xMzMsMTAgKzE0OCwxMCBAQCBSZW5kZXJWaWV3KiBSZW5k
ZXJJRnJhbWU6OmNvbnRlbnRSb290UmVuZGVyZXIoKSBjb25zdAogCiBib29sIFJlbmRlcklGcmFt
ZTo6ZmxhdHRlbkZyYW1lKCkgY29uc3QKIHsKLSAgICBpZiAoIW5vZGUoKSB8fCAhbm9kZSgpLT5o
YXNUYWdOYW1lKGlmcmFtZVRhZykpCisgICAgSFRNTElGcmFtZUVsZW1lbnQqIGVsZW1lbnQgPSBo
b3N0SUZyYW1lRWxlbWVudCgpOworICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgSFRNTElGcmFtZUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
SUZyYW1lRWxlbWVudCo+KG5vZGUoKSk7CiAgICAgRnJhbWUqIGZyYW1lID0gZWxlbWVudC0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKTsKIAogICAgIGlmIChpc1NlYW1sZXNzKCkpCkBAIC0xODksNiArMjA0
LDEyIEBAIHZvaWQgUmVuZGVySUZyYW1lOjpsYXlvdXQoKQogewogICAgIEFTU0VSVChuZWVkc0xh
eW91dCgpKTsKIAorICAgIGZwcmludGYoc3RkZXJyLCAiPj4gUmVuZGVySUZyYW1lOjpsYXlvdXRc
biIpOworICAgIGlmIChub2RlKCkpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICI+PiBub2Rl
OlxuIik7CisgICAgICAgIG5vZGUoKS0+c2hvd05vZGVQYXRoRm9yVGhpcygpOworICAgIH0KKwog
ICAgIGlmIChmbGF0dGVuRnJhbWUoKSkgewogICAgICAgICBSZW5kZXJQYXJ0Ojpjb21wdXRlTG9n
aWNhbFdpZHRoKCk7CiAgICAgICAgIFJlbmRlclBhcnQ6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KCk7
CkBAIC0yMTEsNCArMjMyLDE5IEBAIHZvaWQgUmVuZGVySUZyYW1lOjpsYXlvdXQoKQogICAgIHNl
dE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAorSFRNTElGcmFtZUVsZW1lbnQqIFJlbmRlcklGcmFt
ZTo6aG9zdElGcmFtZUVsZW1lbnQoKSBjb25zdAoreworICAgIGlmICghbm9kZSgpKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBpZiAoaXNIVE1MSUZyYW1lRWxlbWVudChub2RlKCkpKQorICAgICAg
ICByZXR1cm4gdG9IVE1MSUZyYW1lRWxlbWVudChub2RlKCkpOworICAgIGlmIChub2RlKCktPmhh
c1RhZ05hbWUod2Via2l0SW5uZXJJRnJhbWVUYWcpKSB7CisgICAgICAgIGlmIChOb2RlKiBhbmNl
c3RvciA9IG5vZGUoKS0+c2hhZG93QW5jZXN0b3JOb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChp
c0hUTUxJRnJhbWVFbGVtZW50KGFuY2VzdG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9I
VE1MSUZyYW1lRWxlbWVudChhbmNlc3Rvcik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaAppbmRleCA4
YjkzNDA3ZTMxM2RjYTlmMjQ0OTgzOWExMGU0OWFmZjVkZGQzZDk3Li5mODMyY2Q1NzU1OTI1Nzcx
ODg3MGJiMWU2YzJkNzhiNDllNDY5MWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySUZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklGcmFtZS5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgSFRNTElGcmFtZUVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJWaWV3OwogCiBjbGFzcyBSZW5kZXJJ
RnJhbWUgOiBwdWJsaWMgUmVuZGVyRnJhbWVCYXNlIHsKQEAgLTM5LDYgKzQwLDEwIEBAIHB1Ymxp
YzoKICAgICBib29sIGZsYXR0ZW5GcmFtZSgpIGNvbnN0OwogICAgIGJvb2wgaXNTZWFtbGVzcygp
IGNvbnN0OwogCisgICAgLy8gRklYTUU6IGhheWF0bzogVG8gRGVidWcgUmVuZGVySUZyYW1lLgor
ICAgIHZpcnR1YWwgflJlbmRlcklGcmFtZSgpOworCisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVMb2dpY2FsV2lkdGgoKSBPVkVSUklERTsKQEAgLTU4LDYgKzYzLDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGxheW91dFNlYW1sZXNzbHkoKTsKIAogICAgIFJlbmRlclZpZXcqIGNvbnRlbnRS
b290UmVuZGVyZXIoKSBjb25zdDsKKworICAgIEhUTUxJRnJhbWVFbGVtZW50KiBob3N0SUZyYW1l
RWxlbWVudCgpIGNvbnN0OwogfTsKIAogaW5saW5lIFJlbmRlcklGcmFtZSogdG9SZW5kZXJJRnJh
bWUoUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGFy
dC5jcHAKaW5kZXggOTJmY2Y1ZDg1NzdlZWMzMGViNTg3ODA4ZjNiMjZlMGJiM2Q4OTkwOC4uZjUy
OTdjYTk1ZmIyM2NiYWZhOTc3NGU3ZTEyYjQ3YjNiODFjZGI4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQYXJ0LmNwcApAQCAtNDksNiArNDksNyBAQCBSZW5kZXJQYXJ0Ojp+UmVu
ZGVyUGFydCgpCiAKIHZvaWQgUmVuZGVyUGFydDo6c2V0V2lkZ2V0KFBhc3NSZWZQdHI8V2lkZ2V0
PiB3aWRnZXQpCiB7CisgICAgZnByaW50ZihzdGRlcnIsICI+PiBSZW5kZXJQYXJ0OjpzZXRXaWRn
ZXQgJXBcbiIsIHdpZGdldC5nZXQoKSk7CiAgICAgaWYgKHdpZGdldCA9PSB0aGlzLT53aWRnZXQo
KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwCmluZGV4IGZjNGYyZjM1YTNlNzcwZDA0YWM0YzZjYjIwYTMzMTI0ODEzZmQ4YjcuLjk3
YTljZGQ1YjZkOWY0ZjE0YjVkOTcxMDdmNTc5Mzc3NWE5MTVmMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC0xOTEsNiArMTkxLDcgQEAgYm9vbCBSZW5k
ZXJXaWRnZXQ6OnVwZGF0ZVdpZGdldEdlb21ldHJ5KCkKIAogdm9pZCBSZW5kZXJXaWRnZXQ6OnNl
dFdpZGdldChQYXNzUmVmUHRyPFdpZGdldD4gd2lkZ2V0KQogeworICAgIGZwcmludGYoc3RkZXJy
LCAiPj4gUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQgJXBcbiIsIHdpZGdldC5nZXQoKSk7CiAgICAg
aWYgKHdpZGdldCA9PSBtX3dpZGdldCkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>