<?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>93666</bug_id>
          
          <creation_ts>2012-08-09 16:37:13 -0700</creation_ts>
          <short_desc>DOMWindow should be owned by the Document, not the Frame</short_desc>
          <delta_ts>2012-08-13 17:35:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>27640</dup_id>
          
          <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>75793</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>691981</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-09 16:37:13 -0700</bug_when>
    <thetext>DOMWindow should be owned by the Document, not the Frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691982</commentid>
    <comment_count>1</comment_count>
      <attachid>157576</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-09 16:38:17 -0700</bug_when>
    <thetext>Created attachment 157576
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692034</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-09 17:43:12 -0700</bug_when>
    <thetext>In this patch, I&apos;m going to keep the same lifetime for all the objects and just move the owning reference from Frame to Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692054</commentid>
    <comment_count>3</comment_count>
      <attachid>157600</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-09 18:03:36 -0700</bug_when>
    <thetext>Created attachment 157600
still crashes a lot :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692444</commentid>
    <comment_count>4</comment_count>
      <attachid>157702</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-10 04:33:41 -0700</bug_when>
    <thetext>Created attachment 157702
crashes less</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692952</commentid>
    <comment_count>5</comment_count>
      <attachid>157831</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-10 16:23:28 -0700</bug_when>
    <thetext>Created attachment 157831
maybe, possibly, works</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694206</commentid>
    <comment_count>6</comment_count>
      <attachid>158142</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-13 16:30:08 -0700</bug_when>
    <thetext>Created attachment 158142
another approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694270</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-13 17:35:25 -0700</bug_when>
    <thetext>Ok, it looks like it&apos;s much easier to fix Bug 27640 at the same time as this bug.

*** This bug has been marked as a duplicate of bug 27640 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157576</attachid>
            <date>2012-08-09 16:38:17 -0700</date>
            <delta_ts>2012-08-09 18:03:34 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-93666-20120809163749.patch</filename>
            <type>text/plain</type>
            <size>4767</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTAzMGQxNTVhY2M4NTJm
Y2Y4ODg4OTk5ZWQ2MDgyMWM3OTQ5MWJlZC4uMzM2ZWI0YTAxZjhmMjgwNDk1Y2M1ZjBmZjFkNmEy
ZDhhNTkxMDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDEyLTA4LTA5ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgRE9NV2luZG93IHNob3VsZCBi
ZSBvd25lZCBieSB0aGUgRG9jdW1lbnQsIG5vdCB0aGUgRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0
aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVu
Y3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmRvbVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpjbGVhckRlZmF1bHRWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXREZWZhdWx0Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5z
dXJlRGVmYXVsdFZpZXcpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9j
dW1lbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OmNsZWFyRE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRET01XaW5k
b3cpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRvbVdpbmRvdyk6CisKKzIwMTItMDgtMDkg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBTYW5kYm94aW5nIHZp
ZXcgc291cmNlIGRvY3VtZW50cyBpcyBpbmVmZmVjdGl2ZQogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2NjAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggZTc4MjY4ZTIzNGMzMjdiODAwNzc3Mzg2MjhkYTg1MmY1MjVhMjMxMC4uNjM1OTc1NzMw
OTk2YjA4ODQwODQyNDRhZTk5OWU2YzQ0ZmZkNGExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC00MDQ3LDcgKzQwNDcsMzQgQEAgRE9NV2luZG93KiBEb2N1bWVudDo6ZG9tV2luZG93KCkg
Y29uc3QKICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAhPSB0aGlzKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiBmcmFtZSgpLT5kb21XaW5kb3coKTsKKyAgICByZXR1cm4gY29u
c3RfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5lbnN1cmVEZWZhdWx0VmlldygpOworfQorCit2b2lk
IERvY3VtZW50OjpjbGVhckRlZmF1bHRWaWV3KCkKK3sKKyAgICBzZXREZWZhdWx0VmlldygwKTsK
K30KKwordm9pZCBEb2N1bWVudDo6c2V0RGVmYXVsdFZpZXcoRE9NV2luZG93KiBkb21XaW5kb3cp
Cit7CisgICAgQVNTRVJUKGZyYW1lKCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKSA9PSB0aGlzKTsK
KworICAgIGlmIChtX2RlZmF1bHRWaWV3KSB7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQoZnJhbWUoKSwgbV9kZWZhdWx0Vmlldy5nZXQoKSk7
CisgICAgICAgIG1fZGVmYXVsdFZpZXctPmNsZWFyKCk7CisgICAgfQorCisgICAgbV9kZWZhdWx0
VmlldyA9IGRvbVdpbmRvdzsKK30KKworRE9NV2luZG93KiBEb2N1bWVudDo6ZW5zdXJlRGVmYXVs
dFZpZXcoKQoreworICAgIEFTU0VSVChmcmFtZSgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCkgPT0g
dGhpcyk7CisKKyAgICBpZiAoIW1fZGVmYXVsdFZpZXcpCisgICAgICAgIG1fZGVmYXVsdFZpZXcg
PSBET01XaW5kb3c6OmNyZWF0ZShmcmFtZSgpKTsKKworICAgIHJldHVybiBtX2RlZmF1bHRWaWV3
LmdldCgpOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNjc2N2Y4NjQzYmU3ZGQ4NTEz
Yzc2MWU3OGNmOWU3MTY4NzA0MzMzLi42OTBiOTg3OWI0NzMxZTIxOWFlMzI1NTViOGNjZTI1OGNj
NTgxNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzY5LDYgKzc2OSwxMCBAQCBwdWJsaWM6
CiAgICAgRE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygp
OyB9IAogICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3Q7CiAKKyAgICB2b2lkIGNsZWFy
RGVmYXVsdFZpZXcoKTsKKyAgICB2b2lkIHNldERlZmF1bHRWaWV3KERPTVdpbmRvdyopOworICAg
IERPTVdpbmRvdyogZW5zdXJlRGVmYXVsdFZpZXcoKTsKKwogICAgIC8vIEhlbHBlciBmdW5jdGlv
bnMgZm9yIGZvcndhcmRpbmcgRE9NV2luZG93IGV2ZW50IHJlbGF0ZWQgdGFza3MgdG8gdGhlIERP
TVdpbmRvdyBpZiBpdCBleGlzdHMuCiAgICAgdm9pZCBzZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+KTsKICAgICBFdmVudExpc3RlbmVyKiBnZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKQEAgLTEyNjUsNiArMTI2OSw4IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPE93blB0cjxGb250RGF0YT4gPiBtX2N1c3RvbUZvbnRzOwog
CiAgICAgRnJhbWUqIG1fZnJhbWU7CisgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9kZWZhdWx0Vmll
dzsKKwogICAgIE93blB0cjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gbV9jYWNoZWRSZXNvdXJjZUxv
YWRlcjsKICAgICBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IG1fcGFyc2VyOwogICAgIFJlZlB0cjxD
b250ZXh0RmVhdHVyZXM+IG1fY29udGV4dEZlYXR1cmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRl
eCAwOTg4MTBkY2Q4MmM0ZmY4ZWY2MjU3NmM1YzA4MTY2YWY4YWRmNDkxLi5kOWU5MWRjOTMxMWM3
ZmQ2MDllMjlhMTY1YzAxZjVhZThlYmQyZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNjAz
LDExICs2MDMsNyBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERPTVdy
YXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFVzZXJTY3JpcHRWZQogCiB2b2lkIEZyYW1lOjpjbGVh
ckRPTVdpbmRvdygpCiB7Ci0gICAgaWYgKG1fZG9tV2luZG93KSB7Ci0gICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQodGhpcywgbV9kb21XaW5kb3cu
Z2V0KCkpOwotICAgICAgICBtX2RvbVdpbmRvdy0+Y2xlYXIoKTsKLSAgICB9Ci0gICAgbV9kb21X
aW5kb3cgPSAwOworICAgIG1fZG9jLT5jbGVhckRlZmF1bHRWaWV3KCk7CiB9CiAKIFJlbmRlclZp
ZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBjb25zdApAQCAtNjcxLDExICs2NjcsNyBAQCB2
b2lkIEZyYW1lOjpjbGVhclRpbWVycygpCiAKIHZvaWQgRnJhbWU6OnNldERPTVdpbmRvdyhET01X
aW5kb3cqIGRvbVdpbmRvdykKIHsKLSAgICBpZiAobV9kb21XaW5kb3cpIHsKLSAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZCh0aGlzLCBtX2RvbVdp
bmRvdy5nZXQoKSk7Ci0gICAgICAgIG1fZG9tV2luZG93LT5jbGVhcigpOwotICAgIH0KLSAgICBt
X2RvbVdpbmRvdyA9IGRvbVdpbmRvdzsKKyAgICBtX2RvYy0+c2V0RGVmYXVsdFZpZXcoZG9tV2lu
ZG93KTsKIH0KIAogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQpAQCAtNjk3LDEwICs2
ODksNyBAQCB2b2lkIEZyYW1lOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogCiBET01XaW5kb3cqIEZyYW1lOjpkb21XaW5kb3coKSBj
b25zdAogewotICAgIGlmICghbV9kb21XaW5kb3cpCi0gICAgICAgIG1fZG9tV2luZG93ID0gRE9N
V2luZG93OjpjcmVhdGUoY29uc3RfY2FzdDxGcmFtZSo+KHRoaXMpKTsKLQotICAgIHJldHVybiBt
X2RvbVdpbmRvdy5nZXQoKTsKKyAgICByZXR1cm4gbV9kb2MtPmVuc3VyZURlZmF1bHRWaWV3KCk7
CiB9CiAKIHZvaWQgRnJhbWU6OndpbGxEZXRhY2hQYWdlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157600</attachid>
            <date>2012-08-09 18:03:36 -0700</date>
            <delta_ts>2012-08-10 04:33:37 -0700</delta_ts>
            <desc>still crashes a lot :)</desc>
            <filename>bug-93666-20120809180307.patch</filename>
            <type>text/plain</type>
            <size>6666</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTAzMGQxNTVhY2M4NTJm
Y2Y4ODg4OTk5ZWQ2MDgyMWM3OTQ5MWJlZC4uMzM2ZWI0YTAxZjhmMjgwNDk1Y2M1ZjBmZjFkNmEy
ZDhhNTkxMDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDEyLTA4LTA5ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgRE9NV2luZG93IHNob3VsZCBi
ZSBvd25lZCBieSB0aGUgRG9jdW1lbnQsIG5vdCB0aGUgRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0
aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVu
Y3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmRvbVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpjbGVhckRlZmF1bHRWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXREZWZhdWx0Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5z
dXJlRGVmYXVsdFZpZXcpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9j
dW1lbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OmNsZWFyRE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRET01XaW5k
b3cpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRvbVdpbmRvdyk6CisKKzIwMTItMDgtMDkg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBTYW5kYm94aW5nIHZp
ZXcgc291cmNlIGRvY3VtZW50cyBpcyBpbmVmZmVjdGl2ZQogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM2NjAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggZTc4MjY4ZTIzNGMzMjdiODAwNzc3Mzg2MjhkYTg1MmY1MjVhMjMxMC4uN2FiZDgyN2E0
MGUyZWY1ZWM2YTkyMzIwMDIzMTY3OTFlOTI1NDA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC00MDQ3LDcgKzQwNDcsMjggQEAgRE9NV2luZG93KiBEb2N1bWVudDo6ZG9tV2luZG93KCkg
Y29uc3QKICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAhPSB0aGlzKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiBmcmFtZSgpLT5kb21XaW5kb3coKTsKKyAgICByZXR1cm4gbV9k
ZWZhdWx0Vmlldy5nZXQoKTsKK30KKwordm9pZCBEb2N1bWVudDo6Y2xlYXJEZWZhdWx0Vmlldygp
Cit7CisgICAgc2V0RGVmYXVsdFZpZXcoMCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNldERlZmF1
bHRWaWV3KERPTVdpbmRvdyogZG9tV2luZG93KQoreworICAgIGlmIChtX2RlZmF1bHRWaWV3KQor
ICAgICAgICBtX2RlZmF1bHRWaWV3LT5jbGVhcigpOworICAgIG1fZGVmYXVsdFZpZXcgPSBkb21X
aW5kb3c7Cit9CisKK0RPTVdpbmRvdyogRG9jdW1lbnQ6OmVuc3VyZURlZmF1bHRWaWV3KEZyYW1l
KiBmcmFtZSkKK3sKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIEFTU0VSVCghbV9mcmFtZSB8fCBt
X2ZyYW1lID09IGZyYW1lKTsKKyAgICBpZiAoIW1fZGVmYXVsdFZpZXcpCisgICAgICAgIG1fZGVm
YXVsdFZpZXcgPSBET01XaW5kb3c6OmNyZWF0ZShmcmFtZSk7CisgICAgcmV0dXJuIG1fZGVmYXVs
dFZpZXcuZ2V0KCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGM2NzY3Zjg2NDNiZTdk
ZDg1MTNjNzYxZTc4Y2Y5ZTcxNjg3MDQzMzMuLjkxY2ZhMDAxNGE3OGU4ZTJmZmI3MDliMjE1M2Iy
YjhjMDcwZThjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03NjksNiArNzY5LDExIEBAIHB1
YmxpYzoKICAgICBET01XaW5kb3cqIGRlZmF1bHRWaWV3KCkgY29uc3QgeyByZXR1cm4gZG9tV2lu
ZG93KCk7IH0gCiAgICAgRE9NV2luZG93KiBkb21XaW5kb3coKSBjb25zdDsKIAorICAgIHZvaWQg
Y2xlYXJEZWZhdWx0VmlldygpOworICAgIHZvaWQgc2V0RGVmYXVsdFZpZXcoRE9NV2luZG93Kik7
CisgICAgRE9NV2luZG93KiBlbnN1cmVEZWZhdWx0VmlldyhGcmFtZSopOworICAgIERPTVdpbmRv
dyogZXhpc3RpbmdEZWZhdWx0VmlldygpIHsgcmV0dXJuIG1fZGVmYXVsdFZpZXcuZ2V0KCk7IH0K
KwogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIGZvcndhcmRpbmcgRE9NV2luZG93IGV2ZW50
IHJlbGF0ZWQgdGFza3MgdG8gdGhlIERPTVdpbmRvdyBpZiBpdCBleGlzdHMuCiAgICAgdm9pZCBz
ZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKICAgICBFdmVudExpc3RlbmVyKiBnZXRX
aW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
KTsKQEAgLTEyNjUsNiArMTI3MCw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPE93blB0cjxGb250
RGF0YT4gPiBtX2N1c3RvbUZvbnRzOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CisgICAgUmVmUHRy
PERPTVdpbmRvdz4gbV9kZWZhdWx0VmlldzsKKwogICAgIE93blB0cjxDYWNoZWRSZXNvdXJjZUxv
YWRlcj4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKICAgICBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+
IG1fcGFyc2VyOwogICAgIFJlZlB0cjxDb250ZXh0RmVhdHVyZXM+IG1fY29udGV4dEZlYXR1cmVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKaW5kZXggMzE3NGFmYzQw
NDUyYzU5OGVhOTBkOWE5NGYwNzRiNGU3ZGM0MWE5OS4uNjgwY2MyZWNlYzg4MzhkOWVkNWYyODQ4
NTJlMjBhMDhkYjA4YzkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIu
Y3BwCkBAIC0xMTcsNyArMTE3LDggQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3Qg
S1VSTCYgdXJsUmVmZXJlbmNlLCBib29sIGRpc3BhdGNoLCBEb2N1bWVudCogb3cKICAgICAvLyBD
cmVhdGUgYSBuZXcgZG9jdW1lbnQgYmVmb3JlIGNsZWFyaW5nIHRoZSBmcmFtZSwgYmVjYXVzZSBp
dCBtYXkgbmVlZCB0bwogICAgIC8vIGluaGVyaXQgYW4gYWxpYXNlZCBzZWN1cml0eSBjb250ZXh0
LgogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjcmVhdGVEb2N1bWVudCh1cmwpOwot
ICAgIAorICAgIGRvY3VtZW50LT5lbnN1cmVEZWZhdWx0VmlldyhtX2ZyYW1lKTsKKwogICAgIC8v
IElmIHRoZSBuZXcgZG9jdW1lbnQgaXMgZm9yIGEgUGx1Z2luIGJ1dCB3ZSdyZSBzdXBwb3NlZCB0
byBiZSBzYW5kYm94ZWQgZnJvbSBQbHVnaW5zLAogICAgIC8vIHRoZW4gcmVwbGFjZSB0aGUgZG9j
dW1lbnQgd2l0aCBvbmUgd2hvc2UgcGFyc2VyIHdpbGwgaWdub3JlIHRoZSBpbmNvbWluZyBkYXRh
IChidWcgMzkzMjMpCiAgICAgaWYgKGRvY3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgJiYgZG9j
dW1lbnQtPmlzU2FuZGJveGVkKFNhbmRib3hQbHVnaW5zKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5k
ZXggMDk4ODEwZGNkODJjNGZmOGVmNjI1NzZjNWMwODE2NmFmOGFkZjQ5MS4uODU1M2EyMWFlOTlm
MzljNmFhODYzYTI1YTFiN2RiODJiNTA0MDM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTYw
MywxMSArNjAzLDcgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHNGb3JXb3JsZChET01X
cmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0VmUKIAogdm9pZCBGcmFtZTo6Y2xl
YXJET01XaW5kb3coKQogewotICAgIGlmIChtX2RvbVdpbmRvdykgewotICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkKHRoaXMsIG1fZG9tV2luZG93
LmdldCgpKTsKLSAgICAgICAgbV9kb21XaW5kb3ctPmNsZWFyKCk7Ci0gICAgfQotICAgIG1fZG9t
V2luZG93ID0gMDsKKyAgICBtX2RvYy0+Y2xlYXJEZWZhdWx0VmlldygpOwogfQogCiBSZW5kZXJW
aWV3KiBGcmFtZTo6Y29udGVudFJlbmRlcmVyKCkgY29uc3QKQEAgLTY3MSwxMSArNjY3LDcgQEAg
dm9pZCBGcmFtZTo6Y2xlYXJUaW1lcnMoKQogCiB2b2lkIEZyYW1lOjpzZXRET01XaW5kb3coRE9N
V2luZG93KiBkb21XaW5kb3cpCiB7Ci0gICAgaWYgKG1fZG9tV2luZG93KSB7Ci0gICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQodGhpcywgbV9kb21X
aW5kb3cuZ2V0KCkpOwotICAgICAgICBtX2RvbVdpbmRvdy0+Y2xlYXIoKTsKLSAgICB9Ci0gICAg
bV9kb21XaW5kb3cgPSBkb21XaW5kb3c7CisgICAgbV9kb2MtPnNldERlZmF1bHRWaWV3KGRvbVdp
bmRvdyk7CiB9CiAKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKQEAgLTY5NywxMCAr
Njg5LDEyIEBAIHZvaWQgRnJhbWU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAKIERPTVdpbmRvdyogRnJhbWU6OmRvbVdpbmRvdygp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2RvbVdpbmRvdykKLSAgICAgICAgbV9kb21XaW5kb3cgPSBE
T01XaW5kb3c6OmNyZWF0ZShjb25zdF9jYXN0PEZyYW1lKj4odGhpcykpOworICAgIHJldHVybiBt
X2RvYy0+ZG9tV2luZG93KCk7Cit9CiAKLSAgICByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7CitE
T01XaW5kb3cqIEZyYW1lOjpleGlzdGluZ0RPTVdpbmRvdygpCit7CisgICAgcmV0dXJuIG1fZG9j
LT5leGlzdGluZ0RlZmF1bHRWaWV3KCk7CiB9CiAKIHZvaWQgRnJhbWU6OndpbGxEZXRhY2hQYWdl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAppbmRleCAwMGMwNGEzNTgxZjcyZjJlYzZkNTkxMjEyYTM1YWFkMmMw
NDc5MGEyLi41YTRmZGU4MGQxMDIyNTFhZWIxYjQyYTQ2NzBmY2E4YjBhOWViNjQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oCkBAIC0xMzEsNyArMTMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBVbmxpa2UgbW9zdCBhY2Nlc3NvcnMgaW4gdGhpcyBjbGFzcywgZG9tV2luZG93KCkgYWx3
YXlzIGNyZWF0ZXMgYSBuZXcgRE9NV2luZG93IGlmIG1fZG9tV2luZG93IGlzIG51bGwuCiAgICAg
ICAgIC8vIENhbGxlcnMgdGhhdCBkb24ndCBuZWVkIGEgbmV3IERPTVdpbmRvdyB0byBiZSBjcmVh
dGVkIHNob3VsZCB1c2UgZXhpc3RpbmdET01XaW5kb3coKS4KICAgICAgICAgRE9NV2luZG93KiBk
b21XaW5kb3coKSBjb25zdDsKLSAgICAgICAgRE9NV2luZG93KiBleGlzdGluZ0RPTVdpbmRvdygp
IHsgcmV0dXJuIG1fZG9tV2luZG93LmdldCgpOyB9CisgICAgICAgIERPTVdpbmRvdyogZXhpc3Rp
bmdET01XaW5kb3coKTsKICAgICAgICAgdm9pZCBzZXRET01XaW5kb3coRE9NV2luZG93Kik7CiAg
ICAgICAgIHZvaWQgY2xlYXJET01XaW5kb3coKTsKIApAQCAtMjE0LDggKzIxNCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgbXV0YWJsZSBGcmFtZUxvYWRlciBtX2xvYWRlcjsKICAg
ICAgICAgbXV0YWJsZSBOYXZpZ2F0aW9uU2NoZWR1bGVyIG1fbmF2aWdhdGlvblNjaGVkdWxlcjsK
IAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxET01XaW5kb3c+IG1fZG9tV2luZG93OwotCiAgICAg
ICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogbV9vd25lckVsZW1lbnQ7CiAgICAgICAgIFJlZlB0
cjxGcmFtZVZpZXc+IG1fdmlldzsKICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvYzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157702</attachid>
            <date>2012-08-10 04:33:41 -0700</date>
            <delta_ts>2012-08-10 16:23:25 -0700</delta_ts>
            <desc>crashes less</desc>
            <filename>bug-93666-20120810043313.patch</filename>
            <type>text/plain</type>
            <size>19692</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY1ZjZlYzZjZDllZDQ2
