<?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>46595</bug_id>
          
          <creation_ts>2010-09-26 16:55:45 -0700</creation_ts>
          <short_desc>Make pseudo-style resolution less hard-coded when used to select a shadow node</short_desc>
          <delta_ts>2011-01-21 13:48:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>50790</dependson>
    
    <dependson>52917</dependson>
          <blocked>44907</blocked>
    
    <blocked>46590</blocked>
    
    <blocked>48980</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>arv</cc>
    
    <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>285208</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-26 16:55:45 -0700</bug_when>
    <thetext>in effect, implement plumbing for pseudo attribute from: http://dev.w3.org/2006/xbl2/Overview.html#the-pseudo-attribute</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323804</commentid>
    <comment_count>1</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-12-17 08:49:06 -0800</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=50790#c3 for specific steps on how to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329874</commentid>
    <comment_count>2</comment_count>
      <attachid>78063</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-05 16:54:07 -0800</bug_when>
    <thetext>Created attachment 78063
WIP: Almost ready</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329877</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-05 16:55:50 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=78063) [details]
&gt; WIP: Almost ready

I am not sure I need both CSSSelector::PseudoShadowElement and CSSSelector::ShadowHost, but it does make the logic easier to understand. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330170</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-06 08:57:20 -0800</bug_when>
    <thetext>Still to do:

1) We&apos;re supposed to throw SYNTAX_ERR on unknown pseudo elements. How are we going to handle this now?

2) Unscrew-up pseudo element selector serialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330187</commentid>
    <comment_count>5</comment_count>
      <attachid>78126</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-06 09:38:27 -0800</bug_when>
    <thetext>Created attachment 78126
WIP: Serialization almost works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330958</commentid>
    <comment_count>6</comment_count>
      <attachid>78262</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-07 13:18:44 -0800</bug_when>
    <thetext>Created attachment 78262
Ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331026</commentid>
    <comment_count>7</comment_count>
      <attachid>78274</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-07 14:50:56 -0800</bug_when>
    <thetext>Created attachment 78274
Corrected the issue with multiple specifiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331227</commentid>
    <comment_count>8</comment_count>
      <attachid>78274</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-08 11:04:05 -0800</bug_when>
    <thetext>Comment on attachment 78274
Corrected the issue with multiple specifiers.

I wrote a comprehensive test for selectors to double-check that I didn&apos;t screw anything up, and it turns out I did! :)

New patch coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331360</commentid>
    <comment_count>9</comment_count>
      <attachid>78338</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-08 20:05:03 -0800</bug_when>
    <thetext>Created attachment 78338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331361</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-08 20:06:11 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=78338) [details]
&gt; Patch

Now with tests! I can&apos;t believe we didn&apos;t good have coverage for namespaces/elements/specifier_lists combinations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332581</commentid>
    <comment_count>11</comment_count>
      <attachid>78338</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-01-11 12:53:29 -0800</bug_when>
    <thetext>Comment on attachment 78338
Patch

r=me.  Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332591</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-11 13:05:44 -0800</bug_when>
    <thetext>Committed r75543: &lt;http://trac.webkit.org/changeset/75543&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78063</attachid>
            <date>2011-01-05 16:54:07 -0800</date>
            <delta_ts>2011-01-06 09:38:22 -0800</delta_ts>
            <desc>WIP: Almost ready</desc>
            <filename>bug-46595-20110105165405.patch</filename>
            <type>text/plain</type>
            <size>17429</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWY4ZDk3MjU3YzY2M2UwOGQxOWE1MjEzZDY1NTkzNGE1YWEzZWE1YS4uYWY1OWJkNjZmYTQ2NTkw
NmQzNmZmZmNiMzAwOTQ5YWY4ZTE2MzU2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wMS0wNSAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgcHNldWRvLXN0eWxlIHJlc29sdXRp
b24gbGVzcyBoYXJkLWNvZGVkIHdoZW4gdXNlZCB0byBzZWxlY3QgYSBzaGFkb3cgbm9kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTUKKworICAg
ICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6
CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUpOgorICAgICAgICAqIGNzcy9DU1NQ
YXJzZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVUb1BzZXVk
b1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9U
eXBlKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlU2V0OjpnZXRQc2V1ZG9S
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlU2V0OjphZGRSdWxlKToKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hhZG93
UHNldWRvSWQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTbGlkZXI6OmNyZWF0ZVRodW1iU3R5bGUpOgorCiAyMDExLTAxLTA0ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4gYW5kIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueQppbmRleCAyMDdmZGY1MWQxNzZlM2U1MGQ4NTdiMjk2MDBkOWE2MzA4YzkyMzE3Li44MGRj
MjkyZjJlNTdiODdhNjFiMDZmYjk5YzJlZWRmNTcyOTJjYmIyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC05MDAs
MTcgKzkwMCwxMyBAQCBzaW1wbGVfc2VsZWN0b3I6CiAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxp
ZmllZE5hbWUobnVsbEF0b20sICQxLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOwogICAgIH0KICAg
ICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0gJDI7Ci0gICAg
ICAgIGlmICgkJCkgewotICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NT
UGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUo
bnVsbEF0b20sICQxLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOwotICAgICAgICB9CisgICAgICAg
ICQkID0gJDIgPyBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT51cGRhdGVTcGVjaWZp
ZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJDIpIDogMDsKICAgICB9CiAgICAgfCBz
cGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDE7CiAgICAgICAgIENTU1BhcnNlciogcCA9
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgIGlmICgkJCAmJiBwLT5t
X2RlZmF1bHROYW1lc3BhY2UgIT0gc3RhckF0b20pCi0gICAgICAgICAgICAkJC0+bV90YWcgPSBR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKTsK
KyAgICAgICAgaWYgKCQkKQorICAgICAgICAgICAgJCQgPSBwLT51cGRhdGVTcGVjaWZpZXJzV2l0
aEVsZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgJDEpOwogICAgIH0KICAgICB8IG5hbWVz
cGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgewogICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNw
YWNlUHJlZml4ID0gJDE7CkBAIC05MjMsMTYgKzkxOSw3IEBAIHNpbXBsZV9zZWxlY3RvcjoKICAg
ICAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQyLCBwLT5tX2Rl
ZmF1bHROYW1lc3BhY2UpOwogICAgIH0KICAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBlbGVtZW50
X25hbWUgc3BlY2lmaWVyX2xpc3QgewotICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoJCQp
IHsKLSAgICAgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSAkMTsKLSAgICAg
ICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0g
ICAgICAgICAgICBpZiAocC0+bV9zdHlsZVNoZWV0KQotICAgICAgICAgICAgICAgICQkLT5tX3Rh
ZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCAkMiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHAtPm1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNw
YWNlKG5hbWVzcGFjZVByZWZpeCkpOwotICAgICAgICAgICAgZWxzZSAvLyBGSVhNRTogU2hvdWxk
bid0IHRoaXMgY2FzZSBiZSBhbiBlcnJvcj8KLSAgICAgICAgICAgICAgICAkJC0+bV90YWcgPSBR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMiwgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKTsKLSAgICAg
ICAgfQorICAgICAgICAkJCA9ICQzID8gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+
dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQzKSA6IDA7CiAgICAgfQog
ICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAk
MjsKQEAgLTk3MCwxMyArOTU3LDIzIEBAIHNwZWNpZmllcl9saXN0OgogICAgICAgICBpZiAoISQy
KQogICAgICAgICAgICAgJCQgPSAwOwogICAgICAgICBlbHNlIGlmICgkMSkgewotICAgICAgICAg
ICAgJCQgPSAkMTsKICAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1Bh
cnNlcio+KHBhcnNlcik7Ci0gICAgICAgICAgICBDU1NTZWxlY3RvciogZW5kID0gJDE7Ci0gICAg
ICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAgICAgICAgICBDU1NTZWxlY3Rv
ciogZW5kOworICAgICAgICAgICAgQ1NTU2VsZWN0b3IqIGhpc3Rvcnk7CisgICAgICAgICAgICAv
LyBGSVhNRTogTUFLRSBTVVJFIFRIQVQgSVQgSVMgSU5WQUxJRCBUTyBBREQgU1BFQ0lGSUVSUyBB
RlRFUiBQc2V1ZG9TaGFkb3dFbGVtZW50CisgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCBQc2V1
ZG9TaGFkb3dFbGVtZW50IGFsd2F5cyBzdGF5cyBhdCB0aGUgdG9wIG9mIGhpc3RvcnkuCisgICAg
ICAgICAgICBpZiAoJDItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1NoYWRvd0VsZW1l
bnQpIHsKKyAgICAgICAgICAgICAgICBlbmQgPSAkMjsKKyAgICAgICAgICAgICAgICBoaXN0b3J5
ID0gJDE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVuZCA9ICQxOwor
ICAgICAgICAgICAgICAgIGhpc3RvcnkgPSAkMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICQkID0gZW5kOworICAgICAgICAgICAgd2hpbGUoZW5kLT50YWdIaXN0b3J5KCkpCiAgICAgICAg
ICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7CiAgICAgICAgICAgICBlbmQtPm1fcmVs
YXRpb24gPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I7Ci0gICAgICAgICAgICBlbmQtPnNldFRh
Z0hpc3RvcnkocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDIpKTsKKyAgICAgICAgICAgIGVuZC0+
c2V0VGFnSGlzdG9yeShwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcihoaXN0b3J5KSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJvciB7CkBAIC0xMTQxLDkgKzExMzgs
OSBAQCBwc2V1ZG86CiAgICAgICAgICQzLmxvd2VyKCk7CiAgICAgICAgICQkLT5tX3ZhbHVlID0g
JDM7CiAgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlw
ZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAg
ICAgICAgICAgICQkID0gMDsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvRmlyc3RMaW5lKSB7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9Vbmtub3duKSB7CisgICAgICAgICAgICAkJC0+bV9tYXRjaCA9IENTU1NlbGVjdG9yOjpQc2V1
ZG9TaGFkb3dFbGVtZW50OworICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb0ZpcnN0TGluZSkgewogICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nh
c3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jID0g
cC0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBkb2MtPnNldFVzZXNGaXJzdExpbmVSdWxl
cyh0cnVlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGY4MTdiYjk4NzhhYjlmMmM2NGI4Mzk1NDA2YTY0NGVm
NGQ4NThmZGYuLjJhOGQ5MDc5M2NjNDcwZmM4NTMzYzQ3MTc4MmI3M2M1MDQ3Njg4MjkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcApAQCAtNTkyNSw2ICs1OTI1LDI5IEBAIHZvaWQgQ1NTUGFyc2VyOjphZGROYW1lc3Bh
Y2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgdXJpCiAg
ICAgbV9zdHlsZVNoZWV0LT5hZGROYW1lc3BhY2UodGhpcywgcHJlZml4LCB1cmkpOwogfQogCitD
U1NTZWxlY3RvciogQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVs
ZW1lbnROYW1lLCBDU1NTZWxlY3Rvciogc3BlY2lmaWVycykKK3sKKyAgICBBdG9taWNTdHJpbmcg
ZGV0ZXJtaW5lZE5hbWVzcGFjZSA9IG5hbWVzcGFjZVByZWZpeCAhPSBudWxsQXRvbSAmJiBtX3N0
eWxlU2hlZXQgPyBtX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVm
aXgpIDogbV9kZWZhdWx0TmFtZXNwYWNlOworICAgIFF1YWxpZmllZE5hbWUgdGFnID0gUXVhbGlm
aWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsIGVsZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFtZXNwYWNl
KTsKKyAgICBpZiAoc3BlY2lmaWVycy0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvU2hh
ZG93RWxlbWVudCkgeworICAgICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCkpCisg
ICAgICAgICAgICBkb2MtPnNldFVzZXNEZXNjZW5kYW50UnVsZXModHJ1ZSk7CisKKyAgICAgICAg
c3BlY2lmaWVycy0+bV9yZWxhdGlvbiA9IENTU1NlbGVjdG9yOjpTaGFkb3dIb3N0OworICAgICAg
ICBpZiAoQ1NTU2VsZWN0b3IqIGhpc3RvcnkgPSBzcGVjaWZpZXJzLT50YWdIaXN0b3J5KCkpCisg
ICAgICAgICAgICBoaXN0b3J5LT5tX3RhZyA9IHRhZzsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBDU1NTZWxlY3RvciogZWxlbWVudE5hbWVTZWxlY3RvciA9IGZhc3ROZXc8Q1NTU2VsZWN0
b3I+KCk7CisgICAgICAgICAgICBlbGVtZW50TmFtZVNlbGVjdG9yLT5tX3RhZyA9IHRhZzsKKyAg
ICAgICAgICAgIHNwZWNpZmllcnMtPnNldFRhZ0hpc3RvcnkoZWxlbWVudE5hbWVTZWxlY3Rvcik7
CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgc3BlY2lmaWVycy0+bV90YWcgPSB0YWc7
CisKKyAgICByZXR1cm4gc3BlY2lmaWVyczsKK30KKworCiBDU1NSdWxlKiBDU1NQYXJzZXI6OmNy
ZWF0ZVBhZ2VSdWxlKENTU1NlbGVjdG9yKiBwYWdlU2VsZWN0b3IpCiB7CiAgICAgLy8gRklYTUU6
IE1hcmdpbiBhdC1ydWxlcyBhcmUgaWdub3JlZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggNjYzMzA3MmVjZGZlOTg4
Nzc2YzZkNjE1OWMwYWE4MGVlOTQ2NmVmZi4uYjczZTI2ZTliZjZmMjFkYWYwM2U0NDgwMzI1NjA0
ZmZmM2Y1N2JkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTIwMyw2ICsyMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFBhc3NPd25QdHI8TWVkaWFRdWVyeT4gc2lua0Zsb2F0aW5nTWVkaWFRdWVy
eShNZWRpYVF1ZXJ5Kik7CiAKICAgICAgICAgdm9pZCBhZGROYW1lc3BhY2UoY29uc3QgQXRvbWlj
U3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgdXJpKTsKKyAgICAgICAgQ1NTU2Vs
ZWN0b3IqIHVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1Nl
bGVjdG9yKik7CiAKICAgICAgICAgdm9pZCBpbnZhbGlkQmxvY2tIaXQoKTsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwCmluZGV4IGMxMzlkYmYxYjYxYmM1ODE3ZGQ3YjYwNGE2MjY3OWNhNGZhOTFlNzMuLjgzMGUx
MmM5NDY3ZDAxYmIzMTgyMTU5OTBkNTg2YzBlYzEyZWNhNjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAg
LTE0OCw4ICsxNDgsNiBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNldWRvVHlw
ZSB0eXBlKQogICAgIGNhc2UgUHNldWRvSW5wdXRTcGVlY2hCdXR0b246CiAgICAgICAgIHJldHVy
biBJTlBVVF9TUEVFQ0hfQlVUVE9OOwogI2VuZGlmCi0gICAgY2FzZSBQc2V1ZG9TbGlkZXJUaHVt
YjoKLSAgICAgICAgcmV0dXJuIFNMSURFUl9USFVNQjsKICAgICBjYXNlIFBzZXVkb1NlYXJjaENh
bmNlbEJ1dHRvbjoKICAgICAgICAgcmV0dXJuIFNFQVJDSF9DQU5DRUxfQlVUVE9OOwogICAgIGNh
c2UgUHNldWRvU2VhcmNoRGVjb3JhdGlvbjoKQEAgLTQxNyw3ICs0MTUsNiBAQCBzdGF0aWMgSGFz
aE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Q
c2V1ZG9UeXBlTWFwKAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWFy
Y2hSZXN1bHRzRGVjb3JhdGlvbiwgKCItd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24i
KSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlYXJjaFJlc3VsdHNC
dXR0b24sICgiLXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24iKSk7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdGlvbiwgKCJzZWxlY3Rpb24iKSk7Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNsaWRlclRodW1iLCAoIi13ZWJraXQt
c2xpZGVyLXRodW1iIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB0
YXJnZXQsICgidGFyZ2V0IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCB2aXNpdGVkLCAoInZpc2l0ZWQiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHdpbmRvd0luYWN0aXZlLCAoIndpbmRvdy1pbmFjdGl2ZSIpKTsKQEAgLTU0Niw3ICs1
NDMsNiBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBl
LT5zZXQoc2VhcmNoUmVzdWx0c0RlY29yYXRpb24uaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRv
U2VhcmNoUmVzdWx0c0RlY29yYXRpb24pOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQo
c2VhcmNoUmVzdWx0c0J1dHRvbi5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9TZWFyY2hSZXN1
bHRzQnV0dG9uKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHNlbGVjdGlvbi5pbXBs
KCksIENTU1NlbGVjdG9yOjpQc2V1ZG9TZWxlY3Rpb24pOwotICAgICAgICBuYW1lVG9Qc2V1ZG9U
eXBlLT5zZXQoc2xpZGVyVGh1bWIuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvU2xpZGVyVGh1
bWIpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQodGFyZ2V0LmltcGwoKSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb1RhcmdldCk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldCh2aXNp
dGVkLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zpc2l0ZWQpOwogICAgICAgICBuYW1lVG9Q
c2V1ZG9UeXBlLT5zZXQoZmlyc3RQYWdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0
UGFnZSk7CkBAIC02MzQsNyArNjMwLDYgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVk
b1R5cGUoKSBjb25zdAogICAgIGNhc2UgUHNldWRvU2VhcmNoUmVzdWx0c0RlY29yYXRpb246CiAg
ICAgY2FzZSBQc2V1ZG9TZWFyY2hSZXN1bHRzQnV0dG9uOgogICAgIGNhc2UgUHNldWRvU2VsZWN0
aW9uOgotICAgIGNhc2UgUHNldWRvU2xpZGVyVGh1bWI6CiAgICAgICAgIGVsZW1lbnQgPSB0cnVl
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBzZXVkb1Vua25vd246CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRl
eCAzNTNmYjVlMTc4NTFkZWYwMWQ0ZjE1YmRmNDBhYzk2YjBkM2U1NDhmLi44ZDM4ODRlMjMyNjc0
ZGM3YTdiM2M2MTRlZTVkNzM3NGViNGJhMTY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTk4LDYgKzk4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgSHlwaGVuLAogICAgICAgICAgICAg
UHNldWRvQ2xhc3MsCiAgICAgICAgICAgICBQc2V1ZG9FbGVtZW50LAorICAgICAgICAgICAgUHNl
dWRvU2hhZG93RWxlbWVudCwKICAgICAgICAgICAgIENvbnRhaW4sIC8vIGNzczM6IEVbZm9vKj0i
YmFyIl0KICAgICAgICAgICAgIEJlZ2luLCAvLyBjc3MzOiBFW2Zvb149ImJhciJdCiAgICAgICAg
ICAgICBFbmQsIC8vIGNzczM6IEVbZm9vJD0iYmFyIl0KQEAgLTEwOSw3ICsxMTAsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBDaGlsZCwKICAgICAgICAgICAgIERpcmVjdEFk
amFjZW50LAogICAgICAgICAgICAgSW5kaXJlY3RBZGphY2VudCwKLSAgICAgICAgICAgIFN1YlNl
bGVjdG9yCisgICAgICAgICAgICBTdWJTZWxlY3RvciwKKyAgICAgICAgICAgIFNoYWRvd0hvc3QK
ICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIFBzZXVkb1R5cGUgewpAQCAtMTc3LDcgKzE3OSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb05vQnV0dG9uLAogICAg
ICAgICAgICAgUHNldWRvU2VsZWN0aW9uLAogICAgICAgICAgICAgUHNldWRvRmlsZVVwbG9hZEJ1
dHRvbiwKLSAgICAgICAgICAgIFBzZXVkb1NsaWRlclRodW1iLAogICAgICAgICAgICAgUHNldWRv
U2VhcmNoQ2FuY2VsQnV0dG9uLAogICAgICAgICAgICAgUHNldWRvU2VhcmNoRGVjb3JhdGlvbiwK
ICAgICAgICAgICAgIFBzZXVkb1NlYXJjaFJlc3VsdHNEZWNvcmF0aW9uLApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAppbmRleCBlZGIyMTZmNWFkMzllZTg5ZDhhMmJmY2IyOTY2NWE3MGZmZTc0NTRk
Li5iMDc5ODAyMWIyZGFmNzYzY2ZjYTkxYTk5ZWFiMWZjNTgxNjJkMWQzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcApAQCAtNDI0LDYgKzQyNCw3IEBAIHB1YmxpYzoKICAgICBDU1NSdWxlRGF0
YUxpc3QqIGdldElEUnVsZXMoQXRvbWljU3RyaW5nSW1wbCoga2V5KSB7IHJldHVybiBtX2lkUnVs
ZXMuZ2V0KGtleSk7IH0KICAgICBDU1NSdWxlRGF0YUxpc3QqIGdldENsYXNzUnVsZXMoQXRvbWlj
U3RyaW5nSW1wbCoga2V5KSB7IHJldHVybiBtX2NsYXNzUnVsZXMuZ2V0KGtleSk7IH0KICAgICBD
U1NSdWxlRGF0YUxpc3QqIGdldFRhZ1J1bGVzKEF0b21pY1N0cmluZ0ltcGwqIGtleSkgeyByZXR1
cm4gbV90YWdSdWxlcy5nZXQoa2V5KTsgfQorICAgIENTU1J1bGVEYXRhTGlzdCogZ2V0UHNldWRv
UnVsZXMoQXRvbWljU3RyaW5nSW1wbCoga2V5KSB7IHJldHVybiBtX3BzZXVkb1J1bGVzLmdldChr
ZXkpOyB9CiAgICAgQ1NTUnVsZURhdGFMaXN0KiBnZXRVbml2ZXJzYWxSdWxlcygpIHsgcmV0dXJu
IG1fdW5pdmVyc2FsUnVsZXMuZ2V0KCk7IH0KICAgICBDU1NSdWxlRGF0YUxpc3QqIGdldFBhZ2VS
dWxlcygpIHsgcmV0dXJuIG1fcGFnZVJ1bGVzLmdldCgpOyB9CiAgICAgCkBAIC00MzEsNiArNDMy
LDcgQEAgcHVibGljOgogICAgIEF0b21SdWxlTWFwIG1faWRSdWxlczsKICAgICBBdG9tUnVsZU1h
cCBtX2NsYXNzUnVsZXM7CiAgICAgQXRvbVJ1bGVNYXAgbV90YWdSdWxlczsKKyAgICBBdG9tUnVs
ZU1hcCBtX3BzZXVkb1J1bGVzOwogICAgIE93blB0cjxDU1NSdWxlRGF0YUxpc3Q+IG1fdW5pdmVy
c2FsUnVsZXM7CiAgICAgT3duUHRyPENTU1J1bGVEYXRhTGlzdD4gbV9wYWdlUnVsZXM7CiAgICAg
dW5zaWduZWQgbV9ydWxlQ291bnQ7CkBAIC02NTgsNiArNjYwLDEwIEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6bWF0Y2hSdWxlcyhDU1NSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRl
eCwgaW50JiBsCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAg
ICAgICAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldENsYXNzUnVsZXMoY2xhc3NOYW1l
c1tpXS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgaW5jbHVkZUVtcHR5
UnVsZXMpOwogICAgIH0KKyAgICBpZiAoIW1fZWxlbWVudC0+c2hhZG93UHNldWRvSWQoKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fc3R5bGVkRWxlbWVudCk7CisgICAgICAgIG1hdGNo
UnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRQc2V1ZG9SdWxlcyhtX2VsZW1lbnQtPnNoYWRvd1BzZXVk
b0lkKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVFbXB0
eVJ1bGVzKTsKKyAgICB9CiAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldFRhZ1J1bGVz
KG1fZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxl
SW5kZXgsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICBtYXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+
Z2V0VW5pdmVyc2FsUnVsZXMoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKICAgICAKQEAgLTIwNTEsNiArMjA1NywxNCBAQCBDU1NTdHlsZVNlbGVj
dG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tTZWxlY3RvcgogICAgICAgICAgICAgICAgICEoKFJlbmRlclNjcm9sbGJhcjo6c2Nyb2xsYmFy
Rm9yU3R5bGVSZXNvbHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09STkVSIHx8
IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpFUikgJiYgc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21w
bGV0ZWx5OwogICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3Rv
ckF0dHJzLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGVsZW1lbnRTdHls
ZSwgZWxlbWVudFBhcmVudFN0eWxlKTsKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93
SG9zdDoKKyAgICAgICAgeworICAgICAgICAgICAgTm9kZSogc2hhZG93SG9zdE5vZGUgPSBlLT5z
aGFkb3dBbmNlc3Rvck5vZGUoKTsKKyAgICAgICAgICAgIGlmIChzaGFkb3dIb3N0Tm9kZSA9PSBl
IHx8ICFzaGFkb3dIb3N0Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAgICAgIGUgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4oc2hhZG93SG9zdE5vZGUpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2Vs
ZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3Vu
dGVyZWRMaW5rKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBTZWxlY3RvckZhaWxz
Q29tcGxldGVseTsKQEAgLTI4MzEsMTIgKzI4NDUsMTcgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRS
dWxlKENTU1N0eWxlUnVsZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbCkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAgCisgICAgaWYgKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvU2hhZG93RWxlbWVudCkgeworICAgICAgICBhZGRUb1J1bGVTZXQoc2VsLT5tX3ZhbHVlLmlt
cGwoKSwgbV9wc2V1ZG9SdWxlcywgcnVsZSwgc2VsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gc2VsLT5tX3RhZy5sb2NhbE5h
bWUoKTsKICAgICBpZiAobG9jYWxOYW1lICE9IHN0YXJBdG9tKSB7CiAgICAgICAgIGFkZFRvUnVs
ZVNldChsb2NhbE5hbWUuaW1wbCgpLCBtX3RhZ1J1bGVzLCBydWxlLCBzZWwpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgLy8gSnVzdCBwdXQgaXQgaW4gdGhlIHVuaXZlcnNh
bCBydWxlIHNldC4KICAgICBpZiAoIW1fdW5pdmVyc2FsUnVsZXMpCiAgICAgICAgIG1fdW5pdmVy
c2FsUnVsZXMgPSBhZG9wdFB0cihuZXcgQ1NTUnVsZURhdGFMaXN0KG1fcnVsZUNvdW50KyssIHJ1
bGUsIHNlbCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvV2ViQ29yZS9k
b20vRWxlbWVudC5oCmluZGV4IDliYWQ2NmZjZmQ0ZTYyZGJhMmRkZDA3YmJiN2U2YTVmNTc3MjI2
MzguLjZhYmZhMmIzNmYwZDM3ZGNjNzM5ZDJlOThmYWZiMWQ5NDgzYjQzODUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTIy
Nyw2ICsyMjcsNyBAQCBwdWJsaWM6CiAKICAgICBOb2RlKiBzaGFkb3dSb290KCk7CiAgICAgdm9p
ZCBzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8Tm9kZT4pOworICAgIHZpcnR1YWwgQXRvbWljU3Ry
aW5nIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAKICAgICBSZW5kZXJTdHlsZSogY29tcHV0ZWRT
dHlsZShQc2V1ZG9JZCA9IE5PUFNFVURPKTsKIApAQCAtNTA0LDYgKzUwNSwxMSBAQCBpbmxpbmUg
dm9pZCBFbGVtZW50OjpzZXRJZEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
ICAgIHNldEF0dHJpYnV0ZShkb2N1bWVudCgpLT5pZEF0dHJpYnV0ZU5hbWUoKSwgdmFsdWUpOwog
fQogCitpbmxpbmUgQXRvbWljU3RyaW5nIEVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gQXRvbWljU3RyaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
aCBiL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKaW5kZXggODIwNTc0
NjY0YzNlY2FmNWRiNzQ2ZmI0YWNiNWY5OTRlY2Q4OWUzZi4uNTIyMGYyYmRhZWYwY2FhMzY4ZTJi
MmViMDBhZWI2MDExZWY3Nzk1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjZGVmaW5lIFNsaWRlclRodW1iRWxlbWVudF9oCiAK
ICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMu
aCIKICNpbmNsdWRlICJTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IApAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKKyAgICB2aXJ0
dWFsIEF0b21pY1N0cmluZyBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCiBwcml2YXRlOiAgICAg
ICAgCiAgICAgU2xpZGVyVGh1bWJFbGVtZW50KEhUTUxFbGVtZW50KiBzaGFkb3dQYXJlbnQpOwpA
QCAtNjksNiArNzEsMTIgQEAgaW5saW5lIFBhc3NSZWZQdHI8U2xpZGVyVGh1bWJFbGVtZW50PiBT
bGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZShIVE1MRWxlbWVudCogc2gKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNsaWRlclRodW1iRWxlbWVudChzaGFkb3dQYXJlbnQpKTsKIH0KIAoraW5saW5l
IEF0b21pY1N0cmluZyBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2xpZGVyVGh1bWIsICgi
LXdlYmtpdC1zbGlkZXItdGh1bWIiKSk7CisgICAgcmV0dXJuIHNsaWRlclRodW1iOworfQorCiB9
CiAKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5kZXggYjczYTFhY2FhOWU2MjRjYTE4
Njg2Yzc3NmViODg2MzQwYzcwMTJlMi4uN2E0ODBhNTg0MDM2YWFkN2NiMGIxNDhiMGUzZjlkOWNm
NjI0YmU1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVz
LmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKQEAgLTExMiwy
OSArMTEzLDE5IEBAIHZvaWQgUmVuZGVyU2xpZGVyOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0CiAKIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IFJlbmRlclNsaWRlcjo6Y3JlYXRlVGh1bWJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUpCiB7Ci0gICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZTsKLSAgICBSZW5k
ZXJTdHlsZSogcHNldWRvU3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShTTElERVJfVEhVTUIp
OwotICAgIGlmIChwc2V1ZG9TdHlsZSkKLSAgICAgICAgLy8gV2UgbWF5IGJlIHNoYXJpbmcgc3R5
bGUgd2l0aCBhbm90aGVyIHNsaWRlciwgYnV0IHdlIG11c3Qgbm90IHNoYXJlIHRoZSB0aHVtYiBz
dHlsZS4KLSAgICAgICAgc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUocHNldWRvU3R5bGUpOwot
ICAgIGVsc2UKLSAgICAgICAgc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0KLSAgICBp
ZiAocGFyZW50U3R5bGUpCi0gICAgICAgIHN0eWxlLT5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7
Ci0KLSAgICBzdHlsZS0+c2V0RGlzcGxheShCTE9DSyk7CisgICAgUmVmUHRyPFJlbmRlclN0eWxl
PiB0aHVtYlN0eWxlID0gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvckVsZW1l
bnQobV90aHVtYi5nZXQoKSwgc3R5bGUoKSwgZmFsc2UpOworICAgIHRodW1iU3R5bGUtPnNldERp
c3BsYXkoQkxPQ0spOwogCiAgICAgaWYgKHBhcmVudFN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gU2xp
ZGVyVmVydGljYWxQYXJ0KQotICAgICAgICBzdHlsZS0+c2V0QXBwZWFyYW5jZShTbGlkZXJUaHVt
YlZlcnRpY2FsUGFydCk7CisgICAgICAgIHRodW1iU3R5bGUtPnNldEFwcGVhcmFuY2UoU2xpZGVy
VGh1bWJWZXJ0aWNhbFBhcnQpOwogICAgIGVsc2UgaWYgKHBhcmVudFN0eWxlLT5hcHBlYXJhbmNl
KCkgPT0gU2xpZGVySG9yaXpvbnRhbFBhcnQpCi0gICAgICAgIHN0eWxlLT5zZXRBcHBlYXJhbmNl
KFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQpOworICAgICAgICB0aHVtYlN0eWxlLT5zZXRBcHBl
YXJhbmNlKFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQpOwogICAgIGVsc2UgaWYgKHBhcmVudFN0
eWxlLT5hcHBlYXJhbmNlKCkgPT0gTWVkaWFTbGlkZXJQYXJ0KQotICAgICAgICBzdHlsZS0+c2V0
QXBwZWFyYW5jZShNZWRpYVNsaWRlclRodW1iUGFydCk7CisgICAgICAgIHRodW1iU3R5bGUtPnNl
dEFwcGVhcmFuY2UoTWVkaWFTbGlkZXJUaHVtYlBhcnQpOwogICAgIGVsc2UgaWYgKHBhcmVudFN0
eWxlLT5hcHBlYXJhbmNlKCkgPT0gTWVkaWFWb2x1bWVTbGlkZXJQYXJ0KQotICAgICAgICBzdHls
ZS0+c2V0QXBwZWFyYW5jZShNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydCk7CisgICAgICAgIHRo
dW1iU3R5bGUtPnNldEFwcGVhcmFuY2UoTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQpOwogCi0g
ICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdGh1bWJTdHlsZS5yZWxlYXNl
KCk7CiB9CiAKIEludFJlY3QgUmVuZGVyU2xpZGVyOjp0aHVtYlJlY3QoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78126</attachid>
            <date>2011-01-06 09:38:27 -0800</date>
            <delta_ts>2011-01-07 13:18:38 -0800</delta_ts>
            <desc>WIP: Serialization almost works.</desc>
            <filename>bug-46595-20110106093825.patch</filename>
            <type>text/plain</type>
            <size>18017</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWY4ZDk3MjU3YzY2M2UwOGQxOWE1MjEzZDY1NTkzNGE1YWEzZWE1YS4uYWY1OWJkNjZmYTQ2NTkw
