<?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>110171</bug_id>
          
          <creation_ts>2013-02-18 18:10:19 -0800</creation_ts>
          <short_desc>StringHasher functions require alignment that call sites do not all guarantee</short_desc>
          <delta_ts>2013-03-11 15:23:50 -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>Web Template Framework</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>835876</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-18 18:10:19 -0800</bug_when>
    <thetext>StringHasher functions require alignment that call sites do not all guarantee</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835893</commentid>
    <comment_count>1</comment_count>
      <attachid>188973</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-18 19:02:36 -0800</bug_when>
    <thetext>Created attachment 188973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835894</commentid>
    <comment_count>2</comment_count>
      <attachid>188973</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-18 19:09:42 -0800</bug_when>
    <thetext>Comment on attachment 188973
Patch

Oops, looks like I uploaded something that doesn’t build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835895</commentid>
    <comment_count>3</comment_count>
      <attachid>188973</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-18 19:12:43 -0800</bug_when>
    <thetext>Comment on attachment 188973
Patch

Attachment 188973 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16613441</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835897</commentid>
    <comment_count>4</comment_count>
      <attachid>188974</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-18 19:13:35 -0800</bug_when>
    <thetext>Created attachment 188974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836057</commentid>
    <comment_count>5</comment_count>
      <attachid>188974</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-19 00:09:25 -0800</bug_when>
    <thetext>Comment on attachment 188974
Patch

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

The new methods addCharactersAssumingAligned() are public. Wouldn&apos;t it be better to have them private until they are needed to be public by client code? Exposing those low level functions increases the risk of misuses like the one you fix with this patch.

If you keep the new methods public, it would be nice to have new test coverage for them.

&gt; Source/WTF/wtf/StringHasher.h:77
&gt; -            addCharactersToHash(m_pendingCharacter, Converter(*data++));
&gt; -            m_hasPendingCharacter = false;
&gt; -            --length;
&gt; +            addCharactersInternal(m_pendingCharacter, a);
&gt; +            m_pendingCharacter = b;
&gt; +            return;

It would be nice to get rid of addCharactersInternal to simplify the class.
Is there really any extra cost to?:
    m_hasPendingCharacter = false;
    addCharactersInternal(m_pendingCharacter, a);
    m_pendingCharacter = b;
    m_hasPendingCharacter = true;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842107</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-26 09:39:36 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; The new methods addCharactersAssumingAligned() are public. Wouldn&apos;t it be better to have them private until they are needed to be public by client code?

I suppose they could be private; my intention is that they are part of the public interface.

&gt; Exposing those low level functions increases the risk of misuses like the one you fix with this patch.

Sure, but given their names it seems unlikely they’d be misused. The issue before was the hidden precondition that was not part of the name. I don’t think Geoff would have gotten it wrong if it was part of the name.

&gt; If you keep the new methods public, it would be nice to have new test coverage for them.

That’s a good point. Whether public or not it would be good to have tests for the functions in this class. I don’t know exactly how to do unit tests; I’m sure it’s easy but I don’t know where to put them.

&gt; It would be nice to get rid of addCharactersInternal to simplify the class.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845886</commentid>
    <comment_count>7</comment_count>
      <attachid>191122</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-02 17:32:46 -0800</bug_when>
    <thetext>Created attachment 191122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845887</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-02 17:33:34 -0800</bug_when>
    <thetext>The patch was actually already reviewed by Ben Poulain. This new version makes most of the changes he suggested, except for the “make more private” one, which we could still do. And I added lots of tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845890</commentid>
    <comment_count>9</comment_count>
      <attachid>191122</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-02 17:50:18 -0800</bug_when>
    <thetext>Comment on attachment 191122
Patch

Thanks for doing all the tests!

My only comment is it would be useful to have a comments for each group of test.
E.g.:
    // addCharactersAssumingAligned with zero characters should produce an emptyStringHash.
    // addCharactersAssumingAligned with \0.
    // addCharactersAssumingAligned with 5 characters at once.
etc.

Otherwise it takes some reading to find what is tested in each paragraph.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845908</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-02 21:49:23 -0800</bug_when>
    <thetext>Committed r144552: &lt;http://trac.webkit.org/changeset/144552&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850515</commentid>
    <comment_count>11</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2013-03-07 15:09:22 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Committed r144552: &lt;http://trac.webkit.org/changeset/144552&gt;

This test is failing on the EFL Debug bots from the moment it was introduced (although it is passing on the Release bots):

/home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Tools/TestWebKitAPI/Tests/WTF/StringHasher.cpp:173: Failure
Value of: hasher.hash()
  Actual: 2754808611
Expected: testBHash5
Which is: 2032145993
[  FAILED  ] WTF.StringHasher_addCharacters (0 ms)
[ RUN      ] WTF.StringHasher_addCharactersAssumingAligned
/home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Tools/TestWebKitAPI/Tests/WTF/StringHasher.cpp:328: Failure
Value of: hasher.hash()
  Actual: 2754808611
