<?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>170266</bug_id>
          
          <creation_ts>2017-03-29 19:10:40 -0700</creation_ts>
          <short_desc>WebAssembly: B3IRGenerator should pool constants</short_desc>
          <delta_ts>2017-03-29 19:39:56 -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>
          
          
          <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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>buildbot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1292672</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-03-29 19:10:40 -0700</bug_when>
    <thetext>WebAssembly: B3IRGenerator should pool constants</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292673</commentid>
    <comment_count>1</comment_count>
      <attachid>305820</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-03-29 19:18:13 -0700</bug_when>
    <thetext>Created attachment 305820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292678</commentid>
    <comment_count>2</comment_count>
      <attachid>305820</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-29 19:25:26 -0700</bug_when>
    <thetext>Comment on attachment 305820
Patch

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

seems legit

&gt; Source/JavaScriptCore/b3/B3Procedure.h:121
&gt; +    // bits is a bitwise_cast of the constant you want.
&gt; +    Value* addConstant(Origin, Type, uint64_t bits);

Nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292682</commentid>
    <comment_count>3</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-03-29 19:39:56 -0700</bug_when>
    <thetext>Committed r214592: &lt;http://trac.webkit.org/changeset/214592&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305820</attachid>
            <date>2017-03-29 19:18:13 -0700</date>
            <delta_ts>2017-03-29 19:25:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170266-20170329191805.patch</filename>
            <type>text/plain</type>
            <size>28635</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZGRlYTkwOGEwYmY3NjNjNzQ2MjIwZTQ0OTg1M2Q2MmU4ODAwMDJkLi4zYTE5OWE2YjZiNzc4MTc5