NmQzNmZmZmNiMzAwOTQ5YWY4ZTE2MzU2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wMS0wNSAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgcHNldWRvLXN0eWxlIHJlc29sdXRp
b24gbGVzcyBoYXJkLWNvZGVkIHdoZW4gdXNlZCB0byBzZWxlY3QgYSBzaGFkb3cgbm9kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTUKKworICAg
ICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6
CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUpOgorICAgICAgICAqIGNzcy9DU1NQ
YXJzZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKToKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVUb1BzZXVk
b1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9U
eXBlKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlU2V0OjpnZXRQc2V1ZG9S
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlU2V0OjphZGRSdWxlKToKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hhZG93
UHNldWRvSWQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTbGlkZXI6OmNyZWF0ZVRodW1iU3R5bGUpOgorCiAyMDExLTAxLTA0ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4gYW5kIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueQppbmRleCAyMDdmZGY1MWQxNzZlM2U1MGQ4NTdiMjk2MDBkOWE2MzA4YzkyMzE3Li5lNWI3
ZGJiYjA1NDc5NGQ3ZGU1MzNmZGU3M2M4ZjUyMzg1YjdlN2ExIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC05MDAs
MTcgKzkwMCwxMyBAQCBzaW1wbGVfc2VsZWN0b3I6CiAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxp
ZmllZE5hbWUobnVsbEF0b20sICQxLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOwogICAgIH0KICAg
ICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0gJDI7Ci0gICAg
ICAgIGlmICgkJCkgewotICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NT
UGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUo
bnVsbEF0b20sICQxLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOwotICAgICAgICB9CisgICAgICAg
ICQkID0gJDIgPyBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT51cGRhdGVTcGVjaWZp
ZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJDIpIDogMDsKICAgICB9CiAgICAgfCBz
cGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDE7CiAgICAgICAgIENTU1BhcnNlciogcCA9
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgIGlmICgkJCAmJiBwLT5t
X2RlZmF1bHROYW1lc3BhY2UgIT0gc3RhckF0b20pCi0gICAgICAgICAgICAkJC0+bV90YWcgPSBR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKTsK
KyAgICAgICAgaWYgKCQkKQorICAgICAgICAgICAgJCQgPSBwLT51cGRhdGVTcGVjaWZpZXJzV2l0
aEVsZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgJDEpOwogICAgIH0KICAgICB8IG5hbWVz
cGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgewogICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNw
YWNlUHJlZml4ID0gJDE7CkBAIC05MjMsMTYgKzkxOSw3IEBAIHNpbXBsZV9zZWxlY3RvcjoKICAg
ICAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQyLCBwLT5tX2Rl
ZmF1bHROYW1lc3BhY2UpOwogICAgIH0KICAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBlbGVtZW50
X25hbWUgc3BlY2lmaWVyX2xpc3QgewotICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoJCQp
IHsKLSAgICAgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSAkMTsKLSAgICAg
ICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0g
ICAgICAgICAgICBpZiAocC0+bV9zdHlsZVNoZWV0KQotICAgICAgICAgICAgICAgICQkLT5tX3Rh
ZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCAkMiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHAtPm1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNw
YWNlKG5hbWVzcGFjZVByZWZpeCkpOwotICAgICAgICAgICAgZWxzZSAvLyBGSVhNRTogU2hvdWxk
bid0IHRoaXMgY2FzZSBiZSBhbiBlcnJvcj8KLSAgICAgICAgICAgICAgICAkJC0+bV90YWcgPSBR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMiwgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKTsKLSAgICAg
ICAgfQorICAgICAgICAkJCA9ICQzID8gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+
dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQzKSA6IDA7CiAgICAgfQog
ICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAk
MjsKQEAgLTk3MCwxMyArOTU3LDIzIEBAIHNwZWNpZmllcl9saXN0OgogICAgICAgICBpZiAoISQy
KQogICAgICAgICAgICAgJCQgPSAwOwogICAgICAgICBlbHNlIGlmICgkMSkgewotICAgICAgICAg
ICAgJCQgPSAkMTsKICAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1Bh
cnNlcio+KHBhcnNlcik7Ci0gICAgICAgICAgICBDU1NTZWxlY3RvciogZW5kID0gJDE7Ci0gICAg
ICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAgICAgICAgICBDU1NTZWxlY3Rv
ciogZW5kOworICAgICAgICAgICAgQ1NTU2VsZWN0b3IqIGhpc3Rvcnk7CisgICAgICAgICAgICAv
LyBGSVhNRTogTUFLRSBTVVJFIFRIQVQgSVQgSVMgSU5WQUxJRCBUTyBBREQgU1BFQ0lGSUVSUyBB
RlRFUiBQc2V1ZG9TaGFkb3dFbGVtZW50CisgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB1bmtu
b3duIHBzZXVkbyBlbGVtZW50IGFsd2F5cyBzdGF5cyBhdCB0aGUgdG9wIG9mIGhpc3RvcnkuCisg
ICAgICAgICAgICBpZiAoJDItPnVua25vd25Qc2V1ZG9FbGVtZW50KCkpIHsKKyAgICAgICAgICAg
ICAgICBlbmQgPSAkMjsKKyAgICAgICAgICAgICAgICBoaXN0b3J5ID0gJDE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVuZCA9ICQxOworICAgICAgICAgICAgICAgIGhp
c3RvcnkgPSAkMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICQkID0gZW5kOworICAgICAg
ICAgICAgd2hpbGUoZW5kLT50YWdIaXN0b3J5KCkpCiAgICAgICAgICAgICAgICAgZW5kID0gZW5k
LT50YWdIaXN0b3J5KCk7CiAgICAgICAgICAgICBlbmQtPm1fcmVsYXRpb24gPSBDU1NTZWxlY3Rv
cjo6U3ViU2VsZWN0b3I7Ci0gICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocC0+c2lua0Zs
b2F0aW5nU2VsZWN0b3IoJDIpKTsKKyAgICAgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShwLT5z
aW5rRmxvYXRpbmdTZWxlY3RvcihoaXN0b3J5KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBz
cGVjaWZpZXJfbGlzdCBlcnJvciB7CkBAIC0xMTQxLDkgKzExMzgsNyBAQCBwc2V1ZG86CiAgICAg
ICAgICQzLmxvd2VyKCk7CiAgICAgICAgICQkLT5tX3ZhbHVlID0gJDM7CiAgICAgICAgIENTU1Nl
bGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAgICBpZiAo
dHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAgICAgICAgICAgICQkID0gMDsK
LSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RMaW5lKSB7
CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdExpbmUpIHsKICAg
ICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7
CiAgICAgICAgICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9IHAtPmRvY3VtZW50KCkpCiAgICAgICAg
ICAgICAgICAgZG9jLT5zZXRVc2VzRmlyc3RMaW5lUnVsZXModHJ1ZSk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCBmODE3YmI5ODc4YWI5ZjJjNjRiODM5NTQwNmE2NDRlZjRkODU4ZmRmLi41NmIyNmJkZDJhMWMz
ODIyZWY5MTVhZTg1ZWYyMTQ5ODk0YjdiMjZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTU5MjUsNiArNTky
NSwyOSBAQCB2b2lkIENTU1BhcnNlcjo6YWRkTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYg
cHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIHVyaQogICAgIG1fc3R5bGVTaGVldC0+YWRkTmFt
ZXNwYWNlKHRoaXMsIHByZWZpeCwgdXJpKTsKIH0KIAorQ1NTU2VsZWN0b3IqIENTU1BhcnNlcjo6
dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTU2VsZWN0b3Iq
IHNwZWNpZmllcnMpCit7CisgICAgQXRvbWljU3RyaW5nIGRldGVybWluZWROYW1lc3BhY2UgPSBu
YW1lc3BhY2VQcmVmaXggIT0gbnVsbEF0b20gJiYgbV9zdHlsZVNoZWV0ID8gbV9zdHlsZVNoZWV0
LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSA6IG1fZGVmYXVsdE5hbWVzcGFj
ZTsKKyAgICBRdWFsaWZpZWROYW1lIHRhZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4
LCBlbGVtZW50TmFtZSwgZGV0ZXJtaW5lZE5hbWVzcGFjZSk7CisgICAgaWYgKHNwZWNpZmllcnMt
PnVua25vd25Qc2V1ZG9FbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBk
b2N1bWVudCgpKQorICAgICAgICAgICAgZG9jLT5zZXRVc2VzRGVzY2VuZGFudFJ1bGVzKHRydWUp
OworCisgICAgICAgIHNwZWNpZmllcnMtPm1fcmVsYXRpb24gPSBDU1NTZWxlY3Rvcjo6U2hhZG93
RGVzY2VuZGFudDsKKyAgICAgICAgaWYgKENTU1NlbGVjdG9yKiBoaXN0b3J5ID0gc3BlY2lmaWVy
cy0+dGFnSGlzdG9yeSgpKQorICAgICAgICAgICAgaGlzdG9yeS0+bV90YWcgPSB0YWc7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgQ1NTU2VsZWN0b3IqIGVsZW1lbnROYW1lU2VsZWN0b3Ig
PSBmYXN0TmV3PENTU1NlbGVjdG9yPigpOworICAgICAgICAgICAgZWxlbWVudE5hbWVTZWxlY3Rv
ci0+bV90YWcgPSB0YWc7CisgICAgICAgICAgICBzcGVjaWZpZXJzLT5zZXRUYWdIaXN0b3J5KGVs
ZW1lbnROYW1lU2VsZWN0b3IpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHNwZWNp
ZmllcnMtPm1fdGFnID0gdGFnOworCisgICAgcmV0dXJuIHNwZWNpZmllcnM7Cit9CisKKwogQ1NT
UnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZShDU1NTZWxlY3RvciogcGFnZVNlbGVjdG9y
KQogewogICAgIC8vIEZJWE1FOiBNYXJnaW4gYXQtcnVsZXMgYXJlIGlnbm9yZWQuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmlu
ZGV4IDY2MzMwNzJlY2RmZTk4ODc3NmM2ZDYxNTljMGFhODBlZTk0NjZlZmYuLmI3M2UyNmU5YmY2
ZjIxZGFmMDNlNDQ4MDMyNTYwNGZmZjNmNTdiZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yMDMsNiArMjAzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzT3duUHRyPE1lZGlhUXVlcnk+IHNp
bmtGbG9hdGluZ01lZGlhUXVlcnkoTWVkaWFRdWVyeSopOwogCiAgICAgICAgIHZvaWQgYWRkTmFt
ZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIHVy
aSk7CisgICAgICAgIENTU1NlbGVjdG9yKiB1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcm
IGVsZW1lbnROYW1lLCBDU1NTZWxlY3RvciopOwogCiAgICAgICAgIHZvaWQgaW52YWxpZEJsb2Nr
SGl0KCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBjMTM5ZGJmMWI2MWJjNTgxN2RkN2I2MDRhNjI2
NzljYTRmYTkxZTczLi44MzBlMTJjOTQ2N2QwMWJiMzE4MjE1OTkwZDU4NmMwZWMxMmVjYTYyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuY3BwCkBAIC0xNDgsOCArMTQ4LDYgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6
OnBzZXVkb0lkKFBzZXVkb1R5cGUgdHlwZSkKICAgICBjYXNlIFBzZXVkb0lucHV0U3BlZWNoQnV0
dG9uOgogICAgICAgICByZXR1cm4gSU5QVVRfU1BFRUNIX0JVVFRPTjsKICNlbmRpZgotICAgIGNh
c2UgUHNldWRvU2xpZGVyVGh1bWI6Ci0gICAgICAgIHJldHVybiBTTElERVJfVEhVTUI7CiAgICAg
Y2FzZSBQc2V1ZG9TZWFyY2hDYW5jZWxCdXR0b246CiAgICAgICAgIHJldHVybiBTRUFSQ0hfQ0FO
Q0VMX0JVVFRPTjsKICAgICBjYXNlIFBzZXVkb1NlYXJjaERlY29yYXRpb246CkBAIC00MTcsNyAr
NDE1LDYgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQ
c2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlwZU1hcCgKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgc2VhcmNoUmVzdWx0c0RlY29yYXRpb24sICgiLXdlYmtpdC1zZWFyY2gt
cmVzdWx0cy1kZWNvcmF0aW9uIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBzZWFyY2hSZXN1bHRzQnV0dG9uLCAoIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9u
IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWxlY3Rpb24sICgi
c2VsZWN0aW9uIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzbGlk
ZXJUaHVtYiwgKCItd2Via2l0LXNsaWRlci10aHVtYiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgdGFyZ2V0LCAoInRhcmdldCIpKTsKICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgdmlzaXRlZCwgKCJ2aXNpdGVkIikpOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB3aW5kb3dJbmFjdGl2ZSwgKCJ3aW5kb3ctaW5hY3Rp
dmUiKSk7CkBAIC01NDYsNyArNTQzLDYgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1w
bCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlwZU1hcCgKICAgICAg
ICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHNlYXJjaFJlc3VsdHNEZWNvcmF0aW9uLmltcGwoKSwg
Q1NTU2VsZWN0b3I6OlBzZXVkb1NlYXJjaFJlc3VsdHNEZWNvcmF0aW9uKTsKICAgICAgICAgbmFt
ZVRvUHNldWRvVHlwZS0+c2V0KHNlYXJjaFJlc3VsdHNCdXR0b24uaW1wbCgpLCBDU1NTZWxlY3Rv
cjo6UHNldWRvU2VhcmNoUmVzdWx0c0J1dHRvbik7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUt
PnNldChzZWxlY3Rpb24uaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvU2VsZWN0aW9uKTsKLSAg
ICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHNsaWRlclRodW1iLmltcGwoKSwgQ1NTU2VsZWN0
b3I6OlBzZXVkb1NsaWRlclRodW1iKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHRh
cmdldC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9UYXJnZXQpOwogICAgICAgICBuYW1lVG9Q
c2V1ZG9UeXBlLT5zZXQodmlzaXRlZC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVk
KTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZpcnN0UGFnZS5pbXBsKCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9GaXJzdFBhZ2UpOwpAQCAtNjM0LDcgKzYzMCw2IEBAIHZvaWQgQ1NTU2Vs
ZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICBjYXNlIFBzZXVkb1NlYXJjaFJl
c3VsdHNEZWNvcmF0aW9uOgogICAgIGNhc2UgUHNldWRvU2VhcmNoUmVzdWx0c0J1dHRvbjoKICAg
ICBjYXNlIFBzZXVkb1NlbGVjdGlvbjoKLSAgICBjYXNlIFBzZXVkb1NsaWRlclRodW1iOgogICAg
ICAgICBlbGVtZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9Vbmtu
b3duOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmgKaW5kZXggMzUzZmI1ZTE3ODUxZGVmMDFkNGYxNWJkZjQwYWM5NmIwZDNl
NTQ4Zi4uMTgzNTUxNTI5NGU0OTNhMjhkZWY2ZTEzNTc4NDIxOGRlNDRhNjQxYiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5oCkBAIC0xMDksNyArMTA5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
Q2hpbGQsCiAgICAgICAgICAgICBEaXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIEluZGlyZWN0
QWRqYWNlbnQsCi0gICAgICAgICAgICBTdWJTZWxlY3RvcgorICAgICAgICAgICAgU3ViU2VsZWN0
b3IsCisgICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50CiAgICAgICAgIH07CiAKICAgICAgICAg
ZW51bSBQc2V1ZG9UeXBlIHsKQEAgLTE3Nyw3ICsxNzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICBQc2V1ZG9Ob0J1dHRvbiwKICAgICAgICAgICAgIFBzZXVkb1NlbGVjdGlv
biwKICAgICAgICAgICAgIFBzZXVkb0ZpbGVVcGxvYWRCdXR0b24sCi0gICAgICAgICAgICBQc2V1
ZG9TbGlkZXJUaHVtYiwKICAgICAgICAgICAgIFBzZXVkb1NlYXJjaENhbmNlbEJ1dHRvbiwKICAg
ICAgICAgICAgIFBzZXVkb1NlYXJjaERlY29yYXRpb24sCiAgICAgICAgICAgICBQc2V1ZG9TZWFy
Y2hSZXN1bHRzRGVjb3JhdGlvbiwKQEAgLTI3Nyw2ICsyNzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICAgICAgZXh0cmFjdFBzZXVkb1R5cGUoKTsKICAgICAgICAgICAgIHJl
dHVybiBtX21hdGNoID09IFBzZXVkb0VsZW1lbnQ7CiAgICAgICAgIH0KKyAgICAgICAgYm9vbCB1
bmtub3duUHNldWRvRWxlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIFJlbGF0aW9uIHJlbGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRpb24pOyB9CiAK
QEAgLTM0NCw2ICszNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBRdWFsaWZp
ZWROYW1lIG1fdGFnOwogICAgIH07CiAKK2lubGluZSBib29sIENTU1NlbGVjdG9yOjp1bmtub3du
UHNldWRvRWxlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWF0Y2ggPT0gUHNldWRvRWxl
bWVudCAmJiBtX3BzZXVkb1R5cGUgPT0gUHNldWRvVW5rbm93bjsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQ1NTU2VsZWN0b3JfaApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAppbmRleCBlZGIyMTZmNWFkMzllZTg5ZDhhMmJmY2IyOTY2NWE3MGZmZTc0NTRkLi5mN2Rl
ODdmZmVhNTAyZmEzNWMxYjU3NzdhNzg0MWY1YTkyZmZhMzgxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcApAQCAtNDI0LDYgKzQyNCw3IEBAIHB1YmxpYzoKICAgICBDU1NSdWxlRGF0YUxpc3Qq
IGdldElEUnVsZXMoQXRvbWljU3RyaW5nSW1wbCoga2V5KSB7IHJldHVybiBtX2lkUnVsZXMuZ2V0
KGtleSk7IH0KICAgICBDU1NSdWxlRGF0YUxpc3QqIGdldENsYXNzUnVsZXMoQXRvbWljU3RyaW5n
SW1wbCoga2V5KSB7IHJldHVybiBtX2NsYXNzUnVsZXMuZ2V0KGtleSk7IH0KICAgICBDU1NSdWxl
RGF0YUxpc3QqIGdldFRhZ1J1bGVzKEF0b21pY1N0cmluZ0ltcGwqIGtleSkgeyByZXR1cm4gbV90
YWdSdWxlcy5nZXQoa2V5KTsgfQorICAgIENTU1J1bGVEYXRhTGlzdCogZ2V0UHNldWRvUnVsZXMo
QXRvbWljU3RyaW5nSW1wbCoga2V5KSB7IHJldHVybiBtX3BzZXVkb1J1bGVzLmdldChrZXkpOyB9
CiAgICAgQ1NTUnVsZURhdGFMaXN0KiBnZXRVbml2ZXJzYWxSdWxlcygpIHsgcmV0dXJuIG1fdW5p
dmVyc2FsUnVsZXMuZ2V0KCk7IH0KICAgICBDU1NSdWxlRGF0YUxpc3QqIGdldFBhZ2VSdWxlcygp
IHsgcmV0dXJuIG1fcGFnZVJ1bGVzLmdldCgpOyB9CiAgICAgCkBAIC00MzEsNiArNDMyLDcgQEAg
cHVibGljOgogICAgIEF0b21SdWxlTWFwIG1faWRSdWxlczsKICAgICBBdG9tUnVsZU1hcCBtX2Ns
YXNzUnVsZXM7CiAgICAgQXRvbVJ1bGVNYXAgbV90YWdSdWxlczsKKyAgICBBdG9tUnVsZU1hcCBt
X3BzZXVkb1J1bGVzOwogICAgIE93blB0cjxDU1NSdWxlRGF0YUxpc3Q+IG1fdW5pdmVyc2FsUnVs
ZXM7CiAgICAgT3duUHRyPENTU1J1bGVEYXRhTGlzdD4gbV9wYWdlUnVsZXM7CiAgICAgdW5zaWdu
ZWQgbV9ydWxlQ291bnQ7CkBAIC02NTgsNiArNjYwLDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6bWF0Y2hSdWxlcyhDU1NSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50
JiBsCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAg
ICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldENsYXNzUnVsZXMoY2xhc3NOYW1lc1tpXS5p
bXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgaW5jbHVkZUVtcHR5UnVsZXMp
OwogICAgIH0KKyAgICBpZiAoIW1fZWxlbWVudC0+c2hhZG93UHNldWRvSWQoKS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgQVNTRVJUKG1fc3R5bGVkRWxlbWVudCk7CisgICAgICAgIG1hdGNoUnVsZXNG
b3JMaXN0KHJ1bGVzLT5nZXRQc2V1ZG9SdWxlcyhtX2VsZW1lbnQtPnNoYWRvd1BzZXVkb0lkKCku
aW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVFbXB0eVJ1bGVz
KTsKKyAgICB9CiAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldFRhZ1J1bGVzKG1fZWxl
bWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgs
IGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICBtYXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0VW5p
dmVyc2FsUnVsZXMoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVFbXB0
eVJ1bGVzKTsKICAgICAKQEAgLTIwNTEsNiArMjA1NywxNCBAQCBDU1NTdHlsZVNlbGVjdG9yOjpT
ZWxlY3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxl
Y3RvcgogICAgICAgICAgICAgICAgICEoKFJlbmRlclNjcm9sbGJhcjo6c2Nyb2xsYmFyRm9yU3R5
bGVSZXNvbHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09STkVSIHx8IGR5bmFt
aWNQc2V1ZG8gPT0gUkVTSVpFUikgJiYgc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5
OwogICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJz
LCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGVsZW1lbnRTdHlsZSwgZWxl
bWVudFBhcmVudFN0eWxlKTsKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2Vu
ZGFudDoKKyAgICAgICAgeworICAgICAgICAgICAgTm9kZSogc2hhZG93SG9zdE5vZGUgPSBlLT5z
aGFkb3dBbmNlc3Rvck5vZGUoKTsKKyAgICAgICAgICAgIGlmIChzaGFkb3dIb3N0Tm9kZSA9PSBl
IHx8ICFzaGFkb3dIb3N0Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAgICAgIGUgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4oc2hhZG93SG9zdE5vZGUpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2Vs
ZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3Vu
dGVyZWRMaW5rKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBTZWxlY3RvckZhaWxz
Q29tcGxldGVseTsKQEAgLTI3MDUsMTIgKzI3MTksOCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6
OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVt
ZQogICAgICAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGUtPmRvY3VtZW50KCkpCiAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQtPnNldFVzZXNGaXJzdExldHRlclJ1bGVzKHRydWUpOwog
ICAgICAgICB9Ci0gICAgICAgIGlmIChwc2V1ZG9JZCAhPSBOT1BTRVVETykgeworICAgICAgICBp
ZiAocHNldWRvSWQgIT0gTk9QU0VVRE8pCiAgICAgICAgICAgICBkeW5hbWljUHNldWRvID0gcHNl
dWRvSWQ7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyAj
IyMgYWRkIHRoZSByZXN0IG9mIHRoZSBjaGVja3MuLi4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4
MzEsMTIgKzI4NDEsMTcgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlKENTU1N0eWxlUnVsZSog
cnVsZSwgQ1NTU2VsZWN0b3IqIHNlbCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgCisg
ICAgaWYgKHNlbC0+dW5rbm93blBzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICBhZGRUb1J1bGVT
ZXQoc2VsLT5tX3ZhbHVlLmltcGwoKSwgbV9wc2V1ZG9SdWxlcywgcnVsZSwgc2VsKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0g
c2VsLT5tX3RhZy5sb2NhbE5hbWUoKTsKICAgICBpZiAobG9jYWxOYW1lICE9IHN0YXJBdG9tKSB7
CiAgICAgICAgIGFkZFRvUnVsZVNldChsb2NhbE5hbWUuaW1wbCgpLCBtX3RhZ1J1bGVzLCBydWxl
LCBzZWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgLy8gSnVzdCBwdXQg
aXQgaW4gdGhlIHVuaXZlcnNhbCBydWxlIHNldC4KICAgICBpZiAoIW1fdW5pdmVyc2FsUnVsZXMp
CiAgICAgICAgIG1fdW5pdmVyc2FsUnVsZXMgPSBhZG9wdFB0cihuZXcgQ1NTUnVsZURhdGFMaXN0
KG1fcnVsZUNvdW50KyssIHJ1bGUsIHNlbCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxl
bWVudC5oIGIvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDliYWQ2NmZjZmQ0ZTYyZGJhMmRk
ZDA3YmJiN2U2YTVmNTc3MjI2MzguLjZhYmZhMmIzNmYwZDM3ZGNjNzM5ZDJlOThmYWZiMWQ5NDgz
YjQzODUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKQEAgLTIyNyw2ICsyMjcsNyBAQCBwdWJsaWM6CiAKICAgICBOb2RlKiBzaGFk
b3dSb290KCk7CiAgICAgdm9pZCBzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8Tm9kZT4pOworICAg
IHZpcnR1YWwgQXRvbWljU3RyaW5nIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAKICAgICBSZW5k
ZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IE5PUFNFVURPKTsKIApAQCAtNTA0LDYg
KzUwNSwxMSBAQCBpbmxpbmUgdm9pZCBFbGVtZW50OjpzZXRJZEF0dHJpYnV0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogICAgIHNldEF0dHJpYnV0ZShkb2N1bWVudCgpLT5pZEF0dHJpYnV0
ZU5hbWUoKSwgdmFsdWUpOwogfQogCitpbmxpbmUgQXRvbWljU3RyaW5nIEVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQXRvbWljU3RyaW5nKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmgKaW5kZXggODIwNTc0NjY0YzNlY2FmNWRiNzQ2ZmI0YWNiNWY5OTRlY2Q4OWUzZi4uNTIy
MGYyYmRhZWYwY2FhMzY4ZTJiMmViMDBhZWI2MDExZWY3Nzk1YyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjZGVmaW5lIFNsaWRl
clRodW1iRWxlbWVudF9oCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiUmVu
ZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2goKTsKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
OwogCiBwcml2YXRlOiAgICAgICAgCiAgICAgU2xpZGVyVGh1bWJFbGVtZW50KEhUTUxFbGVtZW50
KiBzaGFkb3dQYXJlbnQpOwpAQCAtNjksNiArNzEsMTIgQEAgaW5saW5lIFBhc3NSZWZQdHI8U2xp
ZGVyVGh1bWJFbGVtZW50PiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZShIVE1MRWxlbWVudCog
c2gKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNsaWRlclRodW1iRWxlbWVudChzaGFkb3dQYXJl
bnQpKTsKIH0KIAoraW5saW5lIEF0b21pY1N0cmluZyBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
Zywgc2xpZGVyVGh1bWIsICgiLXdlYmtpdC1zbGlkZXItdGh1bWIiKSk7CisgICAgcmV0dXJuIHNs
aWRlclRodW1iOworfQorCiB9CiAKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2xpZGVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5kZXgg
YjczYTFhY2FhOWU2MjRjYTE4Njg2Yzc3NmViODg2MzQwYzcwMTJlMi4uN2E0ODBhNTg0MDM2YWFk
N2NiMGIxNDhiMGUzZjlkOWNmNjI0YmU1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2xpZGVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3Bw
CkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEhh
bmRsZXIuaCIKQEAgLTExMiwyOSArMTEzLDE5IEBAIHZvaWQgUmVuZGVyU2xpZGVyOjpzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0CiAK
IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclNsaWRlcjo6Y3JlYXRlVGh1bWJTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCiB7Ci0gICAgUmVmUHRyPFJlbmRlclN0eWxl
PiBzdHlsZTsKLSAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9T
dHlsZShTTElERVJfVEhVTUIpOwotICAgIGlmIChwc2V1ZG9TdHlsZSkKLSAgICAgICAgLy8gV2Ug
bWF5IGJlIHNoYXJpbmcgc3R5bGUgd2l0aCBhbm90aGVyIHNsaWRlciwgYnV0IHdlIG11c3Qgbm90
IHNoYXJlIHRoZSB0aHVtYiBzdHlsZS4KLSAgICAgICAgc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xv
bmUocHNldWRvU3R5bGUpOwotICAgIGVsc2UKLSAgICAgICAgc3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlKCk7Ci0KLSAgICBpZiAocGFyZW50U3R5bGUpCi0gICAgICAgIHN0eWxlLT5pbmhlcml0
RnJvbShwYXJlbnRTdHlsZSk7Ci0KLSAgICBzdHlsZS0+c2V0RGlzcGxheShCTE9DSyk7CisgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiB0aHVtYlN0eWxlID0gZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3Rv
cigpLT5zdHlsZUZvckVsZW1lbnQobV90aHVtYi5nZXQoKSwgc3R5bGUoKSwgZmFsc2UpOworICAg
IHRodW1iU3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOwogCiAgICAgaWYgKHBhcmVudFN0eWxlLT5h
cHBlYXJhbmNlKCkgPT0gU2xpZGVyVmVydGljYWxQYXJ0KQotICAgICAgICBzdHlsZS0+c2V0QXBw
ZWFyYW5jZShTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCk7CisgICAgICAgIHRodW1iU3R5bGUtPnNl
dEFwcGVhcmFuY2UoU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpOwogICAgIGVsc2UgaWYgKHBhcmVu
dFN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVySG9yaXpvbnRhbFBhcnQpCi0gICAgICAgIHN0
eWxlLT5zZXRBcHBlYXJhbmNlKFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQpOworICAgICAgICB0
aHVtYlN0eWxlLT5zZXRBcHBlYXJhbmNlKFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQpOwogICAg
IGVsc2UgaWYgKHBhcmVudFN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gTWVkaWFTbGlkZXJQYXJ0KQot
ICAgICAgICBzdHlsZS0+c2V0QXBwZWFyYW5jZShNZWRpYVNsaWRlclRodW1iUGFydCk7CisgICAg
ICAgIHRodW1iU3R5bGUtPnNldEFwcGVhcmFuY2UoTWVkaWFTbGlkZXJUaHVtYlBhcnQpOwogICAg
IGVsc2UgaWYgKHBhcmVudFN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gTWVkaWFWb2x1bWVTbGlkZXJQ
YXJ0KQotICAgICAgICBzdHlsZS0+c2V0QXBwZWFyYW5jZShNZWRpYVZvbHVtZVNsaWRlclRodW1i
UGFydCk7CisgICAgICAgIHRodW1iU3R5bGUtPnNldEFwcGVhcmFuY2UoTWVkaWFWb2x1bWVTbGlk
ZXJUaHVtYlBhcnQpOwogCi0gICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4g
dGh1bWJTdHlsZS5yZWxlYXNlKCk7CiB9CiAKIEludFJlY3QgUmVuZGVyU2xpZGVyOjp0aHVtYlJl
Y3QoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78262</attachid>
            <date>2011-01-07 13:18:44 -0800</date>
            <delta_ts>2011-01-07 14:50:53 -0800</delta_ts>
            <desc>Ready for review</desc>
            <filename>bug-46595-20110107131842.patch</filename>
            <type>text/plain</type>
            <size>23915</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWY4ZDk3MjU3YzY2M2UwOGQxOWE1MjEzZDY1NTkzNGE1YWEzZWE1YS4uZDdjYzFjYjQwYjFmYzA2
