<?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>97080</bug_id>
          
          <creation_ts>2012-09-19 00:57:30 -0700</creation_ts>
          <short_desc>DFG should not emit PutByVal hole case unless it has to</short_desc>
          <delta_ts>2012-09-19 14:45:00 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>723356</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-19 00:57:30 -0700</bug_when>
    <thetext>This is useful for two reasons:

1) If the hole case is never hit then we should just emit less code.  The hole check becomes a speculation check instead of a jump over some slow path code.

2) It gives us some ability to bloat the hole case code if we need to, for example if it becomes useful for contiguous array inference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723360</commentid>
    <comment_count>1</comment_count>
      <attachid>164683</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-19 01:01:05 -0700</bug_when>
    <thetext>Created attachment 164683
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723365</commentid>
    <comment_count>2</comment_count>
      <attachid>164683</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-19 01:07:57 -0700</bug_when>
    <thetext>Comment on attachment 164683
work in progress

Attachment 164683 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13903416</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723368</commentid>
    <comment_count>3</comment_count>
      <attachid>164683</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-19 01:08:19 -0700</bug_when>
    <thetext>Comment on attachment 164683
work in progress

Attachment 164683 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13898436</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723371</commentid>
    <comment_count>4</comment_count>
      <attachid>164683</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-19 01:10:50 -0700</bug_when>
    <thetext>Comment on attachment 164683
work in progress

Attachment 164683 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13892465</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723381</commentid>
    <comment_count>5</comment_count>
      <attachid>164683</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-19 01:26:57 -0700</bug_when>
    <thetext>Comment on attachment 164683
work in progress

Attachment 164683 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13899447</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723415</commentid>
    <comment_count>6</comment_count>
      <attachid>164699</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-19 02:44:32 -0700</bug_when>
    <thetext>Created attachment 164699
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723589</commentid>
    <comment_count>7</comment_count>
      <attachid>164699</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-19 08:43:12 -0700</bug_when>
    <thetext>Comment on attachment 164699
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723849</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-19 14:45:00 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/129045</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164683</attachid>
            <date>2012-09-19 01:01:05 -0700</date>
            <delta_ts>2012-09-19 02:44:32 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>hole_patch_1.diff</filename>
            <type>text/plain</type>
            <size>24903</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4OTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDEyLTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBub3QgZW1pdCBQdXRCeVZhbCBob2xlIGNhc2UgdW5sZXNzIGl0IGhhcyB0bwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwODAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3JrIGluIHBy
