<?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>87334</bug_id>
          
          <creation_ts>2012-05-23 19:36:45 -0700</creation_ts>
          <short_desc>Dynamic hash table in DOMObjectHashTableMap is wrong in multiple threads</short_desc>
          <delta_ts>2012-06-14 13:09:41 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>82156</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Leo Yang">leo.yang</reporter>
          <assigned_to name="Leo Yang">leo.yang</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>charles.wei</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>philn</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>632331</commentid>
    <comment_count>0</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-05-23 19:36:45 -0700</bug_when>
    <thetext>Daynamic hash table in DOMObjectHashTableMap is copied from the static table which may be created by other thread and contains thread specific identifiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632338</commentid>
    <comment_count>1</comment_count>
      <attachid>143706</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-05-23 19:43:40 -0700</bug_when>
    <thetext>Created attachment 143706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632347</commentid>
    <comment_count>2</comment_count>
      <attachid>143706</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-23 19:55:02 -0700</bug_when>
    <thetext>Comment on attachment 143706
Patch

Attachment 143706 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12804010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632349</commentid>
    <comment_count>3</comment_count>
      <attachid>143706</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-23 19:58:30 -0700</bug_when>
    <thetext>Comment on attachment 143706
Patch

Attachment 143706 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12795046</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632352</commentid>
    <comment_count>4</comment_count>
      <attachid>143706</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-23 20:02:54 -0700</bug_when>
    <thetext>Comment on attachment 143706
Patch

Attachment 143706 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12805006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632363</commentid>
    <comment_count>5</comment_count>
      <attachid>143714</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-05-23 20:21:55 -0700</bug_when>
    <thetext>Created attachment 143714
Patch v2

Rebased to fix build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632960</commentid>
    <comment_count>6</comment_count>
      <attachid>143714</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-24 11:09:28 -0700</bug_when>
    <thetext>Comment on attachment 143714
Patch v2

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

&gt; Source/WebCore/bindings/js/DOMObjectHashTableMap.h:56
&gt; +        // Don&apos;t copy dynamic allocated table which may be allocated on other thread and contains thread specific identifiers.
&gt; +        // For example, a JSEntryArray&apos;s hash map was first initialized on a worker thread, and then the user reloaded
&gt; +        // the page, another worker thread is created due to reload, the dynamic allocated table in *staticTable* is specific
&gt; +        // to the first worker thread which has died. If the user reload the page again, the dynamic table will be freed
&gt; +        // and memory corruption will occur.
&gt; +        table-&gt;table = 0;

Is there any other code that copies a JSC::HashTable and needs this fix?

I&apos;d prefer to see this logic in a JSC::HashTable copy constructor. That&apos;s the best way to ensure that we get this idiom right in all uses of JSC::HashTable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633050</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-24 12:27:00 -0700</bug_when>
    <thetext>Generally, I would not expect anything with &quot;DOM&quot; in its name to be used from non-main threads. Why is this an exception?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635061</commentid>
    <comment_count>8</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-05-28 02:56:17 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 143714 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143714&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/DOMObjectHashTableMap.h:56
&gt; &gt; +        // Don&apos;t copy dynamic allocated table which may be allocated on other thread and contains thread specific identifiers.
&gt; &gt; +        // For example, a JSEntryArray&apos;s hash map was first initialized on a worker thread, and then the user reloaded
&gt; &gt; +        // the page, another worker thread is created due to reload, the dynamic allocated table in *staticTable* is specific
&gt; &gt; +        // to the first worker thread which has died. If the user reload the page again, the dynamic table will be freed
&gt; &gt; +        // and memory corruption will occur.
&gt; &gt; +        table-&gt;table = 0;
&gt; 
&gt; Is there any other code that copies a JSC::HashTable and needs this fix?
I don&apos;t find.

&gt; 
&gt; I&apos;d prefer to see this logic in a JSC::HashTable copy constructor. That&apos;s the best way to ensure that we get this idiom right in all uses of JSC::HashTable.
Auto-generated Lexer.lut.h is using POD style initializer for JSC::HasTable. It will fail compile if we add a constructor to JSC::HashTable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635067</commentid>
    <comment_count>9</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-05-28 03:01:00 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Generally, I would not expect anything with &quot;DOM&quot; in its name to be used from non-main threads. Why is this an exception?