MWI0ZTJhNmFjYzNmYWNmZTEyYjY2NDg2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMS0wMS0wNyAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgcHNldWRvLXN0eWxlIHJlc29sdXRp
b24gbGVzcyBoYXJkLWNvZGVkIHdoZW4gdXNlZCB0byBzZWxlY3QgYSBzaGFkb3cgbm9kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTUKKworICAg
ICAgICBFc3NlbnRpYWxseSBpbXBsZW1lbnRzIHRoZSBwbHVtYmluZyBmb3IgdGhlIFhCTDIgcHNl
dWRvIGF0dHJpYnV0ZToKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwNi94YmwyLyN0aGUt
cHNldWRvLWF0dHJpYnV0ZQorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisK
KyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OiBDaGFuZ2VkIHRvIGhhbmRsZSBzcGVjaWZpZXJf
bGlzdCBzdHJ1Y3R1cmUgd2l0aCB0aGUKKyAgICAgICAgICAgIENTU1BhcnNlcjo6dXBkYXRlU3Bl
Y2lmaWVyV2l0aEVsZW1lbnROYW1lIGhlbHBlciwgYWRkZWQgbG9naWMgdG8KKyAgICAgICAgICAg
IGtlZXAgdW5rbm93biBwc2V1ZG8tZWxlbWVudCBzZWxlY3RvcnMgYXQgdGhlIHRvcCBvZiB0aGUg
c2VsZWN0b3IgY2hhaW4sCisgICAgICAgICAgICBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgY2hlY2sg
Zm9yIHRoZW0gYW5kIGdyYWIgdGhlbSwgYW5kIGFsc28gYmVjYXVzZQorICAgICAgICAgICAgdGhl
eSB3b3VsZCBlaXRoZXIgbm90IG1hdGNoIGFueXRoaW5nIG9yIGFjdCBhcyBhIGRlc2NlbmRhbnQg
c2VsZWN0b3IKKyAgICAgICAgICAgIChkZXNjZW5kYW50IGludG8gYSBzaGFkb3cgRE9NIHN1YnRy
ZWUgdGhhdCBpcyksIG5vdCBhIHNwZWNpZmllci4KKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVt
ZW50TmFtZSk6IEdlbmVyYWxpemVkL2NvbWJpbmVkCisgICAgICAgICAgICB0aGUgbG9naWMgYWRk
aW5nIGVsZW1lbnQgbmFtZSB0byBzZWxlY3RvcnMgYW5kIGFkZGVkIHRoZSBzcGVjaWFsIGNhc2UK
KyAgICAgICAgICAgIHRvIGhhbmRsZSB1bmtub3duIHBzZXVkby1lbGVtZW50IHNlbGVjdG9ycy4K
KyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6IEFkZGVkIGRlZi4KKyAgICAgICAgKiBjc3MvQ1NT
U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKTog
UmVtb3ZlZCBhbnkgbWVudGlvbiBvZiBQc2V1ZG9TbGlkZXJUaHVtYi9TTElERVJfVEhVTUIuCisg
ICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFwKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOiBEaXR0by4KKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3IuaDogQWRkZWQgYSBuZXcgU2hhZG93RGVzY2VuZGFudCByZWxhdGlv
biB0eXBlLAorICAgICAgICAgICAgcmVtb3ZlZCBQc2V1ZG9TbGlkZXJUaHVtYiBkZWYuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNVbmtub3duUHNldWRvRWxlbWVudCk6IEFkZGVk
IGEgaGVscGVyIG1ldGhvZC4KKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9ySGFzVW5rbm93blBzZXVkb0VsZW1lbnRGdW5jdG9yOjpv
cGVyYXRvcigpKTogQWRkZWQgYSBmdW5jdG9yCisgICAgICAgICAgICB0byBjaGVjayBmb3IgYW4g
dW5rbm93biBwc2V1ZG8tZWxlbWVudCBpbiB0aGUgbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yTGlzdDo6aGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKTogQWRkZWQuCisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yTGlzdC5oOiBBZGRlZCBhIGRlZi4KKyAgICAgICAgKiBjc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlU2V0OjpnZXRQc2V1
ZG9SdWxlcyk6IEFkZGVkIGFjY2Vzc29yIHRvIHBzZXVkby1lbGVtZW50IGhhc2guCisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzKTogQWRkZWQgbWF0Y2hpbmcg
cHNldWRvIGVsZW1lbnRzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTogQWRkZWQgaGFuZGxpbmcKKyAgICAgICAgICAg
IG9mIFNoYWRvd0Rlc2NlbmRhbnQgcmVsYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOiBFbmFibGVkIGhh
bmRsaW5nCisgICAgICAgICAgICBvZiB1bmtub3duIHBzZXVkby1lbGVtZW50IHNlbGVjdG9ycy4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVTZXQ6OmFkZFJ1bGUpOiBBZGRlZCBwb3B1bGF0aW5n
IHVua25vd24gcHNldWRvLWVsZW1lbnQgaGFzaC4KKyAgICAgICAgKiBjc3MvaHRtbC5jc3M6Cisg
ICAgICAgIChpbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LXNsaWRlci10aHVtYik6IEFkZGVk
IHByZXZpb3VzbHktaGFyZC1jb2RlZAorICAgICAgICAgICAgZGlzcGxheTpibG9jay4KKyAgICAg
ICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hhZG93UHNl
dWRvSWQpOiBBZGRlZCBuZXcgdmlydHVhbCBtZXRob2QgdG8gYWxsb3cKKyAgICAgICAgICAgIGVs
ZW1lbnRzIHRvIHByb3ZpZGUgdGhlIHZhbHVlIG9mIHBzZXVkby1lbGVtZW50IHNlbGVjdG9yIHRo
ZXkgd291bGQgbWF0Y2guCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6cXVlcnlTZWxlY3Rvcik6IEFkZGVkIGNoZWNraW5nIGZvciB1bmtub3duIHBzZXVk
by1lbGVtZW50IHNlbGVjdG9ycywKKyAgICAgICAgICAgIHNvIHRoYXQgd2UgY2FuIHRocm93IGEg
U1lOVEFYX0VSUiBpZiBmb3VuZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0
b3JBbGwpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6c2hhZG93UHNldWRvSWQp
OiBBZGRlZCB0byByZXR1cm4gIi13ZWJraXQtc2xpZGVyLXRodW1iIjsKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU2xpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRlcjo6
Y3JlYXRlVGh1bWJTdHlsZSk6IENoYW5nZWQgdG8gdXNlIHRoZSBuZXcgc3R5bGVGb3JFbGVtZW50
IGxvZ2ljLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5o
OiBSZW1vdmVkIFNMSURFUl9USFVNQi4KKwogMjAxMS0wMS0wNCAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKaW5k
ZXggMjA3ZmRmNTFkMTc2ZTNlNTBkODU3YjI5NjAwZDlhNjMwOGM5MjMxNy4uZWM3M2Q2ZDZhYTU0
NTRjOTU1ZTE0MTQ0NTY2ZGEwYmFmNjgwMGIxOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55CisrKyBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtOTAxLDE2ICs5MDEs
MTMgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgIH0KICAgICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZp
ZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDI7Ci0gICAgICAgIGlmICgkJCkgewotICAgICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAgICAg
ICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwLT5tX2RlZmF1
bHROYW1lc3BhY2UpOwotICAgICAgICB9CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVu
dE5hbWUobnVsbEF0b20sICQxLCAkJCk7CiAgICAgfQogICAgIHwgc3BlY2lmaWVyX2xpc3Qgewog
ICAgICAgICAkJCA9ICQxOwotICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQ
YXJzZXIqPihwYXJzZXIpOwotICAgICAgICBpZiAoJCQgJiYgcC0+bV9kZWZhdWx0TmFtZXNwYWNl
ICE9IHN0YXJBdG9tKQotICAgICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxs
QXRvbSwgc3RhckF0b20sIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7CisgICAgICAgIGlmICgkJCkK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPnVwZGF0ZVNwZWNp
ZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCAkJCk7CiAgICAgfQogICAg
IHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSB7CiAgICAgICAgIEF0b21pY1N0cmlu
ZyBuYW1lc3BhY2VQcmVmaXggPSAkMTsKQEAgLTkyNCwxNSArOTIxLDggQEAgc2ltcGxlX3NlbGVj
dG9yOgogICAgIH0KICAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgc3BlY2lm
aWVyX2xpc3QgewogICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoJCQpIHsKLSAgICAgICAg
ICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSAkMTsKLSAgICAgICAgICAgIENTU1Bh
cnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgICAgICBp
ZiAocC0+bV9zdHlsZVNoZWV0KQotICAgICAgICAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmll
ZE5hbWUobmFtZXNwYWNlUHJlZml4LCAkMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHAtPm1fc3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFj
ZVByZWZpeCkpOwotICAgICAgICAgICAgZWxzZSAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMgY2Fz
ZSBiZSBhbiBlcnJvcj8KLSAgICAgICAgICAgICAgICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1l
KG51bGxBdG9tLCAkMiwgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKTsKLSAgICAgICAgfQorICAgICAg
ICBpZiAoJCQpCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT51
cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOwogICAgIH0KICAgICB8
IG5hbWVzcGFjZV9zZWxlY3RvciBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDI7CkBA
IC05NzAsMTMgKzk2MCwyMiBAQCBzcGVjaWZpZXJfbGlzdDoKICAgICAgICAgaWYgKCEkMikKICAg
ICAgICAgICAgICQkID0gMDsKICAgICAgICAgZWxzZSBpZiAoJDEpIHsKLSAgICAgICAgICAgICQk
ID0gJDE7CiAgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIq
PihwYXJzZXIpOwotICAgICAgICAgICAgQ1NTU2VsZWN0b3IqIGVuZCA9ICQxOwotICAgICAgICAg
ICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQorICAgICAgICAgICAgQ1NTU2VsZWN0b3IqIGVu
ZDsKKyAgICAgICAgICAgIENTU1NlbGVjdG9yKiBoaXN0b3J5OworICAgICAgICAgICAgLy8gRW5z
dXJlIHRoYXQgdW5rbm93biBwc2V1ZG8gZWxlbWVudCBhbHdheXMgc3RheXMgYXQgdGhlIHRvcCBv
ZiBzZWxlY3RvciBjaGFpbi4KKyAgICAgICAgICAgIGlmICgkMi0+aXNVbmtub3duUHNldWRvRWxl
bWVudCgpKSB7CisgICAgICAgICAgICAgICAgZW5kID0gJDI7CisgICAgICAgICAgICAgICAgaGlz
dG9yeSA9ICQxOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbmQgPSAk
MTsKKyAgICAgICAgICAgICAgICBoaXN0b3J5ID0gJDI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAkJCA9IGVuZDsKKyAgICAgICAgICAgIHdoaWxlKGVuZC0+dGFnSGlzdG9yeSgpKQogICAg
ICAgICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOwogICAgICAgICAgICAgZW5kLT5t
X3JlbGF0aW9uID0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOwotICAgICAgICAgICAgZW5kLT5z
ZXRUYWdIaXN0b3J5KHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQyKSk7CisgICAgICAgICAgICBl
bmQtPnNldFRhZ0hpc3RvcnkocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoaGlzdG9yeSkpOwogICAg
ICAgICB9CiAgICAgfQogICAgIHwgc3BlY2lmaWVyX2xpc3QgZXJyb3IgewpAQCAtMTE0MSw5ICsx
MTQwLDcgQEAgcHNldWRvOgogICAgICAgICAkMy5sb3dlcigpOwogICAgICAgICAkJC0+bV92YWx1
ZSA9ICQzOwogICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVk
b1R5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24p
Ci0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0
b3I6OlBzZXVkb0ZpcnN0TGluZSkgeworICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvRmlyc3RMaW5lKSB7CiAgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2Fz
dDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBw
LT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIGRvYy0+c2V0VXNlc0ZpcnN0TGluZVJ1bGVz
KHRydWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKaW5kZXggZjgxN2JiOTg3OGFiOWYyYzY0YjgzOTU0MDZhNjQ0ZWY0
ZDg1OGZkZi4uYzAyNjZiNDQ5M2IwMGQ3NDlmOGEwNTgyYTVmYjgwMjY4MmI3OTc5MSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwCkBAIC01OTI1LDYgKzU5MjUsMzMgQEAgdm9pZCBDU1NQYXJzZXI6OmFkZE5hbWVzcGFj
ZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkKICAg
ICBtX3N0eWxlU2hlZXQtPmFkZE5hbWVzcGFjZSh0aGlzLCBwcmVmaXgsIHVyaSk7CiB9CiAKK3Zv
aWQgQ1NTUGFyc2VyOjp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1l
LCBDU1NTZWxlY3Rvciogc3BlY2lmaWVycykKK3sKKyAgICBBdG9taWNTdHJpbmcgZGV0ZXJtaW5l
ZE5hbWVzcGFjZSA9IG5hbWVzcGFjZVByZWZpeCAhPSBudWxsQXRvbSAmJiBtX3N0eWxlU2hlZXQg
PyBtX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpIDogbV9k
ZWZhdWx0TmFtZXNwYWNlOworICAgIFF1YWxpZmllZE5hbWUgdGFnID0gUXVhbGlmaWVkTmFtZShu
YW1lc3BhY2VQcmVmaXgsIGVsZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFtZXNwYWNlKTsKKyAgICBp
ZiAoIXNwZWNpZmllcnMtPmlzVW5rbm93blBzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICBzcGVj
aWZpZXJzLT5tX3RhZyA9IHRhZzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChE
b2N1bWVudCogZG9jID0gZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jLT5zZXRVc2VzRGVzY2VuZGFu
dFJ1bGVzKHRydWUpOworCisgICAgaWYgKGVsZW1lbnROYW1lID09IHN0YXJBdG9tKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzcGVjaWZpZXJzLT5tX3JlbGF0aW9uID0gQ1NTU2VsZWN0b3I6OlNo
YWRvd0Rlc2NlbmRhbnQ7CisgICAgaWYgKENTU1NlbGVjdG9yKiBoaXN0b3J5ID0gc3BlY2lmaWVy
cy0+dGFnSGlzdG9yeSgpKSB7CisgICAgICAgIGhpc3RvcnktPm1fdGFnID0gdGFnOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQ1NTU2VsZWN0b3IqIGVsZW1lbnROYW1lU2VsZWN0b3Ig
PSBmYXN0TmV3PENTU1NlbGVjdG9yPigpOworICAgIGVsZW1lbnROYW1lU2VsZWN0b3ItPm1fdGFn
ID0gdGFnOworICAgIHNwZWNpZmllcnMtPnNldFRhZ0hpc3RvcnkoZWxlbWVudE5hbWVTZWxlY3Rv
cik7Cit9CisKKwogQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZShDU1NTZWxlY3Rv
ciogcGFnZVNlbGVjdG9yKQogewogICAgIC8vIEZJWE1FOiBNYXJnaW4gYXQtcnVsZXMgYXJlIGln
bm9yZWQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCmluZGV4IDY2MzMwNzJlY2RmZTk4ODc3NmM2ZDYxNTljMGFhODBlZTk0NjZl
ZmYuLmM1N2U4OWU5MzNjY2ZiODIwZTdiOTg3NGU0ZjRjN2FkNmQ3ZGEyNjcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBA
IC0yMDMsNiArMjAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYXNzT3duUHRy
PE1lZGlhUXVlcnk+IHNpbmtGbG9hdGluZ01lZGlhUXVlcnkoTWVkaWFRdWVyeSopOwogCiAgICAg
ICAgIHZvaWQgYWRkTmFtZXNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBB
dG9taWNTdHJpbmcmIHVyaSk7CisgICAgICAgIHZvaWQgdXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVt
ZW50TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVByZWZpeCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTU2VsZWN0b3IqKTsKIAogICAgICAgICB2b2lkIGludmFs
aWRCbG9ja0hpdCgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAg
Yi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggYzEzOWRiZjFiNjFiYzU4MTdkZDdi
NjA0YTYyNjc5Y2E0ZmE5MWU3My4uODMwZTEyYzk0NjdkMDFiYjMxODIxNTk5MGQ1ODZjMGVjMTJl
Y2E2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMTQ4LDggKzE0OCw2IEBAIFBzZXVkb0lkIENTU1Nl
bGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXBlIHR5cGUpCiAgICAgY2FzZSBQc2V1ZG9JbnB1dFNw
ZWVjaEJ1dHRvbjoKICAgICAgICAgcmV0dXJuIElOUFVUX1NQRUVDSF9CVVRUT047CiAjZW5kaWYK
LSAgICBjYXNlIFBzZXVkb1NsaWRlclRodW1iOgotICAgICAgICByZXR1cm4gU0xJREVSX1RIVU1C
OwogICAgIGNhc2UgUHNldWRvU2VhcmNoQ2FuY2VsQnV0dG9uOgogICAgICAgICByZXR1cm4gU0VB
UkNIX0NBTkNFTF9CVVRUT047CiAgICAgY2FzZSBQc2V1ZG9TZWFyY2hEZWNvcmF0aW9uOgpAQCAt
NDE3LDcgKzQxNSw2IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIHNlYXJjaFJlc3VsdHNEZWNvcmF0aW9uLCAoIi13ZWJraXQt
c2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgc2VhcmNoUmVzdWx0c0J1dHRvbiwgKCItd2Via2l0LXNlYXJjaC1yZXN1bHRz
LWJ1dHRvbiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0
aW9uLCAoInNlbGVjdGlvbiIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
Zywgc2xpZGVyVGh1bWIsICgiLXdlYmtpdC1zbGlkZXItdGh1bWIiKSk7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHRhcmdldCwgKCJ0YXJnZXQiKSk7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHZpc2l0ZWQsICgidmlzaXRlZCIpKTsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgd2luZG93SW5hY3RpdmUsICgid2luZG93
LWluYWN0aXZlIikpOwpAQCAtNTQ2LDcgKzU0Myw2IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0
cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAo
CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChzZWFyY2hSZXN1bHRzRGVjb3JhdGlvbi5p
bXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9TZWFyY2hSZXN1bHRzRGVjb3JhdGlvbik7CiAgICAg
ICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChzZWFyY2hSZXN1bHRzQnV0dG9uLmltcGwoKSwgQ1NT
U2VsZWN0b3I6OlBzZXVkb1NlYXJjaFJlc3VsdHNCdXR0b24pOwogICAgICAgICBuYW1lVG9Qc2V1
ZG9UeXBlLT5zZXQoc2VsZWN0aW9uLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb1NlbGVjdGlv
bik7Ci0gICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChzbGlkZXJUaHVtYi5pbXBsKCksIENT
U1NlbGVjdG9yOjpQc2V1ZG9TbGlkZXJUaHVtYik7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUt
PnNldCh0YXJnZXQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvVGFyZ2V0KTsKICAgICAgICAg
bmFtZVRvUHNldWRvVHlwZS0+c2V0KHZpc2l0ZWQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRv
VmlzaXRlZCk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmaXJzdFBhZ2UuaW1wbCgp
LCBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RQYWdlKTsKQEAgLTYzNCw3ICs2MzAsNiBAQCB2b2lk
IENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgY2FzZSBQc2V1ZG9T
ZWFyY2hSZXN1bHRzRGVjb3JhdGlvbjoKICAgICBjYXNlIFBzZXVkb1NlYXJjaFJlc3VsdHNCdXR0
b246CiAgICAgY2FzZSBQc2V1ZG9TZWxlY3Rpb246Ci0gICAgY2FzZSBQc2V1ZG9TbGlkZXJUaHVt
YjoKICAgICAgICAgZWxlbWVudCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHNl
dWRvVW5rbm93bjoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IDM1M2ZiNWUxNzg1MWRlZjAxZDRmMTViZGY0MGFj
OTZiMGQzZTU0OGYuLjExMDFlZWRmODhiNDc1ZTBiYzE2Yzg0ZGIyMjU4OTg0N2I1NzE0M2YgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuaApAQCAtMTA5LDcgKzEwOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIENoaWxkLAogICAgICAgICAgICAgRGlyZWN0QWRqYWNlbnQsCiAgICAgICAgICAgICBJ
bmRpcmVjdEFkamFjZW50LAotICAgICAgICAgICAgU3ViU2VsZWN0b3IKKyAgICAgICAgICAgIFN1
YlNlbGVjdG9yLAorICAgICAgICAgICAgU2hhZG93RGVzY2VuZGFudAogICAgICAgICB9OwogCiAg
ICAgICAgIGVudW0gUHNldWRvVHlwZSB7CkBAIC0xNzcsNyArMTc4LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgUHNldWRvTm9CdXR0b24sCiAgICAgICAgICAgICBQc2V1ZG9T
ZWxlY3Rpb24sCiAgICAgICAgICAgICBQc2V1ZG9GaWxlVXBsb2FkQnV0dG9uLAotICAgICAgICAg
ICAgUHNldWRvU2xpZGVyVGh1bWIsCiAgICAgICAgICAgICBQc2V1ZG9TZWFyY2hDYW5jZWxCdXR0
b24sCiAgICAgICAgICAgICBQc2V1ZG9TZWFyY2hEZWNvcmF0aW9uLAogICAgICAgICAgICAgUHNl
dWRvU2VhcmNoUmVzdWx0c0RlY29yYXRpb24sCkBAIC0yNzcsNiArMjc3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgICAgIGV4dHJhY3RQc2V1ZG9UeXBlKCk7CiAgICAgICAg
ICAgICByZXR1cm4gbV9tYXRjaCA9PSBQc2V1ZG9FbGVtZW50OwogICAgICAgICB9CisgICAgICAg
IGJvb2wgaXNVbmtub3duUHNldWRvRWxlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIFJlbGF0aW9u
IHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1fcmVsYXRp
b24pOyB9CiAKQEAgLTM0NCw2ICszNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBRdWFsaWZpZWROYW1lIG1fdGFnOwogICAgIH07CiAKK2lubGluZSBib29sIENTU1NlbGVjdG9y
Ojppc1Vua25vd25Qc2V1ZG9FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXRjaCA9
PSBQc2V1ZG9FbGVtZW50ICYmIG1fcHNldWRvVHlwZSA9PSBQc2V1ZG9Vbmtub3duOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBDU1NTZWxlY3Rvcl9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3JMaXN0LmNwcAppbmRleCA3ZjgyY2E0OTgwNTIyMmEzM2UyOWQ1MmI2MDg2ZmY1YzMzODhm
YmEwLi43Y2I0ZGY0Yzg0MWNlZjVkNjE1YjI3ZWM3NDRlYTkyMzcwNDA2NWI3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yTGlzdC5jcHAKQEAgLTEzNiw0ICsxMzYsMjAgQEAgYm9vbCBDU1NTZWxlY3Rvckxpc3Q6
OnNlbGVjdG9yc05lZWROYW1lc3BhY2VSZXNvbHV0aW9uKCkKICAgICByZXR1cm4gZm9yRWFjaFNl
bGVjdG9yKGZ1bmN0b3IsIHRoaXMpOwogfQogCitjbGFzcyBTZWxlY3Rvckhhc1Vua25vd25Qc2V1
ZG9FbGVtZW50RnVuY3RvciB7CitwdWJsaWM6CisgICAgYm9vbCBvcGVyYXRvcigpKENTU1NlbGVj
dG9yKiBzZWxlY3RvcikKKyAgICB7CisgICAgICAgIHJldHVybiBzZWxlY3Rvci0+aXNVbmtub3du
UHNldWRvRWxlbWVudCgpOworICAgIH0KK307CisKK2Jvb2wgQ1NTU2VsZWN0b3JMaXN0OjpoYXNV
bmtub3duUHNldWRvRWxlbWVudHMoKSBjb25zdAoreworICAgIFNlbGVjdG9ySGFzVW5rbm93blBz
ZXVkb0VsZW1lbnRGdW5jdG9yIGZ1bmN0b3I7CisgICAgcmV0dXJuIGZvckVhY2hTZWxlY3Rvcihm
dW5jdG9yLCB0aGlzKTsKK30KKworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3JMaXN0LmgKaW5kZXggOWU0MGVmODU4OTdjOTRkYjNkMjA0MTg0NjRiOTU0YWFmNTRmMzhjNS4u
N2FkYzZiOWY1ODdkNGE3MTU2ODUxOGVkZDFmZTNkYzhkOThhMGM1MyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT25lU2VsZWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yQXJyYXkgPyBtX3NlbGVjdG9yQXJyYXktPmlzTGFz
dEluU2VsZWN0b3JMaXN0KCkgOiBmYWxzZTsgfQogCiAgICAgYm9vbCBzZWxlY3RvcnNOZWVkTmFt
ZXNwYWNlUmVzb2x1dGlvbigpOworICAgIGJvb2wgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVTZWxlY3RvcnMoKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAKaW5kZXggZWRiMjE2ZjVhZDM5ZWU4OWQ4YTJiZmNiMjk2NjVhNzBmZmU3
NDU0ZC4uZTUxZDEyZGUxMDY0ZDE1NThkODIxZTcwOTQ0ZjlmMTMyZGExMDdmNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKQEAgLTQyNCw2ICs0MjQsNyBAQCBwdWJsaWM6CiAgICAgQ1NTUnVs
ZURhdGFMaXN0KiBnZXRJRFJ1bGVzKEF0b21pY1N0cmluZ0ltcGwqIGtleSkgeyByZXR1cm4gbV9p
ZFJ1bGVzLmdldChrZXkpOyB9CiAgICAgQ1NTUnVsZURhdGFMaXN0KiBnZXRDbGFzc1J1bGVzKEF0
b21pY1N0cmluZ0ltcGwqIGtleSkgeyByZXR1cm4gbV9jbGFzc1J1bGVzLmdldChrZXkpOyB9CiAg
ICAgQ1NTUnVsZURhdGFMaXN0KiBnZXRUYWdSdWxlcyhBdG9taWNTdHJpbmdJbXBsKiBrZXkpIHsg
cmV0dXJuIG1fdGFnUnVsZXMuZ2V0KGtleSk7IH0KKyAgICBDU1NSdWxlRGF0YUxpc3QqIGdldFBz
ZXVkb1J1bGVzKEF0b21pY1N0cmluZ0ltcGwqIGtleSkgeyByZXR1cm4gbV9wc2V1ZG9SdWxlcy5n
ZXQoa2V5KTsgfQogICAgIENTU1J1bGVEYXRhTGlzdCogZ2V0VW5pdmVyc2FsUnVsZXMoKSB7IHJl
dHVybiBtX3VuaXZlcnNhbFJ1bGVzLmdldCgpOyB9CiAgICAgQ1NTUnVsZURhdGFMaXN0KiBnZXRQ
YWdlUnVsZXMoKSB7IHJldHVybiBtX3BhZ2VSdWxlcy5nZXQoKTsgfQogICAgIApAQCAtNDMxLDYg
KzQzMiw3IEBAIHB1YmxpYzoKICAgICBBdG9tUnVsZU1hcCBtX2lkUnVsZXM7CiAgICAgQXRvbVJ1
bGVNYXAgbV9jbGFzc1J1bGVzOwogICAgIEF0b21SdWxlTWFwIG1fdGFnUnVsZXM7CisgICAgQXRv
bVJ1bGVNYXAgbV9wc2V1ZG9SdWxlczsKICAgICBPd25QdHI8Q1NTUnVsZURhdGFMaXN0PiBtX3Vu
aXZlcnNhbFJ1bGVzOwogICAgIE93blB0cjxDU1NSdWxlRGF0YUxpc3Q+IG1fcGFnZVJ1bGVzOwog
ICAgIHVuc2lnbmVkIG1fcnVsZUNvdW50OwpAQCAtNjU4LDYgKzY2MCwxMCBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXMoQ1NTUnVsZVNldCogcnVsZXMsIGludCYgZmlyc3RSdWxl
SW5kZXgsIGludCYgbAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkK
ICAgICAgICAgICAgIG1hdGNoUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRDbGFzc1J1bGVzKGNsYXNz
TmFtZXNbaV0uaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVF
bXB0eVJ1bGVzKTsKICAgICB9CisgICAgaWYgKCFtX2VsZW1lbnQtPnNoYWRvd1BzZXVkb0lkKCku
aXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VSVChtX3N0eWxlZEVsZW1lbnQpOworICAgICAgICBt
YXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0UHNldWRvUnVsZXMobV9lbGVtZW50LT5zaGFkb3dQ
c2V1ZG9JZCgpLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBpbmNsdWRl
RW1wdHlSdWxlcyk7CisgICAgfQogICAgIG1hdGNoUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRUYWdS
dWxlcyhtX2VsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0
UnVsZUluZGV4LCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVs
ZXMtPmdldFVuaXZlcnNhbFJ1bGVzKCksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4LCBp
bmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgCkBAIC0yMDUxLDYgKzIwNTcsMTQgQEAgQ1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmNoZWNrU2VsZWN0b3IKICAgICAgICAgICAgICAgICAhKChSZW5kZXJTY3JvbGxiYXI6OnNjcm9s
bGJhckZvclN0eWxlUmVzb2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5F
UiB8fCBkeW5hbWljUHNldWRvID09IFJFU0laRVIpICYmIHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxz
Q29tcGxldGVseTsKICAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2Vs
ZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBlbGVtZW50
U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSk7CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNo
YWRvd0Rlc2NlbmRhbnQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIE5vZGUqIHNoYWRvd0hvc3RO
b2RlID0gZS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CisgICAgICAgICAgICBpZiAoc2hhZG93SG9z
dE5vZGUgPT0gZSB8fCAhc2hhZG93SG9zdE5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CisgICAgICAgICAgICBlID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KHNoYWRvd0hvc3ROb2RlKTsKKyAgICAgICAgICAgIHJldHVy
biBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFs
c2UsIGVuY291bnRlcmVkTGluayk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gU2Vs
ZWN0b3JGYWlsc0NvbXBsZXRlbHk7CkBAIC0yNzA1LDEyICsyNzE5LDggQEAgYm9vbCBDU1NTdHls
ZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3Iq
IHNlbCwgRWxlbWUKICAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBlLT5kb2N1
bWVudCgpKQogICAgICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRVc2VzRmlyc3RMZXR0ZXJSdWxl
cyh0cnVlKTsKICAgICAgICAgfQotICAgICAgICBpZiAocHNldWRvSWQgIT0gTk9QU0VVRE8pIHsK
KyAgICAgICAgaWYgKHBzZXVkb0lkICE9IE5PUFNFVURPKQogICAgICAgICAgICAgZHluYW1pY1Bz
ZXVkbyA9IHBzZXVkb0lkOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgLy8gIyMjIGFkZCB0aGUgcmVzdCBvZiB0aGUgY2hlY2tzLi4uCiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yODMxLDEyICsyODQxLDE3IEBAIHZvaWQgQ1NTUnVsZVNldDo6YWRkUnVsZShDU1NT
dHlsZVJ1bGUqIHJ1bGUsIENTU1NlbGVjdG9yKiBzZWwpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgIAorICAgIGlmIChzZWwtPmlzVW5rbm93blBzZXVkb0VsZW1lbnQoKSkgeworICAgICAg
ICBhZGRUb1J1bGVTZXQoc2VsLT5tX3ZhbHVlLmltcGwoKSwgbV9wc2V1ZG9SdWxlcywgcnVsZSwg
c2VsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxOYW1lID0gc2VsLT5tX3RhZy5sb2NhbE5hbWUoKTsKICAgICBpZiAobG9jYWxOYW1lICE9
IHN0YXJBdG9tKSB7CiAgICAgICAgIGFkZFRvUnVsZVNldChsb2NhbE5hbWUuaW1wbCgpLCBtX3Rh
Z1J1bGVzLCBydWxlLCBzZWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAg
Ly8gSnVzdCBwdXQgaXQgaW4gdGhlIHVuaXZlcnNhbCBydWxlIHNldC4KICAgICBpZiAoIW1fdW5p
dmVyc2FsUnVsZXMpCiAgICAgICAgIG1fdW5pdmVyc2FsUnVsZXMgPSBhZG9wdFB0cihuZXcgQ1NT
UnVsZURhdGFMaXN0KG1fcnVsZUNvdW50KyssIHJ1bGUsIHNlbCkpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9jc3MvaHRtbC5jc3MgYi9XZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRleCA4MjNmNWYzMmRi
NDg0ZDdjOTZhMWM3MDU1Mjk5YzA0YWU2MWJhNmU1Li5kNmZiYmRmYmUxMzg1ZDUxN2FjZTk5MGNi
MWM5MTVlZTBmNWIyZDZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9odG1sLmNzcworKysgYi9X
ZWJDb3JlL2Nzcy9odG1sLmNzcwpAQCAtNDc0LDYgKzQ3NCw3IEBAIGlucHV0W3R5cGU9InJhbmdl
Il0gewogCiBpbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LXNsaWRlci10aHVtYiB7CiAgICAg
LXdlYmtpdC1hcHBlYXJhbmNlOiBzbGlkZXJ0aHVtYi1ob3Jpem9udGFsOworICAgIGRpc3BsYXk6
IGJsb2NrOwogfQogCiBpbnB1dFt0eXBlPSJidXR0b24iXTpkaXNhYmxlZCwgaW5wdXRbdHlwZT0i
c3VibWl0Il06ZGlzYWJsZWQsIGlucHV0W3R5cGU9InJlc2V0Il06ZGlzYWJsZWQsCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXgg
OWJhZDY2ZmNmZDRlNjJkYmEyZGRkMDdiYmI3ZTZhNWY1NzcyMjYzOC4uNmFiZmEyYjM2ZjBkMzdk
Y2M3MzlkMmU5OGZhZmIxZDk0ODNiNDM4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCisrKyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjI3LDYgKzIyNyw3IEBAIHB1Ymxp
YzoKIAogICAgIE5vZGUqIHNoYWRvd1Jvb3QoKTsKICAgICB2b2lkIHNldFNoYWRvd1Jvb3QoUGFz
c1JlZlB0cjxOb2RlPik7CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgc2hhZG93UHNldWRvSWQo
KSBjb25zdDsKIAogICAgIFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9Q
U0VVRE8pOwogCkBAIC01MDQsNiArNTA1LDExIEBAIGlubGluZSB2b2lkIEVsZW1lbnQ6OnNldElk
QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAgc2V0QXR0cmlidXRlKGRv
Y3VtZW50KCktPmlkQXR0cmlidXRlTmFtZSgpLCB2YWx1ZSk7CiB9CiAKK2lubGluZSBBdG9taWNT
dHJpbmcgRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIHJldHVybiBBdG9t
aWNTdHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGMwZDQ3ZTQ5
OTNkOTYwMWI2ZGMzN2I1NTQ0MTQxOTNjYzczNzlkMTkuLjRkNjRlODJiYThhZmM5NDU2YTZlM2Nm
NTViY2Y4MDAyMjE1ZDQ0OWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xNTk0LDcgKzE1OTQsNyBAQCBQYXNzUmVmUHRyPEVs
ZW1lbnQ+IE5vZGU6OnF1ZXJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2Vw
dGlvbkNvZGUmCiAgICAgQ1NTU2VsZWN0b3JMaXN0IHF1ZXJ5U2VsZWN0b3JMaXN0OwogICAgIHAu
cGFyc2VTZWxlY3RvcihzZWxlY3RvcnMsIGRvY3VtZW50KCksIHF1ZXJ5U2VsZWN0b3JMaXN0KTsK
IAotICAgIGlmICghcXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKSkgeworICAgIGlmICghcXVlcnlT
ZWxlY3Rvckxpc3QuZmlyc3QoKSB8fCBxdWVyeVNlbGVjdG9yTGlzdC5oYXNVbmtub3duUHNldWRv
RWxlbWVudHMoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KQEAgLTE2NDEsNyArMTY0MSw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6
OnF1ZXJ5U2VsZWN0b3JBbGwoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvCiAg
ICAgQ1NTU2VsZWN0b3JMaXN0IHF1ZXJ5U2VsZWN0b3JMaXN0OwogICAgIHAucGFyc2VTZWxlY3Rv
cihzZWxlY3RvcnMsIGRvY3VtZW50KCksIHF1ZXJ5U2VsZWN0b3JMaXN0KTsKIAotICAgIGlmICgh
cXVlcnlTZWxlY3Rvckxpc3QuZmlyc3QoKSkgeworICAgIGlmICghcXVlcnlTZWxlY3Rvckxpc3Qu
Zmlyc3QoKSB8fCBxdWVyeVNlbGVjdG9yTGlzdC5oYXNVbmtub3duUHNldWRvRWxlbWVudHMoKSkg
ewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmggYi9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4IDgyMDU3NDY2NGMzZWNh
ZjVkYjc0NmZiNGFjYjVmOTk0ZWNkODllM2YuLjUyMjBmMmJkYWVmMGNhYTM2OGUyYjJlYjAwYWVi
NjAxMWVmNzc5NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaApA
QCAtMzMsNiArMzMsNyBAQAogI2RlZmluZSBTbGlkZXJUaHVtYkVsZW1lbnRfaAogCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5j
bHVkZSAiU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTUw
LDYgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CisgICAgdmlydHVhbCBBdG9t
aWNTdHJpbmcgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIAogcHJpdmF0ZTogICAgICAgIAogICAg
IFNsaWRlclRodW1iRWxlbWVudChIVE1MRWxlbWVudCogc2hhZG93UGFyZW50KTsKQEAgLTY5LDYg
KzcxLDEyIEBAIGlubGluZSBQYXNzUmVmUHRyPFNsaWRlclRodW1iRWxlbWVudD4gU2xpZGVyVGh1
bWJFbGVtZW50OjpjcmVhdGUoSFRNTEVsZW1lbnQqIHNoCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTbGlkZXJUaHVtYkVsZW1lbnQoc2hhZG93UGFyZW50KSk7CiB9CiAKK2lubGluZSBBdG9taWNT
dHJpbmcgU2xpZGVyVGh1bWJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNsaWRlclRodW1iLCAoIi13ZWJraXQt
c2xpZGVyLXRodW1iIikpOworICAgIHJldHVybiBzbGlkZXJUaHVtYjsKK30KKwogfQogCiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCmluZGV4IGI3M2ExYWNhYTllNjI0Y2ExODY4NmM3NzZl
Yjg4NjM0MGM3MDEyZTIuLmVmNjllNDEwN2I0NWZjZDUxYzBhNmIyZjNhODBlOWFkOWVmN2MxYTAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1
ZGUgIlJlbmRlclNsaWRlci5oIgogCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2lu
Y2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCkBAIC0xMTIsMjkgKzExMywx
OCBAQCB2b2lkIFJlbmRlclNsaWRlcjo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdAogCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBS
ZW5kZXJTbGlkZXI6OmNyZWF0ZVRodW1iU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlKQogewotICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGU7Ci0gICAgUmVuZGVyU3R5bGUq
IHBzZXVkb1N0eWxlID0gZ2V0Q2FjaGVkUHNldWRvU3R5bGUoU0xJREVSX1RIVU1CKTsKLSAgICBp
ZiAocHNldWRvU3R5bGUpCi0gICAgICAgIC8vIFdlIG1heSBiZSBzaGFyaW5nIHN0eWxlIHdpdGgg
YW5vdGhlciBzbGlkZXIsIGJ1dCB3ZSBtdXN0IG5vdCBzaGFyZSB0aGUgdGh1bWIgc3R5bGUuCi0g
ICAgICAgIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHBzZXVkb1N0eWxlKTsKLSAgICBlbHNl
Ci0gICAgICAgIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotCi0gICAgaWYgKHBhcmVu
dFN0eWxlKQotICAgICAgICBzdHlsZS0+aW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwotCi0gICAg
c3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdGh1bWJT
dHlsZSA9IGRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVGb3JFbGVtZW50KG1fdGh1
bWIuZ2V0KCksIHN0eWxlKCksIGZhbHNlKTsKIAogICAgIGlmIChwYXJlbnRTdHlsZS0+YXBwZWFy
YW5jZSgpID09IFNsaWRlclZlcnRpY2FsUGFydCkKLSAgICAgICAgc3R5bGUtPnNldEFwcGVhcmFu
Y2UoU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpOworICAgICAgICB0aHVtYlN0eWxlLT5zZXRBcHBl
YXJhbmNlKFNsaWRlclRodW1iVmVydGljYWxQYXJ0KTsKICAgICBlbHNlIGlmIChwYXJlbnRTdHls
ZS0+YXBwZWFyYW5jZSgpID09IFNsaWRlckhvcml6b250YWxQYXJ0KQotICAgICAgICBzdHlsZS0+
c2V0QXBwZWFyYW5jZShTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KTsKKyAgICAgICAgdGh1bWJT
dHlsZS0+c2V0QXBwZWFyYW5jZShTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KTsKICAgICBlbHNl
IGlmIChwYXJlbnRTdHlsZS0+YXBwZWFyYW5jZSgpID09IE1lZGlhU2xpZGVyUGFydCkKLSAgICAg
ICAgc3R5bGUtPnNldEFwcGVhcmFuY2UoTWVkaWFTbGlkZXJUaHVtYlBhcnQpOworICAgICAgICB0
aHVtYlN0eWxlLT5zZXRBcHBlYXJhbmNlKE1lZGlhU2xpZGVyVGh1bWJQYXJ0KTsKICAgICBlbHNl
IGlmIChwYXJlbnRTdHlsZS0+YXBwZWFyYW5jZSgpID09IE1lZGlhVm9sdW1lU2xpZGVyUGFydCkK
LSAgICAgICAgc3R5bGUtPnNldEFwcGVhcmFuY2UoTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQp
OworICAgICAgICB0aHVtYlN0eWxlLT5zZXRBcHBlYXJhbmNlKE1lZGlhVm9sdW1lU2xpZGVyVGh1
bWJQYXJ0KTsKIAotICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRodW1i
U3R5bGUucmVsZWFzZSgpOwogfQogCiBJbnRSZWN0IFJlbmRlclNsaWRlcjo6dGh1bWJSZWN0KCkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRz
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4
IDA4Mzk4NjQ3OGQzYjQ1NjVjNDYzZjg3ZWNlY2Y5MzIxNWY2MGY4YjkuLjdjZDQ5MDMwMWExNzVj
M2YxOWZmY2NmOGY2NmVhYWY5ZmZiNmY1MzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNjgsNyArNjgsNyBAQCBlbnVtIFN0eWxlRGlm
ZmVyZW5jZUNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0eSB7CiBlbnVtIFBzZXVkb0lkIHsKICAgICAv
LyBUaGUgb3JkZXIgbXVzdCBiZSBOT1AgSUQsIHB1YmxpYyBJRHMsIGFuZCB0aGVuIGludGVybmFs
IElEcy4KICAgICBOT1BTRVVETywgRklSU1RfTElORSwgRklSU1RfTEVUVEVSLCBCRUZPUkUsIEFG
VEVSLCBTRUxFQ1RJT04sIEZJUlNUX0xJTkVfSU5IRVJJVEVELCBTQ1JPTExCQVIsIEZJTEVfVVBM
T0FEX0JVVFRPTiwgSU5QVVRfUExBQ0VIT0xERVIsCi0gICAgU0xJREVSX1RIVU1CLCBTRUFSQ0hf
Q0FOQ0VMX0JVVFRPTiwgU0VBUkNIX0RFQ09SQVRJT04sIFNFQVJDSF9SRVNVTFRTX0RFQ09SQVRJ
T04sIFNFQVJDSF9SRVNVTFRTX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfUEFORUwsCisgICAgU0VB
UkNIX0NBTkNFTF9CVVRUT04sIFNFQVJDSF9ERUNPUkFUSU9OLCBTRUFSQ0hfUkVTVUxUU19ERUNP
UkFUSU9OLCBTRUFSQ0hfUkVTVUxUU19CVVRUT04sIE1FRElBX0NPTlRST0xTX1BBTkVMLAogICAg
IE1FRElBX0NPTlRST0xTX1BMQVlfQlVUVE9OLCBNRURJQV9DT05UUk9MU19NVVRFX0JVVFRPTiwg
TUVESUFfQ09OVFJPTFNfVElNRUxJTkUsIE1FRElBX0NPTlRST0xTX1RJTUVMSU5FX0NPTlRBSU5F
UiwKICAgICBNRURJQV9DT05UUk9MU19WT0xVTUVfU0xJREVSLCBNRURJQV9DT05UUk9MU19WT0xV
TUVfU0xJREVSX0NPTlRBSU5FUiwgTUVESUFfQ09OVFJPTFNfVk9MVU1FX1NMSURFUl9NVVRFX0JV
VFRPTiwgCiAgICAgTUVESUFfQ09OVFJPTFNfQ1VSUkVOVF9USU1FX0RJU1BMQVksIE1FRElBX0NP
TlRST0xTX1RJTUVfUkVNQUlOSU5HX0RJU1BMQVksIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78274</attachid>
            <date>2011-01-07 14:50:56 -0800</date>
            <delta_ts>2011-01-08 11:04:05 -0800</delta_ts>
            <desc>Corrected the issue with multiple specifiers.</desc>
            <filename>bug-46595-20110107145054.patch</filename>
            <type>text/plain</type>
            <size>23851</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGM5YTllMGU5OTZlMzY5NjMzNzhmYzM5YjUwNGY5MzNmOGFiMmJmOS4uZDU0YWI0NTJlOGMyZmM2