b2dyZXNzLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6Cisg
ICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nl82NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2XzY0OjpzdG9yZTgpOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgor
ICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6
OkFycmF5UHJvZmlsZTo6YWRkcmVzc09mTWF5U3RvcmVUb0hvbGUpOgorICAgICAgICAoSlNDOjpB
cnJheVByb2ZpbGU6Om1heVN0b3JlVG9Ib2xlKToKKyAgICAgICAgKEFycmF5UHJvZmlsZSk6Cisg
ICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZnJvbU9i
c2VydmVkKToKKyAgICAgICAgKEpTQzo6REZHOjptb2RlQWxyZWFkeUNoZWNrZWQpOgorICAgICAg
ICAoSlNDOjpERkc6Om1vZGVUb1N0cmluZyk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5o
OgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjptYXlTdG9yZVRvSG9sZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6CisgICAgICAgICogaml0L0pJ
VElubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlQcm9maWxlU3Rv
cmVUb0hvbGVTcGVjaWFsQ2FzZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFs
KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisKIDIwMTItMDktMTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBERkcgc2hvdWxkIG5vdCBjYWxsIG91dCB0byBDKysgZXZlcnkgdGltZSB0aGF0IGl0
IHRyaWVzIHRvIHB1dCB0byBhbiBvYmplY3QgdGhhdCBkb2Vzbid0IHlldCBoYXZlIGFycmF5IHN0
b3JhZ2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDEyODk3MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OnN1YjMyOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkMzI7
CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlMzI7CisgICAgdXNpbmcg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6Y2FsbDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6anVt
cDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YWRkRG91YmxlOwpAQCAtMTE0
LDYgKzExNSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
KSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAgc3RvcmUzMihpbW0sIHNjcmF0Y2hSZWdpc3Rl
cik7CiAgICAgfQorICAgIAorICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIHZvaWQq
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNj
cmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlOChpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lz
dGVyKSk7CisgICAgfQogCiAgICAgQ2FsbCBjYWxsKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAxMjg5NzIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fbGFzdFNlZW5T
dHJ1Y3R1cmUoMCkKICAgICAgICAgLCBtX2V4cGVjdGVkU3RydWN0dXJlKDApCiAgICAgICAgICwg
bV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGljKGZhbHNlKQorICAgICAgICAsIG1fbWF5U3RvcmVUb0hv
bGUoZmFsc2UpCiAgICAgICAgICwgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2Up
CiAgICAgICAgICwgbV9vYnNlcnZlZEFycmF5TW9kZXMoMCkKICAgICB7CkBAIC02NCw2ICs2NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCiAgICAgICAgICwg
bV9leHBlY3RlZFN0cnVjdHVyZSgwKQogICAgICAgICAsIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhp
YyhmYWxzZSkKKyAgICAgICAgLCBtX21heVN0b3JlVG9Ib2xlKGZhbHNlKQogICAgICAgICAsIG1f
bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGZhbHNlKQogICAgICAgICAsIG1fb2JzZXJ2ZWRB
cnJheU1vZGVzKDApCiAgICAgewpAQCAtNzMsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
U3RydWN0dXJlKiogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSB7IHJldHVybiAmbV9sYXN0
U2VlblN0cnVjdHVyZTsgfQogICAgIEFycmF5TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7
IHJldHVybiAmbV9vYnNlcnZlZEFycmF5TW9kZXM7IH0KKyAgICBib29sKiBhZGRyZXNzT2ZNYXlT
dG9yZVRvSG9sZSgpIHsgcmV0dXJuICZtX21heVN0b3JlVG9Ib2xlOyB9CiAgICAgCiAgICAgdm9p
ZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKQEAgLTkzLDYg
Kzk2LDggQEAgcHVibGljOgogICAgIEFycmF5TW9kZXMgb2JzZXJ2ZWRBcnJheU1vZGVzKCkgY29u
c3QgeyByZXR1cm4gbV9vYnNlcnZlZEFycmF5TW9kZXM7IH0KICAgICBib29sIG1heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzOyB9CiAgICAgCisgICAgYm9vbCBtYXlTdG9yZVRvSG9sZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF5U3RvcmVUb0hvbGU7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAKQEAgLTEwMCw2ICsxMDUsNyBAQCBwcml2YXRlOgog
ICAgIFN0cnVjdHVyZSogbV9sYXN0U2VlblN0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmUqIG1fZXhw
ZWN0ZWRTdHJ1Y3R1cmU7CiAgICAgYm9vbCBtX3N0cnVjdHVyZUlzUG9seW1vcnBoaWM7CisgICAg
Ym9vbCBtX21heVN0b3JlVG9Ib2xlOyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVk
IHRvIGluZGljYXRlIG90aGVyIHNwZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1
cmluZyBhcnJheSBhY2Nlc3MsIGFzIGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ug
d2UgY3VycmVudGx5IGhhdmUgYmFzaWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2
YXJpYW50cyBvZiBBcnJheVN0b3JhZ2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4
YWN0bHkgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLgogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRl
eGVkQWNjZXNzZXM7CiAgICAgQXJyYXlNb2RlcyBtX29ic2VydmVkQXJyYXlNb2RlczsKIH07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lv
biAxMjg5NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDE3ICs0MiwxNyBAQCBBcnJheTo6TW9kZSBmcm9tT2JzZXJ2
ZWQoQXJyYXlQcm9maWxlKiBwCiAgICAgICAgICAgICByZXR1cm4gQXJyYXk6OkJsYW5rVG9BcnJh
eVN0b3JhZ2U7IC8vIEZJWE1FOiB3ZSBkb24ndCBrbm93IHdoZXRoZXIgdG8gZ28gdG8gc2xvdyBw
dXQgbW9kZSwgb3Igbm90LiBUaGlzIGlzIGEgZGVjZW50IGd1ZXNzLgogICAgICAgICByZXR1cm4g
QXJyYXk6OlVuZGVjaWRlZDsKICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhBcnJh
eVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gbWFrZVNhZmUgPyBBcnJheTo6QXJyYXlTdG9yYWdl
T3V0T2ZCb3VuZHMgOiBBcnJheTo6QXJyYXlTdG9yYWdlOworICAgICAgICByZXR1cm4gbWFrZVNh
ZmUgPyBBcnJheTo6QXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHMgOiAocHJvZmlsZS0+bWF5U3RvcmVU
b0hvbGUoKSA/IEFycmF5OjpBcnJheVN0b3JhZ2VUb0hvbGUgOiBBcnJheTo6QXJyYXlTdG9yYWdl
KTsKICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdl
KToKICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNB
cnJheU1vZGVzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOgogICAgICAgICByZXR1
cm4gQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U7CiAgICAgY2FzZSBhc0FycmF5TW9kZXMoQXJy
YXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIG1ha2VTYWZlID8gQXJyYXk6OkFy
cmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRzIDogQXJyYXk6OkFycmF5V2l0aEFycmF5U3Rv
cmFnZTsKKyAgICAgICAgcmV0dXJuIG1ha2VTYWZlID8gQXJyYXk6OkFycmF5V2l0aEFycmF5U3Rv
cmFnZU91dE9mQm91bmRzIDogKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKCkgPyBBcnJheTo6QXJy
YXlXaXRoQXJyYXlTdG9yYWdlVG9Ib2xlIDogQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZSk7
CiAgICAgY2FzZSBhc0FycmF5TW9kZXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAg
ICAgY2FzZSBhc0FycmF5TW9kZXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2Rl
cyhBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKICAgICAgICAgcmV0dXJuIEFycmF5OjpB
cnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFy
cmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KToKLSAgICAgICAgcmV0dXJuIG1ha2VTYWZlID8gQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJy
YXlTdG9yYWdlT3V0T2ZCb3VuZHMgOiBBcnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJheVN0b3Jh
Z2U7CisgICAgICAgIHJldHVybiBtYWtlU2FmZSA/IEFycmF5OjpQb3NzaWJseUFycmF5V2l0aEFy
cmF5U3RvcmFnZU91dE9mQm91bmRzIDogKHByb2ZpbGUtPm1heVN0b3JlVG9Ib2xlKCkgPyBBcnJh
eTo6UG9zc2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2VUb0hvbGUgOiBBcnJheTo6UG9zc2libHlB
cnJheVdpdGhBcnJheVN0b3JhZ2UpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzKEFycmF5V2l0aFNsb3dQdXRBcnJh
eVN0b3JhZ2UpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFn
ZSkgfCBhc0FycmF5TW9kZXMoQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2RlcyhO
b25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2RlcyhBcnJheVdpdGhT
bG93UHV0QXJyYXlTdG9yYWdlKToKICAgICAgICAgcmV0dXJuIEFycmF5OjpQb3NzaWJseUFycmF5
V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U7CkBAIC0xMzksOCArMTM5LDEwIEBAIGJvb2wgbW9kZUFs
cmVhZHlDaGVja2VkKEFic3RyYWN0VmFsdWUmIHYKICAgICAgICAgcmV0dXJuIGlzU3RyaW5nU3Bl
Y3VsYXRpb24odmFsdWUubV90eXBlKTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheTo6QXJyYXlT
dG9yYWdlOgorICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZVRvSG9sZToKICAgICBjYXNlIEFy
cmF5OjpBcnJheVN0b3JhZ2VPdXRPZkJvdW5kczoKICAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFy
cmF5V2l0aEFycmF5U3RvcmFnZToKKyAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFycmF5V2l0aEFy
cmF5U3RvcmFnZVRvSG9sZToKICAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFycmF5V2l0aEFycmF5
U3RvcmFnZU91dE9mQm91bmRzOgogICAgICAgICByZXR1cm4gdmFsdWUubV9jdXJyZW50S25vd25T
dHJ1Y3R1cmUuaGFzU2luZ2xldG9uKCkKICAgICAgICAgICAgICYmICh2YWx1ZS5tX2N1cnJlbnRL
bm93blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+aW5kZXhpbmdUeXBlKCkgJiBIYXNBcnJheVN0b3Jh
Z2UpOwpAQCAtMTUxLDYgKzE1Myw3IEBAIGJvb2wgbW9kZUFscmVhZHlDaGVja2VkKEFic3RyYWN0
VmFsdWUmIHYKICAgICAgICAgICAgICYmICh2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5z
aW5nbGV0b24oKS0+aW5kZXhpbmdUeXBlKCkgJiAoSGFzQXJyYXlTdG9yYWdlIHwgSGFzU2xvd1B1
dEFycmF5U3RvcmFnZSkpOwogICAgICAgICAKICAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhBcnJh
eVN0b3JhZ2U6CisgICAgY2FzZSBBcnJheTo6QXJyYXlXaXRoQXJyYXlTdG9yYWdlVG9Ib2xlOgog
ICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRzOgogICAgICAg
ICByZXR1cm4gdmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaGFzU2luZ2xldG9uKCkKICAg
ICAgICAgICAgICYmICh2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+
aW5kZXhpbmdUeXBlKCkgJiBIYXNBcnJheVN0b3JhZ2UpCkBAIC0yMTUsMTggKzIxOCwyNCBAQCBj
b25zdCBjaGFyKiBtb2RlVG9TdHJpbmcoQXJyYXk6Ok1vZGUgbW9kCiAgICAgICAgIHJldHVybiAi
U3RyaW5nIjsKICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CiAgICAgICAgIHJldHVybiAi
QXJyYXlTdG9yYWdlIjsKKyAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2VUb0hvbGU6CisgICAg
ICAgIHJldHVybiAiQXJyYXlTdG9yYWdlVG9Ib2xlIjsKICAgICBjYXNlIEFycmF5OjpTbG93UHV0
QXJyYXlTdG9yYWdlOgogICAgICAgICByZXR1cm4gIlNsb3dQdXRBcnJheVN0b3JhZ2UiOwogICAg
IGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZU91dE9mQm91bmRzOgogICAgICAgICByZXR1cm4gIkFy
cmF5U3RvcmFnZU91dE9mQm91bmRzIjsKICAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhBcnJheVN0
b3JhZ2U6CiAgICAgICAgIHJldHVybiAiQXJyYXlXaXRoQXJyYXlTdG9yYWdlIjsKKyAgICBjYXNl
IEFycmF5OjpBcnJheVdpdGhBcnJheVN0b3JhZ2VUb0hvbGU6CisgICAgICAgIHJldHVybiAiQXJy
YXlXaXRoQXJyYXlTdG9yYWdlVG9Ib2xlIjsKICAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhTbG93
UHV0QXJyYXlTdG9yYWdlOgogICAgICAgICByZXR1cm4gIkFycmF5V2l0aFNsb3dQdXRBcnJheVN0
b3JhZ2UiOwogICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRz
OgogICAgICAgICByZXR1cm4gIkFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRzIjsKICAg
ICBjYXNlIEFycmF5OjpQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAgICAgcmV0
dXJuICJQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZSI7CisgICAgY2FzZSBBcnJheTo6UG9z
c2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2VUb0hvbGU6CisgICAgICAgIHJldHVybiAiUG9zc2li
bHlBcnJheVdpdGhBcnJheVN0b3JhZ2VUb0hvbGUiOwogICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5
QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgcmV0dXJuICJQb3NzaWJseUFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UiOwogICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJy
YXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FycmF5TW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlNb2RlLmgJKHJldmlzaW9uIDEyODk3MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDEyICs1NCwx
NSBAQCBlbnVtIE1vZGUgewogICAgIAogICAgIC8vIE1vZGVzIG9mIGNvbnZlbnRpb25hbCBpbmRl
eGVkIHN0b3JhZ2Ugd2hlcmUgdGhlIGNoZWNrIGlzIG5vbiBzaWRlLWVmZmVjdGluZy4KICAgICBB
cnJheVN0b3JhZ2UsCisgICAgQXJyYXlTdG9yYWdlVG9Ib2xlLAogICAgIFNsb3dQdXRBcnJheVN0
b3JhZ2UsCiAgICAgQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHMsCiAgICAgQXJyYXlXaXRoQXJyYXlT
dG9yYWdlLAorICAgIEFycmF5V2l0aEFycmF5U3RvcmFnZVRvSG9sZSwKICAgICBBcnJheVdpdGhT
bG93UHV0QXJyYXlTdG9yYWdlLAogICAgIEFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRz
LAogICAgIFBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlLAorICAgIFBvc3NpYmx5QXJyYXlX
aXRoQXJyYXlTdG9yYWdlVG9Ib2xlLAogICAgIFBvc3NpYmx5QXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZSwKICAgICBQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRzLAog
ICAgIApAQCAtODcsMjAgKzkwLDI4IEBAIGVudW0gTW9kZSB7CiAvLyBGaXJzdDogaGVscGVycyBm
b3Igbm9uLXNpZGUtZWZmZWN0aW5nIGNoZWNrcy4KICNkZWZpbmUgTk9OX0FSUkFZX0FSUkFZX1NU
T1JBR0VfTU9ERVMgICAgICAgICAgICAgICAgICAgICAgXAogICAgIEFycmF5OjpBcnJheVN0b3Jh
Z2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2FzZSBBcnJheTo6
QXJyYXlTdG9yYWdlVG9Ib2xlOiAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIEFy
cmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOiAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNh
c2UgQXJyYXk6OkFycmF5U3RvcmFnZU91dE9mQm91bmRzOiAgICAgICAgICAgICAgICAgICBcCiAg
ICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2U6ICAgICAgICAgICAg
IFwKKyAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZVRvSG9sZTog
ICAgICAgXAogICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoU2xvd1B1dEFycmF5U3Rv
cmFnZTogICAgICBcCiAgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJheVN0b3Jh
Z2VPdXRPZkJvdW5kcwogI2RlZmluZSBBUlJBWV9XSVRIX0FSUkFZX1NUT1JBR0VfTU9ERVMgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZTogICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhBcnJheVN0
b3JhZ2VUb0hvbGU6ICAgICAgICAgICAgICAgXAogICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aFNs
b3dQdXRBcnJheVN0b3JhZ2U6ICAgICAgICAgICAgICBcCiAgICAgY2FzZSBBcnJheTo6QXJyYXlX
aXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHMKICNkZWZpbmUgQUxMX0FSUkFZX1NUT1JBR0VfTU9E
RVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIE5PTl9BUlJBWV9BUlJBWV9TVE9S
QUdFX01PREVTOiAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBBUlJBWV9XSVRI
X0FSUkFZX1NUT1JBR0VfTU9ERVMKKyNkZWZpbmUgQVJSQVlfU1RPUkFHRV9UT19IT0xFX01PREVT
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFycmF5OjpBcnJheVN0b3JhZ2VUb0hvbGU6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2FzZSBBcnJheTo6QXJyYXlXaXRo
QXJyYXlTdG9yYWdlVG9Ib2xlOiAgICAgICAgICAgICAgIFwKKyAgICBjYXNlIEFycmF5OjpQb3Nz
aWJseUFycmF5V2l0aEFycmF5U3RvcmFnZVRvSG9sZQogI2RlZmluZSBJTl9CT1VORFNfQVJSQVlf
U1RPUkFHRV9NT0RFUyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgQXJyYXk6OkFycmF5U3Rv
cmFnZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBUlJBWV9TVE9S
QUdFX1RPX0hPTEVfTU9ERVM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNhc2Ug
QXJyYXk6OkFycmF5U3RvcmFnZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
Y2FzZSBBcnJheTo6QXJyYXlXaXRoQXJyYXlTdG9yYWdlOiAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZQogI2RlZmluZSBT
TE9XX1BVVF9BUlJBWV9TVE9SQUdFX01PREVTICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0x
NzIsNiArMTgzLDE4IEBAIGlubGluZSBib29sIGlzU2xvd1B1dEFjY2VzcyhBcnJheTo6TW9kZSAK
ICAgICB9CiB9CiAKK2lubGluZSBib29sIG1heVN0b3JlVG9Ib2xlKEFycmF5OjpNb2RlIGFycmF5
TW9kZSkKK3sKKyAgICBzd2l0Y2ggKGFycmF5TW9kZSkgeworICAgIGNhc2UgQVJSQVlfU1RPUkFH
RV9UT19IT0xFX01PREVTOgorICAgIGNhc2UgT1VUX09GX0JPVU5EU19BUlJBWV9TVE9SQUdFX01P
REVTOgorICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9BUlJBWV9TVE9SQUdFX01PREVTOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCiBpbmxpbmUgYm9vbCBjYW5DU0VTdG9yYWdlKEFycmF5OjpNb2RlIGFycmF5TW9kZSkK
IHsKICAgICBzd2l0Y2ggKGFycmF5TW9kZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMjg5
NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQ3LDI1ICsyNzQ3LDM0IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIHN0b3JhZ2UudXNlKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlJ3JlIHdyaXRpbmcgdG8gYSBo
b2xlOyBpZiBzbyBpbmNyZW1lbnQgbV9udW1WYWx1ZXNJblZlY3Rvci4KLSAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIG5vdEhvbGVWYWx1ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihB
cnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy50YWcpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSG9sZVZhbHVlOwotICAgICAgICAgICAgaWYg
KGlzU2xvd1B1dEFjY2VzcyhhcnJheU1vZGUpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyBzb3J0IG9mIHN0cmFuZ2UuIElmIHdlIHdhbnRlZCB0byBvcHRpbWl6ZSB0aGlzIGNvZGUgcGF0
aCwgd2Ugd291bGQgaW52ZXJ0Ci0gICAgICAgICAgICAgICAgLy8gdGhlIGFib3ZlIGJyYW5jaC4g
QnV0IGl0J3Mgc2ltcGx5IG5vdCB3b3J0aCBpdCBzaW5jZSB0aGlzIG9ubHkgaGFwcGVucyBpZiB3
ZSdyZQotICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgaGF2aW5nIGEgYmFkIHRpbWUuCi0gICAg
ICAgICAgICAgICAgaXNIb2xlVmFsdWUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICBpZiAo
IW1heVN0b3JlVG9Ib2xlKGFycmF5TW9kZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlz
IHVuY291bnRhYmxlIGJlY2F1c2UgaWYgd2UgdGFrZSB0aGlzIGV4aXQsIHRoZW4gdGhlIGJhc2Vs
aW5lIEpJVAorICAgICAgICAgICAgICAgIC8vIHdpbGwgaW1tZWRpYXRlbHkgY291bnQgdGhlIGhv
bGUgc3RvcmUuIFNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGV4aXQKKyAgICAgICAgICAgICAgICAv
LyBwcm9maWxpbmcuCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAg
ICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0p
ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdG9yYWdlUmVnLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX251bVZhbHVl
c0luVmVjdG9yKSkpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIElmIHdl
J3JlIHdyaXRpbmcgdG8gYSBob2xlIHdlIG1pZ2h0IGJlIGdyb3dpbmcgdGhlIGFycmF5OyAKLSAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBsZW5ndGhEb2VzTm90TmVlZFVwZGF0
ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlSZWcsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zm
c2V0KCkpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHBy
b3BlcnR5UmVnKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHByb3BlcnR5UmVnLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBBcnJheVN0b3JhZ2U6Omxlbmd0aE9m
ZnNldCgpKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCBw
cm9wZXJ0eVJlZyk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbGVuZ3RoRG9l
c05vdE5lZWRVcGRhdGUubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIG5vdEhvbGVWYWx1ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJl
ZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3Jh
Z2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcp
KSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoaXNTbG93UHV0QWNjZXNzKGFycmF5TW9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBzb3J0IG9mIHN0cmFuZ2UuIElmIHdlIHdhbnRlZCB0byBvcHRpbWl6ZSB0aGlz
IGNvZGUgcGF0aCwgd2Ugd291bGQgaW52ZXJ0CisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBh
Ym92ZSBicmFuY2guIEJ1dCBpdCdzIHNpbXBseSBub3Qgd29ydGggaXQgc2luY2UgdGhpcyBvbmx5
IGhhcHBlbnMgaWYgd2UncmUKKyAgICAgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBoYXZpbmcg
YSBiYWQgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgaXNIb2xlVmFsdWUgPSBtX2ppdC5qdW1w
KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQu
YWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVn
LCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX251bVZhbHVlc0luVmVjdG9yKSkpOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgd3Jp
dGluZyB0byBhIGhvbGUgd2UgbWlnaHQgYmUgZ3Jvd2luZyB0aGUgYXJyYXk7IAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBsZW5ndGhEb2VzTm90TmVlZFVwZGF0ZSA9
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlSZWcsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zmc2V0
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBw
cm9wZXJ0eVJlZyk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIocHJvcGVydHlS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEFycmF5U3RvcmFnZTo6bGVu
Z3RoT2Zmc2V0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZElt
bTMyKDEpLCBwcm9wZXJ0eVJlZyk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBsZW5ndGhEb2VzTm90TmVlZFVwZGF0ZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIG5vdEhvbGVWYWx1ZS5saW5rKCZtX2ppdCk7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBub3RIb2xlVmFsdWUubGluaygmbV9qaXQpOwogCiAgICAg
ICAgICAgICAvLyBTdG9yZSB0aGUgdmFsdWUgdG8gdGhlIGFycmF5LgogICAgICAgICAgICAgbV9q
aXQuc3RvcmUzMih2YWx1ZVRhZ1JlZywgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdl
UmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZT
RVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy50YWcpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEyODk3MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3NjYsMjUgKzI3NjYsMzQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgc3RvcmFnZS51c2UoKTsKICAgICAgICAgCiAgICAgICAgICAg
ICAvLyBDaGVjayBpZiB3ZSdyZSB3cml0aW5nIHRvIGEgaG9sZTsgaWYgc28gaW5jcmVtZW50IG1f
bnVtVmFsdWVzSW5WZWN0b3IuCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RI
b2xlVmFsdWUgPSBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fz
c2VtYmxlcjo6U2NhbGVQdHIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9y
WzBdKSkpOwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNIb2xlVmFsdWU7Ci0g
ICAgICAgICAgICBpZiAoaXNTbG93UHV0QWNjZXNzKGFycmF5TW9kZSkpIHsKLSAgICAgICAgICAg
ICAgICAvLyBUaGlzIGlzIHNvcnQgb2Ygc3RyYW5nZS4gSWYgd2Ugd2FudGVkIHRvIG9wdGltaXpl
IHRoaXMgY29kZSBwYXRoLCB3ZSB3b3VsZCBpbnZlcnQKLSAgICAgICAgICAgICAgICAvLyB0aGUg
YWJvdmUgYnJhbmNoLiBCdXQgaXQncyBzaW1wbHkgbm90IHdvcnRoIGl0IHNpbmNlIHRoaXMgb25s
eSBoYXBwZW5zIGlmIHdlJ3JlCi0gICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBoYXZpbmcgYSBi
YWQgdGltZS4KLSAgICAgICAgICAgICAgICBpc0hvbGVWYWx1ZSA9IG1faml0Lmp1bXAoKTsKKyAg
ICAgICAgICAgIGlmICghbWF5U3RvcmVUb0hvbGUoYXJyYXlNb2RlKSkgeworICAgICAgICAgICAg
ICAgIC8vIFRoaXMgaXMgdW5jb3VudGFibGUgYmVjYXVzZSBpZiB3ZSB0YWtlIHRoaXMgZXhpdCwg
dGhlbiB0aGUgYmFzZWxpbmUgSklUCisgICAgICAgICAgICAgICAgLy8gd2lsbCBpbW1lZGlhdGVs
eSBjb3VudCB0aGUgaG9sZSBzdG9yZS4gU28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgZXhpdAorICAg
ICAgICAgICAgICAgIC8vIHByb2ZpbGluZy4KKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAorICAgICAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1i
bGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3Jh
Z2UsIG1fdmVjdG9yWzBdKSkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlUmVnLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX251bVZhbHVlc0luVmVj
dG9yKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdEhvbGVWYWx1
ZSA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVy
OjpTY2FsZVB0ciwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0pKSk7
CisgICAgICAgICAgICAgICAgaWYgKGlzU2xvd1B1dEFjY2VzcyhhcnJheU1vZGUpKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgc29ydCBvZiBzdHJhbmdlLiBJZiB3ZSB3YW50ZWQg
dG8gb3B0aW1pemUgdGhpcyBjb2RlIHBhdGgsIHdlIHdvdWxkIGludmVydAorICAgICAgICAgICAg
ICAgICAgICAvLyB0aGUgYWJvdmUgYnJhbmNoLiBCdXQgaXQncyBzaW1wbHkgbm90IHdvcnRoIGl0
IHNpbmNlIHRoaXMgb25seSBoYXBwZW5zIGlmIHdlJ3JlCisgICAgICAgICAgICAgICAgICAgIC8v
IGFscmVhZHkgaGF2aW5nIGEgYmFkIHRpbWUuCisgICAgICAgICAgICAgICAgICAgIGlzSG9sZVZh
bHVlID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZVJlZywgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9udW1WYWx1
ZXNJblZlY3RvcikpKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBJZiB3
ZSdyZSB3cml0aW5nIHRvIGEgaG9sZSB3ZSBtaWdodCBiZSBncm93aW5nIHRoZSBhcnJheTsgCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbGVuZ3RoRG9lc05vdE5lZWRVcGRh
dGUgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIHByb3BlcnR5UmVnLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBBcnJheVN0b3JhZ2U6Omxlbmd0aE9m
ZnNldCgpKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBw
cm9wZXJ0eVJlZyk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihwcm9wZXJ0eVJlZywg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQXJyYXlTdG9yYWdlOjpsZW5ndGhP
ZmZzZXQoKSkpOwotICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMigxKSwg
cHJvcGVydHlSZWcpOworICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSB3cml0aW5nIHRv
IGEgaG9sZSB3ZSBtaWdodCBiZSBncm93aW5nIHRoZSBhcnJheTsgCisgICAgICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGxlbmd0aERvZXNOb3ROZWVkVXBkYXRlID0gbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSkpOwor
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHByb3BlcnR5
UmVnKTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihwcm9wZXJ0eVJlZywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZz
ZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoMSks
IHByb3BlcnR5UmVnKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBsZW5ndGhE
b2VzTm90TmVlZFVwZGF0ZS5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0
aERvZXNOb3ROZWVkVXBkYXRlLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgbm90SG9sZVZhbHVlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIG5vdEhvbGVWYWx1ZS5saW5rKCZtX2ppdCk7CiAKICAgICAgICAgICAgIC8vIFN0
b3JlIHRoZSB2YWx1ZSB0byB0aGUgYXJyYXkuCiAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cih2
YWx1ZVJlZywgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJl
ZywgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdl
LCBtX3ZlY3RvclswXSkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24g
MTI4OTcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUxLDYgKzQ1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIHZv
aWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShSZWdpc3RlcklEIHN0cnVjdHVyZUFuZEluZGV4aW5n
VHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBBcnJheVByb2ZpbGUqKTsKICAgICAgICAgdm9pZCBl
bWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChSZWdpc3RlcklEIHN0cnVjdHVy
ZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4KTsKKyAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxlU3RvcmVUb0hvbGVTcGVjaWFsQ2Fz
ZShBcnJheVByb2ZpbGUqKTsKIAogICAgICAgICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJl
RmluYWwsIEtub3duTm90RmluYWwgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDEyODk3MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTYs
NiArNTU2LDE0IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUYKICNl
bmRpZgogfQogCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGVTdG9yZVRvSG9sZVNw
ZWNpYWxDYXNlKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQoreworICAgIGlmICghY2FuQmVP
cHRpbWl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHN0b3JlOChUcnVzdGVkSW1t
MzIoMSksIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTWF5U3RvcmVUb0hvbGUoKSk7Cit9CisKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkVGFnKGludCBp
bmRleCwgUmVnaXN0ZXJJRCB0YWcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDEyODk3MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4Myw2ICsyODMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
dmFsKEluc3RydWN0aW9uCiAgICAgSnVtcCBlbmQgPSBqdW1wKCk7CiAgICAgCiAgICAgZW1wdHku
bGluayh0aGlzKTsKKyAgICBlbWl0QXJyYXlQcm9maWxlU3RvcmVUb0hvbGVTcGVjaWFsQ2FzZShj
dXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUpOwogICAgIGFkZDMyKFRydXN0ZWRJ
bW0zMigxKSwgQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9u
dW1WYWx1ZXNJblZlY3RvcikpKTsKICAgICBicmFuY2gzMihCZWxvdywgcmVnVDIsIEFkZHJlc3Mo
cmVnVDMsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zmc2V0KCkpKS5saW5rVG8oc3RvcmVSZXN1bHQs
IHRoaXMpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDEyODk3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiAr
MjQ3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIEp1
bXAgZW5kID0ganVtcCgpOwogICAgIAogICAgIGVtcHR5LmxpbmsodGhpcyk7CisgICAgZW1pdEFy
cmF5UHJvZmlsZVN0b3JlVG9Ib2xlU3BlY2lhbENhc2UoY3VycmVudEluc3RydWN0aW9uWzRdLnUu
YXJyYXlQcm9maWxlKTsKICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFkZHJlc3MocmVnVDIs
IE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbnVtVmFsdWVzSW5WZWN0b3IpKSk7CiAg
ICAgYnJhbmNoMzIoQmVsb3csIHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBBcnJheVN0b3JhZ2U6Omxl
bmd0aE9mZnNldCgpKSkubGlua1RvKHN0b3JlUmVzdWx0LCB0aGlzKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20JKHJldmlzaW9uIDEyODk3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMzg4LDgg
KzEzODgsOCBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKICAgICBsb2FkaSA0W1BDXSwgdDAKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5
VmFsU2xvdykKICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKLSAgICBsb2Fk
cCAxNltQQ10sIHQwCi0gICAgYXJyYXlQcm9maWxlKHQyLCB0MCwgdDMpCisgICAgbG9hZHAgMTZb
UENdLCB0MworICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQwKQogICAgIGJ0aXogdDIsIEhhc0Fy
cmF5U3RvcmFnZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxT
bG93KQpAQCAtMTQwNSw2ICsxNDA1LDcgQEAgX2xsaW50X29wX3B1dF9ieV92YWw6CiAgICAgZGlz
cGF0Y2goNSkKIAogLm9wUHV0QnlWYWxFbXB0eToKKyAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxl
OjptX21heVN0b3JlVG9Ib2xlW3QzXQogICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZh
bHVlc0luVmVjdG9yW3QwXQogICAgIGJpYiB0MiwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIElu
ZGV4aW5nSGVhZGVyOjptX3B1YmxpY0xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQK
ICAgICBhZGRpIDEsIHQyLCB0MQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDEyODk3MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjMxLDggKzEyMzEsOCBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoK
ICAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVD
ZWxsKHQwLCB0MSwgLm9wUHV0QnlWYWxTbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDFdLCB0MgotICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQwCi0gICAgYXJyYXlQcm9maWxl
KHQyLCB0MCwgdDMpCisgICAgbG9hZHAgMzJbUEIsIFBDLCA4XSwgdDMKKyAgICBhcnJheVByb2Zp
bGUodDIsIHQzLCB0MCkKICAgICBidGl6IHQyLCBIYXNBcnJheVN0b3JhZ2UsIC5vcFB1dEJ5VmFs
U2xvdwogICAgIGxvYWRpcyAxNltQQiwgUEMsIDhdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVJbnQzMih0MCwgdDIsIC5vcFB1dEJ5VmFsU2xvdykKQEAgLTEyNDgsNiArMTI0OCw3IEBA
IF9sbGludF9vcF9wdXRfYnlfdmFsOgogICAgIGRpc3BhdGNoKDUpCiAKIC5vcFB1dEJ5VmFsRW1w
dHk6CisgICAgc3RvcmViIDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0M10KICAg
ICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KICAgICBiaWIg
dDIsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6bV9wdWJsaWNMZW5n
dGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CiAgICAgYWRkaSAxLCB0MiwgdDEK
</data>
<flag name="commit-queue"
          id="176523"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164699</attachid>
            <date>2012-09-19 02:44:32 -0700</date>
            <delta_ts>2012-09-19 08:43:12 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>hole_patch_2.diff</filename>
            <type>text/plain</type>
            <size>28513</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEyLTA5LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBub3QgZW1pdCBQdXRCeVZhbCBob2xlIGNhc2UgdW5sZXNzIGl0IGhhcyB0bwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcwODAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNhdXNl
