<?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>214956</bug_id>
          
          <creation_ts>2020-07-29 19:50:42 -0700</creation_ts>
          <short_desc>[JSC] Add B3::BottomTupleValue node</short_desc>
          <delta_ts>2020-07-30 11:21:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214975</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1676292</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-29 19:50:42 -0700</bug_when>
    <thetext>[JSC] Add B3::BottomTupleValue node</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676293</commentid>
    <comment_count>1</comment_count>
      <attachid>405542</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-29 19:58:10 -0700</bug_when>
    <thetext>Created attachment 405542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676294</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-29 19:58:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/65192877&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676295</commentid>
    <comment_count>3</comment_count>
      <attachid>405542</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-07-29 20:09:11 -0700</bug_when>
    <thetext>Comment on attachment 405542
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=405542&amp;action=review

r=me with nits.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        While we support bottom values for usual types, we are not having bottom value for tuple type. So when replaceWithBottom is called, we

Nit: we are not having bottom value =&gt; we do not have a bottom value.

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        failed to replace Patchpoint producing tuple with bottom values.

Nit: failed to replace Patchpoint producing tuple =&gt; fail to replace Patchpoints producing tuples

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        This patch newly adds B3 BottomTupleValue, which is just generating BottomValue for tuple. We can extend it to generate arbitrary constant

Nit: is just generating BottomValue =&gt; is just a BottomValue

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        tuple values, but for now, we just support bottom tuple value case. We add a new node instead of generating patchpoint which generates bottom

Nit: value case =&gt; values.

&gt; Source/JavaScriptCore/b3/B3Opcode.h:60
&gt; +    // Tuple filled with zeros. This appears when Tuple Patchpoints are replaced with Bottom values.
&gt; +    BottomTuple,

Can we update the Extract comment to note that BottomTuple can emit tuples. I would say we should update the HTML doc but I guess I never did that... whoops 😬

&gt; Source/JavaScriptCore/b3/testb3_7.cpp:1630
&gt; +        kind, kind, kind, kind, kind,
&gt; +        kind, kind, kind, kind, kind,
&gt; +        kind, kind, kind, kind, kind,
&gt; +        kind, kind, kind, kind, kind,
&gt; +        kind, kind, kind, kind, kind,
&gt; +        kind, kind, kind, kind, kind,
&gt; +        kind, kind, kind, kind, kind,
&gt; +        kind, kind, kind, kind, kind,
&gt; +        kind, kind, kind, kind, kind,
&gt; +        kind, kind, kind, kind, kind,

lol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676296</commentid>
    <comment_count>4</comment_count>
      <attachid>405542</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-29 20:41:15 -0700</bug_when>
    <thetext>Comment on attachment 405542
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=405542&amp;action=review

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        While we support bottom values for usual types, we are not having bottom value for tuple type. So when replaceWithBottom is called, we
&gt; 
&gt; Nit: we are not having bottom value =&gt; we do not have a bottom value.

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        failed to replace Patchpoint producing tuple with bottom values.
&gt; 
&gt; Nit: failed to replace Patchpoint producing tuple =&gt; fail to replace Patchpoints producing tuples

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt;&gt; +        This patch newly adds B3 BottomTupleValue, which is just generating BottomValue for tuple. We can extend it to generate arbitrary constant
&gt; 
&gt; Nit: is just generating BottomValue =&gt; is just a BottomValue

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt;&gt; +        tuple values, but for now, we just support bottom tuple value case. We add a new node instead of generating patchpoint which generates bottom
&gt; 
&gt; Nit: value case =&gt; values.

Fixed.

&gt;&gt; Source/JavaScriptCore/b3/B3Opcode.h:60
&gt;&gt; +    BottomTuple,
&gt; 
&gt; Can we update the Extract comment to note that BottomTuple can emit tuples. I would say we should update the HTML doc but I guess I never did that... whoops 😬

Fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676306</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-29 21:42:53 -0700</bug_when>
    <thetext>Committed r265074: &lt;https://trac.webkit.org/changeset/265074&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676311</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-29 22:43:39 -0700</bug_when>
    <thetext>Committed r265076: &lt;https://trac.webkit.org/changeset/265076&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676463</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-30 11:21:04 -0700</bug_when>
    <thetext>Committed r265090: &lt;https://trac.webkit.org/changeset/265090&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405542</attachid>
            <date>2020-07-29 19:58:10 -0700</date>
            <delta_ts>2020-07-29 20:09:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214956-20200729195809.patch</filename>
            <type>text/plain</type>
            <size>25796</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NzA5Njg4NmU5OWE2NjE4Y2JiOGY1NTgyMDJkYzc4NmI3YmEzMzE2Li4zZWQ3MmQzYjQ1MzFkZGVj