ZWRlYmI0MjczNWEwM2Q0MDliNmQzMjljZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMS0wMS0wNyAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgcHNldWRvLXN0eWxlIHJlc29sdXRp
b24gbGVzcyBoYXJkLWNvZGVkIHdoZW4gdXNlZCB0byBzZWxlY3QgYSBzaGFkb3cgbm9kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTUKKworICAg
ICAgICBFc3NlbnRpYWxseSBpbXBsZW1lbnRzIHRoZSBwbHVtYmluZyBmb3IgdGhlIFhCTDIgcHNl
dWRvIGF0dHJpYnV0ZToKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwNi94YmwyLyN0aGUt
cHNldWRvLWF0dHJpYnV0ZQorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisK
KyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OiBDaGFuZ2VkIHRvIGhhbmRsZSBzcGVjaWZpZXJf
bGlzdCBzdHJ1Y3R1cmUgd2l0aCB0aGUKKyAgICAgICAgICAgIENTU1BhcnNlcjo6dXBkYXRlU3Bl
Y2lmaWVyV2l0aEVsZW1lbnROYW1lIGhlbHBlciwgYWRkZWQgbG9naWMgdG8KKyAgICAgICAgICAg
IGtlZXAgdW5rbm93biBwc2V1ZG8tZWxlbWVudCBzZWxlY3RvcnMgYXQgdGhlIHRvcCBvZiB0aGUg
c2VsZWN0b3IgY2hhaW4sCisgICAgICAgICAgICBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgY2hlY2sg
Zm9yIHRoZW0gYW5kIGdyYWIgdGhlbSwgYW5kIGFsc28gYmVjYXVzZQorICAgICAgICAgICAgdGhl
eSB3b3VsZCBlaXRoZXIgbm90IG1hdGNoIGFueXRoaW5nIG9yIGFjdCBhcyBhIGRlc2NlbmRhbnQg
c2VsZWN0b3IKKyAgICAgICAgICAgIChkZXNjZW5kYW50IGludG8gYSBzaGFkb3cgRE9NIHN1YnRy
ZWUgdGhhdCBpcyksIG5vdCBhIHNwZWNpZmllci4KKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVt
ZW50TmFtZSk6IEdlbmVyYWxpemVkL2NvbWJpbmVkCisgICAgICAgICAgICB0aGUgbG9naWMgYWRk
aW5nIGVsZW1lbnQgbmFtZSB0byBzZWxlY3RvcnMgYW5kIGFkZGVkIHRoZSBzcGVjaWFsIGNhc2UK
KyAgICAgICAgICAgIHRvIGhhbmRsZSB1bmtub3duIHBzZXVkby1lbGVtZW50IHNlbGVjdG9ycy4K
KyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6IEFkZGVkIGRlZi4KKyAgICAgICAgKiBjc3MvQ1NT
U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKTog
UmVtb3ZlZCBhbnkgbWVudGlvbiBvZiBQc2V1ZG9TbGlkZXJUaHVtYi9TTElERVJfVEhVTUIuCisg
ICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFwKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOiBEaXR0by4KKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3IuaDogQWRkZWQgYSBuZXcgU2hhZG93RGVzY2VuZGFudCByZWxhdGlv
biB0eXBlLAorICAgICAgICAgICAgcmVtb3ZlZCBQc2V1ZG9TbGlkZXJUaHVtYiBkZWYuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6aXNVbmtub3duUHNldWRvRWxlbWVudCk6IEFkZGVk
IGEgaGVscGVyIG1ldGhvZC4KKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9ySGFzVW5rbm93blBzZXVkb0VsZW1lbnRGdW5jdG9yOjpv
cGVyYXRvcigpKTogQWRkZWQgYSBmdW5jdG9yCisgICAgICAgICAgICB0byBjaGVjayBmb3IgYW4g
dW5rbm93biBwc2V1ZG8tZWxlbWVudCBpbiB0aGUgbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yTGlzdDo6aGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKTogQWRkZWQuCisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yTGlzdC5oOiBBZGRlZCBhIGRlZi4KKyAgICAgICAgKiBjc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlU2V0OjpnZXRQc2V1
ZG9SdWxlcyk6IEFkZGVkIGFjY2Vzc29yIHRvIHBzZXVkby1lbGVtZW50IGhhc2guCisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzKTogQWRkZWQgbWF0Y2hpbmcg
cHNldWRvIGVsZW1lbnRzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKTogQWRkZWQgaGFuZGxpbmcKKyAgICAgICAgICAg
IG9mIFNoYWRvd0Rlc2NlbmRhbnQgcmVsYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOiBFbmFibGVkIGhh
bmRsaW5nCisgICAgICAgICAgICBvZiB1bmtub3duIHBzZXVkby1lbGVtZW50IHNlbGVjdG9ycy4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVTZXQ6OmFkZFJ1bGUpOiBBZGRlZCBwb3B1bGF0aW5n
IHVua25vd24gcHNldWRvLWVsZW1lbnQgaGFzaC4KKyAgICAgICAgKiBjc3MvaHRtbC5jc3M6Cisg
ICAgICAgIChpbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LXNsaWRlci10aHVtYik6IEFkZGVk
IHByZXZpb3VzbHktaGFyZC1jb2RlZAorICAgICAgICAgICAgZGlzcGxheTpibG9jay4KKyAgICAg
ICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hhZG93UHNl
dWRvSWQpOiBBZGRlZCBuZXcgdmlydHVhbCBtZXRob2QgdG8gYWxsb3cKKyAgICAgICAgICAgIGVs
ZW1lbnRzIHRvIHByb3ZpZGUgdGhlIHZhbHVlIG9mIHBzZXVkby1lbGVtZW50IHNlbGVjdG9yIHRo
ZXkgd291bGQgbWF0Y2guCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6cXVlcnlTZWxlY3Rvcik6IEFkZGVkIGNoZWNraW5nIGZvciB1bmtub3duIHBzZXVk
by1lbGVtZW50IHNlbGVjdG9ycywKKyAgICAgICAgICAgIHNvIHRoYXQgd2UgY2FuIHRocm93IGEg
U1lOVEFYX0VSUiBpZiBmb3VuZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0
b3JBbGwpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6c2hhZG93UHNldWRvSWQp
OiBBZGRlZCB0byByZXR1cm4gIi13ZWJraXQtc2xpZGVyLXRodW1iIjsKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU2xpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRlcjo6
Y3JlYXRlVGh1bWJTdHlsZSk6IENoYW5nZWQgdG8gdXNlIHRoZSBuZXcgc3R5bGVGb3JFbGVtZW50
IGxvZ2ljLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5o
OiBSZW1vdmVkIFNMSURFUl9USFVNQi4KKwogMjAxMS0wMS0wNyAgQ2hyaXMgTWFycmluICA8Y21h
cnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCBiYTU4
NTVkN2M4MjA1NTdkYjQ1N2QzNzIyOTFkZGIyNWE0NjAwYmVmLi5jODYwNWZhNGIwOTI2YWM4YTQy
NTg1MTgwYzRjNDMzZWEyZjY1ODUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkKKysrIGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC05MDEsMTYgKzkwMSwxMyBAQCBz
aW1wbGVfc2VsZWN0b3I6CiAgICAgfQogICAgIHwgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0
IHsKICAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKCQkKSB7Ci0gICAgICAgICAgICBDU1NQ
YXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICAgICAg
JCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVz
cGFjZSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCQkKQorICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShu
dWxsQXRvbSwgJDEsICQkKTsKICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCB7CiAgICAgICAg
ICQkID0gJDE7Ci0gICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+
KHBhcnNlcik7Ci0gICAgICAgIGlmICgkJCAmJiBwLT5tX2RlZmF1bHROYW1lc3BhY2UgIT0gc3Rh
ckF0b20pCi0gICAgICAgICAgICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBz
dGFyQXRvbSwgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKTsKKyAgICAgICAgaWYgKCQkKQorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+dXBkYXRlU3BlY2lmaWVyc1dp
dGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3RhckF0b20sICQkKTsKICAgICB9CiAgICAgfCBuYW1l
c3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHsKICAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVz
cGFjZVByZWZpeCA9ICQxOwpAQCAtOTI0LDE1ICs5MjEsOCBAQCBzaW1wbGVfc2VsZWN0b3I6CiAg
ICAgfQogICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlz
dCB7CiAgICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmICgkJCkgewotICAgICAgICAgICAgQXRv
bWljU3RyaW5nIG5hbWVzcGFjZVByZWZpeCA9ICQxOwotICAgICAgICAgICAgQ1NTUGFyc2VyKiBw
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgICAgIGlmIChwLT5t
X3N0eWxlU2hlZXQpCi0gICAgICAgICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShu
YW1lc3BhY2VQcmVmaXgsICQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcC0+bV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4
KSk7Ci0gICAgICAgICAgICBlbHNlIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyBjYXNlIGJlIGFu
IGVycm9yPwotICAgICAgICAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobnVsbEF0
b20sICQyLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOwotICAgICAgICB9CisgICAgICAgIGlmICgk
JCkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPnVwZGF0ZVNw
ZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsICQyLCAkJCk7CiAgICAgfQogICAgIHwgbmFtZXNw
YWNlX3NlbGVjdG9yIHNwZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMjsKQEAgLTk3MCwx
MyArOTYwLDIyIEBAIHNwZWNpZmllcl9saXN0OgogICAgICAgICBpZiAoISQyKQogICAgICAgICAg
ICAgJCQgPSAwOwogICAgICAgICBlbHNlIGlmICgkMSkgewotICAgICAgICAgICAgJCQgPSAkMTsK
ICAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNl
cik7Ci0gICAgICAgICAgICBDU1NTZWxlY3RvciogZW5kID0gJDE7Ci0gICAgICAgICAgICB3aGls
ZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAgICAgICAgICBDU1NTZWxlY3RvciogZW5kOworICAg
ICAgICAgICAgQ1NTU2VsZWN0b3IqIGhpc3Rvcnk7CisgICAgICAgICAgICAvLyBFbnN1cmUgdGhh
dCB1bmtub3duIHBzZXVkbyBlbGVtZW50IGFsd2F5cyBzdGF5cyBhdCB0aGUgdG9wIG9mIHNlbGVj
dG9yIGNoYWluLgorICAgICAgICAgICAgaWYgKCQyLT5pc1Vua25vd25Qc2V1ZG9FbGVtZW50KCkp
IHsKKyAgICAgICAgICAgICAgICBlbmQgPSAkMjsKKyAgICAgICAgICAgICAgICBoaXN0b3J5ID0g
JDE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVuZCA9ICQxOworICAg
ICAgICAgICAgICAgIGhpc3RvcnkgPSAkMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICQk
ID0gZW5kOworICAgICAgICAgICAgd2hpbGUoZW5kLT50YWdIaXN0b3J5KCkpCiAgICAgICAgICAg
ICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7CiAgICAgICAgICAgICBlbmQtPm1fcmVsYXRp
b24gPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I7Ci0gICAgICAgICAgICBlbmQtPnNldFRhZ0hp
c3RvcnkocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDIpKTsKKyAgICAgICAgICAgIGVuZC0+c2V0
VGFnSGlzdG9yeShwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcihoaXN0b3J5KSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJvciB7CkBAIC0xMTQxLDkgKzExNDAsNyBA
QCBwc2V1ZG86CiAgICAgICAgICQzLmxvd2VyKCk7CiAgICAgICAgICQkLT5tX3ZhbHVlID0gJDM7
CiAgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgp
OwotICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAgICAg
ICAgICAgICQkID0gMDsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvRmlyc3RMaW5lKSB7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9G
aXJzdExpbmUpIHsKICAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1Bh
cnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9IHAtPmRvY3Vt
ZW50KCkpCiAgICAgICAgICAgICAgICAgZG9jLT5zZXRVc2VzRmlyc3RMaW5lUnVsZXModHJ1ZSk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAppbmRleCAwYzAzYjkzYjAxM2M0MGU3MGJlMDBiZjcwOTg2ZDhjOTJiODUzNjIy
Li5lNmQwOTAwYTcxMGMxMDZhNjQyMzUyN2QxODkwZWJjYjU4MDkyZjRjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTU5MzMsNiArNTkzMywzMyBAQCB2b2lkIENTU1BhcnNlcjo6YWRkTmFtZXNwYWNlKGNvbnN0
IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIHVyaQogICAgIG1fc3R5
bGVTaGVldC0+YWRkTmFtZXNwYWNlKHRoaXMsIHByZWZpeCwgdXJpKTsKIH0KIAordm9pZCBDU1NQ
YXJzZXI6OnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lc3BhY2VQcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVudE5hbWUsIENTU1Nl
bGVjdG9yKiBzcGVjaWZpZXJzKQoreworICAgIEF0b21pY1N0cmluZyBkZXRlcm1pbmVkTmFtZXNw
YWNlID0gbmFtZXNwYWNlUHJlZml4ICE9IG51bGxBdG9tICYmIG1fc3R5bGVTaGVldCA/IG1fc3R5
bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkgOiBtX2RlZmF1bHRO
YW1lc3BhY2U7CisgICAgUXVhbGlmaWVkTmFtZSB0YWcgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFj
ZVByZWZpeCwgZWxlbWVudE5hbWUsIGRldGVybWluZWROYW1lc3BhY2UpOworICAgIGlmICghc3Bl
Y2lmaWVycy0+aXNVbmtub3duUHNldWRvRWxlbWVudCgpKSB7CisgICAgICAgIHNwZWNpZmllcnMt
Pm1fdGFnID0gdGFnOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKERvY3VtZW50
KiBkb2MgPSBkb2N1bWVudCgpKQorICAgICAgICBkb2MtPnNldFVzZXNEZXNjZW5kYW50UnVsZXMo
dHJ1ZSk7CisKKyAgICBzcGVjaWZpZXJzLT5tX3JlbGF0aW9uID0gQ1NTU2VsZWN0b3I6OlNoYWRv
d0Rlc2NlbmRhbnQ7CisgICAgaWYgKENTU1NlbGVjdG9yKiBoaXN0b3J5ID0gc3BlY2lmaWVycy0+
dGFnSGlzdG9yeSgpKSB7CisgICAgICAgIGhpc3RvcnktPm1fdGFnID0gdGFnOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKGVsZW1lbnROYW1lID09IHN0YXJBdG9tKQorICAgICAg
ICByZXR1cm47CisKKyAgICBDU1NTZWxlY3RvciogZWxlbWVudE5hbWVTZWxlY3RvciA9IGZhc3RO
ZXc8Q1NTU2VsZWN0b3I+KCk7CisgICAgZWxlbWVudE5hbWVTZWxlY3Rvci0+bV90YWcgPSB0YWc7
CisgICAgc3BlY2lmaWVycy0+c2V0VGFnSGlzdG9yeShlbGVtZW50TmFtZVNlbGVjdG9yKTsKK30K
KworCiBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVBhZ2VSdWxlKENTU1NlbGVjdG9yKiBwYWdl
U2VsZWN0b3IpCiB7CiAgICAgLy8gRklYTUU6IE1hcmdpbiBhdC1ydWxlcyBhcmUgaWdub3JlZC4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmgKaW5kZXggZTYwNTE5ZWYwYzU0MzUyYTRhMTE2ZGI0Zjc1NGUwOGVhNDJmNGQ1YS4uYTE5
NmU1OGE3MGE3MzM4MTQxYzc4YzdiMDVlYzI5NDY4NDYzZmE4MiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTIwMyw2
ICsyMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NPd25QdHI8TWVkaWFR
dWVyeT4gc2lua0Zsb2F0aW5nTWVkaWFRdWVyeShNZWRpYVF1ZXJ5Kik7CiAKICAgICAgICAgdm9p
ZCBhZGROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0
cmluZyYgdXJpKTsKKyAgICAgICAgdm9pZCB1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcm
IGVsZW1lbnROYW1lLCBDU1NTZWxlY3RvciopOwogCiAgICAgICAgIHZvaWQgaW52YWxpZEJsb2Nr
SGl0KCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBjMTM5ZGJmMWI2MWJjNTgxN2RkN2I2MDRhNjI2
NzljYTRmYTkxZTczLi44MzBlMTJjOTQ2N2QwMWJiMzE4MjE1OTkwZDU4NmMwZWMxMmVjYTYyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuY3BwCkBAIC0xNDgsOCArMTQ4LDYgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6
OnBzZXVkb0lkKFBzZXVkb1R5cGUgdHlwZSkKICAgICBjYXNlIFBzZXVkb0lucHV0U3BlZWNoQnV0
dG9uOgogICAgICAgICByZXR1cm4gSU5QVVRfU1BFRUNIX0JVVFRPTjsKICNlbmRpZgotICAgIGNh
c2UgUHNldWRvU2xpZGVyVGh1bWI6Ci0gICAgICAgIHJldHVybiBTTElERVJfVEhVTUI7CiAgICAg
Y2FzZSBQc2V1ZG9TZWFyY2hDYW5jZWxCdXR0b246CiAgICAgICAgIHJldHVybiBTRUFSQ0hfQ0FO
Q0VMX0JVVFRPTjsKICAgICBjYXNlIFBzZXVkb1NlYXJjaERlY29yYXRpb246CkBAIC00MTcsNyAr
NDE1LDYgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQ
c2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlwZU1hcCgKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgc2VhcmNoUmVzdWx0c0RlY29yYXRpb24sICgiLXdlYmtpdC1zZWFyY2gt
cmVzdWx0cy1kZWNvcmF0aW9uIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBzZWFyY2hSZXN1bHRzQnV0dG9uLCAoIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9u
IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWxlY3Rpb24sICgi
c2VsZWN0aW9uIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzbGlk
ZXJUaHVtYiwgKCItd2Via2l0LXNsaWRlci10aHVtYiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgdGFyZ2V0LCAoInRhcmdldCIpKTsKICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgdmlzaXRlZCwgKCJ2aXNpdGVkIikpOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB3aW5kb3dJbmFjdGl2ZSwgKCJ3aW5kb3ctaW5hY3Rp
dmUiKSk7CkBAIC01NDYsNyArNTQzLDYgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1w
bCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlwZU1hcCgKICAgICAg
ICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHNlYXJjaFJlc3VsdHNEZWNvcmF0aW9uLmltcGwoKSwg
Q1NTU2VsZWN0b3I6OlBzZXVkb1NlYXJjaFJlc3VsdHNEZWNvcmF0aW9uKTsKICAgICAgICAgbmFt
ZVRvUHNldWRvVHlwZS0+c2V0KHNlYXJjaFJlc3VsdHNCdXR0b24uaW1wbCgpLCBDU1NTZWxlY3Rv
cjo6UHNldWRvU2VhcmNoUmVzdWx0c0J1dHRvbik7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUt
PnNldChzZWxlY3Rpb24uaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvU2VsZWN0aW9uKTsKLSAg
ICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHNsaWRlclRodW1iLmltcGwoKSwgQ1NTU2VsZWN0
b3I6OlBzZXVkb1NsaWRlclRodW1iKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHRh
cmdldC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9UYXJnZXQpOwogICAgICAgICBuYW1lVG9Q
c2V1ZG9UeXBlLT5zZXQodmlzaXRlZC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVk
KTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZpcnN0UGFnZS5pbXBsKCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9GaXJzdFBhZ2UpOwpAQCAtNjM0LDcgKzYzMCw2IEBAIHZvaWQgQ1NTU2Vs
ZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICBjYXNlIFBzZXVkb1NlYXJjaFJl
c3VsdHNEZWNvcmF0aW9uOgogICAgIGNhc2UgUHNldWRvU2VhcmNoUmVzdWx0c0J1dHRvbjoKICAg
ICBjYXNlIFBzZXVkb1NlbGVjdGlvbjoKLSAgICBjYXNlIFBzZXVkb1NsaWRlclRodW1iOgogICAg
ICAgICBlbGVtZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9Vbmtu
b3duOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmgKaW5kZXggMzUzZmI1ZTE3ODUxZGVmMDFkNGYxNWJkZjQwYWM5NmIwZDNl
NTQ4Zi4uMTEwMWVlZGY4OGI0NzVlMGJjMTZjODRkYjIyNTg5ODQ3YjU3MTQzZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5oCkBAIC0xMDksNyArMTA5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
Q2hpbGQsCiAgICAgICAgICAgICBEaXJlY3RBZGphY2VudCwKICAgICAgICAgICAgIEluZGlyZWN0
QWRqYWNlbnQsCi0gICAgICAgICAgICBTdWJTZWxlY3RvcgorICAgICAgICAgICAgU3ViU2VsZWN0
b3IsCisgICAgICAgICAgICBTaGFkb3dEZXNjZW5kYW50CiAgICAgICAgIH07CiAKICAgICAgICAg
ZW51bSBQc2V1ZG9UeXBlIHsKQEAgLTE3Nyw3ICsxNzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICBQc2V1ZG9Ob0J1dHRvbiwKICAgICAgICAgICAgIFBzZXVkb1NlbGVjdGlv
biwKICAgICAgICAgICAgIFBzZXVkb0ZpbGVVcGxvYWRCdXR0b24sCi0gICAgICAgICAgICBQc2V1
ZG9TbGlkZXJUaHVtYiwKICAgICAgICAgICAgIFBzZXVkb1NlYXJjaENhbmNlbEJ1dHRvbiwKICAg
ICAgICAgICAgIFBzZXVkb1NlYXJjaERlY29yYXRpb24sCiAgICAgICAgICAgICBQc2V1ZG9TZWFy
Y2hSZXN1bHRzRGVjb3JhdGlvbiwKQEAgLTI3Nyw2ICsyNzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICAgICAgZXh0cmFjdFBzZXVkb1R5cGUoKTsKICAgICAgICAgICAgIHJl
dHVybiBtX21hdGNoID09IFBzZXVkb0VsZW1lbnQ7CiAgICAgICAgIH0KKyAgICAgICAgYm9vbCBp
c1Vua25vd25Qc2V1ZG9FbGVtZW50KCkgY29uc3Q7CiAKICAgICAgICAgUmVsYXRpb24gcmVsYXRp
b24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSZWxhdGlvbj4obV9yZWxhdGlvbik7IH0K
IApAQCAtMzQ0LDYgKzM0NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFF1YWxp
ZmllZE5hbWUgbV90YWc7CiAgICAgfTsKIAoraW5saW5lIGJvb2wgQ1NTU2VsZWN0b3I6OmlzVW5r
bm93blBzZXVkb0VsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX21hdGNoID09IFBzZXVk
b0VsZW1lbnQgJiYgbV9wc2V1ZG9UeXBlID09IFBzZXVkb1Vua25vd247Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENTU1NlbGVjdG9yX2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxp
c3QuY3BwCmluZGV4IDdmODJjYTQ5ODA1MjIyYTMzZTI5ZDUyYjYwODZmZjVjMzM4OGZiYTAuLjdj
YjRkZjRjODQxY2VmNWQ2MTViMjdlYzc0NGVhOTIzNzA0MDY1YjcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JM
aXN0LmNwcApAQCAtMTM2LDQgKzEzNiwyMCBAQCBib29sIENTU1NlbGVjdG9yTGlzdDo6c2VsZWN0
b3JzTmVlZE5hbWVzcGFjZVJlc29sdXRpb24oKQogICAgIHJldHVybiBmb3JFYWNoU2VsZWN0b3Io
ZnVuY3RvciwgdGhpcyk7CiB9CiAKK2NsYXNzIFNlbGVjdG9ySGFzVW5rbm93blBzZXVkb0VsZW1l
bnRGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBib29sIG9wZXJhdG9yKCkoQ1NTU2VsZWN0b3IqIHNl
bGVjdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbGVjdG9yLT5pc1Vua25vd25Qc2V1ZG9F
bGVtZW50KCk7CisgICAgfQorfTsKKworYm9vbCBDU1NTZWxlY3Rvckxpc3Q6Omhhc1Vua25vd25Q
c2V1ZG9FbGVtZW50cygpIGNvbnN0Cit7CisgICAgU2VsZWN0b3JIYXNVbmtub3duUHNldWRvRWxl
bWVudEZ1bmN0b3IgZnVuY3RvcjsKKyAgICByZXR1cm4gZm9yRWFjaFNlbGVjdG9yKGZ1bmN0b3Is
IHRoaXMpOworfQorCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmggYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3Qu
aAppbmRleCA5ZTQwZWY4NTg5N2M5NGRiM2QyMDQxODQ2NGI5NTRhYWY1NGYzOGM1Li43YWRjNmI5
ZjU4N2Q0YTcxNTY4NTE4ZWRkMWZlM2RjOGQ5OGEwYzUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvckxpc3QuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaApA
QCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNPbmVTZWxlY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VsZWN0b3JBcnJheSA/IG1fc2VsZWN0b3JBcnJheS0+aXNMYXN0SW5TZWxl
Y3Rvckxpc3QoKSA6IGZhbHNlOyB9CiAKICAgICBib29sIHNlbGVjdG9yc05lZWROYW1lc3BhY2VS
ZXNvbHV0aW9uKCk7CisgICAgYm9vbCBoYXNVbmtub3duUHNldWRvRWxlbWVudHMoKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZVNlbGVjdG9ycygpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAppbmRleCBlZGIyMTZmNWFkMzllZTg5ZDhhMmJmY2IyOTY2NWE3MGZmZTc0NTRkLi5l
NTFkMTJkZTEwNjRkMTU1OGQ4MjFlNzA5NDRmOWYxMzJkYTEwN2Y3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcApAQCAtNDI0LDYgKzQyNCw3IEBAIHB1YmxpYzoKICAgICBDU1NSdWxlRGF0YUxp
c3QqIGdldElEUnVsZXMoQXRvbWljU3RyaW5nSW1wbCoga2V5KSB7IHJldHVybiBtX2lkUnVsZXMu
Z2V0KGtleSk7IH0KICAgICBDU1NSdWxlRGF0YUxpc3QqIGdldENsYXNzUnVsZXMoQXRvbWljU3Ry
aW5nSW1wbCoga2V5KSB7IHJldHVybiBtX2NsYXNzUnVsZXMuZ2V0KGtleSk7IH0KICAgICBDU1NS
dWxlRGF0YUxpc3QqIGdldFRhZ1J1bGVzKEF0b21pY1N0cmluZ0ltcGwqIGtleSkgeyByZXR1cm4g
bV90YWdSdWxlcy5nZXQoa2V5KTsgfQorICAgIENTU1J1bGVEYXRhTGlzdCogZ2V0UHNldWRvUnVs
ZXMoQXRvbWljU3RyaW5nSW1wbCoga2V5KSB7IHJldHVybiBtX3BzZXVkb1J1bGVzLmdldChrZXkp
OyB9CiAgICAgQ1NTUnVsZURhdGFMaXN0KiBnZXRVbml2ZXJzYWxSdWxlcygpIHsgcmV0dXJuIG1f
dW5pdmVyc2FsUnVsZXMuZ2V0KCk7IH0KICAgICBDU1NSdWxlRGF0YUxpc3QqIGdldFBhZ2VSdWxl
cygpIHsgcmV0dXJuIG1fcGFnZVJ1bGVzLmdldCgpOyB9CiAgICAgCkBAIC00MzEsNiArNDMyLDcg
QEAgcHVibGljOgogICAgIEF0b21SdWxlTWFwIG1faWRSdWxlczsKICAgICBBdG9tUnVsZU1hcCBt
X2NsYXNzUnVsZXM7CiAgICAgQXRvbVJ1bGVNYXAgbV90YWdSdWxlczsKKyAgICBBdG9tUnVsZU1h
cCBtX3BzZXVkb1J1bGVzOwogICAgIE93blB0cjxDU1NSdWxlRGF0YUxpc3Q+IG1fdW5pdmVyc2Fs
UnVsZXM7CiAgICAgT3duUHRyPENTU1J1bGVEYXRhTGlzdD4gbV9wYWdlUnVsZXM7CiAgICAgdW5z
aWduZWQgbV9ydWxlQ291bnQ7CkBAIC02NTgsNiArNjYwLDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWF0Y2hSdWxlcyhDU1NSdWxlU2V0KiBydWxlcywgaW50JiBmaXJzdFJ1bGVJbmRleCwg
aW50JiBsCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAg
ICAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldENsYXNzUnVsZXMoY2xhc3NOYW1lc1tp
XS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgaW5jbHVkZUVtcHR5UnVs
ZXMpOwogICAgIH0KKyAgICBpZiAoIW1fZWxlbWVudC0+c2hhZG93UHNldWRvSWQoKS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fc3R5bGVkRWxlbWVudCk7CisgICAgICAgIG1hdGNoUnVs
ZXNGb3JMaXN0KHJ1bGVzLT5nZXRQc2V1ZG9SdWxlcyhtX2VsZW1lbnQtPnNoYWRvd1BzZXVkb0lk
KCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVFbXB0eVJ1
bGVzKTsKKyAgICB9CiAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldFRhZ1J1bGVzKG1f
ZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5k
ZXgsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICBtYXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0
VW5pdmVyc2FsUnVsZXMoKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgsIGluY2x1ZGVF
bXB0eVJ1bGVzKTsKICAgICAKQEAgLTIwNTEsNiArMjA1NywxNCBAQCBDU1NTdHlsZVNlbGVjdG9y
OjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tT
ZWxlY3RvcgogICAgICAgICAgICAgICAgICEoKFJlbmRlclNjcm9sbGJhcjo6c2Nyb2xsYmFyRm9y
U3R5bGVSZXNvbHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09STkVSIHx8IGR5
bmFtaWNQc2V1ZG8gPT0gUkVTSVpFUikgJiYgc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0
ZWx5OwogICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0
dHJzLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGVsZW1lbnRTdHlsZSwg
ZWxlbWVudFBhcmVudFN0eWxlKTsKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVz
Y2VuZGFudDoKKyAgICAgICAgeworICAgICAgICAgICAgTm9kZSogc2hhZG93SG9zdE5vZGUgPSBl
LT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKKyAgICAgICAgICAgIGlmIChzaGFkb3dIb3N0Tm9kZSA9
PSBlIHx8ICFzaGFkb3dIb3N0Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAgICAgIGUgPSBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4oc2hhZG93SG9zdE5vZGUpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNr
U2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5j
b3VudGVyZWRMaW5rKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBTZWxlY3RvckZh
aWxzQ29tcGxldGVseTsKQEAgLTI3MDUsMTIgKzI3MTksOCBAQCBib29sIENTU1N0eWxlU2VsZWN0
b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBF
bGVtZQogICAgICAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGUtPmRvY3VtZW50KCkp
CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPnNldFVzZXNGaXJzdExldHRlclJ1bGVzKHRydWUp
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChwc2V1ZG9JZCAhPSBOT1BTRVVETykgeworICAgICAg
ICBpZiAocHNldWRvSWQgIT0gTk9QU0VVRE8pCiAgICAgICAgICAgICBkeW5hbWljUHNldWRvID0g
cHNldWRvSWQ7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAv
LyAjIyMgYWRkIHRoZSByZXN0IG9mIHRoZSBjaGVja3MuLi4KICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTI4MzEsMTIgKzI4NDEsMTcgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlKENTU1N0eWxlUnVs
ZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAg
CisgICAgaWYgKHNlbC0+aXNVbmtub3duUHNldWRvRWxlbWVudCgpKSB7CisgICAgICAgIGFkZFRv
UnVsZVNldChzZWwtPm1fdmFsdWUuaW1wbCgpLCBtX3BzZXVkb1J1bGVzLCBydWxlLCBzZWwpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUgPSBzZWwtPm1fdGFnLmxvY2FsTmFtZSgpOwogICAgIGlmIChsb2NhbE5hbWUgIT0gc3RhckF0
b20pIHsKICAgICAgICAgYWRkVG9SdWxlU2V0KGxvY2FsTmFtZS5pbXBsKCksIG1fdGFnUnVsZXMs
IHJ1bGUsIHNlbCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICAvLyBKdXN0
IHB1dCBpdCBpbiB0aGUgdW5pdmVyc2FsIHJ1bGUgc2V0LgogICAgIGlmICghbV91bml2ZXJzYWxS
dWxlcykKICAgICAgICAgbV91bml2ZXJzYWxSdWxlcyA9IGFkb3B0UHRyKG5ldyBDU1NSdWxlRGF0
YUxpc3QobV9ydWxlQ291bnQrKywgcnVsZSwgc2VsKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nz
cy9odG1sLmNzcyBiL1dlYkNvcmUvY3NzL2h0bWwuY3NzCmluZGV4IDgyM2Y1ZjMyZGI0ODRkN2M5
NmExYzcwNTUyOTljMDRhZTYxYmE2ZTUuLmQ2ZmJiZGZiZTEzODVkNTE3YWNlOTkwY2IxYzkxNWVl
MGY1YjJkNmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL2h0bWwuY3NzCisrKyBiL1dlYkNvcmUv
Y3NzL2h0bWwuY3NzCkBAIC00NzQsNiArNDc0LDcgQEAgaW5wdXRbdHlwZT0icmFuZ2UiXSB7CiAK
IGlucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKICAgICAtd2Via2l0
LWFwcGVhcmFuY2U6IHNsaWRlcnRodW1iLWhvcml6b250YWw7CisgICAgZGlzcGxheTogYmxvY2s7
CiB9CiAKIGlucHV0W3R5cGU9ImJ1dHRvbiJdOmRpc2FibGVkLCBpbnB1dFt0eXBlPSJzdWJtaXQi
XTpkaXNhYmxlZCwgaW5wdXRbdHlwZT0icmVzZXQiXTpkaXNhYmxlZCwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA5YmFkNjZm
Y2ZkNGU2MmRiYTJkZGQwN2JiYjdlNmE1ZjU3NzIyNjM4Li42YWJmYTJiMzZmMGQzN2RjYzczOWQy
ZTk4ZmFmYjFkOTQ4M2I0Mzg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysr
IGIvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yMjcsNiArMjI3LDcgQEAgcHVibGljOgogCiAg
ICAgTm9kZSogc2hhZG93Um9vdCgpOwogICAgIHZvaWQgc2V0U2hhZG93Um9vdChQYXNzUmVmUHRy
PE5vZGU+KTsKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
OwogCiAgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETyk7
CiAKQEAgLTUwNCw2ICs1MDUsMTEgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6c2V0SWRBdHRyaWJ1
dGUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKICAgICBzZXRBdHRyaWJ1dGUoZG9jdW1lbnQo
KS0+aWRBdHRyaWJ1dGVOYW1lKCksIHZhbHVlKTsKIH0KIAoraW5saW5lIEF0b21pY1N0cmluZyBF
bGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEF0b21pY1N0cmlu
ZygpOworfQorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYzBkNDdlNDk5M2Q5NjAx
YjZkYzM3YjU1NDQxNDE5M2NjNzM3OWQxOS4uNGQ2NGU4MmJhOGFmYzk0NTZhNmUzY2Y1NWJjZjgw
MDIyMTVkNDQ5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTE1OTQsNyArMTU5NCw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4g
Tm9kZTo6cXVlcnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ29k
ZSYKICAgICBDU1NTZWxlY3Rvckxpc3QgcXVlcnlTZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJzZVNl
bGVjdG9yKHNlbGVjdG9ycywgZG9jdW1lbnQoKSwgcXVlcnlTZWxlY3Rvckxpc3QpOwogCi0gICAg
aWYgKCFxdWVyeVNlbGVjdG9yTGlzdC5maXJzdCgpKSB7CisgICAgaWYgKCFxdWVyeVNlbGVjdG9y
TGlzdC5maXJzdCgpIHx8IHF1ZXJ5U2VsZWN0b3JMaXN0Lmhhc1Vua25vd25Qc2V1ZG9FbGVtZW50
cygpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQpAQCAtMTY0MSw3ICsxNjQxLDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6cXVlcnlT
ZWxlY3RvckFsbChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRXhjZXB0aW9uQ28KICAgICBDU1NT
ZWxlY3Rvckxpc3QgcXVlcnlTZWxlY3Rvckxpc3Q7CiAgICAgcC5wYXJzZVNlbGVjdG9yKHNlbGVj
dG9ycywgZG9jdW1lbnQoKSwgcXVlcnlTZWxlY3Rvckxpc3QpOwogCi0gICAgaWYgKCFxdWVyeVNl
bGVjdG9yTGlzdC5maXJzdCgpKSB7CisgICAgaWYgKCFxdWVyeVNlbGVjdG9yTGlzdC5maXJzdCgp
IHx8IHF1ZXJ5U2VsZWN0b3JMaXN0Lmhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cygpKSB7CiAgICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKaW5kZXggODIwNTc0NjY0YzNlY2FmNWRiNzQ2
ZmI0YWNiNWY5OTRlY2Q4OWUzZi4uNTIyMGYyYmRhZWYwY2FhMzY4ZTJiMmViMDBhZWI2MDExZWY3
Nzk1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
aAorKysgYi9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCkBAIC0zMyw2
ICszMyw3IEBACiAjZGVmaW5lIFNsaWRlclRodW1iRWxlbWVudF9oCiAKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJT
aGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtNTAsNiArNTEs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmlu
ZyBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCiBwcml2YXRlOiAgICAgICAgCiAgICAgU2xpZGVy
VGh1bWJFbGVtZW50KEhUTUxFbGVtZW50KiBzaGFkb3dQYXJlbnQpOwpAQCAtNjksNiArNzEsMTIg
QEAgaW5saW5lIFBhc3NSZWZQdHI8U2xpZGVyVGh1bWJFbGVtZW50PiBTbGlkZXJUaHVtYkVsZW1l
bnQ6OmNyZWF0ZShIVE1MRWxlbWVudCogc2gKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNsaWRl
clRodW1iRWxlbWVudChzaGFkb3dQYXJlbnQpKTsKIH0KIAoraW5saW5lIEF0b21pY1N0cmluZyBT
bGlkZXJUaHVtYkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2xpZGVyVGh1bWIsICgiLXdlYmtpdC1zbGlkZXIt
dGh1bWIiKSk7CisgICAgcmV0dXJuIHNsaWRlclRodW1iOworfQorCiB9CiAKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNsaWRlci5jcHAKaW5kZXggYjczYTFhY2FhOWU2MjRjYTE4Njg2Yzc3NmViODg2MzQw
YzcwMTJlMi4uZWY2OWU0MTA3YjQ1ZmNkNTFjMGE2YjJmM2E4MGU5YWQ5ZWY3YzFhMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyU2xpZGVyLmgiCiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAi
Q1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKQEAgLTExMiwyOSArMTEzLDE4IEBAIHZv
aWQgUmVuZGVyU2xpZGVyOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclNs
aWRlcjo6Y3JlYXRlVGh1bWJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCiB7
Ci0gICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZTsKLSAgICBSZW5kZXJTdHlsZSogcHNldWRv
U3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShTTElERVJfVEhVTUIpOwotICAgIGlmIChwc2V1
ZG9TdHlsZSkKLSAgICAgICAgLy8gV2UgbWF5IGJlIHNoYXJpbmcgc3R5bGUgd2l0aCBhbm90aGVy
IHNsaWRlciwgYnV0IHdlIG11c3Qgbm90IHNoYXJlIHRoZSB0aHVtYiBzdHlsZS4KLSAgICAgICAg
c3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUocHNldWRvU3R5bGUpOwotICAgIGVsc2UKLSAgICAg
ICAgc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0KLSAgICBpZiAocGFyZW50U3R5bGUp
Ci0gICAgICAgIHN0eWxlLT5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7Ci0KLSAgICBzdHlsZS0+
c2V0RGlzcGxheShCTE9DSyk7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiB0aHVtYlN0eWxlID0g
ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZUZvckVsZW1lbnQobV90aHVtYi5nZXQo
KSwgc3R5bGUoKSwgZmFsc2UpOwogCiAgICAgaWYgKHBhcmVudFN0eWxlLT5hcHBlYXJhbmNlKCkg
PT0gU2xpZGVyVmVydGljYWxQYXJ0KQotICAgICAgICBzdHlsZS0+c2V0QXBwZWFyYW5jZShTbGlk
ZXJUaHVtYlZlcnRpY2FsUGFydCk7CisgICAgICAgIHRodW1iU3R5bGUtPnNldEFwcGVhcmFuY2Uo
U2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpOwogICAgIGVsc2UgaWYgKHBhcmVudFN0eWxlLT5hcHBl
YXJhbmNlKCkgPT0gU2xpZGVySG9yaXpvbnRhbFBhcnQpCi0gICAgICAgIHN0eWxlLT5zZXRBcHBl
YXJhbmNlKFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQpOworICAgICAgICB0aHVtYlN0eWxlLT5z
ZXRBcHBlYXJhbmNlKFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQpOwogICAgIGVsc2UgaWYgKHBh
cmVudFN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gTWVkaWFTbGlkZXJQYXJ0KQotICAgICAgICBzdHls
ZS0+c2V0QXBwZWFyYW5jZShNZWRpYVNsaWRlclRodW1iUGFydCk7CisgICAgICAgIHRodW1iU3R5
bGUtPnNldEFwcGVhcmFuY2UoTWVkaWFTbGlkZXJUaHVtYlBhcnQpOwogICAgIGVsc2UgaWYgKHBh
cmVudFN0eWxlLT5hcHBlYXJhbmNlKCkgPT0gTWVkaWFWb2x1bWVTbGlkZXJQYXJ0KQotICAgICAg
ICBzdHlsZS0+c2V0QXBwZWFyYW5jZShNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydCk7CisgICAg
ICAgIHRodW1iU3R5bGUtPnNldEFwcGVhcmFuY2UoTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQp
OwogCi0gICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdGh1bWJTdHlsZS5y
ZWxlYXNlKCk7CiB9CiAKIEludFJlY3QgUmVuZGVyU2xpZGVyOjp0aHVtYlJlY3QoKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5kZXggMDgzOTg2
NDc4ZDNiNDU2NWM0NjNmODdlY2VjZjkzMjE1ZjYwZjhiOS4uN2NkNDkwMzAxYTE3NWMzZjE5ZmZj
Y2Y4ZjY2ZWFhZjlmZmI2ZjUzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZUNvbnN0YW50cy5oCkBAIC02OCw3ICs2OCw3IEBAIGVudW0gU3R5bGVEaWZmZXJlbmNl
Q29udGV4dFNlbnNpdGl2ZVByb3BlcnR5IHsKIGVudW0gUHNldWRvSWQgewogICAgIC8vIFRoZSBv
cmRlciBtdXN0IGJlIE5PUCBJRCwgcHVibGljIElEcywgYW5kIHRoZW4gaW50ZXJuYWwgSURzLgog
ICAgIE5PUFNFVURPLCBGSVJTVF9MSU5FLCBGSVJTVF9MRVRURVIsIEJFRk9SRSwgQUZURVIsIFNF
TEVDVElPTiwgRklSU1RfTElORV9JTkhFUklURUQsIFNDUk9MTEJBUiwgRklMRV9VUExPQURfQlVU
VE9OLCBJTlBVVF9QTEFDRUhPTERFUiwKLSAgICBTTElERVJfVEhVTUIsIFNFQVJDSF9DQU5DRUxf
QlVUVE9OLCBTRUFSQ0hfREVDT1JBVElPTiwgU0VBUkNIX1JFU1VMVFNfREVDT1JBVElPTiwgU0VB
UkNIX1JFU1VMVFNfQlVUVE9OLCBNRURJQV9DT05UUk9MU19QQU5FTCwKKyAgICBTRUFSQ0hfQ0FO
Q0VMX0JVVFRPTiwgU0VBUkNIX0RFQ09SQVRJT04sIFNFQVJDSF9SRVNVTFRTX0RFQ09SQVRJT04s
IFNFQVJDSF9SRVNVTFRTX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfUEFORUwsCiAgICAgTUVESUFf
Q09OVFJPTFNfUExBWV9CVVRUT04sIE1FRElBX0NPTlRST0xTX01VVEVfQlVUVE9OLCBNRURJQV9D
T05UUk9MU19USU1FTElORSwgTUVESUFfQ09OVFJPTFNfVElNRUxJTkVfQ09OVEFJTkVSLAogICAg
IE1FRElBX0NPTlRST0xTX1ZPTFVNRV9TTElERVIsIE1FRElBX0NPTlRST0xTX1ZPTFVNRV9TTElE
RVJfQ09OVEFJTkVSLCBNRURJQV9DT05UUk9MU19WT0xVTUVfU0xJREVSX01VVEVfQlVUVE9OLCAK
ICAgICBNRURJQV9DT05UUk9MU19DVVJSRU5UX1RJTUVfRElTUExBWSwgTUVESUFfQ09OVFJPTFNf
VElNRV9SRU1BSU5JTkdfRElTUExBWSwgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78338</attachid>
            <date>2011-01-08 20:05:03 -0800</date>
            <delta_ts>2011-01-11 12:53:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46595-20110108200502.patch</filename>
            <type>text/plain</type>
            <size>31854</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MjZiNmZjMTc2NGEwNWVhZmZlMjAyNjA4YjczZWVkMGM5Mjg2NDc5Li5kNWY2ODk5