ZGFiZTI5ZjU1ZWRlYzFjYTVmMTllN2Q5OC4uODkxZGQxNTRmYWRhNmRiMGZmYjNiN2EzNzgxMDI3
ZTMyYzZhYjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTA5ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRE9NV2luZG93IHNob3VsZCBi
ZSBvd25lZCBieSB0aGUgRG9jdW1lbnQsIG5vdCB0aGUgRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0
aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVu
Y3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmRvbVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpjbGVhckRlZmF1bHRWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXREZWZhdWx0Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5z
dXJlRGVmYXVsdFZpZXcpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9j
dW1lbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OmNsZWFyRE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRET01XaW5k
b3cpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRvbVdpbmRvdyk6CisKIDIwMTItMDgtMDkg
IERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWRE
QjogaW50dmVyc2lvbi1sb25nLXF1ZXVlLmh0bWwgZmFpbHMgYW4gYXNzZXJ0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IGJkY2ExMjkxZDZiOWE2NDMxYTVjYzI0MTliODAyNWYyZjMyODUyMTkuLjhk
NDI4OGE4ZDg3NDU2ZDlkMDNhNDE1ZWFjMzEyMWIzMDc2ZjQxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0xMzQ5LDYgKzEzNDksNyBAQCBfX1pOSzdXZWJDb3JlN0ludFJlY3RjdjZDR1JlY3RF
dgogX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVyQmFzZThpc0FjdGl2ZUV2CiBfX1pOSzdXZWJD
b3JlOERvY3VtZW50MTByZW5kZXJWaWV3RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMWNvbXBs
ZXRlVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTks3V2ViQ29yZThEb2N1bWVudDExZGVmYXVsdFZp
ZXdFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDEzYXhPYmplY3RDYWNoZUV2CiBfX1pOSzdXZWJD
b3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiCiBfX1pOSzdXZWJDb3JlOERvY3Vt
ZW50MTRnZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCkBAIC0xOTcwLDcgKzE5
NzEsNiBAQCBfX1pOSzdXZWJDb3JlNkVkaXRvcjE2aGFzQmlkaVNlbGVjdGlvbkV2CiBfX1pOSzdX
ZWJDb3JlNkVkaXRvcjZjbGllbnRFdgogX19aTks3V2ViQ29yZTdJbnRTaXplY3Y2Q0dTaXplRXYK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQzMWlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWRF
dgotX19aTks3V2ViQ29yZThEb2N1bWVudDlkb21XaW5kb3dFdgogX19aTks3V2ViQ29yZThQb3Np
dGlvbjI4b2Zmc2V0Rm9yUG9zaXRpb25BZnRlckFuY2hvckV2CiBfX1pOSzdXZWJDb3JlOUZsb2F0
UmVjdGN2NkNHUmVjdEV2CiBfX1pOSzdXZWJDb3JlOUZsb2F0U2l6ZWN2NkNHU2l6ZUV2CkBAIC0y
MTY4LDcgKzIxNjgsNiBAQCBfX1pON1dlYkNvcmU4RG9jdW1lbnQzNXdlYmtpdFdpbGxFbnRlckZ1
bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKIF9fWk43V2ViQ29yZThEb2N1bWVudDI1
c2V0RnVsbFNjcmVlblJlbmRlcmVyU2l6ZUVSS05TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlOERv
Y3VtZW50MzZzZXRGdWxsU2NyZWVuUmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JFTlNfNUNvbG9yRQog
X19aTjdXZWJDb3JlOERvY3VtZW50MjJzZXRBbmltYXRpbmdGdWxsU2NyZWVuRWIKLV9fWk5LN1dl
YkNvcmU4RG9jdW1lbnQ5ZG9tV2luZG93RXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdFT0xPQ0FU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cAppbmRleCBhNjg1YmFjYTVjYjE2ZDkxNWE5YWI2YzkyM2U2MTZlOGYwMjcwMDk1Li4wMjJmMDg0
NjQwNTZiYzhmYTZlZDkyMTdiYTk1ZDQ0YThmZmJjMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZv
aWQgU2NyaXB0Q29udHJvbGxlcjo6Z2V0QWxsV29ybGRzKFZlY3RvcjxSZWZQdHI8RE9NV3JhcHBl
cldvcmxkPiA+JiB3b3JsZHMpCiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+
KEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+Y2xpZW50RGF0YSktPmdldEFsbFdv
cmxkcyh3b3JsZHMpOwogfQogCi12b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hl
bGwoYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFy
V2luZG93U2hlbGwoRE9NV2luZG93KiBuZXdET01XaW5kb3csIGJvb2wgZ29pbmdJbnRvUGFnZUNh
Y2hlKQogewogICAgIGlmIChtX3dpbmRvd1NoZWxscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93
U2hlbGwoYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUpCiAgICAgICAgIGF0dGFjaERlYnVnZ2VyKHdp
bmRvd1NoZWxsLCAwKTsKIAogICAgICAgICB3aW5kb3dTaGVsbC0+d2luZG93KCktPndpbGxSZW1v
dmVGcm9tV2luZG93U2hlbGwoKTsKLSAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyhtX2Zy
YW1lLT5kb21XaW5kb3coKSk7CisgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cobmV3RE9N
V2luZG93KTsKIAogICAgICAgICAvLyBBbiBtX2NhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0IHBl
cnNpc3RzIGJldHdlZW4gcGFnZSBuYXZpZ2F0aW9ucwogICAgICAgICAvLyBzbyBuZWVkcyB0byBr
bm93IGFib3V0IHRoZSBuZXcgSlNET01XaW5kb3cuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMGVkOTg2OTY5MTQ4NzNiMWRhM2E4NGFlMmEw
ODMxZThmZDgxOWJiZS4uZjc2ZmRlOGZjNzJmNjgwNWVmNDhjMDNhZmMxZDA2YTNhMTU0Y2E4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAt
MTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyogc291cmNlVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0gLy8gMCBpZiB3ZSBhcmUgbm90IGV2YWx1YXRp
bmcgYW55IHNjcmlwdAogCi0gICAgdm9pZCBjbGVhcldpbmRvd1NoZWxsKGJvb2wgZ29pbmdJbnRv
UGFnZUNhY2hlID0gZmFsc2UpOworICAgIHZvaWQgY2xlYXJXaW5kb3dTaGVsbChET01XaW5kb3cq
IG5ld0RPTVdpbmRvdywgYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUpOwogICAgIHZvaWQgdXBkYXRl
RG9jdW1lbnQoKTsKIAogICAgIHZvaWQgbmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiwgY29u
c3QgQXRvbWljU3RyaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDFlMzNlMmFmMWVkNjZiZDQ2NmZkMTBhNmNjODQyYTFk
NzA1YWQ0NWIuLjI0NjQ4NGJhYzk5YzU4ZjY1YmI5NTM2M2I1MWY4NTM0OTY4MmJlM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC00
MjYsNyArNDI2LDcgQEAgTlBPYmplY3QqIFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdE9i
amVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJbkVsZW1lbnQKIH0KIAogCi12b2lkIFNjcmlw
dENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwoYm9vbCkKK3ZvaWQgU2NyaXB0Q29udHJvbGxl
cjo6Y2xlYXJXaW5kb3dTaGVsbChET01XaW5kb3cqLCBib29sKQogewogICAgIC8vIFY4IGJpbmRp
bmcgZXhwZWN0cyBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsIG9ubHkgYmUgY2Fs
bGVkCiAgICAgLy8gd2hlbiBhIGZyYW1lIGlzIGxvYWRpbmcgYSBuZXcgcGFnZS4gVjhQcm94eTo6
Y2xlYXJGb3JOYXZpZ2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmgKaW5kZXggYjNjMjJhY2E4ODBiZjgzYjUxODg1YWQ3OWQzMWM3MTMyZThjMmM0
NC4uZjkwOWUzNTYxNWU4OWQyYmM3OWYwOWQyZTIxYjMwZjliMzMwMTJhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTYwLDcgKzE2MCw3
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyogc291cmNlVVJMKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VVUkw7IH0gLy8gMCBpZiB3ZSBhcmUgbm90IGV2YWx1YXRpbmcgYW55IHNjcmlw
dC4KIAotICAgIHZvaWQgY2xlYXJXaW5kb3dTaGVsbChib29sID0gZmFsc2UpOworICAgIHZvaWQg
Y2xlYXJXaW5kb3dTaGVsbChET01XaW5kb3cqLCBib29sKTsKICAgICB2b2lkIHVwZGF0ZURvY3Vt
ZW50KCk7CiAKICAgICB2b2lkIG5hbWVkSXRlbUFkZGVkKEhUTUxEb2N1bWVudCosIGNvbnN0IEF0
b21pY1N0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZWQ5ZWVmZWU2YWRmMjk5
ZDc5MTM0MTk2MWJmZTdhYWNiNzNiZmZjYS4uNThhMjQyNjJjZGFjNDdlNzQ2ZmY5Njg1YWM0ZmYy
MDVkNWRhMmU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MDM2LDE4ICs0MDM2LDI3
IEBAIHZvaWQgRG9jdW1lbnQ6OnRleHROb2RlU3BsaXQoVGV4dCogb2xkTm9kZSkKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgdXBkYXRlIG1hcmtlcnMgZm9yIHNwZWxsaW5nIGFuZCBncmFtbWFy
IGNoZWNraW5nLgogfQogCi0vLyBGSVhNRTogZXZlbnR1YWxseSwgdGhpcyBzaG91bGQgcmV0dXJu
IGEgRE9NV2luZG93IHN0b3JlZCBpbiB0aGUgZG9jdW1lbnQuCi1ET01XaW5kb3cqIERvY3VtZW50
Ojpkb21XaW5kb3coKSBjb25zdAorRE9NV2luZG93KiBEb2N1bWVudDo6ZGVmYXVsdFZpZXcoKSBj
b25zdAogewogICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBU
aGUgbV9mcmFtZSBwb2ludGVyIGlzIG5vdCAobm90IGFsd2F5cz8pIHplcm9lZCBvdXQgd2hlbiB0
aGUgZG9jdW1lbnQgaXMgcHV0IGludG8gYi9mIGNhY2hlLCBzbyB0aGUgZnJhbWUgY2FuIGhvbGQg
YW4gdW5yZWxhdGVkIGRvY3VtZW50L3dpbmRvdyBwYWlyLgotICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgYWx3YXlzIHplcm8gb3V0IHRoZSBmcmFtZSBwb2ludGVyIG9uIG5hdmlnYXRpb24gdG8gYXZv
aWQgYWNjaWRlbnRhbGx5IGFjY2Vzc2luZyB0aGUgbmV3IGZyYW1lIGNvbnRlbnQuCiAgICAgaWYg
KG1fZnJhbWUtPmRvY3VtZW50KCkgIT0gdGhpcykKICAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG1fZGVmYXVsdFZpZXcuZ2V0KCk7Cit9CiAKLSAgICByZXR1cm4gZnJhbWUoKS0+ZG9tV2lu
ZG93KCk7Cit2b2lkIERvY3VtZW50OjpzZXREZWZhdWx0VmlldyhET01XaW5kb3cqIGRlZmF1bHRW
aWV3KQoreworICAgIGlmIChtX2RlZmF1bHRWaWV3KQorICAgICAgICBtX2RlZmF1bHRWaWV3LT5j
bGVhcigpOworICAgIG1fZGVmYXVsdFZpZXcgPSBkZWZhdWx0VmlldzsKK30KKwordm9pZCBEb2N1
bWVudDo6Y3JlYXRlRGVmYXVsdFZpZXcoKQoreworICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBB
U1NFUlQoIW1fZGVmYXVsdFZpZXcpOworICAgIG1fZGVmYXVsdFZpZXcgPSBET01XaW5kb3c6OmNy
ZWF0ZShtX2ZyYW1lKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0V2luZG93QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBsaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYzY3NjdmODY0M2Jl
N2RkODUxM2M3NjFlNzhjZjllNzE2ODcwNDMzMy4uOTM3NzBiNTYwMTI0ZGEyYjlkNGJlOTUwODQw
OGFlMmFlZTUwYjc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTc2Niw4ICs3NjYsMTIgQEAg
cHVibGljOgogICAgIHZvaWQgdGV4dE5vZGVzTWVyZ2VkKFRleHQqIG9sZE5vZGUsIHVuc2lnbmVk
IG9mZnNldCk7CiAgICAgdm9pZCB0ZXh0Tm9kZVNwbGl0KFRleHQqIG9sZE5vZGUpOwogCi0gICAg
RE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIGRvbVdpbmRvdygpOyB9IAot
ICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3Q7CisgICAgRE9NV2luZG93KiBkZWZhdWx0
VmlldygpIGNvbnN0OworICAgIERPTVdpbmRvdyogZGVwcmVjaWF0ZWREZWZhdWx0VmlldygpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmYXVsdFZpZXcuZ2V0KCk7IH0KKyAgICBET01XaW5kb3cqIGRvbVdp
bmRvdygpIGNvbnN0IHsgcmV0dXJuIGRlZmF1bHRWaWV3KCk7IH0KKworICAgIHZvaWQgY3JlYXRl
RGVmYXVsdFZpZXcoKTsKKyAgICB2b2lkIHNldERlZmF1bHRWaWV3KERPTVdpbmRvdyopOwogCiAg
ICAgLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgZm9yd2FyZGluZyBET01XaW5kb3cgZXZlbnQgcmVs
YXRlZCB0YXNrcyB0byB0aGUgRE9NV2luZG93IGlmIGl0IGV4aXN0cy4KICAgICB2b2lkIHNldFdp
bmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwpAQCAtMTI2NSw2ICsxMjY5LDggQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8T3duUHRyPEZvbnREYXRhPiA+IG1fY3VzdG9tRm9udHM7CiAKICAgICBG
cmFtZSogbV9mcmFtZTsKKyAgICBSZWZQdHI8RE9NV2luZG93PiBtX2RlZmF1bHRWaWV3OworCiAg
ICAgT3duUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2NhY2hlZFJlc291cmNlTG9hZGVyOwog
ICAgIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4gbV9wYXJzZXI7CiAgICAgUmVmUHRyPENvbnRleHRG
ZWF0dXJlcz4gbV9jb250ZXh0RmVhdHVyZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCAzMmZmMjhjMzIyNTMwNGViYjYxMDRjYjczMDBhNDJmNDdiZGM0MjU1
Li42OTAyNGNhY2IyMjBkZDFiZTRiZDcxODYwZmM3ZGFmMzM3NTZlNTYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZSgpCiAgICAgICAgIHJldHVybjsKICAgICBB
U1NFUlQodGhpcyA9PSBmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsKIAot
ICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCkp
CisgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9tV2luZG93KCkpCiAgICAg
ICAgIHdpbmRvdy0+ZmluaXNoZWRMb2FkaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IDMxNzRhZmM0MDQ1MmM1OThlYTkwZDlhOTRmMDc0YjRl
N2RjNDFhOTkuLjI2N2U3NjJiZTE4ZTJkMWIxNGVlMzQ2NDc3NDkyMjVkYmI0OGZhMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApAQCAtMTE3LDcgKzExNyw3IEBA
IHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybFJlZmVyZW5jZSwgYm9v
bCBkaXNwYXRjaCwgRG9jdW1lbnQqIG93CiAgICAgLy8gQ3JlYXRlIGEgbmV3IGRvY3VtZW50IGJl
Zm9yZSBjbGVhcmluZyB0aGUgZnJhbWUsIGJlY2F1c2UgaXQgbWF5IG5lZWQgdG8KICAgICAvLyBp
bmhlcml0IGFuIGFsaWFzZWQgc2VjdXJpdHkgY29udGV4dC4KICAgICBSZWZQdHI8RG9jdW1lbnQ+
IGRvY3VtZW50ID0gY3JlYXRlRG9jdW1lbnQodXJsKTsKLSAgICAKKwogICAgIC8vIElmIHRoZSBu
ZXcgZG9jdW1lbnQgaXMgZm9yIGEgUGx1Z2luIGJ1dCB3ZSdyZSBzdXBwb3NlZCB0byBiZSBzYW5k
Ym94ZWQgZnJvbSBQbHVnaW5zLAogICAgIC8vIHRoZW4gcmVwbGFjZSB0aGUgZG9jdW1lbnQgd2l0
aCBvbmUgd2hvc2UgcGFyc2VyIHdpbGwgaWdub3JlIHRoZSBpbmNvbWluZyBkYXRhIChidWcgMzkz
MjMpCiAgICAgaWYgKGRvY3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQtPmlz
U2FuZGJveGVkKFNhbmRib3hQbHVnaW5zKSkKQEAgLTEyNSwxMCArMTI1LDE4IEBAIHZvaWQgRG9j
dW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybFJlZmVyZW5jZSwgYm9vbCBkaXNwYXRj
aCwgRG9jdW1lbnQqIG93CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjb25zdWx0IHRo
ZSBjb250ZW50IHNlY3VyaXR5IHBvbGljeSBoZXJlIGFib3V0IGJsb2NrZWQgcGx1Zy1pbnM/CiAK
LSAgICBib29sIHJlc2V0U2NyaXB0aW5nID0gIShtX2ZyYW1lLT5sb2FkZXIoKS0+c3RhdGVNYWNo
aW5lKCktPmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+aXNTZWN1cmVUcmFuc2l0aW9uVG8odXJsKSk7Ci0gICAgbV9mcmFtZS0+bG9hZGVy
KCktPmNsZWFyKHJlc2V0U2NyaXB0aW5nLCByZXNldFNjcmlwdGluZyk7CisgICAgYm9vbCBzaG91
bGRSZXVzZURlZmF1bHRWaWV3ID0gbV9mcmFtZS0+bG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLT5p
c0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmlzU2VjdXJlVHJhbnNpdGlvblRvKHVybCk7CisKKyAgICBpZiAoc2hvdWxkUmV1c2VEZWZhdWx0
VmlldyAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKSB7CisgICAgICAgIC8v
IEZJWE1FOiBEb2N1bWVudCB0aGlzIGluc2FuaXR5LgorICAgICAgICBkb2N1bWVudC0+c2V0RGVm
YXVsdFZpZXcobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGRvY3VtZW50LT5jcmVhdGVEZWZhdWx0VmlldygpOworCisgICAgbV9mcmFtZS0+
bG9hZGVyKCktPmNsZWFyKGRvY3VtZW50LmdldCgpLCAhc2hvdWxkUmV1c2VEZWZhdWx0Vmlldywg
IXNob3VsZFJldXNlRGVmYXVsdFZpZXcpOwogICAgIGNsZWFyKCk7Ci0gICAgaWYgKHJlc2V0U2Ny
aXB0aW5nKQorCisgICAgaWYgKCFzaG91bGRSZXVzZURlZmF1bHRWaWV3KQogICAgICAgICBtX2Zy
YW1lLT5zY3JpcHQoKS0+dXBkYXRlUGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CiAKICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS0+c2V0T3V0Z29pbmdSZWZlcnJlcih1cmwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMGRjYjNiMjRmOWJlYjhiYmJjZDJmMTkwOTY2YTZhYzNl
YWU5NWQ0YS4uZmRiZTdiNzRmOWZiOTAyYTg3OTE3MmM5NWEzNjk3MDdiOWNmZmNiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgYm9vbCBG
cmFtZUxvYWRlcjo6ZGlkT3BlblVSTCgpCiAgICAgLy8gaXRzIGZyYW1lIGlzIG5vdCBpbiBhIGNv
bnNpc3RlbnQgc3RhdGUgZm9yIHJlbmRlcmluZywgc28gYXZvaWQgc2V0SlNTdGF0dXNCYXJUZXh0
CiAgICAgLy8gc2luY2UgaXQgbWF5IGNhdXNlIGNsaWVudHMgdG8gYXR0ZW1wdCB0byByZW5kZXIg
dGhlIGZyYW1lLgogICAgIGlmICghbV9zdGF0ZU1hY2hpbmUuY3JlYXRpbmdJbml0aWFsRW1wdHlE
b2N1bWVudCgpKSB7Ci0gICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmV4
aXN0aW5nRE9NV2luZG93KCkpIHsKKyAgICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gbV9m
cmFtZS0+ZG9tV2luZG93KCkpIHsKICAgICAgICAgICAgIHdpbmRvdy0+c2V0U3RhdHVzKFN0cmlu
ZygpKTsKICAgICAgICAgICAgIHdpbmRvdy0+c2V0RGVmYXVsdFN0YXR1cyhTdHJpbmcoKSk7CiAg
ICAgICAgIH0KQEAgLTQ5OSwxMSArNDk5LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNhbmNlbEFu
ZENsZWFyKCkKICAgICBpZiAoIW1faXNDb21wbGV0ZSkKICAgICAgICAgY2xvc2VVUkwoKTsKIAot
ICAgIGNsZWFyKGZhbHNlKTsKKyAgICBjbGVhcihtX2ZyYW1lLT5kb2N1bWVudCgpLCBmYWxzZSk7
CiAgICAgbV9mcmFtZS0+c2NyaXB0KCktPnVwZGF0ZVBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwog
fQogCi12b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihib29sIGNsZWFyV2luZG93UHJvcGVydGllcywg
Ym9vbCBjbGVhclNjcmlwdE9iamVjdHMsIGJvb2wgY2xlYXJGcmFtZVZpZXcpCit2b2lkIEZyYW1l
TG9hZGVyOjpjbGVhcihEb2N1bWVudCogbmV3RG9jdW1lbnQsIGJvb2wgY2xlYXJXaW5kb3dQcm9w
ZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cywgYm9vbCBjbGVhckZyYW1lVmlldykKIHsK
ICAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xlYXIoKTsKIApAQCAtNTIyLDggKzUyMiw4IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmNsZWFyKGJvb2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNs
ZWFyU2NyaXB0T2JqZWN0cywgYm9vCiAKICAgICAvLyBEbyB0aGlzIGFmdGVyIGRldGFjaGluZyB0
aGUgZG9jdW1lbnQgc28gdGhhdCB0aGUgdW5sb2FkIGV2ZW50IHdvcmtzLgogICAgIGlmIChjbGVh
cldpbmRvd1Byb3BlcnRpZXMpIHsKLSAgICAgICAgbV9mcmFtZS0+Y2xlYXJET01XaW5kb3coKTsK
LSAgICAgICAgbV9mcmFtZS0+c2NyaXB0KCktPmNsZWFyV2luZG93U2hlbGwobV9mcmFtZS0+ZG9j
dW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSk7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNl
dERlZmF1bHRWaWV3KDApOworICAgICAgICBtX2ZyYW1lLT5zY3JpcHQoKS0+Y2xlYXJXaW5kb3dT
aGVsbChuZXdEb2N1bWVudC0+ZGVwcmVjaWF0ZWREZWZhdWx0VmlldygpLCBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5pblBhZ2VDYWNoZSgpKTsKICAgICB9CiAKICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24o
KS0+Y2xlYXIoKTsKQEAgLTE5MDMsNyArMTkwMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnByZXBh
cmVGb3JDYWNoZWRQYWdlUmVzdG9yZSgpCiAgICAgCiAgICAgLy8gRGVsZXRlIG9sZCBzdGF0dXMg
YmFyIG1lc3NhZ2VzIChpZiBpdCBfd2FzXyBhY3RpdmF0ZWQgb24gbGFzdCBVUkwpLgogICAgIGlm
IChtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpKSB7Ci0gICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmV4aXN0
aW5nRE9NV2luZG93KCkpIHsKKyAgICAgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFt
ZS0+ZG9tV2luZG93KCkpIHsKICAgICAgICAgICAgIHdpbmRvdy0+c2V0U3RhdHVzKFN0cmluZygp
KTsKICAgICAgICAgICAgIHdpbmRvdy0+c2V0RGVmYXVsdFN0YXR1cyhTdHJpbmcoKSk7CiAgICAg
ICAgIH0KQEAgLTE5MjQsMTAgKzE5MjQsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNo
ZWRGcmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogICAgICAgICB1cmwuc2V0UGF0aCgiLyIpOwogCiAg
ICAgc3RhcnRlZCgpOwotICAgIGNsZWFyKHRydWUsIHRydWUsIGNhY2hlZEZyYW1lLmlzTWFpbkZy
YW1lKCkpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY2FjaGVkRnJhbWUuZG9jdW1lbnQo
KTsKICAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgIGRvY3VtZW50LT5zZXREZWZhdWx0Vmlldyhj
YWNoZWRGcmFtZS5kb21XaW5kb3coKSk7CisKKyAgICBjbGVhcihkb2N1bWVudCwgdHJ1ZSwgdHJ1
ZSwgY2FjaGVkRnJhbWUuaXNNYWluRnJhbWUoKSk7CisKICAgICBkb2N1bWVudC0+c2V0SW5QYWdl
Q2FjaGUoZmFsc2UpOwogCiAgICAgbV9uZWVkc0NsZWFyID0gdHJ1ZTsKQEAgLTE5NDcsNyArMTk1
MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFt
ZSkKICAgICBtX2ZyYW1lLT5zZXRWaWV3KHZpZXcpOwogICAgIAogICAgIG1fZnJhbWUtPnNldERv
Y3VtZW50KGRvY3VtZW50KTsKLSAgICBtX2ZyYW1lLT5zZXRET01XaW5kb3coY2FjaGVkRnJhbWUu
ZG9tV2luZG93KCkpOworCiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnJlc3VtZUZyb21QYWdl
Q2FjaGUoKTsKICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2V0VVJMKGRvY3VtZW50LT51cmwo
KSk7CiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnNldFNlY3VyaXR5T3JpZ2luKGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpKTsKQEAgLTI2OTQsNyArMjY5Nyw3IEBAIGJvb2wgRnJhbWVMb2Fk
ZXI6OnNob3VsZENsb3NlKCkKIAogYm9vbCBGcmFtZUxvYWRlcjo6ZmlyZUJlZm9yZVVubG9hZEV2
ZW50KENocm9tZSogY2hyb21lKQogewotICAgIERPTVdpbmRvdyogZG9tV2luZG93ID0gbV9mcmFt
ZS0+ZXhpc3RpbmdET01XaW5kb3coKTsKKyAgICBET01XaW5kb3cqIGRvbVdpbmRvdyA9IG1fZnJh
bWUtPmRvbVdpbmRvdygpOwogICAgIGlmICghZG9tV2luZG93KQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTJjZjMwMTdkYTJhZjI4
ZTAzN2VjM2RmODMyMjU1YzQ4ZDViZDNiLi5mYjBhNTQwNmMzYzFhMmMzZTk4MDRjMjliOTRlZDEz
ZWY1OTJiYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMTMxLDcgKzEz
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5KTsK
ICAgICBib29sIGNsb3NlVVJMKCk7CiAgICAgdm9pZCBjYW5jZWxBbmRDbGVhcigpOwotICAgIHZv
aWQgY2xlYXIoYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRpZXMgPSB0cnVlLCBib29sIGNsZWFyU2Ny
aXB0T2JqZWN0cyA9IHRydWUsIGJvb2wgY2xlYXJGcmFtZVZpZXcgPSB0cnVlKTsKKyAgICB2b2lk
IGNsZWFyKERvY3VtZW50KiBuZXdEb2N1bWVudCwgYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRpZXMg
PSB0cnVlLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cyA9IHRydWUsIGJvb2wgY2xlYXJGcmFtZVZp
ZXcgPSB0cnVlKTsKIAogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBmcmFt
ZUhhc0xvYWRlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAwOTg4MTBkY2Q4MmM0
ZmY4ZWY2MjU3NmM1YzA4MTY2YWY4YWRmNDkxLi5iMzJjMWNiMTY2MGM5NzkwMDA1MzYwNTMwYmI2
OGMxMmQzNGQ5OGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMjg5LDEyICsyODksMTYgQEAg
dm9pZCBGcmFtZTo6c2V0VmlldyhQYXNzUmVmUHRyPEZyYW1lVmlldz4gdmlldykKIHZvaWQgRnJh
bWU6OnNldERvY3VtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnQ+IG5ld0RvYykKIHsKICAgICBBU1NF
UlQoIW5ld0RvYyB8fCBuZXdEb2MtPmZyYW1lKCkpOworICAgIEFTU0VSVCghbmV3RG9jIHx8IG5l
d0RvYy0+ZnJhbWUoKSA9PSB0aGlzKTsKICAgICBpZiAobV9kb2MgJiYgbV9kb2MtPmF0dGFjaGVk
KCkgJiYgIW1fZG9jLT5pblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24n
dCBjYWxsIHdpbGxSZW1vdmUgaGVyZS4gV2h5IGlzIHRoYXQgT0s/CiAgICAgICAgIG1fZG9jLT5k
ZXRhY2goKTsKICAgICB9CiAKICAgICBtX2RvYyA9IG5ld0RvYzsKKyAgICBBU1NFUlQoIW1fZG9j
IHx8IG1fZG9jLT5kZWZhdWx0VmlldygpKTsKKyAgICBBU1NFUlQoIW1fZG9jIHx8IG1fZG9jLT5k
ZWZhdWx0VmlldygpLT5mcmFtZSgpID09IHRoaXMpOworCiAgICAgc2VsZWN0aW9uKCktPnVwZGF0
ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwogCiAgICAgaWYgKG1fZG9jICYmICFtX2Rv
Yy0+YXR0YWNoZWQoKSkKQEAgLTYwMSwxNSArNjA1LDYgQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNl
clNjcmlwdHNGb3JXb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0
VmUKICAgICB9CiB9CiAKLXZvaWQgRnJhbWU6OmNsZWFyRE9NV2luZG93KCkKLXsKLSAgICBpZiAo
bV9kb21XaW5kb3cpIHsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdp
bmRvd0Rpc2NhcmRlZCh0aGlzLCBtX2RvbVdpbmRvdy5nZXQoKSk7Ci0gICAgICAgIG1fZG9tV2lu
ZG93LT5jbGVhcigpOwotICAgIH0KLSAgICBtX2RvbVdpbmRvdyA9IDA7Ci19Ci0KIFJlbmRlclZp
ZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBjb25zdAogewogICAgIERvY3VtZW50KiBkb2Mg
PSBkb2N1bWVudCgpOwpAQCAtNjY5LDE1ICs2NjQsNiBAQCB2b2lkIEZyYW1lOjpjbGVhclRpbWVy
cygpCiAgICAgY2xlYXJUaW1lcnMobV92aWV3LmdldCgpLCBkb2N1bWVudCgpKTsKIH0KIAotdm9p
ZCBGcmFtZTo6c2V0RE9NV2luZG93KERPTVdpbmRvdyogZG9tV2luZG93KQotewotICAgIGlmICht
X2RvbVdpbmRvdykgewotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2lu
ZG93RGlzY2FyZGVkKHRoaXMsIG1fZG9tV2luZG93LmdldCgpKTsKLSAgICAgICAgbV9kb21XaW5k
b3ctPmNsZWFyKCk7Ci0gICAgfQotICAgIG1fZG9tV2luZG93ID0gZG9tV2luZG93OwotfQotCiAj
aWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiB2b2lkIEZyYW1lOjpkaXNwYXRjaFZpc2li
aWxpdHlTdGF0ZUNoYW5nZUV2ZW50KCkKIHsKQEAgLTY5NywxMCArNjgzLDggQEAgdm9pZCBGcmFt
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKIAogRE9NV2luZG93KiBGcmFtZTo6ZG9tV2luZG93KCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fZG9tV2luZG93KQotICAgICAgICBtX2RvbVdpbmRvdyA9IERPTVdpbmRvdzo6Y3JlYXRlKGNv
bnN0X2Nhc3Q8RnJhbWUqPih0aGlzKSk7Ci0KLSAgICByZXR1cm4gbV9kb21XaW5kb3cuZ2V0KCk7
CisgICAgQVNTRVJUKG1fZG9jLT5kZXByZWNpYXRlZERlZmF1bHRWaWV3KCkpOworICAgIHJldHVy
biBtX2RvYy0+ZGVwcmVjaWF0ZWREZWZhdWx0VmlldygpOwogfQogCiB2b2lkIEZyYW1lOjp3aWxs
RGV0YWNoUGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMDBjMDRhMzU4MWY3MmYyZWM2ZDU5MTIx
MmEzNWFhZDJjMDQ3OTBhMi4uNzQzZWFhMzEwZDkyMTQzOTYwMDQ0ODA3Y2U3ZWYxNmZmYWNlMzE1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTI4LDEyICsxMjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KGJvb2wgc2hvd0Rl
YnVnSW5mbyA9IGZhbHNlKSBjb25zdDsKIAotICAgICAgICAvLyBVbmxpa2UgbW9zdCBhY2Nlc3Nv
cnMgaW4gdGhpcyBjbGFzcywgZG9tV2luZG93KCkgYWx3YXlzIGNyZWF0ZXMgYSBuZXcgRE9NV2lu
ZG93IGlmIG1fZG9tV2luZG93IGlzIG51bGwuCi0gICAgICAgIC8vIENhbGxlcnMgdGhhdCBkb24n
dCBuZWVkIGEgbmV3IERPTVdpbmRvdyB0byBiZSBjcmVhdGVkIHNob3VsZCB1c2UgZXhpc3RpbmdE
T01XaW5kb3coKS4KKyAgICAgICAgLy8gRklYTUU6IENhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbiBz
aG91bGQgZ2V0IHRoZSBkZWZhdWx0VmlldyBmcm9tIGRvY3VtZW50KCkgZGlyZWN0bHkuCiAgICAg
ICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3Q7Ci0gICAgICAgIERPTVdpbmRvdyogZXhp
c3RpbmdET01XaW5kb3coKSB7IHJldHVybiBtX2RvbVdpbmRvdy5nZXQoKTsgfQotICAgICAgICB2
b2lkIHNldERPTVdpbmRvdyhET01XaW5kb3cqKTsKLSAgICAgICAgdm9pZCBjbGVhckRPTVdpbmRv
dygpOwogCiAgICAgICAgIHN0YXRpYyBGcmFtZSogZnJhbWVGb3JXaWRnZXQoY29uc3QgV2lkZ2V0
Kik7CiAKQEAgLTIxNCw4ICsyMTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIG11
dGFibGUgRnJhbWVMb2FkZXIgbV9sb2FkZXI7CiAgICAgICAgIG11dGFibGUgTmF2aWdhdGlvblNj
aGVkdWxlciBtX25hdmlnYXRpb25TY2hlZHVsZXI7CiAKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8
RE9NV2luZG93PiBtX2RvbVdpbmRvdzsKLQogICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG1fb3duZXJFbGVtZW50OwogICAgICAgICBSZWZQdHI8RnJhbWVWaWV3PiBtX3ZpZXc7CiAgICAg
ICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cAppbmRleCBiNWZjNzVhMDU2ZjczYmI3ZDdiMTAyZGUzMTg2N2RkMGFhZTFlZDMyLi45YzAwOTZl
ZTY1YWMxMjBmN2JkNzdhNzcxNDdjYTgxYWU3ODMxN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIHNldFByaW9yaXR5Rm9yVGV4dHVy
ZShjb25zdCBDQ1ByaW9yaXR5Q2FsY3VsYXRvciYgcHJpb3JpdHlDYWxjLAogICAgICAgICBwcmlv
cml0eSA9IHByaW9yaXR5Q2FsYy5wcmlvcml0eUZyb21EaXN0YW5jZSh2aXNpYmxlUmVjdCwgdGls
ZVJlY3QsIGRyYXdzVG9Sb290KTsKICAgICBpZiAoaXNTbWFsbEFuaW1hdGVkTGF5ZXIpCiAgICAg
ICAgIHByaW9yaXR5ID0gQ0NQcmlvcml0eUNhbGN1bGF0b3I6Om1heFByaW9yaXR5KHByaW9yaXR5
LCBwcmlvcml0eUNhbGMucHJpb3JpdHlGcm9tRGlzdGFuY2UoNTEyLCBkcmF3c1RvUm9vdCkpOwot
ICAgIGlmIChwcmlvcml0eSAhPSBDQ1ByaW9yaXR5Q2FsY3VsYXRvcjo6bG93ZXN0UHJpb3JpdHko
KSk7CisgICAgaWYgKHByaW9yaXR5ICE9IENDUHJpb3JpdHlDYWxjdWxhdG9yOjpsb3dlc3RQcmlv
cml0eSgpKQogICAgICAgICB0ZXh0dXJlLT5zZXRSZXF1ZXN0UHJpb3JpdHkocHJpb3JpdHkpOwog
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVBvcHVw
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNw
cAppbmRleCAxOGY1ZGUyMGE1ZTBmZmFkMTJhMDcyMTc4NTBiMWZmZDhlODA4MGMxLi40ODFjMGYw
MzQzZDI2ZDQ1MmUzZTQwMDMzNWM5ZWRmODMwMjE3ZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcApAQCAtMTk4LDggKzE5OCw4IEBAIGJv
b2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UoKQogICAgIG1fcG9wdXBDbGllbnQtPndyaXRl
RG9jdW1lbnQoKndyaXRlcik7CiAgICAgd3JpdGVyLT5lbmQoKTsKIAotICAgIEFTU0VSVChmcmFt
ZS0+ZXhpc3RpbmdET01XaW5kb3coKSk7Ci0gICAgRE9NV2luZG93UGFnZVBvcHVwOjppbnN0YWxs
KGZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpLCBtX3BvcHVwQ2xpZW50KTsKKyAgICBBU1NFUlQo
ZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOworICAgIERPTVdpbmRvd1BhZ2VQb3B1
cDo6aW5zdGFsbChmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgbV9wb3B1cENsaWVu
dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157831</attachid>
            <date>2012-08-10 16:23:28 -0700</date>
            <delta_ts>2012-08-10 16:23:28 -0700</delta_ts>
            <desc>maybe, possibly, works</desc>
            <filename>bug-93666-20120810162300.patch</filename>
            <type>text/plain</type>
            <size>22335</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc3MzZjOTFhMzQwNzdm
