<?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>161069</bug_id>
          
          <creation_ts>2016-08-22 19:54:11 -0700</creation_ts>
          <short_desc>[JSC] Make Math.cos() and Math.sin() work with any argument type</short_desc>
          <delta_ts>2016-08-23 12:11:37 -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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</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>1222068</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-22 19:54:11 -0700</bug_when>
    <thetext>[JSC] Make Math.cos() and Math.sin() work with any argument type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222069</commentid>
    <comment_count>1</comment_count>
      <attachid>286653</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-22 19:55:07 -0700</bug_when>
    <thetext>Created attachment 286653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222081</commentid>
    <comment_count>2</comment_count>
      <attachid>286653</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-22 20:23:00 -0700</bug_when>
    <thetext>Comment on attachment 286653
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222350</commentid>
    <comment_count>3</comment_count>
      <attachid>286653</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-23 12:11:33 -0700</bug_when>
    <thetext>Comment on attachment 286653
Patch

Clearing flags on attachment: 286653

Committed r204849: &lt;http://trac.webkit.org/changeset/204849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222351</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-23 12:11:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286653</attachid>
            <date>2016-08-22 19:55:07 -0700</date>
            <delta_ts>2016-08-23 12:11:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161069-20160822195309.patch</filename>
            <type>text/plain</type>
            <size>26606</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZDY1NWUwMzQwNGEzMTliZmI0MzgxM2MxOWU4NzdiNzQ0MDBhMmE3Li45MDQzNjY5OTc5ZDkzM2U1