ZTUwMjM0MGUwYzQxNjg4NjhjNjBhMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNy0wMy0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogQjNJUkdlbmVyYXRvciBzaG91bGQgcG9vbCBj
b25zdGFudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MDI2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBhIEhhc2hNYXAgdG8gQjNJUkdlbmVyYXRvciB0aGF0IGNvbnRhaW5z
IGFsbCB0aGUgY29uc3RhbnRzIHVzZWQgaW4gYSBmdW5jdGlvbi4KKyAgICAgICAgQjNJUkdlbmVy
YXRvciB0aGVuIHVzZXMgYW4gSW5zZXJ0aW9uU2V0IHRvIGFkZCBhbGwgdGhvc2UgY29uc3RhbnRz
IHRvIHRoZSByb290IEJCLiBUaGlzIGRvZXNuJ3QKKyAgICAgICAgYXBwZWFyIHRvIGJlIGEgY29t
cGlsZSB0aW1lIGltcHJvdmVtZW50IGJ1dCBpdCBjb3VsZCBiZSB2YWx1YWJsZSBpbiB0aGUgZnV0
dXJlLgorCisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAgICAgKEpTQzo6QjM6Om9wY29k
ZUZvckNvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpQcm9jZWR1cmU6OmFkZENvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVy
ZS5oOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QjNJUkdlbmVyYXRvcjo6Y29uc3RhbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjppbnNlcnRDb25zdGFudHMpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJh
dG9yOjphZGRDb25zdGFudCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmR1
bXApOgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAoSlND
OjpXYXNtOjpCM0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tzRm9yTW9kT3JEaXYpOgorICAgICAgICAo
SlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjp6ZXJvRm9yVHlwZSk6IERlbGV0ZWQuCisgICAgICAg
ICogd2FzbS9nZW5lcmF0ZVdhc21CM0lSR2VuZXJhdG9ySW5saW5lc0hlYWRlci5weToKKyAgICAg
ICAgKGdlbmVyYXRlQ29uc3RDb2RlKToKKwogMjAxNy0wMy0yOSAgSkYgQmFzdGllbiAgPGpmYmFz
dGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHk6IGFkZCBzaGVsbC1vbmx5IE1l
bW9yeSBtb2RlIGhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAppbmRleCA3Nzcx
NWZlMzM5OGJhYTJhMjc4ZWNhOGQ3YjY2NmM1MzgzNDIyNzZkLi45ZDA5MGZiYWY5ZjlmNGNiYzQx
MWI0NmJiYjYwMDE2MTg2ODRlNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApA
QCAtMzkxLDYgKzM5MSwxOCBAQCBpbmxpbmUgYm9vbCBpc0NvbnN0YW50KE9wY29kZSBvcGNvZGUp
CiAgICAgfQogfQogCitpbmxpbmUgT3Bjb2RlIG9wY29kZUZvckNvbnN0YW50KFR5cGUgdHlwZSkK
K3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEludDMyOiByZXR1cm4gQ29uc3QzMjsK
KyAgICBjYXNlIEludDY0OiByZXR1cm4gQ29uc3Q2NDsKKyAgICBjYXNlIEZsb2F0OiByZXR1cm4g
Q29uc3RGbG9hdDsKKyAgICBjYXNlIERvdWJsZTogcmV0dXJuIENvbnN0RG91YmxlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQor
CiBpbmxpbmUgYm9vbCBpc0RlZmluaXRlbHlUZXJtaW5hbChPcGNvZGUgb3Bjb2RlKQogewogICAg
IHN3aXRjaCAob3Bjb2RlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQcm9jZWR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNw
cAppbmRleCA4NTc5NTJjMTNjYTBhOGViM2QxMmRlZmI1ZDZkZDI3MjM2ZDEwOTk3Li4yNTVmNzJk
NmY3ZWQ5MTA4NmE3NzVmM2NiYzQ3ZmU3NjJkNTBjNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTg5LDYgKzg5LDcgQEAgVmFsdWUqIFByb2NlZHVyZTo6
Y2xvbmUoVmFsdWUqIHZhbHVlKQogICAgIHJldHVybiBtX3ZhbHVlcy5hZGQoV1RGTW92ZShjbG9u
ZSkpOwogfQogCisKIFZhbHVlKiBQcm9jZWR1cmU6OmFkZEludENvbnN0YW50KE9yaWdpbiBvcmln
aW4sIFR5cGUgdHlwZSwgaW50NjRfdCB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAg
LTExMSw2ICsxMTIsMjQgQEAgVmFsdWUqIFByb2NlZHVyZTo6YWRkSW50Q29uc3RhbnQoVmFsdWUq
IGxpa2VWYWx1ZSwgaW50NjRfdCB2YWx1ZSkKICAgICByZXR1cm4gYWRkSW50Q29uc3RhbnQobGlr
ZVZhbHVlLT5vcmlnaW4oKSwgbGlrZVZhbHVlLT50eXBlKCksIHZhbHVlKTsKIH0KIAorVmFsdWUq
IFByb2NlZHVyZTo6YWRkQ29uc3RhbnQoT3JpZ2luIG9yaWdpbiwgVHlwZSB0eXBlLCB1aW50NjRf
dCBiaXRzKQoreworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBJbnQzMjoKKyAgICAg
ICAgcmV0dXJuIGFkZDxDb25zdDMyVmFsdWU+KG9yaWdpbiwgc3RhdGljX2Nhc3Q8aW50MzJfdD4o
Yml0cykpOworICAgIGNhc2UgSW50NjQ6CisgICAgICAgIHJldHVybiBhZGQ8Q29uc3Q2NFZhbHVl
PihvcmlnaW4sIGJpdHMpOworICAgIGNhc2UgRmxvYXQ6CisgICAgICAgIHJldHVybiBhZGQ8Q29u
c3RGbG9hdFZhbHVlPihvcmlnaW4sIGJpdHdpc2VfY2FzdDxmbG9hdD4oc3RhdGljX2Nhc3Q8aW50
MzJfdD4oYml0cykpKTsKKyAgICBjYXNlIERvdWJsZToKKyAgICAgICAgcmV0dXJuIGFkZDxDb25z
dERvdWJsZVZhbHVlPihvcmlnaW4sIGJpdHdpc2VfY2FzdDxkb3VibGU+KGJpdHMpKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKIFZhbHVlKiBQcm9jZWR1cmU6OmFkZEJvdHRvbShP
cmlnaW4gb3JpZ2luLCBUeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGFkZEludENvbnN0YW50KG9y
aWdpbiwgdHlwZSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCmluZGV4
IGRjYjBjYWNjMmI0MGIxYmZiMDYyODY2YzkzYWNjNmI3ODI1MTNlYjMuLmNlOWYxNjg1NGIxYjgw
ZjlkNTQ2MjEwOTNkNzhiYjRiNzMzOGVmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1By
b2NlZHVyZS5oCkBAIC0xMTcsNiArMTE3LDkgQEAgcHVibGljOgogICAgIFZhbHVlKiBhZGRJbnRD
b25zdGFudChPcmlnaW4sIFR5cGUsIGludDY0X3QgdmFsdWUpOwogICAgIFZhbHVlKiBhZGRJbnRD
b25zdGFudChWYWx1ZSosIGludDY0X3QgdmFsdWUpOwogCisgICAgLy8gYml0cyBpcyBhIGJpdHdp
c2VfY2FzdCBvZiB0aGUgY29uc3RhbnQgeW91IHdhbnQuCisgICAgVmFsdWUqIGFkZENvbnN0YW50
KE9yaWdpbiwgVHlwZSwgdWludDY0X3QgYml0cyk7CisKICAgICAvLyBZb3UncmUgZ3VhcmFudGVl
ZCB0aGF0IGJvdHRvbSBpcyB6ZXJvLgogICAgIFZhbHVlKiBhZGRCb3R0b20oT3JpZ2luLCBUeXBl
KTsKICAgICBWYWx1ZSogYWRkQm90dG9tKFZhbHVlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggYjlmMzYxNTNmYjRmZDczMGU2
ODkxNTVkYjBkZjYwMzVlMjFkY2Q4NC4uNDUwNzQwYWI2YzFiYWQ1MTgwYWJiOTJiNDdjNDJmZTEw
MWRiMGQyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcApAQCAtMzUsMTEgKzM1LDEzIEBACiAjaW5jbHVkZSAiQjNDb25zdFB0clZhbHVl
LmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKICNpbmNsdWRlICJCM0dlbmVyYXRlLmgiCisjaW5j
bHVkZSAiQjNJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM1Nsb3RCYXNlVmFsdWUuaCIKICNp
bmNsdWRlICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzU3dpdGNo
VmFsdWUuaCIKICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJCM1ZhbHVlS2V5LmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZS5oIgog
I2luY2x1ZGUgIkIzVmFyaWFibGVWYWx1ZS5oIgogI2luY2x1ZGUgIkIzV2FzbUFkZHJlc3NWYWx1
ZS5oIgpAQCAtMjA3LDYgKzIwOSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoY29uc3QgVmVj
dG9yPENvbnRyb2xFbnRyeT4mIGNvbnRyb2xTdGFjaywgY29uc3QgRXhwcmVzc2lvbkxpc3QqIGV4
cHJlc3Npb25TdGFjayk7CiAgICAgdm9pZCBzZXRQYXJzZXIoRnVuY3Rpb25QYXJzZXI8QjNJUkdl
bmVyYXRvcj4qIHBhcnNlcikgeyBtX3BhcnNlciA9IHBhcnNlcjsgfTsKIAorICAgIFZhbHVlKiBj
b25zdGFudChCMzo6VHlwZSwgdWludDY0X3QgYml0cyk7CisgICAgdm9pZCBpbnNlcnRDb25zdGFu
dHMoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGVtaXRFeGNlcHRpb25DaGVjayhDQ2FsbEhlbHBl
cnMmLCBFeGNlcHRpb25UeXBlKTsKIApAQCAtMjE3LDcgKzIyMiw2IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHVuaWZ5KFZhcmlhYmxlKiB0YXJnZXQsIGNvbnN0IEV4cHJlc3Npb25UeXBlIHNvdXJj
ZSk7CiAgICAgdm9pZCB1bmlmeVZhbHVlc1dpdGhCbG9jayhjb25zdCBFeHByZXNzaW9uTGlzdCYg
cmVzdWx0U3RhY2ssIFJlc3VsdExpc3QmIHN0YWNrKTsKLSAgICBWYWx1ZSogemVyb0ZvclR5cGUo
VHlwZSk7CiAKICAgICB2b2lkIGVtaXRDaGVja3NGb3JNb2RPckRpdihCMzo6T3Bjb2RlLCBFeHBy
ZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdodCk7CiAKQEAgLTIzNSwxMCArMjM5
LDExIEBAIHByaXZhdGU6CiAgICAgQmFzaWNCbG9jayogbV9jdXJyZW50QmxvY2s7CiAgICAgVmVj
dG9yPFZhcmlhYmxlKj4gbV9sb2NhbHM7CiAgICAgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNh
bGw+JiBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzOyAvLyBMaXN0IGVhY2ggY2FsbCBzaXRlIGFu
ZCB0aGUgZnVuY3Rpb24gaW5kZXggd2hvc2UgYWRkcmVzcyBpdCBzaG91bGQgYmUgcGF0Y2hlZCB3
aXRoLgorICAgIEhhc2hNYXA8VmFsdWVLZXksIFZhbHVlKj4gbV9jb25zdGFudFBvb2w7CisgICAg
SW5zZXJ0aW9uU2V0IG1fY29uc3RhbnRJbnNlcnRpb25WYWx1ZXM7CiAgICAgR1BSUmVnIG1fbWVt
b3J5QmFzZUdQUjsKICAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BSOwogICAgIEdQUlJlZyBtX3dh
c21Db250ZXh0R1BSOwotICAgIFZhbHVlKiBtX3plcm9WYWx1ZXNbbnVtVHlwZXNdOwogICAgIFZh
bHVlKiBtX2luc3RhbmNlVmFsdWU7IC8vIEZJWE1FOiBtYWtlIHRoaXMgbGF6eSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzkyCiB9OwogCkBAIC0zMDIsMjMgKzMw
NywxMCBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxl
SW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcAogICAgICwgbV9tb2RlKG1vZGUpCiAgICAg
LCBtX3Byb2MocHJvY2VkdXJlKQogICAgICwgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxscyh1bmxp
bmtlZFdhc21Ub1dhc21DYWxscykKKyAgICAsIG1fY29uc3RhbnRJbnNlcnRpb25WYWx1ZXMobV9w
cm9jKQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CiAKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVHlwZXM7ICsraSkgewotICAgICAgICBzd2l0Y2gg
KEIzOjpUeXBlIGIzVHlwZSA9IHRvQjNUeXBlKGxpbmVhcml6ZWRUb1R5cGUoaSkpKSB7Ci0gICAg
ICAgIGNhc2UgQjM6OkludDMyOgotICAgICAgICBjYXNlIEIzOjpJbnQ2NDoKLSAgICAgICAgY2Fz
ZSBCMzo6RmxvYXQ6Ci0gICAgICAgIGNhc2UgQjM6OkRvdWJsZToKLSAgICAgICAgICAgIG1femVy
b1ZhbHVlc1tpXSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIE9y
aWdpbigpLCBiM1R5cGUsIDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQjM6
OlZvaWQ6Ci0gICAgICAgICAgICBtX3plcm9WYWx1ZXNbaV0gPSBudWxscHRyOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBGSVhNRSB3ZSBkb24ndCByZWFs
bHkgbmVlZCB0byBwaW4gcmVnaXN0ZXJzIGhlcmUgaWYgdGhlcmUncyBubyBtZW1vcnkuIEl0IG1h
a2VzIHdhc20gLT4gd2FzbSB0aHVua3Mgc2ltcGxlciBmb3Igbm93LiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjIzCiAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJ
bmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKICAgICBtX21lbW9y
eUJhc2VHUFIgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwpAQCAtMzg5LDEyICszODEs
MTkgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjplbWl0RXhjZXB0aW9uQ2hlY2soQ0NhbGxIZWxwZXJz
JiBqaXQsIEV4Y2VwdGlvblR5cGUgdHlwZSkKICAgICB9KTsKIH0KIAotVmFsdWUqIEIzSVJHZW5l
cmF0b3I6Onplcm9Gb3JUeXBlKFR5cGUgdHlwZSkKK1ZhbHVlKiBCM0lSR2VuZXJhdG9yOjpjb25z
dGFudChCMzo6VHlwZSB0eXBlLCB1aW50NjRfdCBiaXRzKQoreworICAgIGF1dG8gcmVzdWx0ID0g
bV9jb25zdGFudFBvb2wuZW5zdXJlKFZhbHVlS2V5KG9wY29kZUZvckNvbnN0YW50KHR5cGUpLCB0
eXBlLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihiaXRzKSksIFsmXSB7CisgICAgICAgIFZhbHVlKiBy
ZXN1bHQgPSBtX3Byb2MuYWRkQ29uc3RhbnQob3JpZ2luKCksIHR5cGUsIGJpdHMpOworICAgICAg
ICBtX2NvbnN0YW50SW5zZXJ0aW9uVmFsdWVzLmluc2VydFZhbHVlKDAsIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7Cit9CisKK3ZvaWQgQjNJUkdlbmVyYXRvcjo6aW5zZXJ0Q29uc3RhbnRzKCkKIHsKLSAg
ICBBU1NFUlQodHlwZSAhPSBWb2lkKTsKLSAgICBWYWx1ZSogemVyb1ZhbHVlID0gbV96ZXJvVmFs
dWVzW2xpbmVhcml6ZVR5cGUodHlwZSldOwotICAgIEFTU0VSVCh6ZXJvVmFsdWUpOwotICAgIHJl
dHVybiB6ZXJvVmFsdWU7CisgICAgbV9jb25zdGFudEluc2VydGlvblZhbHVlcy5leGVjdXRlKG1f
cHJvYy5hdCgwKSk7CiB9CiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBl
LCB1aW50MzJfdCBjb3VudCkgLT4gUGFydGlhbFJlc3VsdApAQCAtNDA0LDcgKzQwMyw3IEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkgLT4g
UGFydGlhbFJlc3VsdAogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7
CiAgICAgICAgIFZhcmlhYmxlKiBsb2NhbCA9IG1fcHJvYy5hZGRWYXJpYWJsZSh0b0IzVHlwZSh0
eXBlKSk7CiAgICAgICAgIG1fbG9jYWxzLnVuY2hlY2tlZEFwcGVuZChsb2NhbCk7Ci0gICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBTZXQsIG9y
aWdpbigpLCBsb2NhbCwgemVyb0ZvclR5cGUodHlwZSkpOworICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgU2V0LCBvcmlnaW4oKSwgbG9jYWws
IGFkZENvbnN0YW50KHR5cGUsIDApKTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTY0
NCw3ICs2NDMsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmxvYWQoTG9hZE9wVHlwZSBvcCwgRXhw
cmVzc2lvblR5cGUgcG9pbnRlciwgRXhwcmVzc2lvblR5cGUmCiAgICAgICAgIGNhc2UgTG9hZE9w
VHlwZTo6STMyTG9hZDoKICAgICAgICAgY2FzZSBMb2FkT3BUeXBlOjpJMzJMb2FkMTZVOgogICAg
ICAgICBjYXNlIExvYWRPcFR5cGU6OkkzMkxvYWQ4VToKLSAgICAgICAgICAgIHJlc3VsdCA9IHpl
cm9Gb3JUeXBlKEkzMik7CisgICAgICAgICAgICByZXN1bHQgPSBjb25zdGFudChJbnQzMiwgMCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMb2FkT3BUeXBlOjpJNjRMb2FkOFM6
CiAgICAgICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDhVOgpAQCAtNjUzLDEzICs2NTIsMTMg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjpsb2FkKExvYWRPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBl
IHBvaW50ZXIsIEV4cHJlc3Npb25UeXBlJgogICAgICAgICBjYXNlIExvYWRPcFR5cGU6Okk2NExv
YWQzMlM6CiAgICAgICAgIGNhc2UgTG9hZE9wVHlwZTo6STY0TG9hZDoKICAgICAgICAgY2FzZSBM
b2FkT3BUeXBlOjpJNjRMb2FkMTZVOgotICAgICAgICAgICAgcmVzdWx0ID0gemVyb0ZvclR5cGUo
STY0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0YW50KEludDY0LCAwKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIExvYWRPcFR5cGU6OkYzMkxvYWQ6Ci0gICAgICAgICAg
ICByZXN1bHQgPSB6ZXJvRm9yVHlwZShGMzIpOworICAgICAgICAgICAgcmVzdWx0ID0gY29uc3Rh
bnQoRmxvYXQsIDApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTG9hZE9wVHlw
ZTo6RjY0TG9hZDoKLSAgICAgICAgICAgIHJlc3VsdCA9IHplcm9Gb3JUeXBlKEY2NCk7CisgICAg
ICAgICAgICByZXN1bHQgPSBjb25zdGFudChEb3VibGUsIDApOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIApAQCAtNzQ4LDIyICs3NDcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFk
ZFNlbGVjdChFeHByZXNzaW9uVHlwZSBjb25kaXRpb24sIEV4cHJlc3Npb25UeXBlIG5vblplcm8s
CiAKIEIzSVJHZW5lcmF0b3I6OkV4cHJlc3Npb25UeXBlIEIzSVJHZW5lcmF0b3I6OmFkZENvbnN0
YW50KFR5cGUgdHlwZSwgdWludDY0X3QgdmFsdWUpCiB7Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBXYXNtOjpJMzI6Ci0gICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4o
dmFsdWUpKTsKLSAgICBjYXNlIFdhc206Okk2NDoKLSAgICAgICAgcmV0dXJuIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7Ci0g
ICAgY2FzZSBXYXNtOjpGMzI6Ci0gICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PENvbnN0RmxvYXRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgYml0d2lzZV9jYXN0PGZsb2F0
PihzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSkpKTsKLSAgICBjYXNlIFdhc206OkY2NDoKLSAg
ICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4o
bV9wcm9jLCBvcmlnaW4oKSwgYml0d2lzZV9jYXN0PGRvdWJsZT4odmFsdWUpKTsKLSAgICBjYXNl
IFdhc206OlZvaWQ6Ci0gICAgY2FzZSBXYXNtOjpGdW5jOgotICAgIGNhc2UgV2FzbTo6QW55ZnVu
YzoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbnN0YW50KHRvQjNUeXBlKHR5
cGUpLCB2YWx1ZSk7CiB9CiAKIEIzSVJHZW5lcmF0b3I6OkNvbnRyb2xEYXRhIEIzSVJHZW5lcmF0
b3I6OmFkZFRvcExldmVsKFR5cGUgc2lnbmF0dXJlKQpAQCAtMTAwNyw3ICs5OTEsNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVy
ZSwgU2lnbmF0dXJlSW5kZXggcwogICAgIC8vIENvbXB1dGUgdGhlIG9mZnNldCBpbiB0aGUgdGFi
bGUgaW5kZXggc3BhY2Ugd2UgYXJlIGxvb2tpbmcgZm9yLgogICAgIEV4cHJlc3Npb25UeXBlIG9m
ZnNldCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTXVsLCBvcmln
aW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBa
RXh0MzIsIG9yaWdpbigpLCBjYWxsZWVJbmRleCksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmRJbnRDb25zdGFudChtX3Byb2MsIG9yaWdpbigpLCBwb2ludGVyVHlwZSgpLCBzaXplb2Yo
Q2FsbGFibGVGdW5jdGlvbikpKTsKKyAgICAgICAgY29uc3RhbnQocG9pbnRlclR5cGUoKSwgc2l6
ZW9mKENhbGxhYmxlRnVuY3Rpb24pKSk7CiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGFibGVGdW5j
dGlvbiA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBvcmln
aW4oKSwgY2FsbGFibGVGdW5jdGlvbkJ1ZmZlciwgb2Zmc2V0KTsKIAogICAgIC8vIENoZWNrIHRo
YXQgdGhlIENhbGxhYmxlRnVuY3Rpb24gaXMgaW5pdGlhbGl6ZWQuIFdlIHRyYXAgaWYgaXQgaXNu
J3QuIEFuICJpbnZhbGlkIiBTaWduYXR1cmVJbmRleCBpbmRpY2F0ZXMgaXQncyBub3QgaW5pdGlh
bGl6ZWQuCkBAIC0xMDc5LDYgKzEwNjMsMTAgQEAgc3RhdGljIHZvaWQgZHVtcEV4cHJlc3Npb25T
dGFjayhjb25zdCBDb21tYVByaW50ZXImIGNvbW1hLCBjb25zdCBCM0lSR2VuZXJhdG9yOjoKIAog
dm9pZCBCM0lSR2VuZXJhdG9yOjpkdW1wKGNvbnN0IFZlY3RvcjxDb250cm9sRW50cnk+JiBjb250
cm9sU3RhY2ssIGNvbnN0IEV4cHJlc3Npb25MaXN0KiBleHByZXNzaW9uU3RhY2spCiB7CisgICAg
ZGF0YUxvZ0xuKCJDb25zdGFudHM6Iik7CisgICAgZm9yIChjb25zdCBhdXRvJiBjb25zdGFudCA6
IG1fY29uc3RhbnRQb29sKQorICAgICAgICBkYXRhTG9nTG4oZGVlcER1bXAobV9wcm9jLCBjb25z
dGFudC52YWx1ZSkpOworCiAgICAgZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIEdyYXBoOiIpOwogICAg
IGRhdGFMb2cobV9wcm9jKTsKICAgICBkYXRhTG9nTG4oIldpdGggY3VycmVudCBibG9jazoiLCAq
bV9jdXJyZW50QmxvY2spOwpAQCAtMTI5Miw2ICsxMjgwLDggQEAgRXhwZWN0ZWQ8c3RkOjp1bmlx
dWVfcHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoVk0m
IHZtLAogICAgIEZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+IHBhcnNlcigmdm0sIGNvbnRl
eHQsIGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1cmUsIGluZm8sIG1vZHVs
ZVNpZ25hdHVyZUluZGljZXNUb1VuaXF1ZWRTaWduYXR1cmVJbmRpY2VzKTsKICAgICBXQVNNX0ZB
SUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlci5wYXJzZSgpKTsKIAorICAgIGNvbnRleHQuaW5zZXJ0
Q29uc3RhbnRzKCk7CisKICAgICBwcm9jZWR1cmUucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICBp
ZiAoIUFTU0VSVF9ESVNBQkxFRCkKICAgICAgICAgdmFsaWRhdGUocHJvY2VkdXJlLCAiQWZ0ZXIg
cGFyc2luZzpcbiIpOwpAQCAtMTMyMCw4ICsxMzEwLDcgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpl
bWl0Q2hlY2tzRm9yTW9kT3JEaXYoQjM6Ok9wY29kZSBvcGVyYXRpb24sIEV4cHJlc3Npb25UeXBl
IGwKIAogICAgIHsKICAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sgPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLAotICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2lu
KCksIHJpZ2h0LAotICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmRJbnRDb25z
dGFudChtX3Byb2MsIG9yaWdpbigpLCB0eXBlLCAwKSkpOworICAgICAgICAgICAgbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIHJpZ2h0LCBj
b25zdGFudCh0eXBlLCAwKSkpOwogCiAgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsK
ICAgICAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6
OkRpdmlzaW9uQnlaZXJvKTsKQEAgLTEzMzMsMTAgKzEzMjIsOCBAQCB2b2lkIEIzSVJHZW5lcmF0
b3I6OmVtaXRDaGVja3NGb3JNb2RPckRpdihCMzo6T3Bjb2RlIG9wZXJhdGlvbiwgRXhwcmVzc2lv
blR5cGUgbAogCiAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQml0QW5kLCBvcmlnaW4o
KSwKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIEVxdWFsLCBvcmlnaW4oKSwgbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50
QmxvY2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgb3JpZ2luKCksIHR5cGUsIG1pbikpLAot
ICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
RXF1YWwsIG9yaWdpbigpLCByaWdodCwKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgb3JpZ2luKCksIHR5cGUsIC0xKSkpKTsKKyAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVx
dWFsLCBvcmlnaW4oKSwgbGVmdCwgY29uc3RhbnQodHlwZSwgbWluKSksCisgICAgICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2lu
KCksIHJpZ2h0LCBjb25zdGFudCh0eXBlLCAtMSkpKSk7CiAKICAgICAgICAgY2hlY2stPnNldEdl
bmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJikgewogICAgICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwg
RXhjZXB0aW9uVHlwZTo6SW50ZWdlck92ZXJmbG93KTsKQEAgLTE1NTksMTIgKzE1NDYsMTIgQEAg
YXV0byBCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkYzMlRydW5jPihFeHByZXNzaW9uVHlw
ZSBhcmcsIEV4cHJlc3Npb25UeXBlJgogdGVtcGxhdGU8PgogYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRPcDxPcFR5cGU6OkkzMlRydW5jU0Y2ND4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgVmFsdWUqIG1heCA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
LXN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkp
KTsKLSAgICBWYWx1ZSogbWluID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdERvdWJs
ZVZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1pbigpKSk7CisgICAgVmFsdWUqIG1heCA9IGNvbnN0YW50KERv
dWJsZSwgYml0d2lzZV9jYXN0PHVpbnQ2NF90Pigtc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkpKTsKKyAgICBWYWx1ZSogbWluID0gY29uc3Rh
bnQoRG91YmxlLCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4oc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKSk7CiAgICAgVmFsdWUqIG91dE9mQm91
bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCaXRBbmQsIG9y
aWdpbigpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IExlc3NUaGFuLCBvcmlnaW4oKSwgYXJnLCBtYXgpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEdyZWF0ZXJFcXVhbCwgb3JpZ2luKCksIGFyZywgbWlu
KSk7Ci0gICAgb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPiht
X3Byb2MsIEVxdWFsLCBvcmlnaW4oKSwgb3V0T2ZCb3VuZHMsIHplcm9Gb3JUeXBlKEkzMikpOwor
ICAgIG91dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBFcXVhbCwgb3JpZ2luKCksIG91dE9mQm91bmRzLCBjb25zdGFudChJbnQzMiwgMCkpOwogICAg
IENoZWNrVmFsdWUqIHRyYXAgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+
KG1fcHJvYywgQ2hlY2ssIG9yaWdpbigpLCBvdXRPZkJvdW5kcyk7CiAgICAgdHJhcC0+c2V0R2Vu
ZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9u
VHlwZTo6T3V0T2ZCb3VuZHNUcnVuYyk7CkBAIC0xNTgyLDEyICsxNTY5LDEyIEBAIGF1dG8gQjNJ
UkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJMzJUcnVuY1NGNjQ+KEV4cHJlc3Npb25UeXBlIGFy
ZywgRXhwcmVzc2lvblR5CiB0ZW1wbGF0ZTw+CiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9w
VHlwZTo6STMyVHJ1bmNTRjMyPihFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBWYWx1ZSogbWF4ID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIC1zdGF0aWNf
Y2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpKTsKLSAgICBW
YWx1ZSogbWluID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KG1f
cHJvYywgb3JpZ2luKCksIHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptaW4oKSkpOworICAgIFZhbHVlKiBtYXggPSBjb25zdGFudChGbG9hdCwgYml0d2lz
ZV9jYXN0PHVpbnQzMl90Pigtc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1pbigpKSkpOworICAgIFZhbHVlKiBtaW4gPSBjb25zdGFudChGbG9hdCwgYml0
d2lzZV9jYXN0PHVpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWluKCkpKSk7CiAgICAgVmFsdWUqIG91dE9mQm91bmRzID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCaXRBbmQsIG9yaWdpbigpLAogICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIExlc3NUaGFuLCBvcmln
aW4oKSwgYXJnLCBtYXgpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEdyZWF0ZXJFcXVhbCwgb3JpZ2luKCksIGFyZywgbWluKSk7Ci0gICAgb3V0T2ZC
b3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBv
cmlnaW4oKSwgb3V0T2ZCb3VuZHMsIHplcm9Gb3JUeXBlKEkzMikpOworICAgIG91dE9mQm91bmRz
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2lu
KCksIG91dE9mQm91bmRzLCBjb25zdGFudChJbnQzMiwgMCkpOwogICAgIENoZWNrVmFsdWUqIHRy
YXAgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ss
IG9yaWdpbigpLCBvdXRPZkJvdW5kcyk7CiAgICAgdHJhcC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAg
ICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3Vu
ZHNUcnVuYyk7CkBAIC0xNjA2LDEyICsxNTkzLDEyIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
T3A8T3BUeXBlOjpJMzJUcnVuY1NGMzI+KEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5
CiB0ZW1wbGF0ZTw+CiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STMyVHJ1bmNV
RjY0PihFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
YWxSZXN1bHQKIHsKLSAgICBWYWx1ZSogbWF4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdERvdWJsZVZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSAqIC0yLjApOwotICAgIFZhbHVlKiBt
aW4gPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KG1fcHJvYywg
b3JpZ2luKCksIC0xLjApOworICAgIFZhbHVlKiBtYXggPSBjb25zdGFudChEb3VibGUsIGJpdHdp
c2VfY2FzdDx1aW50NjRfdD4oc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptaW4oKSkgKiAtMi4wKSk7CisgICAgVmFsdWUqIG1pbiA9IGNvbnN0YW50KERv
dWJsZSwgYml0d2lzZV9jYXN0PHVpbnQ2NF90PigtMS4wKSk7CiAgICAgVmFsdWUqIG91dE9mQm91
bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCaXRBbmQsIG9y
aWdpbigpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IExlc3NUaGFuLCBvcmlnaW4oKSwgYXJnLCBtYXgpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEdyZWF0ZXJUaGFuLCBvcmlnaW4oKSwgYXJnLCBtaW4p
KTsKLSAgICBvdXRPZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1f
cHJvYywgRXF1YWwsIG9yaWdpbigpLCBvdXRPZkJvdW5kcywgemVyb0ZvclR5cGUoSTMyKSk7Cisg
ICAgb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2Ms
IEVxdWFsLCBvcmlnaW4oKSwgb3V0T2ZCb3VuZHMsIGNvbnN0YW50KEludDMyLCAwKSk7CiAgICAg
Q2hlY2tWYWx1ZSogdHJhcCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4o
bV9wcm9jLCBDaGVjaywgb3JpZ2luKCksIG91dE9mQm91bmRzKTsKICAgICB0cmFwLT5zZXRHZW5l
cmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJikgewogICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25U
eXBlOjpPdXRPZkJvdW5kc1RydW5jKTsKQEAgLTE2MjksMTIgKzE2MTYsMTIgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6OkkzMlRydW5jVUY2ND4oRXhwcmVzc2lvblR5cGUgYXJn
LCBFeHByZXNzaW9uVHkKIHRlbXBsYXRlPD4KIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BU
eXBlOjpJMzJUcnVuY1VGMzI+KEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIFZhbHVlKiBtYXggPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKSAqIC0yLjApOwot
ICAgIFZhbHVlKiBtaW4gPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgLTEuMCk7CisgICAgVmFsdWUqIG1heCA9IGNvbnN0YW50KEZs
b2F0LCBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkgKiBzdGF0aWNfY2FzdDxmbG9hdD4oLTIuMCkpKTsK
KyAgICBWYWx1ZSogbWluID0gY29uc3RhbnQoRmxvYXQsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KC0xLjApKSk7CiAgICAgVmFsdWUqIG91dE9mQm91bmRzID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBCaXRBbmQsIG9yaWdpbigpLAog
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIExlc3NUaGFu
LCBvcmlnaW4oKSwgYXJnLCBtYXgpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PFZhbHVlPihtX3Byb2MsIEdyZWF0ZXJUaGFuLCBvcmlnaW4oKSwgYXJnLCBtaW4pKTsKLSAgICBv
dXRPZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1
YWwsIG9yaWdpbigpLCBvdXRPZkJvdW5kcywgemVyb0ZvclR5cGUoSTMyKSk7CisgICAgb3V0T2ZC
b3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBv
cmlnaW4oKSwgb3V0T2ZCb3VuZHMsIGNvbnN0YW50KEludDMyLCAwKSk7CiAgICAgQ2hlY2tWYWx1
ZSogdHJhcCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBD
aGVjaywgb3JpZ2luKCksIG91dE9mQm91bmRzKTsKICAgICB0cmFwLT5zZXRHZW5lcmF0b3IoWz1d
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewog
ICAgICAgICB0aGlzLT5lbWl0RXhjZXB0aW9uQ2hlY2soaml0LCBFeGNlcHRpb25UeXBlOjpPdXRP
ZkJvdW5kc1RydW5jKTsKQEAgLTE2NTIsMTIgKzE2MzksMTIgQEAgYXV0byBCM0lSR2VuZXJhdG9y
OjphZGRPcDxPcFR5cGU6OkkzMlRydW5jVUYzMj4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNz
aW9uVHkKIHRlbXBsYXRlPD4KIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkT3A8T3BUeXBlOjpJNjRU
cnVuY1NGNjQ+KEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4g
UGFydGlhbFJlc3VsdAogewotICAgIFZhbHVlKiBtYXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PENvbnN0RG91YmxlVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIC1zdGF0aWNfY2FzdDxkb3Vi
bGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSk7Ci0gICAgVmFsdWUqIG1p
biA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4obV9wcm9jLCBv
cmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptaW4oKSkpOworICAgIFZhbHVlKiBtYXggPSBjb25zdGFudChEb3VibGUsIGJpdHdpc2VfY2Fz
dDx1aW50NjRfdD4oLXN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2
NF90Pjo6bWluKCkpKSk7CisgICAgVmFsdWUqIG1pbiA9IGNvbnN0YW50KERvdWJsZSwgYml0d2lz
ZV9jYXN0PHVpbnQ2NF90PihzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1pbigpKSkpOwogICAgIFZhbHVlKiBvdXRPZkJvdW5kcyA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQml0QW5kLCBvcmlnaW4oKSwKICAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBMZXNzVGhhbiwgb3JpZ2lu
KCksIGFyZywgbWF4KSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBHcmVhdGVyRXF1YWwsIG9yaWdpbigpLCBhcmcsIG1pbikpOwotICAgIG91dE9mQm91
bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3Jp
Z2luKCksIG91dE9mQm91bmRzLCB6ZXJvRm9yVHlwZShJMzIpKTsKKyAgICBvdXRPZkJvdW5kcyA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigp
LCBvdXRPZkJvdW5kcywgY29uc3RhbnQoSW50MzIsIDApKTsKICAgICBDaGVja1ZhbHVlKiB0cmFw
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBv
cmlnaW4oKSwgb3V0T2ZCb3VuZHMpOwogICAgIHRyYXAtPnNldEdlbmVyYXRvcihbPV0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAg
IHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRz
VHJ1bmMpOwpAQCAtMTY3NSwyOCArMTY2MiwyOCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9w
PE9wVHlwZTo6STY0VHJ1bmNTRjY0PihFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeQog
dGVtcGxhdGU8PgogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jVUY2
ND4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFs
UmVzdWx0CiB7Ci0gICAgVmFsdWUqIG1heCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29u
c3REb3VibGVWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkgKiAtMi4wKTsKLSAgICBWYWx1ZSogbWlu
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihtX3Byb2MsIG9y
aWdpbigpLCAtMS4wKTsKKyAgICBWYWx1ZSogbWF4ID0gY29uc3RhbnQoRG91YmxlLCBiaXR3aXNl
X2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ2NF90Pjo6bWluKCkpICogLTIuMCkpOworICAgIFZhbHVlKiBtaW4gPSBjb25zdGFudChEb3Vi
bGUsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oLTEuMCkpOwogICAgIFZhbHVlKiBvdXRPZkJvdW5k
cyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQml0QW5kLCBvcmln
aW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBM
ZXNzVGhhbiwgb3JpZ2luKCksIGFyZywgbWF4KSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGFyZywgbWluKSk7
Ci0gICAgb3V0T2ZCb3VuZHMgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIEVxdWFsLCBvcmlnaW4oKSwgb3V0T2ZCb3VuZHMsIHplcm9Gb3JUeXBlKEkzMikpOworICAg
IG91dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBF
cXVhbCwgb3JpZ2luKCksIG91dE9mQm91bmRzLCBjb25zdGFudChJbnQzMiwgMCkpOwogICAgIENo
ZWNrVmFsdWUqIHRyYXAgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1f
cHJvYywgQ2hlY2ssIG9yaWdpbigpLCBvdXRPZkJvdW5kcyk7CiAgICAgdHJhcC0+c2V0R2VuZXJh
dG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYpIHsKICAgICAgICAgdGhpcy0+ZW1pdEV4Y2VwdGlvbkNoZWNrKGppdCwgRXhjZXB0aW9uVHlw
ZTo6T3V0T2ZCb3VuZHNUcnVuYyk7CiAgICAgfSk7CiAKLSAgICBWYWx1ZSogY29uc3RhbnQ7Cisg
ICAgVmFsdWUqIHNpZ25CaXRDb25zdGFudDsKICAgICBpZiAoaXNYODYoKSkgewogICAgICAgICAv
LyBTaW5jZSB4ODYgZG9lc24ndCBoYXZlIGFuIGluc3RydWN0aW9uIHRvIGNvbnZlcnQgZmxvYXRp
bmcgcG9pbnRzIHRvIHVuc2lnbmVkIGludGVnZXJzLCB3ZSBhdCBsZWFzdCB0cnkgdG8gZG8gdGhl
IHNtYXJ0IHRoaW5nIGlmCiAgICAgICAgIC8vIHRoZSBudW1iZXJzIGFyZSB3b3VsZCBiZSBwb3Np
dGl2ZSBhbnl3YXkgYXMgYSBzaWduZWQgaW50ZWdlci4gU2luY2Ugd2UgY2Fubm90IG1hdGVyaWFs
aXplIGNvbnN0YW50cyBpbnRvIGZwcnMgd2UgaGF2ZSBiMyBkbyBpdAogICAgICAgICAvLyBzbyB3
ZSBjYW4gcG9vbCB0aGVtIGlmIG5lZWRlZC4KLSAgICAgICAgY29uc3RhbnQgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHN0YXRp
Y19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIC0gc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpKTsKKyAgICAgICAgc2lnbkJpdENvbnN0
YW50ID0gY29uc3RhbnQoRG91YmxlLCBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHN0YXRpY19jYXN0
PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpIC0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpKSk7CiAgICAgfQogICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVl
PihtX3Byb2MsIEludDY0LCBvcmlnaW4oKSk7CiAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGFyZywg
VmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CiAgICAgaWYgKGlzWDg2KCkpIHsKLSAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKGNvbnN0YW50LCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKHNpZ25CaXRDb25zdGFudCwgVmFsdWVSZXA6OlNvbWVSZWdp
c3Rlcik7CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CiAg
ICAgfQogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewpAQCAtMTcxNywxMiAr
MTcwNCwxMiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNVRjY0
PihFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeQogdGVtcGxhdGU8PgogYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRPcDxPcFR5cGU6Okk2NFRydW5jU0YzMj4oRXhwcmVzc2lvblR5cGUgYXJn
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgVmFsdWUq
IG1heCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihtX3Byb2Ms
IG9yaWdpbigpLCAtc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRf
dD46Om1pbigpKSk7Ci0gICAgVmFsdWUqIG1pbiA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3RGbG9hdFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBzdGF0aWNfY2FzdDxmbG9hdD4oc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpKTsKKyAgICBWYWx1ZSogbWF4ID0gY29u
c3RhbnQoRmxvYXQsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oLXN0YXRpY19jYXN0PGZsb2F0Pihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkpKTsKKyAgICBWYWx1ZSogbWluID0g
Y29uc3RhbnQoRmxvYXQsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSkpOwogICAgIFZhbHVlKiBvdXRP
ZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQml0QW5k
LCBvcmlnaW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBMZXNzVGhhbiwgb3JpZ2luKCksIGFyZywgbWF4KSwKICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBHcmVhdGVyRXF1YWwsIG9yaWdpbigpLCBhcmcs
IG1pbikpOwotICAgIG91dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksIG91dE9mQm91bmRzLCB6ZXJvRm9yVHlwZShJMzIp
KTsKKyAgICBvdXRPZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1f
cHJvYywgRXF1YWwsIG9yaWdpbigpLCBvdXRPZkJvdW5kcywgY29uc3RhbnQoSW50MzIsIDApKTsK
ICAgICBDaGVja1ZhbHVlKiB0cmFwID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1Zh
bHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwgb3V0T2ZCb3VuZHMpOwogICAgIHRyYXAtPnNl
dEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmKSB7CiAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2Vw
dGlvblR5cGU6Ok91dE9mQm91bmRzVHJ1bmMpOwpAQCAtMTc0MCwyOCArMTcyNywyOCBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZE9wPE9wVHlwZTo6STY0VHJ1bmNTRjMyPihFeHByZXNzaW9uVHlw
ZSBhcmcsIEV4cHJlc3Npb25UeQogdGVtcGxhdGU8PgogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRP
cDxPcFR5cGU6Okk2NFRydW5jVUYzMj4oRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgVmFsdWUqIG1heCA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBzdGF0
aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpICogLTIu
MCk7Ci0gICAgVmFsdWUqIG1pbiA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RGbG9h
dFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCAtMS4wKTsKKyAgICBWYWx1ZSogbWF4ID0gY29uc3Rh
bnQoRmxvYXQsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKSAqIHN0YXRpY19jYXN0PGZsb2F0PigtMi4w
KSkpOworICAgIFZhbHVlKiBtaW4gPSBjb25zdGFudChGbG9hdCwgYml0d2lzZV9jYXN0PHVpbnQz
Ml90PihzdGF0aWNfY2FzdDxmbG9hdD4oLTEuMCkpKTsKICAgICBWYWx1ZSogb3V0T2ZCb3VuZHMg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEJpdEFuZCwgb3JpZ2lu
KCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTGVz
c1RoYW4sIG9yaWdpbigpLCBhcmcsIG1heCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8VmFsdWU+KG1fcHJvYywgR3JlYXRlclRoYW4sIG9yaWdpbigpLCBhcmcsIG1pbikpOwot
ICAgIG91dE9mQm91bmRzID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9j
LCBFcXVhbCwgb3JpZ2luKCksIG91dE9mQm91bmRzLCB6ZXJvRm9yVHlwZShJMzIpKTsKKyAgICBv
dXRPZkJvdW5kcyA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1
YWwsIG9yaWdpbigpLCBvdXRPZkJvdW5kcywgY29uc3RhbnQoSW50MzIsIDApKTsKICAgICBDaGVj
a1ZhbHVlKiB0cmFwID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3By
b2MsIENoZWNrLCBvcmlnaW4oKSwgb3V0T2ZCb3VuZHMpOwogICAgIHRyYXAtPnNldEdlbmVyYXRv
cihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
KSB7CiAgICAgICAgIHRoaXMtPmVtaXRFeGNlcHRpb25DaGVjayhqaXQsIEV4Y2VwdGlvblR5cGU6
Ok91dE9mQm91bmRzVHJ1bmMpOwogICAgIH0pOwogCi0gICAgVmFsdWUqIGNvbnN0YW50OworICAg
IFZhbHVlKiBzaWduQml0Q29uc3RhbnQ7CiAgICAgaWYgKGlzWDg2KCkpIHsKICAgICAgICAgLy8g
U2luY2UgeDg2IGRvZXNuJ3QgaGF2ZSBhbiBpbnN0cnVjdGlvbiB0byBjb252ZXJ0IGZsb2F0aW5n
IHBvaW50cyB0byB1bnNpZ25lZCBpbnRlZ2Vycywgd2UgYXQgbGVhc3QgdHJ5IHRvIGRvIHRoZSBz
bWFydCB0aGluZyBpZgotICAgICAgICAvLyB0aGUgbnVtYmVycyBhcmUgd291bGQgYmUgcG9zaXRp
dmUgYW55d2F5IGFzIGEgc2lnbmVkIGludGVnZXIuIFNpbmNlIHdlIGNhbm5vdCBtYXRlcmlhbGl6
ZSBjb25zdGFudHMgaW50byBmcHJzIHdlIGhhdmUgYjMgZG8gaXQKKyAgICAgICAgLy8gdGhlIG51
bWJlcnMgd291bGQgYmUgcG9zaXRpdmUgYW55d2F5IGFzIGEgc2lnbmVkIGludGVnZXIuIFNpbmNl
IHdlIGNhbm5vdCBtYXRlcmlhbGl6ZSBjb25zdGFudHMgaW50byBmcHJzIHdlIGhhdmUgYjMgZG8g
aXQKICAgICAgICAgLy8gc28gd2UgY2FuIHBvb2wgdGhlbSBpZiBuZWVkZWQuCi0gICAgICAgIGNv
bnN0YW50ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KG1fcHJv
Yywgb3JpZ2luKCksIHN0YXRpY19jYXN0PGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWF4KCkgLSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkpOworICAg
ICAgICBzaWduQml0Q29uc3RhbnQgPSBjb25zdGFudChGbG9hdCwgYml0d2lzZV9jYXN0PHVpbnQz
Ml90PihzdGF0aWNfY2FzdDxmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1h
eCgpIC0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpKSk7CiAgICAgfQogICAg
IFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
UGF0Y2hwb2ludFZhbHVlPihtX3Byb2MsIEludDY0LCBvcmlnaW4oKSk7CiAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CiAgICAgaWYgKGlzWDg2KCkp
IHsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNvbnN0YW50LCBWYWx1ZVJlcDo6U29tZVJl
Z2lzdGVyKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKHNpZ25CaXRDb25zdGFudCwgVmFs
dWVSZXA6OlNvbWVSZWdpc3Rlcik7CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUZQU2NyYXRjaFJl
Z2lzdGVycyA9IDE7CiAgICAgfQogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtQjNJ
UkdlbmVyYXRvcklubGluZXNIZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9n
ZW5lcmF0ZVdhc21CM0lSR2VuZXJhdG9ySW5saW5lc0hlYWRlci5weQppbmRleCAxOWMyZmNjOTEx
MDI3ODIzOWQxYzQyNGM4ODIwOWU5MjkxNGJhNTMyLi4zY2RmMGUwZmFhMGIxYzUwNWFmN2RjMDM1
NTM2MTcxOTRiZGMxNjY2IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9n
ZW5lcmF0ZVdhc21CM0lSR2VuZXJhdG9ySW5saW5lc0hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21CM0lSR2VuZXJhdG9ySW5saW5lc0hlYWRlci5w
eQpAQCAtMTc0LDcgKzE3NCw3IEBAIGRlZiBnZW5lcmF0ZUIzT3BDb2RlKGluZGV4LCBvcCwgcGFy
YW1zKToKIAogCiBkZWYgZ2VuZXJhdGVDb25zdENvZGUoaW5kZXgsIHZhbHVlLCB0eXBlKToKLSAg
ICByZXR1cm4gIlZhbHVlKiAiICsgdGVtcChpbmRleCkgKyAiID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZEludENvbnN0YW50KG1fcHJvYywgb3JpZ2luKCksIEIzOjoiICsgdHlwZSArICIsICIgKyB2
YWx1ZSArICIpOyIKKyAgICByZXR1cm4gIlZhbHVlKiAiICsgdGVtcChpbmRleCkgKyAiID0gY29u
c3RhbnQoIiArIHR5cGUgKyAiLCAiICsgdmFsdWUgKyAiKTsiCiAKIAogZGVmIGdlbmVyYXRlQjND
b2RlKHdhc21PcCwgc291cmNlKToK
</data>
<flag name="review"
          id="327225"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>