Actually, many idl files (like WebCore/Modules/filesystem/*.idl) which are not part of &quot;DOM&quot; is being used in multiple thread (for example, in worker thread).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635412</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-28 14:26:36 -0700</bug_when>
    <thetext>&gt; Auto-generated Lexer.lut.h is using POD style initializer for JSC::HasTable. It will fail compile if we add a constructor to JSC::HashTable.

Is there some reason this can&apos;t change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635659</commentid>
    <comment_count>11</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-05-29 00:10:18 -0700</bug_when>
    <thetext>I&apos;d prefer to keep the default bit-wise copy semantics. The copy constructor is being called implicitly when copy semantics is needed, for example when WTF::HashMap with value type JSC::HashTable moves values internally. For these cases bit-wise copy semantics is the right one. When we really don&apos;t need bit-wise copy we can do what we want explicitly just as the patch does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636209</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-29 10:40:51 -0700</bug_when>
    <thetext>&gt; &gt; Generally, I would not expect anything with &quot;DOM&quot; in its name to be used from non-main threads. Why is this an exception?
&gt; 
&gt; Actually, many idl files (like WebCore/Modules/filesystem/*.idl) which are not part of &quot;DOM&quot; is being used in multiple thread (for example, in worker thread).

OK, but what&apos;s DOMObjectHashTableMap anyway? &quot;DOM Object&quot; makes no sense if that includes both nodes and things like DOMFileSystem.idl - these objects have nothing in common.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636245</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-29 11:08:24 -0700</bug_when>
    <thetext>&gt; The copy constructor is being called implicitly when copy semantics is needed, for example when
&gt; WTF::HashMap with value type JSC::HashTable moves values internally. For these cases bit-wise copy
&gt; semantics is the right one.

You can get a bitwise copy in HashMap using HashTraits. See, for example, the traits for OwnPtr.

&gt; When we really don&apos;t need bit-wise copy we can do what we want explicitly just as the patch does.

My problem is with the word &quot;we&quot; here. Currently, there&apos;s no &quot;we&quot;. There&apos;s only one person in the WebKit project who understands the subtle thread-related problems that can arise when copying a JSC::HashTable: you.

If you give JSC::HashTable a copy constructor with correct semantics, along with a comment in the constructor explaining the semantics, then there is a &quot;we&quot;: anyone who tries to use the class incorrectly will get a compile error, which will point them at the constructor function, and a comment explaining its behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640351</commentid>
    <comment_count>14</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-06-03 23:37:16 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; The copy constructor is being called implicitly when copy semantics is needed, for example when
&gt; &gt; WTF::HashMap with value type JSC::HashTable moves values internally. For these cases bit-wise copy
&gt; &gt; semantics is the right one.
&gt; 
&gt; You can get a bitwise copy in HashMap using HashTraits. See, for example, the traits for OwnPtr.
I can&apos;t see how to get bitwise copy when a copy constructor is not bitwise copy where copy semantics is need for the compiler. For example, how to get bitwise copy for a return value (e.g. return value of HashTraits::passOut) when the copy constructor for JSC::HashTable is not bitwise semantically?

&gt; 
&gt; &gt; When we really don&apos;t need bit-wise copy we can do what we want explicitly just as the patch does.
&gt; 
&gt; My problem is with the word &quot;we&quot; here. Currently, there&apos;s no &quot;we&quot;. There&apos;s only one person in the WebKit project who understands the subtle thread-related problems that can arise when copying a JSC::HashTable: you.
&gt; 
&gt; If you give JSC::HashTable a copy constructor with correct semantics, along with a comment in the constructor explaining the semantics, then there is a &quot;we&quot;: anyone who tries to use the class incorrectly will get a compile error, which will point them at the constructor function, and a comment explaining its behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640728</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-04 12:07:20 -0700</bug_when>
    <thetext>&gt; For example, how to get bitwise copy for a return value (e.g. return value of HashTraits::passOut) 

Are you asking how to implement DOMObjectHashTableMap::get()?

Since that function already operates in terms of pointers and iterators, I don&apos;t think it requires an implementation of HashTraits::passOut().

If you need HashTraits::passOut() for JSC::HashTable, I&apos;d recommend using JSC::HashTable* as the PassOut type, just like OwnPtr&lt;T&gt; uses T* as the PassOut type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642144</commentid>
    <comment_count>16</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-06-05 21:06:20 -0700</bug_when>
    <thetext>I would choose OwnPtr&lt;JSC::HashTable&gt; as value type of the hash map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642145</commentid>
    <comment_count>17</comment_count>
      <attachid>145927</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-06-05 21:07:17 -0700</bug_when>
    <thetext>Created attachment 145927
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642161</commentid>
    <comment_count>18</comment_count>
      <attachid>145927</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-05 21:42:59 -0700</bug_when>
    <thetext>Comment on attachment 145927
Patch v3

Attachment 145927 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12902703</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642190</commentid>
    <comment_count>19</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-06-05 22:42:24 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 145927 [details])
&gt; Attachment 145927 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/12902703

It seems that Mac build doesn&apos;t allow global initializer for most files. Tools/Scripts/check-for-global-initializers was generating errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642606</commentid>
    <comment_count>20</comment_count>
      <attachid>145927</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-06 10:54:04 -0700</bug_when>
    <thetext>Comment on attachment 145927
Patch v3

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

&gt; It seems that Mac build doesn&apos;t allow global initializer for most files.

Indeed, it doesn&apos;t. I&apos;m surprised that constant initialization requires a global initializer. I guess we have to go back to struct initialization. Let&apos;s use a &quot;copy&quot; function in JSC::HashTable instead of a copy constructor.

&gt; Source/JavaScriptCore/runtime/Lookup.h:122
&gt; +        { }

WebKit style is to put a newline between &quot;{&quot; and &quot;}&quot;.

&gt; Source/JavaScriptCore/runtime/Lookup.h:127
&gt; +            if (this == &amp;other)
&gt; +                return;

Since this is not the assignment operator, this == &amp;other should be impossible.

&gt; Source/JavaScriptCore/runtime/Lookup.h:132
&gt; +            compactSize = other.compactSize;
&gt; +            compactHashSizeMask = other.compactHashSizeMask;
&gt; +            values = other.values;
&gt; +            // Don&apos;t copy dynamic table since it&apos;s thread specific.
&gt; +            table = 0;

Please use initializer syntax here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643134</commentid>
    <comment_count>21</comment_count>
      <attachid>146181</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-06-06 20:22:45 -0700</bug_when>
    <thetext>Created attachment 146181
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646734</commentid>
    <comment_count>22</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-06-12 01:40:28 -0700</bug_when>
    <thetext>Could someone review the updated patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647461</commentid>
    <comment_count>23</comment_count>
      <attachid>146181</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-12 16:32:45 -0700</bug_when>
    <thetext>Comment on attachment 146181
Patch v4

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647462</commentid>
    <comment_count>24</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-12 16:33:09 -0700</bug_when>
    <thetext>Would be nice, in clang builds, to delete the copy constructor from the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647519</commentid>
    <comment_count>25</comment_count>
      <attachid>146181</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 17:24:07 -0700</bug_when>
    <thetext>Comment on attachment 146181
Patch v4

Clearing flags on attachment: 146181

Committed r120143: &lt;http://trac.webkit.org/changeset/120143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647520</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 17:24:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647594</commentid>
    <comment_count>27</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-06-12 19:08:41 -0700</bug_when>
    <thetext>Thanks for your review Geoffrey.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648685</commentid>
    <comment_count>28</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-06-13 19:06:35 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Would be nice, in clang builds, to delete the copy constructor from the class.

I&apos;m not familiar with that part. Which files need to be updated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648808</commentid>
    <comment_count>29</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-13 22:25:08 -0700</bug_when>
    <thetext>&gt; I&apos;m not familiar with that part. Which files need to be updated?

The JSC::HashTable declaration would need a declaration similar to the one in &lt;wtf/Noncopyable.h&gt;.

The WTF_MAKE_NONCOPYABLE macro shows how to use &quot;delete&quot; syntax to remove the copy constructor for a class. I believe we could do this in clang builds without causing the problems created by adding private or special copy constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648930</commentid>
    <comment_count>30</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-06-14 01:23:00 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; &gt; I&apos;m not familiar with that part. Which files need to be updated?
&gt; 
&gt; The JSC::HashTable declaration would need a declaration similar to the one in &lt;wtf/Noncopyable.h&gt;.
&gt; 
&gt; The WTF_MAKE_NONCOPYABLE macro shows how to use &quot;delete&quot; syntax to remove the copy constructor for a class. I believe we could do this in clang builds without causing the problems created by adding private or special copy constructors.

I tried to use &quot;HashTable(const HashTable&amp;) = delete;&quot; to delete the copy constructor. But it will cause compiling problems.

1. The deleted copy constructor will prevent POD style initializer. The error message in gcc 4.7 is like &quot;error: could not convert ‘{133, 127, JSC::mainTableValues, 0}’ from ‘&lt;brace-enclosed initializer list&gt;’ to ‘const JSC::HashTable’&quot; and &quot;error: use of deleted function ‘JSC::HashTable::HashTable(const JSC::HashTable&amp;)’&quot;. 

2. JavaScriptCore/parser/Lexer.cpp is using bitwise copy semantics for m_keywordTable. But this problem can be resolved by adding a copy function that does bitwise copy.

In summary, disallowing global initializer (as mentioned in previous comment) prevents us removing POD style initializer that prevents us removing copy constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649409</commentid>
    <comment_count>31</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-14 13:09:41 -0700</bug_when>
    <thetext>Darn. Thanks for looking into this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143706</attachid>
            <date>2012-05-23 19:43:40 -0700</date>
            <delta_ts>2012-05-23 20:04:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Dynamic-hash-table-in-DOMObjectHashTableMap-is-wrong.patch</filename>
            <type>text/plain</type>
            <size>3573</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSA5ODY0YmRjOThlYTg5ODUwZjE1Nzc0ZjQ5MzM3NzAyYjJmZGQ0NDY0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBUaHUsIDI0IE1heSAyMDEyIDEwOjQyOjE4ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
RHluYW1pYyBoYXNoIHRhYmxlIGluIERPTU9iamVjdEhhc2hUYWJsZU1hcCBpcyB3cm9uZyBpbgog
bXVsdGlwbGUgdGhyZWFkcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3MzM0CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkRvbid0IGNvcHkgZHluYW1pYyBh
bGxvY2F0ZWQgdGFibGUgd2hpY2ggbWF5IGJlIGFsbG9jYXRlZCBvbiBvdGhlciB0aHJlYWQgYW5k
IGNvbnRhaW5zIHRocmVhZCBzcGVjaWZpYyBpZGVudGlmaWVycy4KRm9yIGV4YW1wbGUsIGEgSlNF
bnRyeUFycmF5J3MgaGFzaCBtYXAgd2FzIGZpcnN0IGluaXRpYWxpemVkIG9uIGEgd29ya2VyIHRo
cmVhZCwgYW5kIHRoZW4gdGhlIHVzZXIgcmVsb2FkZWQKdGhlIHBhZ2UsIGFub3RoZXIgd29ya2Vy
IHRocmVhZCBpcyBjcmVhdGVkIGR1ZSB0byByZWxvYWQsIHRoZSBkeW5hbWljIGFsbG9jYXRlZCB0
YWJsZSBpbiAqc3RhdGljVGFibGUqIGlzIHNwZWNpZmljCnRvIHRoZSBmaXJzdCB3b3JrZXIgdGhy
ZWFkIHdoaWNoIGhhcyBkaWVkLiBJZiB0aGUgdXNlciByZWxvYWQgdGhlIHBhZ2UgYWdhaW4sIHRo
ZSBkeW5hbWljIHRhYmxlIHdpbGwgYmUgZnJlZWQKYW5kIG1lbW9yeSBjb3JydXB0aW9uIHdpbGwg
b2NjdXIuCgpNZW1vcnkgY29ycnVwdGlvbiBmaXgsIG5vIG5ldyB0ZXN0cy4KCiogYmluZGluZ3Mv
anMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmg6CihXZWJDb3JlOjpET01PYmplY3RIYXNoVGFibGVN
YXA6OmdldCk6Ci0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDE4ICsrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmggfCAgICA5ICsrKysrKysrLQogMiBmaWxlcyBj
aGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVi
MmIxNmQuLjg1NGY2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNS0yMyAg
TGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgRHluYW1p
YyBoYXNoIHRhYmxlIGluIERPTU9iamVjdEhhc2hUYWJsZU1hcCBpcyB3cm9uZyBpbiBtdWx0aXBs
ZSB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NzMzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IERvbid0IGNvcHkgZHluYW1pYyBhbGxvY2F0ZWQgdGFibGUgd2hpY2ggbWF5IGJlIGFsbG9jYXRl
ZCBvbiBvdGhlciB0aHJlYWQgYW5kIGNvbnRhaW5zIHRocmVhZCBzcGVjaWZpYyBpZGVudGlmaWVy
cy4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGEgSlNFbnRyeUFycmF5J3MgaGFzaCBtYXAgd2FzIGZp
cnN0IGluaXRpYWxpemVkIG9uIGEgd29ya2VyIHRocmVhZCwgYW5kIHRoZW4gdGhlIHVzZXIgcmVs
b2FkZWQKKyAgICAgICAgdGhlIHBhZ2UsIGFub3RoZXIgd29ya2VyIHRocmVhZCBpcyBjcmVhdGVk
IGR1ZSB0byByZWxvYWQsIHRoZSBkeW5hbWljIGFsbG9jYXRlZCB0YWJsZSBpbiAqc3RhdGljVGFi
bGUqIGlzIHNwZWNpZmljCisgICAgICAgIHRvIHRoZSBmaXJzdCB3b3JrZXIgdGhyZWFkIHdoaWNo
IGhhcyBkaWVkLiBJZiB0aGUgdXNlciByZWxvYWQgdGhlIHBhZ2UgYWdhaW4sIHRoZSBkeW5hbWlj
IHRhYmxlIHdpbGwgYmUgZnJlZWQKKyAgICAgICAgYW5kIG1lbW9yeSBjb3JydXB0aW9uIHdpbGwg
b2NjdXIuCisKKyAgICAgICAgTWVtb3J5IGNvcnJ1cHRpb24gZml4LCBubyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTU9iamVjdEhhc2hUYWJsZU1hcDo6Z2V0KToKKwogMjAxMi0wNS0yMyAgT2ph
biBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGFkZCBiYWNrIHRoZSBhYmls
aXR5IHRvIGRpc2FibGUgZmxleGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01PYmplY3RIYXNoVGFibGVNYXAuaAppbmRleCAyMTZiOTQ1Li4xMzI5ZDBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaApA
QCAtNDcsNyArNDcsMTQgQEAgcHVibGljOgogICAgICAgICBIYXNoTWFwPGNvbnN0IEpTQzo6SGFz
aFRhYmxlKiwgSlNDOjpIYXNoVGFibGU+OjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChzdGF0
aWNUYWJsZSk7CiAgICAgICAgIGlmIChpdGVyICE9IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAg
cmV0dXJuICZpdGVyLT5zZWNvbmQ7Ci0gICAgICAgIHJldHVybiAmbV9tYXAuc2V0KHN0YXRpY1Rh
YmxlLCBKU0M6Okhhc2hUYWJsZSgqc3RhdGljVGFibGUpKS5pdGVyYXRvci0+c2Vjb25kOworICAg
ICAgICBKU0M6Okhhc2hUYWJsZSogdGFibGUgPSAmbV9tYXAuc2V0KHN0YXRpY1RhYmxlLCBKU0M6
Okhhc2hUYWJsZSgqc3RhdGljVGFibGUpKS5maXJzdC0+c2Vjb25kOworICAgICAgICAvLyBEb24n
dCBjb3B5IGR5bmFtaWMgYWxsb2NhdGVkIHRhYmxlIHdoaWNoIG1heSBiZSBhbGxvY2F0ZWQgb24g
b3RoZXIgdGhyZWFkIGFuZCBjb250YWlucyB0aHJlYWQgc3BlY2lmaWMgaWRlbnRpZmllcnMuCisg
ICAgICAgIC8vIEZvciBleGFtcGxlLCBhIEpTRW50cnlBcnJheSdzIGhhc2ggbWFwIHdhcyBmaXJz
dCBpbml0aWFsaXplZCBvbiBhIHdvcmtlciB0aHJlYWQsIGFuZCB0aGVuIHRoZSB1c2VyIHJlbG9h
ZGVkCisgICAgICAgIC8vIHRoZSBwYWdlLCBhbm90aGVyIHdvcmtlciB0aHJlYWQgaXMgY3JlYXRl
ZCBkdWUgdG8gcmVsb2FkLCB0aGUgZHluYW1pYyBhbGxvY2F0ZWQgdGFibGUgaW4gKnN0YXRpY1Rh
YmxlKiBpcyBzcGVjaWZpYworICAgICAgICAvLyB0byB0aGUgZmlyc3Qgd29ya2VyIHRocmVhZCB3
aGljaCBoYXMgZGllZC4gSWYgdGhlIHVzZXIgcmVsb2FkIHRoZSBwYWdlIGFnYWluLCB0aGUgZHlu
YW1pYyB0YWJsZSB3aWxsIGJlIGZyZWVkCisgICAgICAgIC8vIGFuZCBtZW1vcnkgY29ycnVwdGlv
biB3aWxsIG9jY3VyLgorICAgICAgICB0YWJsZS0+dGFibGUgPSAwOworICAgICAgICByZXR1cm4g
dGFibGU7CiAgICAgfQogCiBwcml2YXRlOgotLSAKMS43LjkuNQoK
</data>
<flag name="commit-queue"
          id="150348"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143714</attachid>
            <date>2012-05-23 20:21:55 -0700</date>
            <delta_ts>2012-06-05 21:07:17 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>0001-Dynamic-hash-table-in-DOMObjectHashTableMap-is-wrong.patch</filename>
            <type>text/plain</type>
            <size>3576</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSA3ZDk4YWMwYzUwN2YzODAzYWFmYjQzZjQ0MzMxMjdhZmQwYmNkOTZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBUaHUsIDI0IE1heSAyMDEyIDEwOjQyOjE4ICswODAwClN1YmplY3Q6IFtQQVRDSF0g
RHluYW1pYyBoYXNoIHRhYmxlIGluIERPTU9iamVjdEhhc2hUYWJsZU1hcCBpcyB3cm9uZyBpbgog
bXVsdGlwbGUgdGhyZWFkcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3MzM0CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkRvbid0IGNvcHkgZHluYW1pYyBh
bGxvY2F0ZWQgdGFibGUgd2hpY2ggbWF5IGJlIGFsbG9jYXRlZCBvbiBvdGhlciB0aHJlYWQgYW5k
IGNvbnRhaW5zIHRocmVhZCBzcGVjaWZpYyBpZGVudGlmaWVycy4KRm9yIGV4YW1wbGUsIGEgSlNF
bnRyeUFycmF5J3MgaGFzaCBtYXAgd2FzIGZpcnN0IGluaXRpYWxpemVkIG9uIGEgd29ya2VyIHRo
cmVhZCwgYW5kIHRoZW4gdGhlIHVzZXIgcmVsb2FkZWQKdGhlIHBhZ2UsIGFub3RoZXIgd29ya2Vy
IHRocmVhZCBpcyBjcmVhdGVkIGR1ZSB0byByZWxvYWQsIHRoZSBkeW5hbWljIGFsbG9jYXRlZCB0
YWJsZSBpbiAqc3RhdGljVGFibGUqIGlzIHNwZWNpZmljCnRvIHRoZSBmaXJzdCB3b3JrZXIgdGhy
ZWFkIHdoaWNoIGhhcyBkaWVkLiBJZiB0aGUgdXNlciByZWxvYWQgdGhlIHBhZ2UgYWdhaW4sIHRo
ZSBkeW5hbWljIHRhYmxlIHdpbGwgYmUgZnJlZWQKYW5kIG1lbW9yeSBjb3JydXB0aW9uIHdpbGwg
b2NjdXIuCgpNZW1vcnkgY29ycnVwdGlvbiBmaXgsIG5vIG5ldyB0ZXN0cy4KCiogYmluZGluZ3Mv
anMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmg6CihXZWJDb3JlOjpET01PYmplY3RIYXNoVGFibGVN
YXA6OmdldCk6Ci0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDE4ICsrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmggfCAgICA5ICsrKysrKysrLQogMiBmaWxlcyBj
aGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVi
MmIxNmQuLjg1NGY2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNS0yMyAg
TGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgRHluYW1p
YyBoYXNoIHRhYmxlIGluIERPTU9iamVjdEhhc2hUYWJsZU1hcCBpcyB3cm9uZyBpbiBtdWx0aXBs
ZSB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NzMzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IERvbid0IGNvcHkgZHluYW1pYyBhbGxvY2F0ZWQgdGFibGUgd2hpY2ggbWF5IGJlIGFsbG9jYXRl
ZCBvbiBvdGhlciB0aHJlYWQgYW5kIGNvbnRhaW5zIHRocmVhZCBzcGVjaWZpYyBpZGVudGlmaWVy
cy4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGEgSlNFbnRyeUFycmF5J3MgaGFzaCBtYXAgd2FzIGZp
cnN0IGluaXRpYWxpemVkIG9uIGEgd29ya2VyIHRocmVhZCwgYW5kIHRoZW4gdGhlIHVzZXIgcmVs
b2FkZWQKKyAgICAgICAgdGhlIHBhZ2UsIGFub3RoZXIgd29ya2VyIHRocmVhZCBpcyBjcmVhdGVk
IGR1ZSB0byByZWxvYWQsIHRoZSBkeW5hbWljIGFsbG9jYXRlZCB0YWJsZSBpbiAqc3RhdGljVGFi
bGUqIGlzIHNwZWNpZmljCisgICAgICAgIHRvIHRoZSBmaXJzdCB3b3JrZXIgdGhyZWFkIHdoaWNo
IGhhcyBkaWVkLiBJZiB0aGUgdXNlciByZWxvYWQgdGhlIHBhZ2UgYWdhaW4sIHRoZSBkeW5hbWlj
IHRhYmxlIHdpbGwgYmUgZnJlZWQKKyAgICAgICAgYW5kIG1lbW9yeSBjb3JydXB0aW9uIHdpbGwg
b2NjdXIuCisKKyAgICAgICAgTWVtb3J5IGNvcnJ1cHRpb24gZml4LCBubyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTU9iamVjdEhhc2hUYWJsZU1hcDo6Z2V0KToKKwogMjAxMi0wNS0yMyAgT2ph
biBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGFkZCBiYWNrIHRoZSBhYmls
aXR5IHRvIGRpc2FibGUgZmxleGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01PYmplY3RIYXNoVGFibGVNYXAuaAppbmRleCAyMTZiOTQ1Li42Y2ZmMmI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaApA
QCAtNDcsNyArNDcsMTQgQEAgcHVibGljOgogICAgICAgICBIYXNoTWFwPGNvbnN0IEpTQzo6SGFz
aFRhYmxlKiwgSlNDOjpIYXNoVGFibGU+OjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChzdGF0
aWNUYWJsZSk7CiAgICAgICAgIGlmIChpdGVyICE9IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAg
cmV0dXJuICZpdGVyLT5zZWNvbmQ7Ci0gICAgICAgIHJldHVybiAmbV9tYXAuc2V0KHN0YXRpY1Rh
YmxlLCBKU0M6Okhhc2hUYWJsZSgqc3RhdGljVGFibGUpKS5pdGVyYXRvci0+c2Vjb25kOworICAg
ICAgICBKU0M6Okhhc2hUYWJsZSogdGFibGUgPSAmbV9tYXAuc2V0KHN0YXRpY1RhYmxlLCBKU0M6
Okhhc2hUYWJsZSgqc3RhdGljVGFibGUpKS5pdGVyYXRvci0+c2Vjb25kOworICAgICAgICAvLyBE
b24ndCBjb3B5IGR5bmFtaWMgYWxsb2NhdGVkIHRhYmxlIHdoaWNoIG1heSBiZSBhbGxvY2F0ZWQg
b24gb3RoZXIgdGhyZWFkIGFuZCBjb250YWlucyB0aHJlYWQgc3BlY2lmaWMgaWRlbnRpZmllcnMu
CisgICAgICAgIC8vIEZvciBleGFtcGxlLCBhIEpTRW50cnlBcnJheSdzIGhhc2ggbWFwIHdhcyBm
aXJzdCBpbml0aWFsaXplZCBvbiBhIHdvcmtlciB0aHJlYWQsIGFuZCB0aGVuIHRoZSB1c2VyIHJl
bG9hZGVkCisgICAgICAgIC8vIHRoZSBwYWdlLCBhbm90aGVyIHdvcmtlciB0aHJlYWQgaXMgY3Jl
YXRlZCBkdWUgdG8gcmVsb2FkLCB0aGUgZHluYW1pYyBhbGxvY2F0ZWQgdGFibGUgaW4gKnN0YXRp
Y1RhYmxlKiBpcyBzcGVjaWZpYworICAgICAgICAvLyB0byB0aGUgZmlyc3Qgd29ya2VyIHRocmVh
ZCB3aGljaCBoYXMgZGllZC4gSWYgdGhlIHVzZXIgcmVsb2FkIHRoZSBwYWdlIGFnYWluLCB0aGUg
ZHluYW1pYyB0YWJsZSB3aWxsIGJlIGZyZWVkCisgICAgICAgIC8vIGFuZCBtZW1vcnkgY29ycnVw
dGlvbiB3aWxsIG9jY3VyLgorICAgICAgICB0YWJsZS0+dGFibGUgPSAwOworICAgICAgICByZXR1
cm4gdGFibGU7CiAgICAgfQogCiBwcml2YXRlOgotLSAKMS43LjkuNQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145927</attachid>
            <date>2012-06-05 21:07:17 -0700</date>
            <delta_ts>2012-06-06 20:22:45 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>0001-Dynamic-hash-table-in-DOMObjectHashTableMap-is-wrong.patch</filename>
            <type>text/plain</type>
            <size>36178</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSA5YzczM2FmNGI3NGFkZjUyYTM0OGY5NjAzYTEzN2E4ZWUxMWU3NzYwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBXZWQsIDYgSnVuIDIwMTIgMTI6MDQ6NDYgKzA4MDAKU3ViamVjdDogW1BBVENIXSBE
eW5hbWljIGhhc2ggdGFibGUgaW4gRE9NT2JqZWN0SGFzaFRhYmxlTWFwIGlzIHdyb25nIGluCiBt
dWx0aXBsZSB0aHJlYWRzCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODczMzQKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKQWRkIGNvcHkgY29uc3RydWN0b3IgdG8gSlNDOjpIYXNoVGFibGUgdG8gZGlzYWJsZSBiaXR3
aXNlIGNvcHkgc2VtYW50aWNzLiBUaGUgKnRhYmxlKiBkYXRhCm1lbWJlciBpcyBub3Qgc2FmZSBm
b3IgYml0d2lzZSBjb3B5IGluIG11bHRpcGxlIHRocmVhZHMgc2l0dWF0aW9uIGJlY2F1c2UgaXQg
aXMgYWxsb2NhdGVkCmR5bmFtaWNhbGx5IGFuZCBjb250YWlucyB0aHJlYWQgc3BlY2lmaWMgZGF0
YS4KCk5vIGZ1bmN0aW9uYWxpdGllcyBjaGFuZ2VkLCBubyBuZXcgdGVzdHMuCgoqIGNyZWF0ZV9o
YXNoX3RhYmxlOgoqIHJ1bnRpbWUvTG9va3VwLmg6CihKU0M6Okhhc2hUYWJsZTo6SGFzaFRhYmxl
KToKKEhhc2hUYWJsZSk6CgpTb3VyY2UvV2ViQ29yZToKClRoaXMgaXMgdG8gYWRhcHQgdG8gdGhl
IG5ld2x5IGFkZGVkIGNvcHkgY29uc3RydWN0b3Igb2YgSlNDOjpIYXNoVGFibGUgd2hpY2ggZG9l
c24ndApjb3B5IGR5bmFtaWNhbCBhbGxvY2F0ZWQgdGFibGUgaW4gSlNDOjpIYXNoVGFibGUuIFdl
IGRvbid0IGNvcHkgZHluYW1pYyBhbGxvY2F0ZWQgdGFibGUKd2hpY2ggbWF5IGJlIGFsbG9jYXRl
ZCBvbiBvdGhlciB0aHJlYWQgYW5kIGNvbnRhaW5zIHRocmVhZCBzcGVjaWZpYyBpZGVudGlmaWVy
cy4KRm9yIGV4YW1wbGUsIGEgSlNFbnRyeUFycmF5J3MgaGFzaCB0YWJsZSB3YXMgZmlyc3QgaW5p
dGlhbGl6ZWQgb24gYSB3b3JrZXIgdGhyZWFkLCBhbmQKdGhlbiB0aGUgdXNlciByZWxvYWRlZCB0
aGUgcGFnZSwgYW5vdGhlciB3b3JrZXIgdGhyZWFkIGlzIGNyZWF0ZWQgZHVlIHRvIHJlbG9hZCwg
dGhlCmR5bmFtaWMgYWxsb2NhdGVkIHRhYmxlIGluICpzdGF0aWNUYWJsZSogaXMgc3BlY2lmaWMg
dG8gdGhlIGZpcnN0IHdvcmtlciB0aHJlYWQgd2hpY2gKaGFzIGRpZWQuIElmIHRoZSB1c2VyIHJl
bG9hZCB0aGUgcGFnZSBhZ2FpbiwgdGhlIGR5bmFtaWMgdGFibGUgd2lsbCBiZSBmcmVlZCBhbmQg
bWVtb3J5CmNvcnJ1cHRpb24gd2lsbCBvY2N1ci4gQWxzbyBhZGFwdCB0byBhbm90aGVyIG5ld2x5
IGFkZGVkIGNvbnN0cnVjdG9yIG9mIEpTQzo6SGFzaFRhYmxlIGluCmNvZGUgZ2VuZXJhdG9yIGFu
ZCB0ZXN0IGNvZGUgdG8gcmVtb3ZlIHRoZSBQT0Qgc3R5bGUgaW5pdGlhbGl6ZXIgd2hpY2ggd291
bGQgY2F1c2UgYnVpbGQKZXJyb3IgYmVjYXVzZSBhIGNvcHkgY29uc3RydWN0b3IgaXMgYWRkZWQu
CgpObyBmdW5jdGlvbmFsaXRpZXMgY2hhbmdlZCwgbm8gbmV3IHRlc3RzLgoKKiBiaW5kaW5ncy9q
cy9ET01PYmplY3RIYXNoVGFibGVNYXAuaDoKKFdlYkNvcmU6OkRPTU9iamVjdEhhc2hUYWJsZU1h
cDo6fkRPTU9iamVjdEhhc2hUYWJsZU1hcCk6CihXZWJDb3JlOjpET01PYmplY3RIYXNoVGFibGVN
YXA6OmdldCk6CihET01PYmplY3RIYXNoVGFibGVNYXApOgoqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOgooR2VuZXJhdGVIYXNoVGFibGUpOgoqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHA6CihXZWJDb3JlKToKKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKFdlYkNvcmUpOgoqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CihXZWJDb3JlKToK
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CihX
ZWJDb3JlKToKKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3Bw
OgooV2ViQ29yZSk6CiogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHA6CihXZWJDb3JlKToKKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcDoKKFdlYkNvcmUpOgoqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKFdlYkNvcmUpOgoqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKFdlYkNvcmUpOgoqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKFdlYkNvcmUpOgoqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwOgooV2ViQ29yZSk6CiogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CihXZWJDb3JlKToK
LS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8
ICAgMTggKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlICAg
ICAgICAgICAgfCAgICAzICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAu
aCAgICAgICAgICAgICB8ICAgMTggKysrKysrKwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUxICsrKysrKysrKysrKysrKysrKysrCiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaCB8ICAgMTMgKyst
LS0KIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIHwg
ICAgMiArLQogLi4uL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAg
ICAgfCAgICA2ICstLQogLi4uL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3Qu
Y3BwICAgICAgfCAgICA2ICstLQogLi4uL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1l
ZEdldHRlci5jcHAgICAgfCAgICA2ICstLQogLi4uL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcCAgICAgfCAgICA2ICstLQogLi4uL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgfCAgICA2ICstLQogLi4uL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwICAgfCAgICA2ICstLQogLi4uL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwICAgfCAgICA2ICstLQogLi4uL3Rl
c3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgICAgICAgfCAgICA2ICstLQog
Li4uL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCAgICAgfCAgICA2
ICstLQogLi4uL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCAgICAgICAg
fCAgICA2ICstLQogLi4uL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAgfCAgICA2ICstLQogLi4uL0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAgICAgfCAgICA2ICstLQogMTggZmlsZXMgY2hhbmdlZCwgMTMyIGluc2VydGlvbnMo
KyksIDQ1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhkZDMxYmMu
LjQ2MGM4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEy
LTA2LTA1ICBMZW8gWWFuZyAgPGxlby55YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAg
ICBEeW5hbWljIGhhc2ggdGFibGUgaW4gRE9NT2JqZWN0SGFzaFRhYmxlTWFwIGlzIHdyb25nIGlu
IG11bHRpcGxlIHRocmVhZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg3MzM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGNvcHkgY29uc3RydWN0b3IgdG8gSlNDOjpIYXNoVGFibGUgdG8gZGlzYWJs
ZSBiaXR3aXNlIGNvcHkgc2VtYW50aWNzLiBUaGUgKnRhYmxlKiBkYXRhCisgICAgICAgIG1lbWJl
ciBpcyBub3Qgc2FmZSBmb3IgYml0d2lzZSBjb3B5IGluIG11bHRpcGxlIHRocmVhZHMgc2l0dWF0
aW9uIGJlY2F1c2UgaXQgaXMgYWxsb2NhdGVkCisgICAgICAgIGR5bmFtaWNhbGx5IGFuZCBjb250
YWlucyB0aHJlYWQgc3BlY2lmaWMgZGF0YS4KKworICAgICAgICBObyBmdW5jdGlvbmFsaXRpZXMg
Y2hhbmdlZCwgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogY3JlYXRlX2hhc2hfdGFibGU6Cisg
ICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAgICAgICAgKEpTQzo6SGFzaFRhYmxlOjpIYXNo
VGFibGUpOgorICAgICAgICAoSGFzaFRhYmxlKToKKwogMjAxMi0wNi0wNCAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBDRkcgc2ltcGxpZmljYXRpb24gc2hv
dWxkIGNvcnJlY3QgdGhlIHZhcmlhYmxlcyBhdCB0aGUgaGVhZCBvZiB0aGUgcHJlZGVjZXNzb3Ig
YmxvY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJs
ZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQppbmRleCBjYjI4MDlk
Li44MmZiZmIyIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hf
dGFibGUKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxlCkBAIC0z
MDAsNyArMzAwLDYgQEAgc3ViIG91dHB1dCgpIHsKICAgICB9CiAgICAgcHJpbnQgIiAgIHsgMCwg
MCwgMCwgMCwgTm9JbnRyaW5zaWMgfVxuIjsKICAgICBwcmludCAifTtcblxuIjsKLSAgICBwcmlu
dCAiZXh0ZXJuIGNvbnN0IHN0cnVjdCBIYXNoVGFibGUgJG5hbWUgPVxuIjsKLSAgICBwcmludCAi
ICAgIFx7ICRjb21wYWN0U2l6ZSwgJGNvbXBhY3RIYXNoU2l6ZU1hc2ssICRuYW1lRW50cmllcywg
MCBcfTtcbiI7CisgICAgcHJpbnQgImV4dGVybiBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlICRuYW1l
KCRjb21wYWN0U2l6ZSwgJGNvbXBhY3RIYXNoU2l6ZU1hc2ssICRuYW1lRW50cmllcywgMCk7XG4i
OwogICAgIHByaW50ICJ9IC8vIG5hbWVzcGFjZVxuIjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTG9va3VwLmgKaW5kZXggYTc1YjUyMS4uMmQ0OTRkMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTExNCw2ICsxMTQsMjQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiB2YWx1ZXM7IC8vIEZpeGVkIHZhbHVlcyBn
ZW5lcmF0ZWQgYnkgc2NyaXB0LgogICAgICAgICBtdXRhYmxlIGNvbnN0IEhhc2hFbnRyeSogdGFi
bGU7IC8vIFRhYmxlIGFsbG9jYXRlZCBhdCBydW50aW1lLgogCisgICAgICAgIEFMV0FZU19JTkxJ
TkUgSGFzaFRhYmxlKGludCBjb21wYWN0U2l6ZSwgaW50IGNvbXBhY3RIYXNoU2l6ZU1hc2ssIGNv
bnN0IEhhc2hUYWJsZVZhbHVlKiB2YWx1ZXMsIGNvbnN0IEhhc2hFbnRyeSogdGFibGUpCisgICAg
ICAgICAgICA6IGNvbXBhY3RTaXplKGNvbXBhY3RTaXplKQorICAgICAgICAgICAgLCBjb21wYWN0
SGFzaFNpemVNYXNrKGNvbXBhY3RIYXNoU2l6ZU1hc2spCisgICAgICAgICAgICAsIHZhbHVlcyh2
YWx1ZXMpCisgICAgICAgICAgICAsIHRhYmxlKHRhYmxlKQorICAgICAgICB7IH0KKworICAgICAg
ICBBTFdBWVNfSU5MSU5FIEhhc2hUYWJsZShjb25zdCBIYXNoVGFibGUmIG90aGVyKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgY29tcGFjdFNpemUgPSBvdGhlci5jb21wYWN0U2l6ZTsKKyAgICAg
ICAgICAgIGNvbXBhY3RIYXNoU2l6ZU1hc2sgPSBvdGhlci5jb21wYWN0SGFzaFNpemVNYXNrOwor
ICAgICAgICAgICAgdmFsdWVzID0gb3RoZXIudmFsdWVzOworICAgICAgICAgICAgLy8gRG9uJ3Qg
Y29weSBkeW5hbWljIHRhYmxlIHNpbmNlIGl0J3MgdGhyZWFkIHNwZWNpZmljLgorICAgICAgICAg
ICAgdGFibGUgPSAwOworICAgICAgICB9CisKICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIGlu
aXRpYWxpemVJZk5lZWRlZChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpIGNvbnN0CiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmICghdGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE5YTQ3Ny4uMDlkMTU2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA2LTA1ICBMZW8gWWFuZyAgPGxl
by55YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBEeW5hbWljIGhhc2ggdGFibGUg
aW4gRE9NT2JqZWN0SGFzaFRhYmxlTWFwIGlzIHdyb25nIGluIG11bHRpcGxlIHRocmVhZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MzM0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0byBh
ZGFwdCB0byB0aGUgbmV3bHkgYWRkZWQgY29weSBjb25zdHJ1Y3RvciBvZiBKU0M6Okhhc2hUYWJs
ZSB3aGljaCBkb2Vzbid0CisgICAgICAgIGNvcHkgZHluYW1pY2FsIGFsbG9jYXRlZCB0YWJsZSBp
biBKU0M6Okhhc2hUYWJsZS4gV2UgZG9uJ3QgY29weSBkeW5hbWljIGFsbG9jYXRlZCB0YWJsZQor
ICAgICAgICB3aGljaCBtYXkgYmUgYWxsb2NhdGVkIG9uIG90aGVyIHRocmVhZCBhbmQgY29udGFp
bnMgdGhyZWFkIHNwZWNpZmljIGlkZW50aWZpZXJzLgorICAgICAgICBGb3IgZXhhbXBsZSwgYSBK
U0VudHJ5QXJyYXkncyBoYXNoIHRhYmxlIHdhcyBmaXJzdCBpbml0aWFsaXplZCBvbiBhIHdvcmtl
ciB0aHJlYWQsIGFuZAorICAgICAgICB0aGVuIHRoZSB1c2VyIHJlbG9hZGVkIHRoZSBwYWdlLCBh
bm90aGVyIHdvcmtlciB0aHJlYWQgaXMgY3JlYXRlZCBkdWUgdG8gcmVsb2FkLCB0aGUKKyAgICAg
ICAgZHluYW1pYyBhbGxvY2F0ZWQgdGFibGUgaW4gKnN0YXRpY1RhYmxlKiBpcyBzcGVjaWZpYyB0
byB0aGUgZmlyc3Qgd29ya2VyIHRocmVhZCB3aGljaAorICAgICAgICBoYXMgZGllZC4gSWYgdGhl
IHVzZXIgcmVsb2FkIHRoZSBwYWdlIGFnYWluLCB0aGUgZHluYW1pYyB0YWJsZSB3aWxsIGJlIGZy
ZWVkIGFuZCBtZW1vcnkKKyAgICAgICAgY29ycnVwdGlvbiB3aWxsIG9jY3VyLiBBbHNvIGFkYXB0
IHRvIGFub3RoZXIgbmV3bHkgYWRkZWQgY29uc3RydWN0b3Igb2YgSlNDOjpIYXNoVGFibGUgaW4K
KyAgICAgICAgY29kZSBnZW5lcmF0b3IgYW5kIHRlc3QgY29kZSB0byByZW1vdmUgdGhlIFBPRCBz
dHlsZSBpbml0aWFsaXplciB3aGljaCB3b3VsZCBjYXVzZSBidWlsZAorICAgICAgICBlcnJvciBi
ZWNhdXNlIGEgY29weSBjb25zdHJ1Y3RvciBpcyBhZGRlZC4KKworICAgICAgICBObyBmdW5jdGlv
bmFsaXRpZXMgY2hhbmdlZCwgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogYmluZGluZ3MvanMv
RE9NT2JqZWN0SGFzaFRhYmxlTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpET01PYmplY3RIYXNo
VGFibGVNYXA6On5ET01PYmplY3RIYXNoVGFibGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6RE9N
T2JqZWN0SGFzaFRhYmxlTWFwOjpnZXQpOgorICAgICAgICAoRE9NT2JqZWN0SGFzaFRhYmxlTWFw
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAg
ICAgKEdlbmVyYXRlSGFzaFRhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNGbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDYtMDUgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBFdmVudEhhbmRsZXIgc2hvdWxkbid0IGRp
c3BhdGNoIGZha2UgbW91c2Vtb3ZlIGV2ZW50cyB3aGVuIHNjcm9sbGluZyBvbiBkZXZpY2VzIHRo
YXQgZG9uJ3QgaGF2ZSBhIG1vdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oCmluZGV4IDIxNmI5NDUuLjg0MWVmNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oCkBA
IC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlIDxydW50aW1lL0xvb2t1cC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CkBAIC0zOCwyMCArMzksMjAgQEAgcHVibGljOgog
CiAgICAgfkRPTU9iamVjdEhhc2hUYWJsZU1hcCgpCiAgICAgewotICAgICAgICBmb3IgKEhhc2hN
YXA8Y29uc3QgSlNDOjpIYXNoVGFibGUqLCBKU0M6Okhhc2hUYWJsZT46Oml0ZXJhdG9yIGl0ZXIg
PSBtX21hcC5iZWdpbigpOyBpdGVyICE9IG1fbWFwLmVuZCgpOyArK2l0ZXIpCi0gICAgICAgICAg
ICBpdGVyLT5zZWNvbmQuZGVsZXRlVGFibGUoKTsKKyAgICAgICAgZm9yIChIYXNoTWFwPGNvbnN0
IEpTQzo6SGFzaFRhYmxlKiwgT3duUHRyPEpTQzo6SGFzaFRhYmxlPiA+OjppdGVyYXRvciBpdGVy
ID0gbV9tYXAuYmVnaW4oKTsgaXRlciAhPSBtX21hcC5lbmQoKTsgKytpdGVyKQorICAgICAgICAg
ICAgaXRlci0+c2Vjb25kLT5kZWxldGVUYWJsZSgpOwogICAgIH0KIAogICAgIGNvbnN0IEpTQzo6
SGFzaFRhYmxlKiBnZXQoY29uc3QgSlNDOjpIYXNoVGFibGUqIHN0YXRpY1RhYmxlKQogICAgIHsK
LSAgICAgICAgSGFzaE1hcDxjb25zdCBKU0M6Okhhc2hUYWJsZSosIEpTQzo6SGFzaFRhYmxlPjo6
aXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQoc3RhdGljVGFibGUpOworICAgICAgICBIYXNoTWFw
PGNvbnN0IEpTQzo6SGFzaFRhYmxlKiwgT3duUHRyPEpTQzo6SGFzaFRhYmxlPiA+OjppdGVyYXRv
ciBpdGVyID0gbV9tYXAuZmluZChzdGF0aWNUYWJsZSk7CiAgICAgICAgIGlmIChpdGVyICE9IG1f
bWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuICZpdGVyLT5zZWNvbmQ7Ci0gICAgICAgIHJl
dHVybiAmbV9tYXAuc2V0KHN0YXRpY1RhYmxlLCBKU0M6Okhhc2hUYWJsZSgqc3RhdGljVGFibGUp
KS5pdGVyYXRvci0+c2Vjb25kOworICAgICAgICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZC5nZXQo
KTsKKyAgICAgICAgcmV0dXJuIG1fbWFwLnNldChzdGF0aWNUYWJsZSwgYWRvcHRQdHIobmV3IEpT
Qzo6SGFzaFRhYmxlKCpzdGF0aWNUYWJsZSkpKS5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBIYXNoTWFwPGNvbnN0IEpTQzo6SGFzaFRhYmxlKiwgSlNDOjpI
YXNoVGFibGU+IG1fbWFwOworICAgIEhhc2hNYXA8Y29uc3QgSlNDOjpIYXNoVGFibGUqLCBPd25Q
dHI8SlNDOjpIYXNoVGFibGU+ID4gbV9tYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IDM3ZTRmMWMuLjA3YTU1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zMjUzLDcgKzMyNTMsNyBAQCBz
dWIgR2VuZXJhdGVIYXNoVGFibGUKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB7IDAsIDAs
IDAsIDAsIE5vSW50cmluc2ljIH1cbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxu
Iik7CiAgICAgbXkgJGNvbXBhY3RTaXplTWFzayA9ICRudW1FbnRyaWVzIC0gMTsKLSAgICBwdXNo
KEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBIYXNoVGFibGUgJG5hbWUgPSB7ICRjb21wYWN0
U2l6ZSwgJGNvbXBhY3RTaXplTWFzaywgJG5hbWVFbnRyaWVzLCAwIH07XG4iKTsKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBIYXNoVGFibGUgJG5hbWUoJGNvbXBhY3RTaXpl
LCAkY29tcGFjdFNpemVNYXNrLCAkbmFtZUVudHJpZXMsIDApO1xuIik7CiB9CiAKICMgUGF1bCBI
c2llaCdzIFN1cGVyRmFzdEhhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU0Zsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNGbG9hdDY0QXJyYXkuY3BwCmluZGV4IDFiNDY2MzEuLjY0
ZWY0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0Zsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRmxvYXQ2NEFycmF5LmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNGbG9hdDY0QXJyYXlUYWJsZVZhbHVlc1tdID0KICAgICB7IDAs
IDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNG
bG9hdDY0QXJyYXlUYWJsZSA9IHsgMiwgMSwgSlNGbG9hdDY0QXJyYXlUYWJsZVZhbHVlcywgMCB9
Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU0Zsb2F0NjRBcnJheVRhYmxlKDIsIDEsIEpTRmxv
YXQ2NEFycmF5VGFibGVWYWx1ZXMsIDApOwogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3Ig
Ki8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0
b3JUYWJsZVZhbHVlc1tdID0KQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KICAgICB7IDAs
IDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNG
bG9hdDY0QXJyYXlDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU0Zsb2F0NjRBcnJheUNvbnN0
cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNGbG9hdDY0
QXJyYXlDb25zdHJ1Y3RvclRhYmxlKDEsIDAsIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3JUYWJs
ZVZhbHVlcywgMCk7CiBjb25zdCBDbGFzc0luZm8gSlNGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRmxvYXQ2NEFycmF5Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAmSlNG
bG9hdDY0QXJyYXlDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRmxv
YXQ2NEFycmF5Q29uc3RydWN0b3IpIH07CiAKIEpTRmxvYXQ2NEFycmF5Q29uc3RydWN0b3I6OkpT
RmxvYXQ2NEFycmF5Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsg
MCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBK
U0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxlID0geyAyLCAxLCBKU0Zsb2F0NjRBcnJheVByb3Rv
dHlwZVRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRmxvYXQ2NEFy
cmF5UHJvdG90eXBlVGFibGUoMiwgMSwgSlNGbG9hdDY0QXJyYXlQcm90b3R5cGVUYWJsZVZhbHVl
cywgMCk7CiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBnZXRKU0Zsb2F0NjRBcnJheVByb3RvdHlw
ZVRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xv
YmFsRGF0YShleGVjLT5nbG9iYWxEYXRhKCksICZKU0Zsb2F0NjRBcnJheVByb3RvdHlwZVRhYmxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggYzQ5NTUwMS4uOTgzODZh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAg
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEFjdGl2ZURPTU9iamVjdFRhYmxlVmFs
dWVzW10gPQogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3RBY3RpdmVET01PYmplY3RUYWJsZSA9IHsgNCwgMywgSlNUZXN0
QWN0aXZlRE9NT2JqZWN0VGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUg
SlNUZXN0QWN0aXZlRE9NT2JqZWN0VGFibGUoNCwgMywgSlNUZXN0QWN0aXZlRE9NT2JqZWN0VGFi
bGVWYWx1ZXMsIDApOwogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIAogc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yVGFi
bGVWYWx1ZXNbXSA9CkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogICAgIHsg
MCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBK
U1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RBY3Rp
dmVET01PYmplY3RDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yVGFibGUoMSwgMCwgSlNUZXN0
QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCk7CiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RBY3Rp
dmVET01PYmplY3RDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RBY3RpdmVET01P
YmplY3RDb25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEFjdGl2
ZURPTU9iamVjdENvbnN0cnVjdG9yKSB9OwogCiBKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1
Y3Rvcjo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC04NCw3ICs4NCw3IEBAIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlVGFibGUg
PSB7IDQsIDMsIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07
CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZVRh
YmxlKDQsIDMsIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZVRhYmxlVmFsdWVzLCAwKTsK
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGU6OnNfaW5mbyA9
IHsgIlRlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0
QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKSB9OwogCiBKU09iamVjdCogSlNUZXN0QWN0aXZl
RE9NT2JqZWN0UHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4
IDk2Zjg3YWIuLjY4NGNmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJUYWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmlu
c2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXJUYWJsZSA9IHsgMiwgMSwgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUYWJsZVZhbHVlcywgMCB9
Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclRhYmxlKDIs
IDEsIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyVGFibGVWYWx1ZXMsIDApOwogLyogSGFzaCB0YWJs
ZSBmb3IgY29uc3RydWN0b3IgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KQEAgLTQ5LDcgKzQ5
LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2lj
IH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJD
b25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVj
dG9yVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJDb25zdHJ1Y3RvclRhYmxlKDEsIDAsIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCk7CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25z
dHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyQ29uc3RydWN0b3IpIH07CiAKIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3I6
OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZVRh
YmxlVmFsdWVzW10gPQogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZVRhYmxl
ID0geyAyLCAxLCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZVRhYmxlVmFsdWVzLCAw
IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90
eXBlVGFibGUoMiwgMSwgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVUYWJsZVZhbHVl
cywgMCk7CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIlRlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSIsICZCYXNlOjpzX2lu
Zm8sICZKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKSB9OwogCiBKU09iamVj
dCogSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IGQ4ZGEzNTguLmE1ZDVmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAs
IDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0RXZl
bnRDb25zdHJ1Y3RvclRhYmxlID0geyA5LCA3LCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yVGFibGVW
YWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
clRhYmxlKDksIDcsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCk7CiAvKiBI
YXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CkBAIC01
MSw3ICs1MSw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50
cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0RXZlbnRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25z
dHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvclRhYmxlKDEsIDAsIEpTVGVzdEV2ZW50Q29uc3RydWN0
b3JDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwKTsKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKSB9OwogCiBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpT
VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxl
VmFsdWVzW10gPQogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGUgPSB7
IDEsIDAsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9Owor
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlVGFi
bGUoMSwgMCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzLCAwKTsK
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sICZKU1Rl
c3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSkgfTsKIAogSlNPYmplY3QqIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggODQ3NGIx
YS4uZDZkZTY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFdmVudFRhcmdldFRhYmxlVmFsdWVz
W10gPQogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3RFdmVudFRhcmdldFRhYmxlID0geyAyLCAxLCBKU1Rlc3RFdmVudFRh
cmdldFRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEV2ZW50
VGFyZ2V0VGFibGUoMiwgMSwgSlNUZXN0RXZlbnRUYXJnZXRUYWJsZVZhbHVlcywgMCk7CiAvKiBI
YXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpAQCAtNTUsNyAr
NTUsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RXZlbnRUYXJnZXRDb25z
dHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQog
fTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9y
VGFibGUgPSB7IDEsIDAsIEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3JUYWJsZVZhbHVlcywg
MCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9y
VGFibGUoMSwgMCwgSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwKTsK
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RFdmVu
dFRhcmdldENvbnN0cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZl
bnRUYXJnZXRDb25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcjo6
SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
CiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGUgPSB7IDgsIDcsIEpTVGVzdEV2
ZW50VGFyZ2V0UHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVUYWJsZSg4LCA3LCBKU1Rlc3RFdmVudFRhcmdl
dFByb3RvdHlwZVRhYmxlVmFsdWVzLCAwKTsKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudFRh
cmdldFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlIiwgJkJh
c2U6OnNfaW5mbywgJkpTVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlVGFibGUsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUpIH07CiAKIEpTT2JqZWN0KiBK
U1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IDQ1ODJhY2Eu
LjMzMzhjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFeGNlcHRpb25UYWJsZVZhbHVlc1tdID0KICAg
ICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNUZXN0RXhjZXB0aW9uVGFibGUgPSB7IDUsIDMsIEpTVGVzdEV4Y2VwdGlvblRhYmxlVmFs
dWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEV4Y2VwdGlvblRhYmxlKDUs
IDMsIEpTVGVzdEV4Y2VwdGlvblRhYmxlVmFsdWVzLCAwKTsKIC8qIEhhc2ggdGFibGUgZm9yIGNv
bnN0cnVjdG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFeGNlcHRp
b25Db25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3JUYWJsZVZhbHVlc1td
ID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3JUYWJsZSA9IHsgMSwgMCwgSlNUZXN0
RXhjZXB0aW9uQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCB9Oworc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvclRhYmxlKDEsIDAsIEpTVGVzdEV4Y2VwdGlv
bkNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDApOwogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV4Y2Vw
dGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3JUYWJsZSwgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0RXhj
ZXB0aW9uQ29uc3RydWN0b3I6OkpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtODAsNyArODAs
NyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9CiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1z
dGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZVRhYmxlID0geyAx
LCAwLCBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9Oworc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGVUYWJsZSgxLCAwLCBKU1Rlc3RF
eGNlcHRpb25Qcm90b3R5cGVUYWJsZVZhbHVlcywgMCk7CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
RXhjZXB0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RXhjZXB0aW9uUHJvdG90eXBlIiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSkgfTsKIAogSlNPYmplY3QqIEpT
VGVzdEV4Y2VwdGlvblByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGFmZGIzYjEuLjQy
YTQxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VUYWJsZVZhbHVlc1tdID0KICAgICB7
IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUg
SlNUZXN0SW50ZXJmYWNlVGFibGUgPSB7IDE2LCAxNSwgSlNUZXN0SW50ZXJmYWNlVGFibGVWYWx1
ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlVGFibGUoMTYs
IDE1LCBKU1Rlc3RJbnRlcmZhY2VUYWJsZVZhbHVlcywgMCk7CiAvKiBIYXNoIHRhYmxlIGZvciBj
b25zdHJ1Y3RvciAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXNb
XSA9CiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1zdGF0aWMgY29uc3Qg
SGFzaFRhYmxlIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUgPSB7IDQsIDMsIEpTVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNo
VGFibGUgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZSg0LCAzLCBKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwKTsKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQogQ09NUElMRV9BU1NFUlQoMSA9PSBUZXN0U3VwcGxlbWVu
dGFsOjpTVVBQTEVNRU5UQUxDT05TVEFOVDEsIFRlc3RJbnRlcmZhY2VFbnVtU1VQUExFTUVOVEFM
Q09OU1RBTlQxSXNXcm9uZ1VzZURvTm90Q2hlY2tDb25zdGFudHMpOwpAQCAtMTcxLDcgKzE3MSw3
IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGUgPSB7IDE3
LCAxNSwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBj
b25zdCBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlVGFibGUoMTcsIDE1LCBKU1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZVZhbHVlcywgMCk7CiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlUHJvdG90eXBl
IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEludGVyZmFjZVByb3RvdHlwZVRhYmxlLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSkgfTsKIAogSlNPYmplY3Qq
IEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHAKaW5kZXggMWVhMDhkMC4uMmIxODczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRhYmxlVmFsdWVz
W10gPQogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGFibGUgPSB7IDIsIDEsIEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUYWJsZVZhbHVlcywgMCB9Oworc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGFibGUoMiwgMSwgSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRhYmxlVmFsdWVzLCAwKTsKIC8qIEhhc2ggdGFibGUgZm9y
IGNvbnN0cnVjdG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KQEAgLTQ5LDcgKzQ5
LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmlu
c2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lckNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlKDEsIDAsIEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwKTsKIGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IiLCAmQmFzZTo6c19p
bmZvLCAmSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yVGFibGUsIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9y
KSB9OwogCiBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OkpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlw
ZVRhYmxlID0geyAyLCAxLCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlVGFi
bGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZVRhYmxlKDIsIDEsIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJQcm90b3R5cGVUYWJsZVZhbHVlcywgMCk7CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUpIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApp
bmRleCBlZWVmNjZhLi4zYzZlZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3Iu
Y3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJp
bnNpYyB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JUYWJsZSA9IHsgMiwgMSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07
CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JUYWJsZSgyLCAx
LCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDApOwogLyogSGFzaCB0YWJsZSBm
b3IgY29uc3RydWN0b3IgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpAQCAtNDgsNyArNDgsNyBA
QCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9
OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1
Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJs
ZVZhbHVlcywgMCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yQ29uc3RydWN0b3JUYWJsZSgxLCAwLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0
b3JUYWJsZVZhbHVlcywgMCk7CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvclRhYmxl
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cikgfTsKIAogSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
ICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBIYXNo
VGFibGUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlID0geyAxLCAwLCBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25z
dCBIYXNoVGFibGUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlKDEsIDAsIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlcywgMCk7CiBjb25zdCBDbGFz
c0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5h
bWVkQ29uc3RydWN0b3JQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0TmFtZWRDb25z
dHJ1Y3RvclByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JQcm90b3R5cGUpIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCBlMDVhYzA4Li43NzJhNjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROb2Rl
VGFibGVWYWx1ZXNbXSA9CiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1z
dGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5vZGVUYWJsZSA9IHsgMiwgMSwgSlNUZXN0Tm9k
ZVRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5vZGVUYWJs
ZSgyLCAxLCBKU1Rlc3ROb2RlVGFibGVWYWx1ZXMsIDApOwogLyogSGFzaCB0YWJsZSBmb3IgY29u
c3RydWN0b3IgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5vZGVDb25z
dHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAw
LCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
VGVzdE5vZGVDb25zdHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3ROb2RlQ29uc3RydWN0b3JU
YWJsZVZhbHVlcywgMCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3ROb2RlQ29uc3Ry
dWN0b3JUYWJsZSgxLCAwLCBKU1Rlc3ROb2RlQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCk7CiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Tm9k
ZUNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5vZGVDb25zdHJ1Y3RvclRhYmxl
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5vZGVDb25zdHJ1Y3RvcikgfTsKIAogSlNU
ZXN0Tm9kZUNvbnN0cnVjdG9yOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC05NCw3ICs5NCw3IEBA
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROb2RlUHJvdG90eXBlVGFibGVWYWx1
ZXNbXSA9CiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1zdGF0aWMgY29u
c3QgSGFzaFRhYmxlIEpTVGVzdE5vZGVQcm90b3R5cGVUYWJsZSA9IHsgMSwgMCwgSlNUZXN0Tm9k
ZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVz
dE5vZGVQcm90b3R5cGVUYWJsZSgxLCAwLCBKU1Rlc3ROb2RlUHJvdG90eXBlVGFibGVWYWx1ZXMs
IDApOwogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5vZGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRl
c3ROb2RlUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5vZGVQcm90b3R5cGVUYWJs
ZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROb2RlUHJvdG90eXBlKSB9OwogCiBKU09i
amVjdCogSlNUZXN0Tm9kZVByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGE4YTYwMjMuLjEyYjExZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdE9ialRhYmxlVmFsdWVzW10gPQogICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMg
fQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgMjY1LCAy
NTUsIEpTVGVzdE9ialRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
VGVzdE9ialRhYmxlKDI2NSwgMjU1LCBKU1Rlc3RPYmpUYWJsZVZhbHVlcywgMCk7CiAvKiBIYXNo
IHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KQEAgLTE4OCw3ICsxODgsNyBAQCBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVl
c1tdID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25z
dCBIYXNoVGFibGUgSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZSA9IHsgMzYsIDMxLCBKU1Rlc3RP
YmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
VGVzdE9iakNvbnN0cnVjdG9yVGFibGUoMzYsIDMxLCBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxl
VmFsdWVzLCAwKTsKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogQ09NUElMRV9BU1NFUlQoMCA9
PSBUZXN0T2JqOjpDT05ESVRJT05BTF9DT05TVCwgVGVzdE9iakVudW1DT05ESVRJT05BTF9DT05T
VElzV3JvbmdVc2VEb05vdENoZWNrQ29uc3RhbnRzKTsKQEAgLTMyOSw3ICszMjksNyBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9
CiAgICAgeyAwLCAwLCAwLCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlID0geyAyNjYsIDI1NSwgSlNUZXN0T2JqUHJv
dG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2Jq
UHJvdG90eXBlVGFibGUoMjY2LCAyNTUsIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzLCAw
KTsKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RP
YmplY3RQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T2JqUHJvdG90eXBlVGFibGUs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqUHJvdG90eXBlKSB9OwogCiBKU09iamVj
dCogSlNUZXN0T2JqUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggOGFiNzk2Ny4uZDRiZTFmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRhYmxlVmFsdWVzW10gPQogICAgIHsgMCwgMCwgMCwg
MCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUYWJsZSA9IHsgMTcsIDE1LCBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUYWJsZVZhbHVlcywgMCB9Oworc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUYWJsZSgxNywgMTUs
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRhYmxlVmFsdWVzLCAwKTsKIC8q
IEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxl
VmFsdWVzW10gPQpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZQogICAg
IHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRhYmxlID0g
eyAxLCAwLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvclRh
YmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yVGFibGUoMSwgMCwgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgMCk7CiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rv
ciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VD
b25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSB9OwogCiBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZVRh
YmxlVmEKICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25z
dCBIYXNoVGFibGUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBl
VGFibGUgPSB7IDUsIDMsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3Rv
dHlwZVRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZVRhYmxlKDUsIDMsIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAwKTsKIGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUi
LCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJv
dG90eXBlVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKSB9OwogCiBKU09iamVjdCogSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLS0gCjEuNy45LjUKCg==
</data>
<flag name="review"
          id="153148"
          type_id="1"
          status="-"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="153149"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146181</attachid>
            <date>2012-06-06 20:22:45 -0700</date>
            <delta_ts>2012-06-12 17:24:07 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>0001-Dynamic-hash-table-in-DOMObjectHashTableMap-is-wrong.patch</filename>
            <type>text/plain</type>
            <size>5450</size>
            <attacher name="Leo Yang">leo.yang</attacher>
            
              <data encoding="base64">RnJvbSA0NDBlNDY2ZGMyMGZhMWZmOGI3OWE1NDUyNjkwNmRkNjE4M2Q0Y2VjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW8gWWFuZyA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgpEYXRlOiBUaHUsIDcgSnVuIDIwMTIgMTA6MDY6MjIgKzA4MDAKU3ViamVjdDogW1BBVENIXSBE
eW5hbWljIGhhc2ggdGFibGUgaW4gRE9NT2JqZWN0SGFzaFRhYmxlTWFwIGlzIHdyb25nIGluCiBt
dWx0aXBsZSB0aHJlYWRzCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODczMzQKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKU291cmNlL0phdmFTY3JpcHRDb3Jl
OgoKQWRkIGEgY29weSBtZW1iZXIgZnVuY3Rpb24gdG8gSlNDOjpIYXNUYWJsZS4gVGhpcyBmdW5j
dGlvbiB3aWxsIGNvcHkgYWxsIGRhdGEKbWVtYmVycyBleGNlcHQgZm9yICp0YWJsZSogd2hpY2gg
Y29udGFpbnMgdGhyZWFkIHNwZWNpZmljIGRhdGEgdGhhdCBwcmV2ZW50cwp1cCBjb3B5aW5nIGl0
LiBXaGVuIHlvdSB3YW50IHRvIGNvcHkgYSBKU0M6Okhhc2hUYWJsZSB0aGF0IHdhcyBjb25zdHJ1
Y3RlZApvbiBhbm90aGVyIHRocmVhZCB5b3Ugc2hvdWxkIGNhbGwgSlNDOjpIYXNoVGFibGU6OmNv
cHkoKS4KCiogcnVudGltZS9Mb29rdXAuaDoKKEpTQzo6SGFzaFRhYmxlOjpjb3B5KToKKEhhc2hU
YWJsZSk6CgpTb3VyY2UvV2ViQ29yZToKCkFkYXB0IHRvIEpTQzo6SGFzaFRhYmxlOjpjb3B5IHRv
IGF2b2lkIGNvcHkgZHluYW1pYyB0YWJsZSBtZW1iZXIgb2YgYSBIYXNoVGFibGUuClRoZSBkeW5h
bWljIHRhYmxlIG1heSBiZSBhbGxvY2F0ZWQgb24gb3RoZXIgdGhyZWFkIGFuZCBjb250YWlucyB0
aHJlYWQgc3BlY2lmaWMKaWRlbnRpZmllcnMuIEZvciBleGFtcGxlLCBhIGhhc2ggdGFibGUgb2Yg
SlNFbnRyeUFycmF5IHdhcyBmaXJzdCBpbml0aWFsaXplZCBvbiBhCndvcmtlciB0aHJlYWQsIGFu
ZCB0aGVuIHRoZSB1c2VyIHJlbG9hZGVkIHRoZSBwYWdlLCBhbm90aGVyIHdvcmtlciB0aHJlYWQg
aXMKY3JlYXRlZCBkdWUgdG8gcmVsb2FkLCB0aGUgZHluYW1pYyBhbGxvY2F0ZWQgdGFibGUgaW4g
KnN0YXRpY1RhYmxlKiBpcyBzcGVjaWZpYwp0byB0aGUgZmlyc3Qgd29ya2VyIHRocmVhZCB3aGlj
aCBoYXMgZGllZC4gSWYgdGhlIHVzZXIgcmVsb2FkIHRoZSBwYWdlIGFnYWluLAp0aGUgZHluYW1p
YyB0YWJsZSB3aWxsIGJlIGZyZWVkIGFuZCBtZW1vcnkgY29ycnVwdGlvbiB3aWxsIG9jY3VyLgoK
Tm8gZnVuY3Rpb25hbGl0aWVzIGNoYW5nZWQsIG5vIG5ldyB0ZXN0cy4KCiogYmluZGluZ3MvanMv
RE9NT2JqZWN0SGFzaFRhYmxlTWFwLmg6CihXZWJDb3JlOjpET01PYmplY3RIYXNoVGFibGVNYXA6
OmdldCk6Ci0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgfCAgIDE2ICsrKysrKysrKysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5oICAgICAgICAgICAgIHwgICAgNyArKysrKysrCiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKysrKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5o
IHwgICAgMiArLQogNCBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u
KC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggOGRkMzFiYy4uNTI2NGMzYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDYtMDYgIExlbyBZYW5n
ICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIER5bmFtaWMgaGFzaCB0
YWJsZSBpbiBET01PYmplY3RIYXNoVGFibGVNYXAgaXMgd3JvbmcgaW4gbXVsdGlwbGUgdGhyZWFk
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODczMzQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBj
b3B5IG1lbWJlciBmdW5jdGlvbiB0byBKU0M6Okhhc1RhYmxlLiBUaGlzIGZ1bmN0aW9uIHdpbGwg
Y29weSBhbGwgZGF0YQorICAgICAgICBtZW1iZXJzIGV4Y2VwdCBmb3IgKnRhYmxlKiB3aGljaCBj
b250YWlucyB0aHJlYWQgc3BlY2lmaWMgZGF0YSB0aGF0IHByZXZlbnRzCisgICAgICAgIHVwIGNv
cHlpbmcgaXQuIFdoZW4geW91IHdhbnQgdG8gY29weSBhIEpTQzo6SGFzaFRhYmxlIHRoYXQgd2Fz
IGNvbnN0cnVjdGVkCisgICAgICAgIG9uIGFub3RoZXIgdGhyZWFkIHlvdSBzaG91bGQgY2FsbCBK
U0M6Okhhc2hUYWJsZTo6Y29weSgpLgorCisgICAgICAgICogcnVudGltZS9Mb29rdXAuaDoKKyAg
ICAgICAgKEpTQzo6SGFzaFRhYmxlOjpjb3B5KToKKyAgICAgICAgKEhhc2hUYWJsZSk6CisKIDIw
MTItMDYtMDQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcg
Q0ZHIHNpbXBsaWZpY2F0aW9uIHNob3VsZCBjb3JyZWN0IHRoZSB2YXJpYWJsZXMgYXQgdGhlIGhl
YWQgb2YgdGhlIHByZWRlY2Vzc29yIGJsb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5oCmluZGV4IGE3NWI1MjEuLmNjYjA4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5oCkBAIC0xMTQsNiArMTE0LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBjb25zdCBIYXNoVGFibGVWYWx1ZSogdmFsdWVzOyAvLyBGaXhlZCB2YWx1ZXMgZ2VuZXJhdGVk
IGJ5IHNjcmlwdC4KICAgICAgICAgbXV0YWJsZSBjb25zdCBIYXNoRW50cnkqIHRhYmxlOyAvLyBU
YWJsZSBhbGxvY2F0ZWQgYXQgcnVudGltZS4KIAorICAgICAgICBBTFdBWVNfSU5MSU5FIEhhc2hU
YWJsZSBjb3B5KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRG9uJ3QgY29weSBk
eW5hbWljIHRhYmxlIHNpbmNlIGl0J3MgdGhyZWFkIHNwZWNpZmljLgorICAgICAgICAgICAgSGFz
aFRhYmxlIHJlc3VsdCA9IHsgY29tcGFjdFNpemUsIGNvbXBhY3RIYXNoU2l6ZU1hc2ssIHZhbHVl
cywgMCB9OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCiAgICAgICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBpbml0aWFsaXplSWZOZWVkZWQoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIXRhYmxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGVhOWE0NzcuLjIwMjg1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAx
Mi0wNi0wNiAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAg
ICAgRHluYW1pYyBoYXNoIHRhYmxlIGluIERPTU9iamVjdEhhc2hUYWJsZU1hcCBpcyB3cm9uZyBp
biBtdWx0aXBsZSB0aHJlYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NzMzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkYXB0IHRvIEpTQzo6SGFzaFRhYmxlOjpjb3B5IHRvIGF2b2lkIGNvcHkgZHlu
YW1pYyB0YWJsZSBtZW1iZXIgb2YgYSBIYXNoVGFibGUuCisgICAgICAgIFRoZSBkeW5hbWljIHRh
YmxlIG1heSBiZSBhbGxvY2F0ZWQgb24gb3RoZXIgdGhyZWFkIGFuZCBjb250YWlucyB0aHJlYWQg
c3BlY2lmaWMKKyAgICAgICAgaWRlbnRpZmllcnMuIEZvciBleGFtcGxlLCBhIGhhc2ggdGFibGUg
b2YgSlNFbnRyeUFycmF5IHdhcyBmaXJzdCBpbml0aWFsaXplZCBvbiBhCisgICAgICAgIHdvcmtl
ciB0aHJlYWQsIGFuZCB0aGVuIHRoZSB1c2VyIHJlbG9hZGVkIHRoZSBwYWdlLCBhbm90aGVyIHdv
cmtlciB0aHJlYWQgaXMKKyAgICAgICAgY3JlYXRlZCBkdWUgdG8gcmVsb2FkLCB0aGUgZHluYW1p
YyBhbGxvY2F0ZWQgdGFibGUgaW4gKnN0YXRpY1RhYmxlKiBpcyBzcGVjaWZpYworICAgICAgICB0
byB0aGUgZmlyc3Qgd29ya2VyIHRocmVhZCB3aGljaCBoYXMgZGllZC4gSWYgdGhlIHVzZXIgcmVs
b2FkIHRoZSBwYWdlIGFnYWluLAorICAgICAgICB0aGUgZHluYW1pYyB0YWJsZSB3aWxsIGJlIGZy
ZWVkIGFuZCBtZW1vcnkgY29ycnVwdGlvbiB3aWxsIG9jY3VyLgorCisgICAgICAgIE5vIGZ1bmN0
aW9uYWxpdGllcyBjaGFuZ2VkLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9ET01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdEhh
c2hUYWJsZU1hcDo6Z2V0KToKKwogMjAxMi0wNi0wNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEV2ZW50SGFuZGxlciBzaG91bGRuJ3QgZGlzcGF0Y2ggZmFrZSBt
b3VzZW1vdmUgZXZlbnRzIHdoZW4gc2Nyb2xsaW5nIG9uIGRldmljZXMgdGhhdCBkb24ndCBoYXZl
IGEgbW91c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVj
dEhhc2hUYWJsZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFz
aFRhYmxlTWFwLmgKaW5kZXggMjE2Yjk0NS4uNjQ4MjhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgICAgICBIYXNoTWFwPGNvbnN0IEpTQzo6SGFzaFRhYmxlKiwgSlNDOjpI
YXNoVGFibGU+OjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZChzdGF0aWNUYWJsZSk7CiAgICAg
ICAgIGlmIChpdGVyICE9IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuICZpdGVyLT5z
ZWNvbmQ7Ci0gICAgICAgIHJldHVybiAmbV9tYXAuc2V0KHN0YXRpY1RhYmxlLCBKU0M6Okhhc2hU
YWJsZSgqc3RhdGljVGFibGUpKS5pdGVyYXRvci0+c2Vjb25kOworICAgICAgICByZXR1cm4gJm1f
bWFwLnNldChzdGF0aWNUYWJsZSwgc3RhdGljVGFibGUtPmNvcHkoKSkuaXRlcmF0b3ItPnNlY29u
ZDsKICAgICB9CiAKIHByaXZhdGU6Ci0tIAoxLjcuOS41Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>