MzE0ZDRlOTBjMDliOWYwZDgwZDc1OThiYy4uOTRhOGIxOGU5YjE3NzQxNjg5NmVjMjI4NzIwYWVh
OGIwZTBiODdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTEwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRE9NV2luZG93IHNob3VsZCBi
ZSBvd25lZCBieSB0aGUgRG9jdW1lbnQsIG5vdCB0aGUgRnJhbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNjY2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0
aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVu
Y3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmRvbVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpjbGVhckRlZmF1bHRWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXREZWZhdWx0Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5z
dXJlRGVmYXVsdFZpZXcpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9j
dW1lbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWU6OmNsZWFyRE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRET01XaW5k
b3cpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRvbVdpbmRvdyk6CisKIDIwMTItMDgtMTAg
IE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdIEJyb2tlbiBpbXBsZW1lbnRhdGlvbiBvZiBBdGtUZXh0IGFuZCBBdGtFZGl0YWJsZVRleHQg
Zm9yIHBhc3N3b3JkIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiZGNhMTI5MWQ2Yjlh
NjQzMWE1Y2MyNDE5YjgwMjVmMmYzMjg1MjE5Li44ZDQyODhhOGQ4NzQ1NmQ5ZDAzYTQxNWVhYzMx
MjFiMzA3NmY0MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTM0OSw2ICsxMzQ5LDcgQEAg
X19aTks3V2ViQ29yZTdJbnRSZWN0Y3Y2Q0dSZWN0RXYKIF9fWk5LN1dlYkNvcmU3UnVuTG9vcDlU
aW1lckJhc2U4aXNBY3RpdmVFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDEwcmVuZGVyVmlld0V2
CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04zV1RGNlN0cmluZ0UKK19f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQxMWRlZmF1bHRWaWV3RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1l
bnQxM2F4T2JqZWN0Q2FjaGVFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVj
dEVpaWpqampiYgogX19aTks3V2ViQ29yZThEb2N1bWVudDE0Z2V0RWxlbWVudEJ5SWRFUktOM1dU
RjEyQXRvbWljU3RyaW5nRQpAQCAtMTk3MCw3ICsxOTcxLDYgQEAgX19aTks3V2ViQ29yZTZFZGl0
b3IxNmhhc0JpZGlTZWxlY3Rpb25FdgogX19aTks3V2ViQ29yZTZFZGl0b3I2Y2xpZW50RXYKIF9f
Wk5LN1dlYkNvcmU3SW50U2l6ZWN2NkNHU2l6ZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MzFp
c1RlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkRXYKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQ5
ZG9tV2luZG93RXYKIF9fWk5LN1dlYkNvcmU4UG9zaXRpb24yOG9mZnNldEZvclBvc2l0aW9uQWZ0
ZXJBbmNob3JFdgogX19aTks3V2ViQ29yZTlGbG9hdFJlY3RjdjZDR1JlY3RFdgogX19aTks3V2Vi
Q29yZTlGbG9hdFNpemVjdjZDR1NpemVFdgpAQCAtMjE2OCw3ICsyMTY4LDYgQEAgX19aTjdXZWJD
b3JlOERvY3VtZW50MzV3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0Vs
ZW1lbnRFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyNXNldEZ1bGxTY3JlZW5SZW5kZXJlclNpemVF
UktOU183SW50U2l6ZUUKIF9fWk43V2ViQ29yZThEb2N1bWVudDM2c2V0RnVsbFNjcmVlblJlbmRl
cmVyQmFja2dyb3VuZENvbG9yRU5TXzVDb2xvckUKIF9fWk43V2ViQ29yZThEb2N1bWVudDIyc2V0
QW5pbWF0aW5nRnVsbFNjcmVlbkViCi1fX1pOSzdXZWJDb3JlOERvY3VtZW50OWRvbVdpbmRvd0V2
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYTY4NWJhY2E1Y2IxNmQ5MTVh
OWFiNmM5MjNlNjE2ZThmMDI3MDA5NS4uMDIyZjA4NDY0MDU2YmM4ZmE2ZWQ5MjE3YmE5NWQ0NGE4
ZmZiYzI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmdldEFs
bFdvcmxkcyhWZWN0b3I8UmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gPiYgd29ybGRzKQogICAgIHN0
YXRpY19jYXN0PFdlYkNvcmVKU0NsaWVudERhdGEqPihKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9i
YWxEYXRhKCktPmNsaWVudERhdGEpLT5nZXRBbGxXb3JsZHMod29ybGRzKTsKIH0KIAotdm9pZCBT
Y3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKGJvb2wgZ29pbmdJbnRvUGFnZUNhY2hl
KQordm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKERPTVdpbmRvdyogbmV3
RE9NV2luZG93LCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSkKIHsKICAgICBpZiAobV93aW5kb3dT
aGVsbHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xODcsNyArMTg3LDcgQEAgdm9p
ZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsKGJvb2wgZ29pbmdJbnRvUGFnZUNh
Y2hlKQogICAgICAgICBhdHRhY2hEZWJ1Z2dlcih3aW5kb3dTaGVsbCwgMCk7CiAKICAgICAgICAg
d2luZG93U2hlbGwtPndpbmRvdygpLT53aWxsUmVtb3ZlRnJvbVdpbmRvd1NoZWxsKCk7Ci0gICAg
ICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cobV9mcmFtZS0+ZG9tV2luZG93KCkpOworICAgICAg
ICB3aW5kb3dTaGVsbC0+c2V0V2luZG93KG5ld0RPTVdpbmRvdyk7CiAKICAgICAgICAgLy8gQW4g
bV9jYWNoZWFibGVCaW5kaW5nUm9vdE9iamVjdCBwZXJzaXN0cyBiZXR3ZWVuIHBhZ2UgbmF2aWdh
dGlvbnMKICAgICAgICAgLy8gc28gbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgbmV3IEpTRE9NV2lu
ZG93LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmlu
ZGV4IDBlZDk4Njk2OTE0ODczYjFkYTNhODRhZTJhMDgzMWU4ZmQ4MTliYmUuLmY3NmZkZThmYzcy
ZjY4MDVlZjQ4YzAzYWZjMWQwNmEzYTE1NGNhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBTdHJpbmcqIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJM
OyB9IC8vIDAgaWYgd2UgYXJlIG5vdCBldmFsdWF0aW5nIGFueSBzY3JpcHQKIAotICAgIHZvaWQg
Y2xlYXJXaW5kb3dTaGVsbChib29sIGdvaW5nSW50b1BhZ2VDYWNoZSA9IGZhbHNlKTsKKyAgICB2
b2lkIGNsZWFyV2luZG93U2hlbGwoRE9NV2luZG93KiBuZXdET01XaW5kb3csIGJvb2wgZ29pbmdJ
bnRvUGFnZUNhY2hlKTsKICAgICB2b2lkIHVwZGF0ZURvY3VtZW50KCk7CiAKICAgICB2b2lkIG5h
bWVkSXRlbUFkZGVkKEhUTUxEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBh
NzEzODAyMTdlM2YyYjFiNTQ1MDg0YTE5NGEyMDFmY2U3YTkxZjkwLi5jODBjMGQxZDljMjZlZGJk
MDllMjljZGRmMmJmZTQ1MWRlMjg4MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDI2LDcgKzQyNiw3IEBAIE5QT2JqZWN0KiBT
Y3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVtZW50KEhUTUxQ
bHVnSW5FbGVtZW50CiB9CiAKIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1No
ZWxsKGJvb2wpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwoRE9NV2lu
ZG93KiwgYm9vbCkKIHsKICAgICAvLyBWOCBiaW5kaW5nIGV4cGVjdHMgU2NyaXB0Q29udHJvbGxl
cjo6Y2xlYXJXaW5kb3dTaGVsbCBvbmx5IGJlIGNhbGxlZAogICAgIC8vIHdoZW4gYSBmcmFtZSBp
cyBsb2FkaW5nIGEgbmV3IHBhZ2UuIFY4UHJveHk6OmNsZWFyRm9yTmF2aWdhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGIzYzIyYWNh
ODgwYmY4M2I1MTg4NWFkNzlkMzFjNzEzMmU4YzJjNDQuLmY5MDllMzU2MTVlODlkMmJjNzlmMDlk
MmUyMWIzMGY5YjMzMDEyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDb250cm9sbGVyLmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBT
dHJpbmcqIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9IC8vIDAgaWYg
d2UgYXJlIG5vdCBldmFsdWF0aW5nIGFueSBzY3JpcHQuCiAKLSAgICB2b2lkIGNsZWFyV2luZG93
U2hlbGwoYm9vbCA9IGZhbHNlKTsKKyAgICB2b2lkIGNsZWFyV2luZG93U2hlbGwoRE9NV2luZG93
KiwgYm9vbCk7CiAgICAgdm9pZCB1cGRhdGVEb2N1bWVudCgpOwogCiAgICAgdm9pZCBuYW1lZEl0
ZW1BZGRlZChIVE1MRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDZiMTNkOGYxMzFhMDQ2ZTc1NjFhNzY1YmRjMjIyZmViZTQyMzgyNzcu
LmIxMWQwNTFlYjg4MDliYTlkODQzZWMyODg2ODhhYmJhZWRjOGZjNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNjEyLDYgKzYxMiwxMCBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAg
ICBBU1NFUlQoIW1fcGFyZW50VHJlZVNjb3BlKTsKICAgICBBU1NFUlQoIW1fZ3VhcmRSZWZDb3Vu
dCk7CiAKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNsZWFyIHRoZSBkZWZhdWx0IHZpZXcgd2hl
biB3ZSBkZXRhY2ggZnJvbSB0aGUgRnJhbWU/CisgICAgaWYgKG1fZGVmYXVsdFZpZXcpCisgICAg
ICAgIG1fZGVmYXVsdFZpZXctPmNsZWFyKCk7CisKICAgICBtX3NjcmlwdFJ1bm5lci5jbGVhcigp
OwogCiAgICAgaGlzdG9ncmFtTXV0YXRpb25FdmVudFVzYWdlKG1fbGlzdGVuZXJUeXBlcyk7CkBA
IC00MDM2LDE4ICs0MDQwLDI3IEBAIHZvaWQgRG9jdW1lbnQ6OnRleHROb2RlU3BsaXQoVGV4dCog
b2xkTm9kZSkKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXBkYXRlIG1hcmtlcnMgZm9yIHNw
ZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNraW5nLgogfQogCi0vLyBGSVhNRTogZXZlbnR1YWxseSwg
dGhpcyBzaG91bGQgcmV0dXJuIGEgRE9NV2luZG93IHN0b3JlZCBpbiB0aGUgZG9jdW1lbnQuCi1E
T01XaW5kb3cqIERvY3VtZW50Ojpkb21XaW5kb3coKSBjb25zdAorRE9NV2luZG93KiBEb2N1bWVu
dDo6ZGVmYXVsdFZpZXcoKSBjb25zdAogewogICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICAvLyBUaGUgbV9mcmFtZSBwb2ludGVyIGlzIG5vdCAobm90IGFsd2F5cz8p
IHplcm9lZCBvdXQgd2hlbiB0aGUgZG9jdW1lbnQgaXMgcHV0IGludG8gYi9mIGNhY2hlLCBzbyB0
aGUgZnJhbWUgY2FuIGhvbGQgYW4gdW5yZWxhdGVkIGRvY3VtZW50L3dpbmRvdyBwYWlyLgotICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgYWx3YXlzIHplcm8gb3V0IHRoZSBmcmFtZSBwb2ludGVyIG9u
IG5hdmlnYXRpb24gdG8gYXZvaWQgYWNjaWRlbnRhbGx5IGFjY2Vzc2luZyB0aGUgbmV3IGZyYW1l
IGNvbnRlbnQuCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkgIT0gdGhpcykKICAgICAgICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG1fZGVmYXVsdFZpZXcuZ2V0KCk7Cit9CisKK3ZvaWQgRG9j
dW1lbnQ6OnNldERlZmF1bHRWaWV3KERPTVdpbmRvdyogZGVmYXVsdFZpZXcpCit7CisgICAgaWYg
KG1fZGVmYXVsdFZpZXcpCisgICAgICAgIG1fZGVmYXVsdFZpZXctPmNsZWFyKCk7CisgICAgbV9k
ZWZhdWx0VmlldyA9IGRlZmF1bHRWaWV3OworfQogCi0gICAgcmV0dXJuIGZyYW1lKCktPmRvbVdp
bmRvdygpOwordm9pZCBEb2N1bWVudDo6Y3JlYXRlRGVmYXVsdFZpZXcoKQoreworICAgIEFTU0VS
VChtX2ZyYW1lKTsKKyAgICBBU1NFUlQoIW1fZGVmYXVsdFZpZXcpOworICAgIG1fZGVmYXVsdFZp
ZXcgPSBET01XaW5kb3c6OmNyZWF0ZShtX2ZyYW1lKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0
V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggYzY3NjdmODY0M2JlN2RkODUxM2M3NjFlNzhjZjllNzE2ODcwNDMzMy4uOTM3NzBiNTYw
MTI0ZGEyYjlkNGJlOTUwODQwOGFlMmFlZTUwYjc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTc2Niw4ICs3NjYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgdGV4dE5vZGVzTWVyZ2VkKFRleHQq
IG9sZE5vZGUsIHVuc2lnbmVkIG9mZnNldCk7CiAgICAgdm9pZCB0ZXh0Tm9kZVNwbGl0KFRleHQq
IG9sZE5vZGUpOwogCi0gICAgRE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJu
IGRvbVdpbmRvdygpOyB9IAotICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3Q7CisgICAg
RE9NV2luZG93KiBkZWZhdWx0VmlldygpIGNvbnN0OworICAgIERPTVdpbmRvdyogZGVwcmVjaWF0
ZWREZWZhdWx0VmlldygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFZpZXcuZ2V0KCk7IH0KKyAg
ICBET01XaW5kb3cqIGRvbVdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIGRlZmF1bHRWaWV3KCk7IH0K
KworICAgIHZvaWQgY3JlYXRlRGVmYXVsdFZpZXcoKTsKKyAgICB2b2lkIHNldERlZmF1bHRWaWV3
KERPTVdpbmRvdyopOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgZm9yd2FyZGluZyBE
T01XaW5kb3cgZXZlbnQgcmVsYXRlZCB0YXNrcyB0byB0aGUgRE9NV2luZG93IGlmIGl0IGV4aXN0
cy4KICAgICB2b2lkIHNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwpAQCAtMTI2NSw2
ICsxMjY5LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8T3duUHRyPEZvbnREYXRhPiA+IG1fY3Vz
dG9tRm9udHM7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBSZWZQdHI8RE9NV2luZG93PiBt
X2RlZmF1bHRWaWV3OworCiAgICAgT3duUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyOwogICAgIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4gbV9wYXJzZXI7CiAg
ICAgUmVmUHRyPENvbnRleHRGZWF0dXJlcz4gbV9jb250ZXh0RmVhdHVyZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAzMmZmMjhjMzIyNTMwNGViYjYxMDRj
YjczMDBhNDJmNDdiZGM0MjU1Li42OTAyNGNhY2IyMjBkZDFiZTRiZDcxODYwZmM3ZGFmMzM3NTZl
NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTQyMiw3
ICs0MjIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZSgpCiAgICAg
ICAgIHJldHVybjsKICAgICBBU1NFUlQodGhpcyA9PSBmcmFtZUxvYWRlcigpLT5hY3RpdmVEb2N1
bWVudExvYWRlcigpKTsKIAotICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmV4
aXN0aW5nRE9NV2luZG93KCkpCisgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+
ZG9tV2luZG93KCkpCiAgICAgICAgIHdpbmRvdy0+ZmluaXNoZWRMb2FkaW5nKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IDMxNzRhZmM0MDQ1MmM1
OThlYTkwZDlhOTRmMDc0YjRlN2RjNDFhOTkuLjI2N2U3NjJiZTE4ZTJkMWIxNGVlMzQ2NDc3NDky
MjVkYmI0OGZhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcApA
QCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwm
IHVybFJlZmVyZW5jZSwgYm9vbCBkaXNwYXRjaCwgRG9jdW1lbnQqIG93CiAgICAgLy8gQ3JlYXRl
IGEgbmV3IGRvY3VtZW50IGJlZm9yZSBjbGVhcmluZyB0aGUgZnJhbWUsIGJlY2F1c2UgaXQgbWF5
IG5lZWQgdG8KICAgICAvLyBpbmhlcml0IGFuIGFsaWFzZWQgc2VjdXJpdHkgY29udGV4dC4KICAg
ICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY3JlYXRlRG9jdW1lbnQodXJsKTsKLSAgICAK
KwogICAgIC8vIElmIHRoZSBuZXcgZG9jdW1lbnQgaXMgZm9yIGEgUGx1Z2luIGJ1dCB3ZSdyZSBz
dXBwb3NlZCB0byBiZSBzYW5kYm94ZWQgZnJvbSBQbHVnaW5zLAogICAgIC8vIHRoZW4gcmVwbGFj
ZSB0aGUgZG9jdW1lbnQgd2l0aCBvbmUgd2hvc2UgcGFyc2VyIHdpbGwgaWdub3JlIHRoZSBpbmNv
bWluZyBkYXRhIChidWcgMzkzMjMpCiAgICAgaWYgKGRvY3VtZW50LT5pc1BsdWdpbkRvY3VtZW50
KCkgJiYgZG9jdW1lbnQtPmlzU2FuZGJveGVkKFNhbmRib3hQbHVnaW5zKSkKQEAgLTEyNSwxMCAr
MTI1LDE4IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybFJlZmVy
ZW5jZSwgYm9vbCBkaXNwYXRjaCwgRG9jdW1lbnQqIG93CiAKICAgICAvLyBGSVhNRTogRG8gd2Ug
bmVlZCB0byBjb25zdWx0IHRoZSBjb250ZW50IHNlY3VyaXR5IHBvbGljeSBoZXJlIGFib3V0IGJs
b2NrZWQgcGx1Zy1pbnM/CiAKLSAgICBib29sIHJlc2V0U2NyaXB0aW5nID0gIShtX2ZyYW1lLT5s
b2FkZXIoKS0+c3RhdGVNYWNoaW5lKCktPmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50
KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNTZWN1cmVUcmFuc2l0aW9uVG8odXJsKSk7Ci0g
ICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsZWFyKHJlc2V0U2NyaXB0aW5nLCByZXNldFNjcmlwdGlu
Zyk7CisgICAgYm9vbCBzaG91bGRSZXVzZURlZmF1bHRWaWV3ID0gbV9mcmFtZS0+bG9hZGVyKCkt
PnN0YXRlTWFjaGluZSgpLT5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmIG1f
ZnJhbWUtPmRvY3VtZW50KCktPmlzU2VjdXJlVHJhbnNpdGlvblRvKHVybCk7CisKKyAgICBpZiAo
c2hvdWxkUmV1c2VEZWZhdWx0VmlldyAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0Vmll
dygpKSB7CisgICAgICAgIC8vIEZJWE1FOiBEb2N1bWVudCB0aGlzIGluc2FuaXR5LgorICAgICAg
ICBkb2N1bWVudC0+c2V0RGVmYXVsdFZpZXcobV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZp
ZXcoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50LT5jcmVhdGVEZWZhdWx0Vmlldygp
OworCisgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsZWFyKGRvY3VtZW50LmdldCgpLCAhc2hvdWxk
UmV1c2VEZWZhdWx0VmlldywgIXNob3VsZFJldXNlRGVmYXVsdFZpZXcpOwogICAgIGNsZWFyKCk7
Ci0gICAgaWYgKHJlc2V0U2NyaXB0aW5nKQorCisgICAgaWYgKCFzaG91bGRSZXVzZURlZmF1bHRW
aWV3KQogICAgICAgICBtX2ZyYW1lLT5zY3JpcHQoKS0+dXBkYXRlUGxhdGZvcm1TY3JpcHRPYmpl
Y3RzKCk7CiAKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+c2V0T3V0Z29pbmdSZWZlcnJlcih1cmwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMGRjYjNiMjRmOWJlYjhi
YmJjZDJmMTkwOTY2YTZhYzNlYWU5NWQ0YS4uZmRiZTdiNzRmOWZiOTAyYTg3OTE3MmM5NWEzNjk3
MDdiOWNmZmNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC00NjQs
NyArNDY0LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6ZGlkT3BlblVSTCgpCiAgICAgLy8gaXRzIGZy
YW1lIGlzIG5vdCBpbiBhIGNvbnNpc3RlbnQgc3RhdGUgZm9yIHJlbmRlcmluZywgc28gYXZvaWQg
c2V0SlNTdGF0dXNCYXJUZXh0CiAgICAgLy8gc2luY2UgaXQgbWF5IGNhdXNlIGNsaWVudHMgdG8g
YXR0ZW1wdCB0byByZW5kZXIgdGhlIGZyYW1lLgogICAgIGlmICghbV9zdGF0ZU1hY2hpbmUuY3Jl
YXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKSB7Ci0gICAgICAgIGlmIChET01XaW5kb3cqIHdp
bmRvdyA9IG1fZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCkpIHsKKyAgICAgICAgaWYgKERPTVdp
bmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9tV2luZG93KCkpIHsKICAgICAgICAgICAgIHdpbmRv
dy0+c2V0U3RhdHVzKFN0cmluZygpKTsKICAgICAgICAgICAgIHdpbmRvdy0+c2V0RGVmYXVsdFN0
YXR1cyhTdHJpbmcoKSk7CiAgICAgICAgIH0KQEAgLTQ5OSwxMSArNDk5LDExIEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNhbmNlbEFuZENsZWFyKCkKICAgICBpZiAoIW1faXNDb21wbGV0ZSkKICAgICAg
ICAgY2xvc2VVUkwoKTsKIAotICAgIGNsZWFyKGZhbHNlKTsKKyAgICBjbGVhcihtX2ZyYW1lLT5k
b2N1bWVudCgpLCBmYWxzZSk7CiAgICAgbV9mcmFtZS0+c2NyaXB0KCktPnVwZGF0ZVBsYXRmb3Jt
U2NyaXB0T2JqZWN0cygpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihib29sIGNsZWFy
V2luZG93UHJvcGVydGllcywgYm9vbCBjbGVhclNjcmlwdE9iamVjdHMsIGJvb2wgY2xlYXJGcmFt
ZVZpZXcpCit2b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihEb2N1bWVudCogbmV3RG9jdW1lbnQsIGJv
b2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cywgYm9vbCBj
bGVhckZyYW1lVmlldykKIHsKICAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+Y2xlYXIoKTsKIApAQCAt
NTIyLDggKzUyMiw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyKGJvb2wgY2xlYXJXaW5kb3dQ
cm9wZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cywgYm9vCiAKICAgICAvLyBEbyB0aGlz
IGFmdGVyIGRldGFjaGluZyB0aGUgZG9jdW1lbnQgc28gdGhhdCB0aGUgdW5sb2FkIGV2ZW50IHdv
cmtzLgogICAgIGlmIChjbGVhcldpbmRvd1Byb3BlcnRpZXMpIHsKLSAgICAgICAgbV9mcmFtZS0+
Y2xlYXJET01XaW5kb3coKTsKLSAgICAgICAgbV9mcmFtZS0+c2NyaXB0KCktPmNsZWFyV2luZG93
U2hlbGwobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSk7CisgICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPnNldERlZmF1bHRWaWV3KDApOworICAgICAgICBtX2ZyYW1lLT5zY3Jp
cHQoKS0+Y2xlYXJXaW5kb3dTaGVsbChuZXdEb2N1bWVudC0+ZGVwcmVjaWF0ZWREZWZhdWx0Vmll
dygpLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKTsKICAgICB9CiAKICAgICBt
X2ZyYW1lLT5zZWxlY3Rpb24oKS0+Y2xlYXIoKTsKQEAgLTE5MDMsNyArMTkwMyw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnByZXBhcmVGb3JDYWNoZWRQYWdlUmVzdG9yZSgpCiAgICAgCiAgICAgLy8g
RGVsZXRlIG9sZCBzdGF0dXMgYmFyIG1lc3NhZ2VzIChpZiBpdCBfd2FzXyBhY3RpdmF0ZWQgb24g
bGFzdCBVUkwpLgogICAgIGlmIChtX2ZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMo
Tm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7Ci0gICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRv
dyA9IG1fZnJhbWUtPmV4aXN0aW5nRE9NV2luZG93KCkpIHsKKyAgICAgICAgaWYgKERPTVdpbmRv
dyogd2luZG93ID0gbV9mcmFtZS0+ZG9tV2luZG93KCkpIHsKICAgICAgICAgICAgIHdpbmRvdy0+
c2V0U3RhdHVzKFN0cmluZygpKTsKICAgICAgICAgICAgIHdpbmRvdy0+c2V0RGVmYXVsdFN0YXR1
cyhTdHJpbmcoKSk7CiAgICAgICAgIH0KQEAgLTE5MjQsMTAgKzE5MjQsMTMgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6b3BlbihDYWNoZWRGcmFtZUJhc2UmIGNhY2hlZEZyYW1lKQogICAgICAgICB1cmwu
c2V0UGF0aCgiLyIpOwogCiAgICAgc3RhcnRlZCgpOwotICAgIGNsZWFyKHRydWUsIHRydWUsIGNh
Y2hlZEZyYW1lLmlzTWFpbkZyYW1lKCkpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY2Fj
aGVkRnJhbWUuZG9jdW1lbnQoKTsKICAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgIGRvY3VtZW50
LT5zZXREZWZhdWx0VmlldyhjYWNoZWRGcmFtZS5kb21XaW5kb3coKSk7CisKKyAgICBjbGVhcihk
b2N1bWVudCwgdHJ1ZSwgdHJ1ZSwgY2FjaGVkRnJhbWUuaXNNYWluRnJhbWUoKSk7CisKICAgICBk
b2N1bWVudC0+c2V0SW5QYWdlQ2FjaGUoZmFsc2UpOwogCiAgICAgbV9uZWVkc0NsZWFyID0gdHJ1
ZTsKQEAgLTE5NDcsNyArMTk1MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJh
bWVCYXNlJiBjYWNoZWRGcmFtZSkKICAgICBtX2ZyYW1lLT5zZXRWaWV3KHZpZXcpOwogICAgIAog
ICAgIG1fZnJhbWUtPnNldERvY3VtZW50KGRvY3VtZW50KTsKLSAgICBtX2ZyYW1lLT5zZXRET01X
aW5kb3coY2FjaGVkRnJhbWUuZG9tV2luZG93KCkpOworCiAgICAgbV9mcmFtZS0+ZG9tV2luZG93
KCktPnJlc3VtZUZyb21QYWdlQ2FjaGUoKTsKICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2V0
VVJMKGRvY3VtZW50LT51cmwoKSk7CiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnNldFNlY3Vy
aXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKTsKQEAgLTI2OTQsNyArMjY5Nyw3
IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZENsb3NlKCkKIAogYm9vbCBGcmFtZUxvYWRlcjo6
ZmlyZUJlZm9yZVVubG9hZEV2ZW50KENocm9tZSogY2hyb21lKQogewotICAgIERPTVdpbmRvdyog
ZG9tV2luZG93ID0gbV9mcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKTsKKyAgICBET01XaW5kb3cq
IGRvbVdpbmRvdyA9IG1fZnJhbWUtPmRvbVdpbmRvdygpOwogICAgIGlmICghZG9tV2luZG93KQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRl
eCBlMTJjZjMwMTdkYTJhZjI4ZTAzN2VjM2RmODMyMjU1YzQ4ZDViZDNiLi5mYjBhNTQwNmMzYzFh
MmMzZTk4MDRjMjliOTRlZDEzZWY1OTJiYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BMb2FkaW5nKFVu
bG9hZEV2ZW50UG9saWN5KTsKICAgICBib29sIGNsb3NlVVJMKCk7CiAgICAgdm9pZCBjYW5jZWxB
bmRDbGVhcigpOwotICAgIHZvaWQgY2xlYXIoYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRpZXMgPSB0
cnVlLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cyA9IHRydWUsIGJvb2wgY2xlYXJGcmFtZVZpZXcg
PSB0cnVlKTsKKyAgICB2b2lkIGNsZWFyKERvY3VtZW50KiBuZXdEb2N1bWVudCwgYm9vbCBjbGVh
cldpbmRvd1Byb3BlcnRpZXMgPSB0cnVlLCBib29sIGNsZWFyU2NyaXB0T2JqZWN0cyA9IHRydWUs
IGJvb2wgY2xlYXJGcmFtZVZpZXcgPSB0cnVlKTsKIAogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29u
c3Q7CiAgICAgYm9vbCBmcmFtZUhhc0xvYWRlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApp
bmRleCAwOTg4MTBkY2Q4MmM0ZmY4ZWY2MjU3NmM1YzA4MTY2YWY4YWRmNDkxLi5iMzJjMWNiMTY2
MGM5NzkwMDA1MzYwNTMwYmI2OGMxMmQzNGQ5OGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAt
Mjg5LDEyICsyODksMTYgQEAgdm9pZCBGcmFtZTo6c2V0VmlldyhQYXNzUmVmUHRyPEZyYW1lVmll
dz4gdmlldykKIHZvaWQgRnJhbWU6OnNldERvY3VtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnQ+IG5l
d0RvYykKIHsKICAgICBBU1NFUlQoIW5ld0RvYyB8fCBuZXdEb2MtPmZyYW1lKCkpOworICAgIEFT
U0VSVCghbmV3RG9jIHx8IG5ld0RvYy0+ZnJhbWUoKSA9PSB0aGlzKTsKICAgICBpZiAobV9kb2Mg
JiYgbV9kb2MtPmF0dGFjaGVkKCkgJiYgIW1fZG9jLT5pblBhZ2VDYWNoZSgpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBXZSBkb24ndCBjYWxsIHdpbGxSZW1vdmUgaGVyZS4gV2h5IGlzIHRoYXQgT0s/
CiAgICAgICAgIG1fZG9jLT5kZXRhY2goKTsKICAgICB9CiAKICAgICBtX2RvYyA9IG5ld0RvYzsK
KyAgICBBU1NFUlQoIW1fZG9jIHx8IG1fZG9jLT5kZWZhdWx0VmlldygpKTsKKyAgICBBU1NFUlQo
IW1fZG9jIHx8IG1fZG9jLT5kZWZhdWx0VmlldygpLT5mcmFtZSgpID09IHRoaXMpOworCiAgICAg
c2VsZWN0aW9uKCktPnVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwogCiAgICAg
aWYgKG1fZG9jICYmICFtX2RvYy0+YXR0YWNoZWQoKSkKQEAgLTYwMSwxNSArNjA1LDYgQEAgdm9p
ZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHNGb3JXb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxk
LCBjb25zdCBVc2VyU2NyaXB0VmUKICAgICB9CiB9CiAKLXZvaWQgRnJhbWU6OmNsZWFyRE9NV2lu
ZG93KCkKLXsKLSAgICBpZiAobV9kb21XaW5kb3cpIHsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZCh0aGlzLCBtX2RvbVdpbmRvdy5nZXQoKSk7
Ci0gICAgICAgIG1fZG9tV2luZG93LT5jbGVhcigpOwotICAgIH0KLSAgICBtX2RvbVdpbmRvdyA9
IDA7Ci19Ci0KIFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBjb25zdAogewog
ICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOwpAQCAtNjY5LDE1ICs2NjQsNiBAQCB2b2lk
IEZyYW1lOjpjbGVhclRpbWVycygpCiAgICAgY2xlYXJUaW1lcnMobV92aWV3LmdldCgpLCBkb2N1
bWVudCgpKTsKIH0KIAotdm9pZCBGcmFtZTo6c2V0RE9NV2luZG93KERPTVdpbmRvdyogZG9tV2lu
ZG93KQotewotICAgIGlmIChtX2RvbVdpbmRvdykgewotICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkKHRoaXMsIG1fZG9tV2luZG93LmdldCgpKTsK
LSAgICAgICAgbV9kb21XaW5kb3ctPmNsZWFyKCk7Ci0gICAgfQotICAgIG1fZG9tV2luZG93ID0g
ZG9tV2luZG93OwotfQotCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiB2b2lkIEZy
YW1lOjpkaXNwYXRjaFZpc2liaWxpdHlTdGF0ZUNoYW5nZUV2ZW50KCkKIHsKQEAgLTY5NywxMCAr
NjgzLDggQEAgdm9pZCBGcmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIAogRE9NV2luZG93KiBGcmFtZTo6ZG9tV2luZG93KCkg
Y29uc3QKIHsKLSAgICBpZiAoIW1fZG9tV2luZG93KQotICAgICAgICBtX2RvbVdpbmRvdyA9IERP
TVdpbmRvdzo6Y3JlYXRlKGNvbnN0X2Nhc3Q8RnJhbWUqPih0aGlzKSk7Ci0KLSAgICByZXR1cm4g
bV9kb21XaW5kb3cuZ2V0KCk7CisgICAgQVNTRVJUKG1fZG9jLT5kZXByZWNpYXRlZERlZmF1bHRW
aWV3KCkpOworICAgIHJldHVybiBtX2RvYy0+ZGVwcmVjaWF0ZWREZWZhdWx0VmlldygpOwogfQog
CiB2b2lkIEZyYW1lOjp3aWxsRGV0YWNoUGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMDBjMDRh
MzU4MWY3MmYyZWM2ZDU5MTIxMmEzNWFhZDJjMDQ3OTBhMi4uNzQzZWFhMzEwZDkyMTQzOTYwMDQ0
ODA3Y2U3ZWYxNmZmYWNlMzE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTI4LDEyICsxMjgsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgbGF5ZXJUcmVl
QXNUZXh0KGJvb2wgc2hvd0RlYnVnSW5mbyA9IGZhbHNlKSBjb25zdDsKIAotICAgICAgICAvLyBV
bmxpa2UgbW9zdCBhY2Nlc3NvcnMgaW4gdGhpcyBjbGFzcywgZG9tV2luZG93KCkgYWx3YXlzIGNy
ZWF0ZXMgYSBuZXcgRE9NV2luZG93IGlmIG1fZG9tV2luZG93IGlzIG51bGwuCi0gICAgICAgIC8v
IENhbGxlcnMgdGhhdCBkb24ndCBuZWVkIGEgbmV3IERPTVdpbmRvdyB0byBiZSBjcmVhdGVkIHNo
b3VsZCB1c2UgZXhpc3RpbmdET01XaW5kb3coKS4KKyAgICAgICAgLy8gRklYTUU6IENhbGxlcnMg
b2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgZ2V0IHRoZSBkZWZhdWx0VmlldyBmcm9tIGRvY3VtZW50
KCkgZGlyZWN0bHkuCiAgICAgICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3Q7Ci0gICAg
ICAgIERPTVdpbmRvdyogZXhpc3RpbmdET01XaW5kb3coKSB7IHJldHVybiBtX2RvbVdpbmRvdy5n
ZXQoKTsgfQotICAgICAgICB2b2lkIHNldERPTVdpbmRvdyhET01XaW5kb3cqKTsKLSAgICAgICAg
dm9pZCBjbGVhckRPTVdpbmRvdygpOwogCiAgICAgICAgIHN0YXRpYyBGcmFtZSogZnJhbWVGb3JX
aWRnZXQoY29uc3QgV2lkZ2V0Kik7CiAKQEAgLTIxNCw4ICsyMTAsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIG11dGFibGUgRnJhbWVMb2FkZXIgbV9sb2FkZXI7CiAgICAgICAgIG11
dGFibGUgTmF2aWdhdGlvblNjaGVkdWxlciBtX25hdmlnYXRpb25TY2hlZHVsZXI7CiAKLSAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8RE9NV2luZG93PiBtX2RvbVdpbmRvdzsKLQogICAgICAgICBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG1fb3duZXJFbGVtZW50OwogICAgICAgICBSZWZQdHI8RnJhbWVW
aWV3PiBtX3ZpZXc7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggMTM4YjQy
OWYwZDU3ZTRmYTA2NjRlZjllYmQ3YTU5Yjg5YmZkNmQ4MC4uYTRiMDczMDU0Y2E4ZjI4YmYxYTFj
MDkwMTAxMmFmNzRkNDFjOWU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9q
cy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMv
V2ViQ29yZVRlc3RTdXBwb3J0LmNwcApAQCAtNDUsNiArNDUsOCBAQCB2b2lkIGluamVjdEludGVy
bmFsc09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCkKICAgICBKU0xvY2tIb2xkZXIgbG9jayhl
eGVjKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1cm47
CiAgICAgaWYgKHNjcmlwdENvbnRleHQtPmlzRG9jdW1lbnQoKSkKICAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsIEludGVy
bmFsczo6aW50ZXJuYWxzSWQpLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgSW50ZXJuYWxzOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRDb250ZXh0KSkpKTsKIH0KQEAgLTU1
LDYgKzU3LDggQEAgdm9pZCByZXNldEludGVybmFsc09iamVjdChKU0NvbnRleHRSZWYgY29udGV4
dCkKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0
ID0gZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3Jp
cHRDb250ZXh0KQorICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKHNjcmlwdENvbnRleHQtPmlz
RG9jdW1lbnQoKSk7CiAgICAgSW50ZXJuYWxTZXR0aW5nczo6ZnJvbShzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KHNjcmlwdENvbnRleHQpLT5mcmFtZSgpLT5wYWdlKCkpLT5yZXNldCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCmluZGV4
IDQxNzYyZmZlODZkOTUzMWRiNDI4MTYwMjM1NmY0YThmYzI0ODQ1MTkuLjkwM2FiOTI3MTMxNGI2
YzZiNDViZTU2NmZlZWFmN2U3YWQxOWUwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL3Y4L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKQEAgLTQ2LDYgKzQ2LDggQEAgdm9pZCBpbmpl
Y3RJbnRlcm5hbHNPYmplY3Qodjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0KQogICAgIHY4
OjpIYW5kbGVTY29wZSBzY29wZTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRD
b250ZXh0KQorICAgICAgICByZXR1cm47CiAgICAgaWYgKHNjcmlwdENvbnRleHQtPmlzRG9jdW1l
bnQoKSkKICAgICAgICAgY29udGV4dC0+R2xvYmFsKCktPlNldCh2ODo6U3RyaW5nOjpOZXcoSW50
ZXJuYWxzOjppbnRlcm5hbHNJZCksIHRvVjgoSW50ZXJuYWxzOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihzY3JpcHRDb250ZXh0KSkpKTsKIH0KQEAgLTYwLDYgKzYyLDggQEAgdm9pZCBy
ZXNldEludGVybmFsc09iamVjdCh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQpCiAgICAg
djg6OkhhbmRsZVNjb3BlIHNjb3BlOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlw
dENvbnRleHQpCisgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoc2NyaXB0Q29udGV4dC0+aXNE
b2N1bWVudCgpKTsKICAgICBJbnRlcm5hbFNldHRpbmdzOjpmcm9tKHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4oc2NyaXB0Q29udGV4dCktPmZyYW1lKCktPnBhZ2UoKSktPnJlc2V0KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5kZXggYzVjODRlN2Y2MDNkYTMyMDBkYTU0N2Ix
MWRiZTBhNDhmYmE5YWIyYi4uNTk0NWI1NzhkZmU2NjhkNjNkZjhjMzdkNDRkMWVhZGFlMmJiNmZm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtODksNiArODksNyBAQCBQ
YXNzUmVmUHRyPERvY3VtZW50PiBYU0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3Vy
Y2UoY29uc3QgU3RyaW5nJiBzb3VyYwogCiAgICAgICAgIGlmIChEb2N1bWVudCogb2xkRG9jdW1l
bnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkgewogICAgICAgICAgICAgcmVzdWx0LT5zZXRUcmFuc2Zv
cm1Tb3VyY2VEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAgICAgICAgICByZXN1bHQtPnNldERl
ZmF1bHRWaWV3KG9sZERvY3VtZW50LT5kZWZhdWx0VmlldygpKTsKICAgICAgICAgICAgIHJlc3Vs
dC0+c2V0U2VjdXJpdHlPcmlnaW4ob2xkRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAg
ICAgICAgICAgcmVzdWx0LT5zZXRDb29raWVVUkwob2xkRG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
ICAgICAgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMob2xkRG9jdW1lbnQt
PmZpcnN0UGFydHlGb3JDb29raWVzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGFnZVBvcHVwSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQYWdlUG9wdXBJbXBsLmNwcAppbmRleCAxOGY1ZGUyMGE1ZTBmZmFkMTJhMDcyMTc4NTBi
MWZmZDhlODA4MGMxLi40ODFjMGYwMzQzZDI2ZDQ1MmUzZTQwMDMzNWM5ZWRmODMwMjE3ZWI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlUG9wdXBJbXBsLmNwcApA
QCAtMTk4LDggKzE5OCw4IEBAIGJvb2wgV2ViUGFnZVBvcHVwSW1wbDo6aW5pdFBhZ2UoKQogICAg
IG1fcG9wdXBDbGllbnQtPndyaXRlRG9jdW1lbnQoKndyaXRlcik7CiAgICAgd3JpdGVyLT5lbmQo
KTsKIAotICAgIEFTU0VSVChmcmFtZS0+ZXhpc3RpbmdET01XaW5kb3coKSk7Ci0gICAgRE9NV2lu
ZG93UGFnZVBvcHVwOjppbnN0YWxsKGZyYW1lLT5leGlzdGluZ0RPTVdpbmRvdygpLCBtX3BvcHVw
Q2xpZW50KTsKKyAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpOwor
ICAgIERPTVdpbmRvd1BhZ2VQb3B1cDo6aW5zdGFsbChmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVs
dFZpZXcoKSwgbV9wb3B1cENsaWVudCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158142</attachid>
            <date>2012-08-13 16:30:08 -0700</date>
            <delta_ts>2012-08-13 16:30:08 -0700</delta_ts>
            <desc>another approach</desc>
            <filename>bug-93666-20120813162936.patch</filename>
            <type>text/plain</type>
            <size>28235</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGJkY2Ex
