<?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>148741</bug_id>
          
          <creation_ts>2015-09-03 11:15:16 -0700</creation_ts>
          <short_desc>RepatchBuffer should be stateless</short_desc>
          <delta_ts>2015-09-03 12:42:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148742</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1123093</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-03 11:15:16 -0700</bug_when>
    <thetext>We use the CodeBlock* field of RepatchBuffer in various places.  Usually, when we use this field, we&apos;re doing it wrong, since we never really know which CodeBlock* the RepatchBuffer points to.

Also, this field was there to support WX_EXCLUSIVE, which doesn&apos;t work anymore and probably never will (since nobody is working on it).  Killing that feature means that we no longer have to be careful about caching a RepatchBuffer and passing it around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123099</commentid>
    <comment_count>1</comment_count>
      <attachid>260498</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-03 11:24:43 -0700</bug_when>
    <thetext>Created attachment 260498
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123102</commentid>
    <comment_count>2</comment_count>
      <attachid>260500</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-03 11:29:12 -0700</bug_when>
    <thetext>Created attachment 260500
more fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123103</commentid>
    <comment_count>3</comment_count>
      <attachid>260500</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-03 11:30:32 -0700</bug_when>
    <thetext>Comment on attachment 260500
more fixes

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123122</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-09-03 12:42:12 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/189278</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260498</attachid>
            <date>2015-09-03 11:24:43 -0700</date>
            <delta_ts>2015-09-03 11:29:12 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>35650</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5Mjc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk1IEBA
