<?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>71503</bug_id>
          
          <creation_ts>2011-11-03 13:45:12 -0700</creation_ts>
          <short_desc>Remove RequiresAllArguments</short_desc>
          <delta_ts>2011-11-14 11:12:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (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="Erik Arvidsson">arv</reporter>
          <assigned_to name="Erik Arvidsson">arv</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>pilgrim</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>495767</commentid>
    <comment_count>0</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-03 13:45:12 -0700</bug_when>
    <thetext>All method arguments are now required by default. We can annotate optional arguments using [Optional], [Optional=CallWithDefaultValue] and [Optional=CallWithNullValue]

Annotating a method with [RequiresAllArguments=Raise] throws a TypeError when arguments are missing. This is the default behavior of all methods. [RequiresAllArguments=Raise] is not used anywhere.

Annotating a method with [RequiresAllArguments] makes the method return undefined if any argument is missing.

Source/WebCore/dom/Clipboard.idl:        // FIXME: RequiresAllArguments is probably bogus here.
Source/WebCore/dom/Clipboard.idl:        [RequiresAllArguments] boolean setData(in DOMString type, in DOMString data);
Source/WebCore/page/DOMWindow.idl:        [RequiresAllArguments] void scrollBy(in long x, in long y);
Source/WebCore/page/DOMWindow.idl:        [RequiresAllArguments] void scrollTo(in long x, in long y);
Source/WebCore/page/DOMWindow.idl:        [RequiresAllArguments] void scroll(in long x, in long y);
Source/WebCore/page/DOMWindow.idl:        [RequiresAllArguments] void moveBy(in float x, in float y); // FIXME: this should take longs not floats.
Source/WebCore/page/DOMWindow.idl:        [RequiresAllArguments] void moveTo(in float x, in float y); // FIXME: this should take longs not floats.
Source/WebCore/page/DOMWindow.idl:        [RequiresAllArguments] void resizeBy(in float x, in float y); // FIXME: this should take longs not floats.
Source/WebCore/page/DOMWindow.idl:        [RequiresAllArguments] void resizeTo(in float width, in float height); // FIXME: this should take longs not floats.
Source/WebCore/websockets/WebSocket.idl:        // [RequiresAllArguments] boolean send(in ArrayBuffer data) raises(DOMException);
Source/WebCore/websockets/WebSocket.idl:        // [RequiresAllArguments] boolean send(in Blob data) raises(DOMException);
Source/WebCore/websockets/WebSocket.idl:        // [RequiresAllArguments] boolean send(in DOMString data) raises(DOMException);

It seems like we could change the DOMWindow methods to just use [Optional] and not do anything in case not enough arguments are passed.

Another option is to keep [RequiresAllArguments] (but not [RequiresAllArguments=Raise]) and rename it to something more correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495833</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-03 15:50:23 -0700</bug_when>
    <thetext>Can we test these interfaces in other browsers?  Perhaps we&apos;re actually supposed to raise an exception in these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495834</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-03 15:50:50 -0700</bug_when>
    <thetext>For example, I&apos;d be surprised if this goofy behavior was required for WebSocket.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499509</commentid>
    <comment_count>3</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-09 17:15:45 -0800</bug_when>
    <thetext>Firefox 8 throws for all of these when wrong number of arguments are provided

IE9 treats missing arguments as 0 for all the window methods.

IE9 throws &quot;argument is not optional&quot; for missing arguments for setData.

Based on this I think we are pretty safe to remove RequiresAllArguments and change the window methods to [Optional=CallWithDefaultValue]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501036</commentid>
    <comment_count>4</comment_count>
      <attachid>114760</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-11 13:23:18 -0800</bug_when>
    <thetext>Created attachment 114760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501628</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-13 22:31:57 -0800</bug_when>
    <thetext>Sounds great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502109</commentid>
    <comment_count>6</comment_count>
      <attachid>114760</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-14 11:12:14 -0800</bug_when>
    <thetext>Comment on attachment 114760
Patch

Clearing flags on attachment: 114760

Committed r100163: &lt;http://trac.webkit.org/changeset/100163&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502110</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-14 11:12:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114760</attachid>
            <date>2011-11-11 13:23:18 -0800</date>
            <delta_ts>2011-11-14 11:12:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71503-20111111132317.patch</filename>
            <type>text/plain</type>
            <size>33356</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5ODQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0Y2IzNWUwMjkzMzA1NGZl
YzAzMWZiMWNjNDllNjkzOTM1NzA3NTk5Li42MGNiZDMxM2U5NTY4NGMxZTdhMjlhOGY2ZWIxYzk0
MjE0ZTkwNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMTEtMTEgIEVyaWsg
QXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgUmVxdWlyZXNB
bGxBcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxNTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyByZW1vdmVzIFJlcXVpcmVzQWxsQXJndW1lbnRzIGZyb20gdGhlIGlkbCBmaWxlcyBh
cyB3ZWxsIGFzIGZyb20gdGhlIGNvZGUgZ2VuZXJhdG9ycy4KKyAgICAgICAgRm9yIHdpbmRvdy5t
b3ZlL3Jlc2l6ZS9zY3JvbGwgd2Ugbm93IG1hdGNoIElFIGFuZCB0cmVhdCBtaXNzaW5nIGFyZ3Vt
ZW50cyBhcyAwLgorICAgICAgICBGb3IgQ2xpcGJvYXJkIHdlIG5vdyBtYXRjaCBHZWNrbyBhbmQg
SUUgYW5kIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIHNldERhdGEgaXMgY2FsbGVkIHdpdGggdG9v
IGZldyBhcmd1bWVudHMuCisKKyAgICAgICAgVGVzdDogZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJv
cC1zZXQtZHJhZy1kYXRhLWFyZ3VtZW50cy5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1NWR0xlbmd0aEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0xlbmd0aDo6Y29u
dmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKTogUmVt
b3ZlIFJlcXVpcmVzQWxsQXJndW1lbnRzLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKTog
RGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2Jq
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmou
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
T2JqLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3Vy
ZVY4VGVzdE9ialRlbXBsYXRlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmlkbDogUmVtb3Zl
IFtSZXF1aXJlQWxsQXJndW1lbnRzXSBmcm9tIHNldERhdGEgd2hpY2ggYWN0dWFsbHkgbWVhbnMg
d2Ugbm93IHJlcXVpcmUgYWxsIGFyZ3VtZW50cyBhbmQgdGhyb3cgaW5zdGVhZCBvZiBzaWxlbnRs
eSBmYWlsLgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDogVHJlYXQgbWlzc2luZyBhcmd1
bWVudHMgYXMgMCB3aGljaCBtYWtlcyB1cyBtYXRjaCBJRS4KKyAgICAgICAgKiB3ZWJzb2NrZXRz
L1dlYlNvY2tldC5pZGw6IENvbW1lbnQgY2hhbmdlcyBvbmx5LgorCiAyMDExLTExLTExICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBU
ZXh0VHJhY2tMaXN0IGFuZCB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb2YgSFRNTE1lZGlhRWxl
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20u
Y3BwCmluZGV4IDQwM2JmYWNjMGRjN2I2YmRhZWE4ZmZhMDgxYWEyNGE5MDExM2VkOGMuLjI3Yzhh
Y2JhMjVlY2Y4OGE5OGJmZWVhMzlhOWQ1MTIwMDk2NDk5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAKQEAgLTc3LDcgKzc3LDYgQEAg
SlNWYWx1ZSBKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMoRXhlY1N0YXRlKiBl
eGVjKQogCiAgICAgU1ZHTGVuZ3RoJiBwb2RJbXAgPSBpbXBsKCktPnByb3BlcnR5UmVmZXJlbmNl
KCk7CiAKLSAgICAvLyBNaW1pYyB0aGUgYmVoYXZpb3VyIG9mIFJlcXVpcmVzQWxsQXJndW1lbnRz
PVJhaXNlLgogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiTm90IGVub3VnaCBh
cmd1bWVudHMiKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNDc2Zjk4MzE3OWY5MTI2MmQyZjQxYTA4Y2VmOGJmODVi
NDdiMDZjMS4uNDE3YzUxMDA1NjI3NTFjMWQ3YjlkMGQ2NzQ4YjlhZGFhYWFjYWE0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTIyNTIsMTEgKzIyNTIsNyBAQCBzdWIgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrCiAg
ICAgaWYgKCRudW1NYW5kYXRvcnlQYXJhbXMgPj0gMSkKICAgICB7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgJG51bU1hbmRhdG9y
eVBhcmFtcylcbiIpOwotICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJSZXF1aXJlc0FsbEFyZ3VtZW50cyJ9KSB7Ci0gICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7XG4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgXCJOb3QgZW5vdWdoIGFyZ3VtZW50c1wiKSk7XG4iKTsKLSAgICAgICAgfQorICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIFwiTm90IGVub3VnaCBhcmd1bWVudHNcIikpO1xuIik7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCmluZGV4IDQ1ZTM3MmMzODQxZTJkN2NmODIwYjZkNjY1MjU4Y2JlNmQ4YWRl
MTQuLjMxZTNkNWMyODRkYWJkZWViMWM5OWRiN2NiODMwOWNlMjgyN2I4NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0x
NDMxLDExICsxNDMxLDcgQEAgc3ViIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjawogICAgIG15
ICRhcmd1bWVudHNDb3VudENoZWNrU3RyaW5nID0gIiI7CiAgICAgaWYgKCRudW1NYW5kYXRvcnlQ
YXJhbXMgPj0gMSkgewogICAgICAgICAkYXJndW1lbnRzQ291bnRDaGVja1N0cmluZyAuPSAiICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgJG51bU1hbmRhdG9yeVBhcmFtcylcbiI7Ci0gICAgICAgIGlm
ICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcXVpcmVzQWxs
QXJndW1lbnRzIn0pIHsKLSAgICAgICAgICAgICRhcmd1bWVudHNDb3VudENoZWNrU3RyaW5nIC49
ICIgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiI7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAkYXJndW1lbnRzQ291bnRDaGVja1N0cmluZyAuPSAiICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihcIk5vdCBlbm91Z2ggYXJndW1lbnRzXCIsIFY4UHJveHk6OlR5
cGVFcnJvcik7XG4iOwotICAgICAgICB9CisgICAgICAgICRhcmd1bWVudHNDb3VudENoZWNrU3Ry
aW5nIC49ICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFwiTm90IGVub3VnaCBhcmd1bWVudHNc
IiwgVjhQcm94eTo6VHlwZUVycm9yKTtcbiI7CiAgICAgfQogICAgIHJldHVybiAkYXJndW1lbnRz
Q291bnRDaGVja1N0cmluZzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCmluZGV4IDBmY2E3NDIwY2Jk
YTgwNjM5OWUyN2YwYjUxOWE4ZWRlMDkxMDQ4ZTUuLmE1Y2I2MzY3NmZhMDUzZTk5NzNlYWM1ZjQx
ZmNmMmUxNDIxYTcxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcApAQCAtNjk5LDE0ICs2OTksNiBA
QCBXZWJET01UZXN0T2JqIFdlYkRPTVRlc3RPYmo6Om9iak1ldGhvZFdpdGhBcmdzKGludCBpbnRB
cmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgcwogICAgIHJldHVybiB0b1dlYktpdChXVEY6OmdldFB0
cihpbXBsKCktPm9iak1ldGhvZFdpdGhBcmdzKGludEFyZywgc3RyQXJnLCB0b1dlYkNvcmUob2Jq
QXJnKSkpKTsKIH0KIAotV2ViRE9NVGVzdE9iaiBXZWJET01UZXN0T2JqOjptZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzKGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0
T2JqJiBvYmpBcmcpCi17Ci0gICAgaWYgKCFpbXBsKCkpCi0gICAgICAgIHJldHVybiBXZWJET01U
ZXN0T2JqKCk7Ci0KLSAgICByZXR1cm4gdG9XZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgpLT5tZXRo
b2RUaGF0UmVxdWlyZXNBbGxBcmdzKHN0ckFyZywgdG9XZWJDb3JlKG9iakFyZykpKSk7Ci19Ci0K
IFdlYkRPTVRlc3RPYmogV2ViRE9NVGVzdE9iajo6bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0Fu
ZFRocm93cyhjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYg
b2JqQXJnKQogewogICAgIGlmICghaW1wbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAppbmRleCBmMDQyN2Vh
NDY4M2I5ZThiY2U2NDc4ZWQ4MmExYThjMjQ4YzM0OWEyLi5jNGFiYjNjOTQwOWY4MTMxZTlkNzVh
ZjJlZGNjNTczYjc1MzJhY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaApAQCAtMTUxLDcgKzE1MSw2IEBA
IHB1YmxpYzoKICAgICBpbnQgaW50TWV0aG9kV2l0aEFyZ3MoaW50IGludEFyZywgY29uc3QgV2Vi
RE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZyk7CiAgICAgV2Vi
RE9NVGVzdE9iaiBvYmpNZXRob2QoKTsKICAgICBXZWJET01UZXN0T2JqIG9iak1ldGhvZFdpdGhB
cmdzKGludCBpbnRBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01U
ZXN0T2JqJiBvYmpBcmcpOwotICAgIFdlYkRPTVRlc3RPYmogbWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJncyhjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2Jq
QXJnKTsKICAgICBXZWJET01UZXN0T2JqIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJv
d3MoY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFy
Zyk7CiAgICAgdm9pZCBzZXJpYWxpemVkVmFsdWUoY29uc3QgV2ViRE9NU3RyaW5nJiBzZXJpYWxp
emVkQXJnKTsKICAgICB2b2lkIGlkYktleShjb25zdCBXZWJET01JREJLZXkmIGtleSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDc0OTExM2JhNjc4YjQxMGVhNWFjZTBm
YjBkZGQwNTk3MjJjYzQ3MTcuLjI1YWEyYjZiZmM5OGJiYjIwZTM1OWIyZTI1MGI2OTIyNzgyYWNj
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC0xNDEsMjUgKzE0MSw2
IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfb2JqX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgZ2xvbmcgaW50X2FyZywKIH0KIAogV2ViS2l0RE9NVGVzdE9iaioKLXdlYmtp
dF9kb21fdGVzdF9vYmpfbWV0aG9kX3RoYXRfcmVxdWlyZXNfYWxsX2FyZ3MoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHN0cl9hcmcsIFdlYktpdERPTVRlc3RPYmoqIG9ial9h
cmcpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7Ci0gICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVt
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0cl9hcmcs
IDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9ial9hcmcsIDApOwotICAgIFdURjo6U3Ry
aW5nIGNvbnZlcnRlZF9zdHJfYXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cl9hcmcpOwot
ICAgIFdlYkNvcmU6OlRlc3RPYmogKiBjb252ZXJ0ZWRfb2JqX2FyZyA9IE5VTEw7Ci0gICAgaWYg
KG9ial9hcmcgIT0gTlVMTCkgewotICAgICAgICBjb252ZXJ0ZWRfb2JqX2FyZyA9IFdlYktpdDo6
Y29yZShvYmpfYXJnKTsKLSAgICAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29udmVydGVkX29i
al9hcmcsIDApOwotICAgIH0KLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdfcmVz
ID0gV1RGOjpnZXRQdHIoaXRlbS0+bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncyhjb252ZXJ0ZWRf
c3RyX2FyZywgY29udmVydGVkX29ial9hcmcpKTsKLSAgICBXZWJLaXRET01UZXN0T2JqKiByZXMg
PSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotV2ViS2l0
RE9NVGVzdE9iaioKIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3RoYXRfcmVxdWlyZXNfYWxs
X2FyZ3NfYW5kX3Rocm93cyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3Ry
X2FyZywgV2ViS2l0RE9NVGVzdE9iaiogb2JqX2FyZywgR0Vycm9yICoqZXJyb3IpCiB7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmgKaW5kZXggZjhmMmQwMzg2YmE0NjJmZDA0NzQ5NGVkZDQ1OTRjMDk4NjU5YTJlYS4uNzg0ZjFi
Njc5NGQ4MTc4NDJhNWRjYjU2MjgyOTNmYWZkMzlmYWQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RPYmouaApAQCAtMTE2LDE4ICsxMTYsNiBAQCBXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RP
YmoqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29ial9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGdsb25nIGludF9hcmcsIGNvbnN0IGdjaGFyKiBzdHJfYXJnLCBXZWJLaXRE
T01UZXN0T2JqKiBvYmpfYXJnKTsKIAogLyoqCi0gKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhv
ZF90aGF0X3JlcXVpcmVzX2FsbF9hcmdzOgotICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoK
LSAqIEBzdHJfYXJnOiBBICNnY2hhcgotICogQG9ial9hcmc6IEEgI1dlYktpdERPTVRlc3RPYmoK
LSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6Ci0gKgotKiovCi1XRUJLSVRfQVBJIFdl
YktpdERPTVRlc3RPYmoqCi13ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF90aGF0X3JlcXVpcmVz
X2FsbF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBzdHJfYXJnLCBX
ZWJLaXRET01UZXN0T2JqKiBvYmpfYXJnKTsKLQotLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X21ldGhvZF90aGF0X3JlcXVpcmVzX2FsbF9hcmdzX2FuZF90aHJvd3M6CiAgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdE9iagogICogQHN0cl9hcmc6IEEgI2djaGFyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGZl
YzNmYTI0YzFiOGJhNGEzMWM2MTgxMmEwNDRkNzFjYjM2Y2RiOGEuLmMyOWNjZTZjNTFmMGFmMjA1
NTgwODI0ZTdhZjYwMDBlNGFiYTFlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0yNDcsNyArMjQ3LDYgQEAg
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQogICAgIHsgImludE1ldGhvZFdpdGhBcmdzIiwgRG9udERlbGV0ZSB8IEZ1bmN0aW9uLCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uSW50TWV0aG9kV2l0aEFyZ3MpLCAoaW50cHRyX3QpMyBUSFVOS19HRU5FUkFUT1IoMCkg
SU5UUklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0sCiAgICAgeyAib2JqTWV0aG9kIiwgRG9udERl
bGV0ZSB8IEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKSwgKGludHB0cl90KTAgVEhVTktfR0VO
RVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9LAogICAgIHsgIm9iak1ldGhv
ZFdpdGhBcmdzIiwgRG9udERlbGV0ZSB8IEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFy
Z3MpLCAoaW50cHRyX3QpMyBUSFVOS19HRU5FUkFUT1IoMCkgSU5UUklOU0lDKERGRzo6Tm9JbnRy
aW5zaWMpIH0sCi0gICAgeyAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncyIsIERvbnREZWxldGUg
fCBGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3MpLCAoaW50cHRyX3Qp
MiBUSFVOS19HRU5FUkFUT1IoMCkgSU5UUklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0sCiAgICAg
eyAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIsIERvbnREZWxldGUgfCBGdW5j
dGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpLCAoaW50cHRy
X3QpMiBUSFVOS19HRU5FUkFUT1IoMCkgSU5UUklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0sCiAg
ICAgeyAic2VyaWFsaXplZFZhbHVlIiwgRG9udERlbGV0ZSB8IEZ1bmN0aW9uLCAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2Vy
aWFsaXplZFZhbHVlKSwgKGludHB0cl90KTEgVEhVTktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhE
Rkc6Ok5vSW50cmluc2ljKSB9LAogICAgIHsgImlkYktleSIsIERvbnREZWxldGUgfCBGdW5jdGlv
biwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbklkYktleSksIChpbnRwdHJfdCkxIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5T
SUMoREZHOjpOb0ludHJpbnNpYykgfSwKQEAgLTExNDksMjcgKzExNDgsNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0
aEFyZ3MoRXhlY1N0YQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3MoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwotICAgIGlmICghdGhpc1ZhbHVlLmlu
aGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOwotICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVz
dE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKLSAgICBUZXN0T2JqKiBpbXAgPSBz
dGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyh1c3RyaW5nVG9TdHJpbmcoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgTWlzc2luZ0lzVW5kZWZpbmVkKS5pc0VtcHR5
KCkgPyBVU3RyaW5nKCkgOiBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBNaXNzaW5n
SXNVbmRlZmluZWQpLnRvU3RyaW5nKGV4ZWMpKSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
IFRlc3RPYmoqIG9iakFyZyh0b1Rlc3RPYmooTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MSwgTWlzc2luZ0lzVW5kZWZpbmVkKSkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIEpT
Qzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEY6OmdldFB0cihpbXAtPm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3Moc3RyQXJnLCBvYmpB
cmcpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhh
dFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggMzBkMjhiZjZl
YWVlZWEzMjNhYmM2YzU1YjRlOTI4Y2ZjZjExMGEwZC4uMDRjZTU2MjI5YzYzMzI2ZTI4NWE3MTAy
Y2ViMWRjMmM0YWRiNjdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtMTM2LDcgKzEzNiw2IEBAIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkludE1ldGhv
ZChKU0M6OkV4ZWNTCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25JbnRNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2JqTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhKU0M6OkV4
ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncyhKU0M6OkV4ZWNTdGF0ZSop
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhKU0M6OkV4ZWNTdGF0ZSop
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uU2VyaWFsaXplZFZhbHVlKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JZGJLZXkoSlNDOjpF
eGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmouaAppbmRleCAxZThjYjBiNWVhMGJmN2Y3ODRjNjJmMWUyYTAw
ZWM3MWM5ODljMTczLi42ZGQxMWQ0MTdiYzE3ZjUxMDljNjJmOGUyMTVhYWQ1NzgzYzY5MGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE9iai5oCkBAIC0xNDIsNyArMTQyLDYgQEAgZW51bSB7CiAtIChpbnQpaW50TWV0aG9k
V2l0aEFyZ3M6KGludClpbnRBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERP
TVRlc3RPYmogKilvYmpBcmc7CiAtIChET01UZXN0T2JqICopb2JqTWV0aG9kOwogLSAoRE9NVGVz
dE9iaiAqKW9iak1ldGhvZFdpdGhBcmdzOihpbnQpaW50QXJnIHN0ckFyZzooTlNTdHJpbmcgKilz
dHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOwotLSAoRE9NVGVzdE9iaiAqKW1ldGhv
ZFRoYXRSZXF1aXJlc0FsbEFyZ3M6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9i
aiAqKW9iakFyZzsKIC0gKERPTVRlc3RPYmogKiltZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmc7CiAt
ICh2b2lkKXNlcmlhbGl6ZWRWYWx1ZTooTlNTdHJpbmcgKilzZXJpYWxpemVkQXJnOwogLSAodm9p
ZClpZGJLZXk6KERPTUlEQktleSAqKWtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCmluZGV4IDk2ZmVjZTQ1NGE1
NjQ0MzdlNTI5NWQyMmE1MmYzNTJhNTA4ZjM2NGIuLjFjZjQ5YzE5ODQxYjg5YWUwMjI2YmRlYmJl
ODNjYzBkNWExYzM4OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtNTc0LDEyICs1NzQsNiBAQAogICAg
IHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+b2JqTWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBz
dHJBcmcsIGNvcmUob2JqQXJnKSkpKTsKIH0KIAotLSAoRE9NVGVzdE9iaiAqKW1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3M6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9i
akFyZwotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBy
ZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3Moc3Ry
QXJnLCBjb3JlKG9iakFyZykpKSk7Ci19Ci0KIC0gKERPTVRlc3RPYmogKiltZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzQW5kVGhyb3dzOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RP
YmogKilvYmpBcmcKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwK
aW5kZXggNDI4MjM5ZjBiNmFhMDliNzA0ZDZlMzU1MjBkOGQxYjc0YmZmMGEzMy4uOTg2NGExYTMz
Y2I4MzQ1NzE5MTNiMjYyMTFiOTQ1ZTg0ZjljYWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtNzEsNyArNzEsNiBAQCBtb2R1
bGUgdGVzdCB7CiAgICAgICAgIFRlc3RPYmogb2JqTWV0aG9kKCk7CiAgICAgICAgIFRlc3RPYmog
b2JqTWV0aG9kV2l0aEFyZ3MoaW4gbG9uZyBpbnRBcmcsIGluIERPTVN0cmluZyBzdHJBcmcsIGlu
IFRlc3RPYmogb2JqQXJnKTsKIAotICAgICAgICBbUmVxdWlyZXNBbGxBcmd1bWVudHNdIFRlc3RP
YmogbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncyhpbiBET01TdHJpbmcgc3RyQXJnLCBpbiBUZXN0
T2JqIG9iakFyZyk7CiAgICAgICAgIFRlc3RPYmogbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0Fu
ZFRocm93cyhpbiBET01TdHJpbmcgc3RyQXJnLCBpbiBUZXN0T2JqIG9iakFyZykKICAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDRmOTEzYmZjNGVmMzA4
ODU2OWQ4MzM3NmY0NjdhZWNhM2E0MTYwMmQuLjY4YTk1ZDg5NmRlMjkxMmU1ZGRiYmUxMjU4ZjA1
NWNjNTUxMjI4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC03NzIsMTcgKzc3Miw2IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gb2JqTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzCiAgICAgcmV0dXJuIHRvVjgoaW1wLT5vYmpNZXRob2RXaXRoQXJncyhpbnRB
cmcsIHN0ckFyZywgb2JqQXJnKSk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5tZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzIik7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQotICAgICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7Ci0gICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JM
T0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywg
MCwgTWlzc2luZ0lzVW5kZWZpbmVkKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBv
YmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJn
cywgMSwgTWlzc2luZ0lzVW5kZWZpbmVkKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgTWlz
c2luZ0lzVW5kZWZpbmVkKSkpIDogMCk7Ci0gICAgcmV0dXJuIHRvVjgoaW1wLT5tZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzKHN0ckFyZywgb2JqQXJnKSk7Ci19Ci0KIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0NhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5t
ZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzIik7CkBAIC0xNTUzLDEyICsxNTQyLDYg
QEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVW
OFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+
IG9iak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG9i
ak1ldGhvZFdpdGhBcmdzQXJnYywgb2JqTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+
U2V0KHY4OjpTdHJpbmc6Ok5ldygib2JqTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhUZXN0T2JqSW50ZXJuYWw6Om9iak1ldGhvZFdpdGhBcmdzQ2FsbGJhY2ssIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpLCBvYmpNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCi0g
ICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncycKLSAgICBj
b25zdCBpbnQgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FyZ2MgPSAyOwotICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBcmd2W21l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4oKSwgVjhUZXN0T2JqOjpHZXRSYXdUZW1wbGF0ZSgpIH07Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzU2lnbmF0dXJlID0gdjg6
OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBcmdjLCBtZXRo
b2RUaGF0UmVxdWlyZXNBbGxBcmdzQXJndik7Ci0gICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpO
ZXcoIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NDYWxsYmFjaywgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KCksIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NTaWduYXR1cmUp
KTsKLQogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NB
bmRUaHJvd3MnCiAgICAgY29uc3QgaW50IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJv
d3NBcmdjID0gMjsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RU
aGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdz
QW5kVGhyb3dzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4
VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NsaXBib2FyZC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmlkbAppbmRl
eCBiYjdiYjI1Mjg2NDA2MzNmNjdkNjg4Y2NhNmQxN2NkNmUyNmUwZmZiLi45NTQ1NjA3NmI1NDU5
NmUwODhmMDA5NGRhN2MzNzJiYzBmYjExZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmlkbApA
QCAtMzgsOCArMzgsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXREYXRhKGluIERPTVN0cmluZyB0eXBl
KQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIC8vIEZJWE1FOiBS
ZXF1aXJlc0FsbEFyZ3VtZW50cyBpcyBwcm9iYWJseSBib2d1cyBoZXJlLgotICAgICAgICBbUmVx
dWlyZXNBbGxBcmd1bWVudHNdIGJvb2xlYW4gc2V0RGF0YShpbiBET01TdHJpbmcgdHlwZSwgaW4g
RE9NU3RyaW5nIGRhdGEpOworICAgICAgICBib29sZWFuIHNldERhdGEoaW4gRE9NU3RyaW5nIHR5
cGUsIGluIERPTVN0cmluZyBkYXRhKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXREcmFnSW1h
Z2UoaW4gSFRNTEltYWdlRWxlbWVudCBpbWFnZSwgaW4gbG9uZyB4LCBpbiBsb25nIHkpCiAgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CmluZGV4IGM4MmFiNjYzM2FlOWY0MWJlYzVmYzczYTQwNmRiYTAzZGMwMjljZDcuLjY0M2YzZTA1
YzliYjZmZDFkOTNjM2RiNzkyZjYwYWMyZGRmMTAzYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwKQEAgLTEwNiwxMyArMTA2LDEzIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgbG9uZyBwYWdlWE9mZnNldDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgcGFnZVlPZmZzZXQ7CiAKLSAgICAgICAgW1JlcXVpcmVzQWxsQXJndW1lbnRzXSB2
b2lkIHNjcm9sbEJ5KGluIGxvbmcgeCwgaW4gbG9uZyB5KTsKLSAgICAgICAgW1JlcXVpcmVzQWxs
QXJndW1lbnRzXSB2b2lkIHNjcm9sbFRvKGluIGxvbmcgeCwgaW4gbG9uZyB5KTsKLSAgICAgICAg
W1JlcXVpcmVzQWxsQXJndW1lbnRzXSB2b2lkIHNjcm9sbChpbiBsb25nIHgsIGluIGxvbmcgeSk7
Ci0gICAgICAgIFtSZXF1aXJlc0FsbEFyZ3VtZW50c10gdm9pZCBtb3ZlQnkoaW4gZmxvYXQgeCwg
aW4gZmxvYXQgeSk7IC8vIEZJWE1FOiB0aGlzIHNob3VsZCB0YWtlIGxvbmdzIG5vdCBmbG9hdHMu
Ci0gICAgICAgIFtSZXF1aXJlc0FsbEFyZ3VtZW50c10gdm9pZCBtb3ZlVG8oaW4gZmxvYXQgeCwg
aW4gZmxvYXQgeSk7IC8vIEZJWE1FOiB0aGlzIHNob3VsZCB0YWtlIGxvbmdzIG5vdCBmbG9hdHMu
Ci0gICAgICAgIFtSZXF1aXJlc0FsbEFyZ3VtZW50c10gdm9pZCByZXNpemVCeShpbiBmbG9hdCB4
LCBpbiBmbG9hdCB5KTsgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHRha2UgbG9uZ3Mgbm90IGZsb2F0
cy4KLSAgICAgICAgW1JlcXVpcmVzQWxsQXJndW1lbnRzXSB2b2lkIHJlc2l6ZVRvKGluIGZsb2F0
IHdpZHRoLCBpbiBmbG9hdCBoZWlnaHQpOyAvLyBGSVhNRTogdGhpcyBzaG91bGQgdGFrZSBsb25n
cyBub3QgZmxvYXRzLgorICAgICAgICB2b2lkIHNjcm9sbEJ5KGluIFtPcHRpb25hbD1DYWxsV2l0
aERlZmF1bHRWYWx1ZV0gbG9uZyB4LCBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVd
IGxvbmcgeSk7CisgICAgICAgIHZvaWQgc2Nyb2xsVG8oaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVm
YXVsdFZhbHVlXSBsb25nIHgsIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gbG9u
ZyB5KTsKKyAgICAgICAgdm9pZCBzY3JvbGwoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZh
bHVlXSBsb25nIHgsIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gbG9uZyB5KTsK
KyAgICAgICAgdm9pZCBtb3ZlQnkoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBm
bG9hdCB4LCBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGZsb2F0IHkpOyAvLyBG
SVhNRTogdGhpcyBzaG91bGQgdGFrZSBsb25ncyBub3QgZmxvYXRzLgorICAgICAgICB2b2lkIG1v
dmVUbyhpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGZsb2F0IHgsIGluIFtPcHRp
b25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gZmxvYXQgeSk7IC8vIEZJWE1FOiB0aGlzIHNob3Vs
ZCB0YWtlIGxvbmdzIG5vdCBmbG9hdHMuCisgICAgICAgIHZvaWQgcmVzaXplQnkoaW4gW09wdGlv
bmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBmbG9hdCB4LCBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhE
ZWZhdWx0VmFsdWVdIGZsb2F0IHkpOyAvLyBGSVhNRTogdGhpcyBzaG91bGQgdGFrZSBsb25ncyBu
b3QgZmxvYXRzLgorICAgICAgICB2b2lkIHJlc2l6ZVRvKGluIFtPcHRpb25hbD1DYWxsV2l0aERl
ZmF1bHRWYWx1ZV0gZmxvYXQgd2lkdGgsIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1
ZV0gZmxvYXQgaGVpZ2h0KTsgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHRha2UgbG9uZ3Mgbm90IGZs
b2F0cy4KIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0RvTm90Q2hlY2tEb21haW5TZWN1
cml0eV0gYm9vbGVhbiBjbG9zZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmlkbAppbmRleCBjYjUwZWI2MWQxNjU5ODEwMmQ1ZGRjODIwYTI0YTA5ODEyMWNkMDMxLi40YzA5
ZWMxYzA1ZTk0N2YxZjViMGY2ZDI4ZGVkODMwY2QzZWVhNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaWRsCkBAIC02Nyw5ICs2Nyw5IEBAIG1vZHVsZSB3ZWJzb2NrZXRz
IHsKICAgICAgICAgLy8gc2hvdWxkIGFjY2VwdCBhbnl0aGluZyB0aGF0IGNhbiBiZSBjb252ZXJ0
ZWQgdG8gYSBzdHJpbmcgKGluY2x1ZGluZyBudW1iZXJzLAogICAgICAgICAvLyBib29sZWFucywg
bnVsbCwgdW5kZWZpbmVkIGFuZCBvYmplY3RzIGV4Y2VwdCBBcnJheUJ1ZmZlciBhbmQgQmxvYiku
IEN1cnJlbnQgY29kZQogICAgICAgICAvLyBnZW5lcmF0b3IgZG9lcyBub3QgaGFuZGxlIHRoaXMg
cnVsZSBjb3JyZWN0bHkuCi0gICAgICAgIC8vIFtSZXF1aXJlc0FsbEFyZ3VtZW50c10gYm9vbGVh
biBzZW5kKGluIEFycmF5QnVmZmVyIGRhdGEpIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAg
ICAvLyBbUmVxdWlyZXNBbGxBcmd1bWVudHNdIGJvb2xlYW4gc2VuZChpbiBCbG9iIGRhdGEpIHJh
aXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICAvLyBbUmVxdWlyZXNBbGxBcmd1bWVudHNdIGJv
b2xlYW4gc2VuZChpbiBET01TdHJpbmcgZGF0YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIC8vIGJvb2xlYW4gc2VuZChpbiBBcnJheUJ1ZmZlciBkYXRhKSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKyAgICAgICAgLy8gYm9vbGVhbiBzZW5kKGluIEJsb2IgZGF0YSkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIC8vIGJvb2xlYW4gc2VuZChpbiBET01TdHJpbmcgZGF0YSkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtDdXN0b21dIGJvb2xlYW4gc2VuZChpbiBET01T
dHJpbmcgZGF0YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudCBhbmQgYXBwbHkgW0NsYW1wXSBhdHRyaWJ1dGUgaW5zdGVhZCBvZiBbQ3VzdG9tXS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjN2U0OWE4YmI0MDUwMDBkNDlmYjVmMjZjYmJlNTk2YjYwYzg4MDQwLi5kMWNiODNl
NzEzMjc1NGE5YzgwZDlhMzNlNmVkNWJiZGNjNDc1NTlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTEtMTEtMTEgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZW1vdmUgUmVxdWlyZXNBbGxBcmd1bWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6ZS1hbmQt
bW92ZS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcmVzaXplLWFuZC1tb3ZlLWFyZ3VtZW50cy5odG1sOiBUcmVhdCBtaXNzaW5nIGFyZ3Vt
ZW50cyBhcyAwLgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctc2Nyb2xsLWFyZ3Vt
ZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1zY3Jv
bGwtYXJndW1lbnRzLmh0bWw6IERpdHRvLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2RyYWctYW5k
LWRyb3Atc2V0LWRyYWctZGF0YS1hcmd1bWVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLXNldC1kcmFnLWRhdGEtYXJndW1lbnRzLmh0
bWw6IEFkZGVkLiBUaGlzIHRlc3RzIHRoYXQgd2UgZ2V0IGFuIGV4Y2VwdGlvbiB3aGVuIGNhbGxl
ZCB3aXRoIHRvbyBmZXcgYXJndW1lbnRzLgorCiAyMDExLTExLTExICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBUZXh0VHJhY2tMaXN0
IGFuZCB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb2YgSFRNTE1lZGlhRWxlbWVudApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1yZXNpemUtYW5kLW1vdmUt
YXJndW1lbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcmVzaXplLWFuZC1tb3ZlLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKaW5kZXggMDRiMmUwNzc5
ZWNkMzNkMzY4OTZlYjk2ZTVmOTQzMDk4YjY4ODVkNC4uOWYyMTg5ZGNlN2VmNWFlYTVjYjBmN2U0
MGE0MDkyYThiZjgwMDViNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1yZXNpemUtYW5kLW1vdmUtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6ZS1hbmQtbW92ZS1hcmd1bWVudHMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCB3
ZSBkb24ndCBhbGxvdyBjYWxsaW5nIHRoZSB3aW5kb3cgbW92aW5nIGFuZCByZXNpemluZyBtZXRo
b2RzIHdpdGggbGVzcyB0aGFuIDIgYXJndW1lbnRzIGFuZCB0aGF0IHdlIGRvIGFsbG93IGNhbGxp
bmcgdGhlbSB3aXRoIG1vcmUuCitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGNhbGxpbmcgdGhl
IHdpbmRvdyBtb3ZpbmcgYW5kIHJlc2l6aW5nIG1ldGhvZHMgd2l0aCBsZXNzIHRoYW4gMiBhcmd1
bWVudHMgdHJlYXRzIHRoZSBtaXNzaW5nIGFyZ3VtZW50cyBhcyAwLgogCiBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCiAKQEAgLTEwLDcgKzEwLDcgQEAgVGVzdGluZyAtIHJlc2l6ZVRvIHdpdGgg
MCBhcmd1bWVudHMKIFBBU1Mgd2luZG93Lm91dGVyV2lkdGggaXMgcmVzZXRXaWR0aAogUEFTUyB3
aW5kb3cub3V0ZXJIZWlnaHQgaXMgcmVzZXRIZWlnaHQKIFRlc3RpbmcgLSByZXNpemVUbyB3aXRo
IDEgYXJndW1lbnQKLVBBU1Mgd2luZG93Lm91dGVyV2lkdGggaXMgcmVzZXRXaWR0aAorUEFTUyB3
aW5kb3cub3V0ZXJXaWR0aCBpcyB3aWR0aAogUEFTUyB3aW5kb3cub3V0ZXJIZWlnaHQgaXMgcmVz
ZXRIZWlnaHQKIFRlc3RpbmcgLSByZXNpemVUbyB3aXRoIG1vcmUgdGhhbiAyIGFyZ3VtZW50cwog
UEFTUyB3aW5kb3cub3V0ZXJXaWR0aCBpcyB3aWR0aApAQCAtMjIsNyArMjIsNyBAQCBUZXN0aW5n
IC0gcmVzaXplQnkgd2l0aCAwIGFyZ3VtZW50cwogUEFTUyB3aW5kb3cub3V0ZXJXaWR0aCBpcyBy
ZXNldFdpZHRoCiBQQVNTIHdpbmRvdy5vdXRlckhlaWdodCBpcyByZXNldEhlaWdodAogVGVzdGlu
ZyAtIHJlc2l6ZUJ5IHdpdGggMSBhcmd1bWVudAotUEFTUyB3aW5kb3cub3V0ZXJXaWR0aCBpcyBy
ZXNldFdpZHRoCitQQVNTIHdpbmRvdy5vdXRlcldpZHRoIGlzIHJlc2V0V2lkdGggKyB4CiBQQVNT
IHdpbmRvdy5vdXRlckhlaWdodCBpcyByZXNldEhlaWdodAogVGVzdGluZyAtIHJlc2l6ZUJ5IHdp
dGggbW9yZSB0aGFuIDIgYXJndW1lbnRzCiBQQVNTIHdpbmRvdy5vdXRlcldpZHRoIGlzIHJlc2V0
V2lkdGggKyB4CkBAIC0zNCw3ICszNCw3IEBAIFRlc3RpbmcgLSBtb3ZlVG8gd2l0aCAwIGFyZ3Vt
ZW50cwogUEFTUyB3aW5kb3cuc2NyZWVuWCBpcyByZXNldFgKIFBBU1Mgd2luZG93LnNjcmVlblkg
aXMgcmVzZXRZCiBUZXN0aW5nIC0gbW92ZVRvIHdpdGggMSBhcmd1bWVudAotUEFTUyB3aW5kb3cu
c2NyZWVuWCBpcyByZXNldFgKK1BBU1Mgd2luZG93LnNjcmVlblggaXMgcmVzZXRYICsgeAogUEFT
UyB3aW5kb3cuc2NyZWVuWSBpcyByZXNldFkKIFRlc3RpbmcgLSBtb3ZlVG8gd2l0aCBtb3JlIHRo
YW4gMiBhcmd1bWVudHMKIFBBU1Mgd2luZG93LnNjcmVlblggaXMgeCArIHNjcmVlbi5hdmFpbExl
ZnQKQEAgLTQ2LDcgKzQ2LDcgQEAgVGVzdGluZyAtIG1vdmVCeSB3aXRoIDAgYXJndW1lbnRzCiBQ
QVNTIHdpbmRvdy5zY3JlZW5YIGlzIHJlc2V0WAogUEFTUyB3aW5kb3cuc2NyZWVuWSBpcyByZXNl
dFkKIFRlc3RpbmcgLSBtb3ZlQnkgd2l0aCAxIGFyZ3VtZW50Ci1QQVNTIHdpbmRvdy5zY3JlZW5Y
IGlzIHJlc2V0WAorUEFTUyB3aW5kb3cuc2NyZWVuWCBpcyByZXNldFggKyB4CiBQQVNTIHdpbmRv
dy5zY3JlZW5ZIGlzIHJlc2V0WQogVGVzdGluZyAtIG1vdmVCeSB3aXRoIG1vcmUgdGhhbiAyIGFy
Z3VtZW50cwogUEFTUyB3aW5kb3cuc2NyZWVuWCBpcyByZXNldFggKyB4CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXJlc2l6ZS1hbmQtbW92ZS1hcmd1bWVu
dHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcmVzaXplLWFuZC1t
b3ZlLWFyZ3VtZW50cy5odG1sCmluZGV4IGY3YzY4Zjc1YmFlNTg0OTFlNzIzZjg5MWFmNmI4ZjRk
NmMwNDA4ZjMuLjUwYTZlOTZkZmU4MzEzY2I5MWY4NjIxMjlkMDliZDY0Nzk0Y2FkN2EgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcmVzaXplLWFuZC1tb3Zl
LWFyZ3VtZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cmVzaXplLWFuZC1tb3ZlLWFyZ3VtZW50cy5odG1sCkBAIC0zMCw4ICszMCw4IEBACiAKICAgICBy
ZXNldCgpOwogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgd2Ug
ZG9uJ3QgYWxsb3cgY2FsbGluZyB0aGUgd2luZG93IG1vdmluZyBhbmQgcmVzaXppbmdcCi0gICAg
bWV0aG9kcyB3aXRoIGxlc3MgdGhhbiAyIGFyZ3VtZW50cyBhbmQgdGhhdCB3ZSBkbyBhbGxvdyBj
YWxsaW5nIHRoZW0gd2l0aCBtb3JlLiIpOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFr
ZXMgc3VyZSB0aGF0IGNhbGxpbmcgdGhlIHdpbmRvdyBtb3ZpbmcgYW5kIHJlc2l6aW5nXAorICAg
IG1ldGhvZHMgd2l0aCBsZXNzIHRoYW4gMiBhcmd1bWVudHMgdHJlYXRzIHRoZSBtaXNzaW5nIGFy
Z3VtZW50cyBhcyAwLiIpOwogCiAgICAgLy8gcmVzaXplVG8gLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwogICAgIGRlYnVnKCcnKTsKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogICAgIGRlYnVnKCJUZXN0
aW5nIC0gcmVzaXplVG8gd2l0aCAxIGFyZ3VtZW50Iik7CiAgICAgd2luZG93LnJlc2l6ZVRvKHgp
OwotICAgIHNob3VsZEJlKCd3aW5kb3cub3V0ZXJXaWR0aCcsICdyZXNldFdpZHRoJyk7CisgICAg
c2hvdWxkQmUoJ3dpbmRvdy5vdXRlcldpZHRoJywgJ3dpZHRoJyk7CiAgICAgc2hvdWxkQmUoJ3dp
bmRvdy5vdXRlckhlaWdodCcsICdyZXNldEhlaWdodCcpOwogICAgIHJlc2V0KCk7CiAKQEAgLTY5
LDcgKzY5LDcgQEAKIAogICAgIGRlYnVnKCJUZXN0aW5nIC0gcmVzaXplQnkgd2l0aCAxIGFyZ3Vt
ZW50Iik7CiAgICAgd2luZG93LnJlc2l6ZUJ5KHgpOwotICAgIHNob3VsZEJlKCd3aW5kb3cub3V0
ZXJXaWR0aCcsICdyZXNldFdpZHRoJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5vdXRlcldpZHRo
JywgJ3Jlc2V0V2lkdGggKyB4Jyk7CiAgICAgc2hvdWxkQmUoJ3dpbmRvdy5vdXRlckhlaWdodCcs
ICdyZXNldEhlaWdodCcpOwogICAgIHJlc2V0KCk7CiAKQEAgLTkzLDcgKzkzLDcgQEAKIAogICAg
IGRlYnVnKCJUZXN0aW5nIC0gbW92ZVRvIHdpdGggMSBhcmd1bWVudCIpOwogICAgIHdpbmRvdy5t
b3ZlVG8oeCk7Ci0gICAgc2hvdWxkQmUoJ3dpbmRvdy5zY3JlZW5YJywgJ3Jlc2V0WCcpOworICAg
IHNob3VsZEJlKCd3aW5kb3cuc2NyZWVuWCcsICdyZXNldFggKyB4Jyk7CiAgICAgc2hvdWxkQmUo
J3dpbmRvdy5zY3JlZW5ZJywgJ3Jlc2V0WScpOwogICAgIHJlc2V0KCk7CiAKQEAgLTExOCw3ICsx
MTgsNyBAQAogCiAgICAgZGVidWcoIlRlc3RpbmcgLSBtb3ZlQnkgd2l0aCAxIGFyZ3VtZW50Iik7
CiAgICAgd2luZG93Lm1vdmVCeSh4KTsKLSAgICBzaG91bGRCZSgnd2luZG93LnNjcmVlblgnLCAn
cmVzZXRYJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5zY3JlZW5YJywgJ3Jlc2V0WCArIHgnKTsK
ICAgICBzaG91bGRCZSgnd2luZG93LnNjcmVlblknLCAncmVzZXRZJyk7CiAgICAgcmVzZXQoKTsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1zY3JvbGwt
YXJndW1lbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctc2Nyb2xsLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKaW5kZXggZDM0ZjlkOTRhYjBlNjBjZjAy
ZmUzMzIxOGU3NDRhZjE3MTk3ZTg3ZC4uYjA0NDUyZDYwZjI3YTcyZWFiNDllNDAyN2RjMzNkN2Zj
NDAyMDM3YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1z
Y3JvbGwtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXNjcm9sbC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBA
QAotVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCB3ZSBkb24ndCBhbGxvdyBjYWxsaW5nIHRoZSB3
aW5kb3cgc2Nyb2xsaW5nIG1ldGhvZHMgd2l0aCBsZXNzIHRoYW4gMiBhcmd1bWVudHMgYW5kIHRo
YXQgd2UgZG8gYWxsb3cgY2FsbGluZyB0aGVtIHdpdGggbW9yZS4KK1RoaXMgdGVzdCBtYWtlcyBz
dXJlIHRoYXQgY2FsbGluZyB0aGUgd2luZG93IHNjcm9sbGluZyBtZXRob2RzIHdpdGggbGVzcyB0
aGFuIDIgYXJndW1lbnRzIHRyZWF0cyB0aGUgbWlzc2luZyBhcmd1bWVudHMgYXMgMC4KIAogT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkBAIC0xMCw3ICsxMCw3IEBAIFRlc3RpbmcgLSBzY3Jv
bGxUbyB3aXRoIDAgYXJndW1lbnRzCiBQQVNTIHdpbmRvdy5zY3JvbGxYIGlzIHJlc2V0WAogUEFT
UyB3aW5kb3cuc2Nyb2xsWSBpcyByZXNldFkKIFRlc3RpbmcgLSBzY3JvbGxUbyB3aXRoIDEgYXJn
dW1lbnQKLVBBU1Mgd2luZG93LnNjcm9sbFggaXMgcmVzZXRYCitQQVNTIHdpbmRvdy5zY3JvbGxY
IGlzIHJlc2V0WCArIHgKIFBBU1Mgd2luZG93LnNjcm9sbFkgaXMgcmVzZXRZCiBUZXN0aW5nIC0g
c2Nyb2xsVG8gd2l0aCBtb3JlIHRoYW4gMiBhcmd1bWVudHMKIFBBU1Mgd2luZG93LnNjcm9sbFgg
aXMgeApAQCAtMjIsNyArMjIsNyBAQCBUZXN0aW5nIC0gc2Nyb2xsIHdpdGggMCBhcmd1bWVudHMK
IFBBU1Mgd2luZG93LnNjcm9sbFggaXMgcmVzZXRYCiBQQVNTIHdpbmRvdy5zY3JvbGxZIGlzIHJl
c2V0WQogVGVzdGluZyAtIHNjcm9sbCB3aXRoIDEgYXJndW1lbnQKLVBBU1Mgd2luZG93LnNjcm9s
bFggaXMgcmVzZXRYCitQQVNTIHdpbmRvdy5zY3JvbGxYIGlzIHJlc2V0WCArIHgKIFBBU1Mgd2lu
ZG93LnNjcm9sbFkgaXMgcmVzZXRZCiBUZXN0aW5nIC0gc2Nyb2xsIHdpdGggbW9yZSB0aGFuIDIg
YXJndW1lbnRzCiBQQVNTIHdpbmRvdy5zY3JvbGxYIGlzIHgKQEAgLTM0LDcgKzM0LDcgQEAgVGVz
dGluZyAtIHNjcm9sbEJ5IHdpdGggMCBhcmd1bWVudHMKIFBBU1Mgd2luZG93LnNjcm9sbFggaXMg
cmVzZXRYCiBQQVNTIHdpbmRvdy5zY3JvbGxZIGlzIHJlc2V0WQogVGVzdGluZyAtIHNjcm9sbEJ5
IHdpdGggMSBhcmd1bWVudAotUEFTUyB3aW5kb3cuc2Nyb2xsWCBpcyByZXNldFgKK1BBU1Mgd2lu
ZG93LnNjcm9sbFggaXMgcmVzZXRYICsgeAogUEFTUyB3aW5kb3cuc2Nyb2xsWSBpcyByZXNldFkK
IFRlc3RpbmcgLSBzY3JvbGxCeSB3aXRoIG1vcmUgdGhhbiAyIGFyZ3VtZW50cwogUEFTUyB3aW5k
b3cuc2Nyb2xsWCBpcyByZXNldFggKyB4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXNjcm9sbC1hcmd1bWVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy93aW5kb3ctc2Nyb2xsLWFyZ3VtZW50cy5odG1sCmluZGV4IGViOGIxODVkYjBk
OGZhYjI1NWE0ODNmMDkyOTRmMjE1YTg5NTFhNzMuLjQxY2VmMDkzZTNkOTYzMWFlNTk5NDBlN2M1
YTAyZWEzNThiMmViNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctc2Nyb2xsLWFyZ3VtZW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctc2Nyb2xsLWFyZ3VtZW50cy5odG1sCkBAIC0yNCw4ICsyNCw4IEBACiAKICAg
ICByZXNldCgpOwogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQg
d2UgZG9uJ3QgYWxsb3cgY2FsbGluZyB0aGUgd2luZG93IHNjcm9sbGluZ1wKLSAgICBtZXRob2Rz
IHdpdGggbGVzcyB0aGFuIDIgYXJndW1lbnRzIGFuZCB0aGF0IHdlIGRvIGFsbG93IGNhbGxpbmcg
dGhlbSB3aXRoIG1vcmUuIik7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBtYWtlcyBzdXJl
IHRoYXQgY2FsbGluZyB0aGUgd2luZG93IHNjcm9sbGluZ1wKKyAgICBtZXRob2RzIHdpdGggbGVz
cyB0aGFuIDIgYXJndW1lbnRzIHRyZWF0cyB0aGUgbWlzc2luZyBhcmd1bWVudHMgYXMgMC4iKTsK
IAogICAgIC8vIHNjcm9sbFRvIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICBkZWJ1Zygn
Jyk7CkBAIC00MCw3ICs0MCw3IEBACiAKICAgICBkZWJ1ZygiVGVzdGluZyAtIHNjcm9sbFRvIHdp
dGggMSBhcmd1bWVudCIpOwogICAgIHdpbmRvdy5zY3JvbGxUbyh4KTsKLSAgICBzaG91bGRCZSgn
d2luZG93LnNjcm9sbFgnLCAncmVzZXRYJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5zY3JvbGxY
JywgJ3Jlc2V0WCArIHgnKTsKICAgICBzaG91bGRCZSgnd2luZG93LnNjcm9sbFknLCAncmVzZXRZ
Jyk7CiAgICAgcmVzZXQoKTsKIApAQCAtNjMsNyArNjMsNyBAQAogCiAgICAgZGVidWcoIlRlc3Rp
bmcgLSBzY3JvbGwgd2l0aCAxIGFyZ3VtZW50Iik7CiAgICAgd2luZG93LnNjcm9sbCh4KTsKLSAg
ICBzaG91bGRCZSgnd2luZG93LnNjcm9sbFgnLCAncmVzZXRYJyk7CisgICAgc2hvdWxkQmUoJ3dp
bmRvdy5zY3JvbGxYJywgJ3Jlc2V0WCArIHgnKTsKICAgICBzaG91bGRCZSgnd2luZG93LnNjcm9s
bFknLCAncmVzZXRZJyk7CiAgICAgcmVzZXQoKTsKIApAQCAtODYsNyArODYsNyBAQAogCiAgICAg
ZGVidWcoIlRlc3RpbmcgLSBzY3JvbGxCeSB3aXRoIDEgYXJndW1lbnQiKTsKICAgICB3aW5kb3cu
c2Nyb2xsQnkoeCk7Ci0gICAgc2hvdWxkQmUoJ3dpbmRvdy5zY3JvbGxYJywgJ3Jlc2V0WCcpOwor
ICAgIHNob3VsZEJlKCd3aW5kb3cuc2Nyb2xsWCcsICdyZXNldFggKyB4Jyk7CiAgICAgc2hvdWxk
QmUoJ3dpbmRvdy5zY3JvbGxZJywgJ3Jlc2V0WScpOwogICAgIHJlc2V0KCk7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3Atc2V0LWRyYWctZGF0YS1h
cmd1bWVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZHJhZy1hbmQt
ZHJvcC1zZXQtZHJhZy1kYXRhLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVk
ZGU5NjNmMzlhY2U4YTZjOGZhMThmMjYzODM5Njg1NWZmNDRkYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3Atc2V0LWRyYWctZGF0YS1hcmd1
bWVudHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3RzIGNvcnJlY3QgYmVoYXZp
b3Igb2YgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEgd2l0aCB3cm9uZyBudW1iZXIgb2YgYXJn
dW1lbnRzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGV2ZW50LmRhdGFU
cmFuc2Zlci5zZXREYXRhKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBh
cmd1bWVudHMuCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJUZXh0IikgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0RyYWcgbWUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3Atc2V0LWRyYWctZGF0YS1hcmd1
bWVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3Atc2V0LWRy
YWctZGF0YS1hcmd1bWVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hY2I0MTI0ZWU5OTZiN2FhYjFjZDE3
MzFiMjA4MmFmMjhkMWY5NzU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvZHJhZy1hbmQtZHJvcC1zZXQtZHJhZy1kYXRhLWFyZ3VtZW50cy5odG1sCkBAIC0wLDAg
KzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxkaXYgZHJhZ2dhYmxlPSJ0cnVlIiBp
ZD0iZHJhZ2dlciI+RHJhZyBtZTwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1Rlc3Rz
IGNvcnJlY3QgYmVoYXZpb3Igb2YgZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEgd2l0aCB3cm9u
ZyBudW1iZXIgb2YgYXJndW1lbnRzJyk7CisKK3ZhciBldmVudDsKK3ZhciBub3RFbm91Z2hBcmd1
bWVudHNFcnJvciA9ICciVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cyInOworCit2YXIg
ZHJhZ2dlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcmFnZ2VyJyk7CitkcmFnZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoJ2RyYWdzdGFydCcsIGZ1bmN0aW9uKGUpIHsKKyAgICBldmVudCA9IGU7
CisgICAgc2hvdWxkVGhyb3coJ2V2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKCknLCBub3RFbm91
Z2hBcmd1bWVudHNFcnJvcik7CisgICAgc2hvdWxkVGhyb3coJ2V2ZW50LmRhdGFUcmFuc2Zlci5z
ZXREYXRhKCJUZXh0IiknLCBub3RFbm91Z2hBcmd1bWVudHNFcnJvcik7Cit9LCBmYWxzZSk7CisK
K2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICB2YXIgcmVjdCA9IGRyYWdnZXIuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7CisgICAgdmFyIHggPSByZWN0LmxlZnQgKyByZWN0LndpZHRoIC8g
MjsKKyAgICB2YXIgeSA9IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAg
IGV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDQwMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oeCArIDEwMCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>