NjU0YTcyZmQxNmM5Nzg1ZjQxOGUyMzhlMTc1ZGVmZmFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDEtMDggIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHBzZXVk
by1zdHlsZSByZXNvbHV0aW9uIGxlc3MgaGFyZC1jb2RlZCB3aGVuIHVzZWQgdG8gc2VsZWN0IGEg
c2hhZG93IG5vZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ2NTk1CisKKyAgICAgICAgTmV3IHRlc3QgdGhhdCBjb21wcmVoZW5zaXZlbHkgdHJhdmVs
cyB0aGUgY29kZSBwYXRocyBhZmZlY3RlZCBieSB0aGUgY2hhbmdlLgorCisgICAgICAgICogZmFz
dC9jc3MvdW5rbm93bi1wc2V1ZG8tZWxlbWVudC1tYXRjaGluZy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzL3Vua25vd24tcHNldWRvLWVsZW1lbnQtbWF0Y2hpbmcuaHRt
bDogQWRkZWQuCisKIDIwMTEtMDEtMDcgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Vua25vd24tcHNldWRvLWVsZW1lbnQtbWF0Y2hp
bmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdW5rbm93bi1wc2V1ZG8tZWxl
bWVudC1tYXRjaGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDgxOTk3ZDFjMTI4NDFlYTRj
OWEwYzRhNWI5MGVhODhiYjQ4NzQ2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3Vua25vd24tcHNldWRvLWVsZW1lbnQtbWF0Y2hpbmctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjYgQEAKK1Rlc3RzIHZhcmlvdXMgc2VsZWN0b3IgY29tYmluYXRpb25zLCBjb250YWlu
aW5nIHVua25vd24gcHNldWRvIGVsZW1lbnQgc2VsZWN0b3JzLgorCis6Oi13ZWJraXQtc2xpZGVy
LXRodW1iIHNob3VsZCBtYXRjaDogUEFTUworOjotd2Via2l0LXNsaWRlci10aHVtYiwgd2hlcmUg
SFRNTCBpcyBub3QgZGVmYXVsdCBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBtYXRjaDogUEFTUworKnw6
Oi13ZWJraXQtc2xpZGVyLXRodW1iLCB3aGVyZSBIVE1MIGlzIG5vdCBkZWZhdWx0IG5hbWVzcGFj
ZSBzaG91bGQgbWF0Y2g6IFBBU1MKK2h0bWx8Ojotd2Via2l0LXNsaWRlci10aHVtYiwgd2hlcmUg
SFRNTCBpcyBub3QgZGVmYXVsdCBuYW1lc3BhY2Ugc2hvdWxkIG1hdGNoOiBQQVNTCisjZm9vOjot
d2Via2l0LXNsaWRlci10aHVtYiBzaG91bGQgbWF0Y2g6IFBBU1MKKy5iYXI6Oi13ZWJraXQtc2xp
ZGVyLXRodW1iIHNob3VsZCBtYXRjaDogUEFTUworI2Zvbzo6LXdlYmtpdC1zbGlkZXItdGh1bWIs
IHdoZXJlIEhUTUwgaXMgbm90IGRlZmF1bHQgbmFtZXNwYWNlIHNob3VsZCBub3QgbWF0Y2g6IFBB
U1MKKy5iYXI6Oi13ZWJraXQtc2xpZGVyLXRodW1iLCB3aGVyZSBIVE1MIGlzIG5vdCBkZWZhdWx0
IG5hbWVzcGFjZSBzaG91bGQgbm90IG1hdGNoOiBQQVNTCitodG1sfCNmb286Oi13ZWJraXQtc2xp
ZGVyLXRodW1iLCB3aGVyZSBIVE1MIGlzIG5vdCBkZWZhdWx0IG5hbWVzcGFjZSBzaG91bGQgbWF0
Y2g6IFBBU1MKK2h0bWx8LmJhcjo6LXdlYmtpdC1zbGlkZXItdGh1bWIsIHdoZXJlIEhUTUwgaXMg
bm90IGRlZmF1bHQgbmFtZXNwYWNlIHNob3VsZCBtYXRjaDogUEFTUworKnwjZm9vOjotd2Via2l0
LXNsaWRlci10aHVtYiwgd2hlcmUgSFRNTCBpcyBub3QgZGVmYXVsdCBuYW1lc3BhY2Ugc2hvdWxk
IG1hdGNoOiBQQVNTCitpbnB1dDo6LXdlYmtpdC1zbGlkZXItdGh1bWIgc2hvdWxkIG1hdGNoOiBQ
QVNTCitpbnB1dCNmb286Oi13ZWJraXQtc2xpZGVyLXRodW1iIHNob3VsZCBtYXRjaDogUEFTUwor
aW5wdXQuYmFyOjotd2Via2l0LXNsaWRlci10aHVtYiBzaG91bGQgbWF0Y2g6IFBBU1MKK2lucHV0
Ojotd2Via2l0LXNsaWRlci10aHVtYiwgd2hlcmUgSFRNTCBpcyBub3QgZGVmYXVsdCBuYW1lc3Bh
Y2Ugc2hvdWxkIG5vdCBtYXRjaDogUEFTUworaW5wdXQjZm9vOjotd2Via2l0LXNsaWRlci10aHVt
Yiwgd2hlcmUgSFRNTCBpcyBub3QgZGVmYXVsdCBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBtYXRjaDog
UEFTUworaW5wdXQuYmFyOjotd2Via2l0LXNsaWRlci10aHVtYiwgd2hlcmUgSFRNTCBpcyBub3Qg
ZGVmYXVsdCBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBtYXRjaDogUEFTUworaHRtbHxpbnB1dDo6LXdl
YmtpdC1zbGlkZXItdGh1bWIsIHdoZXJlIEhUTUwgaXMgbm90IGRlZmF1bHQgbmFtZXNwYWNlIHNo
b3VsZCBtYXRjaDogUEFTUworaHRtbHxpbnB1dCNmb286Oi13ZWJraXQtc2xpZGVyLXRodW1iLCB3
aGVyZSBIVE1MIGlzIG5vdCBkZWZhdWx0IG5hbWVzcGFjZSBzaG91bGQgbWF0Y2g6IFBBU1MKK2h0
bWx8aW5wdXQuYmFyOjotd2Via2l0LXNsaWRlci10aHVtYiwgd2hlcmUgSFRNTCBpcyBub3QgZGVm
YXVsdCBuYW1lc3BhY2Ugc2hvdWxkIG1hdGNoOiBQQVNTCisqfGlucHV0I2Zvbzo6LXdlYmtpdC1z
bGlkZXItdGh1bWIsIHdoZXJlIEhUTUwgaXMgbm90IGRlZmF1bHQgbmFtZXNwYWNlIHNob3VsZCBt
YXRjaDogUEFTUworaW5wdXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVyLXRodW1iIHNob3Vs
ZCBtYXRjaDogUEFTUworaW5wdXQjZm9vW3R5cGU9cmFuZ2VdOjotd2Via2l0LXNsaWRlci10aHVt
YiBzaG91bGQgbWF0Y2g6IFBBU1MKK2lucHV0LmJhclt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlk
ZXItdGh1bWIgc2hvdWxkIG1hdGNoOiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy91bmtub3duLXBzZXVkby1lbGVtZW50LW1hdGNoaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy91bmtub3duLXBzZXVkby1lbGVtZW50LW1hdGNoaW5nLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGZhZjE2MDgxMjVhMzQzZjA1ZWZhMGI5Mzk4NDU3ZTU3YmFlYTdlNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Vua25vd24tcHNldWRvLWVsZW1lbnQtbWF0Y2hpbmcu
aHRtbApAQCAtMCwwICsxLDc5IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlBzZXVkbyBFbGVt
ZW50IE1hdGNoaW5nIGluIFNoYWRvdyBET008L3RpdGxlPgorPHN0eWxlPgorICAgIGlucHV0W3R5
cGU9cmFuZ2VdIHsKKyAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOworICAgIH0KKzwv
c3R5bGU+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGhlYWQ7Cit2YXIgaW5w
dXQ7Cit2YXIgbG9nRGl2OwordmFyIE5BTUVTUEFDRV9ERUNMQVJBVElPTiA9ICdAbmFtZXNwYWNl
ICJodHRwOi8vZXhhbXBsZS5jb20vZm9vL25hbWVzcGFjZSI7XG5AbmFtZXNwYWNlIGh0bWwgImh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiO1xuJzsKK3ZhciBTRUxFQ1RPUl9URVNUX1BST1BF
UlRJRVMgPSAnIHsgaGVpZ2h0OiAxcHg7IC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfSc7CisK
Ky8vIGNvbnZlbmllbmNlIGNvbnN0YW50cwordmFyIE1BVENIID0gdHJ1ZTsKK3ZhciBOT19NQVRD
SCA9IGZhbHNlOwordmFyIFdJVEhfTkFNRVNQQUNFUyA9IHRydWU7CisKK2Z1bmN0aW9uIGxvZyht
c2csIHN1Y2Nlc3MpCit7CisgICAgbG9nRGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpKS5pbm5lckhUTUwgPSBtc2cgKyAnOiAnICsgKHN1Y2Nlc3MgPyAnUEFTUycg
OiAnRkFJTCcpOworfQorCitmdW5jdGlvbiBydW5TZWxlY3RvclRlc3QobWF0Y2hFeHBlY3RlZCwg
c2VsZWN0b3IsIHVzZU5hbWVzcGFjZXMpCit7CisgICAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc3R5bGUnKTsKKyAgICBzdHlsZS50ZXh0Q29udGVudCA9ICh1c2VOYW1lc3Bh
Y2VzID8gTkFNRVNQQUNFX0RFQ0xBUkFUSU9OIDogJycpICsgc2VsZWN0b3IgKyBTRUxFQ1RPUl9U
RVNUX1BST1BFUlRJRVM7CisgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7CisgICAgdmFyIG1h
dGNoZWQgPSBpbnB1dC5vZmZzZXRIZWlnaHQgPT0gMTsKKyAgICBsb2coJzxjb2RlPicgKyBzZWxl
Y3RvciArICc8L2NvZGU+JyArICh1c2VOYW1lc3BhY2VzID8gJywgd2hlcmUgIEhUTUwgaXMgbm90
IGRlZmF1bHQgbmFtZXNwYWNlJyA6ICcnKSArICcgPHN0cm9uZz5zaG91bGQnICsgKG1hdGNoRXhw
ZWN0ZWQgPyAnJyA6ICcgbm90JykgKyAnPC9zdHJvbmc+IG1hdGNoJywgbWF0Y2hFeHBlY3RlZCA/
IG1hdGNoZWQgOiAhbWF0Y2hlZCk7CisgICAgaGVhZC5yZW1vdmVDaGlsZChzdHlsZSk7Cit9CisK
K2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnaGVhZCcpWzBdOworICAgIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ2lucHV0JylbMF07CisgICAgbG9nRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xvZycpOworICAgIHJ1blNlbGVjdG9yVGVzdChNQVRDSCwgJzo6LXdlYmtpdC1zbGlkZXItdGh1
bWInKTsKKyAgICBydW5TZWxlY3RvclRlc3QoTk9fTUFUQ0gsICc6Oi13ZWJraXQtc2xpZGVyLXRo
dW1iJywgV0lUSF9OQU1FU1BBQ0VTKTsKKyAgICBydW5TZWxlY3RvclRlc3QoTUFUQ0gsICcqfDo6
LXdlYmtpdC1zbGlkZXItdGh1bWInLCBXSVRIX05BTUVTUEFDRVMpOworICAgIHJ1blNlbGVjdG9y
VGVzdChNQVRDSCwgJ2h0bWx8Ojotd2Via2l0LXNsaWRlci10aHVtYicsIFdJVEhfTkFNRVNQQUNF
Uyk7CisgICAgcnVuU2VsZWN0b3JUZXN0KE1BVENILCAnI2Zvbzo6LXdlYmtpdC1zbGlkZXItdGh1
bWInKTsKKyAgICBydW5TZWxlY3RvclRlc3QoTUFUQ0gsICcuYmFyOjotd2Via2l0LXNsaWRlci10
aHVtYicpOworICAgIHJ1blNlbGVjdG9yVGVzdChOT19NQVRDSCwgJyNmb286Oi13ZWJraXQtc2xp
ZGVyLXRodW1iJywgV0lUSF9OQU1FU1BBQ0VTKTsKKyAgICBydW5TZWxlY3RvclRlc3QoTk9fTUFU
Q0gsICcuYmFyOjotd2Via2l0LXNsaWRlci10aHVtYicsIFdJVEhfTkFNRVNQQUNFUyk7CisgICAg
cnVuU2VsZWN0b3JUZXN0KE1BVENILCAnaHRtbHwjZm9vOjotd2Via2l0LXNsaWRlci10aHVtYics
IFdJVEhfTkFNRVNQQUNFUyk7CisgICAgcnVuU2VsZWN0b3JUZXN0KE1BVENILCAnaHRtbHwuYmFy
Ojotd2Via2l0LXNsaWRlci10aHVtYicsIFdJVEhfTkFNRVNQQUNFUyk7CisgICAgcnVuU2VsZWN0
b3JUZXN0KE1BVENILCAnKnwjZm9vOjotd2Via2l0LXNsaWRlci10aHVtYicsIFdJVEhfTkFNRVNQ
QUNFUyk7CisgICAgcnVuU2VsZWN0b3JUZXN0KE1BVENILCAnaW5wdXQ6Oi13ZWJraXQtc2xpZGVy
LXRodW1iJyk7CisgICAgcnVuU2VsZWN0b3JUZXN0KE1BVENILCAnaW5wdXQjZm9vOjotd2Via2l0
LXNsaWRlci10aHVtYicpOworICAgIHJ1blNlbGVjdG9yVGVzdChNQVRDSCwgJ2lucHV0LmJhcjo6
LXdlYmtpdC1zbGlkZXItdGh1bWInKTsKKyAgICBydW5TZWxlY3RvclRlc3QoTk9fTUFUQ0gsICdp
bnB1dDo6LXdlYmtpdC1zbGlkZXItdGh1bWInLCBXSVRIX05BTUVTUEFDRVMpOworICAgIHJ1blNl
bGVjdG9yVGVzdChOT19NQVRDSCwgJ2lucHV0I2Zvbzo6LXdlYmtpdC1zbGlkZXItdGh1bWInLCBX
SVRIX05BTUVTUEFDRVMpOworICAgIHJ1blNlbGVjdG9yVGVzdChOT19NQVRDSCwgJ2lucHV0LmJh
cjo6LXdlYmtpdC1zbGlkZXItdGh1bWInLCBXSVRIX05BTUVTUEFDRVMpOworICAgIHJ1blNlbGVj
dG9yVGVzdChNQVRDSCwgJ2h0bWx8aW5wdXQ6Oi13ZWJraXQtc2xpZGVyLXRodW1iJywgV0lUSF9O
QU1FU1BBQ0VTKTsKKyAgICBydW5TZWxlY3RvclRlc3QoTUFUQ0gsICdodG1sfGlucHV0I2Zvbzo6
LXdlYmtpdC1zbGlkZXItdGh1bWInLCBXSVRIX05BTUVTUEFDRVMpOworICAgIHJ1blNlbGVjdG9y
VGVzdChNQVRDSCwgJ2h0bWx8aW5wdXQuYmFyOjotd2Via2l0LXNsaWRlci10aHVtYicsIFdJVEhf
TkFNRVNQQUNFUyk7CisgICAgcnVuU2VsZWN0b3JUZXN0KE1BVENILCAnKnxpbnB1dCNmb286Oi13
ZWJraXQtc2xpZGVyLXRodW1iJywgV0lUSF9OQU1FU1BBQ0VTKTsKKyAgICBydW5TZWxlY3RvclRl
c3QoTUFUQ0gsICdpbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItdGh1bWInKTsKKyAg
ICBydW5TZWxlY3RvclRlc3QoTUFUQ0gsICdpbnB1dCNmb29bdHlwZT1yYW5nZV06Oi13ZWJraXQt
c2xpZGVyLXRodW1iJyk7CisgICAgcnVuU2VsZWN0b3JUZXN0KE1BVENILCAnaW5wdXQuYmFyW3R5
cGU9cmFuZ2VdOjotd2Via2l0LXNsaWRlci10aHVtYicpOworICAgIGRvY3VtZW50LmJvZHkucmVt
b3ZlQ2hpbGQoaW5wdXQpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0cyB2YXJpb3VzIHNlbGVjdG9yIGNvbWJpbmF0aW9ucywg
Y29udGFpbmluZyB1bmtub3duIHBzZXVkbyBlbGVtZW50IHNlbGVjdG9ycy48L3A+CisgICAgPGlu
cHV0IGlkPSJmb28iIGNsYXNzPSJiYXIiIHR5cGU9InJhbmdlIj4KKyAgICA8ZGl2IGlkPSJsb2ci
PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEwNGU2ZGVmYmJmZThmMWQ5
YmNiZThjYjVlNTdhZjdmMzNlNjk3MDYuLjZiNDFkNWNkOGM4Yzk4NTQ3NGFkMTczNTlmNmIwYmQy
ZWZiMTQxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMS0wMS0wOCAgRGltaXRy
aSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgcHNldWRvLXN0eWxlIHJlc29sdXRpb24g
bGVzcyBoYXJkLWNvZGVkIHdoZW4gdXNlZCB0byBzZWxlY3QgYSBzaGFkb3cgbm9kZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTUKKworICAgICAg
ICBFc3NlbnRpYWxseSBpbXBsZW1lbnRzIHRoZSBwbHVtYmluZyBmb3IgdGhlIFhCTDIgcHNldWRv
IGF0dHJpYnV0ZToKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvMjAwNi94YmwyLyN0aGUtcHNl
dWRvLWF0dHJpYnV0ZQorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL3Vua25vd24tcHNldWRvLWVs
ZW1lbnQtbWF0Y2hpbmcuaHRtbAorCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueTogQ2hhbmdl
ZCB0byBoYW5kbGUgc3BlY2lmaWVyX2xpc3Qgc3RydWN0dXJlIHdpdGggdGhlCisgICAgICAgICAg
ICBDU1NQYXJzZXI6OnVwZGF0ZVNwZWNpZmllcldpdGhFbGVtZW50TmFtZSBoZWxwZXIsIGFkZGVk
IGxvZ2ljIHRvCisgICAgICAgICAgICBrZWVwIHVua25vd24gcHNldWRvLWVsZW1lbnQgc2VsZWN0
b3JzIGF0IHRoZSB0b3Agb2YgdGhlIHNlbGVjdG9yIGNoYWluLAorICAgICAgICAgICAgc28gdGhh
dCB3ZSBjYW4gZWFzaWx5IGNoZWNrIGZvciB0aGVtIGFuZCBncmFiIHRoZW0sIGFuZCBhbHNvIGJl
Y2F1c2UKKyAgICAgICAgICAgIHRoZXkgd291bGQgZWl0aGVyIG5vdCBtYXRjaCBhbnl0aGluZyBv
ciBhY3QgYXMgYSBkZXNjZW5kYW50IHNlbGVjdG9yCisgICAgICAgICAgICAoZGVzY2VuZGFudCBp
bnRvIGEgc2hhZG93IERPTSBzdWJ0cmVlIHRoYXQgaXMpLCBub3QgYSBzcGVjaWZpZXIuCisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnVw
ZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUpOiBHZW5lcmFsaXplZC9jb21iaW5lZAorICAg
ICAgICAgICAgdGhlIGxvZ2ljIGFkZGluZyBlbGVtZW50IG5hbWUgdG8gc2VsZWN0b3JzIGFuZCBh
ZGRlZCB0aGUgc3BlY2lhbCBjYXNlCisgICAgICAgICAgICB0byBoYW5kbGUgdW5rbm93biBwc2V1
ZG8tZWxlbWVudCBzZWxlY3RvcnMuCisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOiBBZGRlZCBk
ZWYuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yOjpwc2V1ZG9JZCk6IFJlbW92ZWQgYW55IG1lbnRpb24gb2YgUHNldWRvU2xpZGVy
VGh1bWIvU0xJREVSX1RIVU1CLgorICAgICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1h
cCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9U
eXBlKTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6IEFkZGVkIGEgbmV3IFNo
YWRvd0Rlc2NlbmRhbnQgcmVsYXRpb24gdHlwZSwKKyAgICAgICAgICAgIHJlbW92ZWQgUHNldWRv
U2xpZGVyVGh1bWIgZGVmLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmlzVW5rbm93
blBzZXVkb0VsZW1lbnQpOiBBZGRlZCBhIGhlbHBlciBtZXRob2QuCisgICAgICAgICogY3NzL0NT
U1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rvckhhc1Vua25vd25Q
c2V1ZG9FbGVtZW50RnVuY3Rvcjo6b3BlcmF0b3IoKSk6IEFkZGVkIGEgZnVuY3RvcgorICAgICAg
ICAgICAgdG8gY2hlY2sgZm9yIGFuIHVua25vd24gcHNldWRvLWVsZW1lbnQgaW4gdGhlIGxpc3Qu
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Omhhc1Vua25vd25Qc2V1ZG9FbGVt
ZW50cyk6IEFkZGVkLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuaDogQWRkZWQgYSBk
ZWYuCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUnVsZVNldDo6Z2V0UHNldWRvUnVsZXMpOiBBZGRlZCBhY2Nlc3NvciB0byBwc2V1ZG8t
ZWxlbWVudCBoYXNoLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hS
dWxlcyk6IEFkZGVkIG1hdGNoaW5nIHBzZXVkbyBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcik6IEFkZGVk
IGhhbmRsaW5nCisgICAgICAgICAgICBvZiBTaGFkb3dEZXNjZW5kYW50IHJlbGF0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKTogRW5hYmxlZCBoYW5kbGluZworICAgICAgICAgICAgb2YgdW5rbm93biBwc2V1
ZG8tZWxlbWVudCBzZWxlY3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpDU1NSdWxlU2V0OjphZGRS
dWxlKTogQWRkZWQgcG9wdWxhdGluZyB1bmtub3duIHBzZXVkby1lbGVtZW50IGhhc2guCisgICAg
ICAgICogY3NzL2h0bWwuY3NzOgorICAgICAgICAoaW5wdXRbdHlwZT0icmFuZ2UiXTo6LXdlYmtp
dC1zbGlkZXItdGh1bWIpOiBBZGRlZCBwcmV2aW91c2x5LWhhcmQtY29kZWQKKyAgICAgICAgICAg
IGRpc3BsYXk6YmxvY2suCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKTogQWRkZWQgbmV3IHZpcnR1YWwgbWV0aG9kIHRv
IGFsbG93CisgICAgICAgICAgICBlbGVtZW50cyB0byBwcm92aWRlIHRoZSB2YWx1ZSBvZiBwc2V1
ZG8tZWxlbWVudCBzZWxlY3RvciB0aGV5IHdvdWxkIG1hdGNoLgorICAgICAgICAqIGRvbS9Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnF1ZXJ5U2VsZWN0b3IpOiBBZGRlZCBjaGVj
a2luZyBmb3IgdW5rbm93biBwc2V1ZG8tZWxlbWVudCBzZWxlY3RvcnMsCisgICAgICAgICAgICBz
byB0aGF0IHdlIGNhbiB0aHJvdyBhIFNZTlRBWF9FUlIgaWYgZm91bmQuCisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpxdWVyeVNlbGVjdG9yQWxsKTogRGl0dG8uCisgICAgICAgICogaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVs
ZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKTogQWRkZWQgdG8gcmV0dXJuICItd2Via2l0LXNsaWRlci10
aHVtYiI7CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTbGlkZXI6OmNyZWF0ZVRodW1iU3R5bGUpOiBDaGFuZ2VkIHRvIHVzZSB0
aGUgbmV3IHN0eWxlRm9yRWxlbWVudCBsb2dpYy4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaDogUmVtb3ZlZCBTTElERVJfVEhVTUIuCisKIDIwMTEtMDEt
MDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSdWJiZXItc3Rh
bXBlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IGJhNTg1NWQ3
YzgyMDU1N2RiNDU3ZDM3MjI5MWRkYjI1YTQ2MDBiZWYuLmE1ZmU3OTU4N2I4MjBkNzk0ZDAxYzUz
OWY4Njg0MTVkNWVjYmM4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtOTAxLDE2ICs5
MDEsMTMgQEAgc2ltcGxlX3NlbGVjdG9yOgogICAgIH0KICAgICB8IGVsZW1lbnRfbmFtZSBzcGVj
aWZpZXJfbGlzdCB7CiAgICAgICAgICQkID0gJDI7Ci0gICAgICAgIGlmICgkJCkgewotICAgICAg
ICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAg
ICAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwLT5tX2Rl
ZmF1bHROYW1lc3BhY2UpOwotICAgICAgICB9CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxl
bWVudE5hbWUobnVsbEF0b20sICQxLCAkJCk7CiAgICAgfQogICAgIHwgc3BlY2lmaWVyX2xpc3Qg
ewogICAgICAgICAkJCA9ICQxOwotICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxD
U1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICBpZiAoJCQgJiYgcC0+bV9kZWZhdWx0TmFtZXNw
YWNlICE9IHN0YXJBdG9tKQotICAgICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSwgc3RhckF0b20sIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7CisgICAgICAgIGlmICgk
JCkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPnVwZGF0ZVNw
ZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCAkJCk7CiAgICAgfQog
ICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSB7CiAgICAgICAgIEF0b21pY1N0
cmluZyBuYW1lc3BhY2VQcmVmaXggPSAkMTsKQEAgLTkyNCwyNSArOTIxLDEzIEBAIHNpbXBsZV9z
ZWxlY3RvcjoKICAgICB9CiAgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNw
ZWNpZmllcl9saXN0IHsKICAgICAgICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKCQkKSB7Ci0gICAg
ICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNlUHJlZml4ID0gJDE7Ci0gICAgICAgICAgICBD
U1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICAg
ICAgaWYgKHAtPm1fc3R5bGVTaGVldCkKLSAgICAgICAgICAgICAgICAkJC0+bV90YWcgPSBRdWFs
aWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwgJDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwLT5tX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1l
c3BhY2VQcmVmaXgpKTsKLSAgICAgICAgICAgIGVsc2UgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlz
IGNhc2UgYmUgYW4gZXJyb3I/Ci0gICAgICAgICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVk
TmFtZShudWxsQXRvbSwgJDIsIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKCQkKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2Vy
KS0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsKICAgICB9CiAg
ICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3Igc3BlY2lmaWVyX2xpc3QgewogICAgICAgICAkJCA9ICQy
OwotICAgICAgICBpZiAoJCQpIHsKLSAgICAgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQ
cmVmaXggPSAkMTsKLSAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1Bh
cnNlcio+KHBhcnNlcik7Ci0gICAgICAgICAgICBpZiAocC0+bV9zdHlsZVNoZWV0KQotICAgICAg
ICAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCBzdGFy
QXRvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPm1fc3R5
bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkpOwotICAgICAgICB9
CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBh
cnNlciktPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9tLCAkJCk7
CiAgICAgfQogICA7CiAKQEAgLTk3MCwxMyArOTU1LDIyIEBAIHNwZWNpZmllcl9saXN0OgogICAg
ICAgICBpZiAoISQyKQogICAgICAgICAgICAgJCQgPSAwOwogICAgICAgICBlbHNlIGlmICgkMSkg
ewotICAgICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRp
Y19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgICAgICBDU1NTZWxlY3RvciogZW5k
ID0gJDE7Ci0gICAgICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAgICAgICAg
ICBDU1NTZWxlY3RvciogZW5kOworICAgICAgICAgICAgQ1NTU2VsZWN0b3IqIGhpc3Rvcnk7Cisg
ICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB1bmtub3duIHBzZXVkbyBlbGVtZW50IGFsd2F5cyBz
dGF5cyBhdCB0aGUgdG9wIG9mIHNlbGVjdG9yIGNoYWluLgorICAgICAgICAgICAgaWYgKCQyLT5p
c1Vua25vd25Qc2V1ZG9FbGVtZW50KCkpIHsKKyAgICAgICAgICAgICAgICBlbmQgPSAkMjsKKyAg
ICAgICAgICAgICAgICBoaXN0b3J5ID0gJDE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGVuZCA9ICQxOworICAgICAgICAgICAgICAgIGhpc3RvcnkgPSAkMjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICQkID0gZW5kOworICAgICAgICAgICAgd2hpbGUoZW5kLT50
YWdIaXN0b3J5KCkpCiAgICAgICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7CiAg
ICAgICAgICAgICBlbmQtPm1fcmVsYXRpb24gPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I7Ci0g
ICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDIp
KTsKKyAgICAgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShwLT5zaW5rRmxvYXRpbmdTZWxlY3Rv
cihoaXN0b3J5KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJv
ciB7CkBAIC0xMTQxLDkgKzExMzUsNyBAQCBwc2V1ZG86CiAgICAgICAgICQzLmxvd2VyKCk7CiAg
ICAgICAgICQkLT5tX3ZhbHVlID0gJDM7CiAgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBl
IHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvVW5rbm93bikKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgZWxzZSBpZiAo
dHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RMaW5lKSB7CisgICAgICAgIGlmICh0eXBl
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdExpbmUpIHsKICAgICAgICAgICAgIENTU1BhcnNl
ciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICBpZiAo
RG9jdW1lbnQqIGRvYyA9IHAtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgZG9jLT5zZXRV
c2VzRmlyc3RMaW5lUnVsZXModHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDBj
MDNiOTNiMDEzYzQwZTcwYmUwMGJmNzA5ODZkOGM5MmI4NTM2MjIuLmZmN2MzNGQ5OTExZDZhM2Uz
OWI2NDBmNzZjMjcwNzI5N2E1YWI5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC01
OTMzLDYgKzU5MzMsMzUgQEAgdm9pZCBDU1NQYXJzZXI6OmFkZE5hbWVzcGFjZShjb25zdCBBdG9t
aWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiB1cmkKICAgICBtX3N0eWxlU2hl
ZXQtPmFkZE5hbWVzcGFjZSh0aGlzLCBwcmVmaXgsIHVyaSk7CiB9CiAKK3ZvaWQgQ1NTUGFyc2Vy
Ojp1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnROYW1lLCBDU1NTZWxlY3Rv
ciogc3BlY2lmaWVycykKK3sKKyAgICBBdG9taWNTdHJpbmcgZGV0ZXJtaW5lZE5hbWVzcGFjZSA9
IG5hbWVzcGFjZVByZWZpeCAhPSBudWxsQXRvbSAmJiBtX3N0eWxlU2hlZXQgPyBtX3N0eWxlU2hl
ZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpIDogbV9kZWZhdWx0TmFtZXNw
YWNlOworICAgIFF1YWxpZmllZE5hbWUgdGFnID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVm
aXgsIGVsZW1lbnROYW1lLCBkZXRlcm1pbmVkTmFtZXNwYWNlKTsKKyAgICBpZiAoIXNwZWNpZmll
cnMtPmlzVW5rbm93blBzZXVkb0VsZW1lbnQoKSkgeworICAgICAgICBzcGVjaWZpZXJzLT5tX3Rh
ZyA9IHRhZzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChEb2N1bWVudCogZG9j
ID0gZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jLT5zZXRVc2VzRGVzY2VuZGFudFJ1bGVzKHRydWUp
OworCisgICAgc3BlY2lmaWVycy0+bV9yZWxhdGlvbiA9IENTU1NlbGVjdG9yOjpTaGFkb3dEZXNj
ZW5kYW50OworICAgIGlmIChDU1NTZWxlY3RvciogaGlzdG9yeSA9IHNwZWNpZmllcnMtPnRhZ0hp
c3RvcnkoKSkgeworICAgICAgICBoaXN0b3J5LT5tX3RhZyA9IHRhZzsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIE5vIG5lZWQgdG8gY3JlYXRlIGFuIGV4dHJhIGVsZW1lbnQgbmFt
ZSBzZWxlY3RvciBpZiB3ZSBhcmUgbWF0Y2hpbmcgYW55IGVsZW1lbnQKKyAgICAvLyBpbiBhbnkg
bmFtZXNwYWNlLgorICAgIGlmIChlbGVtZW50TmFtZSA9PSBzdGFyQXRvbSAmJiBtX2RlZmF1bHRO
YW1lc3BhY2UgPT0gc3RhckF0b20pCisgICAgICAgIHJldHVybjsKKworICAgIENTU1NlbGVjdG9y
KiBlbGVtZW50TmFtZVNlbGVjdG9yID0gZmFzdE5ldzxDU1NTZWxlY3Rvcj4oKTsKKyAgICBlbGVt
ZW50TmFtZVNlbGVjdG9yLT5tX3RhZyA9IHRhZzsKKyAgICBzcGVjaWZpZXJzLT5zZXRUYWdIaXN0
b3J5KGVsZW1lbnROYW1lU2VsZWN0b3IpOworfQorCisKIENTU1J1bGUqIENTU1BhcnNlcjo6Y3Jl
YXRlUGFnZVJ1bGUoQ1NTU2VsZWN0b3IqIHBhZ2VTZWxlY3RvcikKIHsKICAgICAvLyBGSVhNRTog
TWFyZ2luIGF0LXJ1bGVzIGFyZSBpZ25vcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGU2
MDUxOWVmMGM1NDM1MmE0YTExNmRiNGY3NTRlMDhlYTQyZjRkNWEuLmExOTZlNThhNzBhNzMzODE0
MWM3OGM3YjA1ZWMyOTQ2ODQ2M2ZhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTIwMyw2
ICsyMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NPd25QdHI8TWVkaWFR
dWVyeT4gc2lua0Zsb2F0aW5nTWVkaWFRdWVyeShNZWRpYVF1ZXJ5Kik7CiAKICAgICAgICAgdm9p
ZCBhZGROYW1lc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0
cmluZyYgdXJpKTsKKyAgICAgICAgdm9pZCB1cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1l
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcm
IGVsZW1lbnROYW1lLCBDU1NTZWxlY3RvciopOwogCiAgICAgICAgIHZvaWQgaW52YWxpZEJsb2Nr
SGl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IGMxMzlkYmYxYjYxYmM1
ODE3ZGQ3YjYwNGE2MjY3OWNhNGZhOTFlNzMuLjgzMGUxMmM5NDY3ZDAxYmIzMTgyMTU5OTBkNTg2
YzBlYzEyZWNhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMTQ4LDggKzE0
OCw2IEBAIFBzZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXBlIHR5cGUpCiAg
ICAgY2FzZSBQc2V1ZG9JbnB1dFNwZWVjaEJ1dHRvbjoKICAgICAgICAgcmV0dXJuIElOUFVUX1NQ
RUVDSF9CVVRUT047CiAjZW5kaWYKLSAgICBjYXNlIFBzZXVkb1NsaWRlclRodW1iOgotICAgICAg
ICByZXR1cm4gU0xJREVSX1RIVU1COwogICAgIGNhc2UgUHNldWRvU2VhcmNoQ2FuY2VsQnV0dG9u
OgogICAgICAgICByZXR1cm4gU0VBUkNIX0NBTkNFTF9CVVRUT047CiAgICAgY2FzZSBQc2V1ZG9T
ZWFyY2hEZWNvcmF0aW9uOgpAQCAtNDE3LDcgKzQxNSw2IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21p
Y1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVN
YXAoCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlYXJjaFJlc3VsdHNE
ZWNvcmF0aW9uLCAoIi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbiIpKTsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2VhcmNoUmVzdWx0c0J1dHRvbiwgKCIt
d2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgc2VsZWN0aW9uLCAoInNlbGVjdGlvbiIpKTsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2xpZGVyVGh1bWIsICgiLXdlYmtpdC1zbGlkZXItdGh1
bWIiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHRhcmdldCwgKCJ0
YXJnZXQiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHZpc2l0ZWQs
ICgidmlzaXRlZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgd2lu
ZG93SW5hY3RpdmUsICgid2luZG93LWluYWN0aXZlIikpOwpAQCAtNTQ2LDcgKzU0Myw2IEBAIHN0
YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4q
IG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChzZWFy
Y2hSZXN1bHRzRGVjb3JhdGlvbi5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9TZWFyY2hSZXN1
bHRzRGVjb3JhdGlvbik7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChzZWFyY2hSZXN1
bHRzQnV0dG9uLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb1NlYXJjaFJlc3VsdHNCdXR0b24p
OwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoc2VsZWN0aW9uLmltcGwoKSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb1NlbGVjdGlvbik7Ci0gICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChz
bGlkZXJUaHVtYi5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9TbGlkZXJUaHVtYik7CiAgICAg
ICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldCh0YXJnZXQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvVGFyZ2V0KTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHZpc2l0ZWQuaW1wbCgp
LCBDU1NTZWxlY3Rvcjo6UHNldWRvVmlzaXRlZCk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUt
PnNldChmaXJzdFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RQYWdlKTsKQEAg
LTYzNCw3ICs2MzAsNiBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNv
bnN0CiAgICAgY2FzZSBQc2V1ZG9TZWFyY2hSZXN1bHRzRGVjb3JhdGlvbjoKICAgICBjYXNlIFBz
ZXVkb1NlYXJjaFJlc3VsdHNCdXR0b246CiAgICAgY2FzZSBQc2V1ZG9TZWxlY3Rpb246Ci0gICAg
Y2FzZSBQc2V1ZG9TbGlkZXJUaHVtYjoKICAgICAgICAgZWxlbWVudCA9IHRydWU7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUHNldWRvVW5rbm93bjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgK
aW5kZXggMzUzZmI1ZTE3ODUxZGVmMDFkNGYxNWJkZjQwYWM5NmIwZDNlNTQ4Zi4uMTEwMWVlZGY4
OGI0NzVlMGJjMTZjODRkYjIyNTg5ODQ3YjU3MTQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmgKQEAgLTEwOSw3ICsxMDksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBD
aGlsZCwKICAgICAgICAgICAgIERpcmVjdEFkamFjZW50LAogICAgICAgICAgICAgSW5kaXJlY3RB
ZGphY2VudCwKLSAgICAgICAgICAgIFN1YlNlbGVjdG9yCisgICAgICAgICAgICBTdWJTZWxlY3Rv
ciwKKyAgICAgICAgICAgIFNoYWRvd0Rlc2NlbmRhbnQKICAgICAgICAgfTsKIAogICAgICAgICBl
bnVtIFBzZXVkb1R5cGUgewpAQCAtMTc3LDcgKzE3OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIFBzZXVkb05vQnV0dG9uLAogICAgICAgICAgICAgUHNldWRvU2VsZWN0aW9u
LAogICAgICAgICAgICAgUHNldWRvRmlsZVVwbG9hZEJ1dHRvbiwKLSAgICAgICAgICAgIFBzZXVk
b1NsaWRlclRodW1iLAogICAgICAgICAgICAgUHNldWRvU2VhcmNoQ2FuY2VsQnV0dG9uLAogICAg
ICAgICAgICAgUHNldWRvU2VhcmNoRGVjb3JhdGlvbiwKICAgICAgICAgICAgIFBzZXVkb1NlYXJj
aFJlc3VsdHNEZWNvcmF0aW9uLApAQCAtMjc3LDYgKzI3Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgICAgICBleHRyYWN0UHNldWRvVHlwZSgpOwogICAgICAgICAgICAgcmV0
dXJuIG1fbWF0Y2ggPT0gUHNldWRvRWxlbWVudDsKICAgICAgICAgfQorICAgICAgICBib29sIGlz
VW5rbm93blBzZXVkb0VsZW1lbnQoKSBjb25zdDsKIAogICAgICAgICBSZWxhdGlvbiByZWxhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbGF0aW9uPihtX3JlbGF0aW9uKTsgfQog
CkBAIC0zNDQsNiArMzQ1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUXVhbGlm
aWVkTmFtZSBtX3RhZzsKICAgICB9OwogCitpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6aXNVbmtu
b3duUHNldWRvRWxlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWF0Y2ggPT0gUHNldWRv
RWxlbWVudCAmJiBtX3BzZXVkb1R5cGUgPT0gUHNldWRvVW5rbm93bjsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQ1NTU2VsZWN0b3JfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3JMaXN0LmNwcAppbmRleCA3ZjgyY2E0OTgwNTIyMmEzM2UyOWQ1MmI2MDg2ZmY1
YzMzODhmYmEwLi43Y2I0ZGY0Yzg0MWNlZjVkNjE1YjI3ZWM3NDRlYTkyMzcwNDA2NWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtMTM2LDQgKzEzNiwyMCBAQCBi
b29sIENTU1NlbGVjdG9yTGlzdDo6c2VsZWN0b3JzTmVlZE5hbWVzcGFjZVJlc29sdXRpb24oKQog
ICAgIHJldHVybiBmb3JFYWNoU2VsZWN0b3IoZnVuY3RvciwgdGhpcyk7CiB9CiAKK2NsYXNzIFNl
bGVjdG9ySGFzVW5rbm93blBzZXVkb0VsZW1lbnRGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBib29s
IG9wZXJhdG9yKCkoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHNlbGVjdG9yLT5pc1Vua25vd25Qc2V1ZG9FbGVtZW50KCk7CisgICAgfQorfTsKKworYm9vbCBD
U1NTZWxlY3Rvckxpc3Q6Omhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cygpIGNvbnN0Cit7CisgICAg
U2VsZWN0b3JIYXNVbmtub3duUHNldWRvRWxlbWVudEZ1bmN0b3IgZnVuY3RvcjsKKyAgICByZXR1
cm4gZm9yRWFjaFNlbGVjdG9yKGZ1bmN0b3IsIHRoaXMpOworfQorCisKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCmluZGV4IDllNDBlZjg1
ODk3Yzk0ZGIzZDIwNDE4NDY0Yjk1NGFhZjU0ZjM4YzUuLjdhZGM2YjlmNTg3ZDRhNzE1Njg1MThl
ZGQxZmUzZGM4ZDk4YTBjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT25lU2VsZWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3NlbGVjdG9yQXJyYXkgPyBtX3NlbGVjdG9yQXJyYXktPmlzTGFzdEluU2VsZWN0
b3JMaXN0KCkgOiBmYWxzZTsgfQogCiAgICAgYm9vbCBzZWxlY3RvcnNOZWVkTmFtZXNwYWNlUmVz
b2x1dGlvbigpOworICAgIGJvb2wgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVTZWxlY3RvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA5NmRhNzRjZjk0MWZiOTFlNjMxZDUyZWIzYjhkODhl
MzJiNTIzNjQwLi5lMWU2MzkzNDRhYTliMjE5N2U0YmMwMTQ5YTJlZDYyMGYyZDM4NWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC00MjQsNiArNDI0LDcgQEAg
cHVibGljOgogICAgIENTU1J1bGVEYXRhTGlzdCogZ2V0SURSdWxlcyhBdG9taWNTdHJpbmdJbXBs
KiBrZXkpIHsgcmV0dXJuIG1faWRSdWxlcy5nZXQoa2V5KTsgfQogICAgIENTU1J1bGVEYXRhTGlz
dCogZ2V0Q2xhc3NSdWxlcyhBdG9taWNTdHJpbmdJbXBsKiBrZXkpIHsgcmV0dXJuIG1fY2xhc3NS
dWxlcy5nZXQoa2V5KTsgfQogICAgIENTU1J1bGVEYXRhTGlzdCogZ2V0VGFnUnVsZXMoQXRvbWlj
U3RyaW5nSW1wbCoga2V5KSB7IHJldHVybiBtX3RhZ1J1bGVzLmdldChrZXkpOyB9CisgICAgQ1NT
UnVsZURhdGFMaXN0KiBnZXRQc2V1ZG9SdWxlcyhBdG9taWNTdHJpbmdJbXBsKiBrZXkpIHsgcmV0
dXJuIG1fcHNldWRvUnVsZXMuZ2V0KGtleSk7IH0KICAgICBDU1NSdWxlRGF0YUxpc3QqIGdldFVu
aXZlcnNhbFJ1bGVzKCkgeyByZXR1cm4gbV91bml2ZXJzYWxSdWxlcy5nZXQoKTsgfQogICAgIENT
U1J1bGVEYXRhTGlzdCogZ2V0UGFnZVJ1bGVzKCkgeyByZXR1cm4gbV9wYWdlUnVsZXMuZ2V0KCk7
IH0KICAgICAKQEAgLTQzMSw2ICs0MzIsNyBAQCBwdWJsaWM6CiAgICAgQXRvbVJ1bGVNYXAgbV9p
ZFJ1bGVzOwogICAgIEF0b21SdWxlTWFwIG1fY2xhc3NSdWxlczsKICAgICBBdG9tUnVsZU1hcCBt
X3RhZ1J1bGVzOworICAgIEF0b21SdWxlTWFwIG1fcHNldWRvUnVsZXM7CiAgICAgT3duUHRyPENT
U1J1bGVEYXRhTGlzdD4gbV91bml2ZXJzYWxSdWxlczsKICAgICBPd25QdHI8Q1NTUnVsZURhdGFM
aXN0PiBtX3BhZ2VSdWxlczsKICAgICB1bnNpZ25lZCBtX3J1bGVDb3VudDsKQEAgLTY1OCw2ICs2
NjAsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzKENTU1J1bGVTZXQqIHJ1
bGVzLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGwKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAgICBtYXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+
Z2V0Q2xhc3NSdWxlcyhjbGFzc05hbWVzW2ldLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0
UnVsZUluZGV4LCBpbmNsdWRlRW1wdHlSdWxlcyk7CiAgICAgfQorICAgIGlmICghbV9lbGVtZW50
LT5zaGFkb3dQc2V1ZG9JZCgpLmlzRW1wdHkoKSkgeworICAgICAgICBBU1NFUlQobV9zdHlsZWRF
bGVtZW50KTsKKyAgICAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldFBzZXVkb1J1bGVz
KG1fZWxlbWVudC0+c2hhZG93UHNldWRvSWQoKS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFz
dFJ1bGVJbmRleCwgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIH0KICAgICBtYXRjaFJ1bGVzRm9y
TGlzdChydWxlcy0+Z2V0VGFnUnVsZXMobV9lbGVtZW50LT5sb2NhbE5hbWUoKS5pbXBsKCkpLCBm
aXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCwgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIG1h
dGNoUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRVbml2ZXJzYWxSdWxlcygpLCBmaXJzdFJ1bGVJbmRl
eCwgbGFzdFJ1bGVJbmRleCwgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIApAQCAtMjA1MSw2ICsy
MDU3LDE0IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rv
cjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yCiAgICAgICAgICAgICAgICAgISgoUmVu
ZGVyU2Nyb2xsYmFyOjpzY3JvbGxiYXJGb3JTdHlsZVJlc29sdmUoKSB8fCBkeW5hbWljUHNldWRv
ID09IFNDUk9MTEJBUl9DT1JORVIgfHwgZHluYW1pY1BzZXVkbyA9PSBSRVNJWkVSKSAmJiBzZWwt
Pm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tT
ZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291
bnRlcmVkTGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpOworICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgorICAgICAgICB7CisgICAgICAgICAg
ICBOb2RlKiBzaGFkb3dIb3N0Tm9kZSA9IGUtPnNoYWRvd0FuY2VzdG9yTm9kZSgpOworICAgICAg
ICAgICAgaWYgKHNoYWRvd0hvc3ROb2RlID09IGUgfHwgIXNoYWRvd0hvc3ROb2RlLT5pc0VsZW1l
bnROb2RlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5
OworICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihzaGFkb3dIb3N0Tm9kZSk7
CisgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMs
IGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOworICAgICAgICB9CiAgICAg
fQogCiAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwpAQCAtMjcwMywxMiArMjcx
Nyw4IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNl
bGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lCiAgICAgICAgICAgICBpZiAoRG9jdW1lbnQq
IGRvY3VtZW50ID0gZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBkb2N1bWVudC0+c2V0
VXNlc0ZpcnN0TGV0dGVyUnVsZXModHJ1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHBzZXVk
b0lkICE9IE5PUFNFVURPKSB7CisgICAgICAgIGlmIChwc2V1ZG9JZCAhPSBOT1BTRVVETykKICAg
ICAgICAgICAgIGR5bmFtaWNQc2V1ZG8gPSBwc2V1ZG9JZDsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vICMjIyBhZGQgdGhlIHJlc3Qgb2YgdGhlIGNoZWNr
cy4uLgogICAgIHJldHVybiB0cnVlOwpAQCAtMjgyOSwxMiArMjgzOSwxNyBAQCB2b2lkIENTU1J1
bGVTZXQ6OmFkZFJ1bGUoQ1NTU3R5bGVSdWxlKiBydWxlLCBDU1NTZWxlY3Rvciogc2VsKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgICAKKyAgICBpZiAoc2VsLT5pc1Vua25vd25Qc2V1ZG9F
bGVtZW50KCkpIHsKKyAgICAgICAgYWRkVG9SdWxlU2V0KHNlbC0+bV92YWx1ZS5pbXBsKCksIG1f
cHNldWRvUnVsZXMsIHJ1bGUsIHNlbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IHNlbC0+bV90YWcubG9jYWxOYW1lKCk7CiAg
ICAgaWYgKGxvY2FsTmFtZSAhPSBzdGFyQXRvbSkgewogICAgICAgICBhZGRUb1J1bGVTZXQobG9j
YWxOYW1lLmltcGwoKSwgbV90YWdSdWxlcywgcnVsZSwgc2VsKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICAKKwogICAgIC8vIEp1c3QgcHV0IGl0IGluIHRoZSB1bml2ZXJzYWwgcnVsZSBz
ZXQuCiAgICAgaWYgKCFtX3VuaXZlcnNhbFJ1bGVzKQogICAgICAgICBtX3VuaXZlcnNhbFJ1bGVz
ID0gYWRvcHRQdHIobmV3IENTU1J1bGVEYXRhTGlzdChtX3J1bGVDb3VudCsrLCBydWxlLCBzZWwp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9odG1sLmNzcwppbmRleCA4MjNmNWYzMmRiNDg0ZDdjOTZhMWM3MDU1Mjk5YzA0YWU2
MWJhNmU1Li5kNmZiYmRmYmUxMzg1ZDUxN2FjZTk5MGNiMWM5MTVlZTBmNWIyZDZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L2h0bWwuY3NzCkBAIC00NzQsNiArNDc0LDcgQEAgaW5wdXRbdHlwZT0icmFuZ2UiXSB7CiAKIGlu
cHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKICAgICAtd2Via2l0LWFw
cGVhcmFuY2U6IHNsaWRlcnRodW1iLWhvcml6b250YWw7CisgICAgZGlzcGxheTogYmxvY2s7CiB9
CiAKIGlucHV0W3R5cGU9ImJ1dHRvbiJdOmRpc2FibGVkLCBpbnB1dFt0eXBlPSJzdWJtaXQiXTpk
aXNhYmxlZCwgaW5wdXRbdHlwZT0icmVzZXQiXTpkaXNhYmxlZCwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmlu
ZGV4IGU1NTIzNzY5NmZmMzZiMzA0MjQ2Mjg1ZDc5MTIzMGYyNjM2NWI0NzQuLjVlNmMwNDc5NDMx
YjRjZTUwYjE5ZTZjMDlhNmVjMTJlNWZmZGFkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjMw
LDYgKzIzMCw3IEBAIHB1YmxpYzoKIAogICAgIE5vZGUqIHNoYWRvd1Jvb3QoKTsKICAgICB2b2lk
IHNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxOb2RlPik7CisgICAgdmlydHVhbCBBdG9taWNTdHJp
bmcgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIAogICAgIFJlbmRlclN0eWxlKiBjb21wdXRlZFN0
eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pOwogCkBAIC01MDcsNiArNTA4LDExIEBAIGlubGluZSB2
b2lkIEVsZW1lbnQ6OnNldElkQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAg
ICAgc2V0QXR0cmlidXRlKGRvY3VtZW50KCktPmlkQXR0cmlidXRlTmFtZSgpLCB2YWx1ZSk7CiB9
CiAKK2lubGluZSBBdG9taWNTdHJpbmcgRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAor
eworICAgIHJldHVybiBBdG9taWNTdHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggYTU4OTI4MmYyMGE2NWE2YzYxN2Y4MDMxM2IwYWIyOThh
NGQ2ZThjYy4uZDAxMjQxOTJiM2I5OWZiYzM5ZmMzNjhlYWRmMzg2OGJiZTMxNmVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtMTYxMiw3ICsxNjEyLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBOb2Rl
OjpxdWVyeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25Db2RlJgog
ICAgIENTU1NlbGVjdG9yTGlzdCBxdWVyeVNlbGVjdG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0
b3Ioc2VsZWN0b3JzLCBkb2N1bWVudCgpLCBxdWVyeVNlbGVjdG9yTGlzdCk7CiAKLSAgICBpZiAo
IXF1ZXJ5U2VsZWN0b3JMaXN0LmZpcnN0KCkpIHsKKyAgICBpZiAoIXF1ZXJ5U2VsZWN0b3JMaXN0
LmZpcnN0KCkgfHwgcXVlcnlTZWxlY3Rvckxpc3QuaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKCkp
IHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBA
IC0xNjU5LDcgKzE2NTksNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpxdWVyeVNlbGVj
dG9yQWxsKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBFeGNlcHRpb25DbwogICAgIENTU1NlbGVj
dG9yTGlzdCBxdWVyeVNlbGVjdG9yTGlzdDsKICAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3Jz
LCBkb2N1bWVudCgpLCBxdWVyeVNlbGVjdG9yTGlzdCk7CiAKLSAgICBpZiAoIXF1ZXJ5U2VsZWN0
b3JMaXN0LmZpcnN0KCkpIHsKKyAgICBpZiAoIXF1ZXJ5U2VsZWN0b3JMaXN0LmZpcnN0KCkgfHwg
cXVlcnlTZWxlY3Rvckxpc3QuaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKCkpIHsKICAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4IDgyMDU3NDY2NGMz
ZWNhZjVkYjc0NmZiNGFjYjVmOTk0ZWNkODllM2YuLjUyMjBmMmJkYWVmMGNhYTM2OGUyYjJlYjAw
YWViNjAxMWVmNzc5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Ns
aWRlclRodW1iRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjZGVmaW5lIFNsaWRlclRodW1iRWxl
bWVudF9oCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGVD
b25zdGFudHMuaCIKICNpbmNsdWRlICJTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIApAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsK
KyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCiBwcml2
YXRlOiAgICAgICAgCiAgICAgU2xpZGVyVGh1bWJFbGVtZW50KEhUTUxFbGVtZW50KiBzaGFkb3dQ
YXJlbnQpOwpAQCAtNjksNiArNzEsMTIgQEAgaW5saW5lIFBhc3NSZWZQdHI8U2xpZGVyVGh1bWJF
bGVtZW50PiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZShIVE1MRWxlbWVudCogc2gKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNsaWRlclRodW1iRWxlbWVudChzaGFkb3dQYXJlbnQpKTsKIH0K
IAoraW5saW5lIEF0b21pY1N0cmluZyBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lk
KCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgc2xpZGVy
VGh1bWIsICgiLXdlYmtpdC1zbGlkZXItdGh1bWIiKSk7CisgICAgcmV0dXJuIHNsaWRlclRodW1i
OworfQorCiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNsaWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcApp
bmRleCBiNzNhMWFjYWE5ZTYyNGNhMTg2ODZjNzc2ZWI4ODYzNDBjNzAxMmUyLi5lZjY5ZTQxMDdi
NDVmY2Q1MWMwYTZiMmYzYTgwZTlhZDllZjdjMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2xpZGVyLmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIlJlbmRlclNs
aWRlci5oIgogCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1N0
eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50Lmgi
CiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCkBAIC0xMTIsMjkgKzExMywxOCBAQCB2b2lkIFJl
bmRlclNsaWRlcjo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdAogCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTbGlkZXI6
OmNyZWF0ZVRodW1iU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlKQogewotICAg
IFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGU7Ci0gICAgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxl
ID0gZ2V0Q2FjaGVkUHNldWRvU3R5bGUoU0xJREVSX1RIVU1CKTsKLSAgICBpZiAocHNldWRvU3R5
bGUpCi0gICAgICAgIC8vIFdlIG1heSBiZSBzaGFyaW5nIHN0eWxlIHdpdGggYW5vdGhlciBzbGlk
ZXIsIGJ1dCB3ZSBtdXN0IG5vdCBzaGFyZSB0aGUgdGh1bWIgc3R5bGUuCi0gICAgICAgIHN0eWxl
ID0gUmVuZGVyU3R5bGU6OmNsb25lKHBzZXVkb1N0eWxlKTsKLSAgICBlbHNlCi0gICAgICAgIHN0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotCi0gICAgaWYgKHBhcmVudFN0eWxlKQotICAg
ICAgICBzdHlsZS0+aW5oZXJpdEZyb20ocGFyZW50U3R5bGUpOwotCi0gICAgc3R5bGUtPnNldERp
c3BsYXkoQkxPQ0spOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdGh1bWJTdHlsZSA9IGRvY3Vt
ZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVGb3JFbGVtZW50KG1fdGh1bWIuZ2V0KCksIHN0
eWxlKCksIGZhbHNlKTsKIAogICAgIGlmIChwYXJlbnRTdHlsZS0+YXBwZWFyYW5jZSgpID09IFNs
aWRlclZlcnRpY2FsUGFydCkKLSAgICAgICAgc3R5bGUtPnNldEFwcGVhcmFuY2UoU2xpZGVyVGh1
bWJWZXJ0aWNhbFBhcnQpOworICAgICAgICB0aHVtYlN0eWxlLT5zZXRBcHBlYXJhbmNlKFNsaWRl
clRodW1iVmVydGljYWxQYXJ0KTsKICAgICBlbHNlIGlmIChwYXJlbnRTdHlsZS0+YXBwZWFyYW5j
ZSgpID09IFNsaWRlckhvcml6b250YWxQYXJ0KQotICAgICAgICBzdHlsZS0+c2V0QXBwZWFyYW5j
ZShTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KTsKKyAgICAgICAgdGh1bWJTdHlsZS0+c2V0QXBw
ZWFyYW5jZShTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KTsKICAgICBlbHNlIGlmIChwYXJlbnRT
dHlsZS0+YXBwZWFyYW5jZSgpID09IE1lZGlhU2xpZGVyUGFydCkKLSAgICAgICAgc3R5bGUtPnNl
dEFwcGVhcmFuY2UoTWVkaWFTbGlkZXJUaHVtYlBhcnQpOworICAgICAgICB0aHVtYlN0eWxlLT5z
ZXRBcHBlYXJhbmNlKE1lZGlhU2xpZGVyVGh1bWJQYXJ0KTsKICAgICBlbHNlIGlmIChwYXJlbnRT
dHlsZS0+YXBwZWFyYW5jZSgpID09IE1lZGlhVm9sdW1lU2xpZGVyUGFydCkKLSAgICAgICAgc3R5
bGUtPnNldEFwcGVhcmFuY2UoTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQpOworICAgICAgICB0
aHVtYlN0eWxlLT5zZXRBcHBlYXJhbmNlKE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0KTsKIAot
ICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRodW1iU3R5bGUucmVsZWFz
ZSgpOwogfQogCiBJbnRSZWN0IFJlbmRlclNsaWRlcjo6dGh1bWJSZWN0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKaW5k
ZXggMDgzOTg2NDc4ZDNiNDU2NWM0NjNmODdlY2VjZjkzMjE1ZjYwZjhiOS4uN2NkNDkwMzAxYTE3
NWMzZjE5ZmZjY2Y4ZjY2ZWFhZjlmZmI2ZjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTY4LDcgKzY4LDcg
QEAgZW51bSBTdHlsZURpZmZlcmVuY2VDb250ZXh0U2Vuc2l0aXZlUHJvcGVydHkgewogZW51bSBQ
c2V1ZG9JZCB7CiAgICAgLy8gVGhlIG9yZGVyIG11c3QgYmUgTk9QIElELCBwdWJsaWMgSURzLCBh
bmQgdGhlbiBpbnRlcm5hbCBJRHMuCiAgICAgTk9QU0VVRE8sIEZJUlNUX0xJTkUsIEZJUlNUX0xF
VFRFUiwgQkVGT1JFLCBBRlRFUiwgU0VMRUNUSU9OLCBGSVJTVF9MSU5FX0lOSEVSSVRFRCwgU0NS
T0xMQkFSLCBGSUxFX1VQTE9BRF9CVVRUT04sIElOUFVUX1BMQUNFSE9MREVSLAotICAgIFNMSURF
Ul9USFVNQiwgU0VBUkNIX0NBTkNFTF9CVVRUT04sIFNFQVJDSF9ERUNPUkFUSU9OLCBTRUFSQ0hf
UkVTVUxUU19ERUNPUkFUSU9OLCBTRUFSQ0hfUkVTVUxUU19CVVRUT04sIE1FRElBX0NPTlRST0xT
X1BBTkVMLAorICAgIFNFQVJDSF9DQU5DRUxfQlVUVE9OLCBTRUFSQ0hfREVDT1JBVElPTiwgU0VB
UkNIX1JFU1VMVFNfREVDT1JBVElPTiwgU0VBUkNIX1JFU1VMVFNfQlVUVE9OLCBNRURJQV9DT05U
Uk9MU19QQU5FTCwKICAgICBNRURJQV9DT05UUk9MU19QTEFZX0JVVFRPTiwgTUVESUFfQ09OVFJP
TFNfTVVURV9CVVRUT04sIE1FRElBX0NPTlRST0xTX1RJTUVMSU5FLCBNRURJQV9DT05UUk9MU19U
SU1FTElORV9DT05UQUlORVIsCiAgICAgTUVESUFfQ09OVFJPTFNfVk9MVU1FX1NMSURFUiwgTUVE
SUFfQ09OVFJPTFNfVk9MVU1FX1NMSURFUl9DT05UQUlORVIsIE1FRElBX0NPTlRST0xTX1ZPTFVN
RV9TTElERVJfTVVURV9CVVRUT04sIAogICAgIE1FRElBX0NPTlRST0xTX0NVUlJFTlRfVElNRV9E
SVNQTEFZLCBNRURJQV9DT05UUk9MU19USU1FX1JFTUFJTklOR19ESVNQTEFZLCAK
</data>
<flag name="review"
          id="69638"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>