Expected: testBHash5
Which is: 2032145993
[  FAILED  ] WTF.StringHasher_addCharactersAssumingAligned (0 ms


http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug%20WK2/builds/10028/steps/API%20tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851642</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-08 17:24:09 -0800</bug_when>
    <thetext>I see the problem. I forgot to null-terminate testBUChars!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852783</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-11 15:23:41 -0700</bug_when>
    <thetext>Geoff Garen fixed the failing tests problem in r145412.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852784</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-11 15:23:50 -0700</bug_when>
    <thetext>http://trac.webkit.org/projects/webkit/changeset/145412</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188973</attachid>
            <date>2013-02-18 19:02:36 -0800</date>
            <delta_ts>2013-02-18 19:13:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110171-20130218185859.patch</filename>
            <type>text/plain</type>
            <size>10479</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc0NzkzZDQzMTNiZWNhYTg3Mjg5YmQ1
NzllOGE0MDVhZjI0Zjc0ODEuLjY0NTIyNDYzN2IyYTg4Y2ViOTVhMGZhOTRhZjlhYzEwNDRlZDdm
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsNDMgQEAKIDIwMTMtMDItMTggIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCisgICAgICAgIFN0cmluZ0hhc2hlciBmdW5jdGlvbnMgcmVxdWlyZSBhbGln
bm1lbnQgdGhhdCBjYWxsIHNpdGVzIGRvIG5vdCBhbGwgZ3VhcmFudGVlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAxNzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgU3RyaW5nSGFzaGVyIGNsYXNz
IGlzIG9wdGltaXplZCBmb3IgY2xpZW50cyB3aG8gcGFzcyBpdCB0d28gY2hhcmFjdGVycyBhdAor
ICAgICAgICBhIHRpbWUuIEhvd2V2ZXIsIHRoZSBmdW5jdGlvbiBuYW1lZCBhZGRDaGFyYWN0ZXJz
IGRpZCBub3QgbWFrZSB0aGlzIGNsZWFyIHRvCisgICAgICAgIGNsaWVudHMsIGFuZCBvbmUgY2Fs
Y3VsYXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21VVEY4TWFza2luZ1RvcDhCaXRzIGdvdCBpdCB3
cm9uZy4KKyAgICAgICAgRml4IGJ5IG1ha2luZyBhZGRDaGFyYWN0ZXJzIHdvcmsgcmVnYXJkbGVz
cyBvZiBoYXNoZXIgYWxpZ25tZW50IGFuZCBhZGRpbmcgYSBuZXcKKyAgICAgICAgZnVuY3Rpb24s
IGFkZENoYXJhY3RlcnNUb0FsaWduZWRIYXNoZXIsIGZvciB1c2Ugd2hlbiB3ZSB3YW50IGEgZmFz
dGVyIHBhdGggYW5kIGNhbgorICAgICAgICBndWFyYW50ZWUgd2UgYXJlIGFkZGluZyBjaGFyYWN0
ZXJzIHR3byBhdCBhIHRpbWUuCisKKyAgICAgICAgKiB3dGYvU3RyaW5nSGFzaGVyLmg6CisgICAg
ICAgIChXVEY6OlN0cmluZ0hhc2hlcjo6YWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCk6IFJl
bmFtZWQgdGhlIGFkZENoYXJhY3RlcnMgZnVuY3Rpb24KKyAgICAgICAgYWRkQ2hhcmFjdGVyc0Fz
c3VtaW5nQWxpZ25lZCwgc2luY2UgaXQgb25seSB3b3JrcyBpZiB0aGUgaGFzaGVyIGlzIGN1cnJl
bnRseSBhbGlnbmVkLAorICAgICAgICBtZWFuaW5nIGl0IGNvbnRhaW5zIGFuIGV2ZW4gbnVtYmVy
IG9mIGNoYXJhY3RlcnMuIFRoZSBmdW5jdGlvbiBhbHJlYWR5IGFzc2VydHMKKyAgICAgICAgdGhh
dCB0aGlzIGlzIHRydWUsIGJ1dCB0aGUgY2FsY3VsYXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21V
VEY4TWFza2luZ1RvcDhCaXRzCisgICAgICAgIGZ1bmN0aW9uIHdhcyB1c2luZyBpdCBpbiBjYXNl
cyB3aGVyZSB0aGUgYXNzZXJ0aW9uIGNvdWxkIGZpcmUuIEFsc28gdXBkYXRlZCB0bworICAgICAg
ICBjYWxsIGFkZENoYXJhY3RlcnNJbnRlcm5hbCBieSBpdHMgbmV3IG5hbWUuIEFsc28gYWRkZWQg
c29tZSBuZXcgb3ZlcmxvYWRzIHRoYXQgdGFrZQorICAgICAgICBkYXRhIHBvaW50ZXJzIGFuZCBs
ZW5ndGhzIHNvIGNhbGxlcnMgY2FuIGFsd2F5cyB1c2UgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxp
Z25lZAorICAgICAgICBpbnN0ZWFkIG9mIGFkZENoYXJhY3RlcnMgaWYgdGhleSBrbm93IHRoZSBo
YXNoZXIgaXMgYWxpZ25lZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSGFzaGVyOjphZGRDaGFyYWN0
ZXIpOiBVcGRhdGVkIHRvIGNhbGwgdGhlIHB1YmxpYworICAgICAgICBhZGRDaGFyYWN0ZXJzQXNz
dW1pbmdBbGlnbmVkIGZ1bmN0aW9uIHNpbmNlIHRoYXQncyBzaW1wbGVyIGFuZCBhIGJpdCBjbGVh
bmVyLgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6OmFkZENoYXJhY3RlcnMpOiBBZGRlZCBm
dW5jdGlvbnMgd2l0aCB0aGlzIG5hbWUgdGhhdCBoYW5kbGUKKyAgICAgICAgdGhlIGNhc2Ugd2hl
cmUgdGhlIGhhc2hlciBpcyBub3QgYWxpZ25lZC4gVGhlc2Ugd2lsbCBiZSBjYWxsZWQgYnkgZXhp
c3RpbmcgY2FsbCBzaXRlcworICAgICAgICB0aGF0IHdlcmUgZm9ybWVybHkgdXNpbmcgdGhlIGZ1
bmN0aW9uIG5hbWVkIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQgYWJvdmUuCisgICAgICAg
IChXVEY6OlN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMpOiBDaGFuZ2Vk
IHRvIGNhbGwKKyAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCB0byBlbGltaW5h
dGUgY29waWVkIGFuZCBwYXN0ZWQgY29kZS4gVGhlIGhhc2hlciBpcyBlbXB0eSwKKyAgICAgICAg
c28gZGVmaW5pdGVseSBhbGlnbmVkLgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoKTogRGl0dG8uCisgICAgICAgIChXVEY6OlN0cmluZ0hhc2hlcjo6YWRkQ2hhcmFjdGVy
c0ludGVybmFsKTogUmVuYW1lZCBmcm9tIGFkZENoYXJhY3RlcnNUb0hhc2gsIHNpbmNlCisgICAg
ICAgIHRoZSBmb3JtZXIgbmFtZSBkaWQgbm90IG1ha2UgY2xlYXIgaG93IHRoaXMgZGlmZmVycyBm
cm9tIHRoZSBwdWJsaWMgZnVuY3Rpb25zLgorICAgICAgICBUaGUgcmVhbCBkaWZmZXJlbmNlIGlz
IHRoYXQgdGhpcyBpcyBsaWtlIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQsIGJ1dCB3aXRo
b3V0CisgICAgICAgIHRoZSBhc3NlcnRpb24sIHNvIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWdu
ZWQgaXMgY2FsbGVkIGluc3RlYWQsIGV2ZW4gd2l0aGluIHRoZQorICAgICAgICBjbGFzcydzIGlt
cGxlbWVudGF0aW9uLgorCisyMDEzLTAyLTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKwogICAgICAgICBTdHlsZSB0d2Vha3MgdG8gU3RyaW5nSGFzaGVyLmgKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDA0MgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMDc0ZDQ4MWFkZWIyYjM5MzNhOTQwM2EzNDQxZjBhYTQ2YTlkMDE1Mi4uMmZhYTYzZWZhZTkw
ODUzZjA3Y2I3NDcxNWI5MjMwN2VkNDc5NWY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEzLTAyLTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBT
dHJpbmdIYXNoZXIgZnVuY3Rpb25zIHJlcXVpcmUgYWxpZ25tZW50IHRoYXQgY2FsbCBzaXRlcyBk
byBub3QgYWxsIGd1YXJhbnRlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEwMTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aENhY2hlOjpTbWFs
bFN0cmluZ0tleTo6U21hbGxTdHJpbmdLZXkpOiBVc2UgdGhlIG5ld2x5IGFkZGVkCisgICAgICAg
IGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHNsb3cg
dGhpcyBjYWxsIHNpdGUgZG93bi4KKyAgICAgICAgSXQncyBzYWZlIHNpbmNlIHRoaXMgY29kZSBh
bHdheXMgYWRkcyBjaGFyYWN0ZXJzIHR3byBhdCBhIHRpbWUuCisKIDIwMTMtMDItMTggIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFNtYWxsIGZvbGxvdyB1cCB0byBy
MTQzMjcxOiBGaXggU1FMVHJhbnNhY3Rpb24gbGVhay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1N0cmluZ0hhc2hlci5oIGIvU291cmNlL1dURi93dGYvU3RyaW5nSGFzaGVyLmgKaW5kZXgg
MThhMmRlMzgzYjlmODg3NTAzYjM0OWIyMmUzNGM4ZDcxYmE4OWVlMC4uMDhmY2QzNTA0N2JlNTFj
NGVhNzc0MTVhZmEyZGU4NmE1N2RlOTZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3Ry
aW5nSGFzaGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RyaW5nSGFzaGVyLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA4LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwg
MjAwOCwgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTQ4LDE3ICs0OCwyMCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IHZvaWQgYWRkQ2hhcmFjdGVycyhVQ2hhciBhLCBVQ2hhciBiKQorICAgIC8vIFRoZSBoYXNoZXIg
aGFzaGVzIHR3byBjaGFyYWN0ZXJzIGF0IGEgdGltZSwgYW5kIHRodXMgYW4gImFsaWduZWQiIGhh
c2hlciBpcyBvbmUKKyAgICAvLyB3aGVyZSBhbiBldmVuIG51bWJlciBvZiBjaGFyYWN0ZXJzIGhh
dmUgYmVlbiBhZGRlZC4gQ2FsbGVycyB0aGF0IGFsd2F5cyBhZGQKKyAgICAvLyBjaGFyYWN0ZXJz
IHR3byBhdCBhIHRpbWUgY2FuIHVzZSB0aGUgImFzc3VtaW5nIGFsaWduZWQiIGZ1bmN0aW9ucy4K
KyAgICB2b2lkIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQoVUNoYXIgYSwgVUNoYXIgYikK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9oYXNQZW5kaW5nQ2hhcmFjdGVyKTsKLSAgICAgICAg
YWRkQ2hhcmFjdGVyc1RvSGFzaChhLCBiKTsKKyAgICAgICAgYWRkQ2hhcmFjdGVyc0ludGVybmFs
KGEsIGIpOwogICAgIH0KIAogICAgIHZvaWQgYWRkQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikK
ICAgICB7CiAgICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAg
IGFkZENoYXJhY3RlcnNUb0hhc2gobV9wZW5kaW5nQ2hhcmFjdGVyLCBjaGFyYWN0ZXIpOwogICAg
ICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gZmFsc2U7CisgICAgICAgICAgICBhZGRD
aGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG1fcGVuZGluZ0NoYXJhY3RlciwgY2hhcmFjdGVyKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC02NiwyMiArNjksMjYgQEAgcHVi
bGljOgogICAgICAgICBtX2hhc1BlbmRpbmdDaGFyYWN0ZXIgPSB0cnVlOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gdm9pZCBhZGRDaGFyYWN0
ZXJzKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB2b2lkIGFkZENoYXJhY3Rl
cnMoVUNoYXIgYSwgVUNoYXIgYikKICAgICB7Ci0gICAgICAgIGlmICghbGVuZ3RoKQotICAgICAg
ICAgICAgcmV0dXJuOwotCiAgICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpIHsKLSAg
ICAgICAgICAgIGFkZENoYXJhY3RlcnNUb0hhc2gobV9wZW5kaW5nQ2hhcmFjdGVyLCBDb252ZXJ0
ZXIoKmRhdGErKykpOwotICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gZmFsc2U7
Ci0gICAgICAgICAgICAtLWxlbmd0aDsKKyAgICAgICAgICAgIGFkZENoYXJhY3RlcnNJbnRlcm5h
bChtX3BlbmRpbmdDaGFyYWN0ZXIsIGEpOworICAgICAgICAgICAgbV9wZW5kaW5nQ2hhcmFjdGVy
ID0gYjsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGFkZENoYXJh
Y3RlcnNBc3N1bWluZ0FsaWduZWQoYSwgYik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgVUNoYXIgQ29udmVydGVyKFQpPiB2b2lkIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWdu
ZWQoY29uc3QgVCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpOworCiAgICAgICAgIGJvb2wgcmVtYWluZGVyID0gbGVu
Z3RoICYgMTsKICAgICAgICAgbGVuZ3RoID4+PSAxOwogCiAgICAgICAgIHdoaWxlIChsZW5ndGgt
LSkgewotICAgICAgICAgICAgYWRkQ2hhcmFjdGVyc1RvSGFzaChDb252ZXJ0ZXIoZGF0YVswXSks
IENvbnZlcnRlcihkYXRhWzFdKSk7CisgICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdB
bGlnbmVkKENvbnZlcnRlcihkYXRhWzBdKSwgQ29udmVydGVyKGRhdGFbMV0pKTsKICAgICAgICAg
ICAgIGRhdGEgKz0gMjsKICAgICAgICAgfQogCkBAIC04OSw2ICs5NiwzMCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBhZGRDaGFyYWN0ZXIoQ29udmVydGVyKCpkYXRhKSk7CiAgICAgfQogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgVUNoYXIgQ29udmVydGVyKFQpPiB2b2lkIGFkZENoYXJhY3Rl
cnNBc3N1bWluZ0FsaWduZWQoY29uc3QgVCogZGF0YSkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
bV9oYXNQZW5kaW5nQ2hhcmFjdGVyKTsKKworICAgICAgICB3aGlsZSAoVCBhID0gKmRhdGErKykg
eworICAgICAgICAgICAgVCBiID0gKmRhdGErKzsKKyAgICAgICAgICAgIGlmICghYikgeworICAg
ICAgICAgICAgICAgIGFkZENoYXJhY3RlcihDb252ZXJ0ZXIoYSkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5n
QWxpZ25lZChDb252ZXJ0ZXIoYSksIENvbnZlcnRlcihiKSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBVQ2hhciBDb252ZXJ0ZXIoVCk+IHZvaWQgYWRkQ2hh
cmFjdGVycyhjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBp
ZiAobV9oYXNQZW5kaW5nQ2hhcmFjdGVyICYmIGxlbmd0aCkgeworICAgICAgICAgICAgbV9oYXNQ
ZW5kaW5nQ2hhcmFjdGVyID0gZmFsc2U7CisgICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1p
bmdBbGlnbmVkKG1fcGVuZGluZ0NoYXJhY3RlciwgQ29udmVydGVyKCpkYXRhKyspKTsKKyAgICAg
ICAgICAgIC0tbGVuZ3RoOworICAgICAgICB9CisgICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWlu
Z0FsaWduZWQ8VCwgQ29udmVydGVyPihkYXRhLCBsZW5ndGgpOworICAgIH0KKwogICAgIHVuc2ln
bmVkIGhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gYXZhbGFuY2hlQml0cygpOwpAQCAtMTI0LDM3ICsxNTUsMTQgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gc3RhdGljIHVu
c2lnbmVkIGNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkKICAgICB7CiAgICAgICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7Ci0gICAgICAgIGJv
b2wgcmVtYWluZGVyID0gbGVuZ3RoICYgMTsKLSAgICAgICAgbGVuZ3RoID4+PSAxOwotCi0gICAg
ICAgIHdoaWxlIChsZW5ndGgtLSkgewotICAgICAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMo
Q29udmVydGVyKGRhdGFbMF0pLCBDb252ZXJ0ZXIoZGF0YVsxXSkpOwotICAgICAgICAgICAgZGF0
YSArPSAyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJlbWFpbmRlcikKLSAgICAgICAgICAg
IGhhc2hlci5hZGRDaGFyYWN0ZXIoQ29udmVydGVyKCpkYXRhKSk7Ci0KKyAgICAgICAgaGFzaGVy
LmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQ8VCwgQ29udmVydGVyPihkYXRhLCBsZW5ndGgp
OwogICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBVQ2hhciBDb252ZXJ0ZXIoVCk+IHN0YXRpYyB1
bnNpZ25lZCBjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhjb25zdCBUKiBkYXRhKQogICAgIHsK
ICAgICAgICAgU3RyaW5nSGFzaGVyIGhhc2hlcjsKLQotICAgICAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICAgICAgVUNoYXIgYjAgPSBDb252ZXJ0ZXIoKmRhdGErKyk7Ci0gICAgICAgICAgICBp
ZiAoIWIwKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgVUNoYXIgYjEgPSBD
b252ZXJ0ZXIoKmRhdGErKyk7Ci0gICAgICAgICAgICBpZiAoIWIxKSB7Ci0gICAgICAgICAgICAg
ICAgaGFzaGVyLmFkZENoYXJhY3RlcihiMCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKGIwLCBiMSk7Ci0g
ICAgICAgIH0KLQorICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZDxU
LCBDb252ZXJ0ZXI+KGRhdGEpOwogICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2hXaXRoVG9wOEJp
dHNNYXNrZWQoKTsKICAgICB9CiAKQEAgLTE3MSwyNyArMTc5LDE0IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBVQ2hhciBDb252ZXJ0ZXIoVCk+IHN0YXRpYyB1bnNpZ25lZCBj
b21wdXRlSGFzaChjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAg
ICBTdHJpbmdIYXNoZXIgaGFzaGVyOwotICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyczxULCBD
b252ZXJ0ZXI+KGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNz
dW1pbmdBbGlnbmVkPFQsIENvbnZlcnRlcj4oZGF0YSwgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJu
IGhhc2hlci5oYXNoKCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVUNoYXIg
Q29udmVydGVyKFQpPiBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgVCogZGF0YSkK
ICAgICB7CiAgICAgICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7Ci0KLSAgICAgICAgd2hpbGUgKHRy
dWUpIHsKLSAgICAgICAgICAgIFVDaGFyIGIwID0gQ29udmVydGVyKCpkYXRhKyspOwotICAgICAg
ICAgICAgaWYgKCFiMCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIFVDaGFy
IGIxID0gQ29udmVydGVyKCpkYXRhKyspOwotICAgICAgICAgICAgaWYgKCFiMSkgewotICAgICAg
ICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIoYjApOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhiMCwg
YjEpOwotICAgICAgICB9Ci0KKyAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0Fs
aWduZWQ8VCwgQ29udmVydGVyPihkYXRhKTsKICAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7
CiAgICAgfQogCkBAIC0yMzEsNyArMjI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGNo
YXJhY3RlcjsKICAgICB9CiAKLSAgICB2b2lkIGFkZENoYXJhY3RlcnNUb0hhc2goVUNoYXIgYSwg
VUNoYXIgYikKKyAgICB2b2lkIGFkZENoYXJhY3RlcnNJbnRlcm5hbChVQ2hhciBhLCBVQ2hhciBi
KQogICAgIHsKICAgICAgICAgbV9oYXNoICs9IGE7CiAgICAgICAgIG1faGFzaCA9IChtX2hhc2gg
PDwgMTYpIF4gKChiIDw8IDExKSBeIG1faGFzaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aENhY2hlLmgKaW5kZXggMmJlNTQ2ZDBjYWJiMTMwYzdkMDgxYjM2NjNk
MDIxMWUyNGZjMTY0YS4uMGI2MTkzM2MwMDA3OTY5NGYyOTc1OWI4NjRmYjhjMTU3NWExZDlmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAt
NTgsNiArNTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgOiBtX2xlbmd0aChsZW5ndGgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChsZW5ndGggPD0gc19jYXBhY2l0eSk7CisKICAg
ICAgICAgICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7CiAKICAgICAgICAgICAgIGJvb2wgcmVtYWlu
ZGVyID0gbGVuZ3RoICYgMTsKQEAgLTY3LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHdoaWxlIChsZW5ndGgtLSkgewogICAgICAgICAgICAgICAgIG1fY2hhcmFjdGVyc1tpXSA9IGNo
YXJhY3RlcnNbaV07CiAgICAgICAgICAgICAgICAgbV9jaGFyYWN0ZXJzW2kgKyAxXSA9IGNoYXJh
Y3RlcnNbaSArIDFdOwotICAgICAgICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKGNoYXJh
Y3RlcnNbaV0sIGNoYXJhY3RlcnNbaSArIDFdKTsKKyAgICAgICAgICAgICAgICBoYXNoZXIuYWRk
Q2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25tZW50KGNoYXJhY3RlcnNbaV0sIGNoYXJhY3RlcnNbaSAr
IDFdKTsKICAgICAgICAgICAgICAgICBpICs9IDI7CiAgICAgICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188974</attachid>
            <date>2013-02-18 19:13:35 -0800</date>
            <delta_ts>2013-03-02 17:32:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110171-20130218190957.patch</filename>
            <type>text/plain</type>
            <size>10477</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc0NzkzZDQzMTNiZWNhYTg3Mjg5YmQ1
NzllOGE0MDVhZjI0Zjc0ODEuLmJjYjA4YmQ3MjRhNTRhNjdlZTc4NjM1ZGE3ZmViZGRlZmEyNTAz
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsNDMgQEAKIDIwMTMtMDItMTggIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCisgICAgICAgIFN0cmluZ0hhc2hlciBmdW5jdGlvbnMgcmVxdWlyZSBhbGln
bm1lbnQgdGhhdCBjYWxsIHNpdGVzIGRvIG5vdCBhbGwgZ3VhcmFudGVlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAxNzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgU3RyaW5nSGFzaGVyIGNsYXNz
IGlzIG9wdGltaXplZCBmb3IgY2xpZW50cyB3aG8gcGFzcyBpdCB0d28gY2hhcmFjdGVycyBhdAor
ICAgICAgICBhIHRpbWUuIEhvd2V2ZXIsIHRoZSBmdW5jdGlvbiBuYW1lZCBhZGRDaGFyYWN0ZXJz
IGRpZCBub3QgbWFrZSB0aGlzIGNsZWFyIHRvCisgICAgICAgIGNsaWVudHMsIGFuZCBvbmUgY2Fs
Y3VsYXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21VVEY4TWFza2luZ1RvcDhCaXRzIGdvdCBpdCB3
cm9uZy4KKyAgICAgICAgRml4IGJ5IG1ha2luZyBhZGRDaGFyYWN0ZXJzIHdvcmsgcmVnYXJkbGVz
cyBvZiBoYXNoZXIgYWxpZ25tZW50IGFuZCBhZGRpbmcgYSBuZXcKKyAgICAgICAgZnVuY3Rpb24s
IGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQsIGZvciB1c2Ugd2hlbiB3ZSB3YW50IGEgZmFz
dGVyIHBhdGggYW5kIGNhbgorICAgICAgICBndWFyYW50ZWUgd2UgYXJlIGFkZGluZyBjaGFyYWN0
ZXJzIHR3byBhdCBhIHRpbWUuCisKKyAgICAgICAgKiB3dGYvU3RyaW5nSGFzaGVyLmg6CisgICAg
ICAgIChXVEY6OlN0cmluZ0hhc2hlcjo6YWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCk6IFJl
bmFtZWQgdGhlIGFkZENoYXJhY3RlcnMgZnVuY3Rpb24KKyAgICAgICAgYWRkQ2hhcmFjdGVyc0Fz
c3VtaW5nQWxpZ25lZCwgc2luY2UgaXQgb25seSB3b3JrcyBpZiB0aGUgaGFzaGVyIGlzIGN1cnJl
bnRseSBhbGlnbmVkLAorICAgICAgICBtZWFuaW5nIGl0IGNvbnRhaW5zIGFuIGV2ZW4gbnVtYmVy
IG9mIGNoYXJhY3RlcnMuIFRoZSBmdW5jdGlvbiBhbHJlYWR5IGFzc2VydHMKKyAgICAgICAgdGhh
dCB0aGlzIGlzIHRydWUsIGJ1dCB0aGUgY2FsY3VsYXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21V
VEY4TWFza2luZ1RvcDhCaXRzCisgICAgICAgIGZ1bmN0aW9uIHdhcyB1c2luZyBpdCBpbiBjYXNl
cyB3aGVyZSB0aGUgYXNzZXJ0aW9uIGNvdWxkIGZpcmUuIEFsc28gdXBkYXRlZCB0bworICAgICAg
ICBjYWxsIGFkZENoYXJhY3RlcnNJbnRlcm5hbCBieSBpdHMgbmV3IG5hbWUuIEFsc28gYWRkZWQg
c29tZSBuZXcgb3ZlcmxvYWRzIHRoYXQgdGFrZQorICAgICAgICBkYXRhIHBvaW50ZXJzIGFuZCBs
ZW5ndGhzIHNvIGNhbGxlcnMgY2FuIGFsd2F5cyB1c2UgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxp
Z25lZAorICAgICAgICBpbnN0ZWFkIG9mIGFkZENoYXJhY3RlcnMgaWYgdGhleSBrbm93IHRoZSBo
YXNoZXIgaXMgYWxpZ25lZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSGFzaGVyOjphZGRDaGFyYWN0
ZXIpOiBVcGRhdGVkIHRvIGNhbGwgdGhlIHB1YmxpYworICAgICAgICBhZGRDaGFyYWN0ZXJzQXNz
dW1pbmdBbGlnbmVkIGZ1bmN0aW9uIHNpbmNlIHRoYXQncyBzaW1wbGVyIGFuZCBhIGJpdCBjbGVh
bmVyLgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6OmFkZENoYXJhY3RlcnMpOiBBZGRlZCBm
dW5jdGlvbnMgd2l0aCB0aGlzIG5hbWUgdGhhdCBoYW5kbGUKKyAgICAgICAgdGhlIGNhc2Ugd2hl
cmUgdGhlIGhhc2hlciBpcyBub3QgYWxpZ25lZC4gVGhlc2Ugd2lsbCBiZSBjYWxsZWQgYnkgZXhp
c3RpbmcgY2FsbCBzaXRlcworICAgICAgICB0aGF0IHdlcmUgZm9ybWVybHkgdXNpbmcgdGhlIGZ1
bmN0aW9uIG5hbWVkIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQgYWJvdmUuCisgICAgICAg
IChXVEY6OlN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMpOiBDaGFuZ2Vk
IHRvIGNhbGwKKyAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCB0byBlbGltaW5h
dGUgY29waWVkIGFuZCBwYXN0ZWQgY29kZS4gVGhlIGhhc2hlciBpcyBlbXB0eSwKKyAgICAgICAg
c28gZGVmaW5pdGVseSBhbGlnbmVkLgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoKTogRGl0dG8uCisgICAgICAgIChXVEY6OlN0cmluZ0hhc2hlcjo6YWRkQ2hhcmFjdGVy
c0ludGVybmFsKTogUmVuYW1lZCBmcm9tIGFkZENoYXJhY3RlcnNUb0hhc2gsIHNpbmNlCisgICAg
ICAgIHRoZSBmb3JtZXIgbmFtZSBkaWQgbm90IG1ha2UgY2xlYXIgaG93IHRoaXMgZGlmZmVycyBm
cm9tIHRoZSBwdWJsaWMgZnVuY3Rpb25zLgorICAgICAgICBUaGUgcmVhbCBkaWZmZXJlbmNlIGlz
IHRoYXQgdGhpcyBpcyBsaWtlIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQsIGJ1dCB3aXRo
b3V0CisgICAgICAgIHRoZSBhc3NlcnRpb24sIHNvIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWdu
ZWQgaXMgY2FsbGVkIGluc3RlYWQsIGV2ZW4gd2l0aGluIHRoZQorICAgICAgICBjbGFzcydzIGlt
cGxlbWVudGF0aW9uLgorCisyMDEzLTAyLTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKwogICAgICAgICBTdHlsZSB0d2Vha3MgdG8gU3RyaW5nSGFzaGVyLmgKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDA0MgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMDc0ZDQ4MWFkZWIyYjM5MzNhOTQwM2EzNDQxZjBhYTQ2YTlkMDE1Mi4uMmZhYTYzZWZhZTkw
ODUzZjA3Y2I3NDcxNWI5MjMwN2VkNDc5NWY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEzLTAyLTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBT
dHJpbmdIYXNoZXIgZnVuY3Rpb25zIHJlcXVpcmUgYWxpZ25tZW50IHRoYXQgY2FsbCBzaXRlcyBk
byBub3QgYWxsIGd1YXJhbnRlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEwMTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aENhY2hlOjpTbWFs
bFN0cmluZ0tleTo6U21hbGxTdHJpbmdLZXkpOiBVc2UgdGhlIG5ld2x5IGFkZGVkCisgICAgICAg
IGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHNsb3cg
dGhpcyBjYWxsIHNpdGUgZG93bi4KKyAgICAgICAgSXQncyBzYWZlIHNpbmNlIHRoaXMgY29kZSBh
bHdheXMgYWRkcyBjaGFyYWN0ZXJzIHR3byBhdCBhIHRpbWUuCisKIDIwMTMtMDItMTggIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFNtYWxsIGZvbGxvdyB1cCB0byBy
MTQzMjcxOiBGaXggU1FMVHJhbnNhY3Rpb24gbGVhay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1N0cmluZ0hhc2hlci5oIGIvU291cmNlL1dURi93dGYvU3RyaW5nSGFzaGVyLmgKaW5kZXgg
MThhMmRlMzgzYjlmODg3NTAzYjM0OWIyMmUzNGM4ZDcxYmE4OWVlMC4uMDhmY2QzNTA0N2JlNTFj
NGVhNzc0MTVhZmEyZGU4NmE1N2RlOTZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3Ry
aW5nSGFzaGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RyaW5nSGFzaGVyLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA4LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwg
MjAwOCwgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTQ4LDE3ICs0OCwyMCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IHZvaWQgYWRkQ2hhcmFjdGVycyhVQ2hhciBhLCBVQ2hhciBiKQorICAgIC8vIFRoZSBoYXNoZXIg
aGFzaGVzIHR3byBjaGFyYWN0ZXJzIGF0IGEgdGltZSwgYW5kIHRodXMgYW4gImFsaWduZWQiIGhh
c2hlciBpcyBvbmUKKyAgICAvLyB3aGVyZSBhbiBldmVuIG51bWJlciBvZiBjaGFyYWN0ZXJzIGhh
dmUgYmVlbiBhZGRlZC4gQ2FsbGVycyB0aGF0IGFsd2F5cyBhZGQKKyAgICAvLyBjaGFyYWN0ZXJz
IHR3byBhdCBhIHRpbWUgY2FuIHVzZSB0aGUgImFzc3VtaW5nIGFsaWduZWQiIGZ1bmN0aW9ucy4K
KyAgICB2b2lkIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQoVUNoYXIgYSwgVUNoYXIgYikK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9oYXNQZW5kaW5nQ2hhcmFjdGVyKTsKLSAgICAgICAg
YWRkQ2hhcmFjdGVyc1RvSGFzaChhLCBiKTsKKyAgICAgICAgYWRkQ2hhcmFjdGVyc0ludGVybmFs
KGEsIGIpOwogICAgIH0KIAogICAgIHZvaWQgYWRkQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikK
ICAgICB7CiAgICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAg
IGFkZENoYXJhY3RlcnNUb0hhc2gobV9wZW5kaW5nQ2hhcmFjdGVyLCBjaGFyYWN0ZXIpOwogICAg
ICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gZmFsc2U7CisgICAgICAgICAgICBhZGRD
aGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG1fcGVuZGluZ0NoYXJhY3RlciwgY2hhcmFjdGVyKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC02NiwyMiArNjksMjYgQEAgcHVi
bGljOgogICAgICAgICBtX2hhc1BlbmRpbmdDaGFyYWN0ZXIgPSB0cnVlOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gdm9pZCBhZGRDaGFyYWN0
ZXJzKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB2b2lkIGFkZENoYXJhY3Rl
cnMoVUNoYXIgYSwgVUNoYXIgYikKICAgICB7Ci0gICAgICAgIGlmICghbGVuZ3RoKQotICAgICAg
ICAgICAgcmV0dXJuOwotCiAgICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpIHsKLSAg
ICAgICAgICAgIGFkZENoYXJhY3RlcnNUb0hhc2gobV9wZW5kaW5nQ2hhcmFjdGVyLCBDb252ZXJ0
ZXIoKmRhdGErKykpOwotICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gZmFsc2U7
Ci0gICAgICAgICAgICAtLWxlbmd0aDsKKyAgICAgICAgICAgIGFkZENoYXJhY3RlcnNJbnRlcm5h
bChtX3BlbmRpbmdDaGFyYWN0ZXIsIGEpOworICAgICAgICAgICAgbV9wZW5kaW5nQ2hhcmFjdGVy
ID0gYjsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGFkZENoYXJh
Y3RlcnNBc3N1bWluZ0FsaWduZWQoYSwgYik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgVUNoYXIgQ29udmVydGVyKFQpPiB2b2lkIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWdu
ZWQoY29uc3QgVCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpOworCiAgICAgICAgIGJvb2wgcmVtYWluZGVyID0gbGVu
Z3RoICYgMTsKICAgICAgICAgbGVuZ3RoID4+PSAxOwogCiAgICAgICAgIHdoaWxlIChsZW5ndGgt
LSkgewotICAgICAgICAgICAgYWRkQ2hhcmFjdGVyc1RvSGFzaChDb252ZXJ0ZXIoZGF0YVswXSks
IENvbnZlcnRlcihkYXRhWzFdKSk7CisgICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdB
bGlnbmVkKENvbnZlcnRlcihkYXRhWzBdKSwgQ29udmVydGVyKGRhdGFbMV0pKTsKICAgICAgICAg
ICAgIGRhdGEgKz0gMjsKICAgICAgICAgfQogCkBAIC04OSw2ICs5NiwzMCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBhZGRDaGFyYWN0ZXIoQ29udmVydGVyKCpkYXRhKSk7CiAgICAgfQogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgVUNoYXIgQ29udmVydGVyKFQpPiB2b2lkIGFkZENoYXJhY3Rl
cnNBc3N1bWluZ0FsaWduZWQoY29uc3QgVCogZGF0YSkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
bV9oYXNQZW5kaW5nQ2hhcmFjdGVyKTsKKworICAgICAgICB3aGlsZSAoVCBhID0gKmRhdGErKykg
eworICAgICAgICAgICAgVCBiID0gKmRhdGErKzsKKyAgICAgICAgICAgIGlmICghYikgeworICAg
ICAgICAgICAgICAgIGFkZENoYXJhY3RlcihDb252ZXJ0ZXIoYSkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5n
QWxpZ25lZChDb252ZXJ0ZXIoYSksIENvbnZlcnRlcihiKSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBVQ2hhciBDb252ZXJ0ZXIoVCk+IHZvaWQgYWRkQ2hh
cmFjdGVycyhjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBp
ZiAobV9oYXNQZW5kaW5nQ2hhcmFjdGVyICYmIGxlbmd0aCkgeworICAgICAgICAgICAgbV9oYXNQ
ZW5kaW5nQ2hhcmFjdGVyID0gZmFsc2U7CisgICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1p
bmdBbGlnbmVkKG1fcGVuZGluZ0NoYXJhY3RlciwgQ29udmVydGVyKCpkYXRhKyspKTsKKyAgICAg
ICAgICAgIC0tbGVuZ3RoOworICAgICAgICB9CisgICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWlu
Z0FsaWduZWQ8VCwgQ29udmVydGVyPihkYXRhLCBsZW5ndGgpOworICAgIH0KKwogICAgIHVuc2ln
bmVkIGhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gYXZhbGFuY2hlQml0cygpOwpAQCAtMTI0LDM3ICsxNTUsMTQgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gc3RhdGljIHVu
c2lnbmVkIGNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkKICAgICB7CiAgICAgICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7Ci0gICAgICAgIGJv
b2wgcmVtYWluZGVyID0gbGVuZ3RoICYgMTsKLSAgICAgICAgbGVuZ3RoID4+PSAxOwotCi0gICAg
ICAgIHdoaWxlIChsZW5ndGgtLSkgewotICAgICAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMo
Q29udmVydGVyKGRhdGFbMF0pLCBDb252ZXJ0ZXIoZGF0YVsxXSkpOwotICAgICAgICAgICAgZGF0
YSArPSAyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJlbWFpbmRlcikKLSAgICAgICAgICAg
IGhhc2hlci5hZGRDaGFyYWN0ZXIoQ29udmVydGVyKCpkYXRhKSk7Ci0KKyAgICAgICAgaGFzaGVy
LmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQ8VCwgQ29udmVydGVyPihkYXRhLCBsZW5ndGgp
OwogICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBVQ2hhciBDb252ZXJ0ZXIoVCk+IHN0YXRpYyB1
bnNpZ25lZCBjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhjb25zdCBUKiBkYXRhKQogICAgIHsK
ICAgICAgICAgU3RyaW5nSGFzaGVyIGhhc2hlcjsKLQotICAgICAgICB3aGlsZSAodHJ1ZSkgewot
ICAgICAgICAgICAgVUNoYXIgYjAgPSBDb252ZXJ0ZXIoKmRhdGErKyk7Ci0gICAgICAgICAgICBp
ZiAoIWIwKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgVUNoYXIgYjEgPSBD
b252ZXJ0ZXIoKmRhdGErKyk7Ci0gICAgICAgICAgICBpZiAoIWIxKSB7Ci0gICAgICAgICAgICAg
ICAgaGFzaGVyLmFkZENoYXJhY3RlcihiMCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKGIwLCBiMSk7Ci0g
ICAgICAgIH0KLQorICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZDxU
LCBDb252ZXJ0ZXI+KGRhdGEpOwogICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2hXaXRoVG9wOEJp
dHNNYXNrZWQoKTsKICAgICB9CiAKQEAgLTE3MSwyNyArMTc5LDE0IEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBVQ2hhciBDb252ZXJ0ZXIoVCk+IHN0YXRpYyB1bnNpZ25lZCBj
b21wdXRlSGFzaChjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAg
ICBTdHJpbmdIYXNoZXIgaGFzaGVyOwotICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyczxULCBD
b252ZXJ0ZXI+KGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNz
dW1pbmdBbGlnbmVkPFQsIENvbnZlcnRlcj4oZGF0YSwgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJu
IGhhc2hlci5oYXNoKCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVUNoYXIg
Q29udmVydGVyKFQpPiBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgVCogZGF0YSkK
ICAgICB7CiAgICAgICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7Ci0KLSAgICAgICAgd2hpbGUgKHRy
dWUpIHsKLSAgICAgICAgICAgIFVDaGFyIGIwID0gQ29udmVydGVyKCpkYXRhKyspOwotICAgICAg
ICAgICAgaWYgKCFiMCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIFVDaGFy
IGIxID0gQ29udmVydGVyKCpkYXRhKyspOwotICAgICAgICAgICAgaWYgKCFiMSkgewotICAgICAg
ICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIoYjApOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhiMCwg
YjEpOwotICAgICAgICB9Ci0KKyAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0Fs
aWduZWQ8VCwgQ29udmVydGVyPihkYXRhKTsKICAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7
CiAgICAgfQogCkBAIC0yMzEsNyArMjI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGNo
YXJhY3RlcjsKICAgICB9CiAKLSAgICB2b2lkIGFkZENoYXJhY3RlcnNUb0hhc2goVUNoYXIgYSwg
VUNoYXIgYikKKyAgICB2b2lkIGFkZENoYXJhY3RlcnNJbnRlcm5hbChVQ2hhciBhLCBVQ2hhciBi
KQogICAgIHsKICAgICAgICAgbV9oYXNoICs9IGE7CiAgICAgICAgIG1faGFzaCA9IChtX2hhc2gg
PDwgMTYpIF4gKChiIDw8IDExKSBeIG1faGFzaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aENhY2hlLmgKaW5kZXggMmJlNTQ2ZDBjYWJiMTMwYzdkMDgxYjM2NjNk
MDIxMWUyNGZjMTY0YS4uMjVlNzZiNGVmNzVlMmRlYmExYzA2MDJiMDQ1ODUwNTY3OTEyOTI4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAt
NTgsNiArNTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgOiBtX2xlbmd0aChsZW5ndGgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChsZW5ndGggPD0gc19jYXBhY2l0eSk7CisKICAg
ICAgICAgICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7CiAKICAgICAgICAgICAgIGJvb2wgcmVtYWlu
ZGVyID0gbGVuZ3RoICYgMTsKQEAgLTY3LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHdoaWxlIChsZW5ndGgtLSkgewogICAgICAgICAgICAgICAgIG1fY2hhcmFjdGVyc1tpXSA9IGNo
YXJhY3RlcnNbaV07CiAgICAgICAgICAgICAgICAgbV9jaGFyYWN0ZXJzW2kgKyAxXSA9IGNoYXJh
Y3RlcnNbaSArIDFdOwotICAgICAgICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKGNoYXJh
Y3RlcnNbaV0sIGNoYXJhY3RlcnNbaSArIDFdKTsKKyAgICAgICAgICAgICAgICBoYXNoZXIuYWRk
Q2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChjaGFyYWN0ZXJzW2ldLCBjaGFyYWN0ZXJzW2kgKyAx
XSk7CiAgICAgICAgICAgICAgICAgaSArPSAyOwogICAgICAgICAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191122</attachid>
            <date>2013-03-02 17:32:46 -0800</date>
            <delta_ts>2013-03-02 17:50:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110171-20130302172856.patch</filename>
            <type>text/plain</type>
            <size>43912</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNlNzk3MzVkNDBmM2ExZGU5MTIyMzk4
YTMyNDE4MWNhYzM2MmUxNTcuLjM5ZmE2YjIyZWNiYjY5NDNhZTM0YzUxN2Y5OTQwODAzZGE3OTRh
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTMtMDItMjcgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZ0hhc2hlciBmdW5jdGlvbnMgcmVxdWlyZSBhbGln
bm1lbnQgdGhhdCBjYWxsIHNpdGVzIGRvIG5vdCBhbGwgZ3VhcmFudGVlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAxNzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgU3RyaW5nSGFzaGVyIGNsYXNz
IGlzIG9wdGltaXplZCBmb3IgY2xpZW50cyB3aG8gcGFzcyBpdCB0d28gY2hhcmFjdGVycyBhdAor
ICAgICAgICBhIHRpbWUuIEhvd2V2ZXIsIHRoZSBmdW5jdGlvbiBuYW1lZCBhZGRDaGFyYWN0ZXJz
IGRpZCBub3QgbWFrZSB0aGlzIGNsZWFyIHRvCisgICAgICAgIGNsaWVudHMsIGFuZCBvbmUgY2Fs
Y3VsYXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21VVEY4TWFza2luZ1RvcDhCaXRzIGdvdCBpdCB3
cm9uZy4KKyAgICAgICAgRml4IGJ5IG1ha2luZyBhZGRDaGFyYWN0ZXJzIHdvcmsgcmVnYXJkbGVz
cyBvZiBoYXNoZXIgYWxpZ25tZW50IGFuZCBhZGRpbmcgYSBuZXcKKyAgICAgICAgZnVuY3Rpb24s
IGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQsIGZvciB1c2Ugd2hlbiB3ZSB3YW50IGEgZmFz
dGVyIHBhdGggYW5kIGNhbgorICAgICAgICBndWFyYW50ZWUgd2UgYXJlIGFkZGluZyBjaGFyYWN0
ZXJzIHR3byBhdCBhIHRpbWUuCisKKyAgICAgICAgKiB3dGYvU3RyaW5nSGFzaGVyLmg6CisgICAg
ICAgIChXVEY6OlN0cmluZ0hhc2hlcjo6YWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCk6IFJl
bmFtZWQgdGhlIGFkZENoYXJhY3RlcnMgZnVuY3Rpb24KKyAgICAgICAgYWRkQ2hhcmFjdGVyc0Fz
c3VtaW5nQWxpZ25lZCwgc2luY2UgaXQgb25seSB3b3JrcyBpZiB0aGUgaGFzaGVyIGlzIGN1cnJl
bnRseSBhbGlnbmVkLAorICAgICAgICBtZWFuaW5nIGl0IGNvbnRhaW5zIGFuIGV2ZW4gbnVtYmVy
IG9mIGNoYXJhY3RlcnMuIFRoZSBmdW5jdGlvbiBhbHJlYWR5IGFzc2VydHMKKyAgICAgICAgdGhh
dCB0aGlzIGlzIHRydWUsIGJ1dCB0aGUgY2FsY3VsYXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21V
VEY4TWFza2luZ1RvcDhCaXRzCisgICAgICAgIGZ1bmN0aW9uIHdhcyB1c2luZyBpdCBpbiBjYXNl
cyB3aGVyZSB0aGUgYXNzZXJ0aW9uIGNvdWxkIGZpcmUuIEFsc28gdXBkYXRlZCB0bworICAgICAg
ICBjYWxsIGFkZENoYXJhY3RlcnNJbnRlcm5hbCBieSBpdHMgbmV3IG5hbWUuIEFsc28gYWRkZWQg
c29tZSBuZXcgb3ZlcmxvYWRzIHRoYXQgdGFrZQorICAgICAgICBkYXRhIHBvaW50ZXJzIGFuZCBs
ZW5ndGhzIHNvIGNhbGxlcnMgY2FuIGFsd2F5cyB1c2UgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxp
Z25lZAorICAgICAgICBpbnN0ZWFkIG9mIGFkZENoYXJhY3RlcnMgaWYgdGhleSBrbm93IHRoZSBo
YXNoZXIgaXMgYWxpZ25lZC4KKyAgICAgICAgKFdURjo6U3RyaW5nSGFzaGVyOjphZGRDaGFyYWN0
ZXIpOiBVcGRhdGVkIHRvIGNhbGwgdGhlIHB1YmxpYworICAgICAgICBhZGRDaGFyYWN0ZXJzQXNz
dW1pbmdBbGlnbmVkIGZ1bmN0aW9uIHNpbmNlIHRoYXQncyBzaW1wbGVyIGFuZCBhIGJpdCBjbGVh
bmVyLgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6OmFkZENoYXJhY3RlcnMpOiBBZGRlZCBm
dW5jdGlvbnMgd2l0aCB0aGlzIG5hbWUgdGhhdCBoYW5kbGUKKyAgICAgICAgdGhlIGNhc2Ugd2hl
cmUgdGhlIGhhc2hlciBpcyBub3QgYWxpZ25lZC4gVGhlc2Ugd2lsbCBiZSBjYWxsZWQgYnkgZXhp
c3RpbmcgY2FsbCBzaXRlcworICAgICAgICB0aGF0IHdlcmUgZm9ybWVybHkgdXNpbmcgdGhlIGZ1
bmN0aW9uIG5hbWVkIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQgYWJvdmUuCisgICAgICAg
IEFsc28gYWRkIGFuIG92ZXJsb2FkIHRoYXQgd29ya3Mgd2l0aCB0aGUgZGVmYXVsdCBjb252ZXJ0
ZXIgYXV0b21hdGljYWxseS4KKyAgICAgICAgKFdURjo6U3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0cyk6IENoYW5nZWQgdG8gY2FsbAorICAgICAgICBhZGRDaGFyYWN0ZXJz
QXNzdW1pbmdBbGlnbmVkIHRvIGVsaW1pbmF0ZSBjb3BpZWQgYW5kIHBhc3RlZCBjb2RlLiBUaGUg
aGFzaGVyIGlzIGVtcHR5LAorICAgICAgICBzbyBkZWZpbml0ZWx5IGFsaWduZWQuCisgICAgICAg
IChXVEY6OlN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2gpOiBEaXR0by4KKyAgICAgICAgKFdURjo6
U3RyaW5nSGFzaGVyOjphZGRDaGFyYWN0ZXJzSW50ZXJuYWwpOiBSZW5hbWVkIGZyb20gYWRkQ2hh
cmFjdGVyc1RvSGFzaCwgc2luY2UKKyAgICAgICAgdGhlIGZvcm1lciBuYW1lIGRpZCBub3QgbWFr
ZSBjbGVhciBob3cgdGhpcyBkaWZmZXJzIGZyb20gdGhlIHB1YmxpYyBmdW5jdGlvbnMuCisgICAg
ICAgIFRoZSByZWFsIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGlzIGlzIGxpa2UgYWRkQ2hhcmFjdGVy
c0Fzc3VtaW5nQWxpZ25lZCwgYnV0IHdpdGhvdXQKKyAgICAgICAgdGhlIGFzc2VydGlvbiwgc28g
YWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCBpcyBjYWxsZWQgaW5zdGVhZCwgZXZlbiB3aXRo
aW4gdGhlCisgICAgICAgIGNsYXNzJ3MgaW1wbGVtZW50YXRpb24uCisKIDIwMTMtMDItMjYgIEpv
Y2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQGRpZ2lhLmNvbT4KIAogICAgICAgICBJ
bXBsZW1lbnQgSklUIG9uIFdpbmRvd3MgNjQgYml0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY3ZWZkNzRkZTJj
Y2NkNmMzZTJjMWMyNThlZDg2MDRkOWNhY2M0YjkuLjVhZjI0NGJkNmVkYWFmY2UxZjU1MjU5OTc5
M2M0M2ZjMTcxODc5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMi0yNyAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nSGFzaGVyIGZ1
bmN0aW9ucyByZXF1aXJlIGFsaWdubWVudCB0aGF0IGNhbGwgc2l0ZXMgZG8gbm90IGFsbCBndWFy
YW50ZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MDE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhD
YWNoZTo6U21hbGxTdHJpbmdLZXk6OlNtYWxsU3RyaW5nS2V5KTogVXNlIHRoZSBuZXdseSBhZGRl
ZAorICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkIHRvIG1ha2Ugc3VyZSB3ZSBk
b24ndCBzbG93IHRoaXMgY2FsbCBzaXRlIGRvd24uCisgICAgICAgIEl0J3Mgc2FmZSBzaW5jZSB0
aGlzIGNvZGUgYWx3YXlzIGFkZHMgY2hhcmFjdGVycyB0d28gYXQgYSB0aW1lLgorCiAyMDEzLTAy
LTI2ICBEbWl0cnkgWnZvcnlnaW4gIDx6dm9yeWdpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
TWVyZ2VkIFRpcCBhbmQgRGVidWcgbG9nIGxldmVscyBmb3Igd2ViIGNvbnNvbGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdHJpbmdIYXNoZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1N0cmlu
Z0hhc2hlci5oCmluZGV4IDE4YTJkZTM4M2I5Zjg4NzUwM2IzNDliMjJlMzRjOGQ3MWJhODllZTAu
LmQ5NTgyYWE5NDExNmE1Y2UyYjE2NDQ0YTJmM2JkODYzNjliODA1ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1N0cmluZ0hhc2hlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0cmluZ0hh
c2hlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwg
MjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FA
cGFyb2dhLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC00OCwxNyArNDgsMjIgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSAgICB2b2lkIGFkZENoYXJhY3RlcnMoVUNoYXIgYSwgVUNoYXIgYikKKyAg
ICAvLyBUaGUgaGFzaGVyIGhhc2hlcyB0d28gY2hhcmFjdGVycyBhdCBhIHRpbWUsIGFuZCB0aHVz
IGFuICJhbGlnbmVkIiBoYXNoZXIgaXMgb25lCisgICAgLy8gd2hlcmUgYW4gZXZlbiBudW1iZXIg
b2YgY2hhcmFjdGVycyBoYXZlIGJlZW4gYWRkZWQuIENhbGxlcnMgdGhhdCBhbHdheXMgYWRkCisg
ICAgLy8gY2hhcmFjdGVycyB0d28gYXQgYSB0aW1lIGNhbiB1c2UgdGhlICJhc3N1bWluZyBhbGln
bmVkIiBmdW5jdGlvbnMuCisgICAgdm9pZCBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKFVD
aGFyIGEsIFVDaGFyIGIpCiAgICAgewogICAgICAgICBBU1NFUlQoIW1faGFzUGVuZGluZ0NoYXJh
Y3Rlcik7Ci0gICAgICAgIGFkZENoYXJhY3RlcnNUb0hhc2goYSwgYik7CisgICAgICAgIG1faGFz
aCArPSBhOworICAgICAgICBtX2hhc2ggPSAobV9oYXNoIDw8IDE2KSBeICgoYiA8PCAxMSkgXiBt
X2hhc2gpOworICAgICAgICBtX2hhc2ggKz0gbV9oYXNoID4+IDExOwogICAgIH0KIAogICAgIHZv
aWQgYWRkQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAgICAgIGlmIChtX2hh
c1BlbmRpbmdDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIGFkZENoYXJhY3RlcnNUb0hhc2gobV9w
ZW5kaW5nQ2hhcmFjdGVyLCBjaGFyYWN0ZXIpOwogICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hh
cmFjdGVyID0gZmFsc2U7CisgICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVk
KG1fcGVuZGluZ0NoYXJhY3RlciwgY2hhcmFjdGVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC02NiwyMiArNzEsMzIgQEAgcHVibGljOgogICAgICAgICBtX2hhc1BlbmRp
bmdDaGFyYWN0ZXIgPSB0cnVlOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFVD
aGFyIENvbnZlcnRlcihUKT4gdm9pZCBhZGRDaGFyYWN0ZXJzKGNvbnN0IFQqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkKKyAgICB2b2lkIGFkZENoYXJhY3RlcnMoVUNoYXIgYSwgVUNoYXIgYikKICAg
ICB7Ci0gICAgICAgIGlmICghbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAg
IGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIGFkZENoYXJhY3RlcnNU
b0hhc2gobV9wZW5kaW5nQ2hhcmFjdGVyLCBDb252ZXJ0ZXIoKmRhdGErKykpOworI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICAgICAgICAgIG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IGZhbHNlOwot
ICAgICAgICAgICAgLS1sZW5ndGg7CisjZW5kaWYKKyAgICAgICAgICAgIGFkZENoYXJhY3RlcnNB
c3N1bWluZ0FsaWduZWQobV9wZW5kaW5nQ2hhcmFjdGVyLCBhKTsKKyAgICAgICAgICAgIG1fcGVu
ZGluZ0NoYXJhY3RlciA9IGI7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAgICAgbV9o
YXNQZW5kaW5nQ2hhcmFjdGVyID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKKyAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChhLCBiKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBVQ2hhciBDb252ZXJ0ZXIoVCk+IHZv
aWQgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQoIW1faGFzUGVuZGluZ0NoYXJhY3Rlcik7CisK
ICAgICAgICAgYm9vbCByZW1haW5kZXIgPSBsZW5ndGggJiAxOwogICAgICAgICBsZW5ndGggPj49
IDE7CiAKICAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7Ci0gICAgICAgICAgICBhZGRDaGFyYWN0
ZXJzVG9IYXNoKENvbnZlcnRlcihkYXRhWzBdKSwgQ29udmVydGVyKGRhdGFbMV0pKTsKKyAgICAg
ICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQoQ29udmVydGVyKGRhdGFbMF0pLCBD
b252ZXJ0ZXIoZGF0YVsxXSkpOwogICAgICAgICAgICAgZGF0YSArPSAyOwogICAgICAgICB9CiAK
QEAgLTg5LDYgKzEwNCw1OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBhZGRDaGFyYWN0ZXIoQ29u
dmVydGVyKCpkYXRhKSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBh
ZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICB7CisgICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQ8VCwgZGVmYXVs
dENvbnZlcnRlcj4oZGF0YSwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBVQ2hhciBDb252ZXJ0ZXIoVCk+IHZvaWQgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25l
ZChjb25zdCBUKiBkYXRhKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2hhc1BlbmRpbmdDaGFy
YWN0ZXIpOworCisgICAgICAgIHdoaWxlIChUIGEgPSAqZGF0YSsrKSB7CisgICAgICAgICAgICBU
IGIgPSAqZGF0YSsrOworICAgICAgICAgICAgaWYgKCFiKSB7CisgICAgICAgICAgICAgICAgYWRk
Q2hhcmFjdGVyKENvbnZlcnRlcihhKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKENvbnZlcnRl
cihhKSwgQ29udmVydGVyKGIpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChjb25zdCBUKiBkYXRh
KQorICAgIHsKKyAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZDxULCBkZWZhdWx0
Q29udmVydGVyPihkYXRhKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBVQ2hh
ciBDb252ZXJ0ZXIoVCk+IHZvaWQgYWRkQ2hhcmFjdGVycyhjb25zdCBUKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgeworICAgICAgICBpZiAobV9oYXNQZW5kaW5nQ2hhcmFjdGVyICYmIGxl
bmd0aCkgeworICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gZmFsc2U7CisgICAg
ICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG1fcGVuZGluZ0NoYXJhY3Rlciwg
Q29udmVydGVyKCpkYXRhKyspKTsKKyAgICAgICAgICAgIC0tbGVuZ3RoOworICAgICAgICB9Cisg
ICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQ8VCwgQ29udmVydGVyPihkYXRhLCBs
ZW5ndGgpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkQ2hhcmFj
dGVycyhjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBhZGRD
aGFyYWN0ZXJzPFQsIGRlZmF1bHRDb252ZXJ0ZXI+KGRhdGEsIGxlbmd0aCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVUNoYXIgQ29udmVydGVyKFQpPiB2b2lkIGFkZENoYXJh
Y3RlcnMoY29uc3QgVCogZGF0YSkKKyAgICB7CisgICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFy
YWN0ZXIgJiYgKmRhdGEpIHsKKyAgICAgICAgICAgIG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IGZh
bHNlOworICAgICAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChtX3BlbmRpbmdD
aGFyYWN0ZXIsIENvbnZlcnRlcigqZGF0YSsrKSk7CisgICAgICAgIH0KKyAgICAgICAgYWRkQ2hh
cmFjdGVyc0Fzc3VtaW5nQWxpZ25lZDxULCBDb252ZXJ0ZXI+KGRhdGEpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkQ2hhcmFjdGVycyhjb25zdCBUKiBkYXRhKQor
ICAgIHsKKyAgICAgICAgYWRkQ2hhcmFjdGVyczxULCBkZWZhdWx0Q29udmVydGVyPihkYXRhKTsK
KyAgICB9CisKICAgICB1bnNpZ25lZCBoYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGF2YWxhbmNoZUJpdHMoKTsKQEAgLTEyNCwz
NyArMTkyLDE0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBVQ2hhciBDb252
ZXJ0ZXIoVCk+IHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhjb25z
dCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICBTdHJpbmdIYXNoZXIg
aGFzaGVyOwotICAgICAgICBib29sIHJlbWFpbmRlciA9IGxlbmd0aCAmIDE7Ci0gICAgICAgIGxl
bmd0aCA+Pj0gMTsKLQotICAgICAgICB3aGlsZSAobGVuZ3RoLS0pIHsKLSAgICAgICAgICAgIGhh
c2hlci5hZGRDaGFyYWN0ZXJzKENvbnZlcnRlcihkYXRhWzBdKSwgQ29udmVydGVyKGRhdGFbMV0p
KTsKLSAgICAgICAgICAgIGRhdGEgKz0gMjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChyZW1h
aW5kZXIpCi0gICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKENvbnZlcnRlcigqZGF0YSkp
OwotCisgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkPFQsIENvbnZl
cnRlcj4oZGF0YSwgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIGhhc2hlci5oYXNoV2l0aFRvcDhC
aXRzTWFza2VkKCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVUNoYXIgQ29u
dmVydGVyKFQpPiBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY29u
c3QgVCogZGF0YSkKICAgICB7CiAgICAgICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7Ci0KLSAgICAg
ICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIFVDaGFyIGIwID0gQ29udmVydGVyKCpkYXRh
KyspOwotICAgICAgICAgICAgaWYgKCFiMCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIFVDaGFyIGIxID0gQ29udmVydGVyKCpkYXRhKyspOwotICAgICAgICAgICAgaWYgKCFi
MSkgewotICAgICAgICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIoYjApOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBoYXNoZXIuYWRkQ2hh
cmFjdGVycyhiMCwgYjEpOwotICAgICAgICB9Ci0KKyAgICAgICAgaGFzaGVyLmFkZENoYXJhY3Rl
cnNBc3N1bWluZ0FsaWduZWQ8VCwgQ29udmVydGVyPihkYXRhKTsKICAgICAgICAgcmV0dXJuIGhh
c2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCk7CiAgICAgfQogCkBAIC0xNzEsMjcgKzIxNiwx
NCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVUNoYXIgQ29udmVydGVyKFQp
PiBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgVCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQogICAgIHsKICAgICAgICAgU3RyaW5nSGFzaGVyIGhhc2hlcjsKLSAgICAgICAgaGFzaGVy
LmFkZENoYXJhY3RlcnM8VCwgQ29udmVydGVyPihkYXRhLCBsZW5ndGgpOworICAgICAgICBoYXNo
ZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZDxULCBDb252ZXJ0ZXI+KGRhdGEsIGxlbmd0
aCk7CiAgICAgICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIFVDaGFyIENvbnZlcnRlcihUKT4gc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVI
YXNoKGNvbnN0IFQqIGRhdGEpCiAgICAgewogICAgICAgICBTdHJpbmdIYXNoZXIgaGFzaGVyOwot
Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBVQ2hhciBiMCA9IENvbnZlcnRl
cigqZGF0YSsrKTsKLSAgICAgICAgICAgIGlmICghYjApCi0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBVQ2hhciBiMSA9IENvbnZlcnRlcigqZGF0YSsrKTsKLSAgICAgICAgICAg
IGlmICghYjEpIHsKLSAgICAgICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKGIwKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaGFzaGVy
LmFkZENoYXJhY3RlcnMoYjAsIGIxKTsKLSAgICAgICAgfQotCisgICAgICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkPFQsIENvbnZlcnRlcj4oZGF0YSk7CiAgICAgICAgIHJl
dHVybiBoYXNoZXIuaGFzaCgpOwogICAgIH0KIApAQCAtMjMxLDEzICsyNjMsNiBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gY2hhcmFjdGVyOwogICAgIH0KIAotICAgIHZvaWQgYWRkQ2hhcmFj
dGVyc1RvSGFzaChVQ2hhciBhLCBVQ2hhciBiKQotICAgIHsKLSAgICAgICAgbV9oYXNoICs9IGE7
Ci0gICAgICAgIG1faGFzaCA9IChtX2hhc2ggPDwgMTYpIF4gKChiIDw8IDExKSBeIG1faGFzaCk7
Ci0gICAgICAgIG1faGFzaCArPSBtX2hhc2ggPj4gMTE7Ci0gICAgfQotCiAgICAgdW5zaWduZWQg
YXZhbGFuY2hlQml0cygpIGNvbnN0CiAgICAgewogICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBt
X2hhc2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0
aENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmgK
aW5kZXggMmJlNTQ2ZDBjYWJiMTMwYzdkMDgxYjM2NjNkMDIxMWUyNGZjMTY0YS4uMjVlNzZiNGVm
NzVlMmRlYmExYzA2MDJiMDQ1ODUwNTY3OTEyOTI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgOiBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVChsZW5ndGggPD0gc19jYXBhY2l0eSk7CisKICAgICAgICAgICAgIFN0cmluZ0hhc2hlciBo
YXNoZXI7CiAKICAgICAgICAgICAgIGJvb2wgcmVtYWluZGVyID0gbGVuZ3RoICYgMTsKQEAgLTY3
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdoaWxlIChsZW5ndGgtLSkgewogICAg
ICAgICAgICAgICAgIG1fY2hhcmFjdGVyc1tpXSA9IGNoYXJhY3RlcnNbaV07CiAgICAgICAgICAg
ICAgICAgbV9jaGFyYWN0ZXJzW2kgKyAxXSA9IGNoYXJhY3RlcnNbaSArIDFdOwotICAgICAgICAg
ICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKGNoYXJhY3RlcnNbaV0sIGNoYXJhY3RlcnNbaSAr
IDFdKTsKKyAgICAgICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25l
ZChjaGFyYWN0ZXJzW2ldLCBjaGFyYWN0ZXJzW2kgKyAxXSk7CiAgICAgICAgICAgICAgICAgaSAr
PSAyOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMmZkZTBkYTQ5OGM5Yjk2YmU2OGExY2I3YzJhZGI1NTE2MDA4NDEy
Yi4uYTVhMWY1MjZlODFhM2U4ZWE0YWM2NDYyY2QzZTFiY2I4NzhiMDgzYSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDEzLTAyLTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJp
bmdIYXNoZXIgZnVuY3Rpb25zIHJlcXVpcmUgYWxpZ25tZW50IHRoYXQgY2FsbCBzaXRlcyBkbyBu
b3QgYWxsIGd1YXJhbnRlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTEwMTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvR05VbWFrZWZpbGUuYW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLmd5cGk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHBy
b2ovVGVzdFdlYktpdEFQSS52Y3hwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURi5wcm86CisgICAgICAgICogVGVz
dFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQSS52Y3Byb2o6CisgICAgICAgIEFkZGVkIHRoZSBT
dHJpbmdIYXNoZXIuY3BwIGZpbGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TdHJpbmdIYXNoZXIuY3BwOiBBZGRlZC4gQ29udGFpbnMgYSBidW5jaCBvZiB0ZXN0cworICAg
ICAgICBmb3IgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgU3RyaW5nSGFzaGVyIGNsYXNzLgorCiAyMDEz
LTAyLTI2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IG5ldy1jb21taXQtYm90OiBTb21lIElSQyBjbGllbnRzIGRvZXNuJ3QgbGlua2lmeSByb2xsb3V0
IG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCAxZDk2YjBkNjA1NzY5
YjRmNjhlOGIxMzFmM2RmN2JkOTBlMDQ2NjFhLi43MWY3YTkyMzcxYmY1ZmU5ZjBkMTIxZDQ2YTA0
OWYwY2UwNzE1YmIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTgxLDYgKzgx
LDcgQEAgYWRkX2V4ZWN1dGFibGUodGVzdF93dGYKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvUmVkQmxhY2tUcmVlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9TYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XVEYvU3RyaW5nSGFzaGVyLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL1RlbXBvcmFyeUNoYW5nZS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
R05VbWFrZWZpbGUuYW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDdkNzY1ZTQ5YjI5N2ZiZGI1YzUyMjExZDM3ODM4NGYzZTg1YmY4YzIuLjAxNjUzNDViYjliMDVm
NTM1N2I5OWFmMjQ4NjhlNjk3YmFkNGRiYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5h
bQpAQCAtNTgsNiArNTgsNyBAQCBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXVEZfU09VUkNF
UyA9IFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWRCbGFja1RyZWUuY3BwIFwK
IAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0
aW9ucy5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIu
Y3BwIFwKKwlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdIYXNoZXIuY3BwIFwK
IAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcCBcCiAJVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcCBcCiAJVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVGVtcG9yYXJ5Q2hhbmdlLmNwcCBcCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS5neXBpCmluZGV4IDVlN2YxN2U4ZGE4ZWEyYjBkMzZmNTQyMTczMDk3
ZjJmMzIyYjQ5OWEuLjBmNzFlODI3ODI4ZjhmZGU3MzE5YjI3MTEwNzFlM2IxMGU0OTQwMWYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXBpCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS5neXBpCkBAIC00NSw2ICs0NSw3IEBACiAg
ICAgICAgICAgICAnVGVzdHMvV1RGL1JlZEJsYWNrVHJlZS5jcHAnLAogICAgICAgICAgICAgJ1Rl
c3RzL1dURi9TYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAnLAogICAgICAgICAgICAg
J1Rlc3RzL1dURi9TdHJpbmdCdWlsZGVyLmNwcCcsCisgICAgICAgICAgICAnVGVzdHMvV1RGL1N0
cmluZ0hhc2hlci5jcHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcCcs
CiAgICAgICAgICAgICAnVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAnLAogICAgICAgICAg
ICAgJ1Rlc3RzL1dURi9UZW1wb3JhcnlDaGFuZ2UuY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEku
dmN4cHJvagppbmRleCAwZjI5NjU1Y2MxNjNlMWYwMmIyYmI4NTVkMjE1YjJlMGJkY2Y1M2VhLi4x
MThkZWFiODQxYTg3ZjkwYzdhOTc0ZWNiN2U2MzkwMzViYTFiNzI0IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHBy
b2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdl
YktpdEFQSS52Y3hwcm9qCkBAIC0xMTYsNiArMTE2LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXFRlc3RzXFdURlxNYXRoRXh0cmFzLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxUZXN0c1xXVEZcTWVkaWFUaW1lLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxUZXN0c1xXVEZcU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIiAvPg0K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdURlxTdHJpbmdIYXNoZXIuY3BwIiAv
Pg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdURlxTdHJpbmdPcGVyYXRvcnMu
Y3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdURlxWZWN0b3IuY3Bw
IiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdURlxWZWN0b3JCYXNpYy5j
cHAiIC8+DQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZj
eHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9qLmZpbHRlcnMgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2ouZmlsdGVycwppbmRl
eCBkZjA5NmY2YTcyYWQxZDhiNTIxOTQ2MDQ3MzgwMzkxNjJhZmFiN2FlLi4zNzU2MzgzNmJkYzNm
MmYyOGZhMjFkOGI1YzcwMDI0OWI3ZmYwNDEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2ouZmlsdGVycwor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0
QVBJLnZjeHByb2ouZmlsdGVycwpAQCAtNjMsNiArNjMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cVGVzdHNcV1RGXFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCI+DQog
ICAgICAgPEZpbHRlcj5UZXN0c1xXVEY8L0ZpbHRlcj4NCiAgICAgPC9DbENvbXBpbGU+DQorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RGXFN0cmluZ0hhc2hlci5jcHAiPg0KKyAg
ICAgIDxGaWx0ZXI+VGVzdHNcV1RGPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdURlxTdHJpbmdPcGVyYXRvcnMuY3BwIj4NCiAg
ICAgICA8RmlsdGVyPlRlc3RzXFdURjwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDRkOGQ4MTYxMjNhYWM5Yzk2ZGJkMTg3ZTNhYjRhYTQ3Nzdj
YjMyYjMuLjVmNjZiMDk5Yjk3NTU2YTQzYzdiYTkxOTgwZDc2MDUyYzNkODA5NzYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05NSw2ICs5NSw3IEBACiAJCTkzMTg3Nzg5MTVFRUM1NzcwMEE5
Q0NFMyAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBRjRFQ0ExNTA2RjAz
NTAwN0ZENTdFIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHAg
Ki87IH07CiAJCTkzNjEwMDI5MTREQzk1QTcwMDYxMzc5RCAvKiBsb3RzLW9mLWlmcmFtZXMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzYxMDAyODE0REM5NTdCMDA2MTM3OUQgLyogbG90cy1vZi1pZnJhbWVzLmh0bWwgKi87IH07CiAJ
CTkzOUJBOTE3MTQxMDM0MTIwMDFBMDFCRCAvKiBEZXZpY2VTY2FsZUZhY3Rvck9uQmFjay5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOUJBOTE2MTQx
MDM0MTIwMDFBMDFCRCAvKiBEZXZpY2VTY2FsZUZhY3Rvck9uQmFjay5tbSAqLzsgfTsKKwkJOTNB
QkE4MDkxNkREQUI5MTAwMkRCMkZBIC8qIFN0cmluZ0hhc2hlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FCQTgwODE2RERBQjkxMDAyREIyRkEg
LyogU3RyaW5nSGFzaGVyLmNwcCAqLzsgfTsKIAkJOTNBRjRFQ0UxNTA2RjA2NDAwN0ZENTdFIC8q
IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBRjRFQ0QxNTA2RjA2
NDAwN0ZENTdFIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19CdW5k
bGUuY3BwICovOyB9OwogCQk5M0FGNEVEMDE1MDZGMTIzMDA3RkQ1N0UgLyogbG90cy1vZi1pbWFn
ZXMuaHRtbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNBRjRFQ0YxNTA2RjEyMzAwN0ZENTdFIC8qIGxvdHMtb2YtaW1hZ2VzLmh0bWwgKi87IH07CiAJ
CTkzQUY0RUQxMTUwNkYxMzAwMDdGRDU3RSAvKiBsb3RzLW9mLWltYWdlcy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUY0RUNGMTUw
NkYxMjMwMDdGRDU3RSAvKiBsb3RzLW9mLWltYWdlcy5odG1sICovOyB9OwpAQCAtMjczLDcgKzI3
NCw3IEBACiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkwMEJDMTY4NTE2ODBGRTgxMDA2NUYx
RTUgLyogUHVibGljU3VmZml4Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gUHVibGljU3VmZml4Lm1tOyBwYXRoID0gUHVibGljU3VmZml4Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwMEJDMTY4NTE2ODBGRTgxMDA2NUYxRTUgLyogUHVibGljU3Vm
Zml4Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHVibGljU3Vm
Zml4Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMENEOUY2MjE1QkUzMTJDMDAy
REEyQ0UgLyogQmFja0ZvcndhcmRMaXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gQmFja0ZvcndhcmRMaXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwQkNEODMzNDE0ODU3Q0U0MDBFQTIwMDMgLyogSGFzaE1hcC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIYXNoTWFwLmNwcDsgcGF0aCA9IFdURi9IYXNoTWFw
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDg1NjkxNDg1Qzk4QjAwRUEy
MDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBUZW1wb3JhcnlDaGFuZ2UuY3BwOyBwYXRoID0gV1RGL1RlbXBvcmFyeUNoYW5nZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjIsNiArMzYzLDcgQEAKIAkJOTMw
QUQ0MDExNTA2OThCMzAwNjc5NzBGIC8qIGxvdHMtb2YtdGV4dC5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gImxvdHMtb2YtdGV4dC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM2MTAwMjgxNERDOTU3QjAwNjEzNzlEIC8qIGxvdHMtb2YtaWZyYW1lcy5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxvdHMtb2YtaWZyYW1lcy5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5QkE5MTYxNDEwMzQxMjAwMUEwMUJEIC8qIERl
dmljZVNjYWxlRmFjdG9yT25CYWNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRGV2aWNlU2NhbGVGYWN0b3JPbkJhY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzQUJBODA4MTZEREFCOTEwMDJEQjJGQSAvKiBTdHJpbmdIYXNoZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3RyaW5nSGFzaGVyLmNwcDsgcGF0
aCA9IFdURi9TdHJpbmdIYXNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
M0FGNEVDQTE1MDZGMDM1MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9ySW1hZ2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQUY0RUNEMTUwNkYwNjQwMDdGRDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19C
dW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FGNEVDRjE1MDZGMTIz
MDA3RkQ1N0UgLyogbG90cy1vZi1pbWFnZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJsb3RzLW9mLWltYWdlcy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTcyNCw2ICs3MjYsNyBAQAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFj
a1RyZWUuY3BwICovLAogCQkJCTE0RjNCMTEyMTVFNDVFQUIwMDIxMDA2OSAvKiBTYXR1cmF0ZWRB
cml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJODFCNTAxOTIxNDBGMjMyMzAwRDlFQjU4
IC8qIFN0cmluZ0J1aWxkZXIuY3BwICovLAorCQkJCTkzQUJBODA4MTZEREFCOTEwMDJEQjJGQSAv
KiBTdHJpbmdIYXNoZXIuY3BwICovLAogCQkJCTI2RjFCNDQzMTVDQTQzNEYwMEQxRTRCRiAvKiBT
dHJpbmdJbXBsLmNwcCAqLywKIAkJCQlDMDEzNjNDNzEzQzM5OTczMDBFRjM5NjQgLyogU3RyaW5n
T3BlcmF0b3JzLmNwcCAqLywKIAkJCQkwQkNEODU2OTE0ODVDOThCMDBFQTIwMDMgLyogVGVtcG9y
YXJ5Q2hhbmdlLmNwcCAqLywKQEAgLTk0Nyw4ICs5NTAsNiBAQAogLyogQmVnaW4gUEJYUHJvamVj
dCBzZWN0aW9uICovCiAJCTA4RkI3NzkzRkU4NDE1NURDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7Ci0JCQlhdHRyaWJ1dGVzID0gewotCQkJfTsK
IAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxREVCOTI3ODA4NzMzREQ0MDAxMEU5Q0QgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJUZXN0V2ViS2l0QVBJIiAq
LzsKIAkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMSI7CiAJCQlkZXZlbG9wbWVu
dFJlZ2lvbiA9IEVuZ2xpc2g7CkBAIC0xMDgwLDYgKzEwODEsNyBAQAogCQkJCUMwMkI3N0YyMTI2
NjEyMTQwMDI2QkYwRiAvKiBTcGFjZWJhclNjcm9sbGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4MUI1MDE5MzE0MEYyMzIzMDBEOUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzNzk5QUQzQTE0MTIwQTQzMDA1RUIwQzYgLyogU3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdEZyb21TdHJpbmcubW0gaW4gU291cmNlcyAqLywKKwkJCQk5M0FCQTgwOTE2RERB
QjkxMDAyREIyRkEgLyogU3RyaW5nSGFzaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2RjFC
NDQ1MTVDQTQzNEYwMEQxRTRCRiAvKiBTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUMwMTM2M0M4MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMzdBNjg5NUYxNDhBOUI1MDAwNTEwMEZBIC8qIFN1YnJlc291cmNlRXJyb3JD
cmFzaC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nSGFzaGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1N0cmluZ0hhc2hlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ5NTk2MGY1ODRmNjA3NzcwOTcyMzBkNzJh
ZTA4ZTAzMmVjOTRiMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1N0cmluZ0hhc2hlci5jcHAKQEAgLTAsMCArMSw0NDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvU3RyaW5nSGFzaGVyLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGNvbnN0IExDaGFyIG51bGxMQ2hhcnNb
Ml0gPSB7IDAsIDAgfTsKK3N0YXRpYyBjb25zdCBVQ2hhciBudWxsVUNoYXJzWzJdID0geyAwLCAw
IH07CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBlbXB0eVN0cmluZ0hhc2ggPSAweDRFQzg4OUVV
Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNpbmdsZU51bGxDaGFyYWN0ZXJIYXNoID0gMHgzRDNB
QkY0NFU7CisKK3N0YXRpYyBjb25zdCBMQ2hhciB0ZXN0QUxDaGFyc1s2XSA9IHsgMHg0MSwgMHg5
NSwgMHhGRiwgMHg1MCwgMHgwMSwgMCB9Oworc3RhdGljIGNvbnN0IFVDaGFyIHRlc3RBVUNoYXJz
WzZdID0geyAweDQxLCAweDk1LCAweEZGLCAweDUwLCAweDAxLCAwIH07CitzdGF0aWMgY29uc3Qg
VUNoYXIgdGVzdEJVQ2hhcnNbNV0gPSB7IDB4NDEsIDB4OTUsIDB4RkZGRiwgMHgxMDgwLCAweDAx
IH07CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCB0ZXN0QUhhc2gxID0gMHhFQTMyQjAwNDsKK3N0
YXRpYyBjb25zdCB1bnNpZ25lZCB0ZXN0QUhhc2gyID0gMHg5M0YwRjcxRTsKK3N0YXRpYyBjb25z
dCB1bnNpZ25lZCB0ZXN0QUhhc2gzID0gMHhDQjYwOUVCMTsKK3N0YXRpYyBjb25zdCB1bnNpZ25l
ZCB0ZXN0QUhhc2g0ID0gMHg3OTg0QTcwNjsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCB0ZXN0QUhh
c2g1ID0gMHgwNDI3NTYxRjsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRlc3RCSGFzaDEgPSAw
eEVBMzJCMDA0Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRlc3RCSGFzaDIgPSAweDkzRjBGNzFF
Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRlc3RCSGFzaDMgPSAweDU5RUIxQjJDOworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHRlc3RCSGFzaDQgPSAweEE3QkNDQzBBOworc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHRlc3RCSGFzaDUgPSAweDc5MjAxNjQ5OworCitURVNUKFdURiwgU3RyaW5nSGFzaGVy
KQoreworICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7CisKKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNo
ZXIoKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoLCBoYXNoZXIuaGFzaCgpKTsKKyAg
ICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRv
cDhCaXRzTWFza2VkKCkpOworfQorCitURVNUKFdURiwgU3RyaW5nSGFzaGVyX2FkZENoYXJhY3Rl
cikKK3sKKyAgICBTdHJpbmdIYXNoZXIgaGFzaGVyOworCisgICAgaGFzaGVyID0gU3RyaW5nSGFz
aGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcigwKTsKKyAgICBBU1NFUlRfRVEoc2luZ2xl
TnVsbENoYXJhY3Rlckhhc2gsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUShzaW5nbGVO
dWxsQ2hhcmFjdGVySGFzaCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tl
ZCgpKTsKKworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFy
YWN0ZXIodGVzdEFVQ2hhcnNbMF0pOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gxLCBoYXNoZXIu
aGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoMSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFz
aFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RBVUNo
YXJzWzFdKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoMiwgaGFzaGVyLmhhc2goKSk7CisgICAg
QVNTRVJUX0VRKHRlc3RBSGFzaDIgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNN
YXNrZWQoKSk7CisgICAgaGFzaGVyLmFkZENoYXJhY3Rlcih0ZXN0QVVDaGFyc1syXSk7CisgICAg
QVNTRVJUX0VRKHRlc3RBSGFzaDMsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0
QUhhc2gzICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAg
IGhhc2hlci5hZGRDaGFyYWN0ZXIodGVzdEFVQ2hhcnNbM10pOworICAgIEFTU0VSVF9FUSh0ZXN0
QUhhc2g0LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNCAmIDB4RkZG
RkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hh
cmFjdGVyKHRlc3RBVUNoYXJzWzRdKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVy
Lmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhh
c2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisKKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsK
KyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RCVUNoYXJzWzBdKTsKKyAgICBBU1NFUlRfRVEo
dGVzdEJIYXNoMSwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDEgJiAw
eEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyLmFk
ZENoYXJhY3Rlcih0ZXN0QlVDaGFyc1sxXSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDIsIGhh
c2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2gyICYgMHhGRkZGRkYsIGhhc2hl
ci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIodGVz
dEJVQ2hhcnNbMl0pOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2gzLCBoYXNoZXIuaGFzaCgpKTsK
KyAgICBBU1NFUlRfRVEodGVzdEJIYXNoMyAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4
Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RCVUNoYXJzWzNdKTsK
KyAgICBBU1NFUlRfRVEodGVzdEJIYXNoNCwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VR
KHRlc3RCSGFzaDQgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7
CisgICAgaGFzaGVyLmFkZENoYXJhY3Rlcih0ZXN0QlVDaGFyc1s0XSk7CisgICAgQVNTRVJUX0VR
KHRlc3RCSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1ICYg
MHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworfQorCitURVNUKFdU
RiwgU3RyaW5nSGFzaGVyX2FkZENoYXJhY3RlcnMpCit7CisgICAgU3RyaW5nSGFzaGVyIGhhc2hl
cjsKKworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0
ZXJzKHN0YXRpY19jYXN0PExDaGFyKj4oMCksIDApOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmlu
Z0hhc2gsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAw
eEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyID0g
U3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMobnVsbExDaGFycywgMCk7
CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNT
RVJUX0VRKGVtcHR5U3RyaW5nSGFzaCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0
c01hc2tlZCgpKTsKKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRk
Q2hhcmFjdGVycyhudWxsTENoYXJzKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoLCBo
YXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYs
IGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hh
c2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHN0YXRpY19jYXN0PFVDaGFyKj4oMCks
IDApOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkpOworICAg
IEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9w
OEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVy
LmFkZENoYXJhY3RlcnMobnVsbFVDaGFycywgMCk7CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5n
SGFzaCwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCAmIDB4
RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIgPSBT
dHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhudWxsVUNoYXJzKTsKKyAg
ICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRf
RVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFz
a2VkKCkpOworCisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENo
YXJhY3RlcnMobnVsbExDaGFycywgMSk7CisgICAgQVNTRVJUX0VRKHNpbmdsZU51bGxDaGFyYWN0
ZXJIYXNoLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rl
ckhhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAg
aGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMobnVsbFVD
aGFycywgMSk7CisgICAgQVNTRVJUX0VRKHNpbmdsZU51bGxDaGFyYWN0ZXJIYXNoLCBoYXNoZXIu
aGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rlckhhc2ggJiAweEZGRkZG
RiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisKKyAgICBoYXNoZXIgPSBTdHJp
bmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycywgNSk7Cisg
ICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0
ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwor
ICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRl
c3RBTENoYXJzKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVyLmhhc2goKSk7Cisg
ICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJp
dHNNYXNrZWQoKSk7CisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFk
ZENoYXJhY3RlcnModGVzdEFVQ2hhcnMsIDUpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBo
YXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNo
ZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIo
KTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QVVDaGFycyk7CisgICAgQVNTRVJUX0VR
KHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYg
MHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworCisgICAgaGFzaGVy
ID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFMQ2hhcnMs
IDIpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gyLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NF
UlRfRVEodGVzdEFIYXNoMiAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tl
ZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycyArIDIsIDIpOworICAg
IEFTU0VSVF9FUSh0ZXN0QUhhc2g0LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVz
dEFIYXNoNCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAg
ICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycyArIDQsIDEpOworICAgIEFTU0VSVF9F
USh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAm
IDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKworICAgIGhhc2hl
ciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBTENoYXJz
LCAzKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoMywgaGFzaGVyLmhhc2goKSk7CisgICAgQVNT
RVJUX0VRKHRlc3RBSGFzaDMgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNr
ZWQoKSk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFMQ2hhcnMgKyAzLCAyKTsKKyAg
ICBBU1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRl
c3RBSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisK
KyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0
ZXN0QVVDaGFycywgMik7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDIsIGhhc2hlci5oYXNoKCkp
OworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gyICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRv
cDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBVUNoYXJzICsg
MiwgMik7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDQsIGhhc2hlci5oYXNoKCkpOworICAgIEFT
U0VSVF9FUSh0ZXN0QUhhc2g0ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFz
a2VkKCkpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBVUNoYXJzICsgNCwgMSk7Cisg
ICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0
ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwor
CisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMo
dGVzdEFVQ2hhcnMsIDMpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzLCBoYXNoZXIuaGFzaCgp
KTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoMyAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhU
b3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QVVDaGFycyAr
IDMsIDIpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBB
U1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01h
c2tlZCgpKTsKKworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXJzKHRlc3RBTENoYXJzLCAyKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0
QUxDaGFycyArIDIsIDIpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBTENoYXJzICsg
NCk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VS
VF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2Vk
KCkpOworCisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJh
Y3RlcnModGVzdEFMQ2hhcnMsIDMpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzLCBoYXNoZXIu
aGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoMyAmIDB4RkZGRkZGLCBoYXNoZXIuaGFz
aFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxD
aGFycyArIDMpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAg
ICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0
c01hc2tlZCgpKTsKKworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5h
ZGRDaGFyYWN0ZXJzKHRlc3RBVUNoYXJzLCAyKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0
ZXN0QVVDaGFycyArIDIsIDIpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBVUNoYXJz
ICsgNCk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFT
U0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFz
a2VkKCkpOworCisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENo
YXJhY3RlcnModGVzdEFVQ2hhcnMsIDMpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzLCBoYXNo
ZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoMyAmIDB4RkZGRkZGLCBoYXNoZXIu
aGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0
QVVDaGFycyArIDMsIDIpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgp
KTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhU
b3A4Qml0c01hc2tlZCgpKTsKKworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhh
c2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RCVUNoYXJzLCA1KTsKKyAgICBBU1NFUlRfRVEodGVzdEJI
YXNoNSwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUgJiAweEZGRkZG
RiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisKKyAgICBoYXNoZXIgPSBTdHJp
bmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVDaGFycyk7CisgICAg
QVNTRVJUX0VRKHRlc3RCSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0
Qkhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworCisg
ICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVz
dEJVQ2hhcnMsIDIpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2gyLCBoYXNoZXIuaGFzaCgpKTsK
KyAgICBBU1NFUlRfRVEodGVzdEJIYXNoMiAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4
Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVDaGFycyArIDIs
IDIpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g0LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NF
UlRfRVEodGVzdEJIYXNoNCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tl
ZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVDaGFycyArIDQsIDEpOworICAg
IEFTU0VSVF9FUSh0ZXN0Qkhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVz
dEJIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKwor
ICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRl
c3RCVUNoYXJzLCAyKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVDaGFycyArIDIs
IDIpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RCVUNoYXJzICsgNCk7CisgICAgQVNT
RVJUX0VRKHRlc3RCSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhh
c2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworCisgICAg
aGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEJV
Q2hhcnMsIDMpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2gzLCBoYXNoZXIuaGFzaCgpKTsKKyAg
ICBBU1NFUlRfRVEodGVzdEJIYXNoMyAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0
c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVDaGFycyArIDMsIDIp
OworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRf
RVEodGVzdEJIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgp
KTsKKworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0
ZXJzKHRlc3RCVUNoYXJzLCAzKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVDaGFy
cyArIDMpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBB
U1NFUlRfRVEodGVzdEJIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01h
c2tlZCgpKTsKK30KKworVEVTVChXVEYsIFN0cmluZ0hhc2hlcl9hZGRDaGFyYWN0ZXJzQXNzdW1p
bmdBbGlnbmVkKQoreworICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7CisKKyAgICBoYXNoZXIgPSBT
dHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChz
dGF0aWNfY2FzdDxMQ2hhcio+KDApLCAwKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNo
LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZG
RkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmlu
Z0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG51bGxM
Q2hhcnMsIDApOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkp
OworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hX
aXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAg
aGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQoc3RhdGljX2Nhc3Q8VUNoYXIqPigw
KSwgMCk7CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCwgaGFzaGVyLmhhc2goKSk7Cisg
ICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhU
b3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNo
ZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChudWxsVUNoYXJzLCAwKTsKKyAgICBBU1NF
UlRfRVEoZW1wdHlTdHJpbmdIYXNoLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoZW1w
dHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkp
OworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJz
QXNzdW1pbmdBbGlnbmVkKG51bGxVQ2hhcnMpOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hh
c2gsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZG
RkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisKKyAgICBoYXNoZXIgPSBT
dHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChu
dWxsTENoYXJzLCAxKTsKKyAgICBBU1NFUlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rlckhhc2gsIGhh
c2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUShzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCAmIDB4
RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIgPSBT
dHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChu
dWxsVUNoYXJzLCAxKTsKKyAgICBBU1NFUlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rlckhhc2gsIGhh
c2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUShzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCAmIDB4
RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKworICAgIGhhc2hlciA9
IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVk
KHRlc3RBTENoYXJzLCA1KTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVyLmhhc2go
KSk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRo
VG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFz
aGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVzdEFMQ2hhcnMpOworICAgIEFTU0VS
VF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNo
NSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNo
ZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxp
Z25lZCh0ZXN0QVVDaGFycywgNSk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5o
YXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNo
V2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAg
IGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RBVUNoYXJzKTsKKyAgICBB
U1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RB
SGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisKKyAg
ICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3Vt
aW5nQWxpZ25lZCh0ZXN0QUxDaGFycywgMik7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDIsIGhh
c2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gyICYgMHhGRkZGRkYsIGhhc2hl
ci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNz
dW1pbmdBbGlnbmVkKHRlc3RBTENoYXJzICsgMiwgMik7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFz
aDQsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g0ICYgMHhGRkZGRkYs
IGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlci5hZGRDaGFyYWN0
ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RBTENoYXJzICsgNCwgMSk7CisgICAgQVNTRVJUX0VRKHRl
c3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhG
RkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworCisgICAgaGFzaGVyID0g
U3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQo
dGVzdEFVQ2hhcnMsIDIpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gyLCBoYXNoZXIuaGFzaCgp
KTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoMiAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhU
b3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25l
ZCh0ZXN0QVVDaGFycyArIDIsIDIpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g0LCBoYXNoZXIu
aGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFz
aFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5n
QWxpZ25lZCh0ZXN0QVVDaGFycyArIDQsIDEpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBo
YXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNo
ZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hl
cigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RBTENoYXJz
LCAyKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QUxDaGFy
cyArIDIsIDIpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RB
TENoYXJzICsgNCk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOwor
ICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhC
aXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5h
ZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RBVUNoYXJzLCAyKTsKKyAgICBoYXNoZXIu
YWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QVVDaGFycyArIDIsIDIpOworICAgIGhh
c2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RBVUNoYXJzICsgNCk7CisgICAg
QVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0
QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworCisg
ICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1
bWluZ0FsaWduZWQodGVzdEJVQ2hhcnMsIDUpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1LCBo
YXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNoNSAmIDB4RkZGRkZGLCBoYXNo
ZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIo
KTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QlVDaGFycyk7
CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9F
USh0ZXN0Qkhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkp
OworCisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3Rl
cnNBc3N1bWluZ0FsaWduZWQodGVzdEJVQ2hhcnMsIDIpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhh
c2gyLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNoMiAmIDB4RkZGRkZG
LCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFj
dGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QlVDaGFycyArIDIsIDIpOworICAgIEFTU0VSVF9FUSh0
ZXN0Qkhhc2g0LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNoNCAmIDB4
RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRk
Q2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QlVDaGFycyArIDQsIDEpOworICAgIEFTU0VS
VF9FUSh0ZXN0Qkhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNo
NSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKworICAgIGhh
c2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdB
bGlnbmVkKHRlc3RCVUNoYXJzLCAyKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5n
QWxpZ25lZCh0ZXN0QlVDaGFycyArIDIsIDIpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNz
dW1pbmdBbGlnbmVkKHRlc3RCVUNoYXJzICsgNCk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUs
IGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1ICYgMHhGRkZGRkYsIGhh
c2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworCisgICAgaGFzaGVyID0gU3RyaW5nSGFz
aGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3Rlcih0ZXN0QlVDaGFyc1swXSk7CisgICAgQVNT
RVJUX0VRKHRlc3RCSGFzaDEsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhh
c2gxICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhh
c2hlci5hZGRDaGFyYWN0ZXIodGVzdEJVQ2hhcnNbMV0pOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhh
c2gyLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNoMiAmIDB4RkZGRkZG
LCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFj
dGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QlVDaGFyc1syXSwgdGVzdEJVQ2hhcnNbM10pOworICAg
IEFTU0VSVF9FUSh0ZXN0Qkhhc2g0LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVz
dEJIYXNoNCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAg
ICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QlVDaGFycyArIDQpOwor
ICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEo
dGVzdEJIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsK
K30KKworVEVTVChXVEYsIFN0cmluZ0hhc2hlcl9jb21wdXRlSGFzaCkKK3sKKyAgICBBU1NFUlRf
RVEoZW1wdHlTdHJpbmdIYXNoLCBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoKHN0YXRpY19jYXN0
PExDaGFyKj4oMCksIDApKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoLCBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoKG51bGxMQ2hhcnMsIDApKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlT
dHJpbmdIYXNoLCBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoKHN0YXRpY19jYXN0PFVDaGFyKj4o
MCksIDApKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoLCBTdHJpbmdIYXNoZXI6OmNv
bXB1dGVIYXNoKG51bGxVQ2hhcnMsIDApKTsKKyAgICBBU1NFUlRfRVEoc2luZ2xlTnVsbENoYXJh
Y3Rlckhhc2gsIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2gobnVsbExDaGFycywgMSkpOworICAg
IEFTU0VSVF9FUShzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCwgU3RyaW5nSGFzaGVyOjpjb21wdXRl
SGFzaChudWxsVUNoYXJzLCAxKSk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIFN0cmluZ0hh
c2hlcjo6Y29tcHV0ZUhhc2godGVzdEFMQ2hhcnMsIDUpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFI
YXNoNSwgU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaCh0ZXN0QVVDaGFycywgNSkpOworICAgIEFT
U0VSVF9FUSh0ZXN0Qkhhc2g1LCBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoKHRlc3RCVUNoYXJz
LCA1KSk7Cit9CisKK1RFU1QoV1RGLCBTdHJpbmdIYXNoZXJfY29tcHV0ZUhhc2hBbmRNYXNrVG9w
OEJpdHMpCit7CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCAmIDB4RkZGRkZGLCBTdHJp
bmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHN0YXRpY19jYXN0PExDaGFyKj4o
MCksIDApKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIFN0cmlu
Z0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobnVsbExDaGFycywgMCkpOworICAg
IEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgU3RyaW5nSGFzaGVyOjpjb21w
dXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhzdGF0aWNfY2FzdDxVQ2hhcio+KDApLCAwKSk7CisgICAg
QVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCAmIDB4RkZGRkZGLCBTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzKG51bGxVQ2hhcnMsIDApKTsKKyAgICBBU1NFUlRfRVEoc2lu
Z2xlTnVsbENoYXJhY3Rlckhhc2ggJiAweEZGRkZGRiwgU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0cyhudWxsTENoYXJzLCAxKSk7CisgICAgQVNTRVJUX0VRKHNpbmdsZU51
bGxDaGFyYWN0ZXJIYXNoICYgMHhGRkZGRkYsIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRN
YXNrVG9wOEJpdHMobnVsbFVDaGFycywgMSkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYg
MHhGRkZGRkYsIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHModGVzdEFM
Q2hhcnMsIDUpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHRlc3RBVUNoYXJzLCA1KSk7CisgICAg
QVNTRVJUX0VRKHRlc3RCSGFzaDUgJiAweEZGRkZGRiwgU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0cyh0ZXN0QlVDaGFycywgNSkpOworfQorCitURVNUKFdURiwgU3RyaW5n
SGFzaGVyX2hhc2hNZW1vcnkpCit7CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCAmIDB4
RkZGRkZGLCBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkoMCwgMCkpOworICAgIEFTU0VSVF9FUShl
bXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KG51bGxV
Q2hhcnMsIDApKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIFN0
cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTwwPigwKSk7CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5n
SGFzaCAmIDB4RkZGRkZGLCBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8MD4obnVsbFVDaGFycykp
OworICAgIEFTU0VSVF9FUShzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCAmIDB4RkZGRkZGLCBTdHJp
bmdIYXNoZXI6Omhhc2hNZW1vcnkobnVsbFVDaGFycywgMikpOworICAgIEFTU0VSVF9FUShzaW5n
bGVOdWxsQ2hhcmFjdGVySGFzaCAmIDB4RkZGRkZGLCBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8
Mj4obnVsbFVDaGFycykpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIFN0
cmluZ0hhc2hlcjo6aGFzaE1lbW9yeSh0ZXN0QVVDaGFycywgMTApKTsKKyAgICBBU1NFUlRfRVEo
dGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8MTA+KHRlc3RB
VUNoYXJzKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUgJiAweEZGRkZGRiwgU3RyaW5nSGFz
aGVyOjpoYXNoTWVtb3J5KHRlc3RCVUNoYXJzLCAxMCkpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhh
c2g1ICYgMHhGRkZGRkYsIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTwxMD4odGVzdEJVQ2hhcnMp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGLnBybyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1dURi5wcm8KaW5kZXggNzA1YjdiYmYzNTkwNWVkMTBjZjE5ZjNkMWFlOTZlNTJmODhj
M2I3MS4uMTIwODE5ODFjYzkxY2NkNDRmNTVlNDgwNjkwZGY0NjU5OGJjMDBlZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGLnBybworKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEYucHJvCkBAIC0xNSw2ICsxNSw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIFJlZEJsYWNrVHJlZS5jcHAgXAogICAgIFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRp
b25zLmNwcCBcCiAgICAgU3RyaW5nQnVpbGRlci5jcHAgXAorICAgIFN0cmluZ0hhc2hlci5jcHAg
XAogICAgIFN0cmluZ0ltcGwuY3BwIFwKICAgICBTdHJpbmdPcGVyYXRvcnMuY3BwIFwKICAgICBU
ZW1wb3JhcnlDaGFuZ2UuY3BwIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2lu
L1Rlc3RXZWJLaXRBUEkudmNwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktp
dEFQSS52Y3Byb2oKaW5kZXggM2EyZmU5NWZjNzg4ZTM2OTJhYTcxMmEyYjU4ZjFlMGYyMDBhOTJh
Ni4uNWIxMjkxYmNiMTNhYzhlMTcxYjhjOTI0OThjMjViNzI5MmVkODUzNCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQSS52Y3Byb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQSS52Y3Byb2oKQEAgLTQ0OCw2ICs0NDgsMTAg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFRlc3RzXFdURlxTdHJpbmdIYXNoZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVGVzdHNcV1RGXFN0cmluZ09wZXJhdG9ycy5jcHAi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+Cg==
</data>
<flag name="review"
          id="211992"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>