MjkxZDZiOWE2NDMxYTVjYzI0MTliODAyNWYyZjMyODUyMTkuLjA2OTY1ZmVjODE5ZTRiMDk3NDkw
YjRlYWEwMDNlZDUyOWM3NThhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xOTcwLDcgKzE5
NzAsNiBAQCBfX1pOSzdXZWJDb3JlNkVkaXRvcjE2aGFzQmlkaVNlbGVjdGlvbkV2CiBfX1pOSzdX
ZWJDb3JlNkVkaXRvcjZjbGllbnRFdgogX19aTks3V2ViQ29yZTdJbnRTaXplY3Y2Q0dTaXplRXYK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQzMWlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWRF
dgotX19aTks3V2ViQ29yZThEb2N1bWVudDlkb21XaW5kb3dFdgogX19aTks3V2ViQ29yZThQb3Np
dGlvbjI4b2Zmc2V0Rm9yUG9zaXRpb25BZnRlckFuY2hvckV2CiBfX1pOSzdXZWJDb3JlOUZsb2F0
UmVjdGN2NkNHUmVjdEV2CiBfX1pOSzdXZWJDb3JlOUZsb2F0U2l6ZWN2NkNHU2l6ZUV2CkBAIC0y
MTY4LDcgKzIxNjcsNiBAQCBfX1pON1dlYkNvcmU4RG9jdW1lbnQzNXdlYmtpdFdpbGxFbnRlckZ1
bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKIF9fWk43V2ViQ29yZThEb2N1bWVudDI1
c2V0RnVsbFNjcmVlblJlbmRlcmVyU2l6ZUVSS05TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlOERv
Y3VtZW50MzZzZXRGdWxsU2NyZWVuUmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3JFTlNfNUNvbG9yRQog
X19aTjdXZWJDb3JlOERvY3VtZW50MjJzZXRBbmltYXRpbmdGdWxsU2NyZWVuRWIKLV9fWk5LN1dl
YkNvcmU4RG9jdW1lbnQ5ZG9tV2luZG93RXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdFT0xPQ0FU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cAppbmRleCA3YjA3ODcyMDFjZTBkYmZhZTdhYjUxNzlkMTk5YmI3NGY4MGZlMTU2Li4zOTc5Mzkw
YjhkMWI3MDEwZmRjYzJlN2Y0OGJiZGI1YjQzMWI0ZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZv
aWQgU2NyaXB0Q29udHJvbGxlcjo6Z2V0QWxsV29ybGRzKFZlY3RvcjxSZWZQdHI8RE9NV3JhcHBl
cldvcmxkPiA+JiB3b3JsZHMpCiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+
KEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+Y2xpZW50RGF0YSktPmdldEFsbFdv
cmxkcyh3b3JsZHMpOwogfQogCi12b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hl
bGwoYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFy
V2luZG93U2hlbGwoRE9NV2luZG93KiBuZXdET01XaW5kb3csIGJvb2wgZ29pbmdJbnRvUGFnZUNh
Y2hlKQogewogICAgIGlmIChtX3dpbmRvd1NoZWxscy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93
U2hlbGwoYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUpCiAgICAgICAgIGF0dGFjaERlYnVnZ2VyKHdp
bmRvd1NoZWxsLCAwKTsKIAogICAgICAgICB3aW5kb3dTaGVsbC0+d2luZG93KCktPndpbGxSZW1v
dmVGcm9tV2luZG93U2hlbGwoKTsKLSAgICAgICAgd2luZG93U2hlbGwtPnNldFdpbmRvdyhtX2Zy
YW1lLT5kb21XaW5kb3coKSk7CisgICAgICAgIHdpbmRvd1NoZWxsLT5zZXRXaW5kb3cobmV3RE9N
V2luZG93KTsKIAogICAgICAgICAvLyBBbiBtX2NhY2hlYWJsZUJpbmRpbmdSb290T2JqZWN0IHBl
cnNpc3RzIGJldHdlZW4gcGFnZSBuYXZpZ2F0aW9ucwogICAgICAgICAvLyBzbyBuZWVkcyB0byBr
bm93IGFib3V0IHRoZSBuZXcgSlNET01XaW5kb3cuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMGVkOTg2OTY5MTQ4NzNiMWRhM2E4NGFlMmEw
ODMxZThmZDgxOWJiZS4uZjc2ZmRlOGZjNzJmNjgwNWVmNDhjMDNhZmMxZDA2YTNhMTU0Y2E4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAt
MTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyogc291cmNlVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0gLy8gMCBpZiB3ZSBhcmUgbm90IGV2YWx1YXRp
bmcgYW55IHNjcmlwdAogCi0gICAgdm9pZCBjbGVhcldpbmRvd1NoZWxsKGJvb2wgZ29pbmdJbnRv
UGFnZUNhY2hlID0gZmFsc2UpOworICAgIHZvaWQgY2xlYXJXaW5kb3dTaGVsbChET01XaW5kb3cq
IG5ld0RPTVdpbmRvdywgYm9vbCBnb2luZ0ludG9QYWdlQ2FjaGUpOwogICAgIHZvaWQgdXBkYXRl
RG9jdW1lbnQoKTsKIAogICAgIHZvaWQgbmFtZWRJdGVtQWRkZWQoSFRNTERvY3VtZW50KiwgY29u
c3QgQXRvbWljU3RyaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9CaW5kaW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQmluZGlu
Z1N0YXRlLmNwcAppbmRleCA4ODA5ZTRkNGY5ZTYxYmRiOGRkOTQ1YmEyNWU3MWU2NTZkMTljMzc3
Li5mN2IxNzkzY2I4YjFmMTM1NzliNWI4NTI3ZjU0ZjM5ZWIxYjlkZmUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9CaW5kaW5nU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0JpbmRpbmdTdGF0ZS5jcHAKQEAgLTg5LDYgKzg5LDE0IEBAIEZy
YW1lKiBjdXJyZW50RnJhbWUoQmluZGluZ1N0YXRlKikKICAgICByZXR1cm4gVjhQcm94eTo6cmV0
cmlldmVGcmFtZShjb250ZXh0KTsKIH0KIAorRG9jdW1lbnQqIGN1cnJlbnREb2N1bWVudChCaW5k
aW5nU3RhdGUqKQoreworICAgIERPTVdpbmRvdyogY3VycmVudCA9IFY4UHJveHk6OnJldHJpZXZl
V2luZG93KHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpOworICAgIGlmICghY3VycmVudCkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGN1cnJlbnQtPmRvY3VtZW50KCk7Cit9CisKIHZv
aWQgaW1tZWRpYXRlbHlSZXBvcnRVbnNhZmVBY2Nlc3NUbyhCaW5kaW5nU3RhdGUqLCBEb2N1bWVu
dCogdGFyZ2V0RG9jdW1lbnQpCiB7CiAgICAgVjhQcm94eTo6cmVwb3J0VW5zYWZlQWNjZXNzVG8o
dGFyZ2V0RG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
QmluZGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9CaW5kaW5nU3RhdGUu
aAppbmRleCBkMzU0YmUyNjMzYmY4MWRkMWQxMjc0MTRjNDRjMGI2NDFkYjk5N2E1Li42M2RhYjQz
OWFlYTAxMzljOTEyNGRiZDA0ZmI3MzhiY2EzZWIwMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9CaW5kaW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9CaW5kaW5nU3RhdGUuaApAQCAtNTMsNiArNTMsNyBAQCBGcmFtZSogZmlyc3RGcmFt
ZShCaW5kaW5nU3RhdGUqKTsKIC8vIEZJWE1FOiBXaGVuIGltcGxlbWVudGluZyB0aGlzIGZ1bmN0
aW9uIGZvciBKU0MsIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZQogLy8gYXJlIGFueSBz
dWJ0bGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY3VycmVudEZyYW1lIGFuZCB0aGUgbGV4aWNh
bEdsb2JhbE9iamVjdC4KIEZyYW1lKiBjdXJyZW50RnJhbWUoQmluZGluZ1N0YXRlKik7CitGcmFt
ZSogY3VycmVudERvY3VtZW50KEJpbmRpbmdTdGF0ZSopOwogCiB2b2lkIGltbWVkaWF0ZWx5UmVw
b3J0VW5zYWZlQWNjZXNzVG8oQmluZGluZ1N0YXRlKiwgRG9jdW1lbnQqIHRhcmdldERvY3VtZW50
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cAppbmRleCBhNzEzODAyMTdlM2YyYjFiNTQ1MDg0YTE5NGEyMDFmY2U3YTkxZjkwLi5jODBjMGQx
ZDljMjZlZGJkMDllMjljZGRmMmJmZTQ1MWRlMjg4MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDI2LDcgKzQyNiw3IEBAIE5Q
T2JqZWN0KiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVt
ZW50KEhUTUxQbHVnSW5FbGVtZW50CiB9CiAKIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpjbGVh
cldpbmRvd1NoZWxsKGJvb2wpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hl
bGwoRE9NV2luZG93KiwgYm9vbCkKIHsKICAgICAvLyBWOCBiaW5kaW5nIGV4cGVjdHMgU2NyaXB0
Q29udHJvbGxlcjo6Y2xlYXJXaW5kb3dTaGVsbCBvbmx5IGJlIGNhbGxlZAogICAgIC8vIHdoZW4g
YSBmcmFtZSBpcyBsb2FkaW5nIGEgbmV3IHBhZ2UuIFY4UHJveHk6OmNsZWFyRm9yTmF2aWdhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4
IGIzYzIyYWNhODgwYmY4M2I1MTg4NWFkNzlkMzFjNzEzMmU4YzJjNDQuLmY5MDllMzU2MTVlODlk
MmJjNzlmMDlkMmUyMWIzMGY5YjMzMDEyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBTdHJpbmcqIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9
IC8vIDAgaWYgd2UgYXJlIG5vdCBldmFsdWF0aW5nIGFueSBzY3JpcHQuCiAKLSAgICB2b2lkIGNs
ZWFyV2luZG93U2hlbGwoYm9vbCA9IGZhbHNlKTsKKyAgICB2b2lkIGNsZWFyV2luZG93U2hlbGwo
RE9NV2luZG93KiwgYm9vbCk7CiAgICAgdm9pZCB1cGRhdGVEb2N1bWVudCgpOwogCiAgICAgdm9p
ZCBuYW1lZEl0ZW1BZGRlZChIVE1MRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAppbmRleCAwZjQ4YjU4NzZh
NzE4OTQ2MzMwNDVmMWViMTllMjljZTdjODgxYzNhLi4yYzk0ZTZmN2I4ZGM0MjcxYzY0ODIyMmE5
MjgyMTVlNzAxNzMyYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRp
ZXMuY3BwCkBAIC0xODUsMTAgKzE4NSw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGdldFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogICAgICAgICByZXR1cm4gY29udHJvbGxlci0+d29ya2Vy
Q29udGV4dCgpOwogI2VuZGlmCiAKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gY3VycmVudEZyYW1l
KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSkpCi0gICAgICAgIHJldHVybiBmcmFtZS0+ZG9jdW1l
bnQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIGN1cnJlbnREb2N1bWVudChCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpOwogfQogCiB2b2lk
IHNldFR5cGVNaXNtYXRjaEV4Y2VwdGlvbih2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IDJm
ZGQ1NTZlMzEyODgxNjc5ZTgwNDM2ZDBlYjg2MTJhZGM1N2VkZWMuLmE1NTdkYzdjMDFiMDBkNDNk
MDgxMTllZjgxNTRjZjAzMjlhMmRhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmNwcApAQCAtMzIsMjIgKzMyLDI5IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KQotICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoMCkKIHsKLSAgICBpZiAoIW1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+ZGlkQ3JlYXRlRGVzdHJ1Y3Rpb25PYnNlcnZlcih0aGlzKTsKKyAgICBv
YnNlcnZlQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAogQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXI6On5Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigpCiB7Ci0gICAgaWYg
KCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIHJldHVybjsKKyAgICBvYnNlcnZl
Q29udGV4dCgwKTsKK30KKwordm9pZCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6b2JzZXJ2
ZUNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
K3sKKyAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSB7CisgICAgICAgIEFTU0VSVCht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICAgICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT53aWxsRGVzdHJveURlc3RydWN0aW9uT2JzZXJ2ZXIodGhp
cyk7CisgICAgfQorCisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIAotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29u
dGV4dFRocmVhZCgpKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPndpbGxEZXN0cm95
RGVzdHJ1Y3Rpb25PYnNlcnZlcih0aGlzKTsKKyAgICBpZiAobV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KSB7CisgICAgICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4
dFRocmVhZCgpKTsKKyAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kaWRDcmVhdGVE
ZXN0cnVjdGlvbk9ic2VydmVyKHRoaXMpOworICAgIH0KIH0KIAogdm9pZCBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oCmluZGV4IDE5YTdhOTRiNGRjYjMyMzAxZWU0
ZWUwODljMDMzZjc0Y2JjM2ZiMTIuLmNhOTU2YWJjOGQyMGEyMzE0N2IxOTQyYjU0NjQ4NTE3Njlm
OTM1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlci5oCkBAIC00MCw2ICs0MCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCk7CisgICAgdm9pZCBvYnNlcnZlQ29udGV4
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggZjQzMDRjNjA3NGYxNzM4ZmRkOTIwZGI1MWFhMjNmMGFjMDU5NDQ3Ny4uNDI5NzFhMTM1ZmQy
OTNhN2VjODI4YzBhYjYyYzk0MWNkMjE2ZDM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC02MTIsNiArNjEyLDEwIEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIEFTU0VSVCghbV9w
YXJlbnRUcmVlU2NvcGUpOwogICAgIEFTU0VSVCghbV9ndWFyZFJlZkNvdW50KTsKIAorICAgIC8v
IEZJWE1FOiBTaG91bGQgd2UgY2xlYXIgdGhlIGRlZmF1bHQgdmlldyB3aGVuIHdlIGRldGFjaCBm
cm9tIHRoZSBGcmFtZT8KKyAgICBpZiAobV9kZWZhdWx0VmlldykKKyAgICAgICAgbV9kZWZhdWx0
Vmlldy0+Y2xlYXIoKTsKKwogICAgIG1fc2NyaXB0UnVubmVyLmNsZWFyKCk7CiAKICAgICBoaXN0
b2dyYW1NdXRhdGlvbkV2ZW50VXNhZ2UobV9saXN0ZW5lclR5cGVzKTsKQEAgLTIxNjIsNyArMjE2
Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRldGFjaCgpCiAKICAgICBpZiAocmVuZGVyKQogICAgICAg
ICByZW5kZXItPmRlc3Ryb3koKTsKLSAgICAKKwogICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQsIGFz
IG91ciBGcmFtZSBtaWdodCBkZWxldGUgaXRzZWxmIGFzIHNvb24gYXMgaXQgZGV0YWNoZXMKICAg
ICAvLyB1cy4gSG93ZXZlciwgdGhpcyB2aW9sYXRlcyBOb2RlOjpkZXRhY2goKSBzZW1hbnRpY3Ms
IGFzIGl0J3MgbmV2ZXIKICAgICAvLyBwb3NzaWJsZSB0byByZS1hdHRhY2guIEV2ZW50dWFsbHkg
RG9jdW1lbnQ6OmRldGFjaCgpIHNob3VsZCBiZSByZW5hbWVkLApAQCAtNDAzNiwxOCArNDA0MCwz
NCBAQCB2b2lkIERvY3VtZW50Ojp0ZXh0Tm9kZVNwbGl0KFRleHQqIG9sZE5vZGUpCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHVwZGF0ZSBtYXJrZXJzIGZvciBzcGVsbGluZyBhbmQgZ3JhbW1h
ciBjaGVja2luZy4KIH0KIAotLy8gRklYTUU6IGV2ZW50dWFsbHksIHRoaXMgc2hvdWxkIHJldHVy
biBhIERPTVdpbmRvdyBzdG9yZWQgaW4gdGhlIGRvY3VtZW50LgotRE9NV2luZG93KiBEb2N1bWVu
dDo6ZG9tV2luZG93KCkgY29uc3QKK3ZvaWQgRG9jdW1lbnQ6OmNyZWF0ZURlZmF1bHRWaWV3KCkK
IHsKLSAgICBpZiAoIWZyYW1lKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChtX2Zy
YW1lKTsKKyAgICBBU1NFUlQoIW1fZGVmYXVsdFZpZXcpOwogCi0gICAgLy8gVGhlIG1fZnJhbWUg
cG9pbnRlciBpcyBub3QgKG5vdCBhbHdheXM/KSB6ZXJvZWQgb3V0IHdoZW4gdGhlIGRvY3VtZW50
IGlzIHB1dCBpbnRvIGIvZiBjYWNoZSwgc28gdGhlIGZyYW1lIGNhbiBob2xkIGFuIHVucmVsYXRl
ZCBkb2N1bWVudC93aW5kb3cgcGFpci4KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFsd2F5cyB6
ZXJvIG91dCB0aGUgZnJhbWUgcG9pbnRlciBvbiBuYXZpZ2F0aW9uIHRvIGF2b2lkIGFjY2lkZW50
YWxseSBhY2Nlc3NpbmcgdGhlIG5ldyBmcmFtZSBjb250ZW50LgotICAgIGlmIChtX2ZyYW1lLT5k
b2N1bWVudCgpICE9IHRoaXMpCi0gICAgICAgIHJldHVybiAwOworICAgIG1fZGVmYXVsdFZpZXcg
PSBET01XaW5kb3c6OmNyZWF0ZSh0aGlzKTsKKworICAgIEFTU0VSVChtX2RlZmF1bHRWaWV3LT5k
b2N1bWVudCgpID09IHRoaXMpOworICAgIEFTU0VSVChtX2RlZmF1bHRWaWV3LT5mcmFtZSgpID09
IG1fZnJhbWUpOworfQorCit2b2lkIERvY3VtZW50OjpjbGVhckRlZmF1bHRWaWV3KCkKK3sKKyAg
ICBtX2RlZmF1bHRWaWV3LT5jbGVhcigpOworICAgIEFTU0VSVChtX2RlZmF1bHRWaWV3KTsKK30K
Kwordm9pZCBEb2N1bWVudDo6dGFrZURlZmF1bHRWaWV3RnJvbShEb2N1bWVudCogZG9jdW1lbnQp
Cit7CisgICAgQVNTRVJUKG1fZnJhbWUpOworICAgIEFTU0VSVCghbV9kZWZhdWx0Vmlldyk7Cisg
ICAgQVNTRVJUKGRvY3VtZW50LT5kZWZhdWx0VmlldygpKTsKKworICAgIG1fZGVmYXVsdFZpZXcg
PSBkb2N1bWVudC0+bV9kZWZhdWx0Vmlldy5yZWxlYXNlKCk7CisgICAgbV9kZWZhdWx0Vmlldy0+
ZGlkU2VjdXJlVHJhbnNpdGlvblRvKHRoaXMpOwogCi0gICAgcmV0dXJuIGZyYW1lKCktPmRvbVdp
bmRvdygpOworICAgIEFTU0VSVChtX2RlZmF1bHRWaWV3LT5kb2N1bWVudCgpID09IHRoaXMpOwor
ICAgIEFTU0VSVChtX2RlZmF1bHRWaWV3LT5mcmFtZSgpID09IG1fZnJhbWUpOwogfQogCiB2b2lk
IERvY3VtZW50OjpzZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKQpAQCAt
NTA3Miw5ICs1MDkyLDYgQEAgdm9pZCBEb2N1bWVudDo6ZGlkVXBkYXRlU2VjdXJpdHlPcmlnaW4o
KQogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgcmVtb3ZlIERPTVdpbmRvdzo6bV9zZWN1cml0eU9yaWdpbiBzbyB0aGF0IHdlIGRv
bid0IG5lZWQgdG8ga2VlcCB0aGVtIGluIHN5bmMuCi0gICAgLy8gU2VlIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3OTM+LgotICAgIG1fZnJhbWUtPmRvbVdpbmRv
dygpLT5zZXRTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbigpKTsKICAgICBtX2ZyYW1lLT5z
Y3JpcHQoKS0+dXBkYXRlU2VjdXJpdHlPcmlnaW4oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBjNjc2N2Y4NjQzYmU3ZGQ4NTEzYzc2MWU3OGNmOWU3MTY4NzA0MzMzLi43M2UxOGFlYzZk
NzNjMzM5NDRmNDhiMGIwN2NkODhkMmQxNGFiN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
NzY2LDggKzc2NiwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0Tm9kZXNNZXJnZWQoVGV4dCog
b2xkTm9kZSwgdW5zaWduZWQgb2Zmc2V0KTsKICAgICB2b2lkIHRleHROb2RlU3BsaXQoVGV4dCog
b2xkTm9kZSk7CiAKLSAgICBET01XaW5kb3cqIGRlZmF1bHRWaWV3KCkgY29uc3QgeyByZXR1cm4g
ZG9tV2luZG93KCk7IH0gCi0gICAgRE9NV2luZG93KiBkb21XaW5kb3coKSBjb25zdDsKKyAgICB2
b2lkIGNyZWF0ZURlZmF1bHRWaWV3KCk7CisgICAgdm9pZCBjbGVhckRlZmF1bHRWaWV3KCk7CisK
KyAgICBET01XaW5kb3cqIGRlZmF1bHRWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0Vmll
dy5nZXQoKTsgfSAKKworICAgIC8vIEZJWE1FOiBEb2N1bWVudCB0aGlzIGluc2FuaXR5LgorICAg
IHZvaWQgdGFrZURlZmF1bHRWaWV3RnJvbShEb2N1bWVudCopOworCisgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIGZ1bmN0aW9uIGFuZCB1cGRhdGUgY2FsbGVycyB0byB1c2UgZGVmYXVsdFZpZXco
KSBpbnN0ZWFkLgorICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3QgeyByZXR1cm4gZGVm
YXVsdFZpZXcoKTsgfQogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgZm9yd2FyZGluZyBE
T01XaW5kb3cgZXZlbnQgcmVsYXRlZCB0YXNrcyB0byB0aGUgRE9NV2luZG93IGlmIGl0IGV4aXN0
cy4KICAgICB2b2lkIHNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOwpAQCAtMTI2NSw2
ICsxMjczLDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8T3duUHRyPEZvbnREYXRhPiA+IG1fY3Vz
dG9tRm9udHM7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBSZWZQdHI8RE9NV2luZG93PiBt
X2RlZmF1bHRWaWV3OworCiAgICAgT3duUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyOwogICAgIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4gbV9wYXJzZXI7CiAg
ICAgUmVmUHRyPENvbnRleHRGZWF0dXJlcz4gbV9jb250ZXh0RmVhdHVyZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDg3ZDRhZjFhZDMwM2IyMDU1NGU1ZGQyODYw
NmE0ODUxZTE0NTJkYjguLmFlYTk1YzUzMWJiZmRlZGZjMmI2MTRkODA4NWJiODA0YTY0ODAxNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC0xNzQsOSArMTc0LDcg
QEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICBtX2RvY3VtZW50
LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkRvY3VtZW50V2lsbEJl
Y29tZUluYWN0aXZlKTsKICAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9IGFkb3B0UHRyKG5l
dyBTY3JpcHRDYWNoZWRGcmFtZURhdGEoZnJhbWUpKTsKIAotICAgIG1fZG9tV2luZG93ID0gZnJh
bWUtPmRvbVdpbmRvdygpOwotICAgIEFTU0VSVChtX2RvbVdpbmRvdyk7Ci0gICAgbV9kb21XaW5k
b3ctPnN1c3BlbmRGb3JQYWdlQ2FjaGUoKTsKKyAgICBtX2RvY3VtZW50LT5kZWZhdWx0Vmlldygp
LT5zdXNwZW5kRm9yUGFnZUNhY2hlKCk7CiAKICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT5zYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSh0aGlzKTsKIApAQCAtMjUwLDcgKzI0OCw3
IEBAIHZvaWQgQ2FjaGVkRnJhbWU6OmRlc3Ryb3koKQogICAgIEFTU0VSVChtX3ZpZXcpOwogICAg
IEFTU0VSVChtX2RvY3VtZW50LT5mcmFtZSgpID09IG1fdmlldy0+ZnJhbWUoKSk7CiAKLSAgICBt
X2RvbVdpbmRvdy0+d2lsbERlc3Ryb3lDYWNoZWRGcmFtZSgpOworICAgIG1fZG9jdW1lbnQtPmRl
ZmF1bHRWaWV3KCktPndpbGxEZXN0cm95Q2FjaGVkRnJhbWUoKTsKIAogICAgIGlmICghbV9pc01h
aW5GcmFtZSkgewogICAgICAgICBtX3ZpZXctPmZyYW1lKCktPmRldGFjaEZyb21QYWdlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKaW5kZXggYTE2Zjg5MzIzNGNjOTVjMjAyNGRk
OTliYmE5ZTgyZWY2NGJlMzE5OC4uNDYzZmE3ZjhiYmQ5ZGViZDJiNTE5ODFhZDhmOWQ2ZGEyZDRk
OTY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaApAQCAtNTEsNyArNTEsNiBA
QCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1
bWVudC5nZXQoKTsgfQogICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1fdmll
dy5nZXQoKTsgfQogICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
Ci0gICAgRE9NV2luZG93KiBkb21XaW5kb3coKSBjb25zdCB7IHJldHVybiBtX2RvbVdpbmRvdy5n
ZXQoKTsgfQogICAgIGJvb2wgaXNNYWluRnJhbWUoKSB7IHJldHVybiBtX2lzTWFpbkZyYW1lOyB9
CiAKIHByb3RlY3RlZDoKQEAgLTYwLDcgKzU5LDYgQEAgcHJvdGVjdGVkOgogICAgIAogICAgIFJl
ZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1f
ZG9jdW1lbnRMb2FkZXI7Ci0gICAgUmVmUHRyPERPTVdpbmRvdz4gbV9kb21XaW5kb3c7CiAgICAg
UmVmUHRyPEZyYW1lVmlldz4gbV92aWV3OwogICAgIFJlZlB0cjxOb2RlPiBtX21vdXNlUHJlc3NO
b2RlOwogICAgIEtVUkwgbV91cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcAppbmRleCAzMTc0YWZjNDA0NTJjNTk4ZWE5MGQ5YTk0ZjA3NGI0ZTdkYzQxYTk5Li4zNTFh
YTM0MWVmOGZhODJmMTdlYmE5MzczYTMyOWQ2MmIxMDc0NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHAKQEAgLTEyNSwxMCArMTI1LDE3IEBAIHZvaWQgRG9jdW1l
bnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybFJlZmVyZW5jZSwgYm9vbCBkaXNwYXRjaCwg
RG9jdW1lbnQqIG93CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjb25zdWx0IHRoZSBj
b250ZW50IHNlY3VyaXR5IHBvbGljeSBoZXJlIGFib3V0IGJsb2NrZWQgcGx1Zy1pbnM/CiAKLSAg
ICBib29sIHJlc2V0U2NyaXB0aW5nID0gIShtX2ZyYW1lLT5sb2FkZXIoKS0+c3RhdGVNYWNoaW5l
KCktPmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+aXNTZWN1cmVUcmFuc2l0aW9uVG8odXJsKSk7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmNsZWFyKHJlc2V0U2NyaXB0aW5nLCByZXNldFNjcmlwdGluZyk7CisgICAgYm9vbCBzaG91bGRS
ZXVzZURlZmF1bHRWaWV3ID0gbV9mcmFtZS0+bG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLT5pc0Rp
c3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmlz
U2VjdXJlVHJhbnNpdGlvblRvKHVybCk7CisgICAgaWYgKHNob3VsZFJldXNlRGVmYXVsdFZpZXcg
JiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSkgeworICAgICAgICAvLyBGSVhN
RTogRG9jdW1lbnQgdGhpcyBpbnNhbml0eS4KKyAgICAgICAgZG9jdW1lbnQtPnRha2VEZWZhdWx0
Vmlld0Zyb20obV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGRvY3Vt
ZW50LT5jcmVhdGVEZWZhdWx0VmlldygpOworCisgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsZWFy
KGRvY3VtZW50LmdldCgpLCAhc2hvdWxkUmV1c2VEZWZhdWx0VmlldywgIXNob3VsZFJldXNlRGVm
YXVsdFZpZXcpOwogICAgIGNsZWFyKCk7Ci0gICAgaWYgKHJlc2V0U2NyaXB0aW5nKQorCisgICAg
aWYgKCFzaG91bGRSZXVzZURlZmF1bHRWaWV3KQogICAgICAgICBtX2ZyYW1lLT5zY3JpcHQoKS0+
dXBkYXRlUGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CiAKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+
c2V0T3V0Z29pbmdSZWZlcnJlcih1cmwpOwpAQCAtMTQxLDggKzE0OCw4IEBAIHZvaWQgRG9jdW1l
bnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybFJlZmVyZW5jZSwgYm9vbCBkaXNwYXRjaCwg
RG9jdW1lbnQqIG93CiAgICAgICAgIGRvY3VtZW50LT5zZXRTZWN1cml0eU9yaWdpbihvd25lckRv
Y3VtZW50LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogRE9NV2lu
ZG93IHNob3VsZCBnZXQgdGhlIFVSTCBmcm9tIHRoZSBkb2N1bWVudCBpdHNlbGYuCiAgICAgbV9m
cmFtZS0+ZG9tV2luZG93KCktPnNldFVSTChkb2N1bWVudC0+dXJsKCkpOwotICAgIG1fZnJhbWUt
PmRvbVdpbmRvdygpLT5zZXRTZWN1cml0eU9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KSk7CiAKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZGlkQmVnaW5Eb2N1bWVudChkaXNwYXRjaCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDBkY2IzYjI0ZjliZWI4
YmJiY2QyZjE5MDk2NmE2YWMzZWFlOTVkNGEuLmVhMzdhNmY2ZGVlMDAwZTU3ZWRhODYxMTJmMmNm
NzI0ODNjY2NlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNDk5
LDExICs0OTksMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FuY2VsQW5kQ2xlYXIoKQogICAgIGlm
ICghbV9pc0NvbXBsZXRlKQogICAgICAgICBjbG9zZVVSTCgpOwogCi0gICAgY2xlYXIoZmFsc2Up
OworICAgIGNsZWFyKG1fZnJhbWUtPmRvY3VtZW50KCksIGZhbHNlKTsKICAgICBtX2ZyYW1lLT5z
Y3JpcHQoKS0+dXBkYXRlUGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXI6OmNsZWFyKGJvb2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVzLCBib29sIGNsZWFyU2NyaXB0
T2JqZWN0cywgYm9vbCBjbGVhckZyYW1lVmlldykKK3ZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyKERv
Y3VtZW50KiBuZXdEb2N1bWVudCwgYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRpZXMsIGJvb2wgY2xl
YXJTY3JpcHRPYmplY3RzLCBib29sIGNsZWFyRnJhbWVWaWV3KQogewogICAgIG1fZnJhbWUtPmVk
aXRvcigpLT5jbGVhcigpOwogCkBAIC01MjIsOCArNTIyLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y2xlYXIoYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRpZXMsIGJvb2wgY2xlYXJTY3JpcHRPYmplY3Rz
LCBib28KIAogICAgIC8vIERvIHRoaXMgYWZ0ZXIgZGV0YWNoaW5nIHRoZSBkb2N1bWVudCBzbyB0
aGF0IHRoZSB1bmxvYWQgZXZlbnQgd29ya3MuCiAgICAgaWYgKGNsZWFyV2luZG93UHJvcGVydGll
cykgewotICAgICAgICBtX2ZyYW1lLT5jbGVhckRPTVdpbmRvdygpOwotICAgICAgICBtX2ZyYW1l
LT5zY3JpcHQoKS0+Y2xlYXJXaW5kb3dTaGVsbChtX2ZyYW1lLT5kb2N1bWVudCgpLT5pblBhZ2VD
YWNoZSgpKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2xlYXJEZWZhdWx0Vmlldygp
OworICAgICAgICBtX2ZyYW1lLT5zY3JpcHQoKS0+Y2xlYXJXaW5kb3dTaGVsbChuZXdEb2N1bWVu
dC0+ZGVmYXVsdFZpZXcoKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSk7CiAg
ICAgfQogCiAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPmNsZWFyKCk7CkBAIC05MjQsMTAgKzky
NCw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldE9wZW5lcihGcmFtZSogb3BlbmVyKQogICAgICAg
ICBvcGVuZXItPmxvYWRlcigpLT5tX29wZW5lZEZyYW1lcy5hZGQobV9mcmFtZSk7CiAgICAgbV9v
cGVuZXIgPSBvcGVuZXI7CiAKLSAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSkgeworICAgIGlm
IChtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbml0
U2VjdXJpdHlDb250ZXh0KCk7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRTZWN1
cml0eU9yaWdpbihtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKLSAgICB9
CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGJlbG9uZyBpbiBGcmFtZUxvYWRlciEKQEAg
LTE5MjQsMTIgKzE5MjIsMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNoZWRGcmFtZUJh
c2UmIGNhY2hlZEZyYW1lKQogICAgICAgICB1cmwuc2V0UGF0aCgiLyIpOwogCiAgICAgc3RhcnRl
ZCgpOwotICAgIGNsZWFyKHRydWUsIHRydWUsIGNhY2hlZEZyYW1lLmlzTWFpbkZyYW1lKCkpOwot
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY2FjaGVkRnJhbWUuZG9jdW1lbnQoKTsKICAgICBB
U1NFUlQoZG9jdW1lbnQpOwogICAgIGRvY3VtZW50LT5zZXRJblBhZ2VDYWNoZShmYWxzZSk7CiAK
KyAgICBjbGVhcihkb2N1bWVudCwgdHJ1ZSwgdHJ1ZSwgY2FjaGVkRnJhbWUuaXNNYWluRnJhbWUo
KSk7CisKICAgICBtX25lZWRzQ2xlYXIgPSB0cnVlOwogICAgIG1faXNDb21wbGV0ZSA9IGZhbHNl
OwogICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSBmYWxzZTsKQEAgLTE5NDcsMTAgKzE5NDUs
OSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZEZyYW1lQmFzZSYgY2FjaGVkRnJhbWUp
CiAgICAgbV9mcmFtZS0+c2V0Vmlldyh2aWV3KTsKICAgICAKICAgICBtX2ZyYW1lLT5zZXREb2N1
bWVudChkb2N1bWVudCk7Ci0gICAgbV9mcmFtZS0+c2V0RE9NV2luZG93KGNhY2hlZEZyYW1lLmRv
bVdpbmRvdygpKTsKLSAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+cmVzdW1lRnJvbVBhZ2VDYWNo
ZSgpOworICAgIGRvY3VtZW50LT5kZWZhdWx0VmlldygpLT5yZXN1bWVGcm9tUGFnZUNhY2hlKCk7
CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBub3cgdGhhdCBEb2N1
bWVudCBvd25zIHRoZSBET01XaW5kb3cuCiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnNldFVS
TChkb2N1bWVudC0+dXJsKCkpOwotICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRTZWN1cml0
eU9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSk7CiAKICAgICB1cGRhdGVGaXJzdFBh
cnR5Rm9yQ29va2llcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUx
MmNmMzAxN2RhMmFmMjhlMDM3ZWMzZGY4MzIyNTVjNDhkNWJkM2IuLmZiMGE1NDA2YzNjMWEyYzNl
OTgwNGMyOWI5NGVkMTNlZjU5MmJhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcExvYWRpbmcoVW5sb2Fk
RXZlbnRQb2xpY3kpOwogICAgIGJvb2wgY2xvc2VVUkwoKTsKICAgICB2b2lkIGNhbmNlbEFuZENs
ZWFyKCk7Ci0gICAgdm9pZCBjbGVhcihib29sIGNsZWFyV2luZG93UHJvcGVydGllcyA9IHRydWUs
IGJvb2wgY2xlYXJTY3JpcHRPYmplY3RzID0gdHJ1ZSwgYm9vbCBjbGVhckZyYW1lVmlldyA9IHRy
dWUpOworICAgIHZvaWQgY2xlYXIoRG9jdW1lbnQqIG5ld0RvY3VtZW50LCBib29sIGNsZWFyV2lu
ZG93UHJvcGVydGllcyA9IHRydWUsIGJvb2wgY2xlYXJTY3JpcHRPYmplY3RzID0gdHJ1ZSwgYm9v
bCBjbGVhckZyYW1lVmlldyA9IHRydWUpOwogCiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsK
ICAgICBib29sIGZyYW1lSGFzTG9hZGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKaW5kZXggNDQ4MTUwMzYzM2Q1NDQ3MzU1NGZiZjdlYzBmZTg2YzkwMmQ5N2Q2Zi4uM2U2MTAw
M2E1OWU5MTBmYzBmMGUwYjgwZjY4ZDUxMjZkMWU2ZTVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcApAQCAtMzkxLDExICszOTEsMTkgQEAgYm9vbCBET01XaW5kb3c6OmNhblNob3dNb2Rh
bERpYWxvZ05vdyhjb25zdCBGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgp
LT5jYW5SdW5Nb2RhbE5vdygpOwogfQogCi1ET01XaW5kb3c6OkRPTVdpbmRvdyhGcmFtZSogZnJh
bWUpCi0gICAgOiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoZnJhbWUpCitET01XaW5kb3c6OkRP
TVdpbmRvdyhEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlcihkb2N1bWVudCkKKyAgICAsIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcihkb2N1bWVudC0+
ZnJhbWUoKSkKICAgICAsIG1fc2hvdWxkUHJpbnRXaGVuRmluaXNoZWRMb2FkaW5nKGZhbHNlKQog
ICAgICwgbV9zdXNwZW5kZWRGb3JQYWdlQ2FjaGUoZmFsc2UpCiB7CisgICAgQVNTRVJUKGZyYW1l
KCkpOworICAgIEFTU0VSVChET01XaW5kb3c6OmRvY3VtZW50KCkpOworfQorCit2b2lkIERPTVdp
bmRvdzo6ZGlkU2VjdXJlVHJhbnNpdGlvblRvKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBv
YnNlcnZlQ29udGV4dChkb2N1bWVudCk7CiB9CiAKIERPTVdpbmRvdzo6fkRPTVdpbmRvdygpCkBA
IC00NDQsNyArNDUyLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBET01XaW5kb3c6OmludGVyZmFj
ZU5hbWUoKSBjb25zdAogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBET01XaW5kb3c6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudCgpOworICAg
IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogfQogCiBET01XaW5kb3cqIERPTVdpbmRvdzo6dG9ET01XaW5kb3coKQpAQCAtNDU3LDEx
ICs0NjUsNiBAQCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlMaXN0PiBET01XaW5kb3c6Om1hdGNoTWVk
aWEoY29uc3QgU3RyaW5nJiBtZWRpYSkKICAgICByZXR1cm4gZG9jdW1lbnQoKSA/IGRvY3VtZW50
KCktPm1lZGlhUXVlcnlNYXRjaGVyKCktPm1hdGNoTWVkaWEobWVkaWEpIDogMDsKIH0KIAotdm9p
ZCBET01XaW5kb3c6OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbikKLXsKLSAgICBtX3NlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW47Ci19Ci0KIFBh
Z2UqIERPTVdpbmRvdzo6cGFnZSgpCiB7CiAgICAgcmV0dXJuIGZyYW1lKCkgPyBmcmFtZSgpLT5w
YWdlKCkgOiAwOwpAQCAtMTI5OCwxMiArMTMwMSwxNCBAQCBET01XaW5kb3cqIERPTVdpbmRvdzo6
dG9wKCkgY29uc3QKIAogRG9jdW1lbnQqIERPTVdpbmRvdzo6ZG9jdW1lbnQoKSBjb25zdAogewot
ICAgIGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCi0gICAgICAgIHJldHVybiAw
OworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIEFTU0VSVCghY29udGV4
dCB8fCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KGNvbnRleHQpOworfQogCi0gICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxk
bid0IG5lZWQgYSBmcmFtZSB0byB3b3JrLgotICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgp
KTsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKK1NlY3VyaXR5T3JpZ2luKiBET01X
aW5kb3c6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKSA/
IGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkgOiAwOwogfQogCiBQYXNzUmVmUHRyPFN0eWxl
TWVkaWE+IERPTVdpbmRvdzo6c3R5bGVNZWRpYSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
aAppbmRleCAwYjdmZjkzZjA2ODNkMDBkNjMwNzgzNzlkOTNiM2EyOTA0NjVjNmY0Li44NjU5Njc1
YmU0MTI0MzUzNzQzMGY0ZmQ5NTZiMDU0YjMwZWM5MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgRE9NV2luZG93X2gKICNkZWZpbmUgRE9NV2lu
ZG93X2gKIAorI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJLVVJMLmgiCkBAIC04MSwxMSArODIsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgZW51bSBTZXRMb2NhdGlvbkxvY2tpbmcgeyBMb2NrSGlzdG9yeUJhc2VkT25HZXN0
dXJlU3RhdGUsIExvY2tIaXN0b3J5QW5kQmFja0ZvcndhcmRMaXN0IH07CiAKLSAgICBjbGFzcyBE
T01XaW5kb3cgOiBwdWJsaWMgUmVmQ291bnRlZDxET01XaW5kb3c+LCBwdWJsaWMgRXZlbnRUYXJn
ZXQsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIsIHB1YmxpYyBTdXBwbGVtZW50YWJs
ZTxET01XaW5kb3c+IHsKKyAgICAvLyBGSVhNRTogRE9NV2luZG93IHNob3VsZG4ndCBzdWJjbGFz
cyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgYW5kIGluc3RlYWQgc2hvdWxkIGdldCB0byBGcmFt
ZSB2aWEgaXRzIERvY3VtZW50LgorICAgIGNsYXNzIERPTVdpbmRvdyA6IHB1YmxpYyBSZWZDb3Vu
dGVkPERPTVdpbmRvdz4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLCBwdWJsaWMgU3Vw
cGxlbWVudGFibGU8RE9NV2luZG93PiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxET01XaW5kb3c+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBET01XaW5kb3coZnJhbWUpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01X
aW5kb3c+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
T01XaW5kb3coZG9jdW1lbnQpKTsgfQogICAgICAgICB2aXJ0dWFsIH5ET01XaW5kb3coKTsKIAor
ICAgICAgICAvLyBGSVhNRTogRG9jdW1lbnQgdGhpcyBpbnNhbml0eS4KKyAgICAgICAgdm9pZCBk
aWRTZWN1cmVUcmFuc2l0aW9uVG8oRG9jdW1lbnQqKTsKKwogICAgICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIApA
QCAtMTAwLDkgKzEwNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgUGFzc1Jl
ZlB0cjxNZWRpYVF1ZXJ5TGlzdD4gbWF0Y2hNZWRpYShjb25zdCBTdHJpbmcmKTsKIAotICAgICAg
ICB2b2lkIHNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7Ci0gICAgICAgIFNlY3Vy
aXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmln
aW4uZ2V0KCk7IH0KKyAgICAgICAgLy8gRklYTUU6IENhbGxlcnMgc2hvdWxkIHVzZSBkb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpIGRpcmVjdGx5LgorICAgICAgICBTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAorICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdl
dCB0aGUgVVJMIGZyb20gZG9jdW1lbnQoKS0+dXJsKCkgZGlyZWN0bHkuCiAgICAgICAgIHZvaWQg
c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkgeyBtX3VybCA9IHVybDsgfQogICAgICAgICBLVVJMIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAKQEAgLTM5Niw3ICs0MDIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRGcmFtZSgpOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgRE9NV2luZG93KEZyYW1lKik7CisgICAgICAg
IGV4cGxpY2l0IERPTVdpbmRvdyhEb2N1bWVudCopOwogCiAgICAgICAgIFBhZ2UqIHBhZ2UoKTsK
IApAQCAtNDE4LDcgKzQyNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBy
ZWNvbm5lY3RET01XaW5kb3dQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHZvaWQgd2lsbERlc3Ryb3lE
b2N1bWVudEluRnJhbWUoKTsKIAotICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fc2Vj
dXJpdHlPcmlnaW47CiAgICAgICAgIEtVUkwgbV91cmw7CiAKICAgICAgICAgYm9vbCBtX3Nob3Vs
ZFByaW50V2hlbkZpbmlzaGVkTG9hZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMDk4ODEw
ZGNkODJjNGZmOGVmNjI1NzZjNWMwODE2NmFmOGFkZjQ5MS4uYTA1ZWNhOGFhMjAwNWRmYWU3MDNh
N2RiNzAzNjNhZGVjNmQwOTI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTI4OCwxMyArMjg4
LDE2IEBAIHZvaWQgRnJhbWU6OnNldFZpZXcoUGFzc1JlZlB0cjxGcmFtZVZpZXc+IHZpZXcpCiAK
IHZvaWQgRnJhbWU6OnNldERvY3VtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnQ+IG5ld0RvYykKIHsK
LSAgICBBU1NFUlQoIW5ld0RvYyB8fCBuZXdEb2MtPmZyYW1lKCkpOworICAgIEFTU0VSVCghbmV3
RG9jIHx8IG5ld0RvYy0+ZnJhbWUoKSA9PSB0aGlzKTsKICAgICBpZiAobV9kb2MgJiYgbV9kb2Mt
PmF0dGFjaGVkKCkgJiYgIW1fZG9jLT5pblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBkb24ndCBjYWxsIHdpbGxSZW1vdmUgaGVyZS4gV2h5IGlzIHRoYXQgT0s/CiAgICAgICAg
IG1fZG9jLT5kZXRhY2goKTsKICAgICB9CiAKICAgICBtX2RvYyA9IG5ld0RvYzsKKyAgICBBU1NF
UlQoIW1fZG9jIHx8IG1fZG9jLT5kZWZhdWx0VmlldygpKTsKKyAgICBBU1NFUlQoIW1fZG9jIHx8
IG1fZG9jLT5kZWZhdWx0VmlldygpLT5mcmFtZSgpID09IHRoaXMpOworCiAgICAgc2VsZWN0aW9u
KCktPnVwZGF0ZVNlY3VyZUtleWJvYXJkRW50cnlJZkFjdGl2ZSgpOwogCiAgICAgaWYgKG1fZG9j
ICYmICFtX2RvYy0+YXR0YWNoZWQoKSkKQEAgLTYwMSwxNSArNjA0LDYgQEAgdm9pZCBGcmFtZTo6
aW5qZWN0VXNlclNjcmlwdHNGb3JXb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBV
c2VyU2NyaXB0VmUKICAgICB9CiB9CiAKLXZvaWQgRnJhbWU6OmNsZWFyRE9NV2luZG93KCkKLXsK
LSAgICBpZiAobV9kb21XaW5kb3cpIHsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZCh0aGlzLCBtX2RvbVdpbmRvdy5nZXQoKSk7Ci0gICAgICAg
IG1fZG9tV2luZG93LT5jbGVhcigpOwotICAgIH0KLSAgICBtX2RvbVdpbmRvdyA9IDA7Ci19Ci0K
IFJlbmRlclZpZXcqIEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBjb25zdAogewogICAgIERvY3Vt
ZW50KiBkb2MgPSBkb2N1bWVudCgpOwpAQCAtNjY5LDE1ICs2NjMsNiBAQCB2b2lkIEZyYW1lOjpj
bGVhclRpbWVycygpCiAgICAgY2xlYXJUaW1lcnMobV92aWV3LmdldCgpLCBkb2N1bWVudCgpKTsK
IH0KIAotdm9pZCBGcmFtZTo6c2V0RE9NV2luZG93KERPTVdpbmRvdyogZG9tV2luZG93KQotewot
ICAgIGlmIChtX2RvbVdpbmRvdykgewotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmZyYW1lV2luZG93RGlzY2FyZGVkKHRoaXMsIG1fZG9tV2luZG93LmdldCgpKTsKLSAgICAgICAg
bV9kb21XaW5kb3ctPmNsZWFyKCk7Ci0gICAgfQotICAgIG1fZG9tV2luZG93ID0gZG9tV2luZG93
OwotfQotCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiB2b2lkIEZyYW1lOjpkaXNw
YXRjaFZpc2liaWxpdHlTdGF0ZUNoYW5nZUV2ZW50KCkKIHsKQEAgLTY5NywxMCArNjgyLDggQEAg
dm9pZCBGcmFtZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKIAogRE9NV2luZG93KiBGcmFtZTo6ZG9tV2luZG93KCkgY29uc3QKIHsK
LSAgICBpZiAoIW1fZG9tV2luZG93KQotICAgICAgICBtX2RvbVdpbmRvdyA9IERPTVdpbmRvdzo6
Y3JlYXRlKGNvbnN0X2Nhc3Q8RnJhbWUqPih0aGlzKSk7Ci0KLSAgICByZXR1cm4gbV9kb21XaW5k
b3cuZ2V0KCk7CisgICAgQVNTRVJUKG1fZG9jLT5kZWZhdWx0VmlldygpKTsKKyAgICByZXR1cm4g
bV9kb2MtPmRlZmF1bHRWaWV3KCk7CiB9CiAKIHZvaWQgRnJhbWU6OndpbGxEZXRhY2hQYWdlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaAppbmRleCAwMGMwNGEzNTgxZjcyZjJlYzZkNTkxMjEyYTM1YWFkMmMwNDc5
MGEyLi44YzU3Y2I0NWYwNzcyMzMzMTYyNTc5YjRjMWFiOGU1ZmQ1NTczNzZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCkBAIC0xMjgsMTIgKzEyOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
CiAgICAgICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoYm9vbCBzaG93RGVidWdJbmZvID0gZmFs
c2UpIGNvbnN0OwogCi0gICAgICAgIC8vIFVubGlrZSBtb3N0IGFjY2Vzc29ycyBpbiB0aGlzIGNs
YXNzLCBkb21XaW5kb3coKSBhbHdheXMgY3JlYXRlcyBhIG5ldyBET01XaW5kb3cgaWYgbV9kb21X
aW5kb3cgaXMgbnVsbC4KLSAgICAgICAgLy8gQ2FsbGVycyB0aGF0IGRvbid0IG5lZWQgYSBuZXcg
RE9NV2luZG93IHRvIGJlIGNyZWF0ZWQgc2hvdWxkIHVzZSBleGlzdGluZ0RPTVdpbmRvdygpLgor
ICAgICAgICAvLyBGSVhNRTogQ2FsbGVycyBzaG91bGQgdXNlIGRvY3VtZW50KCktPmRlZmF1bHRW
aWV3KCkgZGlyZWN0bHkuCiAgICAgICAgIERPTVdpbmRvdyogZG9tV2luZG93KCkgY29uc3Q7Ci0g
ICAgICAgIERPTVdpbmRvdyogZXhpc3RpbmdET01XaW5kb3coKSB7IHJldHVybiBtX2RvbVdpbmRv
dy5nZXQoKTsgfQotICAgICAgICB2b2lkIHNldERPTVdpbmRvdyhET01XaW5kb3cqKTsKLSAgICAg
ICAgdm9pZCBjbGVhckRPTVdpbmRvdygpOworICAgICAgICBET01XaW5kb3cqIGV4aXN0aW5nRE9N
V2luZG93KCkgeyByZXR1cm4gZG9tV2luZG93KCk7IH0KIAogICAgICAgICBzdGF0aWMgRnJhbWUq
IGZyYW1lRm9yV2lkZ2V0KGNvbnN0IFdpZGdldCopOwogCkBAIC0yMTQsOCArMjExLDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBtdXRhYmxlIEZyYW1lTG9hZGVyIG1fbG9hZGVyOwog
ICAgICAgICBtdXRhYmxlIE5hdmlnYXRpb25TY2hlZHVsZXIgbV9uYXZpZ2F0aW9uU2NoZWR1bGVy
OwogCi0gICAgICAgIG11dGFibGUgUmVmUHRyPERPTVdpbmRvdz4gbV9kb21XaW5kb3c7Ci0KICAg
ICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBtX293bmVyRWxlbWVudDsKICAgICAgICAgUmVm
UHRyPEZyYW1lVmlldz4gbV92aWV3OwogICAgICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCmluZGV4IGM1Yzg0ZTdmNjAzZGEzMjAwZGE1
NDdiMTFkYmUwYTQ4ZmJhOWFiMmIuLjc4ODdkYTBhMjM5OGI0NmM1MjE2NzIyYzJhMTJiNTk5NzRk
MDgwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTg5LDYgKzg5LDcg
QEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9t
U291cmNlKGNvbnN0IFN0cmluZyYgc291cmMKIAogICAgICAgICBpZiAoRG9jdW1lbnQqIG9sZERv
Y3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0VHJh
bnNmb3JtU291cmNlRG9jdW1lbnQob2xkRG9jdW1lbnQpOworICAgICAgICAgICAgcmVzdWx0LT50
YWtlRGVmYXVsdFZpZXdGcm9tKG9sZERvY3VtZW50KTsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0
U2VjdXJpdHlPcmlnaW4ob2xkRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgICAgICAg
ICAgcmVzdWx0LT5zZXRDb29raWVVUkwob2xkRG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsKICAgICAg
ICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMob2xkRG9jdW1lbnQtPmZpcnN0
UGFydHlGb3JDb29raWVzKCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>