CisyMDE1LTA5LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwYXRjaEJ1ZmZlciBzaG91bGQgYmUgc3RhdGVsZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHJlbW92ZXMgb3VyIHJlbGlhbmNlIG9uIFJl
cGF0Y2hCdWZmZXIgaGF2aW5nIGEgcG9pbnRlciB0byBDb2RlQmxvY2suIFRoaXMgaXMgaW4KKyAg
ICAgICAgcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIFJlcGF0Y2hCdWZmZXIgZW50aXJlbHkgKHNl
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NzQy
KS4gSW4gdGhlIGxvbmdlciB0ZXJtLCB0aGlzIGlzIG5lY2Vzc2FyeQorICAgICAgICBmb3IgbWFr
aW5nIGlubGluZSBjYWNoZSBjb2RlLCBwYXJ0aWN1bGFybHkgaW4gU3RydWN0dXJlU3R1YkluZm8s
IG1vcmUgc2VsZi1jb250YWluZWQuCisgICAgICAgIEN1cnJlbnRseSBTdHJ1Y3R1cmVTdHViSW5m
byByZWxpZXMgb24gdmVyeSBwb2ludGxlc3MtbG9va2luZyBtZXRob2RzIGluIENvZGVCbG9jayB0
bworICAgICAgICBjbGVhciBpdHNlbGYsIGFuZCB0aGUgb25seSB0aGluZyB0aGF0IHRob3NlIG1l
dGhvZHMgZG8gaXMgY3JlYXRlIGEgUmVwYXRjaEJ1ZmZlci4gSXQncworICAgICAgICBxdWl0ZSBz
aWxseS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6TGlua0J1ZmZlcjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpwZXJm
b3JtRmluYWxpemF0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oOgor
ICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpT
Qzo6UmVwYXRjaEJ1ZmZlcjo6flJlcGF0Y2hCdWZmZXIpOgorICAgICAgICAoSlNDOjpSZXBhdGNo
QnVmZmVyOjpyZWxpbmspOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXZlcnRKdW1w
UmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6
UmVwYXRjaEJ1ZmZlcjo6Y29kZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFyU3R1Yik6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjp2aXNpdFdlYWspOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5o
OgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSk6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6aXNMaW5rZWQpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua0luZm86OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y29k
ZU9yaWdpbik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cmVzZXRTdHViSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVu
bGlua0luY29taW5nQ2FsbHMpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJ
ZExpc3QuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkQWNjZXNzOjpmcm9tU3RydWN0dXJlU3R1
YkluZm8pOgorICAgICAgICAoSlNDOjpHZXRCeUlkQWNjZXNzOjp2aXNpdFdlYWspOgorICAgICAg
ICAoSlNDOjpQb2x5bW9ycGhpY0dldEJ5SWRMaXN0OjpkaWRTZWxmUGF0Y2hpbmcpOgorICAgICAg
ICAoSlNDOjpQb2x5bW9ycGhpY0dldEJ5SWRMaXN0Ojp2aXNpdFdlYWspOgorICAgICAgICAqIGJ5
dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZEFj
Y2Vzczo6ZG9lc0NhbGxzKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRM
aXN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZEFjY2Vzczo6ZnJvbVN0cnVjdHVyZVN0dWJJ
bmZvKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZEFjY2Vzczo6dmlzaXRXZWFrKToKKyAgICAgICAg
KEpTQzo6UG9seW1vcnBoaWNQdXRCeUlkTGlzdDo6YWRkQWNjZXNzKToKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNQdXRCeUlkTGlzdDo6dmlzaXRXZWFrKToKKyAgICAgICAgKiBieXRlY29kZS9Q
b2x5bW9ycGhpY1B1dEJ5SWRMaXN0Lmg6CisgICAgICAgIChKU0M6OlB1dEJ5SWRBY2Nlc3M6OmN1
c3RvbVNldHRlcik6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljUHV0QnlJZExpc3Q6OmtpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86OmRlcmVmKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OnZpc2l0V2Vha1JlZmVyZW5jZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpzZWVuT25jZSk6
CisgICAgICAgICogaml0L0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAg
KEpTQzo6QWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmU6On5BY2Nlc3NvckNhbGxKSVRTdHViUm91
dGluZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lOjp2aXNpdFdl
YWspOgorICAgICAgICAqIGppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oOgorICAgICAg
ICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVB
bGxvY2F0b3I6Om1ha2VXcml0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVBbGxvY2F0b3I6Om1ha2VFeGVjdXRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklU
U3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6fkpJVFN0dWJS
b3V0aW5lKToKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OnZpc2l0V2Vhayk6CisgICAg
ICAgICogaml0L0pJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsTm9kZTo6flBv
bHltb3JwaGljQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1
bmxpbmspOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6Y2xlYXJD
YWxsTm9kZXNGb3IpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6
dmlzaXRXZWFrKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaDoK
KyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsTm9kZTo6aGFzQ2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnJlYWRDYWxsVGFyZ2V0KToK
KyAgICAgICAgKEpTQzo6cmVwYXRjaENhbGwpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNl
bGZBY2Nlc3MpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlND
Ojp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToK
KyAgICAgICAgKEpTQzo6cmV2ZXJ0Q2FsbCk6CisgICAgICAgIChKU0M6OnVubGlua0Zvcik6Cisg
ICAgICAgIChKU0M6OmxpbmtWaXJ0dWFsRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3Jw
aGljQ2FsbCk6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnlJRCk6CisgICAgICAgIChKU0M6OnJl
c2V0UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0SW4pOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmg6CisKIDIwMTUtMDktMDIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXBsYWNlIGFsbCB0aGUgdmFyaW91cyBmb3JtcyBvZiBicmFuY2hTdHJ1Y3R1cmUo
KSB3aXRoIGEgc2luZ2xlIG1ldGhvZCBpbiBBc3NlbWJseUhlbHBlcnMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkocmV2aXNpb24gMTg5
MjY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw2IEBAIHZvaWQgTGlua0J1ZmZlcjo6YWxsb2Nh
dGUoc2l6ZV90IGluaXRpYWwKICAgICBtX2V4ZWN1dGFibGVNZW1vcnkgPSBtX3ZtLT5leGVjdXRh
YmxlQWxsb2NhdG9yLmFsbG9jYXRlKCptX3ZtLCBpbml0aWFsU2l6ZSwgb3duZXJVSUQsIGVmZm9y
dCk7CiAgICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpCiAgICAgICAgIHJldHVybjsKLSAgICBF
eGVjdXRhYmxlQWxsb2NhdG9yOjptYWtlV3JpdGFibGUobV9leGVjdXRhYmxlTWVtb3J5LT5zdGFy
dCgpLCBtX2V4ZWN1dGFibGVNZW1vcnktPnNpemVJbkJ5dGVzKCkpOwogICAgIG1fY29kZSA9IG1f
ZXhlY3V0YWJsZU1lbW9yeS0+c3RhcnQoKTsKICAgICBtX3NpemUgPSBpbml0aWFsU2l6ZTsKICAg
ICBtX2RpZEFsbG9jYXRlID0gdHJ1ZTsKQEAgLTIzMiwxMSArMjMxLDYgQEAgdm9pZCBMaW5rQnVm
ZmVyOjpwZXJmb3JtRmluYWxpemF0aW9uKCkKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAjZW5k
aWYKICAgICAKLSNpZiBFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJT04pCi0gICAgRXhlY3V0YWJsZUFs
bG9jYXRvcjo6bWFrZUV4ZWN1dGFibGUoY29kZSgpLCBtX2luaXRpYWxTaXplKTsKLSNlbHNlCi0g
ICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6bWFrZUV4ZWN1dGFibGUoY29kZSgpLCBtX3NpemUpOwot
I2VuZGlmCiAgICAgTWFjcm9Bc3NlbWJsZXI6OmNhY2hlRmx1c2goY29kZSgpLCBtX3NpemUpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hC
dWZmZXIuaAkocmV2aXNpb24gMTg5MjY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9SZXBhdGNoQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDI3ICs0NCwxNCBAQCBjbGFz
cyBSZXBhdGNoQnVmZmVyIHsKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2Rl
UHRyOwogCiBwdWJsaWM6Ci0gICAgUmVwYXRjaEJ1ZmZlcihDb2RlQmxvY2sqIGNvZGVCbG9jaykK
LSAgICAgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgUmVwYXRjaEJ1ZmZlcihDb2Rl
QmxvY2sqKQogICAgIHsKLSNpZiBFTkFCTEUoQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSkKLSAgICAg
ICAgUmVmUHRyPEpJVENvZGU+IGNvZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKTsKLSAgICAgICAg
bV9zdGFydCA9IGNvZGUtPnN0YXJ0KCk7Ci0gICAgICAgIG1fc2l6ZSA9IGNvZGUtPnNpemUoKTsK
LQotICAgICAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjptYWtlV3JpdGFibGUobV9zdGFydCwgbV9z
aXplKTsKLSNlbmRpZgogICAgIH0KIAogICAgIH5SZXBhdGNoQnVmZmVyKCkKICAgICB7Ci0jaWYg
RU5BQkxFKEFTU0VNQkxFUl9XWF9FWENMVVNJVkUpCi0gICAgICAgIEV4ZWN1dGFibGVBbGxvY2F0
b3I6Om1ha2VFeGVjdXRhYmxlKG1fc3RhcnQsIG1fc2l6ZSk7Ci0jZW5kaWYKICAgICB9CiAgICAg
Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jazsg
fQotCiAgICAgdm9pZCByZWxpbmsoQ29kZUxvY2F0aW9uSnVtcCBqdW1wLCBDb2RlTG9jYXRpb25M
YWJlbCBkZXN0aW5hdGlvbikKICAgICB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChqdW1wLCBkZXN0aW5hdGlvbik7CkBAIC0xODUsMTMgKzE3Miw2IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNo
YWJsZUJyYW5jaDMyV2l0aFBhdGNoKGluc3RydWN0aW9uU3RhcnQsIGFkZHJlc3MsIHZhbHVlKTsK
ICAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSNpZiBFTkFC
TEUoQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSkKLSAgICB2b2lkKiBtX3N0YXJ0OwotICAgIHNpemVf
dCBtX3NpemU7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlzaW9u
IDE4OTI2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpj
bGVhclN0dWIoKQogICAgIG1fc3R1YiA9IG51bGxwdHI7CiB9CiAKLXZvaWQgQ2FsbExpbmtJbmZv
Ojp1bmxpbmsoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKK3ZvaWQgQ2FsbExpbmtJbmZv
Ojp1bmxpbmsoVk0mIHZtLCBSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyKQogewogICAgIGlm
ICghaXNMaW5rZWQoKSkgewogICAgICAgICAvLyBXZSBjb3VsZCBiZSBjYWxsZWQgZXZlbiBpZiB3
ZSdyZSBub3QgbGlua2VkIGFueW1vcmUgYmVjYXVzZSBvZiBob3cgcG9seW1vcnBoaWMgY2FsbHMK
QEAgLTU1LDE0ICs1NSwxNCBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dW5saW5rKFJlcGF0Y2hCdWZm
ZXImCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdW5saW5rRm9yKHJlcGF0Y2hC
dWZmZXIsICp0aGlzKTsKKyAgICB1bmxpbmtGb3Iodm0sIHJlcGF0Y2hCdWZmZXIsICp0aGlzKTsK
IAogICAgIC8vIEl0IHdpbGwgYmUgb24gYSBsaXN0IGlmIHRoZSBjYWxsZWUgaGFzIGEgY29kZSBi
bG9jay4KICAgICBpZiAoaXNPbkxpc3QoKSkKICAgICAgICAgcmVtb3ZlKCk7CiB9CiAKLXZvaWQg
Q2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKK3Zv
aWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtLCBSZXBhdGNoQnVmZmVyJiByZXBhdGNo
QnVmZmVyKQogewogICAgIGF1dG8gaGFuZGxlU3BlY2lmaWNDYWxsZWUgPSBbJl0gKEpTRnVuY3Rp
b24qIGNhbGxlZSkgewogICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY2FsbGVlLT5leGVjdXRh
YmxlKCkpKQpAQCAtNzYsMjMgKzc2LDIzIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWso
UmVwYXRjaEJ1ZmYKICAgICAgICAgICAgIGlmICghc3R1YigpLT52aXNpdFdlYWsocmVwYXRjaEJ1
ZmZlcikpIHsKICAgICAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2xl
YXJpbmcgY2xvc3VyZSBjYWxsIGZyb20gIiwgKnJlcGF0Y2hCdWZmZXIuY29kZUJsb2NrKCksICIg
dG8gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcmluZyBjbG9zdXJlIGNhbGwgdG8g
IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3REdW1wKHN0dWIoKS0+dmFyaWFudHMoKSks
ICIsIHN0dWIgcm91dGluZSAiLCBSYXdQb2ludGVyKHN0dWIoKSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAiLlxuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHVubGlu
ayhyZXBhdGNoQnVmZmVyKTsKKyAgICAgICAgICAgICAgICB1bmxpbmsodm0sIHJlcGF0Y2hCdWZm
ZXIpOwogICAgICAgICAgICAgICAgIG1fY2xlYXJlZEJ5R0MgPSB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKCFIZWFwOjppc01hcmtlZChtX2NhbGxlZS5nZXQoKSkpIHsK
ICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKICAgICAgICAgICAgICAg
ICBkYXRhTG9nKAotICAgICAgICAgICAgICAgICAgICAiQ2xlYXJpbmcgY2FsbCBmcm9tICIsICpy
ZXBhdGNoQnVmZmVyLmNvZGVCbG9jaygpLCAiIHRvICIsCisgICAgICAgICAgICAgICAgICAgICJD
bGVhcmluZyBjYWxsIHRvICIsCiAgICAgICAgICAgICAgICAgICAgIFJhd1BvaW50ZXIobV9jYWxs
ZWUuZ2V0KCkpLCAiICgiLAogICAgICAgICAgICAgICAgICAgICBtX2NhbGxlZS5nZXQoKS0+ZXhl
Y3V0YWJsZSgpLT5oYXNoRm9yKHNwZWNpYWxpemF0aW9uS2luZCgpKSwKICAgICAgICAgICAgICAg
ICAgICAgIikuXG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGhhbmRsZVNwZWNpZmlj
Q2FsbGVlKG1fY2FsbGVlLmdldCgpKTsKLSAgICAgICAgICAgIHVubGluayhyZXBhdGNoQnVmZmVy
KTsKKyAgICAgICAgICAgIHVubGluayh2bSwgcmVwYXRjaEJ1ZmZlcik7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgaWYgKGhhdmVMYXN0U2VlbkNhbGxlZSgpICYmICFIZWFwOjppc01hcmtlZChsYXN0
U2VlbkNhbGxlZSgpKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua0luZm8uaAkocmV2aXNpb24gMTg5MjY2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gbV9zdHVi
IHx8IG1fY2FsbGVlOyB9Ci0gICAgdm9pZCB1bmxpbmsoUmVwYXRjaEJ1ZmZlciYpOworICAgIHZv
aWQgdW5saW5rKFZNJiwgUmVwYXRjaEJ1ZmZlciYpOwogCiAgICAgdm9pZCBzZXRVcENhbGwoQ2Fs
bFR5cGUgY2FsbFR5cGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgdW5zaWduZWQgY2FsbGVlR1BS
KQogICAgIHsKQEAgLTI3OCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2Nv
ZGVPcmlnaW47CiAgICAgfQogCi0gICAgdm9pZCB2aXNpdFdlYWsoUmVwYXRjaEJ1ZmZlciYpOwor
ICAgIHZvaWQgdmlzaXRXZWFrKFZNJiwgUmVwYXRjaEJ1ZmZlciYpOwogCiBwcml2YXRlOgogICAg
IENvZGVMb2NhdGlvbk5lYXJDYWxsIG1fY2FsbFJldHVybkxvY2F0aW9uOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4OTI2
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjg3LDEyICsyNjg3LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRo
aXMpOwogICAgICAgICAKICAgICAgICAgZm9yIChhdXRvIGl0ZXIgPSBjYWxsTGlua0luZm9zQmVn
aW4oKTsgISFpdGVyOyArK2l0ZXIpCi0gICAgICAgICAgICAoKml0ZXIpLT52aXNpdFdlYWsocmVw
YXRjaEJ1ZmZlcik7CisgICAgICAgICAgICAoKml0ZXIpLT52aXNpdFdlYWsoKnZtKCksIHJlcGF0
Y2hCdWZmZXIpOwogCiAgICAgICAgIGZvciAoQmFnPFN0cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0
b3IgaXRlciA9IG1fc3R1YkluZm9zLmJlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7CiAgICAgICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqKml0ZXI7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmIChzdHViSW5mby52aXNpdFdlYWtSZWZlcmVuY2VzKHJlcGF0Y2hCdWZm
ZXIpKQorICAgICAgICAgICAgaWYgKHN0dWJJbmZvLnZpc2l0V2Vha1JlZmVyZW5jZXMoKnZtKCks
IHJlcGF0Y2hCdWZmZXIpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICByZXNldFN0dWJEdXJpbmdHQ0ludGVybmFsKHJlcGF0Y2hCdWZmZXIsIHN0
dWJJbmZvKTsKQEAgLTI3OTksMTIgKzI3OTksMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0U3R1
YkludGVybmFsKFJlcGF0YwogICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzSklUKGppdFR5
cGUoKSkpOwogICAgIAogICAgIGlmIChpc0dldEJ5SWRBY2Nlc3MoYWNjZXNzVHlwZSkpCi0gICAg
ICAgIHJlc2V0R2V0QnlJRChyZXBhdGNoQnVmZmVyLCBzdHViSW5mbyk7CisgICAgICAgIHJlc2V0
R2V0QnlJRChyZXBhdGNoQnVmZmVyLCB0aGlzLCBzdHViSW5mbyk7CiAgICAgZWxzZSBpZiAoaXNQ
dXRCeUlkQWNjZXNzKGFjY2Vzc1R5cGUpKQotICAgICAgICByZXNldFB1dEJ5SUQocmVwYXRjaEJ1
ZmZlciwgc3R1YkluZm8pOworICAgICAgICByZXNldFB1dEJ5SUQocmVwYXRjaEJ1ZmZlciwgdGhp
cywgc3R1YkluZm8pOwogICAgIGVsc2UgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0luQWNj
ZXNzKGFjY2Vzc1R5cGUpKTsKLSAgICAgICAgcmVzZXRJbihyZXBhdGNoQnVmZmVyLCBzdHViSW5m
byk7CisgICAgICAgIHJlc2V0SW4ocmVwYXRjaEJ1ZmZlciwgdGhpcywgc3R1YkluZm8pOwogICAg
IH0KICAgICAKICAgICBzdHViSW5mby5yZXNldCgpOwpAQCAtMzAzNiw5ICszMDM2LDkgQEAgdm9p
ZCBDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogICAgICAgICByZXR1cm47CiAgICAg
UmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdoaWxlIChtX2luY29taW5n
Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCi0gICAgICAgIG1faW5jb21p
bmdDYWxscy5iZWdpbigpLT51bmxpbmsocmVwYXRjaEJ1ZmZlcik7CisgICAgICAgIG1faW5jb21p
bmdDYWxscy5iZWdpbigpLT51bmxpbmsoKnZtKCksIHJlcGF0Y2hCdWZmZXIpOwogICAgIHdoaWxl
IChtX2luY29taW5nUG9seW1vcnBoaWNDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdQb2x5bW9y
cGhpY0NhbGxzLmVuZCgpKQotICAgICAgICBtX2luY29taW5nUG9seW1vcnBoaWNDYWxscy5iZWdp
bigpLT51bmxpbmsocmVwYXRjaEJ1ZmZlcik7CisgICAgICAgIG1faW5jb21pbmdQb2x5bW9ycGhp
Y0NhbGxzLmJlZ2luKCktPnVubGluaygqdm0oKSwgcmVwYXRjaEJ1ZmZlcik7CiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHltb3JwaGljR2V0QnlJZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0dldEJ5SWRMaXN0LmNwcAkocmV2aXNpb24gMTg5MjY2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExp
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMyArNjUsMTMgQEAgR2V0QnlJZEFjY2VzcyBH
ZXRCeUlkQWNjZXNzOjpmcm9tU3RydWN0dQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wg
R2V0QnlJZEFjY2Vzczo6dmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpIGNv
bnN0Citib29sIEdldEJ5SWRBY2Nlc3M6OnZpc2l0V2VhayhWTSYgdm0sIFJlcGF0Y2hCdWZmZXIm
IHJlcGF0Y2hCdWZmZXIpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3RydWN0dXJlICYmICFIZWFwOjpp
c01hcmtlZChtX3N0cnVjdHVyZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFtX3N0dWJSb3V0aW5lLT52aXNpdFdlYWsocmVwYXRjaEJ1ZmZlcikpCisgICAg
aWYgKCFtX3N0dWJSb3V0aW5lLT52aXNpdFdlYWsodm0sIHJlcGF0Y2hCdWZmZXIpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMzksMTAgKzEzOSwxMCBA
QCBib29sIFBvbHltb3JwaGljR2V0QnlJZExpc3Q6OmRpZFNlbGZQYXRjCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFBvbHltb3JwaGljR2V0QnlJZExpc3Q6OnZpc2l0V2VhayhSZXBhdGNo
QnVmZmVyJiByZXBhdGNoQnVmZmVyKSBjb25zdAorYm9vbCBQb2x5bW9ycGhpY0dldEJ5SWRMaXN0
Ojp2aXNpdFdlYWsoVk0mIHZtLCBSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyKSBjb25zdAog
ewogICAgIGZvciAodW5zaWduZWQgaSA9IHNpemUoKTsgaS0tOykgewotICAgICAgICBpZiAoIWF0
KGkpLnZpc2l0V2VhayhyZXBhdGNoQnVmZmVyKSkKKyAgICAgICAgaWYgKCFhdChpKS52aXNpdFdl
YWsodm0sIHJlcGF0Y2hCdWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0dldEJ5SWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaAkocmV2aXNpb24gMTg5MjY2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9v
bCBkb2VzQ2FsbHMoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gR2V0dGVyIHx8IHR5cGUoKSA9
PSBDdXN0b21HZXR0ZXI7IH0KICAgICAKLSAgICBib29sIHZpc2l0V2VhayhSZXBhdGNoQnVmZmVy
JikgY29uc3Q7CisgICAgYm9vbCB2aXNpdFdlYWsoVk0mLCBSZXBhdGNoQnVmZmVyJikgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKQEAgLTExNSw3ICsxMTUs
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBkaWRTZWxmUGF0Y2hpbmcoKSBjb25zdDsgLy8g
QXJlIGFueSBvZiB0aGUgYWNjZXNzZXMgU2ltcGxlSW5saW5lPwogICAgIAotICAgIGJvb2wgdmlz
aXRXZWFrKFJlcGF0Y2hCdWZmZXImKSBjb25zdDsKKyAgICBib29sIHZpc2l0V2VhayhWTSYsIFJl
cGF0Y2hCdWZmZXImKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJs
b2NrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljUHV0
QnlJZExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcAkocmV2aXNpb24gMTg5MjY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIFB1dEJ5SWRBY2Nlc3MgUHV0QnlJZEFjY2Vzczo6
ZnJvbVN0cnVjdHUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIFB1dEJ5SWRBY2Nlc3M6
OnZpc2l0V2VhayhSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyKSBjb25zdAorYm9vbCBQdXRC
eUlkQWNjZXNzOjp2aXNpdFdlYWsoVk0mIHZtLCBSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVy
KSBjb25zdAogewogICAgIGlmICghbV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBQdXRCeUlkQWNjZXNzOjp2
aXNpdFdlYWsoUmVwYXRjaEJ1ZgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICghbV9zdHViUm91dGluZS0+
dmlzaXRXZWFrKHJlcGF0Y2hCdWZmZXIpKQorICAgIGlmICghbV9zdHViUm91dGluZS0+dmlzaXRX
ZWFrKHZtLCByZXBhdGNoQnVmZmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMTQyLDEwICsxNDIsMTAgQEAgdm9pZCBQb2x5bW9ycGhpY1B1dEJ5SWRM
aXN0OjphZGRBY2Nlc3MoYwogICAgIG1fbGlzdC5sYXN0KCkgPSBwdXRCeUlkQWNjZXNzOwogfQog
Ci1ib29sIFBvbHltb3JwaGljUHV0QnlJZExpc3Q6OnZpc2l0V2VhayhSZXBhdGNoQnVmZmVyJiBy
ZXBhdGNoQnVmZmVyKSBjb25zdAorYm9vbCBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0Ojp2aXNpdFdl
YWsoVk0mIHZtLCBSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyKSBjb25zdAogewogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIWF0KGkp
LnZpc2l0V2VhayhyZXBhdGNoQnVmZmVyKSkKKyAgICAgICAgaWYgKCFhdChpKS52aXNpdFdlYWso
dm0sIHJlcGF0Y2hCdWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
bW9ycGhpY1B1dEJ5SWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljUHV0QnlJZExpc3QuaAkocmV2aXNpb24gMTg5MjY2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljUHV0QnlJZExpc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fY3VzdG9tU2V0dGVyOwogICAgIH0KIAotICAgIGJvb2wgdmlzaXRXZWFrKFJlcGF0Y2hCdWZm
ZXImKSBjb25zdDsKKyAgICBib29sIHZpc2l0V2VhayhWTSYsIFJlcGF0Y2hCdWZmZXImKSBjb25z
dDsKICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKQEAgLTE5NCw3
ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgUHV0S2luZCBraW5kKCkgY29uc3QgeyByZXR1
cm4gbV9raW5kOyB9CiAgICAgCi0gICAgYm9vbCB2aXNpdFdlYWsoUmVwYXRjaEJ1ZmZlciYpIGNv
bnN0OworICAgIGJvb2wgdmlzaXRXZWFrKFZNJiwgUmVwYXRjaEJ1ZmZlciYpIGNvbnN0OwogICAg
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCShy
ZXZpc2lvbiAxODkyNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgU3Ry
dWN0dXJlU3R1YkluZm86OmRlcmVmKCkKICAgICB9CiB9CiAKLWJvb2wgU3RydWN0dXJlU3R1Yklu
Zm86OnZpc2l0V2Vha1JlZmVyZW5jZXMoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKK2Jv
b2wgU3RydWN0dXJlU3R1YkluZm86OnZpc2l0V2Vha1JlZmVyZW5jZXMoVk0mIHZtLCBSZXBhdGNo
QnVmZmVyJiByZXBhdGNoQnVmZmVyKQogewogICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgewogICAg
IGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmOgpAQCAtNzEsNyArNzEsNyBAQCBib29sIFN0cnVj
dHVyZVN0dWJJbmZvOjp2aXNpdFdlYWtSZWZlcmVuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9saXN0OiB7Ci0gICAg
ICAgIGlmICghdS5nZXRCeUlkTGlzdC5saXN0LT52aXNpdFdlYWsocmVwYXRjaEJ1ZmZlcikpCisg
ICAgICAgIGlmICghdS5nZXRCeUlkTGlzdC5saXN0LT52aXNpdFdlYWsodm0sIHJlcGF0Y2hCdWZm
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC04OCw3ICs4OCw3IEBAIGJvb2wgU3RydWN0dXJlU3R1YkluZm86OnZpc2l0V2Vha1JlZmVyZW4K
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBhY2Nl
c3NfcHV0X2J5X2lkX2xpc3Q6Ci0gICAgICAgIGlmICghdS5wdXRCeUlkTGlzdC5saXN0LT52aXNp
dFdlYWsocmVwYXRjaEJ1ZmZlcikpCisgICAgICAgIGlmICghdS5wdXRCeUlkTGlzdC5saXN0LT52
aXNpdFdlYWsodm0sIHJlcGF0Y2hCdWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIGFjY2Vzc19pbl9saXN0OiB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkocmV2
aXNpb24gMTg5MjY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw3ICsxNjUsNyBAQCBzdHJ1Y3QgU3Ry
dWN0dXJlU3R1YkluZm8gewogICAgIC8vIG91dGdvaW5nIEdDIHBvaW50ZXJzIGFyZSBrbm93biB0
byBwb2ludCB0byBjdXJyZW50bHkgbWFya2VkIG9iamVjdHM7IHRoaXMgbWV0aG9kIGlzCiAgICAg
Ly8gYWxsb3dlZCB0byBhY2NvbXBsaXNoIHRoaXMgYnkgZWl0aGVyIGNsZWFyaW5nIHRob3NlIHBv
aW50ZXJzIHNvbWVob3cgb3IgYnkgcHJvdmluZyB0aGF0CiAgICAgLy8gdGhleSBoYXZlIGFscmVh
ZHkgYmVlbiBtYXJrZWQuIEl0IGlzIG5vdCBhbGxvd2VkIHRvIG1hcmsgbmV3IG9iamVjdHMuCi0g
ICAgYm9vbCB2aXNpdFdlYWtSZWZlcmVuY2VzKFJlcGF0Y2hCdWZmZXImKTsKKyAgICBib29sIHZp
c2l0V2Vha1JlZmVyZW5jZXMoVk0mLCBSZXBhdGNoQnVmZmVyJik7CiAgICAgICAgIAogICAgIGJv
b2wgc2Vlbk9uY2UoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQWNj
ZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwCShyZXZpc2lvbiAxODky
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0
aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsOSArNDMsOSBAQCBBY2Nlc3NvckNhbGxKSVRTdHVi
Um91dGluZTo6fkFjY2Vzc29yQ2FsCiB7CiB9CiAKLWJvb2wgQWNjZXNzb3JDYWxsSklUU3R1YlJv
dXRpbmU6OnZpc2l0V2VhayhSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyKQorYm9vbCBBY2Nl
c3NvckNhbGxKSVRTdHViUm91dGluZTo6dmlzaXRXZWFrKFZNJiB2bSwgUmVwYXRjaEJ1ZmZlciYg
cmVwYXRjaEJ1ZmZlcikKIHsKLSAgICBtX2NhbGxMaW5rSW5mby0+dmlzaXRXZWFrKHJlcGF0Y2hC
dWZmZXIpOworICAgIG1fY2FsbExpbmtJbmZvLT52aXNpdFdlYWsodm0sIHJlcGF0Y2hCdWZmZXIp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oCShyZXZpc2lvbiAxODky
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0
aW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIAogICAgIHZp
cnR1YWwgfkFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lKCk7CiAgICAgCi0gICAgdmlydHVhbCBi
b29sIHZpc2l0V2VhayhSZXBhdGNoQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29s
IHZpc2l0V2VhayhWTSYsIFJlcGF0Y2hCdWZmZXImKSBvdmVycmlkZTsKICAgICAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mbzsKIH07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAkocmV2aXNp
b24gMTg5MjY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEzICs1Niw3IEBACiAKICNkZWZpbmUgSklUX0FM
TE9DQVRPUl9MQVJHRV9BTExPQ19TSVpFIChwYWdlU2l6ZSgpICogNCkKIAotI2lmIEVOQUJMRShB
U1NFTUJMRVJfV1hfRVhDTFVTSVZFKQotI2RlZmluZSBQUk9URUNUSU9OX0ZMQUdTX1JXIChQUk9U
X1JFQUQgfCBQUk9UX1dSSVRFKQotI2RlZmluZSBQUk9URUNUSU9OX0ZMQUdTX1JYIChQUk9UX1JF
QUQgfCBQUk9UX0VYRUMpCi0jZGVmaW5lIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSBmYWxzZQot
I2Vsc2UKICNkZWZpbmUgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFIHRydWUKLSNlbmRpZgogCiBu
YW1lc3BhY2UgSlNDIHsKIApAQCAtMTE2LDM0ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gYWxsb2NhdGUoVk0mLCBzaXplX3Qgc2l6ZUluQnl0
ZXMsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCk7CiAKLSNpZiBFTkFCTEUo
QVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSkKLSAgICBzdGF0aWMgdm9pZCBtYWtlV3JpdGFibGUodm9p
ZCogc3RhcnQsIHNpemVfdCBzaXplKQotICAgIHsKLSAgICAgICAgcmVwcm90ZWN0UmVnaW9uKHN0
YXJ0LCBzaXplLCBXcml0YWJsZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgbWFrZUV4ZWN1
dGFibGUodm9pZCogc3RhcnQsIHNpemVfdCBzaXplKQotICAgIHsKLSAgICAgICAgcmVwcm90ZWN0
UmVnaW9uKHN0YXJ0LCBzaXplLCBFeGVjdXRhYmxlKTsKLSAgICB9Ci0jZWxzZQotICAgIHN0YXRp
YyB2b2lkIG1ha2VXcml0YWJsZSh2b2lkKiwgc2l6ZV90KSB7fQotICAgIHN0YXRpYyB2b2lkIG1h
a2VFeGVjdXRhYmxlKHZvaWQqLCBzaXplX3QpIHt9Ci0jZW5kaWYKLQogICAgIHN0YXRpYyBzaXpl
X3QgY29tbWl0dGVkQnl0ZUNvdW50KCk7Ci0KLXByaXZhdGU6Ci0KLSNpZiBFTkFCTEUoQVNTRU1C
TEVSX1dYX0VYQ0xVU0lWRSkKLSAgICBzdGF0aWMgdm9pZCByZXByb3RlY3RSZWdpb24odm9pZCos
IHNpemVfdCwgUHJvdGVjdGlvblNldHRpbmcpOwotI2lmIEVOQUJMRShFWEVDVVRBQkxFX0FMTE9D
QVRPUl9ERU1BTkQpCi0gICAgLy8gV2UgY3JlYXRlIGEgTWV0YUFsbG9jYXRvciBmb3IgZWFjaCBK
UyBnbG9iYWwgb2JqZWN0LgotICAgIHN0ZDo6dW5pcXVlX3B0cjxEZW1hbmRFeGVjdXRhYmxlQWxs
b2NhdG9yPiBtX2FsbG9jYXRvcjsKLSAgICBEZW1hbmRFeGVjdXRhYmxlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IoKSB7IHJldHVybiBtX2FsbG9jYXRvci5nZXQoKTsgfQotI2VuZGlmCi0jZW5kaWYKLQog
fTsKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpICYmIEVOQUJMRShBU1NFTUJMRVIpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmNwcAkocmV2aXNpb24g
MTg5MjY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEpJVFN0
dWJSb3V0aW5lOjp+SklUU3R1YlJvdXRpbmUoKSB7IH0KIAotYm9vbCBKSVRTdHViUm91dGluZTo6
dmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImKQorYm9vbCBKSVRTdHViUm91dGluZTo6dmlzaXRXZWFr
KFZNJiwgUmVwYXRjaEJ1ZmZlciYpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oCShyZXZpc2lvbiAxODkyNjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRydWUgaWYg
eW91IGFyZSBzdGlsbCB2YWxpZCBhZnRlci4gUmV0dXJuIGZhbHNlIGlmIHlvdSBhcmUgbm93IGlu
dmFsaWQuIElmIHlvdSByZXR1cm4KICAgICAvLyBmYWxzZSwgeW91IHdpbGwgdXN1YWxseSBub3Qg
ZG8gYW55IGNsZWFyaW5nIGJlY2F1c2UgdGhlIGlkZWEgaXMgdGhhdCB5b3Ugd2lsbCBzaW1wbHkg
YmUKICAgICAvLyBkZXN0cm95ZWQuCi0gICAgdmlydHVhbCBib29sIHZpc2l0V2VhayhSZXBhdGNo
QnVmZmVyJik7CisgICAgdmlydHVhbCBib29sIHZpc2l0V2VhayhWTSYsIFJlcGF0Y2hCdWZmZXIm
KTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBvYnNlcnZlWmVyb1JlZkNvdW50KCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lLmNwcAkocmV2aXNpb24gMTg5MjY2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDEzICs0MSwxMyBAQCBQb2x5bW9ycGhpY0NhbGxOb2RlOjp+UG9seW1vcnBoaWND
YWxsTm9kCiAgICAgICAgIHJlbW92ZSgpOwogfQogCi12b2lkIFBvbHltb3JwaGljQ2FsbE5vZGU6
OnVubGluayhSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyKQordm9pZCBQb2x5bW9ycGhpY0Nh
bGxOb2RlOjp1bmxpbmsoVk0mIHZtLCBSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyKQogewog
ICAgIGlmIChtX2NhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoT3B0aW9uczo6c2hvd0Rpc2Fz
c2VtYmx5KCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2Fs
bCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCksICIsICIsIG1fY2Fs
bExpbmtJbmZvLT5jb2RlT3JpZ2luKCksICJcbiIpOwogCi0gICAgICAgIG1fY2FsbExpbmtJbmZv
LT51bmxpbmsocmVwYXRjaEJ1ZmZlcik7CisgICAgICAgIG1fY2FsbExpbmtJbmZvLT51bmxpbmso
dm0sIHJlcGF0Y2hCdWZmZXIpOwogICAgIH0KIAogICAgIGlmIChpc09uTGlzdCgpKQpAQCAtMTE3
LDcgKzExNyw3IEBAIHZvaWQgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OmNsZWFyQ2EKICAg
ICB9CiB9CiAKLWJvb2wgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OnZpc2l0V2VhayhSZXBh
dGNoQnVmZmVyJikKK2Jvb2wgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OnZpc2l0V2VhayhW
TSYsIFJlcGF0Y2hCdWZmZXImKQogewogICAgIGZvciAoYXV0byYgdmFyaWFudCA6IG1fdmFyaWFu
dHMpIHsKICAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZCh2YXJpYW50LmdldCgpKSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmgJKHJldmlzaW9uIDE4OTI2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyAr
NTAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgflBvbHltb3JwaGljQ2FsbE5vZGUoKTsKICAgICAK
LSAgICB2b2lkIHVubGluayhSZXBhdGNoQnVmZmVyJik7CisgICAgdm9pZCB1bmxpbmsoVk0mLCBS
ZXBhdGNoQnVmZmVyJik7CiAKICAgICBib29sIGhhc0NhbGxMaW5rSW5mbyhDYWxsTGlua0luZm8q
IGluZm8pIHsgcmV0dXJuIG1fY2FsbExpbmtJbmZvID09IGluZm87IH0KICAgICB2b2lkIGNsZWFy
Q2FsbExpbmtJbmZvKCk7CkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xl
YXJDYWxsTm9kZXNGb3IoQ2FsbExpbmtJbmZvKik7CiAgICAgCi0gICAgYm9vbCB2aXNpdFdlYWso
UmVwYXRjaEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRXZWFrKFZNJiwgUmVwYXRj
aEJ1ZmZlciYpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIG1hcmtS
ZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYpIG92ZXJyaWRlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxODkyNzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCwy
NiArNjAsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyAtIHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcgog
Ly8gLSB0YWdNYXNrUmVnaXN0ZXIKIAotc3RhdGljIEZ1bmN0aW9uUHRyIHJlYWRDYWxsVGFyZ2V0
KFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIENvZGVMb2NhdGlvbkNhbGwgY2FsbCkKK3N0
YXRpYyBGdW5jdGlvblB0ciByZWFkQ2FsbFRhcmdldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZUxvY2F0aW9uQ2FsbCBjYWxsKQogewogICAgIEZ1bmN0aW9uUHRyIHJlc3VsdCA9IE1hY3JvQXNz
ZW1ibGVyOjpyZWFkQ2FsbFRhcmdldChjYWxsKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKLSAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IHJlcGF0Y2hCdWZmZXIuY29kZUJsb2NrKCk7CiAgICAgaWYg
KGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkZUTEpJVCkgewogICAgICAgICByZXR1
cm4gRnVuY3Rpb25QdHIoY29kZUJsb2NrLT52bSgpLT5mdGxUaHVua3MtPmtleUZvclNsb3dQYXRo
Q2FsbFRodW5rKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9t
RXhlY3V0YWJsZUFkZHJlc3MoCiAgICAgICAgICAgICAgICAgcmVzdWx0LmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKS5jYWxsVGFyZ2V0KCkpOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJl
cGF0Y2hCdWZmZXIpOworICAgIFVOVVNFRF9QQVJBTShjb2RlQmxvY2spOwogI2VuZGlmIC8vIEVO
QUJMRShGVExfSklUKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcGF0
Y2hDYWxsKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIENvZGVMb2NhdGlvbkNhbGwgY2Fs
bCwgRnVuY3Rpb25QdHIgbmV3Q2FsbGVlRnVuY3Rpb24pCitzdGF0aWMgdm9pZCByZXBhdGNoQ2Fs
bChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZUxvY2F0aW9uQ2FsbCBjYWxsLCBGdW5jdGlvblB0ciBuZXdDYWxsZWVGdW5jdGlvbikKIHsKICNp
ZiBFTkFCTEUoRlRMX0pJVCkKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHJlcGF0Y2hCdWZm
ZXIuY29kZUJsb2NrKCk7CiAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6
OkZUTEpJVCkgewogICAgICAgICBWTSYgdm0gPSAqY29kZUJsb2NrLT52bSgpOwogICAgICAgICBG
VEw6OlRodW5rcyYgdGh1bmtzID0gKnZtLmZ0bFRodW5rczsKQEAgLTkwLDE0ICs4OCwxNiBAQCBz
dGF0aWMgdm9pZCByZXBhdGNoQ2FsbChSZXBhdGNoQnVmZmVyJiByCiAgICAgICAgIG5ld0NhbGxl
ZUZ1bmN0aW9uID0gRnVuY3Rpb25QdHIoCiAgICAgICAgICAgICB0aHVua3MuZ2V0U2xvd1BhdGhD
YWxsVGh1bmsodm0sIGtleSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIH0KKyNl
bHNlIC8vIEVOQUJMRShGVExfSklUKQorICAgIFVOVVNFRF9QQVJBTShjb2RlQmxvY2spOwogI2Vu
ZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGwsIG5l
d0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUJsb2Nr
KiBjb2RlYmxvY2ssIENvZGVMb2NhdGlvbkNhbGwgY2FsbCwgRnVuY3Rpb25QdHIgbmV3Q2FsbGVl
RnVuY3Rpb24pCitzdGF0aWMgdm9pZCByZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZUxvY2F0aW9uQ2FsbCBjYWxsLCBGdW5jdGlvblB0ciBuZXdDYWxsZWVGdW5jdGlvbikKIHsK
LSAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZWJsb2NrKTsKLSAgICByZXBhdGNo
Q2FsbChyZXBhdGNoQnVmZmVyLCBjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbik7CisgICAgUmVwYXRj
aEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CisgICAgcmVwYXRjaENhbGwocmVwYXRj
aEJ1ZmZlciwgY29kZUJsb2NrLCBjYWxsLCBuZXdDYWxsZWVGdW5jdGlvbik7CiB9CiAKIHN0YXRp
YyB2b2lkIHJlcGF0Y2hCeUlkU2VsZkFjY2VzcygKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMg
dm9pZCByZXBhdGNoQnlJZFNlbGZBY2Nlc3MoCiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVm
ZmVyKGNvZGVCbG9jayk7CiAKICAgICAvLyBPbmx5IG9wdGltaXplIG9uY2UhCi0gICAgcmVwYXRj
aENhbGwocmVwYXRjaEJ1ZmZlciwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBzbG93UGF0
aEZ1bmN0aW9uKTsKKyAgICByZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBjb2RlQmxvY2ssIHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgc2xvd1BhdGhGdW5jdGlvbik7CiAKICAgICAvLyBQ
YXRjaCB0aGUgc3RydWN0dXJlIGNoZWNrICYgdGhlIG9mZnNldCBvZiB0aGUgbG9hZC4KICAgICBy
ZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJl
bDMyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxs
KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0cnVjdHVyZS0+aWQoKSkpOwpAQCAtNjgzLDcgKzY4
Myw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKIAogICAgICAg
ICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgICAgICAg
ICByZXBsYWNlV2l0aEp1bXAocmVwYXRjaEJ1ZmZlciwgc3R1YkluZm8sIHN0dWJJbmZvLnN0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpKTsKLSAgICAgICAgICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hC
dWZmZXIsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlJZCk7Cisg
ICAgICAgICAgICByZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBjb2RlQmxvY2ssIHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlJZCk7CiAKICAgICAgICAgICAgIHJl
dHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgICAgIH0KQEAgLTcxNiw3ICs3MTYsNyBAQCBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAKICAgICAgICAgUmVwYXRjaEJ1
ZmZlciByZXBhdGNoQnVmZmVyKGNvZGVCbG9jayk7CiAgICAgICAgIHJlcGxhY2VXaXRoSnVtcChy
ZXBhdGNoQnVmZmVyLCBzdHViSW5mbywgc3R1YkluZm8uc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2Rl
KCkpOwotICAgICAgICByZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5SWQpOworICAgICAgICByZXBhdGNoQ2FsbChyZXBh
dGNoQnVmZmVyLCBjb2RlQmxvY2ssIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3BlcmF0
aW9uR2V0QnlJZCk7CiAKICAgICAgICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICB9CkBA
IC0xMjYzLDcgKzEyNjMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRC
eUlECiAgICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmp1bXBBdE9m
ZnNldCgKICAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9KdW1w
KSwKICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChzdHViSW5mby5zdHViUm91dGlu
ZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgICAgICAgICAgcmVwYXRjaENhbGwocmVwYXRjaEJ1ZmZl
ciwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBhcHByb3ByaWF0ZUxpc3RCdWlsZGluZ1B1
dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAgICAgICAgICByZXBhdGNoQ2FsbChy
ZXBhdGNoQnVmZmVyLCBjb2RlQmxvY2ssIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgYXBw
cm9wcmlhdGVMaXN0QnVpbGRpbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBzdHViSW5mby5pbml0UHV0QnlJZFRyYW5zaXRpb24oKnZt
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBvbGRTdHJ1Y3R1cmUsIHN0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCBwdXRLaW5kID09IERpcmVjdCk7CiAgICAgICAgICAgICAKQEAgLTEzMjIs
NyArMTMyMiw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQKIAog
ICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKICAgICAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmp1bXBBdE9m
ZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0p1bXApLCBDb2RlTG9jYXRpb25MYWJlbChz
dHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgICAgICByZXBhdGNoQ2FsbChyZXBhdGNo
QnVmZmVyLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGFwcHJvcHJpYXRlTGlzdEJ1aWxk
aW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAgcmVwYXRjaENhbGwo
cmVwYXRjaEJ1ZmZlciwgY29kZUJsb2NrLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGFw
cHJvcHJpYXRlTGlzdEJ1aWxkaW5nUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWxpc3QtPmlzRnVsbCgpKTsKICAgICAgICAgcmV0dXJuIFJl
dHJ5Q2FjaGVMYXRlcjsKICAgICB9CkBAIC0xMzk2LDcgKzEzOTYsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5QnVpbGRQdXRCeUlkCiAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRj
aEJ1ZmZlcihjb2RlQmxvY2spOwogICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvSnVtcCksIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7
CiAgICAgICAgIGlmIChsaXN0LT5pc0Z1bGwoKSkKLSAgICAgICAgICAgIHJlcGF0Y2hDYWxsKHJl
cGF0Y2hCdWZmZXIsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5l
cmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAgICAgIHJlcGF0Y2hD
YWxsKHJlcGF0Y2hCdWZmZXIsIGNvZGVCbG9jaywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogCiAg
ICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgfQpAQCAtMTQ0NSw3ICsxNDQ1LDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUJ1aWxkUHV0QnlJZAogICAgICAgICBSZXBh
dGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKICAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmp1bXBBdE9mZnNldChzdHViSW5m
by5wYXRjaC5kZWx0YUNhbGxUb0p1bXApLCBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS0+
Y29kZSgpLmNvZGUoKSkpOwogICAgICAgICBpZiAobGlzdC0+aXNGdWxsKCkpCi0gICAgICAgICAg
ICByZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24s
IGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CisgICAg
ICAgICAgICByZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBjb2RlQmxvY2ssIHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbiwgYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3Qs
IHB1dEtpbmQpKTsKIAogICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgIH0KQEAg
LTE2NjcsMTMgKzE2NjcsMTIgQEAgc3RhdGljIHZvaWQgcmV2ZXJ0Q2FsbCgKIH0KIAogdm9pZCB1
bmxpbmtGb3IoCi0gICAgUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgQ2FsbExpbmtJbmZv
JiBjYWxsTGlua0luZm8pCisgICAgVk0mIHZtLCBSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVy
LCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHsKICAgICBpZiAoT3B0aW9uczo6c2hvd0Rp
c2Fzc2VtYmx5KCkpCi0gICAgICAgIGRhdGFMb2coIlVubGlua2luZyBjYWxsIGZyb20gIiwgY2Fs
bExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbigpLCAiIGluIHJlcXVlc3QgZnJvbSAiLCBwb2lu
dGVyRHVtcChyZXBhdGNoQnVmZmVyLmNvZGVCbG9jaygpKSwgIlxuIik7CisgICAgICAgIGRhdGFM
b2coIlVubGlua2luZyBjYWxsIGZyb20gIiwgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bigpLCAiXG4iKTsKICAgICAKLSAgICBWTSogdm0gPSByZXBhdGNoQnVmZmVyLmNvZGVCbG9jaygp
LT52bSgpOwotICAgIHJldmVydENhbGwocmVwYXRjaEJ1ZmZlciwgdm0sIGNhbGxMaW5rSW5mbywg
dm0tPmdldENUSVN0dWIobGlua0NhbGxUaHVua0dlbmVyYXRvcikpOworICAgIHJldmVydENhbGwo
cmVwYXRjaEJ1ZmZlciwgJnZtLCBjYWxsTGlua0luZm8sIHZtLmdldENUSVN0dWIobGlua0NhbGxU
aHVua0dlbmVyYXRvcikpOwogfQogCiB2b2lkIGxpbmtWaXJ0dWFsRm9yKApAQCAtMTkzNyw5ICsx
OTM2LDkgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgICAgICBjYWxsTGlua0luZm8u
cmVtb3ZlKCk7CiB9CiAKLXZvaWQgcmVzZXRHZXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hC
dWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3ZvaWQgcmVzZXRHZXRCeUlEKFJl
cGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7Ci0gICAgcmVwYXRjaENhbGwocmVwYXRjaEJ1ZmZlciwg
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwor
ICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIGNvZGVCbG9jaywgc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwogICAgIENvZGVMb2NhdGlv
bkRhdGFMYWJlbDMyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmRhdGFMYWJlbDMyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNr
SW1tVG9DYWxsKTsKICAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2goKSkgewogICAgICAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1
bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCkBAIC0xOTU5LDkgKzE5
NTgsOSBAQCB2b2lkIHJlc2V0R2V0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoCiAgICAgcmVw
YXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmp1bXBBdE9mZnNl
dChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0p1bXApLCBzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlKSk7
CiB9CiAKLXZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKK3ZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0Y2hCdWZm
ZXImIHJlcGF0Y2hCdWZmZXIsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8pCiB7Ci0gICAgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSB1bm9wdGltaXplZEZ1
bmN0aW9uID0gYml0d2lzZV9jYXN0PFZfSklUT3BlcmF0aW9uX0VTc2lKSkk+KHJlYWRDYWxsVGFy
Z2V0KHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbikuZXhlY3V0YWJs
ZUFkZHJlc3MoKSk7CisgICAgVl9KSVRPcGVyYXRpb25fRVNzaUpKSSB1bm9wdGltaXplZEZ1bmN0
aW9uID0gYml0d2lzZV9jYXN0PFZfSklUT3BlcmF0aW9uX0VTc2lKSkk+KHJlYWRDYWxsVGFyZ2V0
KGNvZGVCbG9jaywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uKS5leGVjdXRhYmxlQWRkcmVz
cygpKTsKICAgICBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIG9wdGltaXplZEZ1bmN0aW9uOwogICAg
IGlmICh1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QgfHwgdW5v
cHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KQogICAg
ICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsK
QEAgLTE5NzMsNyArMTk3Miw3IEBAIHZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJl
cGF0Y2gKICAgICAgICAgQVNTRVJUKHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdE5vblN0cmljdCB8fCB1bm9wdGltaXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1
dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpOwogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlv
biA9IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKICAgICB9Ci0gICAg
cmVwYXRjaENhbGwocmVwYXRjaEJ1ZmZlciwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBv
cHRpbWl6ZWRGdW5jdGlvbik7CisgICAgcmVwYXRjaENhbGwocmVwYXRjaEJ1ZmZlciwgY29kZUJs
b2NrLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wdGltaXplZEZ1bmN0aW9uKTsKICAg
ICBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0
Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCk7CiAgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1w
UmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkpIHsKICAgICAgICAgcmVwYXRjaEJ1
ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKApA
QCAtMTk5Myw3ICsxOTkyLDcgQEAgdm9pZCByZXNldFB1dEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVw
YXRjaAogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5qdW1wQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9KdW1wKSwgc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxs
VG9TbG93Q2FzZSkpOwogfQogCi12b2lkIHJlc2V0SW4oUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1
ZmZlciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNldEluKFJlcGF0Y2hC
dWZmZXImIHJlcGF0Y2hCdWZmZXIsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbykKIHsKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uanVtcEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvSnVtcCksIHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRh
Q2FsbFRvU2xvd0Nhc2UpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CShyZXZpc2lvbiAxODkyNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTIgKzQyLDEyIEBAIHZvaWQgYnVpbGRQdXRCeUlkTGlz
dChFeGVjU3RhdGUqLCBKU1ZhbHUKIHZvaWQgcmVwYXRjaEluKEV4ZWNTdGF0ZSosIEpTQ2VsbCos
IGNvbnN0IElkZW50aWZpZXImLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBT
dHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCBsaW5rRm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5m
byYsIENvZGVCbG9jayosIEpTRnVuY3Rpb24qIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KTsKIHZvaWQgbGlua1Nsb3dGb3IoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJik7Ci12b2lkIHVu
bGlua0ZvcihSZXBhdGNoQnVmZmVyJiwgQ2FsbExpbmtJbmZvJik7Cit2b2lkIHVubGlua0ZvcihW
TSYsIFJlcGF0Y2hCdWZmZXImLCBDYWxsTGlua0luZm8mKTsKIHZvaWQgbGlua1ZpcnR1YWxGb3Io
RXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoRXhl
Y1N0YXRlKiwgQ2FsbExpbmtJbmZvJiwgQ2FsbFZhcmlhbnQpOwotdm9pZCByZXNldEdldEJ5SUQo
UmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvJik7Ci12b2lkIHJlc2V0UHV0QnlJRChS
ZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVzZXRJbihSZXBhdGNo
QnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXRHZXRCeUlEKFJlcGF0Y2hC
dWZmZXImLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldFB1dEJ5
SUQoUmVwYXRjaEJ1ZmZlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lk
IHJlc2V0SW4oUmVwYXRjaEJ1ZmZlciYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260500</attachid>
            <date>2015-09-03 11:29:12 -0700</date>
            <delta_ts>2015-09-03 11:30:32 -0700</delta_ts>
            <desc>more fixes</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>35760</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5Mjc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk1IEBA