NWMxODRlZWM0NWZmYmIwZmRlOTlhNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNi0wOC0yMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBNYWtlIE1hdGguY29zKCkgYW5kIE1hdGguc2luKCkgd29y
ayB3aXRoIGFueSBhcmd1bWVudCB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjEwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTYW1lIGFzIHRoZSBBcml0aFNxcnQgcGF0Y2g6IGFkZCBhIGdlbmVy
aWMgcGF0aCBpZiB0aGUgYXJndW1lbnQKKyAgICAgICAgaXMgbm90IGEgbnVtYmVyLgorCisgICAg
ICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2Rl
VHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aENvcyk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFNpbik6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
QXJpdGhTaW4pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
QXJpdGhDb3MpOgorCiAyMDE2LTA4LTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJlbmFtZSBDdXN0b21FbGVtZW50c1JlZ2lzdHJ5IHRvIEN1c3RvbUVsZW1l
bnRSZWdpc3RyeQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGE3ZDcwMWFjMWRmYTQyMjBjOWE4NTdi
MDgxMDk4YmVjNDc1NTkwNjcuLjdjYjYyMzY3ZDQxYTA4MjYzNWM3NWZkM2EyMzQ3OTg0ZGY3MjY0
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTk4NCw3ICs5ODQsMTAgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVy
KHNpbihjaGlsZC5hc051bWJlcigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKHR5cGVPZkRvdWJsZVVuYXJ5T3AoZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHNpblR5
cGUgPSBTcGVjRnVsbE51bWJlcjsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBEb3VibGVSZXBVc2UpCisgICAgICAgICAgICBzaW5UeXBlID0gdHlwZU9mRG91YmxlVW5h
cnlPcChmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUpOworICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldFR5cGUoc2luVHlwZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKQEAgLTk5
NCw3ICs5OTcsMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIHNldENv
bnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKGNvcyhjaGlsZC5hc051bWJlcigpKSkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBl
KHR5cGVPZkRvdWJsZVVuYXJ5T3AoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7Cisg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIGNvc1R5cGUgPSBTcGVjRnVsbE51bWJlcjsKKyAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpCisgICAgICAgICAg
ICBjb3NUeXBlID0gdHlwZU9mRG91YmxlVW5hcnlPcChmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5t
X3R5cGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoY29zVHlwZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAppbmRleCBhYzM1NmY4NDQ2NjBjMWJjYzQ2MjJiMTRjY2E5MGQzODU4ZGQ0OTM2Li5kOThlYzQ3
NTlhZTczMjA1ZTZiZWJkZjg3MmI5OTllNDE1MzI4MTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTU1LDggKzE1NSw2IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgY2FzZSBBcml0aE1heDoKICAgICBjYXNlIEFyaXRoUG93OgogICAgIGNh
c2UgQXJpdGhGUm91bmQ6Ci0gICAgY2FzZSBBcml0aFNpbjoKLSAgICBjYXNlIEFyaXRoQ29zOgog
ICAgIGNhc2UgQXJpdGhMb2c6CiAgICAgY2FzZSBHZXRTY29wZToKICAgICBjYXNlIFNraXBTY29w
ZToKQEAgLTE4OSw2ICsxODcsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICBk
ZWYoUHVyZVZhbHVlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogCisgICAgY2FzZSBBcml0aENv
czoKKyAgICBjYXNlIEFyaXRoU2luOgogICAgIGNhc2UgQXJpdGhTcXJ0OgogICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkKICAgICAgICAgICAgIGRl
ZihQdXJlVmFsdWUobm9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKaW5kZXggMDI3ODRiZTg5ZmI4ZjY3YzlkM2FjNGY1MmE2ZWUyYTU1YTI5ZTgzMC4u
NDU4MjIwMDBmMGVjNmQwNGI2MWEwNGUxZDgxZWU0NzhiZGUxMmZkMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0zODUsNyArMzg1LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgICAgICAKKworICAgICAgICBjYXNlIEFyaXRoQ29zOgorICAgICAgICBjYXNlIEFyaXRoU2lu
OgogICAgICAgICBjYXNlIEFyaXRoU3FydDogewogICAgICAgICAgICAgRWRnZSYgY2hpbGQxID0g
bm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgICAgICBpZiAoY2hpbGQxLT5zaG91bGRTcGVjdWxhdGVO
dW1iZXJPckJvb2xlYW4oKSkKQEAgLTM5NSw4ICszOTcsNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBcml0aEZSb3VuZDoKLSAgICAgICAg
Y2FzZSBBcml0aFNpbjoKLSAgICAgICAgY2FzZSBBcml0aENvczoKICAgICAgICAgY2FzZSBBcml0
aExvZzogewogICAgICAgICAgICAgZml4RG91YmxlT3JCb29sZWFuRWRnZShub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMmYyZmY3ZGY0ZTNhMmYzZTM1
NjE3NDhhYjU5Mzk4NzM1MzYzOGJiMS4uMmU2NGVkZGI2NTZmMmYwMjg5OTliNWJlMDA0MzgzNzY2
MDA0ODMwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMTYw
LDggKzE2MCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhB
cml0aENlaWwsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhBcml0aFRydW5jLCBOb2Rl
UmVzdWx0TnVtYmVyKSBcCiAgICAgbWFjcm8oQXJpdGhTcXJ0LCBOb2RlUmVzdWx0RG91YmxlKSBc
Ci0gICAgbWFjcm8oQXJpdGhTaW4sIE5vZGVSZXN1bHROdW1iZXIpIFwKLSAgICBtYWNybyhBcml0
aENvcywgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIG1hY3JvKEFyaXRoU2luLCBOb2RlUmVzdWx0
RG91YmxlKSBcCisgICAgbWFjcm8oQXJpdGhDb3MsIE5vZGVSZXN1bHREb3VibGUpIFwKICAgICBt
YWNybyhBcml0aExvZywgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIFwKICAgICAvKiBBZGQgb2Yg
dmFsdWVzIG1heSBlaXRoZXIgYmUgYXJpdGhtZXRpYywgb3IgcmVzdWx0IGluIHN0cmluZyBjb25j
YXRlbmF0aW9uLiAqL1wKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCmluZGV4IDVkOTAwMzk3NDIzNmViOTExNjlkMjEyODZlZGMwYzcxNTJlZDg1NDQuLjAwYjE4
NmE1MWQ4YWI1MzA2MWQ1ODY1MjRhZTVlYzZlMDY5NjhiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMzIyLDYgKzMyMiwzMCBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlRGl2KEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYSAv
IGIpKTsKIH0KIAorZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhDb3MoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKQoreworICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwor
CisgICAgSlNWYWx1ZSBvcDEgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSk7CisgICAgZG91
YmxlIGEgPSBvcDEudG9OdW1iZXIoZXhlYyk7CisgICAgaWYgKFVOTElLRUxZKHZtLT5leGNlcHRp
b24oKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICBy
ZXR1cm4gY29zKGEpOworfQorCitkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aFNp
bihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCit7CisgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
ZXhlYyk7CisKKyAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsK
KyAgICBkb3VibGUgYSA9IG9wMS50b051bWJlcihleGVjKTsKKyAgICBpZiAoVU5MSUtFTFkodm0t
PmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkp
OworICAgIHJldHVybiBzaW4oYSk7Cit9CisKIGRvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkFyaXRoU3FydChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oCmluZGV4IDkwNGVjMGFmOTNjODc3ZTdkYjIxYmQxYTU1ZTJlYmVlNmUxMDc1
MzcuLmRkZGJmOGJlMjk3M2I2NzE1NDRkOWMyNzBmNzJjZmEwZjk5ODllM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC01Myw2ICs1Myw4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVCaXRSU2hpZnQoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmFsdWVCaXRVUlNoaWZ0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZURpdihFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyKSBXVEZfSU5URVJOQUw7Citkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aENv
cyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7Citk
b3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Bcml0aFNpbihFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7CiBkb3VibGUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Bcml0aFNxcnQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkg
V1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eVZhbChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsQ2VsbChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggM2QxMWMxZTcxZDBlNTNi
MjQwMzc5ZmM0ZDFlZGNjNDAzYmMxMmEwOS4uODUzMDM0YTZjZjU5MDljMzliMDY2M2IyM2Q2NDAz
ZTNlOTk3NGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKQEAgLTM4ODUsNiArMzg4NSwyOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQXJpdGhDbHozMihOb2RlKiBub2RlKQogICAgIGludDMyUmVzdWx0KHJlc3VsdFJlZywg
bm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aENvcyhOb2RlKiBu
b2RlKQoreworICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNl
KSB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgRlBSUmVnIG9wMUZQUiA9IG9wMS5mcHIoKTsKKworICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICAKKyAgICAgICAgRlBSUmVzdWx0IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihjb3MsIHJlc3VsdC5mcHIoKSwgb3AxRlBSKTsKKyAgICAg
ICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKKyAgICBmbHVzaFJlZ2lz
dGVycygpOworICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Bcml0aENvcywgcmVzdWx0LmZwcigpLCBvcDFSZWdzKTsKKyAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOworICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworfQor
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kZSogbm9kZSkKIHsKICAg
ICBzd2l0Y2ggKG5vZGUtPmJpbmFyeVVzZUtpbmQoKSkgewpAQCAtNDg4OCw2ICs0OTExLDI5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kaW5nKE5vZGUqIG5vZGUpCiAg
ICAgfQogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTaW4oTm9kZSogbm9k
ZSkKK3sKKyAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkg
eworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIEZQUlJlZyBvcDFGUFIgPSBvcDEuZnByKCk7CisKKyAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKKyAgICAgICAgCisgICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24oc2luLCByZXN1bHQuZnByKCksIG9wMUZQUik7CisgICAgICAg
IGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBK
U1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CisgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKKyAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXJpdGhTaW4sIHJlc3VsdC5mcHIoKSwgb3AxUmVncyk7CisgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKyAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKK30KKwog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydChOb2RlKiBub2RlKQogewogICAg
IGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYTQwYTY2OTlm
N2VmODM0MmJlZjNkMzRjYjk0MTNlMmIxODU0MTk3Yy4uNWRiMGZkOGY5MWE1NjFlNWNmNmFlODJj
YzliOTA1MzM2NTJkMGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaApAQCAtMjQ2OSw2ICsyNDY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29t
cGlsZUFyaXRoQWRkKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVNYWtlUm9wZShOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlQXJpdGhDbHozMihOb2RlKik7CisgICAgdm9pZCBjb21waWxlQXJpdGhD
b3MoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUFyaXRoU3ViKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVBcml0aE5lZ2F0ZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhNdWwoTm9kZSop
OwpAQCAtMjQ3Nyw2ICsyNDc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUFyaXRoUG93
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVBcml0aFJvdW5kaW5nKE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVBcml0aFJhbmRvbShOb2RlKik7CisgICAgdm9pZCBjb21waWxlQXJpdGhTaW4oTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZUFyaXRoU3FydChOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
QXJpdGhMb2coTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIo
Tm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKaW5kZXggODdlMTUxNTE0OGNhOWMxNDI5Mjc0OTJhMDAyZDgyOTk3NjMx
MGMxNi4uZjJiYjY3MzY4MGJhZDk3MTA4NzczZTQ2NDgwMzJiODA0MjI2MWRiMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CkBAIC0yMzg5LDI5ICsyMzg5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgY29tcGlsZUFyaXRoUm91bmRpbmcobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogCi0gICAgY2FzZSBBcml0aFNpbjogewotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEZQUlJlZyBvcDFGUFIgPSBv
cDEuZnByKCk7Ci0KLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgCi0gICAgICAg
IEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oc2luLCByZXN1
bHQuZnByKCksIG9wMUZQUik7Ci0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5v
ZGUpOworICAgIGNhc2UgQXJpdGhTaW46CisgICAgICAgIGNvbXBpbGVBcml0aFNpbihub2RlKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgfQogCi0gICAgY2FzZSBBcml0aENvczogewotICAgICAgICBT
cGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
IEZQUlJlZyBvcDFGUFIgPSBvcDEuZnByKCk7Ci0KLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
LSAgICAgICAgCi0gICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24oY29zLCByZXN1bHQuZnByKCksIG9wMUZQUik7Ci0gICAgICAgIGRvdWJsZVJlc3Vs
dChyZXN1bHQuZnByKCksIG5vZGUpOworICAgIGNhc2UgQXJpdGhDb3M6CisgICAgICAgIGNvbXBp
bGVBcml0aENvcyhub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogCiAgICAgY2FzZSBBcml0
aExvZzoKICAgICAgICAgY29tcGlsZUFyaXRoTG9nKG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNWJlN2E1ZTlkNzUx
YzJmODNhNGEwZWQ3ZmI4ODI1NzYxNGM0ODc2MC4uYjZjMmQwMTE3YTBjNWY3YTM3ZDRkNjFmNDdi
NTg2ODg3NTk2YTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0yNTEzLDI5ICsyNTEzLDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUFyaXRoUm91bmRpbmco
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBBcml0aFNpbjogewotICAgICAgICBT
cGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
IEZQUlJlZyBvcDFGUFIgPSBvcDEuZnByKCk7Ci0KLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
LSAgICAgICAgCi0gICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24oc2luLCByZXN1bHQuZnByKCksIG9wMUZQUik7Ci0gICAgICAgIGRvdWJsZVJlc3Vs
dChyZXN1bHQuZnByKCksIG5vZGUpOworICAgIGNhc2UgQXJpdGhTaW46CisgICAgICAgIGNvbXBp
bGVBcml0aFNpbihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogCi0gICAgY2FzZSBBcml0
aENvczogewotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgIEZQUlJlZyBvcDFGUFIgPSBvcDEuZnByKCk7Ci0KLSAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgCi0gICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhp
cyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oY29zLCByZXN1bHQuZnByKCksIG9wMUZQUik7Ci0g
ICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgIGNhc2UgQXJpdGhD
b3M6CisgICAgICAgIGNvbXBpbGVBcml0aENvcyhub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
fQogCiAgICAgY2FzZSBBcml0aExvZzoKICAgICAgICAgY29tcGlsZUFyaXRoTG9nKG5vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGVk
ZmIyZjgwMGU3OGUyNjcxNGU5YTkyODE4YTQ0MTlkMTg5ZGQ2MTguLmFkZDg1MWEyZTBmYTdiM2Ji
NDRkNmU1MmQ1N2QxMmYyNzAyZDkxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTIwMjAsOSArMjAyMCwyNyBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBjb21waWxlQXJpdGhTaW4oKSB7IHNldERvdWJsZSht
X291dC5kb3VibGVTaW4obG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7IH0KKyAgICB2b2lk
IGNvbXBpbGVBcml0aFNpbigpCisgICAgeworICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlKSB7CisgICAgICAgICAgICBzZXREb3VibGUobV9vdXQu
ZG91YmxlU2luKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoRG91YmxlLCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhTaW4pLCBtX2NhbGxGcmFtZSwgYXJndW1lbnQp
OworICAgICAgICBzZXREb3VibGUocmVzdWx0KTsKKyAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVB
cml0aENvcygpIHsgc2V0RG91YmxlKG1fb3V0LmRvdWJsZUNvcyhsb3dEb3VibGUobV9ub2RlLT5j
aGlsZDEoKSkpKTsgfQorICAgIHZvaWQgY29tcGlsZUFyaXRoQ29zKCkKKyAgICB7CisgICAgICAg
IGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsKKyAgICAg
ICAgICAgIHNldERvdWJsZShtX291dC5kb3VibGVDb3MobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQx
KCkpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgTFZhbHVlIGFy
Z3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChEb3VibGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Bcml0aENvcyks
IG1fY2FsbEZyYW1lLCBhcmd1bWVudCk7CisgICAgICAgIHNldERvdWJsZShyZXN1bHQpOworICAg
IH0KIAogICAgIHZvaWQgY29tcGlsZUFyaXRoUG93KCkKICAgICB7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBmYjUyNTE5MTdhN2NlNjQ2
MjRlYzExODIzYjUxM2U2NDkxZmQyYzYuLmMwODdkZDdiYmY4OWFhYTNiODgxOTExMDQ0ZDU5MzU4
ODkxNDRlOWUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDgtMjIgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gTWFrZSBNYXRoLmNvcygpIGFuZCBN
YXRoLnNpbigpIHdvcmsgd2l0aCBhbnkgYXJndW1lbnQgdHlwZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMDY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXJpdGgtY29zLW9uLXZhcmlv
dXMtdHlwZXMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9hcml0aC1zaW4tb24tdmFyaW91
cy10eXBlcy5qczogQWRkZWQuCisKIDIwMTYtMDgtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gTW9kdWxlIHNob3VsZCBub3QgYWxsb3cg
SFRNTCBjb21tZW50cwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJpdGgtY29zLW9uLXZh
cmlvdXMtdHlwZXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcml0aC1jb3Mtb24tdmFyaW91cy10eXBl
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jY2FlODkyM2RlNzNiYWFhNzdkNGQ4ZjI0OWI5ODk3NThiY2E1M2Nj
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdGgtY29zLW9uLXZhcmlvdXMt
dHlwZXMuanMKQEAgLTAsMCArMSwxNjggQEAKKyJ1c2Ugc3RyaWN0IjsKKworbGV0IGNvc09mRm91
ciA9IE1hdGguY29zKDQpOworCitsZXQgdmFsaWRJbnB1dFRlc3RDYXNlcyA9IFsKKyAgICAvLyBp
bnB1dCBhcyBzdHJpbmcsIGV4cGVjdGVkIHJlc3VsdCBhcyBzdHJpbmcuCisgICAgWyJ1bmRlZmlu
ZWQiLCAiTmFOIl0sCisgICAgWyJudWxsIiwgIjEiXSwKKyAgICBbIjAiLCAiMSJdLAorICAgIFsi
LTAuIiwgIjEiXSwKKyAgICBbIjQiLCAiIiArIGNvc09mRm91cl0sCisgICAgWyJNYXRoLlBJIiwg
Ii0xIl0sCisgICAgWyJJbmZpbml0eSIsICJOYU4iXSwKKyAgICBbIi1JbmZpbml0eSIsICJOYU4i
XSwKKyAgICBbIk5hTiIsICJOYU4iXSwKKyAgICBbIlwiV2ViS2l0XCIiLCAiTmFOIl0sCisgICAg
WyJcIjRcIiIsICIiICsgY29zT2ZGb3VyXSwKKyAgICBbInsgdmFsdWVPZjogKCkgPT4geyByZXR1
cm4gNDsgfSB9IiwgIiIgKyBjb3NPZkZvdXJdLAorXTsKKworbGV0IHZhbGlkSW5wdXRUeXBlZFRl
c3RDYXNlcyA9IHZhbGlkSW5wdXRUZXN0Q2FzZXMubWFwKChlbGVtZW50KSA9PiB7IHJldHVybiBb
ZXZhbCgiKCIgKyBlbGVtZW50WzBdICsgIikiKSwgZXZhbChlbGVtZW50WzFdKV0gfSk7CisKK2Z1
bmN0aW9uIGlzSWRlbnRpY2FsKHJlc3VsdCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGV4cGVjdGVk
ID09PSBleHBlY3RlZCkgeworICAgICAgICBpZiAocmVzdWx0ICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFleHBlY3RlZCAmJiAxIC8gZXhwZWN0
ZWQgPT09IC1JbmZpbml0eSAmJiAxIC8gcmVzdWx0ICE9PSAtSW5maW5pdHkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biByZXN1bHQgIT09IHJlc3VsdDsKK30KKworCisvLyBUZXN0IE1hdGguY29zKCkgd2l0aCBhIHZl
cnkgcG9seW1vcnBoaWMgaW5wdXQuIEFsbCB0ZXN0IGNhc2VzIGFyZSBzZWVuIGF0IGVhY2ggaXRl
cmF0aW9uLgorZnVuY3Rpb24gb3BhcXVlQWxsVHlwZXNDb3MoYXJndW1lbnQpIHsKKyAgICByZXR1
cm4gTWF0aC5jb3MoYXJndW1lbnQpOworfQorbm9JbmxpbmUob3BhcXVlQWxsVHlwZXNDb3MpOwor
bm9PU1JFeGl0RnV6emluZyhvcGFxdWVBbGxUeXBlc0Nvcyk7CisKK2Z1bmN0aW9uIHRlc3RBbGxU
eXBlc0NhbGwoKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAgICAg
ICBmb3IgKGxldCB0ZXN0Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUeXBlZFRlc3RDYXNlcykgewor
ICAgICAgICAgICAgbGV0IG91dHB1dCA9IG9wYXF1ZUFsbFR5cGVzQ29zKHRlc3RDYXNlSW5wdXRb
MF0pOworICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChvdXRwdXQsIHRlc3RDYXNlSW5wdXRb
MV0pKQorICAgICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdEFsbFR5cGVzQ2FsbCBmb3Ig
aW5wdXQgIiArIHRlc3RDYXNlSW5wdXRbMF0gKyAiIGV4cGVjdGVkICIgKyB0ZXN0Q2FzZUlucHV0
WzFdICsgIiBnb3QgIiArIG91dHB1dDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobnVtYmVy
T2ZERkdDb21waWxlcyhvcGFxdWVBbGxUeXBlc0NvcykgPiAyKQorICAgICAgICB0aHJvdyAiV2Ug
c2hvdWxkIGhhdmUgZGV0ZWN0ZWQgY29zKCkgd2FzIHBvbHltb3JwaGljIGFuZCBnZW5lcmF0ZWQg
YSBnZW5lcmljIHZlcnNpb24uIjsKK30KK3Rlc3RBbGxUeXBlc0NhbGwoKTsKKworCisvLyBUZXN0
IE1hdGguY29zKCkgb24gYSBjb21wbGV0ZWx5IHR5cGVkIGlucHV0LiBFdmVyeSBjYWxsIHNlZSBv
bmx5IG9uZSB0eXBlLgorZnVuY3Rpb24gdGVzdFNpbmdsZVR5cGVDYWxsKCkgeworICAgIGZvciAo
bGV0IHRlc3RDYXNlSW5wdXQgb2YgdmFsaWRJbnB1dFRlc3RDYXNlcykgeworICAgICAgICBldmFs
KGAKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9wYXF1ZUNvcyhhcmd1bWVudCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiBNYXRoLmNvcyhhcmd1bWVudCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBub0lubGluZShvcGFxdWVDb3MpOworICAgICAgICAgICAgbm9PU1JFeGl0RnV6emluZyhv
cGFxdWVDb3MpOworCisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7
CisgICAgICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChvcGFxdWVDb3MoJHt0ZXN0Q2FzZUlu
cHV0WzBdfSksICR7dGVzdENhc2VJbnB1dFsxXX0pKSB7CisgICAgICAgICAgICAgICAgICAgIHRo
cm93ICJGYWlsZWQgdGVzdFNpbmdsZVR5cGVDYWxsKCkiOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChudW1iZXJPZkRGR0NvbXBpbGVzKG9wYXF1ZUNv
cykgPiAxKQorICAgICAgICAgICAgICAgIHRocm93ICJXZSBzaG91bGQgaGF2ZSBjb21waWxlZCBh
IHNpbmdsZSBjb3MgZm9yIHRoZSBleHBlY3RlZCB0eXBlLiI7CisgICAgICAgIGApOworICAgIH0K
K30KK3Rlc3RTaW5nbGVUeXBlQ2FsbCgpOworCisKKy8vIFZlcmlmeSB3ZSBjYWxsIHZhbHVlT2Yo
KSBleGFjdGx5IG9uY2UgcGVyIGNhbGwuCitmdW5jdGlvbiBvcGFxdWVDb3NGb3JTaWRlRWZmZWN0
cyhhcmd1bWVudCkgeworICAgIHJldHVybiBNYXRoLmNvcyhhcmd1bWVudCk7Cit9Citub0lubGlu
ZShvcGFxdWVDb3NGb3JTaWRlRWZmZWN0cyk7Citub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUNvc0Zv
clNpZGVFZmZlY3RzKTsKKworZnVuY3Rpb24gdGVzdFNpZGVFZmZlY3QoKSB7CisgICAgbGV0IHRl
c3RPYmplY3QgPSB7CisgICAgICAgIGNvdW50ZXI6IDAsCisgICAgICAgIHZhbHVlT2Y6IGZ1bmN0
aW9uKCkgeyArK3RoaXMuY291bnRlcjsgcmV0dXJuIDE2OyB9CisgICAgfTsKKyAgICBsZXQgY29z
MTYgPSBNYXRoLmNvcygxNik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewor
ICAgICAgICBpZiAob3BhcXVlQ29zRm9yU2lkZUVmZmVjdHModGVzdE9iamVjdCkgIT09IGNvczE2
KQorICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgaW4gdGVzdFNpZGVFZmZlY3Qo
KSI7CisgICAgfQorICAgIGlmICh0ZXN0T2JqZWN0LmNvdW50ZXIgIT09IDFlNCkKKyAgICAgICAg
dGhyb3cgIkZhaWxlZCB0ZXN0U2lkZUVmZmVjdCgpIjsKKyAgICBpZiAobnVtYmVyT2ZERkdDb21w
aWxlcyhvcGFxdWVDb3NGb3JTaWRlRWZmZWN0cykgPiAxKQorICAgICAgICB0aHJvdyAib3BhcXVl
Q29zRm9yU2lkZUVmZmVjdHMoKSBpcyBwcmVkaWN0YWJsZSwgaXQgc2hvdWxkIG9ubHkgYmUgY29t
cGlsZWQgb25jZS4iOworfQordGVzdFNpZGVFZmZlY3QoKTsKKworCisvLyBWZXJpZnkgU1FSVCBp
cyBub3Qgc3ViamVjdCB0byBDU0UgaWYgdGhlIGFyZ3VtZW50IGhhcyBzaWRlIGVmZmVjdHMuCitm
dW5jdGlvbiBvcGFxdWVDb3NGb3JDU0UoYXJndW1lbnQpIHsKKyAgICByZXR1cm4gTWF0aC5jb3Mo
YXJndW1lbnQpICsgTWF0aC5jb3MoYXJndW1lbnQpICsgTWF0aC5jb3MoYXJndW1lbnQpOworfQor
bm9JbmxpbmUob3BhcXVlQ29zRm9yQ1NFKTsKK25vT1NSRXhpdEZ1enppbmcob3BhcXVlQ29zRm9y
Q1NFKTsKKworZnVuY3Rpb24gdGVzdENTRSgpIHsKKyAgICBsZXQgdGVzdE9iamVjdCA9IHsKKyAg
ICAgICAgY291bnRlcjogMCwKKyAgICAgICAgdmFsdWVPZjogZnVuY3Rpb24oKSB7ICsrdGhpcy5j
b3VudGVyOyByZXR1cm4gMTY7IH0KKyAgICB9OworICAgIGxldCBjb3MxNiA9IE1hdGguY29zKDE2
KTsKKyAgICBsZXQgdGhyZWVDb3MxNiA9IGNvczE2ICsgY29zMTYgKyBjb3MxNjsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGlmIChvcGFxdWVDb3NGb3JDU0Uo
dGVzdE9iamVjdCkgIT09IHRocmVlQ29zMTYpCisgICAgICAgICAgICB0aHJvdyAiSW5jb3JyZWN0
IHJlc3VsdCBpbiB0ZXN0Q1NFKCkiOworICAgIH0KKyAgICBpZiAodGVzdE9iamVjdC5jb3VudGVy
ICE9PSAzZTQpCisgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdENTRSgpIjsKKyAgICBpZiAobnVt
YmVyT2ZERkdDb21waWxlcyhvcGFxdWVDb3NGb3JDU0UpID4gMSkKKyAgICAgICAgdGhyb3cgIm9w
YXF1ZUNvc0ZvckNTRSgpIGlzIHByZWRpY3RhYmxlLCBpdCBzaG91bGQgb25seSBiZSBjb21waWxl
ZCBvbmNlLiI7Cit9Cit0ZXN0Q1NFKCk7CisKKworLy8gVGVzdCBleGNlcHRpb25zIGluIHRoZSBh
cmd1bWVudC4KK2Z1bmN0aW9uIHRlc3RFeGNlcHRpb24oKSB7CisgICAgbGV0IGNvdW50ZXIgPSAw
OworICAgIGZ1bmN0aW9uIG9wYXF1ZUNvc1dpdGhFeGNlcHRpb24oYXJndW1lbnQpIHsKKyAgICAg
ICAgbGV0IHJlc3VsdCA9IE1hdGguY29zKGFyZ3VtZW50KTsKKyAgICAgICAgKytjb3VudGVyOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBub0lubGluZShvcGFxdWVDb3NXaXRo
RXhjZXB0aW9uKTsKKworICAgIGxldCB0ZXN0T2JqZWN0ID0geyB2YWx1ZU9mOiAoKSA9PiB7ICBy
ZXR1cm4gNjQ7IH0gfTsKKyAgICBsZXQgY29zNjQgPSBNYXRoLmNvcyg2NCk7CisKKyAgICAvLyBX
YXJtIHVwIHdpdGhvdXQgZXhjZXB0aW9uLgorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUzOyAr
K2kpIHsKKyAgICAgICAgaWYgKG9wYXF1ZUNvc1dpdGhFeGNlcHRpb24odGVzdE9iamVjdCkgIT09
IGNvczY0KQorICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgaW4gb3BhcXVlQ29z
V2l0aEV4Y2VwdGlvbigpIjsKKyAgICB9CisKKyAgICBsZXQgdGVzdFRocm93T2JqZWN0ID0geyB2
YWx1ZU9mOiAoKSA9PiB7IHRocm93IHRlc3RPYmplY3Q7IHJldHVybiA2NDsgfSB9OworCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgaWYgKG9wYXF1ZUNvc1dpdGhFeGNlcHRpb24odGVzdFRocm93T2JqZWN0KSAhPT0gOCkKKyAg
ICAgICAgICAgICAgICB0aHJvdyAiVGhpcyBjb2RlIHNob3VsZCBub3QgYmUgcmVhY2hlZCEhIjsK
KyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKGUgIT09IHRlc3RPYmplY3Qp
IHsKKyAgICAgICAgICAgICAgICB0aHJvdyAiV3Jvbmcgb2JqZWN0IHRocm93biBmcm9tIG9wYXF1
ZUNvc1dpdGhFeGNlcHRpb24uIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKGNvdW50ZXIgIT09IDFlMykgeworICAgICAgICB0aHJvdyAiSW52YWxpZCBjb3VudCBp
biB0ZXN0RXhjZXB0aW9uKCkiOworICAgIH0KK30KK3Rlc3RFeGNlcHRpb24oKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2FyaXRoLXNpbi1vbi12YXJpb3VzLXR5cGVzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvYXJpdGgtc2luLW9uLXZhcmlvdXMtdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQyOWY0
NmZlMjBlOWI1ODJhMDUyOTdlNjU3M2I0ZmVmMGRiMjRhMwotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2FyaXRoLXNpbi1vbi12YXJpb3VzLXR5cGVzLmpzCkBAIC0wLDAgKzEsMTY4
IEBACisidXNlIHN0cmljdCI7CisKK2xldCBzaW5PZkZvdXIgPSBNYXRoLnNpbig0KTsKKworbGV0
IHZhbGlkSW5wdXRUZXN0Q2FzZXMgPSBbCisgICAgLy8gaW5wdXQgYXMgc3RyaW5nLCBleHBlY3Rl
ZCByZXN1bHQgYXMgc3RyaW5nLgorICAgIFsidW5kZWZpbmVkIiwgIk5hTiJdLAorICAgIFsibnVs
bCIsICIwIl0sCisgICAgWyIwIiwgIjAiXSwKKyAgICBbIi0wLiIsICItMCJdLAorICAgIFsiNCIs
ICIiICsgc2luT2ZGb3VyXSwKKyAgICBbIk1hdGguUEkiLCAiIiArIE1hdGguc2luKE1hdGguUEkp
XSwKKyAgICBbIkluZmluaXR5IiwgIk5hTiJdLAorICAgIFsiLUluZmluaXR5IiwgIk5hTiJdLAor
ICAgIFsiTmFOIiwgIk5hTiJdLAorICAgIFsiXCJXZWJLaXRcIiIsICJOYU4iXSwKKyAgICBbIlwi
NFwiIiwgIiIgKyBzaW5PZkZvdXJdLAorICAgIFsieyB2YWx1ZU9mOiAoKSA9PiB7IHJldHVybiA0
OyB9IH0iLCAiIiArIHNpbk9mRm91cl0sCitdOworCitsZXQgdmFsaWRJbnB1dFR5cGVkVGVzdENh
c2VzID0gdmFsaWRJbnB1dFRlc3RDYXNlcy5tYXAoKGVsZW1lbnQpID0+IHsgcmV0dXJuIFtldmFs
KCIoIiArIGVsZW1lbnRbMF0gKyAiKSIpLCBldmFsKGVsZW1lbnRbMV0pXSB9KTsKKworZnVuY3Rp
b24gaXNJZGVudGljYWwocmVzdWx0LCBleHBlY3RlZCkKK3sKKyAgICBpZiAoZXhwZWN0ZWQgPT09
IGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWV4cGVjdGVkICYmIDEgLyBleHBlY3RlZCA9
PT0gLUluZmluaXR5ICYmIDEgLyByZXN1bHQgIT09IC1JbmZpbml0eSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdCAhPT0gcmVzdWx0OworfQorCisKKy8vIFRlc3QgTWF0aC5zaW4oKSB3aXRoIGEgdmVyeSBw
b2x5bW9ycGhpYyBpbnB1dC4gQWxsIHRlc3QgY2FzZXMgYXJlIHNlZW4gYXQgZWFjaCBpdGVyYXRp
b24uCitmdW5jdGlvbiBvcGFxdWVBbGxUeXBlc1Npbihhcmd1bWVudCkgeworICAgIHJldHVybiBN
YXRoLnNpbihhcmd1bWVudCk7Cit9Citub0lubGluZShvcGFxdWVBbGxUeXBlc1Npbik7Citub09T
UkV4aXRGdXp6aW5nKG9wYXF1ZUFsbFR5cGVzU2luKTsKKworZnVuY3Rpb24gdGVzdEFsbFR5cGVz
Q2FsbCgpIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIGZv
ciAobGV0IHRlc3RDYXNlSW5wdXQgb2YgdmFsaWRJbnB1dFR5cGVkVGVzdENhc2VzKSB7CisgICAg
ICAgICAgICBsZXQgb3V0cHV0ID0gb3BhcXVlQWxsVHlwZXNTaW4odGVzdENhc2VJbnB1dFswXSk7
CisgICAgICAgICAgICBpZiAoIWlzSWRlbnRpY2FsKG91dHB1dCwgdGVzdENhc2VJbnB1dFsxXSkp
CisgICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0QWxsVHlwZXNDYWxsIGZvciBpbnB1
dCAiICsgdGVzdENhc2VJbnB1dFswXSArICIgZXhwZWN0ZWQgIiArIHRlc3RDYXNlSW5wdXRbMV0g
KyAiIGdvdCAiICsgb3V0cHV0OworICAgICAgICB9CisgICAgfQorICAgIGlmIChudW1iZXJPZkRG
R0NvbXBpbGVzKG9wYXF1ZUFsbFR5cGVzU2luKSA+IDIpCisgICAgICAgIHRocm93ICJXZSBzaG91
bGQgaGF2ZSBkZXRlY3RlZCBzaW4oKSB3YXMgcG9seW1vcnBoaWMgYW5kIGdlbmVyYXRlZCBhIGdl
bmVyaWMgdmVyc2lvbi4iOworfQordGVzdEFsbFR5cGVzQ2FsbCgpOworCisKKy8vIFRlc3QgTWF0
aC5zaW4oKSBvbiBhIGNvbXBsZXRlbHkgdHlwZWQgaW5wdXQuIEV2ZXJ5IGNhbGwgc2VlIG9ubHkg
b25lIHR5cGUuCitmdW5jdGlvbiB0ZXN0U2luZ2xlVHlwZUNhbGwoKSB7CisgICAgZm9yIChsZXQg
dGVzdENhc2VJbnB1dCBvZiB2YWxpZElucHV0VGVzdENhc2VzKSB7CisgICAgICAgIGV2YWwoYAor
ICAgICAgICAgICAgZnVuY3Rpb24gb3BhcXVlU2luKGFyZ3VtZW50KSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE1hdGguc2luKGFyZ3VtZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IG5vSW5saW5lKG9wYXF1ZVNpbik7CisgICAgICAgICAgICBub09TUkV4aXRGdXp6aW5nKG9wYXF1
ZVNpbik7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIWlzSWRlbnRpY2FsKG9wYXF1ZVNpbigke3Rlc3RDYXNlSW5wdXRb
MF19KSwgJHt0ZXN0Q2FzZUlucHV0WzFdfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cg
IkZhaWxlZCB0ZXN0U2luZ2xlVHlwZUNhbGwoKSI7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlU2luKSA+
IDEpCisgICAgICAgICAgICAgICAgdGhyb3cgIldlIHNob3VsZCBoYXZlIGNvbXBpbGVkIGEgc2lu
Z2xlIHNpbiBmb3IgdGhlIGV4cGVjdGVkIHR5cGUuIjsKKyAgICAgICAgYCk7CisgICAgfQorfQor
dGVzdFNpbmdsZVR5cGVDYWxsKCk7CisKKworLy8gVmVyaWZ5IHdlIGNhbGwgdmFsdWVPZigpIGV4
YWN0bHkgb25jZSBwZXIgY2FsbC4KK2Z1bmN0aW9uIG9wYXF1ZVNpbkZvclNpZGVFZmZlY3RzKGFy
Z3VtZW50KSB7CisgICAgcmV0dXJuIE1hdGguc2luKGFyZ3VtZW50KTsKK30KK25vSW5saW5lKG9w
YXF1ZVNpbkZvclNpZGVFZmZlY3RzKTsKK25vT1NSRXhpdEZ1enppbmcob3BhcXVlU2luRm9yU2lk
ZUVmZmVjdHMpOworCitmdW5jdGlvbiB0ZXN0U2lkZUVmZmVjdCgpIHsKKyAgICBsZXQgdGVzdE9i
amVjdCA9IHsKKyAgICAgICAgY291bnRlcjogMCwKKyAgICAgICAgdmFsdWVPZjogZnVuY3Rpb24o
KSB7ICsrdGhpcy5jb3VudGVyOyByZXR1cm4gMTY7IH0KKyAgICB9OworICAgIGxldCBzaW4xNiA9
IE1hdGguc2luKDE2KTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAg
ICAgIGlmIChvcGFxdWVTaW5Gb3JTaWRlRWZmZWN0cyh0ZXN0T2JqZWN0KSAhPT0gc2luMTYpCisg
ICAgICAgICAgICB0aHJvdyAiSW5jb3JyZWN0IHJlc3VsdCBpbiB0ZXN0U2lkZUVmZmVjdCgpIjsK
KyAgICB9CisgICAgaWYgKHRlc3RPYmplY3QuY291bnRlciAhPT0gMWU0KQorICAgICAgICB0aHJv
dyAiRmFpbGVkIHRlc3RTaWRlRWZmZWN0KCkiOworICAgIGlmIChudW1iZXJPZkRGR0NvbXBpbGVz
KG9wYXF1ZVNpbkZvclNpZGVFZmZlY3RzKSA+IDEpCisgICAgICAgIHRocm93ICJvcGFxdWVTaW5G
b3JTaWRlRWZmZWN0cygpIGlzIHByZWRpY3RhYmxlLCBpdCBzaG91bGQgb25seSBiZSBjb21waWxl
ZCBvbmNlLiI7Cit9Cit0ZXN0U2lkZUVmZmVjdCgpOworCisKKy8vIFZlcmlmeSBTUVJUIGlzIG5v
dCBzdWJqZWN0IHRvIENTRSBpZiB0aGUgYXJndW1lbnQgaGFzIHNpZGUgZWZmZWN0cy4KK2Z1bmN0
aW9uIG9wYXF1ZVNpbkZvckNTRShhcmd1bWVudCkgeworICAgIHJldHVybiBNYXRoLnNpbihhcmd1
bWVudCkgKyBNYXRoLnNpbihhcmd1bWVudCkgKyBNYXRoLnNpbihhcmd1bWVudCk7Cit9Citub0lu
bGluZShvcGFxdWVTaW5Gb3JDU0UpOworbm9PU1JFeGl0RnV6emluZyhvcGFxdWVTaW5Gb3JDU0Up
OworCitmdW5jdGlvbiB0ZXN0Q1NFKCkgeworICAgIGxldCB0ZXN0T2JqZWN0ID0geworICAgICAg
ICBjb3VudGVyOiAwLAorICAgICAgICB2YWx1ZU9mOiBmdW5jdGlvbigpIHsgKyt0aGlzLmNvdW50
ZXI7IHJldHVybiAxNjsgfQorICAgIH07CisgICAgbGV0IHNpbjE2ID0gTWF0aC5zaW4oMTYpOwor
ICAgIGxldCB0aHJlZVNpbjE2ID0gc2luMTYgKyBzaW4xNiArIHNpbjE2OworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgaWYgKG9wYXF1ZVNpbkZvckNTRSh0ZXN0
T2JqZWN0KSAhPT0gdGhyZWVTaW4xNikKKyAgICAgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVz
dWx0IGluIHRlc3RDU0UoKSI7CisgICAgfQorICAgIGlmICh0ZXN0T2JqZWN0LmNvdW50ZXIgIT09
IDNlNCkKKyAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0Q1NFKCkiOworICAgIGlmIChudW1iZXJP
ZkRGR0NvbXBpbGVzKG9wYXF1ZVNpbkZvckNTRSkgPiAxKQorICAgICAgICB0aHJvdyAib3BhcXVl
U2luRm9yQ1NFKCkgaXMgcHJlZGljdGFibGUsIGl0IHNob3VsZCBvbmx5IGJlIGNvbXBpbGVkIG9u
Y2UuIjsKK30KK3Rlc3RDU0UoKTsKKworCisvLyBUZXN0IGV4Y2VwdGlvbnMgaW4gdGhlIGFyZ3Vt
ZW50LgorZnVuY3Rpb24gdGVzdEV4Y2VwdGlvbigpIHsKKyAgICBsZXQgY291bnRlciA9IDA7Cisg
ICAgZnVuY3Rpb24gb3BhcXVlU2luV2l0aEV4Y2VwdGlvbihhcmd1bWVudCkgeworICAgICAgICBs
ZXQgcmVzdWx0ID0gTWF0aC5zaW4oYXJndW1lbnQpOworICAgICAgICArK2NvdW50ZXI7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIG5vSW5saW5lKG9wYXF1ZVNpbldpdGhFeGNl
cHRpb24pOworCisgICAgbGV0IHRlc3RPYmplY3QgPSB7IHZhbHVlT2Y6ICgpID0+IHsgIHJldHVy
biA2NDsgfSB9OworICAgIGxldCBzaW42NCA9IE1hdGguc2luKDY0KTsKKworICAgIC8vIFdhcm0g
dXAgd2l0aG91dCBleGNlcHRpb24uCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkg
eworICAgICAgICBpZiAob3BhcXVlU2luV2l0aEV4Y2VwdGlvbih0ZXN0T2JqZWN0KSAhPT0gc2lu
NjQpCisgICAgICAgICAgICB0aHJvdyAiSW5jb3JyZWN0IHJlc3VsdCBpbiBvcGFxdWVTaW5XaXRo
RXhjZXB0aW9uKCkiOworICAgIH0KKworICAgIGxldCB0ZXN0VGhyb3dPYmplY3QgPSB7IHZhbHVl
T2Y6ICgpID0+IHsgdGhyb3cgdGVzdE9iamVjdDsgcmV0dXJuIDY0OyB9IH07CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBp
ZiAob3BhcXVlU2luV2l0aEV4Y2VwdGlvbih0ZXN0VGhyb3dPYmplY3QpICE9PSA4KQorICAgICAg
ICAgICAgICAgIHRocm93ICJUaGlzIGNvZGUgc2hvdWxkIG5vdCBiZSByZWFjaGVkISEiOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBpZiAoZSAhPT0gdGVzdE9iamVjdCkgewor
ICAgICAgICAgICAgICAgIHRocm93ICJXcm9uZyBvYmplY3QgdGhyb3duIGZyb20gb3BhcXVlU2lu
V2l0aEV4Y2VwdGlvbi4iCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoY291bnRlciAhPT0gMWUzKSB7CisgICAgICAgIHRocm93ICJJbnZhbGlkIGNvdW50IGluIHRl
c3RFeGNlcHRpb24oKSI7CisgICAgfQorfQordGVzdEV4Y2VwdGlvbigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>