NGEyYjBmMTYxNzlhZWI5YWZjMjRmOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAyMC0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBCMzo6Qm90dG9tVHVwbGVWYWx1ZSBub2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ5NTYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY1MTkyODc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluIEIzIHN0cmVuZ3RoIHJlZHVjdGlvbiwgd2UgY29udmVydCBC
MyB2YWx1ZXMgdG8gYm90dG9tIHZhbHVlIGJhc2VkIG9uIHR5cGUgYWZ0ZXIgT29wcyBraW5kLCBh
bmQgdGhlbiB0aGV5IGFyZSAqdHlwaWNhbGx5KiByZW1vdmVkIGxhdGVyLgorICAgICAgICBXaGls
ZSB3ZSBzdXBwb3J0IGJvdHRvbSB2YWx1ZXMgZm9yIHVzdWFsIHR5cGVzLCB3ZSBhcmUgbm90IGhh
dmluZyBib3R0b20gdmFsdWUgZm9yIHR1cGxlIHR5cGUuIFNvIHdoZW4gcmVwbGFjZVdpdGhCb3R0
b20gaXMgY2FsbGVkLCB3ZQorICAgICAgICBmYWlsZWQgdG8gcmVwbGFjZSBQYXRjaHBvaW50IHBy
b2R1Y2luZyB0dXBsZSB3aXRoIGJvdHRvbSB2YWx1ZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBu
ZXdseSBhZGRzIEIzIEJvdHRvbVR1cGxlVmFsdWUsIHdoaWNoIGlzIGp1c3QgZ2VuZXJhdGluZyBC
b3R0b21WYWx1ZSBmb3IgdHVwbGUuIFdlIGNhbiBleHRlbmQgaXQgdG8gZ2VuZXJhdGUgYXJiaXRy
YXJ5IGNvbnN0YW50CisgICAgICAgIHR1cGxlIHZhbHVlcywgYnV0IGZvciBub3csIHdlIGp1c3Qg
c3VwcG9ydCBib3R0b20gdHVwbGUgdmFsdWUgY2FzZS4gV2UgYWRkIGEgbmV3IG5vZGUgaW5zdGVh
ZCBvZiBnZW5lcmF0aW5nIHBhdGNocG9pbnQgd2hpY2ggZ2VuZXJhdGVzIGJvdHRvbQorICAgICAg
ICB2YWx1ZXMgc2luY2UgQm90dG9tVHVwbGVWYWx1ZXMgaW1wbGVtZW50YXRpb24gaXMgc2ltcGxl
cjogQm90dG9tVHVwbGVWYWx1ZSBqdXN0IGVtaXRzIGJ1bmNoIG9mIHplcm8gY2xlYXIgZm9yIEFp
ciB0bXBzIGFuZCBBaXIgZG9lcyBldmVyeXRoaW5nCisgICAgICAgIGF1dG9tYXRpY2FsbHkuIE9u
IHRoZSBvdGhlciBoYW5kLCBpbXBsZW1lbnRpbmcgYSBwYXRjaHBvaW50IG5lZWRzIHRvIGFkZCBj
b2RlIHdoaWNoIGNsZWFycyB0aGluZ3Mgd2l0aCB6ZXJvIHdoaWxlIGNoZWNraW5nIHRoZSBWYWx1
ZVJlcC4gQW5kCisgICAgICAgIHNpbmNlIHdlIGhhdmUgQ29uc3QzMiwgQ29uc3Q2NCwgZXRjLiB2
YWx1ZXMsIGhhdmluZyB0aGlzIGtpbmQgb2YgdmFsdWUgZm9yIHR1cGxlIHRvbyBpcyBuYXR1cmFs
LiBQbHVzLCB0aGlzIGRlc2lnbiBhbGxvd3MgdXMgdG8gcmVtb3ZlIGJ1bmNoCisgICAgICAgIG9m
IHVubmVjZXNzYXJ5IGluc3RydWN0aW9ucyBhZnRlciBsb3dlcmluZyB0aGlzIHRvIEFpciBzaW5j
ZSBBaXIga25vd3Mgd2hhdCBpbnN0cnVjdGlvbnMgd2lsbCBiZSBlbWl0dGVkIGJ5IHRoaXMgQm90
dG9tVHVwbGVWYWx1ZSwgYW5kIEFpcgorICAgICAgICBjYW4gcmVtb3ZlIGEgbG90IG9mIHplcm8g
Y2xlYXIgaW5zdHJ1Y3Rpb25zIGlmIHRoZXkgYXJlIG5vdCByZWFkIGxhdGVyIGJ5IEV4dHJhY3Qu
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGIzL0IzQm90dG9tVHVwbGVWYWx1ZS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5j
cHAuCisgICAgICAgIChKU0M6OkIzOjpCb3R0b21UdXBsZVZhbHVlOjpkdW1wTWV0YSBjb25zdCk6
CisgICAgICAgICogYjMvQjNCb3R0b21UdXBsZVZhbHVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAuCisgICAgICAgICogYjMvQjNJbnNl
cnRpb25TZXQuY3BwOgorICAgICAgICAoSlNDOjpCMzo6SW5zZXJ0aW9uU2V0OjppbnNlcnRCb3R0
b20pOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvQjNPcGNv
ZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBiMy9CM09w
Y29kZS5oOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OlByb2NlZHVyZTo6YWRkQm90dG9tKToKKyAgICAgICAgKiBiMy9CM1R5cGVNYXAuaDoKKyAgICAg
ICAgKEpTQzo6QjM6OlR5cGVNYXA6OlR5cGVNYXApOiBEZWxldGVkLgorICAgICAgICAqIGIzL0Iz
VmFsaWRhdGUuY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6VmFsdWU6OmVmZmVjdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmtleSBj
b25zdCk6CisgICAgICAgICogYjMvQjNWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzVmFsdWVJbmxp
bmVzLmg6CisgICAgICAgICogYjMvQjNWYWx1ZUtleS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpW
YWx1ZUtleTo6bWF0ZXJpYWxpemUgY29uc3QpOgorICAgICAgICAqIGIzL3Rlc3RiM183LmNwcDoK
KyAgICAgICAgKHRlc3RCb3R0b21UdXBsZVZhbHVlKToKKyAgICAgICAgKGFkZFR1cGxlVGVzdHMp
OgorCiAyMDIwLTA3LTI5ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYkFzc2VtYmx5IHZhbGlkYXRpb24gZm9yIGNhbGxfaW5kaXJlY3QgaXMgaW5jb3Jy
ZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYwYzA1ZTAyM2U5NzFkNGM3MmM0
NTMzODJlYzlhZmI5M2ViMTI4ZTcuLjgxOTdmNmI2MGM4ZTNmYTViYjBlNzg3YjQ2YWZlNGNlZmY0
YmZlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQ0LDYgKzE4NDQsOCBA
QAogCQlFMzg2NTJFMzIzN0NBMEM5MDBFMUQ1RUUgLyogQmxvY2tEaXJlY3RvcnlCaXRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NTJFMjIzN0NB
MEM4MDBFMUQ1RUUgLyogQmxvY2tEaXJlY3RvcnlCaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4OTNBMUQyMjAzQTdDNjAwRTc5QTc0IC8q
IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODkzQTFDMjIwM0E3QzYwMEU3OUE3NCAvKiBB
c3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0LmggKi87IH07CiAJCUUzOTAwNjIxMjIw
OEJGQzQwMDEwMTlDRiAvKiBTdWJzcGFjZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5MDA2MjAyMjA4QkZDMzAwMTAxOUNGIC8qIFN1YnNw
YWNlQWNjZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5MkU2RjgyNEQyNUZBNjAwQjIwNzY3IC8qIEIzQm90dG9tVHVwbGVWYWx1ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkyRTZGNjI0
RDI1RkE2MDBCMjA3NjcgLyogQjNCb3R0b21UdXBsZVZhbHVlLmNwcCAqLzsgfTsKKwkJRTM5MkU2
RjkyNEQyNUZBOTAwQjIwNzY3IC8qIEIzQm90dG9tVHVwbGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5MkU2RjcyNEQyNUZBNjAwQjIwNzY3
IC8qIEIzQm90dG9tVHVwbGVWYWx1ZS5oICovOyB9OwogCQlFMzkzQUREODFGRTcwMkQwMDAyMkQ2
ODEgLyogV2Vha01hcEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzkzQURENzFGRTcwMkNDMDAyMkQ2ODEgLyogV2Vha01hcEltcGxJ
bmxpbmVzLmggKi87IH07CiAJCUUzOUJGMzk5MjJBMjI4OEIwMEJEMTgzRSAvKiBTeW1ib2xUYWJs
ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOUJGMzk4MjJBMjI4OEIwMEJEMTgzRSAvKiBTeW1ib2xUYWJsZUlubGluZXMuaCAqLzsgfTsK
IAkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAw
NjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MDQyLDYgKzUwNDQsOCBAQAogCQlFMzhEMDYw
RDFGOEU4MTQxMDA2NDlDRjIgLyogSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzkwMDYyMDIyMDhCRkMzMDAxMDE5Q0Yg
LyogU3Vic3BhY2VBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Vi
c3BhY2VBY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5MTVDMDYyMzA5
NjgyOTAwQ0IyNTYxIC8qIFdhc21Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21D
b250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5MkU2RjYyNEQyNUZB
NjAwQjIwNzY3IC8qIEIzQm90dG9tVHVwbGVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBCM0JvdHRvbVR1cGxlVmFsdWUuY3BwOyBwYXRoID0gYjMvQjNCb3R0
b21UdXBsZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5MkU2Rjcy
NEQyNUZBNjAwQjIwNzY3IC8qIEIzQm90dG9tVHVwbGVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBCM0JvdHRvbVR1cGxlVmFsdWUuaDsgcGF0aCA9IGIzL0IzQm90dG9t
VHVwbGVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzkzQURENzFGRTcw
MkNDMDAyMkQ2ODEgLyogV2Vha01hcEltcGxJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYWtNYXBJbXBsSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOUJGMzk4MjJBMjI4OEIwMEJE
MTgzRSAvKiBTeW1ib2xUYWJsZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3ltYm9sVGFibGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01NjU4LDYgKzU2NjIsOCBAQAogCQkJCTBGMzM4RTE4MUJGMjg2RUEwMDEzQzg4RiAvKiBCM0Js
b2NrSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZFQzg0QkExQkRBQ0RBQzAwODBGRjc0IC8qIEIz
QmxvY2tXb3JrbGlzdC5oICovLAogCQkJCURDRkRGQkQ3MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM0Jv
dHRvbVByb3ZpZGVyLmggKi8sCisJCQkJRTM5MkU2RjYyNEQyNUZBNjAwQjIwNzY3IC8qIEIzQm90
dG9tVHVwbGVWYWx1ZS5jcHAgKi8sCisJCQkJRTM5MkU2RjcyNEQyNUZBNjAwQjIwNzY3IC8qIEIz
Qm90dG9tVHVwbGVWYWx1ZS5oICovLAogCQkJCTBGNkI4QURFMUM0RUZFMTcwMDk2OTA1MiAvKiBC
M0JyZWFrQ3JpdGljYWxFZGdlcy5jcHAgKi8sCiAJCQkJMEY2QjhBREYxQzRFRkUxNzAwOTY5MDUy
IC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmggKi8sCiAJCQkJREM5QTBDMUMxRDJEOTRFRjAwODUx
MjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uY3BwICovLApAQCAtOTA3Myw2ICs5MDc5LDcgQEAKIAkJ
CQkwRjMzOEUxQzFCRjI4NkVBMDAxM0M4OEYgLyogQjNCbG9ja0luc2VydGlvblNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFQzg1MDQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQmxvY2tXb3JrbGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRENGREZCRDkxRDFGNUQ5QjAwRkUzRDcyIC8qIEIzQm90
dG9tUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTJFNkY5MjREMjVGQTkwMEIyMDc2
NyAvKiBCM0JvdHRvbVR1cGxlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNkI4QUUzMUM0
RUZFMTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJREM5QTBDMjAxRDJEOUNCMzAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCURDOUEwQzFGMUQyRDlDQjEwMDg1MTI0RSAvKiBCM0Nhc2VDb2xsZWN0aW9u
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTE3NSw2ICsxMTE4Miw3IEBACiAJCQlpc2Eg
PSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CiAJCQlmaWxlcyA9ICgKKwkJCQlFMzkyRTZGODI0RDI1RkE2MDBCMjA3NjcgLyogQjNCb3R0b21U
dXBsZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NUFGMUJEQjVENUUwMDgwRkY3
NCAvKiB0ZXN0YjNfMS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzNBNzdCQTIyRjI0ODBGMDAz
ODI3RkYgLyogdGVzdGIzXzIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMzQTc3QjkyMkYyNDgw
QjAwMzgyN0ZGIC8qIHRlc3RiM18zLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CmluZGV4IDU5MGRiNDI4NzU0MWFjNGUzMTdlYmRiZGZkMjc2ZGE1NzM0MmNlN2Uu
LmMzMTBiOWE0Y2RmZDYxZDQ3ODJlZjY2OWQzYTliMmQ1Y2UzMTAyZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKQEAgLTEwOSw2ICsxMDksNyBAQCBiMy9CM0F0b21pY1ZhbHVlLmNwcAog
YjMvQjNCYW5rLmNwcAogYjMvQjNCYXNpY0Jsb2NrLmNwcAogYjMvQjNCbG9ja0luc2VydGlvblNl
dC5jcHAKK2IzL0IzQm90dG9tVHVwbGVWYWx1ZS5jcHAKIGIzL0IzQnJlYWtDcml0aWNhbEVkZ2Vz
LmNwcAogYjMvQjNDQ2FsbFZhbHVlLmNwcAogYjMvQjNDYXNlQ29sbGVjdGlvbi5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0JvdHRvbVR1cGxlVmFsdWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQm90dG9tVHVwbGVWYWx1ZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2Q0MDkwN2QxNDZjNTlmYzkxYzgxYmE2OGM2ZmI2NmJlNDlmMWJkNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0JvdHRvbVR1cGxlVmFsdWUuY3BwCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNCb3R0b21UdXBsZVZhbHVlLmgi
CisKKyNpZiBFTkFCTEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
KworQm90dG9tVHVwbGVWYWx1ZTo6fkJvdHRvbVR1cGxlVmFsdWUoKSA9IGRlZmF1bHQ7CisKK3Zv
aWQgQm90dG9tVHVwbGVWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoY29tbWEsICI8PCIsIG1faW5kZXgp
OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19K
SVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCb3R0b21UdXBsZVZh
bHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCb3R0b21UdXBsZVZhbHVlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODAyMjkwNDcxYmQ0M2JlNTA5NjA2MjU1OWRhZjNiNzExY2JhMzk1NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0JvdHRvbVR1cGxlVmFsdWUu
aApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAi
QjNWYWx1ZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgQm90dG9tVHVwbGVWYWx1ZSBmaW5hbCA6IHB1YmxpYyBWYWx1ZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIGJvb2wgYWNjZXB0cyhLaW5kIGtpbmQpIHsgcmV0dXJuIGtpbmQg
PT0gQm90dG9tVHVwbGU7IH0KKworICAgIH5Cb3R0b21UdXBsZVZhbHVlKCkgZmluYWw7CisKKyAg
ICBCM19TUEVDSUFMSVpFX1ZBTFVFX0ZPUl9OT19DSElMRFJFTgorCitwcml2YXRlOgorICAgIHZv
aWQgZHVtcE1ldGEoQ29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbDsKKwor
ICAgIHN0YXRpYyBPcGNvZGUgb3Bjb2RlRnJvbUNvbnN0cnVjdG9yKE9yaWdpbiwgVHlwZSkgeyBy
ZXR1cm4gQm90dG9tVHVwbGU7IH0KKworICAgIEJvdHRvbVR1cGxlVmFsdWUoT3JpZ2luIG9yaWdp
biwgVHlwZSB0eXBlKQorICAgICAgICA6IFZhbHVlKENoZWNrZWRPcGNvZGUsIEJvdHRvbVR1cGxl
LCB0eXBlLCBaZXJvLCBvcmlnaW4pCisgICAgeworICAgICAgICBBU1NFUlQodHlwZS5pc1R1cGxl
KCkpOworICAgIH0KKworICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7CisgICAgZnJpZW5kIGNs
YXNzIFZhbHVlOworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBF
TkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5z
ZXJ0aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5j
cHAKaW5kZXggMWE3ZGNhYTdhMjhjZjI5MjE2ODE5NWVmMDFiMDE3ZDAxZTFjYmE2NC4uNmNjNjI3
MmVhNzVhNWM0YWJlNTZiYjBmZjRlZGQzNTQ4MzMwYTBlYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCkBAIC00Nyw2ICs0Nyw4IEBAIFZhbHVlKiBJbnNl
cnRpb25TZXQ6Omluc2VydEludENvbnN0YW50KHNpemVfdCBpbmRleCwgVmFsdWUqIGxpa2VWYWx1
ZSwgaW50NjRfdCB2CiAKIFZhbHVlKiBJbnNlcnRpb25TZXQ6Omluc2VydEJvdHRvbShzaXplX3Qg
aW5kZXgsIE9yaWdpbiBvcmlnaW4sIFR5cGUgdHlwZSkKIHsKKyAgICBpZiAodHlwZS5pc1R1cGxl
KCkpCisgICAgICAgIHJldHVybiBpbnNlcnRWYWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuYWRkQm90
dG9tKG9yaWdpbiwgdHlwZSkpOwogICAgIFZhbHVlKiYgYm90dG9tID0gbV9ib3R0b21Gb3JUeXBl
W3R5cGVdOwogICAgIGlmICghYm90dG9tKQogICAgICAgICBib3R0b20gPSBpbnNlcnRWYWx1ZShp
bmRleCwgbV9wcm9jZWR1cmUuYWRkQm90dG9tKG9yaWdpbiwgdHlwZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA3YmYzZGRkOWY1NWIxYmI4ZDg3ZmJl
YmIwNmJkMTU1MzhkZjVlMDAzLi44ZmU3ZjM5MjBhM2U1NWQzYTVmM2RhYmZhN2ZmNmVkMTAzNjc0
MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTQy
LDcgKzE0Miw4IEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBHZXQ6Ci0gICAgICAgICAgICBjYXNlIFBh
dGNocG9pbnQ6IHsKKyAgICAgICAgICAgIGNhc2UgUGF0Y2hwb2ludDoKKyAgICAgICAgICAgIGNh
c2UgQm90dG9tVHVwbGU6IHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUtPnR5cGUoKS5pc1R1
cGxlKCkpCiAgICAgICAgICAgICAgICAgICAgIGVuc3VyZVR1cGxlVG1wcyh2YWx1ZSwgbV90dXBs
ZVZhbHVlVG9UbXBzKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQzNiw3ICs0MzcsOCBA
QCBjbGFzcyBMb3dlclRvQWlyIHsKIAogICAgICAgICBzd2l0Y2ggKHR1cGxlVmFsdWUtPm9wY29k
ZSgpKSB7CiAgICAgICAgIGNhc2UgUGhpOgotICAgICAgICBjYXNlIFBhdGNocG9pbnQ6IHsKKyAg
ICAgICAgY2FzZSBQYXRjaHBvaW50OgorICAgICAgICBjYXNlIEJvdHRvbVR1cGxlOiB7CiAgICAg
ICAgICAgICByZXR1cm4gbV90dXBsZVZhbHVlVG9UbXBzLmZpbmQodHVwbGVWYWx1ZSktPnZhbHVl
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR2V0OgpAQCAtMjk3NSw2ICsyOTc3LDI3IEBAIGNs
YXNzIExvd2VyVG9BaXIgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAg
ICAgY2FzZSBCb3R0b21UdXBsZTogeworICAgICAgICAgICAgZm9yRWFjaEltbU9yVG1wKG1fdmFs
dWUsIFsmXSAoQXJnIHRtcCwgVHlwZSB0eXBlLCB1bnNpZ25lZCkgeworICAgICAgICAgICAgICAg
IHN3aXRjaCAodHlwZS5raW5kKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZvaWQ6CisgICAg
ICAgICAgICAgICAgY2FzZSBUdXBsZToKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBJbnQzMjoKKyAgICAgICAgICAgICAgICBjYXNlIEludDY0OgorICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoQXJnOjppc1ZhbGlkSW1tRm9ybSgwKSk7CisgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChNb3ZlLCBpbW0oc3RhdGljX2Nhc3Q8aW50NjRfdD4oMCkpLCB0bXAudG1w
KCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEZs
b2F0OgorICAgICAgICAgICAgICAgIGNhc2UgRG91YmxlOgorICAgICAgICAgICAgICAgICAgICBh
cHBlbmQoTW92ZVplcm9Ub0RvdWJsZSwgdG1wLnRtcCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIEZyYW1lUG9pbnRlcjogewogICAgICAg
ICAgICAgQVNTRVJUKHRtcChtX3ZhbHVlKSA9PSBUbXAoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUu
Y3BwCmluZGV4IDM2MGYwNDVkZTk5Mzc3Mzk2YzQ4YWRhZDA5MTkxNzc0NzIyMzc0ZDguLjZjZmQ4
YTlmMmZjODc1YmYzOTQzZjc5N2NjZmRhMWJmMWZiM2IyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzT3Bjb2RlLmNwcApAQCAtMTIwLDYgKzEyMCw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAgIGNhc2UgQ29uc3RGbG9hdDoKICAg
ICAgICAgb3V0LnByaW50KCJDb25zdEZsb2F0Iik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEJvdHRvbVR1cGxlOgorICAgICAgICBvdXQucHJpbnQoIkJvdHRvbVR1cGxlIik7CisgICAgICAg
IHJldHVybjsKICAgICBjYXNlIEdldDoKICAgICAgICAgb3V0LnByaW50KCJHZXQiKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAppbmRleCA0MTAxOWMwOTBh
MWI2NGU1MjhhNzgzYWZjNTYyNjZkODE3MmNhZGUwLi45YWQxMmUyN2M0YzYyYzA0N2JmODY0NDM5
OGEzZDNmYTAwM2I3YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNP
cGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtNTYs
NiArNTYsOSBAQCBlbnVtIE9wY29kZSA6IHVpbnQ4X3QgewogICAgIENvbnN0RG91YmxlLAogICAg
IENvbnN0RmxvYXQsCiAKKyAgICAvLyBUdXBsZSBmaWxsZWQgd2l0aCB6ZXJvcy4gVGhpcyBhcHBl
YXJzIHdoZW4gVHVwbGUgUGF0Y2hwb2ludHMgYXJlIHJlcGxhY2VkIHdpdGggQm90dG9tIHZhbHVl
cy4KKyAgICBCb3R0b21UdXBsZSwKKwogICAgIC8vIEIzIHN1cHBvcnRzIG5vbi1TU0EgdmFyaWFi
bGVzLiBUaGVzZSBhcmUgYWNjZXNzZWQgdXNpbmcgR2V0IGFuZCBTZXQgb3Bjb2Rlcy4gVXNlIHRo
ZQogICAgIC8vIFZhcmlhYmxlVmFsdWUgY2xhc3MuIEl0J3MgYSBnb29kIGlkZWEgdG8gcnVuIGZp
eFNTQSgpIHRvIHR1cm4gdGhlc2UgaW50byBTU0EuIFRoZQogICAgIC8vIG9wdGltaXplciB3aWxs
IGRvIHRoYXQgZXZlbnR1YWxseSwgYnV0IGlmIHlvdXIgaW5wdXQgdGVuZHMgdG8gdXNlIHRoZXNl
IG9wY29kZXMsIHlvdQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJv
Y2VkdXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5k
ZXggYTE5NjIzYjBhZTYzMTE1MjcyZGUwYTExNzRjYjYxMzllYzRmZTU2MC4uOGRjNDIyNmNkNTUy
ZDMxNTllMDcxMmNiY2ZmOTRhMDhhYzlhNGUxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQcm9jZWR1cmUuY3BwCkBAIC0xNTAsNiArMTUwLDggQEAgVmFsdWUqIFByb2NlZHVyZTo6YWRk
Q29uc3RhbnQoT3JpZ2luIG9yaWdpbiwgVHlwZSB0eXBlLCB1aW50NjRfdCBiaXRzKQogCiBWYWx1
ZSogUHJvY2VkdXJlOjphZGRCb3R0b20oT3JpZ2luIG9yaWdpbiwgVHlwZSB0eXBlKQogeworICAg
IGlmICh0eXBlLmlzVHVwbGUoKSkKKyAgICAgICAgcmV0dXJuIGFkZDxCb3R0b21UdXBsZVZhbHVl
PihvcmlnaW4sIHR5cGUpOwogICAgIHJldHVybiBhZGRJbnRDb25zdGFudChvcmlnaW4sIHR5cGUs
IDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlTWFw
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlTWFwLmgKaW5kZXggNmFjZjFlNjE4
ZGRhYzE4ZWYzNWE1OGRhNzc3MmYzMzVhM2Q4NjUwNS4uZjUzMjljNDY3M2IwZmVjY2FjNTUyODVj
ZTY4M2RiY2VjYWNjMDM1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VHlwZU1hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVNYXAuaApAQCAt
MzksMTQgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogY2xhc3MgVHlwZU1hcCB7CiBwdWJsaWM6Ci0gICAgVHlwZU1hcCgpCi0gICAg
ICAgIDogbV92b2lkKCkKLSAgICAgICAgLCBtX2ludDMyKCkKLSAgICAgICAgLCBtX2ludDY0KCkK
LSAgICAgICAgLCBtX2Zsb2F0KCkKLSAgICAgICAgLCBtX2RvdWJsZSgpCi0gICAgewotICAgIH0K
KyAgICBUeXBlTWFwKCkgPSBkZWZhdWx0OwogICAgIAogICAgIFQmIGF0KFR5cGUgdHlwZSkKICAg
ICB7CkBAIC05MywxMiArODYsMTIgQEAgY2xhc3MgVHlwZU1hcCB7CiAgICAgfQogICAgIAogcHJp
dmF0ZToKLSAgICBUIG1fdm9pZDsKLSAgICBUIG1faW50MzI7Ci0gICAgVCBtX2ludDY0OwotICAg
IFQgbV9mbG9hdDsKLSAgICBUIG1fZG91YmxlOwotICAgIFQgbV90dXBsZTsKKyAgICBUIG1fdm9p
ZCB7IH07CisgICAgVCBtX2ludDMyIHsgfTsKKyAgICBUIG1faW50NjQgeyB9OworICAgIFQgbV9m
bG9hdCB7IH07CisgICAgVCBtX2RvdWJsZSB7IH07CisgICAgVCBtX3R1cGxlIHsgfTsKIH07CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRh
dGUuY3BwCmluZGV4IGI5Mzg1NTAyMzRjNTQxNGE3Yjc4YzM5ZTg4NjI5YjI2YjhlYzQ4ZWYuLmFm
NTBmNTU3MmU0ZWY2NGJiNWM2M2RjZDk2NGU1NzYwYTU3YTRmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKQEAgLTE3MSw2ICsxNzEsMTEgQEAgY2xhc3MgVmFsaWRh
dGVyIHsKICAgICAgICAgICAgICAgICBWQUxJREFURSghdmFsdWUtPm51bUNoaWxkcmVuKCksICgi
QXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9
PSBGbG9hdCwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQm90dG9tVHVwbGU6CisgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVl
LT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAg
ICAgVkFMSURBVEUoIXZhbHVlLT5udW1DaGlsZHJlbigpLCAoIkF0ICIsICp2YWx1ZSkpOworICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkuaXNUdXBsZSgpLCAoIkF0ICIsICp2
YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTZXQ6CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5kKCkuaGFzRXh0cmFCaXRzKCksICgi
QXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxk
cmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmNwcAppbmRleCBhNzI0MTgwM2RiNWNiZWFhOGE0ZGE2YTQxOTA5ZTYyMjg0ZGU0ZjczLi5jZTEz
NzEyMWJkOGM0ZTAyNmI4ZmM3MDc4YmFmYjhlY2Y4MTIyYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuY3BwCkBAIC01MzMsNiArNTMzLDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0
cygpIGNvbnN0CiAgICAgY2FzZSBDb25zdDY0OgogICAgIGNhc2UgQ29uc3REb3VibGU6CiAgICAg
Y2FzZSBDb25zdEZsb2F0OgorICAgIGNhc2UgQm90dG9tVHVwbGU6CiAgICAgY2FzZSBTbG90QmFz
ZToKICAgICBjYXNlIEFyZ3VtZW50UmVnOgogICAgIGNhc2UgRnJhbWVQb2ludGVyOgpAQCAtNzQ4
LDYgKzc0OSw4IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgICAgICByZXR1cm4g
VmFsdWVLZXkoQ29uc3REb3VibGUsIHR5cGUoKSwgYXNEb3VibGUoKSk7CiAgICAgY2FzZSBDb25z
dEZsb2F0OgogICAgICAgICByZXR1cm4gVmFsdWVLZXkoQ29uc3RGbG9hdCwgdHlwZSgpLCBhc0Zs
b2F0KCkpOworICAgIGNhc2UgQm90dG9tVHVwbGU6CisgICAgICAgIHJldHVybiBWYWx1ZUtleShC
b3R0b21UdXBsZSwgdHlwZSgpKTsKICAgICBjYXNlIEFyZ3VtZW50UmVnOgogICAgICAgICByZXR1
cm4gVmFsdWVLZXkoCiAgICAgICAgICAgICBBcmd1bWVudFJlZywgdHlwZSgpLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1ZhbHVlLmgKaW5kZXggYzdmNzdkOWVkNDEyMjhhYTU0YmYxZWVkYjNlODJhM2Ey
MGM4NWU2Ni4uOTA2MmU0MzRiMmQ2MmJiOWZkYjhlNmYxOTUwYzEwYmU3YjJlMDllYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCkBAIC0zOTEsNiArMzkxLDcgQEAgY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgVmFsdWUgewogICAgICAgICBjYXNlIENvbnN0NjQ6CiAgICAgICAgIGNhc2Ug
Q29uc3RGbG9hdDoKICAgICAgICAgY2FzZSBDb25zdERvdWJsZToKKyAgICAgICAgY2FzZSBCb3R0
b21UdXBsZToKICAgICAgICAgY2FzZSBGZW5jZToKICAgICAgICAgY2FzZSBTbG90QmFzZToKICAg
ICAgICAgY2FzZSBHZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5o
CmluZGV4IGIxY2QwYTYwY2FmODhkZmMyYmY0MTdhMjU5ODMwMWNlZTAxYzk2M2IuLjZiYWRkNjdl
YmRjYTFmYjhjNzk0Yzc0NWRjZGI4YWQ2ZGRjMjQxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlSW5saW5lcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJCM0Fy
Z3VtZW50UmVnVmFsdWUuaCIKICNpbmNsdWRlICJCM0F0b21pY1ZhbHVlLmgiCisjaW5jbHVkZSAi
QjNCb3R0b21UdXBsZVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZhbHVlLmgiCiAjaW5jbHVk
ZSAiQjNDaGVja1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNDb25zdDMyVmFsdWUuaCIKQEAgLTExOSw2
ICsxMjAsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKICAgICAgICAgcmV0dXJu
IE1BQ1JPKENvbnN0RmxvYXRWYWx1ZSk7IFwKICAgICBjYXNlIENvbnN0RG91YmxlOiBcCiAgICAg
ICAgIHJldHVybiBNQUNSTyhDb25zdERvdWJsZVZhbHVlKTsgXAorICAgIGNhc2UgQm90dG9tVHVw
bGU6IFwKKyAgICAgICAgcmV0dXJuIE1BQ1JPKEJvdHRvbVR1cGxlVmFsdWUpOyBcCiAgICAgY2Fz
ZSBGZW5jZTogXAogICAgICAgICByZXR1cm4gTUFDUk8oRmVuY2VWYWx1ZSk7IFwKICAgICBjYXNl
IFNsb3RCYXNlOiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZUtleS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5jcHAKaW5kZXgg
YjRmMDllNzhiNTkwY2Q3MWJjYzRlM2I2NDUzNDA3Mjk1Y2Y2NzJmNS4uOTlmNzdmZTg0NzE1YzRh
ZTNiMzdiYTViMjVlOTYxNDMwZjIyYTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWVLZXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlS2V5LmNwcApAQCAtMTE2LDYgKzExNiw4IEBAIFZhbHVlKiBWYWx1ZUtleTo6bWF0ZXJpYWxp
emUoUHJvY2VkdXJlJiBwcm9jLCBPcmlnaW4gb3JpZ2luKSBjb25zdAogICAgICAgICByZXR1cm4g
cHJvYy5hZGQ8Q29uc3REb3VibGVWYWx1ZT4ob3JpZ2luLCBkb3VibGVWYWx1ZSgpKTsKICAgICBj
YXNlIENvbnN0RmxvYXQ6CiAgICAgICAgIHJldHVybiBwcm9jLmFkZDxDb25zdEZsb2F0VmFsdWU+
KG9yaWdpbiwgZmxvYXRWYWx1ZSgpKTsKKyAgICBjYXNlIEJvdHRvbVR1cGxlOgorICAgICAgICBy
ZXR1cm4gcHJvYy5hZGQ8Qm90dG9tVHVwbGVWYWx1ZT4ob3JpZ2luLCB0eXBlKCkpOwogICAgIGNh
c2UgQXJndW1lbnRSZWc6CiAgICAgICAgIHJldHVybiBwcm9jLmFkZDxBcmd1bWVudFJlZ1ZhbHVl
PihvcmlnaW4sIFJlZzo6ZnJvbUluZGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWx1ZSgpKSkp
OwogICAgIGNhc2UgU2xvdEJhc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM183LmNwcApp
bmRleCA1M2IyMDQxMWYxOTM1NzM5OTQ2YzU3M2E2YTExYWQ3YjhkMGY2ZGY1Li40ZTQ3NjQ3MzZk
ZGYzMjZlMThlNmFiNTE3YzNjNTcxYmJkM2I2MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzXzcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjNfNy5jcHAKQEAgLTE2MTEsNiArMTYxMSwyOSBAQCBzdGF0aWMgdm9pZCB0ZXN0U2ltcGxl
VHVwbGVQYWlyU3RhY2sodW5zaWduZWQgZmlyc3QsIGludDY0X3Qgc2Vjb25kKQogICAgIENIRUNL
X0VRKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYyksIGZpcnN0ICsgc2Vjb25kKTsKIH0KIAor
dGVtcGxhdGU8QjM6OlR5cGVLaW5kIGtpbmQsIHR5cGVuYW1lIFJlc3VsdFR5cGU+CitzdGF0aWMg
dm9pZCB0ZXN0Qm90dG9tVHVwbGVWYWx1ZSgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIGF1dG8qIHR1cGxlID0g
cm9vdC0+YXBwZW5kTmV3PEJvdHRvbVR1cGxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBwcm9jLmFk
ZFR1cGxlKHsKKyAgICAgICAga2luZCwga2luZCwga2luZCwga2luZCwga2luZCwKKyAgICAgICAg
a2luZCwga2luZCwga2luZCwga2luZCwga2luZCwKKyAgICAgICAga2luZCwga2luZCwga2luZCwg
a2luZCwga2luZCwKKyAgICAgICAga2luZCwga2luZCwga2luZCwga2luZCwga2luZCwKKyAgICAg
ICAga2luZCwga2luZCwga2luZCwga2luZCwga2luZCwKKyAgICAgICAga2luZCwga2luZCwga2lu
ZCwga2luZCwga2luZCwKKyAgICAgICAga2luZCwga2luZCwga2luZCwga2luZCwga2luZCwKKyAg
ICAgICAga2luZCwga2luZCwga2luZCwga2luZCwga2luZCwKKyAgICAgICAga2luZCwga2luZCwg
a2luZCwga2luZCwga2luZCwKKyAgICAgICAga2luZCwga2luZCwga2luZCwga2luZCwga2luZCwK
KyAgICB9KSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxFeHRyYWN0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBraW5kLCB0dXBsZSwgMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworICAgIENIRUNLX0VRKGNv
bXBpbGVBbmRSdW48UmVzdWx0VHlwZT4ocHJvYyksIDApOworfQorCiB0ZW1wbGF0ZTxib29sIHNo
b3VsZEZpeFNTQT4KIHN0YXRpYyB2b2lkIHRhaWxEdXBlZFR1cGxlUGFpcih1bnNpZ25lZCBmaXJz
dCwgZG91YmxlIHNlY29uZCkKIHsKQEAgLTE4MTEsNiArMTgzNCwxMCBAQCB2b2lkIGFkZFR1cGxl
VGVzdHMoY29uc3QgY2hhciogZmlsdGVyLCBEZXF1ZTxSZWZQdHI8U2hhcmVkVGFzazx2b2lkKCk+
Pj4mIHRhc2tzKQogICAgIFJVTl9CSU5BUlkodGVzdFNpbXBsZVR1cGxlUGFpciwgaW50MzJPcGVy
YW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwogICAgIFJVTl9CSU5BUlkodGVzdFNpbXBsZVR1cGxl
UGFpclVudXNlZCwgaW50MzJPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkpOwogICAgIFJVTl9C
SU5BUlkodGVzdFNpbXBsZVR1cGxlUGFpclN0YWNrLCBpbnQzMk9wZXJhbmRzKCksIGludDY0T3Bl
cmFuZHMoKSk7CisgICAgUlVOKCh0ZXN0Qm90dG9tVHVwbGVWYWx1ZTxJbnQzMiwgaW50MzJfdD4p
KCkpOworICAgIFJVTigodGVzdEJvdHRvbVR1cGxlVmFsdWU8SW50NjQsIGludDY0X3Q+KSgpKTsK
KyAgICBSVU4oKHRlc3RCb3R0b21UdXBsZVZhbHVlPEZsb2F0LCBmbG9hdD4pKCkpOworICAgIFJV
TigodGVzdEJvdHRvbVR1cGxlVmFsdWU8RG91YmxlLCBkb3VibGU+KSgpKTsKICAgICAvLyB1c2Ug
aW50NjQgYXMgc2Vjb25kIGFyZ3VtZW50IGJlY2F1c2UgY2hlY2tpbmcgZm9yIE5hTiBpcyBhbm5v
eWluZyBhbmQgZG9lc24ndCByZWFsbHkgbWF0dGVyIGZvciB0aGlzIHRlc3QuCiAgICAgUlVOX0JJ
TkFSWSh0YWlsRHVwZWRUdXBsZVBhaXI8dHJ1ZT4sIGludDMyT3BlcmFuZHMoKSwgaW50NjRPcGVy
YW5kcygpKTsKICAgICBSVU5fQklOQVJZKHRhaWxEdXBlZFR1cGxlUGFpcjxmYWxzZT4sIGludDMy
T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjhiNWY5MmY5NDZjMzcyNjFjMGE4YjFkMjgy
M2M2NmRkMWJhMDY5Ni4uNTMxYmMyZmFiZTE5NmFiOTA2ZjQwNzRhODczYzM1ODFhNjVhMWQ3YiAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMC0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgorCisgICAgICAgIFtKU0NdIEFkZCBCMzo6Qm90dG9tVHVwbGVWYWx1ZSBub2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ5NTYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY1MTkyODc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd2FzbS9zdHJlc3MvYm90dG9tLXR1cGxlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHRyeS5tYWluKToKKyAgICAgICAgKGNhdGNoKToKKwogMjAyMC0wNy0yOSAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVwZ3Jh
ZGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3N0cmVzcy9ib3R0b20tdHVwbGUu
anMgYi9KU1Rlc3RzL3dhc20vc3RyZXNzL2JvdHRvbS10dXBsZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTM4
MzVjOTE2MTUzNzZkN2JkZDg5NWNkMzQ5YTYzNTQzZTBhOWFiCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy93YXNtL3N0cmVzcy9ib3R0b20tdHVwbGUuanMKQEAgLTAsMCArMSwyNiBAQAorLy9A
IHJ1bkRlZmF1bHQoIi0tdXNlQ29uY3VycmVudEpJVD0wIikKKworbGV0IGJ1ZmZlciA9IG5ldyBV
aW50OEFycmF5KFsKKyAgMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw3LDEsOTYsMCwzLDEyNywxMjcs
MTI3LDMsMiwxLDAsNCw2LAorICAxLDExMSwxLDE2LDI1NSwxLDUsNCwxLDEsNCw0LDYsMTMsMSwx
MjQsMCw2OCwwLDAsMCwwLDAsMCwKKyAgMCwwLDExLDcsMjMsNCwyLDExNiw0OSwxLDAsMiwxMDks
NDksMiwwLDIsMTAzLDQ5LDMsMCw0LDEwOSwKKyAgOTcsMTA1LDExMCwwLDAsMTAsMTE2LDEsMTE0
LDAsNjUsMCwxNiwwLDY1LDY1LDY1LDAsMTYsMCw2NSwKKyAgMCw2NSwwLDEwOSwxNiwwLDEzLDAs
MCwxMDksNjUsMTA5LDE2LDAsMCwxNiw0LDE2LDEwOSwwLDEwOSwKKyAgMTA5LDEwOSwwLDgzLDAs
MTUxLDE1MSwxNTEsMTUxLDY3LDIxMiwwLDY3LDAsMTY4LDMzLDY3LDY3LAorICA2NywxNzUsOTks
MTc1LDAsNjcsMjEyLDAsNjcsMCwxNjgsMzMsNjcsNjcsNjcsMTI4LDQyLDE1MSwKKyAgMTUxLDE1
MSwxLDAsMCwwLDAsMCwwLDEyOSwxNTEsMTUxLDE1MSwxNTEsMTUxLDY3LDIxMiwwLDY3LAorICAw
LDE2OCwzMyw2Nyw2Nyw2NywxMjgsNDIsMTUxLDAsMTc1LDAsNjcsMCwwLDAsMCwwLDAsNjUsNjUs
CisgIDY1LDAsNjUsMCwxMSwwLDE0LDQsMTEwLDk3LDEwOSwxMDEsMSw3LDEsMCw0LDEwOSw5Nywx
MDUsMTEwCitdKTsKKwordmFyIGVycm9yID0gdW5kZWZpbmVkOwordHJ5IHsKKyAgICBsZXQgbW9k
dWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpOworICAgIGxldCBpbnN0YW5jZSA9
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUpOworICAgIG1haW4gPSBmdW5jdGlvbigp
IHsgcmV0dXJuIGluc3RhbmNlLmV4cG9ydHMubWFpbigpOyB9OworICAgIG1haW4oKTsKK30gY2F0
Y2ggKGVycikgeworICAgIGVycm9yID0gZXJyOworfQoraWYgKCFlcnJvciB8fCBlcnJvci5tZXNz
YWdlICE9PSAiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuIikKKyAgICB0aHJvdyAi
RXhwZWN0ZWQgc3RhY2sgb3ZlcmZsb3cgZXJyb3IiOwo=
</data>
<flag name="review"
          id="420943"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>