CisyMDE1LTA5LTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwYXRjaEJ1ZmZlciBzaG91bGQgYmUgc3RhdGVsZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg3NDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHJlbW92ZXMgb3VyIHJlbGlhbmNlIG9uIFJl
cGF0Y2hCdWZmZXIgaGF2aW5nIGEgcG9pbnRlciB0byBDb2RlQmxvY2suIFRoaXMgaXMgaW4KKyAg
ICAgICAgcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIFJlcGF0Y2hCdWZmZXIgZW50aXJlbHkgKHNl
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NzQy
KS4gSW4gdGhlIGxvbmdlciB0ZXJtLCB0aGlzIGlzIG5lY2Vzc2FyeQorICAgICAgICBmb3IgbWFr
aW5nIGlubGluZSBjYWNoZSBjb2RlLCBwYXJ0aWN1bGFybHkgaW4gU3RydWN0dXJlU3R1YkluZm8s
IG1vcmUgc2VsZi1jb250YWluZWQuCisgICAgICAgIEN1cnJlbnRseSBTdHJ1Y3R1cmVTdHViSW5m
byByZWxpZXMgb24gdmVyeSBwb2ludGxlc3MtbG9va2luZyBtZXRob2RzIGluIENvZGVCbG9jayB0
bworICAgICAgICBjbGVhciBpdHNlbGYsIGFuZCB0aGUgb25seSB0aGluZyB0aGF0IHRob3NlIG1l
dGhvZHMgZG8gaXMgY3JlYXRlIGEgUmVwYXRjaEJ1ZmZlci4gSXQncworICAgICAgICBxdWl0ZSBz
aWxseS4KKworICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6TGlua0J1ZmZlcjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpwZXJm
b3JtRmluYWxpemF0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oOgor
ICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpSZXBhdGNoQnVmZmVyKToKKyAgICAgICAgKEpT
Qzo6UmVwYXRjaEJ1ZmZlcjo6flJlcGF0Y2hCdWZmZXIpOgorICAgICAgICAoSlNDOjpSZXBhdGNo
QnVmZmVyOjpyZWxpbmspOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpyZXZlcnRKdW1w
UmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6
UmVwYXRjaEJ1ZmZlcjo6Y29kZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9D
YWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmNsZWFyU3R1Yik6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjp2aXNpdFdlYWspOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5o
OgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSk6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6aXNMaW5rZWQpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua0luZm86OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Y29k
ZU9yaWdpbik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6cmVzZXRTdHViSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVu
bGlua0luY29taW5nQ2FsbHMpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJ
ZExpc3QuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkQWNjZXNzOjpmcm9tU3RydWN0dXJlU3R1
YkluZm8pOgorICAgICAgICAoSlNDOjpHZXRCeUlkQWNjZXNzOjp2aXNpdFdlYWspOgorICAgICAg
ICAoSlNDOjpQb2x5bW9ycGhpY0dldEJ5SWRMaXN0OjpkaWRTZWxmUGF0Y2hpbmcpOgorICAgICAg
ICAoSlNDOjpQb2x5bW9ycGhpY0dldEJ5SWRMaXN0Ojp2aXNpdFdlYWspOgorICAgICAgICAqIGJ5
dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZEFj
Y2Vzczo6ZG9lc0NhbGxzKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRM
aXN0LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZEFjY2Vzczo6ZnJvbVN0cnVjdHVyZVN0dWJJ
bmZvKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZEFjY2Vzczo6dmlzaXRXZWFrKToKKyAgICAgICAg
KEpTQzo6UG9seW1vcnBoaWNQdXRCeUlkTGlzdDo6YWRkQWNjZXNzKToKKyAgICAgICAgKEpTQzo6
UG9seW1vcnBoaWNQdXRCeUlkTGlzdDo6dmlzaXRXZWFrKToKKyAgICAgICAgKiBieXRlY29kZS9Q
b2x5bW9ycGhpY1B1dEJ5SWRMaXN0Lmg6CisgICAgICAgIChKU0M6OlB1dEJ5SWRBY2Nlc3M6OmN1
c3RvbVNldHRlcik6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljUHV0QnlJZExpc3Q6OmtpbmQp
OgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86OmRlcmVmKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1
YkluZm86OnZpc2l0V2Vha1JlZmVyZW5jZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpzZWVuT25jZSk6
CisgICAgICAgICogaml0L0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAg
KEpTQzo6QWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmU6On5BY2Nlc3NvckNhbGxKSVRTdHViUm91
dGluZSk6CisgICAgICAgIChKU0M6OkFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lOjp2aXNpdFdl
YWspOgorICAgICAgICAqIGppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oOgorICAgICAg
ICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVB
bGxvY2F0b3I6Om1ha2VXcml0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVBbGxvY2F0b3I6Om1ha2VFeGVjdXRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklU
U3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6fkpJVFN0dWJS
b3V0aW5lKToKKyAgICAgICAgKEpTQzo6SklUU3R1YlJvdXRpbmU6OnZpc2l0V2Vhayk6CisgICAg
ICAgICogaml0L0pJVFN0dWJSb3V0aW5lLmg6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsTm9kZTo6flBv
bHltb3JwaGljQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1
bmxpbmspOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6Y2xlYXJD
YWxsTm9kZXNGb3IpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6
dmlzaXRXZWFrKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaDoK
KyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsTm9kZTo6aGFzQ2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnJlYWRDYWxsVGFyZ2V0KToK
KyAgICAgICAgKEpTQzo6cmVwYXRjaENhbGwpOgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNl
bGZBY2Nlc3MpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlND
Ojp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlCdWlsZFB1dEJ5SWRMaXN0KToK
KyAgICAgICAgKEpTQzo6cmV2ZXJ0Q2FsbCk6CisgICAgICAgIChKU0M6OnVubGlua0Zvcik6Cisg
ICAgICAgIChKU0M6OmxpbmtWaXJ0dWFsRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3Jw
aGljQ2FsbCk6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnlJRCk6CisgICAgICAgIChKU0M6OnJl
c2V0UHV0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0SW4pOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmg6CisKIDIwMTUtMDktMDIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXBsYWNlIGFsbCB0aGUgdmFyaW91cyBmb3JtcyBvZiBicmFuY2hTdHJ1Y3R1cmUo
KSB3aXRoIGEgc2luZ2xlIG1ldGhvZCBpbiBBc3NlbWJseUhlbHBlcnMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkocmV2aXNpb24gMTg5
MjY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw2IEBAIHZvaWQgTGlua0J1ZmZlcjo6YWxsb2Nh
dGUoc2l6ZV90IGluaXRpYWwKICAgICBtX2V4ZWN1dGFibGVNZW1vcnkgPSBtX3ZtLT5leGVjdXRh
YmxlQWxsb2NhdG9yLmFsbG9jYXRlKCptX3ZtLCBpbml0aWFsU2l6ZSwgb3duZXJVSUQsIGVmZm9y
dCk7CiAgICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpCiAgICAgICAgIHJldHVybjsKLSAgICBF
eGVjdXRhYmxlQWxsb2NhdG9yOjptYWtlV3JpdGFibGUobV9leGVjdXRhYmxlTWVtb3J5LT5zdGFy
dCgpLCBtX2V4ZWN1dGFibGVNZW1vcnktPnNpemVJbkJ5dGVzKCkpOwogICAgIG1fY29kZSA9IG1f
ZXhlY3V0YWJsZU1lbW9yeS0+c3RhcnQoKTsKICAgICBtX3NpemUgPSBpbml0aWFsU2l6ZTsKICAg
ICBtX2RpZEFsbG9jYXRlID0gdHJ1ZTsKQEAgLTIzMiwxMSArMjMxLDYgQEAgdm9pZCBMaW5rQnVm
ZmVyOjpwZXJmb3JtRmluYWxpemF0aW9uKCkKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAjZW5k
aWYKICAgICAKLSNpZiBFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJT04pCi0gICAgRXhlY3V0YWJsZUFs
bG9jYXRvcjo6bWFrZUV4ZWN1dGFibGUoY29kZSgpLCBtX2luaXRpYWxTaXplKTsKLSNlbHNlCi0g
ICAgRXhlY3V0YWJsZUFsbG9jYXRvcjo6bWFrZUV4ZWN1dGFibGUoY29kZSgpLCBtX3NpemUpOwot
I2VuZGlmCiAgICAgTWFjcm9Bc3NlbWJsZXI6OmNhY2hlRmx1c2goY29kZSgpLCBtX3NpemUpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hC
dWZmZXIuaAkocmV2aXNpb24gMTg5MjY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9SZXBhdGNoQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDI3ICs0NCwxNCBAQCBjbGFz
cyBSZXBhdGNoQnVmZmVyIHsKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBDb2Rl
UHRyOwogCiBwdWJsaWM6Ci0gICAgUmVwYXRjaEJ1ZmZlcihDb2RlQmxvY2sqIGNvZGVCbG9jaykK
LSAgICAgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgUmVwYXRjaEJ1ZmZlcihDb2Rl
QmxvY2sqKQogICAgIHsKLSNpZiBFTkFCTEUoQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSkKLSAgICAg
ICAgUmVmUHRyPEpJVENvZGU+IGNvZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKTsKLSAgICAgICAg
bV9zdGFydCA9IGNvZGUtPnN0YXJ0KCk7Ci0gICAgICAgIG1fc2l6ZSA9IGNvZGUtPnNpemUoKTsK
LQotICAgICAgICBFeGVjdXRhYmxlQWxsb2NhdG9yOjptYWtlV3JpdGFibGUobV9zdGFydCwgbV9z
aXplKTsKLSNlbmRpZgogICAgIH0KIAogICAgIH5SZXBhdGNoQnVmZmVyKCkKICAgICB7Ci0jaWYg
RU5BQkxFKEFTU0VNQkxFUl9XWF9FWENMVVNJVkUpCi0gICAgICAgIEV4ZWN1dGFibGVBbGxvY2F0
b3I6Om1ha2VFeGVjdXRhYmxlKG1fc3RhcnQsIG1fc2l6ZSk7Ci0jZW5kaWYKICAgICB9CiAgICAg
Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jazsg
fQotCiAgICAgdm9pZCByZWxpbmsoQ29kZUxvY2F0aW9uSnVtcCBqdW1wLCBDb2RlTG9jYXRpb25M
YWJlbCBkZXN0aW5hdGlvbikKICAgICB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
SnVtcChqdW1wLCBkZXN0aW5hdGlvbik7CkBAIC0xODUsMTMgKzE3Miw2IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNo
YWJsZUJyYW5jaDMyV2l0aFBhdGNoKGluc3RydWN0aW9uU3RhcnQsIGFkZHJlc3MsIHZhbHVlKTsK
ICAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSNpZiBFTkFC
TEUoQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSkKLSAgICB2b2lkKiBtX3N0YXJ0OwotICAgIHNpemVf
dCBtX3NpemU7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAJKHJldmlzaW9u
IDE4OTI2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpj
bGVhclN0dWIoKQogICAgIG1fc3R1YiA9IG51bGxwdHI7CiB9CiAKLXZvaWQgQ2FsbExpbmtJbmZv
Ojp1bmxpbmsoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKK3ZvaWQgQ2FsbExpbmtJbmZv
Ojp1bmxpbmsoVk0mIHZtLCBSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyKQogewogICAgIGlm
ICghaXNMaW5rZWQoKSkgewogICAgICAgICAvLyBXZSBjb3VsZCBiZSBjYWxsZWQgZXZlbiBpZiB3
ZSdyZSBub3QgbGlua2VkIGFueW1vcmUgYmVjYXVzZSBvZiBob3cgcG9seW1vcnBoaWMgY2FsbHMK
QEAgLTU1LDE0ICs1NSwxNCBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dW5saW5rKFJlcGF0Y2hCdWZm
ZXImCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdW5saW5rRm9yKHJlcGF0Y2hC
dWZmZXIsICp0aGlzKTsKKyAgICB1bmxpbmtGb3Iodm0sIHJlcGF0Y2hCdWZmZXIsICp0aGlzKTsK
IAogICAgIC8vIEl0IHdpbGwgYmUgb24gYSBsaXN0IGlmIHRoZSBjYWxsZWUgaGFzIGEgY29kZSBi
bG9jay4KICAgICBpZiAoaXNPbkxpc3QoKSkKICAgICAgICAgcmVtb3ZlKCk7CiB9CiAKLXZvaWQg
Q2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKK3Zv
aWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtLCBSZXBhdGNoQnVmZmVyJiByZXBhdGNo
QnVmZmVyKQogewogICAgIGF1dG8gaGFuZGxlU3BlY2lmaWNDYWxsZWUgPSBbJl0gKEpTRnVuY3Rp
b24qIGNhbGxlZSkgewogICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY2FsbGVlLT5leGVjdXRh
YmxlKCkpKQpAQCAtNzMsMjYgKzczLDI2IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWso
UmVwYXRjaEJ1ZmYKICAgICAKICAgICBpZiAoaXNMaW5rZWQoKSkgewogICAgICAgICBpZiAoc3R1
YigpKSB7Ci0gICAgICAgICAgICBpZiAoIXN0dWIoKS0+dmlzaXRXZWFrKHJlcGF0Y2hCdWZmZXIp
KSB7CisgICAgICAgICAgICBpZiAoIXN0dWIoKS0+dmlzaXRXZWFrKHZtLCByZXBhdGNoQnVmZmVy
KSkgewogICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcmlu
ZyBjbG9zdXJlIGNhbGwgZnJvbSAiLCAqcmVwYXRjaEJ1ZmZlci5jb2RlQmxvY2soKSwgIiB0byAi
LAorICAgICAgICAgICAgICAgICAgICAgICAgIkNsZWFyaW5nIGNsb3N1cmUgY2FsbCB0byAiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgbGlzdER1bXAoc3R1YigpLT52YXJpYW50cygpKSwgIiwg
c3R1YiByb3V0aW5lICIsIFJhd1BvaW50ZXIoc3R1YigpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICIuXG4iKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdW5saW5rKHJl
cGF0Y2hCdWZmZXIpOworICAgICAgICAgICAgICAgIHVubGluayh2bSwgcmVwYXRjaEJ1ZmZlcik7
CiAgICAgICAgICAgICAgICAgbV9jbGVhcmVkQnlHQyA9IHRydWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSBpZiAoIUhlYXA6OmlzTWFya2VkKG1fY2FsbGVlLmdldCgpKSkgewogICAg
ICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICAgICAgICAgIGRh
dGFMb2coCi0gICAgICAgICAgICAgICAgICAgICJDbGVhcmluZyBjYWxsIGZyb20gIiwgKnJlcGF0
Y2hCdWZmZXIuY29kZUJsb2NrKCksICIgdG8gIiwKKyAgICAgICAgICAgICAgICAgICAgIkNsZWFy
aW5nIGNhbGwgdG8gIiwKICAgICAgICAgICAgICAgICAgICAgUmF3UG9pbnRlcihtX2NhbGxlZS5n
ZXQoKSksICIgKCIsCiAgICAgICAgICAgICAgICAgICAgIG1fY2FsbGVlLmdldCgpLT5leGVjdXRh
YmxlKCktPmhhc2hGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKCkpLAogICAgICAgICAgICAgICAgICAg
ICAiKS5cbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaGFuZGxlU3BlY2lmaWNDYWxs
ZWUobV9jYWxsZWUuZ2V0KCkpOwotICAgICAgICAgICAgdW5saW5rKHJlcGF0Y2hCdWZmZXIpOwor
ICAgICAgICAgICAgdW5saW5rKHZtLCByZXBhdGNoQnVmZmVyKTsKICAgICAgICAgfQogICAgIH0K
ICAgICBpZiAoaGF2ZUxhc3RTZWVuQ2FsbGVlKCkgJiYgIUhlYXA6OmlzTWFya2VkKGxhc3RTZWVu
Q2FsbGVlKCkpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCShyZXZpc2lvbiAxODkyNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAg
cHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBtX3N0dWIgfHwg
bV9jYWxsZWU7IH0KLSAgICB2b2lkIHVubGluayhSZXBhdGNoQnVmZmVyJik7CisgICAgdm9pZCB1
bmxpbmsoVk0mLCBSZXBhdGNoQnVmZmVyJik7CiAKICAgICB2b2lkIHNldFVwQ2FsbChDYWxsVHlw
ZSBjYWxsVHlwZSwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCB1bnNpZ25lZCBjYWxsZWVHUFIpCiAg
ICAgewpAQCAtMjc4LDcgKzI3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29kZU9y
aWdpbjsKICAgICB9CiAKLSAgICB2b2lkIHZpc2l0V2VhayhSZXBhdGNoQnVmZmVyJik7CisgICAg
dm9pZCB2aXNpdFdlYWsoVk0mLCBSZXBhdGNoQnVmZmVyJik7CiAKIHByaXZhdGU6CiAgICAgQ29k
ZUxvY2F0aW9uTmVhckNhbGwgbV9jYWxsUmV0dXJuTG9jYXRpb247CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTg5MjY2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2ODcsMTIgKzI2ODcsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KAogICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIodGhpcyk7
CiAgICAgICAgIAogICAgICAgICBmb3IgKGF1dG8gaXRlciA9IGNhbGxMaW5rSW5mb3NCZWdpbigp
OyAhIWl0ZXI7ICsraXRlcikKLSAgICAgICAgICAgICgqaXRlciktPnZpc2l0V2VhayhyZXBhdGNo
QnVmZmVyKTsKKyAgICAgICAgICAgICgqaXRlciktPnZpc2l0V2Vhaygqdm0oKSwgcmVwYXRjaEJ1
ZmZlcik7CiAKICAgICAgICAgZm9yIChCYWc8U3RydWN0dXJlU3R1YkluZm8+OjppdGVyYXRvciBp
dGVyID0gbV9zdHViSW5mb3MuYmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKICAgICAgICAgICAg
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICoqaXRlcjsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKHN0dWJJbmZvLnZpc2l0V2Vha1JlZmVyZW5jZXMocmVwYXRjaEJ1ZmZlcikp
CisgICAgICAgICAgICBpZiAoc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNlcygqdm0oKSwgcmVw
YXRjaEJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIHJlc2V0U3R1YkR1cmluZ0dDSW50ZXJuYWwocmVwYXRjaEJ1ZmZlciwgc3R1Yklu
Zm8pOwpAQCAtMjc5OSwxMiArMjc5OSwxMiBAQCB2b2lkIENvZGVCbG9jazo6cmVzZXRTdHViSW50
ZXJuYWwoUmVwYXRjCiAgICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgp
KSk7CiAgICAgCiAgICAgaWYgKGlzR2V0QnlJZEFjY2VzcyhhY2Nlc3NUeXBlKSkKLSAgICAgICAg
cmVzZXRHZXRCeUlEKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvKTsKKyAgICAgICAgcmVzZXRHZXRC
eUlEKHJlcGF0Y2hCdWZmZXIsIHRoaXMsIHN0dWJJbmZvKTsKICAgICBlbHNlIGlmIChpc1B1dEJ5
SWRBY2Nlc3MoYWNjZXNzVHlwZSkpCi0gICAgICAgIHJlc2V0UHV0QnlJRChyZXBhdGNoQnVmZmVy
LCBzdHViSW5mbyk7CisgICAgICAgIHJlc2V0UHV0QnlJRChyZXBhdGNoQnVmZmVyLCB0aGlzLCBz
dHViSW5mbyk7CiAgICAgZWxzZSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzSW5BY2Nlc3Mo
YWNjZXNzVHlwZSkpOwotICAgICAgICByZXNldEluKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvKTsK
KyAgICAgICAgcmVzZXRJbihyZXBhdGNoQnVmZmVyLCB0aGlzLCBzdHViSW5mbyk7CiAgICAgfQog
ICAgIAogICAgIHN0dWJJbmZvLnJlc2V0KCk7CkBAIC0zMDM2LDkgKzMwMzYsOSBAQCB2b2lkIENv
ZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscygpCiAgICAgICAgIHJldHVybjsKICAgICBSZXBh
dGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxs
cy5iZWdpbigpICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKLSAgICAgICAgbV9pbmNvbWluZ0Nh
bGxzLmJlZ2luKCktPnVubGluayhyZXBhdGNoQnVmZmVyKTsKKyAgICAgICAgbV9pbmNvbWluZ0Nh
bGxzLmJlZ2luKCktPnVubGluaygqdm0oKSwgcmVwYXRjaEJ1ZmZlcik7CiAgICAgd2hpbGUgKG1f
aW5jb21pbmdQb2x5bW9ycGhpY0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ1BvbHltb3JwaGlj
Q2FsbHMuZW5kKCkpCi0gICAgICAgIG1faW5jb21pbmdQb2x5bW9ycGhpY0NhbGxzLmJlZ2luKCkt
PnVubGluayhyZXBhdGNoQnVmZmVyKTsKKyAgICAgICAgbV9pbmNvbWluZ1BvbHltb3JwaGljQ2Fs
bHMuYmVnaW4oKS0+dW5saW5rKCp2bSgpLCByZXBhdGNoQnVmZmVyKTsKICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNHZXRCeUlkTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHltb3JwaGljR2V0QnlJZExpc3QuY3BwCShyZXZpc2lvbiAxODkyNjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNHZXRCeUlkTGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEzICs2NSwxMyBAQCBHZXRCeUlkQWNjZXNzIEdldEJ5
SWRBY2Nlc3M6OmZyb21TdHJ1Y3R1CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBHZXRC
eUlkQWNjZXNzOjp2aXNpdFdlYWsoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikgY29uc3QK
K2Jvb2wgR2V0QnlJZEFjY2Vzczo6dmlzaXRXZWFrKFZNJiB2bSwgUmVwYXRjaEJ1ZmZlciYgcmVw
YXRjaEJ1ZmZlcikgY29uc3QKIHsKICAgICBpZiAobV9zdHJ1Y3R1cmUgJiYgIUhlYXA6OmlzTWFy
a2VkKG1fc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
bV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoIW1fc3R1YlJvdXRpbmUtPnZpc2l0V2VhayhyZXBhdGNoQnVmZmVyKSkKKyAgICBpZiAo
IW1fc3R1YlJvdXRpbmUtPnZpc2l0V2Vhayh2bSwgcmVwYXRjaEJ1ZmZlcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEzOSwxMCArMTM5LDEwIEBAIGJv
b2wgUG9seW1vcnBoaWNHZXRCeUlkTGlzdDo6ZGlkU2VsZlBhdGMKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgUG9seW1vcnBoaWNHZXRCeUlkTGlzdDo6dmlzaXRXZWFrKFJlcGF0Y2hCdWZm
ZXImIHJlcGF0Y2hCdWZmZXIpIGNvbnN0Citib29sIFBvbHltb3JwaGljR2V0QnlJZExpc3Q6OnZp
c2l0V2VhayhWTSYgdm0sIFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpIGNvbnN0CiB7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIGlmICghYXQoaSku
dmlzaXRXZWFrKHJlcGF0Y2hCdWZmZXIpKQorICAgICAgICBpZiAoIWF0KGkpLnZpc2l0V2Vhayh2
bSwgcmVwYXRjaEJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljR2V0QnlJZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNHZXRCeUlkTGlzdC5oCShyZXZpc2lvbiAxODkyNjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNHZXRCeUlkTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGRv
ZXNDYWxscygpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBHZXR0ZXIgfHwgdHlwZSgpID09IEN1
c3RvbUdldHRlcjsgfQogICAgIAotICAgIGJvb2wgdmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImKSBj
b25zdDsKKyAgICBib29sIHZpc2l0V2VhayhWTSYsIFJlcGF0Y2hCdWZmZXImKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwpAQCAtMTE1LDcgKzExNSw3IEBA
IHB1YmxpYzoKICAgICAKICAgICBib29sIGRpZFNlbGZQYXRjaGluZygpIGNvbnN0OyAvLyBBcmUg
YW55IG9mIHRoZSBhY2Nlc3NlcyBTaW1wbGVJbmxpbmU/CiAgICAgCi0gICAgYm9vbCB2aXNpdFdl
YWsoUmVwYXRjaEJ1ZmZlciYpIGNvbnN0OworICAgIGJvb2wgdmlzaXRXZWFrKFZNJiwgUmVwYXRj
aEJ1ZmZlciYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlk
TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Bv
bHltb3JwaGljUHV0QnlJZExpc3QuY3BwCShyZXZpc2lvbiAxODkyNjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDcgKzYzLDcgQEAgUHV0QnlJZEFjY2VzcyBQdXRCeUlkQWNjZXNzOjpmcm9t
U3RydWN0dQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgUHV0QnlJZEFjY2Vzczo6dmlz
aXRXZWFrKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpIGNvbnN0Citib29sIFB1dEJ5SWRB
Y2Nlc3M6OnZpc2l0V2VhayhWTSYgdm0sIFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtODgsNyArODgsNyBAQCBib29sIFB1dEJ5SWRBY2Nlc3M6OnZpc2l0
V2VhayhSZXBhdGNoQnVmCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKCFtX3N0dWJSb3V0aW5lLT52aXNp
dFdlYWsocmVwYXRjaEJ1ZmZlcikpCisgICAgaWYgKCFtX3N0dWJSb3V0aW5lLT52aXNpdFdlYWso
dm0sIHJlcGF0Y2hCdWZmZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0xNDIsMTAgKzE0MiwxMCBAQCB2b2lkIFBvbHltb3JwaGljUHV0QnlJZExpc3Q6
OmFkZEFjY2VzcyhjCiAgICAgbV9saXN0Lmxhc3QoKSA9IHB1dEJ5SWRBY2Nlc3M7CiB9CiAKLWJv
b2wgUG9seW1vcnBoaWNQdXRCeUlkTGlzdDo6dmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImIHJlcGF0
Y2hCdWZmZXIpIGNvbnN0Citib29sIFBvbHltb3JwaGljUHV0QnlJZExpc3Q6OnZpc2l0V2VhayhW
TSYgdm0sIFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpIGNvbnN0CiB7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICghYXQoaSkudmlz
aXRXZWFrKHJlcGF0Y2hCdWZmZXIpKQorICAgICAgICBpZiAoIWF0KGkpLnZpc2l0V2Vhayh2bSwg
cmVwYXRjaEJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3Jw
aGljUHV0QnlJZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oCShyZXZpc2lvbiAxODkyNjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9j
dXN0b21TZXR0ZXI7CiAgICAgfQogCi0gICAgYm9vbCB2aXNpdFdlYWsoUmVwYXRjaEJ1ZmZlciYp
IGNvbnN0OworICAgIGJvb2wgdmlzaXRXZWFrKFZNJiwgUmVwYXRjaEJ1ZmZlciYpIGNvbnN0Owog
ICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwpAQCAtMTk0LDcgKzE5
NCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBQdXRLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBt
X2tpbmQ7IH0KICAgICAKLSAgICBib29sIHZpc2l0V2VhayhSZXBhdGNoQnVmZmVyJikgY29uc3Q7
CisgICAgYm9vbCB2aXNpdFdlYWsoVk0mLCBSZXBhdGNoQnVmZmVyJikgY29uc3Q7CiAgICAgCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAJKHJldmlz
aW9uIDE4OTI2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBTdHJ1Y3R1
cmVTdHViSW5mbzo6ZGVyZWYoKQogICAgIH0KIH0KIAotYm9vbCBTdHJ1Y3R1cmVTdHViSW5mbzo6
dmlzaXRXZWFrUmVmZXJlbmNlcyhSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyKQorYm9vbCBT
dHJ1Y3R1cmVTdHViSW5mbzo6dmlzaXRXZWFrUmVmZXJlbmNlcyhWTSYgdm0sIFJlcGF0Y2hCdWZm
ZXImIHJlcGF0Y2hCdWZmZXIpCiB7CiAgICAgc3dpdGNoIChhY2Nlc3NUeXBlKSB7CiAgICAgY2Fz
ZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6CkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgU3RydWN0dXJl
U3R1YkluZm86OnZpc2l0V2Vha1JlZmVyZW4KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX2xpc3Q6IHsKLSAgICAgICAg
aWYgKCF1LmdldEJ5SWRMaXN0Lmxpc3QtPnZpc2l0V2VhayhyZXBhdGNoQnVmZmVyKSkKKyAgICAg
ICAgaWYgKCF1LmdldEJ5SWRMaXN0Lmxpc3QtPnZpc2l0V2Vhayh2bSwgcmVwYXRjaEJ1ZmZlcikp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTg4
LDcgKzg4LDcgQEAgYm9vbCBTdHJ1Y3R1cmVTdHViSW5mbzo6dmlzaXRXZWFrUmVmZXJlbgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGFjY2Vzc19w
dXRfYnlfaWRfbGlzdDoKLSAgICAgICAgaWYgKCF1LnB1dEJ5SWRMaXN0Lmxpc3QtPnZpc2l0V2Vh
ayhyZXBhdGNoQnVmZmVyKSkKKyAgICAgICAgaWYgKCF1LnB1dEJ5SWRMaXN0Lmxpc3QtPnZpc2l0
V2Vhayh2bSwgcmVwYXRjaEJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgYWNjZXNzX2luX2xpc3Q6IHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShyZXZpc2lv
biAxODkyNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw3IEBAIHN0cnVjdCBTdHJ1Y3R1
cmVTdHViSW5mbyB7CiAgICAgLy8gb3V0Z29pbmcgR0MgcG9pbnRlcnMgYXJlIGtub3duIHRvIHBv
aW50IHRvIGN1cnJlbnRseSBtYXJrZWQgb2JqZWN0czsgdGhpcyBtZXRob2QgaXMKICAgICAvLyBh
bGxvd2VkIHRvIGFjY29tcGxpc2ggdGhpcyBieSBlaXRoZXIgY2xlYXJpbmcgdGhvc2UgcG9pbnRl
cnMgc29tZWhvdyBvciBieSBwcm92aW5nIHRoYXQKICAgICAvLyB0aGV5IGhhdmUgYWxyZWFkeSBi
ZWVuIG1hcmtlZC4gSXQgaXMgbm90IGFsbG93ZWQgdG8gbWFyayBuZXcgb2JqZWN0cy4KLSAgICBi
b29sIHZpc2l0V2Vha1JlZmVyZW5jZXMoUmVwYXRjaEJ1ZmZlciYpOworICAgIGJvb2wgdmlzaXRX
ZWFrUmVmZXJlbmNlcyhWTSYsIFJlcGF0Y2hCdWZmZXImKTsKICAgICAgICAgCiAgICAgYm9vbCBz
ZWVuT25jZSgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9BY2Nlc3Nv
ckNhbGxKSVRTdHViUm91dGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9BY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5jcHAJKHJldmlzaW9uIDE4OTI2NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00Myw5ICs0Myw5IEBAIEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0
aW5lOjp+QWNjZXNzb3JDYWwKIHsKIH0KIAotYm9vbCBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGlu
ZTo6dmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpCitib29sIEFjY2Vzc29y
Q2FsbEpJVFN0dWJSb3V0aW5lOjp2aXNpdFdlYWsoVk0mIHZtLCBSZXBhdGNoQnVmZmVyJiByZXBh
dGNoQnVmZmVyKQogewotICAgIG1fY2FsbExpbmtJbmZvLT52aXNpdFdlYWsocmVwYXRjaEJ1ZmZl
cik7CisgICAgbV9jYWxsTGlua0luZm8tPnZpc2l0V2Vhayh2bSwgcmVwYXRjaEJ1ZmZlcik7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQWNj
ZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgJKHJldmlzaW9uIDE4OTI2NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVh
bCB+QWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUoKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
dmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgdmlz
aXRXZWFrKFZNJiwgUmVwYXRjaEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvOwogfTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCShyZXZpc2lvbiAx
ODkyNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTMgKzU2LDcgQEAKIAogI2RlZmluZSBKSVRfQUxMT0NB
VE9SX0xBUkdFX0FMTE9DX1NJWkUgKHBhZ2VTaXplKCkgKiA0KQogCi0jaWYgRU5BQkxFKEFTU0VN
QkxFUl9XWF9FWENMVVNJVkUpCi0jZGVmaW5lIFBST1RFQ1RJT05fRkxBR1NfUlcgKFBST1RfUkVB
RCB8IFBST1RfV1JJVEUpCi0jZGVmaW5lIFBST1RFQ1RJT05fRkxBR1NfUlggKFBST1RfUkVBRCB8
IFBST1RfRVhFQykKLSNkZWZpbmUgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFIGZhbHNlCi0jZWxz
ZQogI2RlZmluZSBFWEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUgdHJ1ZQotI2VuZGlmCiAKIG5hbWVz
cGFjZSBKU0MgewogCkBAIC0xMTYsMzQgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBhbGxvY2F0ZShWTSYsIHNpemVfdCBzaXplSW5CeXRlcywg
dm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKIAotI2lmIEVOQUJMRShBU1NF
TUJMRVJfV1hfRVhDTFVTSVZFKQotICAgIHN0YXRpYyB2b2lkIG1ha2VXcml0YWJsZSh2b2lkKiBz
dGFydCwgc2l6ZV90IHNpemUpCi0gICAgewotICAgICAgICByZXByb3RlY3RSZWdpb24oc3RhcnQs
IHNpemUsIFdyaXRhYmxlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBtYWtlRXhlY3V0YWJs
ZSh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemUpCi0gICAgewotICAgICAgICByZXByb3RlY3RSZWdp
b24oc3RhcnQsIHNpemUsIEV4ZWN1dGFibGUpOwotICAgIH0KLSNlbHNlCi0gICAgc3RhdGljIHZv
aWQgbWFrZVdyaXRhYmxlKHZvaWQqLCBzaXplX3QpIHt9Ci0gICAgc3RhdGljIHZvaWQgbWFrZUV4
ZWN1dGFibGUodm9pZCosIHNpemVfdCkge30KLSNlbmRpZgotCiAgICAgc3RhdGljIHNpemVfdCBj
b21taXR0ZWRCeXRlQ291bnQoKTsKLQotcHJpdmF0ZToKLQotI2lmIEVOQUJMRShBU1NFTUJMRVJf
V1hfRVhDTFVTSVZFKQotICAgIHN0YXRpYyB2b2lkIHJlcHJvdGVjdFJlZ2lvbih2b2lkKiwgc2l6
ZV90LCBQcm90ZWN0aW9uU2V0dGluZyk7Ci0jaWYgRU5BQkxFKEVYRUNVVEFCTEVfQUxMT0NBVE9S
X0RFTUFORCkKLSAgICAvLyBXZSBjcmVhdGUgYSBNZXRhQWxsb2NhdG9yIGZvciBlYWNoIEpTIGds
b2JhbCBvYmplY3QuCi0gICAgc3RkOjp1bmlxdWVfcHRyPERlbWFuZEV4ZWN1dGFibGVBbGxvY2F0
b3I+IG1fYWxsb2NhdG9yOwotICAgIERlbWFuZEV4ZWN1dGFibGVBbGxvY2F0b3IqIGFsbG9jYXRv
cigpIHsgcmV0dXJuIG1fYWxsb2NhdG9yLmdldCgpOyB9Ci0jZW5kaWYKLSNlbmRpZgotCiB9Owog
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkgJiYgRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuY3BwCShyZXZpc2lvbiAxODky
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogSklUU3R1YlJv
dXRpbmU6On5KSVRTdHViUm91dGluZSgpIHsgfQogCi1ib29sIEpJVFN0dWJSb3V0aW5lOjp2aXNp
dFdlYWsoUmVwYXRjaEJ1ZmZlciYpCitib29sIEpJVFN0dWJSb3V0aW5lOjp2aXNpdFdlYWsoVk0m
LCBSZXBhdGNoQnVmZmVyJikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgJKHJldmlzaW9uIDE4OTI2NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB5b3Ug
YXJlIHN0aWxsIHZhbGlkIGFmdGVyLiBSZXR1cm4gZmFsc2UgaWYgeW91IGFyZSBub3cgaW52YWxp
ZC4gSWYgeW91IHJldHVybgogICAgIC8vIGZhbHNlLCB5b3Ugd2lsbCB1c3VhbGx5IG5vdCBkbyBh
bnkgY2xlYXJpbmcgYmVjYXVzZSB0aGUgaWRlYSBpcyB0aGF0IHlvdSB3aWxsIHNpbXBseSBiZQog
ICAgIC8vIGRlc3Ryb3llZC4KLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRXZWFrKFJlcGF0Y2hCdWZm
ZXImKTsKKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRXZWFrKFZNJiwgUmVwYXRjaEJ1ZmZlciYpOwog
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIG9ic2VydmVaZXJvUmVmQ291bnQoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuY3BwCShyZXZpc2lvbiAxODkyNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTMgKzQxLDEzIEBAIFBvbHltb3JwaGljQ2FsbE5vZGU6On5Qb2x5bW9ycGhpY0NhbGxO
b2QKICAgICAgICAgcmVtb3ZlKCk7CiB9CiAKLXZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5s
aW5rKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpCit2b2lkIFBvbHltb3JwaGljQ2FsbE5v
ZGU6OnVubGluayhWTSYgdm0sIFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpCiB7CiAgICAg
aWYgKG1fY2FsbExpbmtJbmZvKSB7CiAgICAgICAgIGlmIChPcHRpb25zOjpzaG93RGlzYXNzZW1i
bHkoKSkKICAgICAgICAgICAgIGRhdGFMb2coIlVubGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGF0
ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24oKSwgIiwgIiwgbV9jYWxsTGlu
a0luZm8tPmNvZGVPcmlnaW4oKSwgIlxuIik7CiAKLSAgICAgICAgbV9jYWxsTGlua0luZm8tPnVu
bGluayhyZXBhdGNoQnVmZmVyKTsKKyAgICAgICAgbV9jYWxsTGlua0luZm8tPnVubGluayh2bSwg
cmVwYXRjaEJ1ZmZlcik7CiAgICAgfQogCiAgICAgaWYgKGlzT25MaXN0KCkpCkBAIC0xMTcsNyAr
MTE3LDcgQEAgdm9pZCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6Y2xlYXJDYQogICAgIH0K
IH0KIAotYm9vbCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6dmlzaXRXZWFrKFJlcGF0Y2hC
dWZmZXImKQorYm9vbCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6dmlzaXRXZWFrKFZNJiwg
UmVwYXRjaEJ1ZmZlciYpCiB7CiAgICAgZm9yIChhdXRvJiB2YXJpYW50IDogbV92YXJpYW50cykg
ewogICAgICAgICBpZiAoIUhlYXA6OmlzTWFya2VkKHZhcmlhbnQuZ2V0KCkpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuaAkocmV2aXNpb24gMTg5MjY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3
IEBAIHB1YmxpYzoKICAgICAKICAgICB+UG9seW1vcnBoaWNDYWxsTm9kZSgpOwogICAgIAotICAg
IHZvaWQgdW5saW5rKFJlcGF0Y2hCdWZmZXImKTsKKyAgICB2b2lkIHVubGluayhWTSYsIFJlcGF0
Y2hCdWZmZXImKTsKIAogICAgIGJvb2wgaGFzQ2FsbExpbmtJbmZvKENhbGxMaW5rSW5mbyogaW5m
bykgeyByZXR1cm4gbV9jYWxsTGlua0luZm8gPT0gaW5mbzsgfQogICAgIHZvaWQgY2xlYXJDYWxs
TGlua0luZm8oKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNh
bGxOb2Rlc0ZvcihDYWxsTGlua0luZm8qKTsKICAgICAKLSAgICBib29sIHZpc2l0V2VhayhSZXBh
dGNoQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFdlYWsoVk0mLCBSZXBhdGNoQnVm
ZmVyJikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgbWFya1JlcXVp
cmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE4OTI3MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDI2ICs2
MCwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKIC8vIC0gdGFnVHlwZU51bWJlclJlZ2lzdGVyCiAvLyAt
IHRhZ01hc2tSZWdpc3RlcgogCi1zdGF0aWMgRnVuY3Rpb25QdHIgcmVhZENhbGxUYXJnZXQoUmVw
YXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgQ29kZUxvY2F0aW9uQ2FsbCBjYWxsKQorc3RhdGlj
IEZ1bmN0aW9uUHRyIHJlYWRDYWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9j
YXRpb25DYWxsIGNhbGwpCiB7CiAgICAgRnVuY3Rpb25QdHIgcmVzdWx0ID0gTWFjcm9Bc3NlbWJs
ZXI6OnJlYWRDYWxsVGFyZ2V0KGNhbGwpOwogI2lmIEVOQUJMRShGVExfSklUKQotICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gcmVwYXRjaEJ1ZmZlci5jb2RlQmxvY2soKTsKICAgICBpZiAoY29k
ZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6RlRMSklUKSB7CiAgICAgICAgIHJldHVybiBG
dW5jdGlvblB0cihjb2RlQmxvY2stPnZtKCktPmZ0bFRodW5rcy0+a2V5Rm9yU2xvd1BhdGhDYWxs
VGh1bmsoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVj
dXRhYmxlQWRkcmVzcygKICAgICAgICAgICAgICAgICByZXN1bHQuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpLmNhbGxUYXJnZXQoKSk7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVwYXRj
aEJ1ZmZlcik7CisgICAgVU5VU0VEX1BBUkFNKGNvZGVCbG9jayk7CiAjZW5kaWYgLy8gRU5BQkxF
KEZUTF9KSVQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIHZvaWQgcmVwYXRjaENh
bGwoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgQ29kZUxvY2F0aW9uQ2FsbCBjYWxsLCBG
dW5jdGlvblB0ciBuZXdDYWxsZWVGdW5jdGlvbikKK3N0YXRpYyB2b2lkIHJlcGF0Y2hDYWxsKFJl
cGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9j
YXRpb25DYWxsIGNhbGwsIEZ1bmN0aW9uUHRyIG5ld0NhbGxlZUZ1bmN0aW9uKQogewogI2lmIEVO
QUJMRShGVExfSklUKQotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gcmVwYXRjaEJ1ZmZlci5j
b2RlQmxvY2soKTsKICAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6RlRM
SklUKSB7CiAgICAgICAgIFZNJiB2bSA9ICpjb2RlQmxvY2stPnZtKCk7CiAgICAgICAgIEZUTDo6
VGh1bmtzJiB0aHVua3MgPSAqdm0uZnRsVGh1bmtzOwpAQCAtOTAsMTQgKzg4LDE2IEBAIHN0YXRp
YyB2b2lkIHJlcGF0Y2hDYWxsKFJlcGF0Y2hCdWZmZXImIHIKICAgICAgICAgbmV3Q2FsbGVlRnVu
Y3Rpb24gPSBGdW5jdGlvblB0cigKICAgICAgICAgICAgIHRodW5rcy5nZXRTbG93UGF0aENhbGxU
aHVuayh2bSwga2V5KS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgfQorI2Vsc2Ug
Ly8gRU5BQkxFKEZUTF9KSVQpCisgICAgVU5VU0VEX1BBUkFNKGNvZGVCbG9jayk7CiAjZW5kaWYg
Ly8gRU5BQkxFKEZUTF9KSVQpCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbCwgbmV3Q2Fs
bGVlRnVuY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCByZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNv
ZGVibG9jaywgQ29kZUxvY2F0aW9uQ2FsbCBjYWxsLCBGdW5jdGlvblB0ciBuZXdDYWxsZWVGdW5j
dGlvbikKK3N0YXRpYyB2b2lkIHJlcGF0Y2hDYWxsKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
TG9jYXRpb25DYWxsIGNhbGwsIEZ1bmN0aW9uUHRyIG5ld0NhbGxlZUZ1bmN0aW9uKQogewotICAg
IFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlYmxvY2spOwotICAgIHJlcGF0Y2hDYWxs
KHJlcGF0Y2hCdWZmZXIsIGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKKyAgICBSZXBhdGNoQnVm
ZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKKyAgICByZXBhdGNoQ2FsbChyZXBhdGNoQnVm
ZmVyLCBjb2RlQmxvY2ssIGNhbGwsIG5ld0NhbGxlZUZ1bmN0aW9uKTsKIH0KIAogc3RhdGljIHZv
aWQgcmVwYXRjaEJ5SWRTZWxmQWNjZXNzKApAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyB2b2lk
IHJlcGF0Y2hCeUlkU2VsZkFjY2VzcygKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIo
Y29kZUJsb2NrKTsKIAogICAgIC8vIE9ubHkgb3B0aW1pemUgb25jZSEKLSAgICByZXBhdGNoQ2Fs
bChyZXBhdGNoQnVmZmVyLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoRnVu
Y3Rpb24pOworICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIGNvZGVCbG9jaywgc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLCBzbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgIC8vIFBhdGNo
IHRoZSBzdHJ1Y3R1cmUgY2hlY2sgJiB0aGUgb2Zmc2V0IG9mIHRoZSBsb2FkLgogICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJB
dE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RydWN0dXJlLT5pZCgpKSk7CkBAIC02ODMsNyArNjgzLDcg
QEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogCiAgICAgICAgICAg
ICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKICAgICAgICAgICAgIHJl
cGxhY2VXaXRoSnVtcChyZXBhdGNoQnVmZmVyLCBzdHViSW5mbywgc3R1YkluZm8uc3R1YlJvdXRp
bmUtPmNvZGUoKS5jb2RlKCkpOwotICAgICAgICAgICAgcmVwYXRjaENhbGwocmVwYXRjaEJ1ZmZl
ciwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkKTsKKyAgICAg
ICAgICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIGNvZGVCbG9jaywgc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkKTsKIAogICAgICAgICAgICAgcmV0dXJu
IFJldHJ5Q2FjaGVMYXRlcjsKICAgICAgICAgfQpAQCAtNzE2LDcgKzcxNiw3IEBAIHN0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKIAogICAgICAgICBSZXBhdGNoQnVmZmVy
IHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKICAgICAgICAgcmVwbGFjZVdpdGhKdW1wKHJlcGF0
Y2hCdWZmZXIsIHN0dWJJbmZvLCBzdHViSW5mby5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSk7
Ci0gICAgICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlJZCk7CisgICAgICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hC
dWZmZXIsIGNvZGVCbG9jaywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25H
ZXRCeUlkKTsKIAogICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwogICAgIH0KQEAgLTEy
NjMsNyArMTI2Myw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQK
ICAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0
KAogICAgICAgICAgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0p1bXApLAog
ICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJJbmZvLnN0dWJSb3V0aW5lLT5j
b2RlKCkuY29kZSgpKSk7Ci0gICAgICAgICAgICByZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBz
dHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGFwcHJvcHJpYXRlTGlzdEJ1aWxkaW5nUHV0QnlJ
ZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAgICAgIHJlcGF0Y2hDYWxsKHJlcGF0
Y2hCdWZmZXIsIGNvZGVCbG9jaywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBhcHByb3By
aWF0ZUxpc3RCdWlsZGluZ1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRQdXRCeUlkVHJhbnNpdGlvbigqdm0sIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIG9sZFN0cnVjdHVyZSwgc3RydWN0dXJlLCBjb25k
aXRpb25TZXQsIHB1dEtpbmQgPT0gRGlyZWN0KTsKICAgICAgICAgICAgIApAQCAtMTMyMiw3ICsx
MzIyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRAogCiAgICAg
ICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogICAgICAgICByZXBh
dGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvSnVtcCksIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJS
b3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZm
ZXIsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgYXBwcm9wcmlhdGVMaXN0QnVpbGRpbmdQ
dXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOworICAgICAgICByZXBhdGNoQ2FsbChyZXBh
dGNoQnVmZmVyLCBjb2RlQmxvY2ssIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgYXBwcm9w
cmlhdGVMaXN0QnVpbGRpbmdQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOwogICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbGlzdC0+aXNGdWxsKCkpOwogICAgICAgICByZXR1cm4gUmV0cnlD
YWNoZUxhdGVyOwogICAgIH0KQEAgLTEzOTYsNyArMTM5Niw3IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlCdWlsZFB1dEJ5SWQKICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVm
ZmVyKGNvZGVCbG9jayk7CiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5qdW1wQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9K
dW1wKSwgQ29kZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKICAg
ICAgICAgaWYgKGxpc3QtPmlzRnVsbCgpKQotICAgICAgICAgICAgcmVwYXRjaENhbGwocmVwYXRj
aEJ1ZmZlciwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQ
dXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0S2luZCkpOworICAgICAgICAgICAgcmVwYXRjaENhbGwo
cmVwYXRjaEJ1ZmZlciwgY29kZUJsb2NrLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIGFw
cHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihzbG90LCBwdXRLaW5kKSk7CiAKICAgICAg
ICAgcmV0dXJuIFJldHJ5Q2FjaGVMYXRlcjsKICAgICB9CkBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5QnVpbGRQdXRCeUlkCiAgICAgICAgIFJlcGF0Y2hC
dWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwogICAgICAgICByZXBhdGNoQnVmZmVyLnJl
bGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KHN0dWJJbmZvLnBh
dGNoLmRlbHRhQ2FsbFRvSnVtcCksIENvZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLT5jb2Rl
KCkuY29kZSgpKSk7CiAgICAgICAgIGlmIChsaXN0LT5pc0Z1bGwoKSkKLSAgICAgICAgICAgIHJl
cGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgYXBw
cm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKHNsb3QsIHB1dEtpbmQpKTsKKyAgICAgICAg
ICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIGNvZGVCbG9jaywgc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLCBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oc2xvdCwgcHV0
S2luZCkpOwogCiAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CiAgICAgfQpAQCAtMTY2
NywxMyArMTY2NywxMiBAQCBzdGF0aWMgdm9pZCByZXZlcnRDYWxsKAogfQogCiB2b2lkIHVubGlu
a0ZvcigKLSAgICBSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBDYWxsTGlua0luZm8mIGNh
bGxMaW5rSW5mbykKKyAgICBWTSYgdm0sIFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIENh
bGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewogICAgIGlmIChPcHRpb25zOjpzaG93RGlzYXNz
ZW1ibHkoKSkKLSAgICAgICAgZGF0YUxvZygiVW5saW5raW5nIGNhbGwgZnJvbSAiLCBjYWxsTGlu
a0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCksICIgaW4gcmVxdWVzdCBmcm9tICIsIHBvaW50ZXJE
dW1wKHJlcGF0Y2hCdWZmZXIuY29kZUJsb2NrKCkpLCAiXG4iKTsKKyAgICAgICAgZGF0YUxvZygi
VW5saW5raW5nIGNhbGwgZnJvbSAiLCBjYWxsTGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCks
ICJcbiIpOwogICAgIAotICAgIFZNKiB2bSA9IHJlcGF0Y2hCdWZmZXIuY29kZUJsb2NrKCktPnZt
KCk7Ci0gICAgcmV2ZXJ0Q2FsbChyZXBhdGNoQnVmZmVyLCB2bSwgY2FsbExpbmtJbmZvLCB2bS0+
Z2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSk7CisgICAgcmV2ZXJ0Q2FsbChyZXBh
dGNoQnVmZmVyLCAmdm0sIGNhbGxMaW5rSW5mbywgdm0uZ2V0Q1RJU3R1YihsaW5rQ2FsbFRodW5r
R2VuZXJhdG9yKSk7CiB9CiAKIHZvaWQgbGlua1ZpcnR1YWxGb3IoCkBAIC0xOTM3LDkgKzE5MzYs
OSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgICAgIGNhbGxMaW5rSW5mby5yZW1v
dmUoKTsKIH0KIAotdm9pZCByZXNldEdldEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZl
ciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNldEdldEJ5SUQoUmVwYXRj
aEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbykKIHsKLSAgICByZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CisgICAg
cmVwYXRjaENhbGwocmVwYXRjaEJ1ZmZlciwgY29kZUJsb2NrLCBzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7CiAgICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsMzIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0
YUxhYmVsMzJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1U
b0NhbGwpOwogICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaCgpKSB7CiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJl
cGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgKQEAgLTE5NTksOSArMTk1OCw5
IEBAIHZvaWQgcmVzZXRHZXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2gKICAgICByZXBhdGNo
QnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uanVtcEF0T2Zmc2V0KHN0
dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvSnVtcCksIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpKTsKIH0K
IAotdm9pZCByZXNldFB1dEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNldFB1dEJ5SUQoUmVwYXRjaEJ1ZmZlciYg
cmVwYXRjaEJ1ZmZlciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKIHsKLSAgICBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIHVub3B0aW1pemVkRnVuY3Rp
b24gPSBiaXR3aXNlX2Nhc3Q8Vl9KSVRPcGVyYXRpb25fRVNzaUpKST4ocmVhZENhbGxUYXJnZXQo
cmVwYXRjaEJ1ZmZlciwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uKS5leGVjdXRhYmxlQWRk
cmVzcygpKTsKKyAgICBWX0pJVE9wZXJhdGlvbl9FU3NpSkpJIHVub3B0aW1pemVkRnVuY3Rpb24g
PSBiaXR3aXNlX2Nhc3Q8Vl9KSVRPcGVyYXRpb25fRVNzaUpKST4ocmVhZENhbGxUYXJnZXQoY29k
ZUJsb2NrLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24pLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OwogICAgIFZfSklUT3BlcmF0aW9uX0VTc2lKSkkgb3B0aW1pemVkRnVuY3Rpb247CiAgICAgaWYg
KHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdCB8fCB1bm9wdGlt
aXplZEZ1bmN0aW9uID09IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QpCiAgICAgICAg
IG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwpAQCAt
MTk3Myw3ICsxOTcyLDcgQEAgdm9pZCByZXNldFB1dEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRj
aAogICAgICAgICBBU1NFUlQodW5vcHRpbWl6ZWRGdW5jdGlvbiA9PSBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0Tm9uU3RyaWN0IHx8IHVub3B0aW1pemVkRnVuY3Rpb24gPT0gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCk7CiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwogICAgIH0KLSAgICByZXBh
dGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wdGlt
aXplZEZ1bmN0aW9uKTsKKyAgICByZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBjb2RlQmxvY2ss
IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwogICAgIENv
ZGVMb2NhdGlvbkRhdGFMYWJlbDMyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5k
ZWx0YUNoZWNrSW1tVG9DYWxsKTsKICAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBs
YWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSkgewogICAgICAgICByZXBhdGNoQnVmZmVy
LnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCkBAIC0x
OTkzLDcgKzE5OTIsNyBAQCB2b2lkIHJlc2V0UHV0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNo
CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmp1
bXBBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0p1bXApLCBzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1Ns
b3dDYXNlKSk7CiB9CiAKLXZvaWQgcmVzZXRJbihSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVy
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit2b2lkIHJlc2V0SW4oUmVwYXRjaEJ1ZmZl
ciYgcmVwYXRjaEJ1ZmZlciwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQogewogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5qdW1wQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9KdW1wKSwgc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxs
VG9TbG93Q2FzZSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgJKHJl
dmlzaW9uIDE4OTI2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTIgQEAgdm9pZCBidWlsZFB1dEJ5SWRMaXN0KEV4
ZWNTdGF0ZSosIEpTVmFsdQogdm9pZCByZXBhdGNoSW4oRXhlY1N0YXRlKiwgSlNDZWxsKiwgY29u
c3QgSWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIGxpbmtGb3IoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJiwg
Q29kZUJsb2NrKiwgSlNGdW5jdGlvbiogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIpOwog
dm9pZCBsaW5rU2xvd0ZvcihFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8mKTsKLXZvaWQgdW5saW5r
Rm9yKFJlcGF0Y2hCdWZmZXImLCBDYWxsTGlua0luZm8mKTsKK3ZvaWQgdW5saW5rRm9yKFZNJiwg
UmVwYXRjaEJ1ZmZlciYsIENhbGxMaW5rSW5mbyYpOwogdm9pZCBsaW5rVmlydHVhbEZvcihFeGVj
U3RhdGUqLCBDYWxsTGlua0luZm8mKTsKIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChFeGVjU3Rh
dGUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudCk7Ci12b2lkIHJlc2V0R2V0QnlJRChSZXBh
dGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8mKTsKLXZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0
Y2hCdWZmZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwotdm9pZCByZXNldEluKFJlcGF0Y2hCdWZm
ZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldEdldEJ5SUQoUmVwYXRjaEJ1ZmZl
ciYsIENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlc2V0UHV0QnlJRChS
ZXBhdGNoQnVmZmVyJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVz
ZXRJbihSZXBhdGNoQnVmZmVyJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAK
</data>
<flag name="review"
          id="285684"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>