cyB1cyB0byBnZW5lcmF0ZSBsZXNzIGNvZGUgZm9yIHR5cGljYWwgUHV0QnlWYWwncy4gQnV0IGlm
IHByb2ZpbGluZyB0ZWxscyB1cworICAgICAgICB0aGF0IHRoZSBob2xlIGNhc2UgaXMgYmVpbmcg
aGl0LCB3ZSBnZW5lcmF0ZSB0aGUgc2FtZSBjb2RlIGFzIHdlIHdvdWxkIGhhdmUgZ2VuZXJhdGVk
CisgICAgICAgIGJlZm9yZS4gVGhpcyBzZWVtcyBsaWtlIGEgc2xpZ2h0IHNwZWVkLXVwIGFjcm9z
cyB0aGUgYm9hcmQuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9yZTgpOgorICAgICAgICAo
TWFjcm9Bc3NlbWJsZXJBUk12Nyk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4Nik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyWDg2OjpzdG9yZTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJYODZfNjQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6c3RvcmU4KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmg6CisgICAgICAgIChYODZBc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6Om1vdmJfaThtKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUuaDoK
KyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpBcnJheVByb2ZpbGU6OmFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKToKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm9maWxlOjptYXlTdG9yZVRvSG9sZSk6CisgICAgICAgIChBcnJheVByb2ZpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmZyb21P
YnNlcnZlZCk6CisgICAgICAgIChKU0M6OkRGRzo6bW9kZUFscmVhZHlDaGVja2VkKToKKyAgICAg
ICAgKEpTQzo6REZHOjptb2RlVG9TdHJpbmcpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUu
aDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6bWF5U3RvcmVUb0hvbGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChKSVQpOgorICAgICAgICAqIGppdC9K
SVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5UHJvZmlsZVN0
b3JlVG9Ib2xlU3BlY2lhbENhc2UpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3Zh
bCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtOgorCiAyMDEyLTA5LTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgREZHIHNob3VsZCBub3QgY2FsbCBvdXQgdG8gQysrIGV2ZXJ5IHRpbWUgdGhhdCBp
dCB0cmllcyB0byBwdXQgdG8gYW4gb2JqZWN0IHRoYXQgZG9lc24ndCB5ZXQgaGF2ZSBhcnJheSBz
dG9yYWdlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMTI4OTcyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTczNyw2ICs3MzcsMTIgQEAgcHVibGljOgogICAgICAgICBzdG9yZTgoc3JjLCBzZXR1cEFy
bUFkZHJlc3MoYWRkcmVzcykpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHN0b3JlOChSZWdpc3Rl
cklEIHNyYywgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlOChzcmMsIEFy
bUFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciwgMCkpOworICAgIH0KKyAgICAKICAgICB2b2lk
IHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKICAgICAg
ICAgc3RvcmUxNihzcmMsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShy
ZXZpc2lvbiAxMjg5NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpvcjMyOwogICAgIHVzaW5nIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OnN0b3JlMzI7CisgICAgdXNpbmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3Jl
ODsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoMzI7CiAgICAgdXNp
bmcgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmNhbGw7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246Omp1bXA7CkBAIC0xMzIsNiArMTMzLDEyIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubW92bF9ybShzcmMsIGFkZHJlc3MpOwogICAgIH0KIAorICAgIHZvaWQgc3Rv
cmU4KFRydXN0ZWRJbW0zMiBpbW0sIHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBBU1NF
UlQoLTEyOCA8PSBpbW0ubV92YWx1ZSAmJiBpbW0ubV92YWx1ZSA8IDEyOCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLm1vdmJfaThtKGltbS5tX3ZhbHVlLCBhZGRyZXNzKTsKKyAgICB9CisKICAgICBK
dW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxfaW0o
aW1tLm1fdmFsdWUsIGRlc3QubV9wdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTI4
OTcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3ViMzI7CiAgICAgdXNpbmcgTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OmxvYWQzMjsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
c3RvcmUzMjsKKyAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3RvcmU4OwogICAg
IHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjYWxsOwogICAgIHVzaW5nIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpqdW1wOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjphZGREb3VibGU7CkBAIC0xMTQsNiArMTE1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICBzdG9yZTMy
KGltbSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICB9CisgICAgCisgICAgdm9pZCBzdG9yZTgoVHJ1
c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmU4KGltbSwg
QWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIpKTsKKyAgICB9CiAKICAgICBDYWxsIGNhbGwoKQogICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaAkocmV2aXNpb24gMTI4OTcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1NSw2ICsxMTU1LDE1IEBAIHB1
YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKICAgICB9CiAKKyNp
ZiAhQ1BVKFg4Nl82NCkKKyAgICB2b2lkIG1vdmJfaThtKGludCBpbW0sIGNvbnN0IHZvaWQqIGFk
ZHIpCisgICAgeworICAgICAgICBBU1NFUlQoLTEyOCA8PSBpbW0gJiYgaW1tIDwgMTI4KTsKKyAg
ICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMTFfRXZJYiwgR1JPVVAxMV9NT1Ys
IGFkZHIpOworICAgICAgICBtX2Zvcm1hdHRlci5pbW1lZGlhdGU4KGltbSk7CisgICAgfQorI2Vu
ZGlmCisKICAgICB2b2lkIG1vdmJfaThtKGludCBpbW0sIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCgtMTI4IDw9IGltbSAmJiBpbW0gPCAxMjgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAko
cmV2aXNpb24gMTI4OTcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5
UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCiAgICAgICAgICwgbV9leHBlY3RlZFN0cnVjdHVy
ZSgwKQogICAgICAgICAsIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYyhmYWxzZSkKKyAgICAgICAg
LCBtX21heVN0b3JlVG9Ib2xlKGZhbHNlKQogICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhl
ZEFjY2Vzc2VzKGZhbHNlKQogICAgICAgICAsIG1fb2JzZXJ2ZWRBcnJheU1vZGVzKDApCiAgICAg
ewpAQCAtNjQsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVy
ZSgwKQogICAgICAgICAsIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUoMCkKICAgICAgICAgLCBtX3N0cnVj
dHVyZUlzUG9seW1vcnBoaWMoZmFsc2UpCisgICAgICAgICwgbV9tYXlTdG9yZVRvSG9sZShmYWxz
ZSkKICAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyhmYWxzZSkKICAgICAg
ICAgLCBtX29ic2VydmVkQXJyYXlNb2RlcygwKQogICAgIHsKQEAgLTczLDYgKzc1LDcgQEAgcHVi
bGljOgogICAgIAogICAgIFN0cnVjdHVyZSoqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkg
eyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmU7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNz
T2ZBcnJheU1vZGVzKCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CisgICAgYm9v
bCogYWRkcmVzc09mTWF5U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsg
fQogICAgIAogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7CkBAIC05Myw2ICs5Niw4IEBAIHB1YmxpYzoKICAgICBBcnJheU1vZGVzIG9ic2VydmVk
QXJyYXlNb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAg
Ym9vbCBtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSBjb25zdCB7IHJldHVybiBtX21heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlczsgfQogICAgIAorICAgIGJvb2wgbWF5U3RvcmVUb0hvbGUo
KSBjb25zdCB7IHJldHVybiBtX21heVN0b3JlVG9Ib2xlOyB9CisgICAgCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgCkBAIC0xMDAsNiArMTA1
LDcgQEAgcHJpdmF0ZToKICAgICBTdHJ1Y3R1cmUqIG1fbGFzdFNlZW5TdHJ1Y3R1cmU7CiAgICAg
U3RydWN0dXJlKiBtX2V4cGVjdGVkU3RydWN0dXJlOwogICAgIGJvb2wgbV9zdHJ1Y3R1cmVJc1Bv
bHltb3JwaGljOworICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZTsgLy8gVGhpcyBmbGFnIG1heSBi
ZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBzcGVjaWFsIGNhc2VzIHRoYXQgd2Vy
ZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBhcyBpdCBkZXBlbmRzIG9uIGluZGV4
aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJhc2ljYWxseSBqdXN0IG9uZSBpbmRl
eGluZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9yYWdlKSwgdGhpcyBmbGFnIGZvciBu
b3cganVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUgaW1wbGllcy4KICAgICBib29sIG1f
bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOwogICAgIEFycmF5TW9kZXMgbV9vYnNlcnZlZEFy
cmF5TW9kZXM7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlN
b2RlLmNwcAkocmV2aXNpb24gMTI4OTcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNyArNDIsMTcgQEAgQXJyYXk6
Ok1vZGUgZnJvbU9ic2VydmVkKEFycmF5UHJvZmlsZSogcAogICAgICAgICAgICAgcmV0dXJuIEFy
cmF5OjpCbGFua1RvQXJyYXlTdG9yYWdlOyAvLyBGSVhNRTogd2UgZG9uJ3Qga25vdyB3aGV0aGVy
IHRvIGdvIHRvIHNsb3cgcHV0IG1vZGUsIG9yIG5vdC4gVGhpcyBpcyBhIGRlY2VudCBndWVzcy4K
ICAgICAgICAgcmV0dXJuIEFycmF5OjpVbmRlY2lkZWQ7CiAgICAgY2FzZSBhc0FycmF5TW9kZXMo
Tm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKToKLSAgICAgICAgcmV0dXJuIG1ha2VTYWZlID8gQXJy
YXk6OkFycmF5U3RvcmFnZU91dE9mQm91bmRzIDogQXJyYXk6OkFycmF5U3RvcmFnZTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VTYWZlID8gQXJyYXk6OkFycmF5U3RvcmFnZU91dE9mQm91bmRzIDogKHBy
b2ZpbGUtPm1heVN0b3JlVG9Ib2xlKCkgPyBBcnJheTo6QXJyYXlTdG9yYWdlVG9Ib2xlIDogQXJy
YXk6OkFycmF5U3RvcmFnZSk7CiAgICAgY2FzZSBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoU2xv
d1B1dEFycmF5U3RvcmFnZSk6CiAgICAgY2FzZSBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoQXJy
YXlTdG9yYWdlKSB8IGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdl
KToKICAgICAgICAgcmV0dXJuIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOwogICAgIGNhc2Ug
YXNBcnJheU1vZGVzKEFycmF5V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBtYWtl
U2FmZSA/IEFycmF5OjpBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kcyA6IEFycmF5OjpB
cnJheVdpdGhBcnJheVN0b3JhZ2U7CisgICAgICAgIHJldHVybiBtYWtlU2FmZSA/IEFycmF5OjpB
cnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kcyA6IChwcm9maWxlLT5tYXlTdG9yZVRvSG9s
ZSgpID8gQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZVRvSG9sZSA6IEFycmF5OjpBcnJheVdp
dGhBcnJheVN0b3JhZ2UpOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKEFycmF5V2l0aFNsb3dQdXRB
cnJheVN0b3JhZ2UpOgogICAgIGNhc2UgYXNBcnJheU1vZGVzKEFycmF5V2l0aEFycmF5U3RvcmFn
ZSkgfCBhc0FycmF5TW9kZXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgICAg
IHJldHVybiBBcnJheTo6QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZTsKICAgICBjYXNlIGFz
QXJyYXlNb2RlcyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzKEFycmF5
V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJldHVybiBtYWtlU2FmZSA/IEFycmF5OjpQb3Nz
aWJseUFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRzIDogQXJyYXk6OlBvc3NpYmx5QXJy
YXlXaXRoQXJyYXlTdG9yYWdlOworICAgICAgICByZXR1cm4gbWFrZVNhZmUgPyBBcnJheTo6UG9z
c2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kcyA6IChwcm9maWxlLT5tYXlTdG9y
ZVRvSG9sZSgpID8gQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlVG9Ib2xlIDog
QXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlKTsKICAgICBjYXNlIGFzQXJyYXlN
b2RlcyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSB8IGFzQXJyYXlNb2RlcyhBcnJh
eVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJh
eVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJheU1vZGVzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkg
fCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5
TW9kZXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSk6CiAgICAgICAgIHJldHVybiBBcnJh
eTo6UG9zc2libHlBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOwpAQCAtMTM5LDggKzEzOSwx
MCBAQCBib29sIG1vZGVBbHJlYWR5Q2hlY2tlZChBYnN0cmFjdFZhbHVlJiB2CiAgICAgICAgIHJl
dHVybiBpc1N0cmluZ1NwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSk7CiAgICAgICAgIAogICAgIGNh
c2UgQXJyYXk6OkFycmF5U3RvcmFnZToKKyAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2VUb0hv
bGU6CiAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHM6CiAgICAgY2FzZSBB
cnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2U6CisgICAgY2FzZSBBcnJheTo6UG9z
c2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2VUb0hvbGU6CiAgICAgY2FzZSBBcnJheTo6UG9zc2li
bHlBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kczoKICAgICAgICAgcmV0dXJuIHZhbHVl
Lm1fY3VycmVudEtub3duU3RydWN0dXJlLmhhc1NpbmdsZXRvbigpCiAgICAgICAgICAgICAmJiAo
dmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgp
ICYgSGFzQXJyYXlTdG9yYWdlKTsKQEAgLTE1MSw2ICsxNTMsNyBAQCBib29sIG1vZGVBbHJlYWR5
Q2hlY2tlZChBYnN0cmFjdFZhbHVlJiB2CiAgICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50
S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgKEhhc0FycmF5U3Rv
cmFnZSB8IEhhc1Nsb3dQdXRBcnJheVN0b3JhZ2UpKTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJh
eTo6QXJyYXlXaXRoQXJyYXlTdG9yYWdlOgorICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aEFycmF5
U3RvcmFnZVRvSG9sZToKICAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRP
ZkJvdW5kczoKICAgICAgICAgcmV0dXJuIHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLmhh
c1NpbmdsZXRvbigpCiAgICAgICAgICAgICAmJiAodmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1
cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgSGFzQXJyYXlTdG9yYWdlKQpAQCAtMjE1
LDE4ICsyMTgsMjQgQEAgY29uc3QgY2hhciogbW9kZVRvU3RyaW5nKEFycmF5OjpNb2RlIG1vZAog
ICAgICAgICByZXR1cm4gIlN0cmluZyI7CiAgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9yYWdlOgog
ICAgICAgICByZXR1cm4gIkFycmF5U3RvcmFnZSI7CisgICAgY2FzZSBBcnJheTo6QXJyYXlTdG9y
YWdlVG9Ib2xlOgorICAgICAgICByZXR1cm4gIkFycmF5U3RvcmFnZVRvSG9sZSI7CiAgICAgY2Fz
ZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgcmV0dXJuICJTbG93UHV0QXJy
YXlTdG9yYWdlIjsKICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2VPdXRPZkJvdW5kczoKICAg
ICAgICAgcmV0dXJuICJBcnJheVN0b3JhZ2VPdXRPZkJvdW5kcyI7CiAgICAgY2FzZSBBcnJheTo6
QXJyYXlXaXRoQXJyYXlTdG9yYWdlOgogICAgICAgICByZXR1cm4gIkFycmF5V2l0aEFycmF5U3Rv
cmFnZSI7CisgICAgY2FzZSBBcnJheTo6QXJyYXlXaXRoQXJyYXlTdG9yYWdlVG9Ib2xlOgorICAg
ICAgICByZXR1cm4gIkFycmF5V2l0aEFycmF5U3RvcmFnZVRvSG9sZSI7CiAgICAgY2FzZSBBcnJh
eTo6QXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgcmV0dXJuICJBcnJheVdp
dGhTbG93UHV0QXJyYXlTdG9yYWdlIjsKICAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhBcnJheVN0
b3JhZ2VPdXRPZkJvdW5kczoKICAgICAgICAgcmV0dXJuICJBcnJheVdpdGhBcnJheVN0b3JhZ2VP
dXRPZkJvdW5kcyI7CiAgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJheVN0b3Jh
Z2U6CiAgICAgICAgIHJldHVybiAiUG9zc2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2UiOworICAg
IGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlVG9Ib2xlOgorICAgICAg
ICByZXR1cm4gIlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlVG9Ib2xlIjsKICAgICBjYXNl
IEFycmF5OjpQb3NzaWJseUFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgIHJl
dHVybiAiUG9zc2libHlBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlIjsKICAgICBjYXNlIEFy
cmF5OjpQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRzOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCShyZXZpc2lvbiAxMjg5NzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NCwxMiArNTQsMTUgQEAgZW51bSBNb2RlIHsKICAgICAKICAgICAvLyBNb2RlcyBvZiBj
b252ZW50aW9uYWwgaW5kZXhlZCBzdG9yYWdlIHdoZXJlIHRoZSBjaGVjayBpcyBub24gc2lkZS1l
ZmZlY3RpbmcuCiAgICAgQXJyYXlTdG9yYWdlLAorICAgIEFycmF5U3RvcmFnZVRvSG9sZSwKICAg
ICBTbG93UHV0QXJyYXlTdG9yYWdlLAogICAgIEFycmF5U3RvcmFnZU91dE9mQm91bmRzLAogICAg
IEFycmF5V2l0aEFycmF5U3RvcmFnZSwKKyAgICBBcnJheVdpdGhBcnJheVN0b3JhZ2VUb0hvbGUs
CiAgICAgQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSwKICAgICBBcnJheVdpdGhBcnJheVN0
b3JhZ2VPdXRPZkJvdW5kcywKICAgICBQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZSwKKyAg
ICBQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZVRvSG9sZSwKICAgICBQb3NzaWJseUFycmF5
V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UsCiAgICAgUG9zc2libHlBcnJheVdpdGhBcnJheVN0b3Jh
Z2VPdXRPZkJvdW5kcywKICAgICAKQEAgLTg3LDIwICs5MCwyOCBAQCBlbnVtIE1vZGUgewogLy8g
Rmlyc3Q6IGhlbHBlcnMgZm9yIG5vbi1zaWRlLWVmZmVjdGluZyBjaGVja3MuCiAjZGVmaW5lIE5P
Tl9BUlJBWV9BUlJBWV9TVE9SQUdFX01PREVTICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBB
cnJheTo6QXJyYXlTdG9yYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZVRvSG9sZTogICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZTogICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2VPdXRPZkJvdW5kczogICAgICAg
ICAgICAgICAgICAgXAogICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9y
YWdlOiAgICAgICAgICAgICBcCisgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJh
eVN0b3JhZ2VUb0hvbGU6ICAgICAgIFwKICAgICBjYXNlIEFycmF5OjpQb3NzaWJseUFycmF5V2l0
aFNsb3dQdXRBcnJheVN0b3JhZ2U6ICAgICAgXAogICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJy
YXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHMKICNkZWZpbmUgQVJSQVlfV0lUSF9BUlJBWV9T
VE9SQUdFX01PREVTICAgICAgICAgICAgICAgICAgICAgXAogICAgIEFycmF5OjpBcnJheVdpdGhB
cnJheVN0b3JhZ2U6ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2FzZSBBcnJheTo6
QXJyYXlXaXRoQXJyYXlTdG9yYWdlVG9Ib2xlOiAgICAgICAgICAgICAgIFwKICAgICBjYXNlIEFy
cmF5OjpBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlOiAgICAgICAgICAgICAgXAogICAgIGNh
c2UgQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZU91dE9mQm91bmRzCiAjZGVmaW5lIEFMTF9B
UlJBWV9TVE9SQUdFX01PREVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBOT05f
QVJSQVlfQVJSQVlfU1RPUkFHRV9NT0RFUzogICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IGNhc2UgQVJSQVlfV0lUSF9BUlJBWV9TVE9SQUdFX01PREVTCisjZGVmaW5lIEFSUkFZX1NUT1JB
R0VfVE9fSE9MRV9NT0RFUyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBcnJheTo6QXJy
YXlTdG9yYWdlVG9Ib2xlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNhc2Ug
QXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZVRvSG9sZTogICAgICAgICAgICAgICBcCisgICAg
Y2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2VUb0hvbGUKICNkZWZpbmUg
SU5fQk9VTkRTX0FSUkFZX1NUT1JBR0VfTU9ERVMgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IEFycmF5OjpBcnJheVN0b3JhZ2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgQVJSQVlfU1RPUkFHRV9UT19IT0xFX01PREVTOiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIGNhc2UgQXJyYXk6OkFycmF5V2l0aEFycmF5U3RvcmFnZTogICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhBcnJheVN0
b3JhZ2UKICNkZWZpbmUgU0xPV19QVVRfQVJSQVlfU1RPUkFHRV9NT0RFUyAgICAgICAgICAgICAg
ICAgICAgICAgXApAQCAtMTcyLDYgKzE4MywxOCBAQCBpbmxpbmUgYm9vbCBpc1Nsb3dQdXRBY2Nl
c3MoQXJyYXk6Ok1vZGUgCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBtYXlTdG9yZVRvSG9sZShB
cnJheTo6TW9kZSBhcnJheU1vZGUpCit7CisgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKKyAgICBj
YXNlIEFSUkFZX1NUT1JBR0VfVE9fSE9MRV9NT0RFUzoKKyAgICBjYXNlIE9VVF9PRl9CT1VORFNf
QVJSQVlfU1RPUkFHRV9NT0RFUzoKKyAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFH
RV9NT0RFUzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKwogaW5saW5lIGJvb2wgY2FuQ1NFU3RvcmFnZShBcnJheTo6
TW9kZSBhcnJheU1vZGUpCiB7CiAgICAgc3dpdGNoIChhcnJheU1vZGUpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkocmV2aXNpb24gMTI4OTcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc0MSwzMSArMjc0MSw0MCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBp
ZiAoaXNJbkJvdW5kc0FjY2Vzcyhub2RlLmFycmF5TW9kZSgpKSkKICAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIGJleW9u
ZEFycmF5Qm91bmRzKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgYmFzZS51c2UoKTsKLSAg
ICAgICAgICAgIHByb3BlcnR5LnVzZSgpOwotICAgICAgICAgICAgdmFsdWUudXNlKCk7Ci0gICAg
ICAgICAgICBzdG9yYWdlLnVzZSgpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBDaGVj
ayBpZiB3ZSdyZSB3cml0aW5nIHRvIGEgaG9sZTsgaWYgc28gaW5jcmVtZW50IG1fbnVtVmFsdWVz
SW5WZWN0b3IuCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RIb2xlVmFsdWUg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSkgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpFbXB0eVZhbHVlVGFnKSk7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0hv
bGVWYWx1ZTsKLSAgICAgICAgICAgIGlmIChpc1Nsb3dQdXRBY2Nlc3MoYXJyYXlNb2RlKSkgewot
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgc29ydCBvZiBzdHJhbmdlLiBJZiB3ZSB3YW50ZWQg
dG8gb3B0aW1pemUgdGhpcyBjb2RlIHBhdGgsIHdlIHdvdWxkIGludmVydAotICAgICAgICAgICAg
ICAgIC8vIHRoZSBhYm92ZSBicmFuY2guIEJ1dCBpdCdzIHNpbXBseSBub3Qgd29ydGggaXQgc2lu
Y2UgdGhpcyBvbmx5IGhhcHBlbnMgaWYgd2UncmUKLSAgICAgICAgICAgICAgICAvLyBhbHJlYWR5
IGhhdmluZyBhIGJhZCB0aW1lLgotICAgICAgICAgICAgICAgIGlzSG9sZVZhbHVlID0gbV9qaXQu
anVtcCgpOworICAgICAgICAgICAgaWYgKCFtYXlTdG9yZVRvSG9sZShhcnJheU1vZGUpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1bmNvdW50YWJsZSBiZWNhdXNlIGlmIHdlIHRha2Ug
dGhpcyBleGl0LCB0aGVuIHRoZSBiYXNlbGluZSBKSVQKKyAgICAgICAgICAgICAgICAvLyB3aWxs
IGltbWVkaWF0ZWx5IGNvdW50IHRoZSBob2xlIHN0b3JlLiBTbyB0aGVyZSBpcyBubyBuZWVkIGZv
ciBleGl0CisgICAgICAgICAgICAgICAgLy8gcHJvZmlsaW5nLgorICAgICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsCisgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihB
cnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy50YWcpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0z
MigxKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgT0JKRUNUX09GRlNFVE9G
KEFycmF5U3RvcmFnZSwgbV9udW1WYWx1ZXNJblZlY3RvcikpKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSB3cml0aW5nIHRvIGEgaG9sZSB3ZSBtaWdodCBi
ZSBncm93aW5nIHRoZSBhcnJheTsgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgbGVuZ3RoRG9lc05vdE5lZWRVcGRhdGUgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6QmVsb3csIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVn
LCBBcnJheVN0b3JhZ2U6Omxlbmd0aE9mZnNldCgpKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQu
YWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBwcm9wZXJ0eVJlZyk7Ci0gICAgICAgICAgICAgICAgbV9q
aXQuc3RvcmUzMihwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJl
ZywgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSkpOwotICAgICAgICAgICAgICAgIG1faml0
LnN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcHJvcGVydHlSZWcpOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIGxlbmd0aERvZXNOb3ROZWVkVXBkYXRlLmxpbmsoJm1faml0KTsKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RIb2xlVmFsdWUgPSBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBP
QkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSkgKyBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZh
bHVlVGFnKSk7CisgICAgICAgICAgICAgICAgaWYgKGlzU2xvd1B1dEFjY2VzcyhhcnJheU1vZGUp
KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgc29ydCBvZiBzdHJhbmdlLiBJZiB3
ZSB3YW50ZWQgdG8gb3B0aW1pemUgdGhpcyBjb2RlIHBhdGgsIHdlIHdvdWxkIGludmVydAorICAg
ICAgICAgICAgICAgICAgICAvLyB0aGUgYWJvdmUgYnJhbmNoLiBCdXQgaXQncyBzaW1wbHkgbm90
IHdvcnRoIGl0IHNpbmNlIHRoaXMgb25seSBoYXBwZW5zIGlmIHdlJ3JlCisgICAgICAgICAgICAg
ICAgICAgIC8vIGFscmVhZHkgaGF2aW5nIGEgYmFkIHRpbWUuCisgICAgICAgICAgICAgICAgICAg
IGlzSG9sZVZhbHVlID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwg
bV9udW1WYWx1ZXNJblZlY3RvcikpKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgIC8vIElmIHdlJ3JlIHdyaXRpbmcgdG8gYSBob2xlIHdlIG1pZ2h0IGJlIGdyb3dp
bmcgdGhlIGFycmF5OyAKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
bGVuZ3RoRG9lc05vdE5lZWRVcGRhdGUgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QmVsb3csIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBB
cnJheVN0b3JhZ2U6Omxlbmd0aE9mZnNldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1faml0
LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcHJvcGVydHlSZWcpOworICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5zdG9yZTMyKHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9y
YWdlUmVnLCBBcnJheVN0b3JhZ2U6Omxlbmd0aE9mZnNldCgpKSk7CisgICAgICAgICAgICAgICAg
ICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcHJvcGVydHlSZWcpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoRG9lc05vdE5lZWRVcGRhdGUu
bGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBub3RIb2xl
VmFsdWUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbm90SG9sZVZh
bHVlLmxpbmsoJm1faml0KTsKKworICAgICAgICAgICAgYmFzZS51c2UoKTsKKyAgICAgICAgICAg
IHByb3BlcnR5LnVzZSgpOworICAgICAgICAgICAgdmFsdWUudXNlKCk7CisgICAgICAgICAgICBz
dG9yYWdlLnVzZSgpOwogCiAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgdmFsdWUgdG8gdGhlIGFy
cmF5LgogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZVRhZ1JlZywgTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9u
IDEyODk3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NjAsMzEgKzI3NjAsNDAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgaWYgKGlzSW5Cb3VuZHNB
Y2Nlc3MoYXJyYXlNb2RlKSkKICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9m
Qm91bmRzLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIGJleW9uZEFycmF5Qm91bmRzKTsKIAotICAg
ICAgICAgICAgYmFzZS51c2UoKTsKLSAgICAgICAgICAgIHByb3BlcnR5LnVzZSgpOwotICAgICAg
ICAgICAgdmFsdWUudXNlKCk7Ci0gICAgICAgICAgICBzdG9yYWdlLnVzZSgpOwotICAgICAgICAK
ICAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlJ3JlIHdyaXRpbmcgdG8gYSBob2xlOyBpZiBzbyBp
bmNyZW1lbnQgbV9udW1WYWx1ZXNJblZlY3Rvci4KLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vdEhvbGVWYWx1ZSA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpTY2FsZVB0ciwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFn
ZSwgbV92ZWN0b3JbMF0pKSk7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0hv
bGVWYWx1ZTsKLSAgICAgICAgICAgIGlmIChpc1Nsb3dQdXRBY2Nlc3MoYXJyYXlNb2RlKSkgewot
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgc29ydCBvZiBzdHJhbmdlLiBJZiB3ZSB3YW50ZWQg
dG8gb3B0aW1pemUgdGhpcyBjb2RlIHBhdGgsIHdlIHdvdWxkIGludmVydAotICAgICAgICAgICAg
ICAgIC8vIHRoZSBhYm92ZSBicmFuY2guIEJ1dCBpdCdzIHNpbXBseSBub3Qgd29ydGggaXQgc2lu
Y2UgdGhpcyBvbmx5IGhhcHBlbnMgaWYgd2UncmUKLSAgICAgICAgICAgICAgICAvLyBhbHJlYWR5
IGhhdmluZyBhIGJhZCB0aW1lLgotICAgICAgICAgICAgICAgIGlzSG9sZVZhbHVlID0gbV9qaXQu
anVtcCgpOworICAgICAgICAgICAgaWYgKCFtYXlTdG9yZVRvSG9sZShhcnJheU1vZGUpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1bmNvdW50YWJsZSBiZWNhdXNlIGlmIHdlIHRha2Ug
dGhpcyBleGl0LCB0aGVuIHRoZSBiYXNlbGluZSBKSVQKKyAgICAgICAgICAgICAgICAvLyB3aWxs
IGltbWVkaWF0ZWx5IGNvdW50IHRoZSBob2xlIHN0b3JlLiBTbyB0aGVyZSBpcyBubyBuZWVkIGZv
ciBleGl0CisgICAgICAgICAgICAgICAgLy8gcHJvZmlsaW5nLgorICAgICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsCisgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3RQdHIo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJl
ZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpTY2FsZVB0ciwgT0JKRUNUX09GRlNFVE9G
KEFycmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0pKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0b3JhZ2VSZWcsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fbnVt
VmFsdWVzSW5WZWN0b3IpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
bm90SG9sZVZhbHVlID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFj
cm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3Zl
Y3RvclswXSkpKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNTbG93UHV0QWNjZXNzKGFycmF5TW9k
ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBzb3J0IG9mIHN0cmFuZ2UuIElm
IHdlIHdhbnRlZCB0byBvcHRpbWl6ZSB0aGlzIGNvZGUgcGF0aCwgd2Ugd291bGQgaW52ZXJ0Cisg
ICAgICAgICAgICAgICAgICAgIC8vIHRoZSBhYm92ZSBicmFuY2guIEJ1dCBpdCdzIHNpbXBseSBu
b3Qgd29ydGggaXQgc2luY2UgdGhpcyBvbmx5IGhhcHBlbnMgaWYgd2UncmUKKyAgICAgICAgICAg
ICAgICAgICAgLy8gYWxyZWFkeSBoYXZpbmcgYSBiYWQgdGltZS4KKyAgICAgICAgICAgICAgICAg
ICAgaXNIb2xlVmFsdWUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdl
LCBtX251bVZhbHVlc0luVmVjdG9yKSkpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIC8vIElmIHdlJ3JlIHdyaXRpbmcgdG8gYSBob2xlIHdlIG1pZ2h0IGJlIGdyb3dpbmcgdGhl
IGFycmF5OyAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBsZW5ndGhEb2Vz
Tm90TmVlZFVwZGF0ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJv
cGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEFycmF5U3RvcmFn
ZTo6bGVuZ3RoT2Zmc2V0KCkpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVk
SW1tMzIoMSksIHByb3BlcnR5UmVnKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBBcnJheVN0b3Jh
Z2U6Omxlbmd0aE9mZnNldCgpKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3Rl
ZEltbTMyKDEpLCBwcm9wZXJ0eVJlZyk7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlJ3Jl
IHdyaXRpbmcgdG8gYSBob2xlIHdlIG1pZ2h0IGJlIGdyb3dpbmcgdGhlIGFycmF5OyAKKyAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbGVuZ3RoRG9lc05vdE5lZWRVcGRh
dGUgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIHByb3BlcnR5UmVnLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBBcnJheVN0b3JhZ2U6Omxlbmd0aE9m
ZnNldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigx
KSwgcHJvcGVydHlSZWcpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHByb3Bl
cnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBBcnJheVN0b3JhZ2U6
Omxlbmd0aE9mZnNldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKFRydXN0
ZWRJbW0zMigxKSwgcHJvcGVydHlSZWcpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIGxlbmd0aERvZXNOb3ROZWVkVXBkYXRlLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAg
ICAgICAgbGVuZ3RoRG9lc05vdE5lZWRVcGRhdGUubGluaygmbV9qaXQpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBub3RIb2xlVmFsdWUubGluaygmbV9qaXQpOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgbm90SG9sZVZhbHVlLmxpbmsoJm1faml0KTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgYmFzZS51c2UoKTsKKyAgICAgICAgICAgIHByb3BlcnR5LnVzZSgp
OworICAgICAgICAgICAgdmFsdWUudXNlKCk7CisgICAgICAgICAgICBzdG9yYWdlLnVzZSgpOwog
CiAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgdmFsdWUgdG8gdGhlIGFycmF5LgogICAgICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIodmFsdWVSZWcsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpTY2FsZVB0ciwgT0JKRUNUX09G
RlNFVE9GKEFycmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0pKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHJldmlzaW9uIDEyODk3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSw2ICs0NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICNlbmRpZgogICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoUmVnaXN0ZXJJRCBz
dHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxl
Kik7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgo
UmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsZVN0
b3JlVG9Ib2xlU3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKik7CiAKICAgICAgICAgZW51bSBGaW5h
bE9iamVjdE1vZGUgeyBNYXlCZUZpbmFsLCBLbm93bk5vdEZpbmFsIH07CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiAxMjg5
NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkod29y
a2luZyBjb3B5KQpAQCAtNTU2LDYgKzU1NiwxNCBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJh
eVByb2ZpbGluZ1NpdGVGCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSklUOjplbWl0QXJyYXlQ
cm9maWxlU3RvcmVUb0hvbGVTcGVjaWFsQ2FzZShBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkK
K3sKKyAgICBpZiAoIWNhbkJlT3B0aW1pemVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBzdG9yZTgoVHJ1c3RlZEltbTMyKDEpLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZk1heVN0b3Jl
VG9Ib2xlKCkpOworfQorCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKIAogaW5saW5lIHZvaWQgSklU
OjplbWl0TG9hZFRhZyhpbnQgaW5kZXgsIFJlZ2lzdGVySUQgdGFnKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShy
ZXZpc2lvbiAxMjg5NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODMsNiArMjgzLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIEp1bXAgZW5kID0ganVtcCgp
OwogICAgIAogICAgIGVtcHR5LmxpbmsodGhpcyk7CisgICAgZW1pdEFycmF5UHJvZmlsZVN0b3Jl
VG9Ib2xlU3BlY2lhbENhc2UoY3VycmVudEluc3RydWN0aW9uWzRdLnUuYXJyYXlQcm9maWxlKTsK
ICAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIEFkZHJlc3MocmVnVDMsIE9CSkVDVF9PRkZTRVRP
RihBcnJheVN0b3JhZ2UsIG1fbnVtVmFsdWVzSW5WZWN0b3IpKSk7CiAgICAgYnJhbmNoMzIoQmVs
b3csIHJlZ1QyLCBBZGRyZXNzKHJlZ1QzLCBBcnJheVN0b3JhZ2U6Omxlbmd0aE9mZnNldCgpKSku
bGlua1RvKHN0b3JlUmVzdWx0LCB0aGlzKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMjg5NzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwo
SW5zdHJ1Y3Rpb24KICAgICBKdW1wIGVuZCA9IGp1bXAoKTsKICAgICAKICAgICBlbXB0eS5saW5r
KHRoaXMpOworICAgIGVtaXRBcnJheVByb2ZpbGVTdG9yZVRvSG9sZVNwZWNpYWxDYXNlKGN1cnJl
bnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmlsZSk7CiAgICAgYWRkMzIoVHJ1c3RlZEltbTMy
KDEpLCBBZGRyZXNzKHJlZ1QyLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX251bVZh
bHVlc0luVmVjdG9yKSkpOwogICAgIGJyYW5jaDMyKEJlbG93LCByZWdUMSwgQWRkcmVzcyhyZWdU
MiwgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSkpLmxpbmtUbyhzdG9yZVJlc3VsdCwgdGhp
cyk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMjg5NzIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTM4OCw4ICsxMzg4LDggQEAgX2xsaW50X29wX3B1dF9ieV92YWw6CiAgICAg
bG9hZGkgNFtQQ10sIHQwCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENl
bGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCiAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MV0sIHQyCi0gICAgbG9hZHAgMTZbUENdLCB0MAotICAgIGFycmF5UHJvZmlsZSh0MiwgdDAs
IHQzKQorICAgIGxvYWRwIDE2W1BDXSwgdDMKKyAgICBhcnJheVByb2ZpbGUodDIsIHQzLCB0MCkK
ICAgICBidGl6IHQyLCBIYXNBcnJheVN0b3JhZ2UsIC5vcFB1dEJ5VmFsU2xvdwogICAgIGxvYWRp
IDhbUENdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRh
ZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKQEAgLTE0MDUsNiArMTQwNSw3IEBAIF9sbGludF9vcF9w
dXRfYnlfdmFsOgogICAgIGRpc3BhdGNoKDUpCiAKIC5vcFB1dEJ5VmFsRW1wdHk6CisgICAgc3Rv
cmViIDEsIEFycmF5UHJvZmlsZTo6bV9tYXlTdG9yZVRvSG9sZVt0M10KICAgICBhZGRpIDEsIEFy
cmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KICAgICBiaWIgdDIsIC1zaXplb2Yg
SW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6bV9wdWJsaWNMZW5ndGhbdDBdLCAub3BQ
dXRCeVZhbFN0b3JlUmVzdWx0CiAgICAgYWRkaSAxLCB0MiwgdDEKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShy
ZXZpc2lvbiAxMjg5NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTIzMSw4ICsxMjMxLDggQEAgX2xs
aW50X29wX3B1dF9ieV92YWw6CiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDEsIC5vcFB1dEJ5VmFsU2xvdykKICAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKLSAgICBsb2FkcCAzMltQQiwgUEMsIDhdLCB0
MAotICAgIGFycmF5UHJvZmlsZSh0MiwgdDAsIHQzKQorICAgIGxvYWRwIDMyW1BCLCBQQywgOF0s
IHQzCisgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDApCiAgICAgYnRpeiB0MiwgSGFzQXJyYXlT
dG9yYWdlLCAub3BQdXRCeVZhbFNsb3cKICAgICBsb2FkaXMgMTZbUEIsIFBDLCA4XSwgdDAKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIodDAsIHQyLCAub3BQdXRCeVZhbFNsb3cpCkBA
IC0xMjQ4LDYgKzEyNDgsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKICAgICBkaXNwYXRjaCg1
KQogCiAub3BQdXRCeVZhbEVtcHR5OgorICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fbWF5
U3RvcmVUb0hvbGVbdDNdCiAgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5W
ZWN0b3JbdDBdCiAgICAgYmliIHQyLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdI
ZWFkZXI6Om1fcHVibGljTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAogICAgIGFk
ZGkgMSwgdDIsIHQxCg==
</data>
<flag name="review"
          id="176543"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>