<?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>98005</bug_id>
          
          <creation_ts>2012-10-01 02:20:44 -0700</creation_ts>
          <short_desc>Web Inspector: provide memory instrumentation for HashMap</short_desc>
          <delta_ts>2012-10-02 23:04:55 -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 Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>98028</dependson>
    
    <dependson>98041</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>benjamin</cc>
    
    <cc>bweinstein</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>731505</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-01 02:20:44 -0700</bug_when>
    <thetext>Currently the HashMap support consists of MemoryInstrumentation::addHashMap/addInstrumentedMapEntries/addInstrumentedMapValues which should be called if we want to instrument HashMap internals. This approach is error prone. We should detect HashMap type automatically instead and collect data for the map content if it is instrumented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731520</commentid>
    <comment_count>1</comment_count>
      <attachid>166433</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-01 02:44:48 -0700</bug_when>
    <thetext>Created attachment 166433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731522</commentid>
    <comment_count>2</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-01 02:46:16 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=166433) [details]
&gt; Patch

No XCode project changes in this patch. Will add them later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731534</commentid>
    <comment_count>3</comment_count>
      <attachid>166433</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-01 03:14:38 -0700</bug_when>
    <thetext>Comment on attachment 166433
Patch

Attachment 166433 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14118030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731535</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-01 03:15:24 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=166433&amp;action=review

&gt; Source/WTF/wtf/MemoryInstrumentation.h:159
&gt;      template&lt;typename HashMapType&gt; void addHashMap(const HashMapType&amp;, MemoryObjectType, bool contentOnly = false);

unnecessary line

&gt; Source/WTF/wtf/MemoryInstrumentation.h:215
&gt;      template&lt;typename HashSetType&gt; void addHashCountedSet(const HashSetType&amp; set) { m_memoryInstrumentation-&gt;addHashMap(set, m_objectType, true); }

addMember?

&gt; Source/WTF/wtf/MemoryInstrumentationHashMap.h:70
&gt; +    // Check if type is convertible to integer to handle enum keys and values.
&gt; +    SequenceMemoryInstrumentationTraits&lt;typename Conditional&lt;IsConvertibleToInteger&lt;KeyArg&gt;::value, int, KeyArg&gt;::Type&gt;::reportMemoryUsage(hashMap-&gt;begin().keys(), hashMap-&gt;end().keys(), info);
&gt; +    SequenceMemoryInstrumentationTraits&lt;typename Conditional&lt;IsConvertibleToInteger&lt;MappedArg&gt;::value, int, MappedArg&gt;::Type&gt;::reportMemoryUsage(hashMap-&gt;begin().values(), hashMap-&gt;end().values(), info);
&gt; +//    SequenceMemoryInstrumentationTraits&lt;KeyArg&gt;::reportMemoryUsage(hashMap-&gt;begin().keys(), hashMap-&gt;end().keys(), info);
&gt; +//    SequenceMemoryInstrumentationTraits&lt;MappedArg&gt;::reportMemoryUsage(hashMap-&gt;begin().values(), hashMap-&gt;end().values(), info);

please remove commented code.

Is IsConvertibleToInteger works correctly for classes which have operator int()?

the code hashMap-&gt;begin().keys(), hashMap-&gt;end().keys() looks strange. I&apos;d prefer hashMap-&gt;keys().begin();  etc.

&gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:534
&gt; +TEST(MemoryInstrumentationTest, hashMapWithWnumKeysAndInstrumentedValues)

typo: WithEnum</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731608</commentid>
    <comment_count>5</comment_count>
      <attachid>166456</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-01 05:32:53 -0700</bug_when>
    <thetext>Created attachment 166456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731609</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-01 05:36:17 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166433&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/MemoryInstrumentation.h:159
&gt; &gt;      template&lt;typename HashMapType&gt; void addHashMap(const HashMapType&amp;, MemoryObjectType, bool contentOnly = false);
&gt; 
&gt; unnecessary line
&gt; 
&gt; &gt; Source/WTF/wtf/MemoryInstrumentation.h:215
&gt; &gt;      template&lt;typename HashSetType&gt; void addHashCountedSet(const HashSetType&amp; set) { m_memoryInstrumentation-&gt;addHashMap(set, m_objectType, true); }
&gt; 
&gt; addMember?
&gt; 
We need to get rid of addHashCountedSet method which I&apos;m planning to do in a separate patch. I changed the name of addHashMap to addCountedSet to reflect that it is only used for HashCountedSet instrumentation.

&gt; &gt; Source/WTF/wtf/MemoryInstrumentationHashMap.h:70
&gt; &gt; +    // Check if type is convertible to integer to handle enum keys and values.
&gt; &gt; +    SequenceMemoryInstrumentationTraits&lt;typename Conditional&lt;IsConvertibleToInteger&lt;KeyArg&gt;::value, int, KeyArg&gt;::Type&gt;::reportMemoryUsage(hashMap-&gt;begin().keys(), hashMap-&gt;end().keys(), info);
&gt; &gt; +    SequenceMemoryInstrumentationTraits&lt;typename Conditional&lt;IsConvertibleToInteger&lt;MappedArg&gt;::value, int, MappedArg&gt;::Type&gt;::reportMemoryUsage(hashMap-&gt;begin().values(), hashMap-&gt;end().values(), info);
&gt; &gt; +//    SequenceMemoryInstrumentationTraits&lt;KeyArg&gt;::reportMemoryUsage(hashMap-&gt;begin().keys(), hashMap-&gt;end().keys(), info);
&gt; &gt; +//    SequenceMemoryInstrumentationTraits&lt;MappedArg&gt;::reportMemoryUsage(hashMap-&gt;begin().values(), hashMap-&gt;end().values(), info);
&gt; 
&gt; please remove commented code.
&gt; 
Done.

&gt; Is IsConvertibleToInteger works correctly for classes which have operator int()?
&gt; 
No. It fails for such classes stored by value. Added a test for tracking this. I think we may live with that rare case.


&gt; the code hashMap-&gt;begin().keys(), hashMap-&gt;end().keys() looks strange. I&apos;d prefer hashMap-&gt;keys().begin();  etc.
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/MemoryInstrumentationTest.cpp:534
&gt; &gt; +TEST(MemoryInstrumentationTest, hashMapWithWnumKeysAndInstrumentedValues)
&gt; 
&gt; typo: WithEnum
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731624</commentid>
    <comment_count>7</comment_count>
      <attachid>166456</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-01 06:02:06 -0700</bug_when>
    <thetext>Comment on attachment 166456
Patch

Attachment 166456 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14075908</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731631</commentid>
    <comment_count>8</comment_count>
      <attachid>166456</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-01 06:14:28 -0700</bug_when>
    <thetext>Comment on attachment 166456
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731684</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-01 07:27:04 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 166456 [details])
&gt; Attachment 166456 [details] did not pass win-ews (win):
&gt; Output: http://queues.webkit.org/results/14075908

The build error on Windows should disappear after http://trac.webkit.org/changeset/130047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731691</commentid>
    <comment_count>10</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-01 07:46:20 -0700</bug_when>
    <thetext>Committed r130048: &lt;http://trac.webkit.org/changeset/130048&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731742</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-01 09:25:36 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 98041</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166433</attachid>
            <date>2012-10-01 02:44:48 -0700</date>
            <delta_ts>2012-10-01 05:32:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98005-20121001134401.patch</filename>
            <type>text/plain</type>
            <size>35161</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE0Zjk4OWUzNGEwNWZlZGM0OTFhY2Uz
NjEzZGUzZmRlOTNhYTY3MzcuLjg2NWFlZjIwMThlNTg1MTdhNjFiY2YxY2FmMTUzMWMyYWUyMDMy
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTAtMDEgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBtZW1v
cnkgaW5zdHJ1bWVudGF0aW9uIGZvciBIYXNoTWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEV4dHJhY3RlZCBIYXNoTWFwIG1lbW9yeSBpbnN0cnVtZW50
YXRpb24gaW50byBpdHMgb3duIGZpbGUuIFRoZSBtYXAncyBjb250ZW50CisgICAgICAgIGVsZW1l
bnRzIHdpbGwgYmUgYXV0b21hdGljYWxseSB0cmF2ZXJzZWQgaWYgdGhlaXIgdHlwZXMgYXJlIHN1
cHBvcnRlZAorICAgICAgICBieSB0aGUgbWVtb3J5IGluc3RydW1lbnRhdGlvbi4gTm8gbmVlZCB0
byBjYWxsIHNwZWNpYWwgbWV0aG9kIGZvciBoYXNoIG1hcAorICAgICAgICBmaWVsZHMgYW55IG1v
cmUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdURi5neXBp
OgorICAgICAgICAqIFdURi5wcm86CisgICAgICAgICogV1RGLnZjcHJvai9XVEYudmNwcm9qOgor
ICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKE1lbW9yeUlu
c3RydW1lbnRhdGlvbik6CisgICAgICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb25IYXNoTWFwLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdU
Rjo6U2VxdWVuY2VNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OnJlcG9ydE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKFdURjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorCiAyMDEyLTA5LTMwICBNYXJr
IEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAg
SGFzVHJpdmlhbENvbnN0cnVjdG9yL0Rlc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjY3ZTQ4M2Iw
MDkxOTdmNmU5NDgyNTQ2MTc2N2E3YWUyZjkwODFjLi5jOWQ5Yzc3MjZkM2NkYWRlOGEwMzNhNWJj
NTFlODBlZDY5MzZjMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMTAtMDEg
IFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogcHJvdmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGZvciBIYXNoTWFwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgYWxsIGNh
bGwgc2l0ZXMgb2YgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoTWFwIHRvIHVzZSBnZW5l
cmljCisgICAgICAgIG1ldGhvZCBvZiByZXBvcnRpbmcgbWVtb3J5IGZvb3RwcmludCBpbnN0ZWFk
LiAKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0cmlu
Z0NhY2hlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01N
YXAuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NJbWFnZUdlbmVyYXRvclZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZSk6CisgICAg
ICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlcG9ydE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNz
cy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENv
bnRlbnRzOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZXBvcnRNZW1vcnlVc2Fn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlcG9ydE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpyZXBvcnRNZW1vcnlVc2Fn
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwOgorCiAyMDEyLTA5LTMwICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CiAKICAg
ICAgICAgU2lnbiBpbiBmcm9udCBvZiBrZXlmcmFtZSBzZWxlY3RvciBjYXVzZXMgc3R5bGVzaGVl
dCBwYXJzaW5nIHRvIGFib3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDFkZWNjZTJj
YTVkY2EzYTAyOWQxYTEzY2Q1MWI5NjY1MGQ5MzhkZmYuLjJlZWJkN2MwYzE2MjEyZjFmYjdhNjg5
ZDM5YTY2MDM2MzMwYmExNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMTAtMDEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9u
IGZvciBIYXNoTWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05ODAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIHVuaXQgdGVzdHMgZm9yIEhhc2hNYXAgbWVtb3J5IGluc3RydW1lbnRhdGlvbi4K
KworICAgICAgICAqIHRlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwOgorICAgICAg
ICAoV1RGKToKKwogMjAxMi0wOS0yOCAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQWRkIGRyYWdnYWJsZSBwcm9wZXJ0eSB0byBXZWJEcmFnZ2FibGVSZWdpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV1RGL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMGNlYjlmZGVlNGRhNjM0YjNlZmY3MzViOTQ1NmJlZTgx
OThkYmYzOS4uMTNiNTk0YTEzYzBmNWU1N2ZhNDE3MTgzOTVlZDI2NjcxNWNjOGZhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XVEYvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtODEsNiArODEsNyBAQCB3dGZfc291cmNlcyArPSBcCiAgICAg
U291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRh
dGlvbkFycmF5QnVmZmVyVmlldy5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVt
ZW50YXRpb25IYXNoTWFwLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRh
dGlvbkhhc2hTZXQuaCBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VmVjdG9yLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLmd5cGkgYi9Tb3VyY2UvV1RGL1dURi5neXBpCmluZGV4IGRlYWM1
NzE5YzdhZTViOTljMmQxOGNiNDhiMmM1NTQ2MjJiZDhiMTQuLjFmOTdmZTBjNTY4OGRmMjI0N2Ey
NTUwMGViOWQ3YTQwNTlkYmNiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLmd5cGkKKysr
IGIvU291cmNlL1dURi9XVEYuZ3lwaQpAQCAtNTEsNiArNTEsNyBAQAogICAgICAgICAgICAgJ3d0
Zi9NYXRoRXh0cmFzLmgnLAogICAgICAgICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24u
aCcsCiAgICAgICAgICAgICAnd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmll
dy5oJywKKyAgICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oJywK
ICAgICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oJywKICAgICAg
ICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmgnLAogICAgICAgICAgICAg
J3d0Zi9NZXNzYWdlUXVldWUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5wcm8gYi9T
b3VyY2UvV1RGL1dURi5wcm8KaW5kZXggN2ExMGJlZmUzM2Q0ZThmNTZiOWU3ZGU1MGMyOTYyMzU5
Y2U4NTQ3Yy4uN2YyY2M2MDJlMTZjNThmMjExNmQzZjAyNTU4NjJjZTE2NGFlN2VlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYucHJvCisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpAQCAtODgs
NiArODgsNyBAQCBIRUFERVJTICs9IFwKICAgICBNZWRpYVRpbWUuaCBcCiAgICAgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmggXAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmll
dy5oIFwKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmggXAogICAgIE1lbW9yeUlu
c3RydW1lbnRhdGlvbkhhc2hTZXQuaCBcCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9y
LmggXAogICAgIE1lc3NhZ2VRdWV1ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZj
cHJvai9XVEYudmNwcm9qIGIvU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKaW5kZXgg
YjkyZTc3ODkwMzUzZmM4MTRiZDFhMDllYTI0Y2Y3ZWY1MzhkMDk5Ni4uMmJkYTY4NzUyMjE3ZGYx
N2MzNDhhNGQ3OTIzZDZiMmQ4NTVkNDFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmNw
cm9qL1dURi52Y3Byb2oKKysrIGIvU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKQEAg
LTkwOSw2ICs5MDksMTAgQEAKIAkJCT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkgICAgICAgIFJl
bGF0aXZlUGF0aD0iLi5cd3RmXE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaCIKKwkJCT4K
KwkJPC9GaWxlPgorCQk8RmlsZQogCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cd3RmXE1lbW9y
eUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCIKIAkJCT4KIAkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCA2OWIwMjI1NGIzN2FmYTcyMGIyNTYyNjdjMjg4
YzU4ZjFlZWU1YzhmLi45MzlhODBhMjQ4ZjBlY2IyZWI2Y2UwYWYyZTM0Mzc3MTIyMDk1MDM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtMTU4LDggKzE1OCw2IEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3QoY29uc3Qg
VCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsgT3duaW5nVHJhaXRzPFQ+
OjphZGRPYmplY3QodGhpcywgdCwgb3duZXJPYmplY3RUeXBlKTsgfQogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmLCBN
ZW1vcnlPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24o
Y29uc3QgQ29sbGVjdGlvblR5cGUmLCBNZW1vcnlPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5
ID0gZmFsc2UpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1
bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSk7Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgTWFwVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMo
Y29uc3QgTWFwVHlwZSYsIE1lbW9yeU9iamVjdFR5cGUpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IExpc3RIYXNoU2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNldChjb25zdCBMaXN0SGFzaFNldFR5
cGUmLCBNZW1vcnlPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwogICAgIHZv
aWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGNvbnN0JiBidWZmZXIsIE1lbW9yeU9iamVjdFR5
cGUgb3duZXJPYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkKICAgICB7CkBAIC0yMTQsMTAgKzIxMiw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENvbGxlY3Rpb25FbGVtZW50cyhjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciopIHsgfQogICAgIHZvaWQgYWRkQ29sbGVjdGlvbkVsZW1lbnRzKGNvbnN0IGlu
dCosIGNvbnN0IGludCopIHsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaE1hcFR5cGU+
IHZvaWQgYWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgbWFwKSB7IG1fbWVtb3J5SW5zdHJ1
bWVudGF0aW9uLT5hZGRIYXNoTWFwKG1hcCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hDb3VudGVkU2V0KGNvbnN0
IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEhhc2hNYXAo
c2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFwVHlw
ZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmIG1hcCkgeyBt
X21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhtYXAsIG1f
b2JqZWN0VHlwZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXBUeXBlPiB2b2lkIGFkZElu
c3RydW1lbnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiBtYXApIHsgbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhtYXAsIG1fb2JqZWN0VHlwZSk7IH0K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+IHZvaWQgYWRkTGlzdEhhc2hT
ZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24t
PmFkZExpc3RIYXNoU2V0KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHZvaWQgYWRk
UmF3QnVmZmVyKGNvbnN0IHZvaWQqIGNvbnN0JiBidWZmZXIsIHNpemVfdCBzaXplKSB7IG1fbWVt
b3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRSYXdCdWZmZXIoYnVmZmVyLCBtX29iamVjdFR5cGUsIHNp
emUpOyB9CiAgICAgdm9pZCBhZGRQcml2YXRlQnVmZmVyKHNpemVfdCBzaXplKSB7IG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNpemUobV9vYmplY3RUeXBlLCBzaXplKTsgfQpA
QCAtMjg5LDI0ICsyODQsNiBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1
bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbAogICAgICAgICBhZGRP
YmplY3QoKmksIG93bmVyT2JqZWN0VHlwZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE1hcFR5
cGU+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkTWFwRW50cmll
cyhjb25zdCBNYXBUeXBlJiBtYXAsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQot
ewotICAgIHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsK
LSAgICBmb3IgKHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtYXAuYmVnaW4o
KTsgaSAhPSBlbmQ7ICsraSkgewotICAgICAgICBhZGRPYmplY3QoaS0+Zmlyc3QsIG93bmVyT2Jq
ZWN0VHlwZSk7Ci0gICAgICAgIGFkZE9iamVjdChpLT5zZWNvbmQsIG93bmVyT2JqZWN0VHlwZSk7
Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNYXBUeXBlPgotdm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiBtYXAs
IE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQotewotICAgIHR5cGVuYW1lIE1hcFR5
cGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKLSAgICBmb3IgKHR5cGVuYW1lIE1h
cFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtYXAuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKLSAg
ICAgICAgYWRkT2JqZWN0KGktPnNlY29uZCwgb3duZXJPYmplY3RUeXBlKTsKLX0KLQogdGVtcGxh
dGU8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPgogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYgaGFzaFNldCwgTWVtb3J5T2Jq
ZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCiB7CkBAIC0zMzQsNiAr
MzExLDkgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1lbnRlZFBvaW50ZXI8
VD46OnByb2Nlc3MoTWVtb3J5SW5zdHJ1bWVudGF0aW8KIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgVmVjdG9yOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5PiB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eT4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyopOwogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFy
ZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+IGNsYXNz
IEhhc2hNYXA7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywg
dHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRU
cmFpdHNBcmc+IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3QgSGFzaE1hcDxLZXlBcmcsIE1h
cHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+KiBjb25zdCYs
IE1lbW9yeU9iamVjdEluZm8qKTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyAh
ZGVmaW5lZChNZW1vcnlJbnN0cnVtZW50YXRpb25faCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9y
eUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yzk2NzNiOGRlMzA2ZWI2YWY2
ODVjY2I1NDZiZjg5ZGYyNjEyMjVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1l
bW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXBfaAorI2RlZmluZSBNZW1vcnlJbnN0cnVtZW50YXRp
b25IYXNoTWFwX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1R5
cGVUcmFpdHMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleVR5
cGU+CitzdHJ1Y3QgU2VxdWVuY2VNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHMgeworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBJPiBzdGF0aWMgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShJIGl0ZXJh
dG9yLCBJIGVuZCwgTWVtb3J5Q2xhc3NJbmZvJiBpbmZvKQorICAgIHsKKyAgICAgICAgaW5mby5h
ZGRDb2xsZWN0aW9uRWxlbWVudHMoaXRlcmF0b3IsIGVuZCk7CisgICAgfQorfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgU2VxdWVuY2VNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8aW50PiB7Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEk+IHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKEks
IEksIE1lbW9yeUNsYXNzSW5mbyYpIHsgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgU2VxdWVu
Y2VNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM8dm9pZCo+IHsKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgST4gc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoSSwgSSwgTWVtb3J5Q2xhc3NJ
bmZvJikgeyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBl
ZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBN
YXBwZWRUcmFpdHNBcmc+Cit2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKGNvbnN0IEhhc2hNYXA8S2V5
QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPiog
Y29uc3QmIGhhc2hNYXAsIE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pCit7Cisg
ICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgaGFzaE1hcCk7CisgICAg
dHlwZWRlZiBIYXNoTWFwPEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcs
IE1hcHBlZFRyYWl0c0FyZz4gSGFzaE1hcFR5cGU7CisKKyAgICB0eXBlZGVmIEhhc2hNYXBWYWx1
ZVRyYWl0czxLZXlBcmcsIE1hcHBlZEFyZz4gVmFsdWVUcmFpdHM7CisgICAgdHlwZWRlZiBIYXNo
VGFibGU8dHlwZW5hbWUgSGFzaE1hcFR5cGU6OktleVR5cGUsIHR5cGVuYW1lIEhhc2hNYXBUeXBl
OjpWYWx1ZVR5cGUsIEtleVZhbHVlUGFpcktleUV4dHJhY3Rvcjx0eXBlbmFtZSBIYXNoTWFwVHlw
ZTo6VmFsdWVUeXBlPiwgSGFzaEFyZywgVmFsdWVUcmFpdHMsIEtleVRyYWl0c0FyZz4gSGFzaFRh
YmxlVHlwZTsKKworICAgIGluZm8uYWRkUHJpdmF0ZUJ1ZmZlcihzaXplb2YodHlwZW5hbWUgSGFz
aFRhYmxlVHlwZTo6VmFsdWVUeXBlKSAqIGhhc2hNYXAtPmNhcGFjaXR5KCkpOworCisgICAgLy8g
Q2hlY2sgaWYgdHlwZSBpcyBjb252ZXJ0aWJsZSB0byBpbnRlZ2VyIHRvIGhhbmRsZSBlbnVtIGtl
eXMgYW5kIHZhbHVlcy4KKyAgICBTZXF1ZW5jZU1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czx0
eXBlbmFtZSBDb25kaXRpb25hbDxJc0NvbnZlcnRpYmxlVG9JbnRlZ2VyPEtleUFyZz46OnZhbHVl
LCBpbnQsIEtleUFyZz46OlR5cGU+OjpyZXBvcnRNZW1vcnlVc2FnZShoYXNoTWFwLT5iZWdpbigp
LmtleXMoKSwgaGFzaE1hcC0+ZW5kKCkua2V5cygpLCBpbmZvKTsKKyAgICBTZXF1ZW5jZU1lbW9y
eUluc3RydW1lbnRhdGlvblRyYWl0czx0eXBlbmFtZSBDb25kaXRpb25hbDxJc0NvbnZlcnRpYmxl
VG9JbnRlZ2VyPE1hcHBlZEFyZz46OnZhbHVlLCBpbnQsIE1hcHBlZEFyZz46OlR5cGU+OjpyZXBv
cnRNZW1vcnlVc2FnZShoYXNoTWFwLT5iZWdpbigpLnZhbHVlcygpLCBoYXNoTWFwLT5lbmQoKS52
YWx1ZXMoKSwgaW5mbyk7CisvLyAgICBTZXF1ZW5jZU1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0
czxLZXlBcmc+OjpyZXBvcnRNZW1vcnlVc2FnZShoYXNoTWFwLT5iZWdpbigpLmtleXMoKSwgaGFz
aE1hcC0+ZW5kKCkua2V5cygpLCBpbmZvKTsKKy8vICAgIFNlcXVlbmNlTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uVHJhaXRzPE1hcHBlZEFyZz46OnJlcG9ydE1lbW9yeVVzYWdlKGhhc2hNYXAtPmJlZ2lu
KCkudmFsdWVzKCksIGhhc2hNYXAtPmVuZCgpLnZhbHVlcygpLCBpbmZvKTsKK30KKworfQorCisj
ZW5kaWYgLy8gIWRlZmluZWQoTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcF9oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAKaW5kZXgg
Zjk1MTM2NjU4MWUxYzY1ZDFmNzIwNWRjNjU2MWY0N2M5MmY0ZjJkYS4uYmJkZGM1YzFiY2M5MWNm
YWQ3ZjY5NzcwNjMyYTA0MzUyYTJmODY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY29wZWRET01EYXRhU3RvcmUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NvcGVkRE9NRGF0YVN0b3JlLmgiCiAKKyNpbmNsdWRl
ICJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNw
cAppbmRleCBkMjJlNzc1MDc1ZDM5MmU3YzQ3YWUyMzI5ZGIwZTcwMzViYjM2ZWYzLi5hMmQ1ZGY0
ZjVjNDBmMWFjMzI1MDY3OTIxNzZiYTYzYzljZDM1MDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJYUGF0aE5T
UmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtMjIxLDcgKzIyMiw3
IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjcmVhdGVSYXdUZW1wbGF0
ZSgpCiB2b2lkIFN0cmluZ0NhY2hlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6QmluZGluZyk7Ci0gICAg
aW5mby5hZGRIYXNoTWFwKG1fc3RyaW5nQ2FjaGUpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc3Ry
aW5nQ2FjaGUpOwogfQogICAgIAogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0cmlu
Z0xpc3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NTWFwLmgKaW5kZXggYTc1OThjNmM1ZTg2Y2Q1YzhhYWQyYjRjM2M1NWRmYmM5OWM3ZGMz
OS4uYjZjZTM5ZDRlNjY0ZDI3MWY2ZTJiNDNjMWYwMDFhNmJiZThmMmZiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2Vi
Q29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx2OC5oPgog
CkBAIC0xMzcsNyArMTM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QgT1ZFUlJJREUKICAgICAgICAgewogICAgICAgICAgICAgTWVtb3J5Q2xhc3NJbmZv
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpCaW5kaW5n
KTsKLSAgICAgICAgICAgIGluZm8uYWRkSGFzaE1hcChtX21hcCk7CisgICAgICAgICAgICBpbmZv
LmFkZE1lbWJlcihtX21hcCk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKaW5kZXggNGUxZTBh
MWY1Yzk5YTc3ZjQwMWE1Yzk3MmM0ZWJlM2Q3YjMyNzFhNS4uZjVjZDM4YWJkMDQ2Y2UxZGI3NTJi
N2ExNjhmOTc2MmVhZjQzMWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQZXJJc29sYXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQZXJJc29sYXRlRGF0YS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlNjcmlw
dEdDRXZlbnQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb25WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODUsOCArODYsOCBAQCB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjp0b1N0cmlu
Z1RlbXBsYXRlKCkKIHZvaWQgVjhQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFz
c0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJp
bmRpbmcpOwotICAgIGluZm8uYWRkSGFzaE1hcChtX3Jhd1RlbXBsYXRlcyk7Ci0gICAgaW5mby5h
ZGRIYXNoTWFwKG1fdGVtcGxhdGVzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3Jhd1RlbXBsYXRl
cyk7CisgICAgaW5mby5hZGRNZW1iZXIobV90ZW1wbGF0ZXMpOwogICAgIGluZm8uYWRkTWVtYmVy
KG1fc3RyaW5nQ2FjaGUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fZG9tRGF0YUxpc3QpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggNjNj
YjQyMmE5ZmY3MzNmOGJmMGFkYTY0ZjU5YzU0NTk0YmI2MTY3OC4uOTBlMTI3MTYwMjE2OTY2OWMx
MzY4NzdiYTAyOTU1ZDRiMDU2ZDliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTExMyw4ICsxMTQsOCBAQCB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnJlcG9y
dEJhc2VDbGFzc01lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeQogewogICAgIE1l
bW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlU
eXBlczo6Q1NTKTsKICAgICBpbmZvLmFkZEhhc2hDb3VudGVkU2V0KG1fc2l6ZXMpOwotICAgIGlu
Zm8uYWRkSGFzaE1hcChtX2NsaWVudHMpOwotICAgIGluZm8uYWRkSGFzaE1hcChtX2ltYWdlcyk7
IC8vIEZJWE1FOiBpbnN0cnVtZW50IEltYWdlCisgICAgaW5mby5hZGRNZW1iZXIobV9jbGllbnRz
KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2ltYWdlcyk7IC8vIEZJWE1FOiBpbnN0cnVtZW50IElt
YWdlCiB9CiAKIFBhc3NSZWZQdHI8SW1hZ2U+IENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmltYWdl
KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IGY2ZTNkYjM5Yjc1OTgyNzE1OWYxMmExYzBmYTdkMDA4NGFkMzEzNjUuLjVmYWRmMTZmMDNl
NTAxNjYxYjI2MjU5MjUwNTVmOTBjYjgyNzg3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgPHd0
Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKQEAgLTE3Myw4ICsxNzQsNyBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5TwogewogICAgIE1l
bW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlU
eXBlczo6Q1NTKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3Byb3BlcnR5U2V0KTsKLSAgICBpZiAo
bV9jc3NvbUNTU1ZhbHVlQ2xvbmVzKQotICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1hcEVu
dHJpZXMoKm1fY3Nzb21DU1NWYWx1ZUNsb25lcyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9jc3Nv
bUNTU1ZhbHVlQ2xvbmVzKTsKIH0KIAogdW5zaWduZWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpsZW5ndGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmlu
ZGV4IDBkNTIxOWI3YTk1NTI1MTk2NDRiODU0MzM1OTZlYzdkNzFjZTFlNDIuLjU0YTUzYmQzMDdl
NTcwZWE0MDEzY2UxNzljZGU2MTM1ZDczY2E4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKQEAgLTEyNiw2ICsxMjYsNyBAQAogI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9y
bVZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Rm9udEZhbWlseU5hbWVzLmgiCiAjaW5jbHVkZSAi
WE1MTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KQEAgLTI1NjksNyArMjU3MCw3IEBAIFJ1bGVTZXQ6OlJ1bGVTZXQoKQogCiBz
dGF0aWMgdm9pZCByZXBvcnRBdG9tUnVsZU1hcChNZW1vcnlDbGFzc0luZm8qIGluZm8sIGNvbnN0
IFJ1bGVTZXQ6OkF0b21SdWxlTWFwJiBhdG9taWNSdWxlTWFwKQogewotICAgIGluZm8tPmFkZEhh
c2hNYXAoYXRvbWljUnVsZU1hcCk7CisgICAgaW5mby0+YWRkTWVtYmVyKGF0b21pY1J1bGVNYXAp
OwogICAgIGZvciAoUnVsZVNldDo6QXRvbVJ1bGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYXRv
bWljUnVsZU1hcC5iZWdpbigpOyBpdCAhPSBhdG9taWNSdWxlTWFwLmVuZCgpOyArK2l0KQogICAg
ICAgICBpbmZvLT5hZGRNZW1iZXIoKml0LT5zZWNvbmQpOwogfQpAQCAtNTc4MSwyNSArNTc4Miwy
MSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5mby5hZGRNZW1iZXIobV91c2VyU3R5
bGUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc2libGluZ1J1bGVTZXQpOwogICAgIGluZm8uYWRk
TWVtYmVyKG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0KTsKLSAgICBpbmZvLmFkZEhhc2hNYXAo
bV9rZXlmcmFtZXNSdWxlTWFwKTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV9tYXRjaGVkUHJvcGVy
dGllc0NhY2hlKTsKLSAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhtX21hdGNoZWRQ
cm9wZXJ0aWVzQ2FjaGUpOworICAgIGluZm8uYWRkTWVtYmVyKG1fa2V5ZnJhbWVzUnVsZU1hcCk7
CisgICAgaW5mby5hZGRNZW1iZXIobV9tYXRjaGVkUHJvcGVydGllc0NhY2hlKTsKICAgICBpbmZv
LmFkZE1lbWJlcihtX21hdGNoZWRSdWxlcyk7CiAKICAgICBpbmZvLmFkZE1lbWJlcihtX3J1bGVM
aXN0KTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKTsKLSAg
ICBpbmZvLmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhtX3BlbmRpbmdJbWFnZVByb3BlcnRpZXMp
OworICAgIGluZm8uYWRkTWVtYmVyKG1fcGVuZGluZ0ltYWdlUHJvcGVydGllcyk7CiAgICAgaW5m
by5hZGRNZW1iZXIobV9saW5lSGVpZ2h0VmFsdWUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdmll
d3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cyk7Ci0gICAgaW5mby5hZGRIYXNoTWFwKG1f
c3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXApOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWFw
RW50cmllcyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwKTsKKyAgICBpbmZvLmFkZE1lbWJl
cihtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3N0
eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykgJiYgRU5B
QkxFKFNWRykKLSAgICBpbmZvLmFkZEhhc2hNYXAobV9wZW5kaW5nU1ZHRG9jdW1lbnRzKTsKKyAg
ICBpbmZvLmFkZE1lbWJlcihtX3BlbmRpbmdTVkdEb2N1bWVudHMpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKFNUWUxFX1NDT1BFRCkKLSAgICBpbmZvLmFkZEhhc2hNYXAobV9zY29wZWRBdXRob3JTdHls
ZXMpOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhtX3Njb3BlZEF1dGhvclN0
eWxlcyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9zY29wZWRBdXRob3JTdHlsZXMpOwogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fc2NvcGVTdGFjayk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCA4YzM5ZmFjMzcwYjQ0NmIyYmQwOWIwNTcwZDYy
YThlM2Q4YTAxNWM5Li45YjFmNTE0YjlkMTQwZjcwYmIzMWMwNjlkOTA2N2NlZTZhMzBlMWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIlN0eWxlUnVsZUltcG9ydC5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3
dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJ
bnN0cnVtZW50YXRpb25WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDk4LDcg
KzQ5OSw3IEBAIHZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjCiAgICAgaW5mby5hZGRNZW1iZXIobV9l
bmNvZGluZ0Zyb21DaGFyc2V0UnVsZSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9pbXBvcnRSdWxl
cyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9jaGlsZFJ1bGVzKTsKLSAgICBpbmZvLmFkZEhhc2hN
YXAobV9uYW1lc3BhY2VzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX25hbWVzcGFjZXMpOwogICAg
IGluZm8uYWRkTWVtYmVyKG1fY2xpZW50cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDRjODY5MDQ4ZWQwZDFjZjQ3ZjAxYTk4NzY4ODBkNjVjYWQ5N2I4OTEuLjEyMWI3ZGYyODM1
YTkwOWY5NzQ5ZGZmZTE4OTNlZTFhNmJhOTM0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMTc1LDYgKzE3NSw3IEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU4
OTgsMTcgKzU4OTksMTcgQEAgdm9pZCBEb2N1bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZE1lbWJlciht
X3htbEVuY29kaW5nKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3htbFZlcnNpb24pOwogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fY29udGVudExhbmd1YWdlKTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV9k
b2N1bWVudE5hbWVkSXRlbUNvbGxlY3Rpb25zKTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV93aW5k
b3dOYW1lZEl0ZW1Db2xsZWN0aW9ucyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kb2N1bWVudE5h
bWVkSXRlbUNvbGxlY3Rpb25zKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3dpbmRvd05hbWVkSXRl
bUNvbGxlY3Rpb25zKTsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgaW5mby5h
ZGRNZW1iZXIobV9kYXNoYm9hcmRSZWdpb25zKTsKICNlbmRpZgotICAgIGluZm8uYWRkSGFzaE1h
cChtX2Nzc0NhbnZhc0VsZW1lbnRzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2Nzc0NhbnZhc0Vs
ZW1lbnRzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2ljb25VUkxzKTsKICAgICBpbmZvLmFkZE1l
bWJlcihtX2RvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrRWxlbWVudHMpOwogICAgIGluZm8uYWRk
TWVtYmVyKG1fbWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzKTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX3ByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZEVsZW1lbnRzKTsKLSAgICBpbmZvLmFkZEhh
c2hNYXAobV9lbGVtZW50c0J5QWNjZXNzS2V5KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2VsZW1l
bnRzQnlBY2Nlc3NLZXkpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fZXZlbnRRdWV1ZSk7CiAgICAg
aW5mby5hZGRNZW1iZXIobV9tZWRpYUNhblN0YXJ0TGlzdGVuZXJzKTsKICAgICBpbmZvLmFkZE1l
bWJlcihtX3BlbmRpbmdUYXNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAppbmRleCA0Y2M4MzYxNGZkY2FmNWI5NTUwMWJiMjY4NmYzZWJlM2E0NDdiYjg4Li5iNWFj
ZjJiNTUzMWRmZjdiMGQ4ZTZmMmVmZDJmNTliMDJlMGVmNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJUZXh0
UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUlu
c3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0
aW9uSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0zNzcsNyArMzc4LDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZE1lbWJlcihtX3Jlc3BvbnNlKTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX2xhc3RDaGVja2VkUmVxdWVzdCk7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9yZXNwb25zZXMpOwotICAgIGluZm8uYWRkSGFzaE1hcChtX3BlbmRpbmdTdWJzdGl0dXRl
UmVzb3VyY2VzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3BlbmRpbmdTdWJzdGl0dXRlUmVzb3Vy
Y2VzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQpOwog
ICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzb3VyY2VzTG9hZGVkRnJvbU1lbW9yeUNhY2hlRm9yQ2xp
ZW50Tm90aWZpY2F0aW9uKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2NsaWVudFJlZGlyZWN0U291
cmNlRm9ySGlzdG9yeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiYjY4NzQwNTFiY2I5NDgxZGU0ZDBmYjRhYWU0
NmM2MjEwMjIxM2YyLi5iZTBkOWQ3OGE3ZjgyZjZmMmRkM2Q5YjEyYjBjOWNkZGUwZWI1YjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9VbnVz
ZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTg5NiwxMSArODk3
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRQcmVsb2FkU3RhdHMoKQogdm9p
ZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkxvYWRlcik7Ci0gICAg
aW5mby5hZGRIYXNoTWFwKG1fZG9jdW1lbnRSZXNvdXJjZXMpOwotICAgIGZvciAoRG9jdW1lbnRS
ZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaSA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVnaW4o
KTsgaSAhPSBtX2RvY3VtZW50UmVzb3VyY2VzLmVuZCgpOyArK2kpIHsKLSAgICAgICAgaW5mby5h
ZGRNZW1iZXIoaS0+Zmlyc3QpOwotICAgICAgICBpbmZvLmFkZE1lbWJlcihpLT5zZWNvbmQpOwot
ICAgIH0KKyAgICBpbmZvLmFkZE1lbWJlcihtX2RvY3VtZW50UmVzb3VyY2VzKTsKICAgICBpbmZv
LmFkZE1lbWJlcihtX3ZhbGlkYXRlZFVSTHMpOwogICAgIGlmIChtX3ByZWxvYWRzKQogICAgICAg
ICBpbmZvLmFkZExpc3RIYXNoU2V0KCptX3ByZWxvYWRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGMxYWYwOWQ2OWI5YzBkZTdjOGE3MmYzZTM4
ZDQ3NDdhYjg4M2QyZDAuLjEwYzllNmJiMTgzNzI0YjBiNGVjMDM5MGMyNzlhODE2ZjljMGEyYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNDUs
NiArNDUsNyBAQAogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbkhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTcxOSwxMiArNzIwLDcgQEAgTWVtb3J5Q2FjaGU6OlN0YXRp
c3RpY3MgTWVtb3J5Q2FjaGU6OmdldFN0YXRpc3RpY3MoKQogdm9pZCBNZW1vcnlDYWNoZTo6cmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
IHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJD
b3JlTWVtb3J5VHlwZXM6Ok1lbW9yeUNhY2hlU3RydWN0dXJlcyk7Ci0gICAgaW5mby5hZGRIYXNo
TWFwKG1fcmVzb3VyY2VzKTsKLSAgICBDYWNoZWRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZSA9IG1fcmVzb3VyY2VzLmVuZCgpOwotICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VNYXA6OmNvbnN0
X2l0ZXJhdG9yIGkgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpICE9IGU7ICsraSkgewotICAgICAg
ICBpbmZvLmFkZE1lbWJlcihpLT5maXJzdCk7Ci0gICAgICAgIGluZm8uYWRkTWVtYmVyKGktPnNl
Y29uZCk7Ci0gICAgfQorICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzb3VyY2VzKTsKICAgICBpbmZv
LmFkZE1lbWJlcihtX2FsbFJlc291cmNlcyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9saXZlRGVj
b2RlZFJlc291cmNlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCAzMDNkZWFhOWNiZGE3NmFmYmZj
NmM1NjIyYzA1NDc0MTQ5OTBmYzQ1Li41NDM2NDdiZTM4Yjk1Njg2MDE0YTM0OWU0YTg1ZTc1MmI0
ODZkNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlBs
YXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CkBAIC00NTEsOCArNDUyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fdXJsKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2ZpcnN0UGFydHlGb3JD
b29raWVzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2h0dHBNZXRob2QpOwotICAgIGluZm8uYWRk
SGFzaE1hcChtX2h0dHBIZWFkZXJGaWVsZHMpOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWFw
RW50cmllcyhtX2h0dHBIZWFkZXJGaWVsZHMpOworICAgIGluZm8uYWRkTWVtYmVyKG1faHR0cEhl
YWRlckZpZWxkcyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9yZXNwb25zZUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9odHRwQm9k
eSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IDI1MjFmYjEyZTE5N2ZiNDkxZTFiZmZiMTRhMzhi
ZjBhMGM2NjA3N2MuLjQ4NTY4ZWY2ZmE2OTdiNjBiYmFkZjIwOGNjMzg0NTg2YWE0ZjczMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBA
IC01NzYsOCArNTc3LDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKICAgICBpbmZvLmFkZE1l
bWJlcihtX3RleHRFbmNvZGluZ05hbWUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3VnZ2VzdGVk
RmlsZW5hbWUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1faHR0cFN0YXR1c1RleHQpOwotICAgIGlu
Zm8uYWRkSGFzaE1hcChtX2h0dHBIZWFkZXJGaWVsZHMpOwotICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkTWFwRW50cmllcyhtX2h0dHBIZWFkZXJGaWVsZHMpOworICAgIGluZm8uYWRkTWVtYmVyKG1f
aHR0cEhlYWRlckZpZWxkcyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9yZXNvdXJjZUxvYWRUaW1p
bmcpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzb3VyY2VMb2FkSW5mbyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5jcHAKaW5kZXggMjI0MjVmMGQ1NzJiZDI3YjMzMDJmZTE3NTE4MjBkNDg5ODRl
Mzk0Ny4uMzk4ZWQwZjg3NjgwNTI0NTg3MTEzYzQ5MWM0YzI2YjU0YWNjYjk4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlN0eWxlSW1hZ2Uu
aCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9NZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LmNwcAppbmRleCBiZWMxYzAwZjc3ZTUx
NmM4OTRlMGJiMmE3ZWUyZjEyZmVmMTMxZjY2Li44NmQ2ODYzOTI0MDQzMDJlYjEzNWNkNGMwZGRm
MDAyMmZlNWYzNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01l
bW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdC5jcHAKQEAgLTM3LDggKzM3LDEwIEBACiAj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVk
ZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVt
ZW50YXRpb25WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTIsNiAr
NTQsMjUgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgeworZW51bSBU
ZXN0RW51bSB7IE9ORSA9IDEsIFRXTywgVEhSRUUsIE1ZX0VOVU1fTUFYIH07Cit9CisKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxUZXN0RW51bT4gewor
ICAgIHR5cGVkZWYgSW50SGFzaDx1bnNpZ25lZD4gSGFzaDsKK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEhhc2hUcmFpdHM8VGVzdEVudW0+IDogR2VuZXJpY0hhc2hUcmFpdHM8VGVzdEVudW0+IHsK
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQg
Y29uc3RydWN0RGVsZXRlZFZhbHVlKFRlc3RFbnVtJiBzbG90KSB7IHNsb3QgPSBzdGF0aWNfY2Fz
dDxUZXN0RW51bT4oTVlfRU5VTV9NQVggKyAxKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRl
ZFZhbHVlKFRlc3RFbnVtIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSAoTVlfRU5VTV9NQVggKyAx
KTsgfQorfTsKKworfQorCituYW1lc3BhY2UgewogCiBjbGFzcyBJbnN0cnVtZW50YXRpb25UZXN0
SGVscGVyIHsKIHB1YmxpYzoKQEAgLTQ1MCw2ICs0NzEsODEgQEAgVEVTVChNZW1vcnlJbnN0cnVt
ZW50YXRpb25UZXN0LCBoYXNoU2V0V2l0aEluc3RydW1lbnRlZFR5cGUpCiAgICAgRVhQRUNUX0VR
KGNvdW50ICsgMSwgKHNpemVfdCloZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7CiB9CiAKK1RFU1Qo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgaGFzaE1hcFdpdGhOb3RJbnN0cnVtZW50ZWRLZXlz
QW5kVmFsdWVzKQoreworICAgIEluc3RydW1lbnRhdGlvblRlc3RIZWxwZXIgaGVscGVyOworCisg
ICAgdHlwZWRlZiBIYXNoTWFwPGludCwgaW50PiBJbnRUb0ludE1hcDsKKyAgICBPd25QdHI8SW50
VG9JbnRNYXA+IHZhbHVlID0gYWRvcHRQdHIobmV3IEludFRvSW50TWFwKCkpOworICAgIHNpemVf
dCBjb3VudCA9IDEwOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDw9IGNvdW50OyArK2kpCisg
ICAgICAgIHZhbHVlLT5zZXQoaSwgaSk7CisgICAgSW5zdHJ1bWVudGVkT3duZXI8SW50VG9JbnRN
YXAqID4gcm9vdCh2YWx1ZS5nZXQoKSk7CisgICAgaGVscGVyLmFkZFJvb3RPYmplY3Qocm9vdCk7
CisgICAgRVhQRUNUX0VRKHNpemVvZihJbnRUb0ludE1hcCkgKyBzaXplb2YoSW50VG9JbnRNYXA6
OlZhbHVlVHlwZSkgKiB2YWx1ZS0+Y2FwYWNpdHkoKSwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFs
bFR5cGVzKCkpOworICAgIEVYUEVDVF9FUSgxLCBoZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7Cit9
CisKK1RFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgaGFzaE1hcFdpdGhJbnN0cnVtZW50
ZWRLZXlzKQoreworICAgIEluc3RydW1lbnRhdGlvblRlc3RIZWxwZXIgaGVscGVyOworCisgICAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgaW50PiBTdHJpbmdUb0ludE1hcDsKKyAgICBPd25QdHI8
U3RyaW5nVG9JbnRNYXA+IHZhbHVlID0gYWRvcHRQdHIobmV3IFN0cmluZ1RvSW50TWFwKCkpOwor
ICAgIGludCBjb3VudCA9IDEwOworICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGNvdW50OyArK2kp
CisgICAgICAgIHZhbHVlLT5zZXQoU3RyaW5nOjpudW1iZXIoaSksIGkpOworICAgIEluc3RydW1l
bnRlZE93bmVyPFN0cmluZ1RvSW50TWFwKiA+IHJvb3QodmFsdWUuZ2V0KCkpOworICAgIGhlbHBl
ci5hZGRSb290T2JqZWN0KHJvb3QpOworICAgIEVYUEVDVF9FUShzaXplb2YoU3RyaW5nVG9JbnRN
YXApICsgc2l6ZW9mKFN0cmluZ1RvSW50TWFwOjpWYWx1ZVR5cGUpICogdmFsdWUtPmNhcGFjaXR5
KCkgKyBzaXplb2YoU3RyaW5nSW1wbCkgKiB2YWx1ZS0+c2l6ZSgpLCBoZWxwZXIucmVwb3J0ZWRT
aXplRm9yQWxsVHlwZXMoKSk7CisgICAgRVhQRUNUX0VRKGNvdW50ICsgMSwgaGVscGVyLnZpc2l0
ZWRPYmplY3RzKCkpOworfQorCitURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIGhhc2hN
YXBXaXRoSW5zdHJ1bWVudGVkVmFsdWVzKQoreworICAgIEluc3RydW1lbnRhdGlvblRlc3RIZWxw
ZXIgaGVscGVyOworCisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgU3RyaW5nPiBJbnRUb1N0cmlu
Z01hcDsKKyAgICBPd25QdHI8SW50VG9TdHJpbmdNYXA+IHZhbHVlID0gYWRvcHRQdHIobmV3IElu
dFRvU3RyaW5nTWFwKCkpOworICAgIGludCBjb3VudCA9IDEwOworICAgIGZvciAoaW50IGkgPSAx
OyBpIDw9IGNvdW50OyArK2kpCisgICAgICAgIHZhbHVlLT5zZXQoaSwgU3RyaW5nOjpudW1iZXIo
aSkpOworICAgIEluc3RydW1lbnRlZE93bmVyPEludFRvU3RyaW5nTWFwKiA+IHJvb3QodmFsdWUu
Z2V0KCkpOworICAgIGhlbHBlci5hZGRSb290T2JqZWN0KHJvb3QpOworICAgIEVYUEVDVF9FUShz
aXplb2YoSW50VG9TdHJpbmdNYXApICsgc2l6ZW9mKEludFRvU3RyaW5nTWFwOjpWYWx1ZVR5cGUp
ICogdmFsdWUtPmNhcGFjaXR5KCkgKyBzaXplb2YoU3RyaW5nSW1wbCkgKiB2YWx1ZS0+c2l6ZSgp
LCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgRVhQRUNUX0VRKGNvdW50
ICsgMSwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOworfQorCitURVNUKE1lbW9yeUluc3RydW1l
bnRhdGlvblRlc3QsIGhhc2hNYXBXaXRoSW5zdHJ1bWVudGVkS2V5c0FuZFZhbHVlcykKK3sKKyAg
ICBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKKworICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gU3RyaW5nVG9TdHJpbmdNYXA7CisgICAgT3duUHRyPFN0cmluZ1Rv
U3RyaW5nTWFwPiB2YWx1ZSA9IGFkb3B0UHRyKG5ldyBTdHJpbmdUb1N0cmluZ01hcCgpKTsKKyAg
ICBpbnQgY291bnQgPSAxMDsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8PSBjb3VudDsgKytpKQor
ICAgICAgICB2YWx1ZS0+c2V0KFN0cmluZzo6bnVtYmVyKGNvdW50ICsgaSksIFN0cmluZzo6bnVt
YmVyKGkpKTsKKyAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmdUb1N0cmluZ01hcCogPiByb290
KHZhbHVlLmdldCgpKTsKKyAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChyb290KTsKKyAgICBFWFBF
Q1RfRVEoc2l6ZW9mKFN0cmluZ1RvU3RyaW5nTWFwKSArIHNpemVvZihTdHJpbmdUb1N0cmluZ01h
cDo6VmFsdWVUeXBlKSAqIHZhbHVlLT5jYXBhY2l0eSgpICsgMiAqIHNpemVvZihTdHJpbmdJbXBs
KSAqIHZhbHVlLT5zaXplKCksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAg
ICBFWFBFQ1RfRVEoMiAqIGNvdW50ICsgMSwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOworfQor
CitURVNUKE1lbW9yeUluc3RydW1lbnRhdGlvblRlc3QsIGhhc2hNYXBXaXRoV251bUtleXNBbmRJ
bnN0cnVtZW50ZWRWYWx1ZXMpCit7CisgICAgSW5zdHJ1bWVudGF0aW9uVGVzdEhlbHBlciBoZWxw
ZXI7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8VGVzdEVudW0sIFN0cmluZz4gRW51bVRvU3RyaW5n
TWFwOworICAgIE93blB0cjxFbnVtVG9TdHJpbmdNYXA+IHZhbHVlID0gYWRvcHRQdHIobmV3IEVu
dW1Ub1N0cmluZ01hcCgpKTsKKyAgICBpbnQgY291bnQgPSBNWV9FTlVNX01BWDsKKyAgICBmb3Ig
KGludCBpID0gT05FOyBpIDw9IGNvdW50OyArK2kpCisgICAgICAgIHZhbHVlLT5zZXQoc3RhdGlj
X2Nhc3Q8VGVzdEVudW0+KGkpLCBTdHJpbmc6Om51bWJlcihpKSk7CisgICAgSW5zdHJ1bWVudGVk
T3duZXI8RW51bVRvU3RyaW5nTWFwKiA+IHJvb3QodmFsdWUuZ2V0KCkpOworICAgIGhlbHBlci5h
ZGRSb290T2JqZWN0KHJvb3QpOworICAgIEVYUEVDVF9FUShzaXplb2YoRW51bVRvU3RyaW5nTWFw
KSArIHNpemVvZihFbnVtVG9TdHJpbmdNYXA6OlZhbHVlVHlwZSkgKiB2YWx1ZS0+Y2FwYWNpdHko
KSArIHNpemVvZihTdHJpbmdJbXBsKSAqIHZhbHVlLT5zaXplKCksIGhlbHBlci5yZXBvcnRlZFNp
emVGb3JBbGxUeXBlcygpKTsKKyAgICBFWFBFQ1RfRVEoY291bnQgKyAxLCBoZWxwZXIudmlzaXRl
ZE9iamVjdHMoKSk7Cit9CisKIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgYXJyYXlC
dWZmZXIpCiB7CiAgICAgSW5zdHJ1bWVudGF0aW9uVGVzdEhlbHBlciBoZWxwZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166456</attachid>
            <date>2012-10-01 05:32:53 -0700</date>
            <delta_ts>2012-10-01 07:21:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98005-20121001163205.patch</filename>
            <type>text/plain</type>
            <size>41530</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE0Zjk4OWUzNGEwNWZlZGM0OTFhY2Uz
NjEzZGUzZmRlOTNhYTY3MzcuLjg2NWFlZjIwMThlNTg1MTdhNjFiY2YxY2FmMTUzMWMyYWUyMDMy
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTAtMDEgIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBtZW1v
cnkgaW5zdHJ1bWVudGF0aW9uIGZvciBIYXNoTWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEV4dHJhY3RlZCBIYXNoTWFwIG1lbW9yeSBpbnN0cnVtZW50
YXRpb24gaW50byBpdHMgb3duIGZpbGUuIFRoZSBtYXAncyBjb250ZW50CisgICAgICAgIGVsZW1l
bnRzIHdpbGwgYmUgYXV0b21hdGljYWxseSB0cmF2ZXJzZWQgaWYgdGhlaXIgdHlwZXMgYXJlIHN1
cHBvcnRlZAorICAgICAgICBieSB0aGUgbWVtb3J5IGluc3RydW1lbnRhdGlvbi4gTm8gbmVlZCB0
byBjYWxsIHNwZWNpYWwgbWV0aG9kIGZvciBoYXNoIG1hcAorICAgICAgICBmaWVsZHMgYW55IG1v
cmUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdURi5neXBp
OgorICAgICAgICAqIFdURi5wcm86CisgICAgICAgICogV1RGLnZjcHJvai9XVEYudmNwcm9qOgor
ICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKE1lbW9yeUlu
c3RydW1lbnRhdGlvbik6CisgICAgICAgIChXVEYpOgorICAgICAgICAqIHd0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb25IYXNoTWFwLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdU
Rjo6U2VxdWVuY2VNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OnJlcG9ydE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKFdURjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorCiAyMDEyLTA5LTMwICBNYXJr
IEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAg
SGFzVHJpdmlhbENvbnN0cnVjdG9yL0Rlc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjY3ZTQ4M2Iw
MDkxOTdmNmU5NDgyNTQ2MTc2N2E3YWUyZjkwODFjLi5jOWQ5Yzc3MjZkM2NkYWRlOGEwMzNhNWJj
NTFlODBlZDY5MzZjMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMTAtMDEg
IFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogcHJvdmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGZvciBIYXNoTWFwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODAwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgYWxsIGNh
bGwgc2l0ZXMgb2YgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoTWFwIHRvIHVzZSBnZW5l
cmljCisgICAgICAgIG1ldGhvZCBvZiByZXBvcnRpbmcgbWVtb3J5IGZvb3RwcmludCBpbnN0ZWFk
LiAKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0cmlu
Z0NhY2hlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01N
YXAuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NJbWFnZUdlbmVyYXRvclZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZSk6CisgICAg
ICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlcG9ydE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNz
cy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENv
bnRlbnRzOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZXBvcnRNZW1vcnlVc2Fn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnJlcG9ydE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpyZXBvcnRNZW1vcnlVc2Fn
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwOgorCiAyMDEyLTA5LTMwICBHbGVubiBBZGFtcyAgPGdsZW5uQHNreW5hdi5jb20+CiAKICAg
ICAgICAgU2lnbiBpbiBmcm9udCBvZiBrZXlmcmFtZSBzZWxlY3RvciBjYXVzZXMgc3R5bGVzaGVl
dCBwYXJzaW5nIHRvIGFib3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDFkZWNjZTJj
YTVkY2EzYTAyOWQxYTEzY2Q1MWI5NjY1MGQ5MzhkZmYuLjJlZWJkN2MwYzE2MjEyZjFmYjdhNjg5
ZDM5YTY2MDM2MzMwYmExNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMTAtMDEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9u
IGZvciBIYXNoTWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05ODAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIHVuaXQgdGVzdHMgZm9yIEhhc2hNYXAgbWVtb3J5IGluc3RydW1lbnRhdGlvbi4K
KworICAgICAgICAqIHRlc3RzL01lbW9yeUluc3RydW1lbnRhdGlvblRlc3QuY3BwOgorICAgICAg
ICAoV1RGKToKKwogMjAxMi0wOS0yOCAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQWRkIGRyYWdnYWJsZSBwcm9wZXJ0eSB0byBXZWJEcmFnZ2FibGVSZWdpb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV1RGL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMGNlYjlmZGVlNGRhNjM0YjNlZmY3MzViOTQ1NmJlZTgx
OThkYmYzOS4uMTNiNTk0YTEzYzBmNWU1N2ZhNDE3MTgzOTVlZDI2NjcxNWNjOGZhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XVEYvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtODEsNiArODEsNyBAQCB3dGZfc291cmNlcyArPSBcCiAgICAg
U291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRh
dGlvbkFycmF5QnVmZmVyVmlldy5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVt
ZW50YXRpb25IYXNoTWFwLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRh
dGlvbkhhc2hTZXQuaCBcCiAgICAgU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
VmVjdG9yLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvV1RGLmd5cGkgYi9Tb3VyY2UvV1RGL1dURi5neXBpCmluZGV4IGRlYWM1
NzE5YzdhZTViOTljMmQxOGNiNDhiMmM1NTQ2MjJiZDhiMTQuLjFmOTdmZTBjNTY4OGRmMjI0N2Ey
NTUwMGViOWQ3YTQwNTlkYmNiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLmd5cGkKKysr
IGIvU291cmNlL1dURi9XVEYuZ3lwaQpAQCAtNTEsNiArNTEsNyBAQAogICAgICAgICAgICAgJ3d0
Zi9NYXRoRXh0cmFzLmgnLAogICAgICAgICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24u
aCcsCiAgICAgICAgICAgICAnd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmll
dy5oJywKKyAgICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oJywK
ICAgICAgICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oJywKICAgICAg
ICAgICAgICd3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmgnLAogICAgICAgICAgICAg
J3d0Zi9NZXNzYWdlUXVldWUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5wcm8gYi9T
b3VyY2UvV1RGL1dURi5wcm8KaW5kZXggN2ExMGJlZmUzM2Q0ZThmNTZiOWU3ZGU1MGMyOTYyMzU5
Y2U4NTQ3Yy4uN2YyY2M2MDJlMTZjNThmMjExNmQzZjAyNTU4NjJjZTE2NGFlN2VlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYucHJvCisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpAQCAtODgs
NiArODgsNyBAQCBIRUFERVJTICs9IFwKICAgICBNZWRpYVRpbWUuaCBcCiAgICAgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmggXAogICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkFycmF5QnVmZmVyVmll
dy5oIFwKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmggXAogICAgIE1lbW9yeUlu
c3RydW1lbnRhdGlvbkhhc2hTZXQuaCBcCiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9y
LmggXAogICAgIE1lc3NhZ2VRdWV1ZS5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZj
cHJvai9XVEYudmNwcm9qIGIvU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKaW5kZXgg
YjkyZTc3ODkwMzUzZmM4MTRiZDFhMDllYTI0Y2Y3ZWY1MzhkMDk5Ni4uMmJkYTY4NzUyMjE3ZGYx
N2MzNDhhNGQ3OTIzZDZiMmQ4NTVkNDFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYudmNw
cm9qL1dURi52Y3Byb2oKKysrIGIvU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKQEAg
LTkwOSw2ICs5MDksMTAgQEAKIAkJCT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkgICAgICAgIFJl
bGF0aXZlUGF0aD0iLi5cd3RmXE1lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaCIKKwkJCT4K
KwkJPC9GaWxlPgorCQk8RmlsZQogCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cd3RmXE1lbW9y
eUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaCIKIAkJCT4KIAkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTczYjFjODE2NDE2ZjliOTM5MDUwZjY0
MTk2ZjM1YTFmMmEyYmJjMy4uZTdlNDkwMzFjOWVlYjc3MTM3YzExMzJkMzcxYjFkMDg1ODcxMmQz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzUsNiAr
Mjc1LDcgQEAKIAkJQThBNDc0OEMxNTFBODI2NDAwNDEyM0ZGIC8qIGNvbmZpZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDc0OEIxNTFBODI2NDAw
NDEyM0ZGIC8qIGNvbmZpZy5oICovOyB9OwogCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyog
TWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovOyB9OwogCQlD
RDU0OTdBRDE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDU0OTdBQjE1ODU3RDAzMDBCNUJDMzAgLyog
TWVkaWFUaW1lLmggKi87IH07CisJCUYzNTI1RTQ2MTYxOUE0RUUwMDI3OEJDMSAvKiBNZW1vcnlJ
bnN0cnVtZW50YXRpb25IYXNoTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGMzUyNUU0NTE2MTlBNEVFMDAyNzhCQzEgLyogTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uSGFzaE1hcC5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwpAQCAtNTU1LDYgKzU1Niw3IEBA
CiAJCUE4QTQ3NDhCMTUxQTgyNjQwMDQxMjNGRiAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjM1MjVFNDUxNjE5QTRFRTAwMjc4QkMxIC8qIE1lbW9yeUluc3RydW1l
bnRhdGlvbkhhc2hNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5
SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyog
RW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC02OTcsNiArNjk5LDcgQEAKIAkJCQlDRDU0OTdBQjE1
ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmggKi8sCiAJCQkJNEYxRDExNTMxNUZGMTFCRTAw
MjZFOTA4IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovLAogCQkJCTRGRDg1NTQ2MTYxMzNF
MEUwMEM1QjcwNCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaCAqLywK
KwkJCQlGMzUyNUU0NTE2MTlBNEVFMDAyNzhCQzEgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFz
aE1hcC5oICovLAogCQkJCTRGMUIyREI1MTYwQjQ0QUEwMDU4NjU1OSAvKiBNZW1vcnlJbnN0cnVt
ZW50YXRpb25IYXNoU2V0LmggKi8sCiAJCQkJNEZDQjcxMDkxNjBBMUEwNzAwODQyNUVDIC8qIE1l
bW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oICovLAogCQkJCUE4QTQ3MkNDMTUxQTgyNUIwMDQx
MjNGRiAvKiBNZXNzYWdlUXVldWUuaCAqLywKQEAgLTExNTMsNiArMTE1Niw3IEBACiAJCQkJNEZD
QjcxMEExNjBBMUEwNzAwODQyNUVDIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEYxQjJEQjYxNjBCNDRBQTAwNTg2NTU5IC8qIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbkhhc2hTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGRDg1NTQ3MTYxMzNFMEUw
MEM1QjcwNCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUYzNTI1RTQ2MTYxOUE0RUUwMDI3OEJDMSAvKiBNZW1vcnlJbnN0cnVtZW50
YXRpb25IYXNoTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggNjliMDIyNTRiMzdhZmE3MjBiMjU2MjY3YzI4OGM1OGYxZWVlNWM4Zi4u
YjE0OTZjODA3YzgwYWY0ZmY1MzdiMzk1MTQ1ODQzMWVjMGU5NDYyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTE1NiwxMCArMTU2LDggQEAgcHJpdmF0ZToKICAg
ICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3QoY29uc3QgVCYg
dCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsgT3duaW5nVHJhaXRzPFQ+Ojph
ZGRPYmplY3QodGhpcywgdCwgb3duZXJPYmplY3RUeXBlKTsgfQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmLCBNZW1v
cnlPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEhhc2hDb3VudGVkU2V0VHlwZT4gdm9pZCBhZGRIYXNoQ291bnRlZFNldChjb25zdCBI
YXNoQ291bnRlZFNldFR5cGUmLCBNZW1vcnlPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0g
ZmFsc2UpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPiB2b2lkIGFkZElu
c3RydW1lbnRlZENvbGxlY3Rpb24oY29uc3QgQ29sbGVjdGlvblR5cGUmLCBNZW1vcnlPYmplY3RU
eXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1h
cFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBUeXBlJiwgTWVt
b3J5T2JqZWN0VHlwZSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFwVHlwZT4gdm9pZCBhZGRJ
bnN0cnVtZW50ZWRNYXBWYWx1ZXMoY29uc3QgTWFwVHlwZSYsIE1lbW9yeU9iamVjdFR5cGUpOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNl
dChjb25zdCBMaXN0SGFzaFNldFR5cGUmLCBNZW1vcnlPYmplY3RUeXBlLCBib29sIGNvbnRlbnRP
bmx5ID0gZmFsc2UpOwogICAgIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGNvbnN0JiBi
dWZmZXIsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBzaXplX3Qgc2l6ZSkKICAg
ICB7CkBAIC0yMTQsMTAgKzIxMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENvbGxlY3Rpb25F
bGVtZW50cyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopIHsgfQogICAgIHZvaWQgYWRkQ29sbGVj
dGlvbkVsZW1lbnRzKGNvbnN0IGludCosIGNvbnN0IGludCopIHsgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgSGFzaE1hcFR5cGU+IHZvaWQgYWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYg
bWFwKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoTWFwKG1hcCwgbV9vYmplY3RU
eXBlLCB0cnVlKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFk
ZEhhc2hDb3VudGVkU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb24tPmFkZEhhc2hNYXAoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgTWFwVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNv
bnN0IE1hcFR5cGUmIG1hcCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVu
dGVkTWFwRW50cmllcyhtYXAsIG1fb2JqZWN0VHlwZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiBt
YXApIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyht
YXAsIG1fb2JqZWN0VHlwZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4g
dm9pZCBhZGRIYXNoQ291bnRlZFNldChjb25zdCBIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoQ291bnRlZFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1
ZSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+IHZvaWQgYWRkTGlz
dEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPmFkZExpc3RIYXNoU2V0KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHZv
aWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGNvbnN0JiBidWZmZXIsIHNpemVfdCBzaXplKSB7
IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRSYXdCdWZmZXIoYnVmZmVyLCBtX29iamVjdFR5
cGUsIHNpemUpOyB9CiAgICAgdm9pZCBhZGRQcml2YXRlQnVmZmVyKHNpemVfdCBzaXplKSB7IG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5jb3VudE9iamVjdFNpemUobV9vYmplY3RUeXBlLCBzaXpl
KTsgfQpAQCAtMjcwLDEyICsyNjUsMTIgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFk
ZE9iamVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnkKICAgICBh
ZGRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0VHlwZSwgYnlQb2ludGVyKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgSGFzaE1hcFR5cGU+Ci12b2lkIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6YWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYgaGFzaE1hcCwgTWVtb3J5T2Jq
ZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBIYXNoQ291bnRlZFNldFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRk
SGFzaENvdW50ZWRTZXQoY29uc3QgSGFzaENvdW50ZWRTZXRUeXBlJiBoYXNoQ291bnRlZFNldCwg
TWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCiB7Ci0g
ICAgaWYgKHZpc2l0ZWQoJmhhc2hNYXApKQorICAgIGlmICh2aXNpdGVkKCZoYXNoQ291bnRlZFNl
dCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBl
LCBjYWxjdWxhdGVDb250YWluZXJTaXplKGhhc2hNYXAsIGNvbnRlbnRPbmx5KSk7CisgICAgY291
bnRPYmplY3RTaXplKG93bmVyT2JqZWN0VHlwZSwgY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShoYXNo
Q291bnRlZFNldCwgY29udGVudE9ubHkpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVj
dGlvblR5cGU+CkBAIC0yODksMjQgKzI4NCw2IEBAIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjphZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsCiAg
ICAgICAgIGFkZE9iamVjdCgqaSwgb3duZXJPYmplY3RUeXBlKTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgTWFwVHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50
ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9i
amVjdFR5cGUpCi17Ci0gICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bWFwLmVuZCgpOwotICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaSA9
IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7Ci0gICAgICAgIGFkZE9iamVjdChpLT5maXJz
dCwgb3duZXJPYmplY3RUeXBlKTsKLSAgICAgICAgYWRkT2JqZWN0KGktPnNlY29uZCwgb3duZXJP
YmplY3RUeXBlKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1hcFR5cGU+Ci12b2lk
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNvbnN0IE1h
cFR5cGUmIG1hcCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCi17Ci0gICAgdHlw
ZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwotICAgIGZvciAo
dHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaSA9IG1hcC5iZWdpbigpOyBpICE9IGVu
ZDsgKytpKQotICAgICAgICBhZGRPYmplY3QoaS0+c2Vjb25kLCBvd25lck9iamVjdFR5cGUpOwot
fQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+CiB2b2lkIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6YWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBoYXNoU2V0
LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKIHsK
QEAgLTMzNCw2ICszMTEsOSBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6SW5zdHJ1bWVu
dGVkUG9pbnRlcjxUPjo6cHJvY2VzcyhNZW1vcnlJbnN0cnVtZW50YXRpbwogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBjbGFzcyBWZWN0b3I7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2Uo
Y29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiogY29uc3QmLCBNZW1vcnlPYmplY3RJbmZv
Kik7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBl
bmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0
c0FyZz4gY2xhc3MgSGFzaE1hcDsKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUg
TWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVu
YW1lIE1hcHBlZFRyYWl0c0FyZz4gdm9pZCByZXBvcnRNZW1vcnlVc2FnZShjb25zdCBIYXNoTWFw
PEtleUFyZywgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0Fy
Zz4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0SW5mbyopOworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAog
I2VuZGlmIC8vICFkZWZpbmVkKE1lbW9yeUluc3RydW1lbnRhdGlvbl9oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oIGIvU291cmNlL1dU
Ri93dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlNDAxZWVl
NmEzMWE1YmMyNTY2YWMzMzNhOGUyOWFlNTAyYmY5OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmgKQEAgLTAsMCArMSw3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcF9oCisjZGVmaW5lIE1lbW9yeUlu
c3RydW1lbnRhdGlvbkhhc2hNYXBfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvVHlwZVRyYWl0cy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgS2V5VHlwZT4KK3N0cnVjdCBTZXF1ZW5jZU1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0
cyB7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEk+IHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKEkgaXRlcmF0b3IsIEkgZW5kLCBNZW1vcnlDbGFzc0luZm8mIGluZm8pCisgICAgeworICAg
ICAgICBpbmZvLmFkZENvbGxlY3Rpb25FbGVtZW50cyhpdGVyYXRvciwgZW5kKTsKKyAgICB9Cit9
OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBTZXF1ZW5jZU1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0
czxpbnQ+IHsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgST4gc3RhdGljIHZvaWQgcmVwb3J0TWVt
b3J5VXNhZ2UoSSwgSSwgTWVtb3J5Q2xhc3NJbmZvJikgeyB9Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBTZXF1ZW5jZU1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czx2b2lkKj4geworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBJPiBzdGF0aWMgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShJLCBJLCBN
ZW1vcnlDbGFzc0luZm8mKSB7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlw
ZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcs
IHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KK3ZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoY29uc3Qg
SGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRU
cmFpdHNBcmc+KiBjb25zdCYgaGFzaE1hcCwgTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCBoYXNo
TWFwKTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtl
eVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPiBIYXNoTWFwVHlwZTsKKworICAgIHR5cGVkZWYg
SGFzaE1hcFZhbHVlVHJhaXRzPEtleUFyZywgTWFwcGVkQXJnPiBWYWx1ZVRyYWl0czsKKyAgICB0
eXBlZGVmIEhhc2hUYWJsZTx0eXBlbmFtZSBIYXNoTWFwVHlwZTo6S2V5VHlwZSwgdHlwZW5hbWUg
SGFzaE1hcFR5cGU6OlZhbHVlVHlwZSwgS2V5VmFsdWVQYWlyS2V5RXh0cmFjdG9yPHR5cGVuYW1l
IEhhc2hNYXBUeXBlOjpWYWx1ZVR5cGU+LCBIYXNoQXJnLCBWYWx1ZVRyYWl0cywgS2V5VHJhaXRz
QXJnPiBIYXNoVGFibGVUeXBlOworCisgICAgaW5mby5hZGRQcml2YXRlQnVmZmVyKHNpemVvZih0
eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGUpICogaGFzaE1hcC0+Y2FwYWNpdHkoKSk7
CisKKyAgICAvLyBDaGVjayBpZiB0eXBlIGlzIGNvbnZlcnRpYmxlIHRvIGludGVnZXIgdG8gaGFu
ZGxlIGVudW0ga2V5cyBhbmQgdmFsdWVzLgorICAgIFNlcXVlbmNlTWVtb3J5SW5zdHJ1bWVudGF0
aW9uVHJhaXRzPHR5cGVuYW1lIENvbmRpdGlvbmFsPElzQ29udmVydGlibGVUb0ludGVnZXI8S2V5
QXJnPjo6dmFsdWUsIGludCwgS2V5QXJnPjo6VHlwZT46OnJlcG9ydE1lbW9yeVVzYWdlKGhhc2hN
YXAtPmJlZ2luKCkua2V5cygpLCBoYXNoTWFwLT5lbmQoKS5rZXlzKCksIGluZm8pOworICAgIFNl
cXVlbmNlTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzPHR5cGVuYW1lIENvbmRpdGlvbmFsPElz
Q29udmVydGlibGVUb0ludGVnZXI8TWFwcGVkQXJnPjo6dmFsdWUsIGludCwgTWFwcGVkQXJnPjo6
VHlwZT46OnJlcG9ydE1lbW9yeVVzYWdlKGhhc2hNYXAtPmJlZ2luKCkudmFsdWVzKCksIGhhc2hN
YXAtPmVuZCgpLnZhbHVlcygpLCBpbmZvKTsKK30KKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NvcGVkRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAKaW5kZXggZjk1MTM2NjU4MWUxYzY1ZDFm
NzIwNWRjNjU2MWY0N2M5MmY0ZjJkYS4uYmJkZGM1YzFiY2M5MWNmYWQ3ZjY5NzcwNjMyYTA0MzUy
YTJmODY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NvcGVkRE9N
RGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY29wZWRET01E
YXRhU3RvcmUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU2NvcGVkRE9NRGF0YVN0b3JlLmgiCiAKKyNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCBkMjJlNzc1MDc1
ZDM5MmU3YzQ3YWUyMzI5ZGIwZTcwMzViYjM2ZWYzLi5hMmQ1ZGY0ZjVjNDBmMWFjMzI1MDY3OTIx
NzZiYTYzYzljZDM1MDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJYUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5j
bHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtMjIxLDcgKzIyMiw3IEBAIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjcmVhdGVSYXdUZW1wbGF0ZSgpCiB2b2lkIFN0cmluZ0Nh
Y2hlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRo
aXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6QmluZGluZyk7Ci0gICAgaW5mby5hZGRIYXNoTWFwKG1f
c3RyaW5nQ2FjaGUpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc3RyaW5nQ2FjaGUpOwogfQogICAg
IAogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0cmluZ0xpc3Qodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01NYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgKaW5kZXgg
YTc1OThjNmM1ZTg2Y2Q1YzhhYWQyYjRjM2M1NWRmYmM5OWM3ZGMzOS4uYjZjZTM5ZDRlNjY0ZDI3
MWY2ZTJiNDNjMWYwMDFhNmJiZThmMmZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01NYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TU1hcC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx2OC5oPgogCkBAIC0xMzcsNyArMTM4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QgT1ZFUlJJREUK
ICAgICAgICAgewogICAgICAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpCaW5kaW5nKTsKLSAgICAgICAgICAgIGlu
Zm8uYWRkSGFzaE1hcChtX21hcCk7CisgICAgICAgICAgICBpbmZvLmFkZE1lbWJlcihtX21hcCk7
CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKaW5kZXggNGUxZTBhMWY1Yzk5YTc3ZjQwMWE1Yzk3
MmM0ZWJlM2Q3YjMyNzFhNS4uZjVjZDM4YWJkMDQ2Y2UxZGI3NTJiN2ExNjhmOTc2MmVhZjQzMWMy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlNjcmlwdEdDRXZlbnQuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODUsOCArODYsOCBAQCB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjp0b1N0cmluZ1RlbXBsYXRlKCkKIHZvaWQg
VjhQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJpbmRpbmcpOwotICAgIGluZm8u
YWRkSGFzaE1hcChtX3Jhd1RlbXBsYXRlcyk7Ci0gICAgaW5mby5hZGRIYXNoTWFwKG1fdGVtcGxh
dGVzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3Jhd1RlbXBsYXRlcyk7CisgICAgaW5mby5hZGRN
ZW1iZXIobV90ZW1wbGF0ZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3RyaW5nQ2FjaGUpOwog
ICAgIGluZm8uYWRkTWVtYmVyKG1fZG9tRGF0YUxpc3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggNjNjYjQyMmE5ZmY3MzNmOGJmMGFk
YTY0ZjU5YzU0NTk0YmI2MTY3OC4uOTBlMTI3MTYwMjE2OTY2OWMxMzY4NzdiYTAyOTU1ZDRiMDU2
ZDliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorI2lu
Y2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMyw4ICsxMTQs
OCBAQCB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnJlcG9ydEJhc2VDbGFzc01lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeQogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKICAgICBp
bmZvLmFkZEhhc2hDb3VudGVkU2V0KG1fc2l6ZXMpOwotICAgIGluZm8uYWRkSGFzaE1hcChtX2Ns
aWVudHMpOwotICAgIGluZm8uYWRkSGFzaE1hcChtX2ltYWdlcyk7IC8vIEZJWE1FOiBpbnN0cnVt
ZW50IEltYWdlCisgICAgaW5mby5hZGRNZW1iZXIobV9jbGllbnRzKTsKKyAgICBpbmZvLmFkZE1l
bWJlcihtX2ltYWdlcyk7IC8vIEZJWE1FOiBpbnN0cnVtZW50IEltYWdlCiB9CiAKIFBhc3NSZWZQ
dHI8SW1hZ2U+IENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmltYWdlKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGY2ZTNkYjM5Yjc1OTgy
NzE1OWYxMmExYzBmYTdkMDA4NGFkMzEzNjUuLjVmYWRmMTZmMDNlNTAxNjYxYjI2MjU5MjUwNTVm
OTBjYjgyNzg3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU3R5
bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb25IYXNoTWFwLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTE3Myw4ICsxNzQs
NyBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5TwogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKICAgICBp
bmZvLmFkZE1lbWJlcihtX3Byb3BlcnR5U2V0KTsKLSAgICBpZiAobV9jc3NvbUNTU1ZhbHVlQ2xv
bmVzKQotICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMoKm1fY3Nzb21DU1NW
YWx1ZUNsb25lcyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9jc3NvbUNTU1ZhbHVlQ2xvbmVzKTsK
IH0KIAogdW5zaWduZWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpsZW5ndGgoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDBkNTIxOWI3YTk1NTI1
MTk2NDRiODU0MzM1OTZlYzdkNzFjZTFlNDIuLjU0YTUzYmQzMDdlNTcwZWE0MDEzY2UxNzljZGU2
MTM1ZDczY2E4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTEyNiw2
ICsxMjYsNyBAQAogI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0Rm9udEZhbWlseU5hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNs
dWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9N
ZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvblZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTI1
NjksNyArMjU3MCw3IEBAIFJ1bGVTZXQ6OlJ1bGVTZXQoKQogCiBzdGF0aWMgdm9pZCByZXBvcnRB
dG9tUnVsZU1hcChNZW1vcnlDbGFzc0luZm8qIGluZm8sIGNvbnN0IFJ1bGVTZXQ6OkF0b21SdWxl
TWFwJiBhdG9taWNSdWxlTWFwKQogewotICAgIGluZm8tPmFkZEhhc2hNYXAoYXRvbWljUnVsZU1h
cCk7CisgICAgaW5mby0+YWRkTWVtYmVyKGF0b21pY1J1bGVNYXApOwogICAgIGZvciAoUnVsZVNl
dDo6QXRvbVJ1bGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYXRvbWljUnVsZU1hcC5iZWdpbigp
OyBpdCAhPSBhdG9taWNSdWxlTWFwLmVuZCgpOyArK2l0KQogICAgICAgICBpbmZvLT5hZGRNZW1i
ZXIoKml0LT5zZWNvbmQpOwogfQpAQCAtNTc4MSwyNSArNTc4MiwyMSBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiAgICAgaW5mby5hZGRNZW1iZXIobV91c2VyU3R5bGUpOwogICAgIGluZm8uYWRk
TWVtYmVyKG1fc2libGluZ1J1bGVTZXQpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdW5jb21tb25B
dHRyaWJ1dGVSdWxlU2V0KTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV9rZXlmcmFtZXNSdWxlTWFw
KTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV9tYXRjaGVkUHJvcGVydGllc0NhY2hlKTsKLSAgICBp
bmZvLmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhtX21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwor
ICAgIGluZm8uYWRkTWVtYmVyKG1fa2V5ZnJhbWVzUnVsZU1hcCk7CisgICAgaW5mby5hZGRNZW1i
ZXIobV9tYXRjaGVkUHJvcGVydGllc0NhY2hlKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX21hdGNo
ZWRSdWxlcyk7CiAKICAgICBpbmZvLmFkZE1lbWJlcihtX3J1bGVMaXN0KTsKLSAgICBpbmZvLmFk
ZEhhc2hNYXAobV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKTsKLSAgICBpbmZvLmFkZEluc3RydW1l
bnRlZE1hcFZhbHVlcyhtX3BlbmRpbmdJbWFnZVByb3BlcnRpZXMpOworICAgIGluZm8uYWRkTWVt
YmVyKG1fcGVuZGluZ0ltYWdlUHJvcGVydGllcyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9saW5l
SGVpZ2h0VmFsdWUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdmlld3BvcnREZXBlbmRlbnRNZWRp
YVF1ZXJ5UmVzdWx0cyk7Ci0gICAgaW5mby5hZGRIYXNoTWFwKG1fc3R5bGVSdWxlVG9DU1NPTVdy
YXBwZXJNYXApOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhtX3N0eWxlUnVs
ZVRvQ1NTT01XcmFwcGVyTWFwKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3N0eWxlUnVsZVRvQ1NT
T01XcmFwcGVyTWFwKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3N0eWxlU2hlZXRDU1NPTVdyYXBw
ZXJTZXQpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykgJiYgRU5BQkxFKFNWRykKLSAgICBpbmZv
LmFkZEhhc2hNYXAobV9wZW5kaW5nU1ZHRG9jdW1lbnRzKTsKKyAgICBpbmZvLmFkZE1lbWJlciht
X3BlbmRpbmdTVkdEb2N1bWVudHMpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkK
LSAgICBpbmZvLmFkZEhhc2hNYXAobV9zY29wZWRBdXRob3JTdHlsZXMpOwotICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkTWFwRW50cmllcyhtX3Njb3BlZEF1dGhvclN0eWxlcyk7CisgICAgaW5mby5h
ZGRNZW1iZXIobV9zY29wZWRBdXRob3JTdHlsZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc2Nv
cGVTdGFjayk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmNwcAppbmRleCA4YzM5ZmFjMzcwYjQ0NmIyYmQwOWIwNTcwZDYyYThlM2Q4YTAxNWM5Li45YjFm
NTE0YjlkMTQwZjcwYmIzMWMwNjlkOTA2N2NlZTZhMzBlMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlN0
eWxlUnVsZUltcG9ydC5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDk4LDcgKzQ5OSw3IEBAIHZvaWQgU3R5
bGVTaGVldENvbnRlbnRzOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjCiAgICAgaW5mby5hZGRNZW1iZXIobV9lbmNvZGluZ0Zyb21DaGFyc2V0
UnVsZSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9pbXBvcnRSdWxlcyk7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9jaGlsZFJ1bGVzKTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV9uYW1lc3BhY2VzKTsK
KyAgICBpbmZvLmFkZE1lbWJlcihtX25hbWVzcGFjZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1f
Y2xpZW50cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDRjODY5MDQ4ZWQwZDFj
ZjQ3ZjAxYTk4NzY4ODBkNjVjYWQ5N2I4OTEuLjEyMWI3ZGYyODM1YTkwOWY5NzQ5ZGZmZTE4OTNl
ZTFhNmJhOTM0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTc1LDYgKzE3NSw3IEBA
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJ
bnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRh
dGlvbkhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU4OTgsMTcgKzU4OTksMTcgQEAg
dm9pZCBEb2N1bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZE1lbWJlcihtX3htbEVuY29kaW5nKTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX3htbFZlcnNpb24pOwogICAgIGluZm8uYWRkTWVtYmVyKG1fY29u
dGVudExhbmd1YWdlKTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV9kb2N1bWVudE5hbWVkSXRlbUNv
bGxlY3Rpb25zKTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV93aW5kb3dOYW1lZEl0ZW1Db2xsZWN0
aW9ucyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kb2N1bWVudE5hbWVkSXRlbUNvbGxlY3Rpb25z
KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3dpbmRvd05hbWVkSXRlbUNvbGxlY3Rpb25zKTsKICNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgaW5mby5hZGRNZW1iZXIobV9kYXNoYm9h
cmRSZWdpb25zKTsKICNlbmRpZgotICAgIGluZm8uYWRkSGFzaE1hcChtX2Nzc0NhbnZhc0VsZW1l
bnRzKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2Nzc0NhbnZhc0VsZW1lbnRzKTsKICAgICBpbmZv
LmFkZE1lbWJlcihtX2ljb25VUkxzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2RvY3VtZW50U3Vz
cGVuc2lvbkNhbGxiYWNrRWxlbWVudHMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fbWVkaWFWb2x1
bWVDYWxsYmFja0VsZW1lbnRzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3ByaXZhdGVCcm93c2lu
Z1N0YXRlQ2hhbmdlZEVsZW1lbnRzKTsKLSAgICBpbmZvLmFkZEhhc2hNYXAobV9lbGVtZW50c0J5
QWNjZXNzS2V5KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2VsZW1lbnRzQnlBY2Nlc3NLZXkpOwog
ICAgIGluZm8uYWRkTWVtYmVyKG1fZXZlbnRRdWV1ZSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9t
ZWRpYUNhblN0YXJ0TGlzdGVuZXJzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3BlbmRpbmdUYXNr
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA0Y2M4MzYx
NGZkY2FmNWI5NTUwMWJiMjY4NmYzZWJlM2E0NDdiYjg4Li5iNWFjZjJiNTUzMWRmZjdiMGQ4ZTZm
MmVmZDJmNTliMDJlMGVmNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CkBAIC0zNzcsNyArMzc4LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKICAgICBpbmZvLmFkZE1lbWJlcihtX3Jlc3BvbnNlKTsKICAgICBpbmZvLmFkZE1lbWJlciht
X2xhc3RDaGVja2VkUmVxdWVzdCk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9yZXNwb25zZXMpOwot
ICAgIGluZm8uYWRkSGFzaE1hcChtX3BlbmRpbmdTdWJzdGl0dXRlUmVzb3VyY2VzKTsKKyAgICBp
bmZvLmFkZE1lbWJlcihtX3BlbmRpbmdTdWJzdGl0dXRlUmVzb3VyY2VzKTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQpOwogICAgIGluZm8uYWRkTWVtYmVy
KG1fcmVzb3VyY2VzTG9hZGVkRnJvbU1lbW9yeUNhY2hlRm9yQ2xpZW50Tm90aWZpY2F0aW9uKTsK
ICAgICBpbmZvLmFkZE1lbWJlcihtX2NsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAppbmRleCBiYjY4NzQwNTFiY2I5NDgxZGU0ZDBmYjRhYWU0NmM2MjEwMjIxM2YyLi5iZTBk
OWQ3OGE3ZjgyZjZmMmRkM2Q5YjEyYjBjOWNkZGUwZWI1YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQ4LDYg
KzQ4LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL01l
bW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTg5NiwxMSArODk3LDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cHJpbnRQcmVsb2FkU3RhdHMoKQogdm9pZCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0
aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkxvYWRlcik7Ci0gICAgaW5mby5hZGRIYXNoTWFwKG1f
ZG9jdW1lbnRSZXNvdXJjZXMpOwotICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgaSA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVnaW4oKTsgaSAhPSBtX2RvY3VtZW50
UmVzb3VyY2VzLmVuZCgpOyArK2kpIHsKLSAgICAgICAgaW5mby5hZGRNZW1iZXIoaS0+Zmlyc3Qp
OwotICAgICAgICBpbmZvLmFkZE1lbWJlcihpLT5zZWNvbmQpOwotICAgIH0KKyAgICBpbmZvLmFk
ZE1lbWJlcihtX2RvY3VtZW50UmVzb3VyY2VzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbGlk
YXRlZFVSTHMpOwogICAgIGlmIChtX3ByZWxvYWRzKQogICAgICAgICBpbmZvLmFkZExpc3RIYXNo
U2V0KCptX3ByZWxvYWRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCmluZGV4IGMxYWYwOWQ2OWI5YzBkZTdjOGE3MmYzZTM4ZDQ3NDdhYjg4M2QyZDAuLjEw
YzllNmJiMTgzNzI0YjBiNGVjMDM5MGMyNzlhODE2ZjljMGEyYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1
ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
QEAgLTcxOSwxMiArNzIwLDcgQEAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgTWVtb3J5Q2FjaGU6
OmdldFN0YXRpc3RpY3MoKQogdm9pZCBNZW1vcnlDYWNoZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFz
c0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6Ok1l
bW9yeUNhY2hlU3RydWN0dXJlcyk7Ci0gICAgaW5mby5hZGRIYXNoTWFwKG1fcmVzb3VyY2VzKTsK
LSAgICBDYWNoZWRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZSA9IG1fcmVzb3VyY2VzLmVu
ZCgpOwotICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX3Jl
c291cmNlcy5iZWdpbigpOyBpICE9IGU7ICsraSkgewotICAgICAgICBpbmZvLmFkZE1lbWJlcihp
LT5maXJzdCk7Ci0gICAgICAgIGluZm8uYWRkTWVtYmVyKGktPnNlY29uZCk7Ci0gICAgfQorICAg
IGluZm8uYWRkTWVtYmVyKG1fcmVzb3VyY2VzKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2FsbFJl
c291cmNlcyk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9saXZlRGVjb2RlZFJlc291cmNlcyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcAppbmRleCAzMDNkZWFhOWNiZGE3NmFmYmZjNmM1NjIyYzA1NDc0MTQ5OTBm
YzQ1Li41NDM2NDdiZTM4Yjk1Njg2MDE0YTM0OWU0YTg1ZTc1MmI0ODZkNDJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3Rm
L01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC00NTEsOCAr
NDUyLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKQogICAgIGluZm8uYWRkTWVtYmVyKG1fdXJs
KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2ZpcnN0UGFydHlGb3JDb29raWVzKTsKICAgICBpbmZv
LmFkZE1lbWJlcihtX2h0dHBNZXRob2QpOwotICAgIGluZm8uYWRkSGFzaE1hcChtX2h0dHBIZWFk
ZXJGaWVsZHMpOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhtX2h0dHBIZWFk
ZXJGaWVsZHMpOworICAgIGluZm8uYWRkTWVtYmVyKG1faHR0cEhlYWRlckZpZWxkcyk7CiAgICAg
aW5mby5hZGRNZW1iZXIobV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJh
Y2tBcnJheSk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9odHRwQm9keSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
Y3BwCmluZGV4IDI1MjFmYjEyZTE5N2ZiNDkxZTFiZmZiMTRhMzhiZjBhMGM2NjA3N2MuLjQ4NTY4
ZWY2ZmE2OTdiNjBiYmFkZjIwOGNjMzg0NTg2YWE0ZjczMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC01NzYsOCArNTc3LDcgQEAg
dm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKICAgICBpbmZvLmFkZE1lbWJlcihtX3RleHRFbmNvZGlu
Z05hbWUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3VnZ2VzdGVkRmlsZW5hbWUpOwogICAgIGlu
Zm8uYWRkTWVtYmVyKG1faHR0cFN0YXR1c1RleHQpOwotICAgIGluZm8uYWRkSGFzaE1hcChtX2h0
dHBIZWFkZXJGaWVsZHMpOwotICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhtX2h0
dHBIZWFkZXJGaWVsZHMpOworICAgIGluZm8uYWRkTWVtYmVyKG1faHR0cEhlYWRlckZpZWxkcyk7
CiAgICAgaW5mby5hZGRNZW1iZXIobV9yZXNvdXJjZUxvYWRUaW1pbmcpOwogICAgIGluZm8uYWRk
TWVtYmVyKG1fcmVzb3VyY2VMb2FkSW5mbyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5k
ZXggMjI0MjVmMGQ1NzJiZDI3YjMzMDJmZTE3NTE4MjBkNDg5ODRlMzk0Ny4uMzk4ZWQwZjg3Njgw
NTI0NTg3MTEzYzQ5MWM0YzI2YjU0YWNjYjk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlICJTdHls
ZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgor
I2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01lbW9yeUluc3RydW1l
bnRhdGlvblRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9NZW1vcnlJbnN0
cnVtZW50YXRpb25UZXN0LmNwcAppbmRleCBiZWMxYzAwZjc3ZTUxNmM4OTRlMGJiMmE3ZWUyZjEy
ZmVmMTMxZjY2Li5kNGIyNWE3YzNiOThiNzE1ZDQzY2IzNzUxMGExMzAwMDcwMjMyMWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01lbW9yeUluc3RydW1lbnRhdGlv
blRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uVGVzdC5jcHAKQEAgLTM3LDggKzM3LDEwIEBACiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KIAogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvbkhhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTIsNiArNTQsMjUgQEAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgeworZW51bSBUZXN0RW51bSB7IE9ORSA9IDEs
IFRXTywgVEhSRUUsIE1ZX0VOVU1fTUFYIH07Cit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxUZXN0RW51bT4geworICAgIHR5cGVkZWYgSW50SGFz
aDx1bnNpZ25lZD4gSGFzaDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8VGVz
dEVudW0+IDogR2VuZXJpY0hhc2hUcmFpdHM8VGVzdEVudW0+IHsKKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gZmFsc2U7CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZh
bHVlKFRlc3RFbnVtJiBzbG90KSB7IHNsb3QgPSBzdGF0aWNfY2FzdDxUZXN0RW51bT4oTVlfRU5V
TV9NQVggKyAxKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFRlc3RFbnVtIHZh
bHVlKSB7IHJldHVybiB2YWx1ZSA9PSAoTVlfRU5VTV9NQVggKyAxKTsgfQorfTsKKworfQorCitu
YW1lc3BhY2UgewogCiBjbGFzcyBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIHsKIHB1YmxpYzoK
QEAgLTQ1MCw2ICs0NzEsMTQxIEBAIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgaGFz
aFNldFdpdGhJbnN0cnVtZW50ZWRUeXBlKQogICAgIEVYUEVDVF9FUShjb3VudCArIDEsIChzaXpl
X3QpaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOwogfQogCitURVNUKE1lbW9yeUluc3RydW1lbnRh
dGlvblRlc3QsIGhhc2hNYXBXaXRoTm90SW5zdHJ1bWVudGVkS2V5c0FuZFZhbHVlcykKK3sKKyAg
ICBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKKworICAgIHR5cGVkZWYgSGFzaE1h
cDxpbnQsIGludD4gSW50VG9JbnRNYXA7CisgICAgT3duUHRyPEludFRvSW50TWFwPiB2YWx1ZSA9
IGFkb3B0UHRyKG5ldyBJbnRUb0ludE1hcCgpKTsKKyAgICBzaXplX3QgY291bnQgPSAxMDsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMTsgaSA8PSBjb3VudDsgKytpKQorICAgICAgICB2YWx1ZS0+c2V0
KGksIGkpOworICAgIEluc3RydW1lbnRlZE93bmVyPEludFRvSW50TWFwKiA+IHJvb3QodmFsdWUu
Z2V0KCkpOworICAgIGhlbHBlci5hZGRSb290T2JqZWN0KHJvb3QpOworICAgIEVYUEVDVF9FUShz
aXplb2YoSW50VG9JbnRNYXApICsgc2l6ZW9mKEludFRvSW50TWFwOjpWYWx1ZVR5cGUpICogdmFs
dWUtPmNhcGFjaXR5KCksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygpKTsKKyAgICBF
WFBFQ1RfRVEoMSwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOworfQorCitURVNUKE1lbW9yeUlu
c3RydW1lbnRhdGlvblRlc3QsIGhhc2hNYXBXaXRoSW5zdHJ1bWVudGVkS2V5cykKK3sKKyAgICBJ
bnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIGludD4gU3RyaW5nVG9JbnRNYXA7CisgICAgT3duUHRyPFN0cmluZ1RvSW50TWFwPiB2
YWx1ZSA9IGFkb3B0UHRyKG5ldyBTdHJpbmdUb0ludE1hcCgpKTsKKyAgICBpbnQgY291bnQgPSAx
MDsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8PSBjb3VudDsgKytpKQorICAgICAgICB2YWx1ZS0+
c2V0KFN0cmluZzo6bnVtYmVyKGkpLCBpKTsKKyAgICBJbnN0cnVtZW50ZWRPd25lcjxTdHJpbmdU
b0ludE1hcCogPiByb290KHZhbHVlLmdldCgpKTsKKyAgICBoZWxwZXIuYWRkUm9vdE9iamVjdChy
b290KTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKFN0cmluZ1RvSW50TWFwKSArIHNpemVvZihTdHJp
bmdUb0ludE1hcDo6VmFsdWVUeXBlKSAqIHZhbHVlLT5jYXBhY2l0eSgpICsgc2l6ZW9mKFN0cmlu
Z0ltcGwpICogdmFsdWUtPnNpemUoKSwgaGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkp
OworICAgIEVYUEVDVF9FUShjb3VudCArIDEsIGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKK30K
KworVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBoYXNoTWFwV2l0aEluc3RydW1lbnRl
ZFZhbHVlcykKK3sKKyAgICBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKKworICAg
IHR5cGVkZWYgSGFzaE1hcDxpbnQsIFN0cmluZz4gSW50VG9TdHJpbmdNYXA7CisgICAgT3duUHRy
PEludFRvU3RyaW5nTWFwPiB2YWx1ZSA9IGFkb3B0UHRyKG5ldyBJbnRUb1N0cmluZ01hcCgpKTsK
KyAgICBpbnQgY291bnQgPSAxMDsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8PSBjb3VudDsgKytp
KQorICAgICAgICB2YWx1ZS0+c2V0KGksIFN0cmluZzo6bnVtYmVyKGkpKTsKKyAgICBJbnN0cnVt
ZW50ZWRPd25lcjxJbnRUb1N0cmluZ01hcCogPiByb290KHZhbHVlLmdldCgpKTsKKyAgICBoZWxw
ZXIuYWRkUm9vdE9iamVjdChyb290KTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKEludFRvU3RyaW5n
TWFwKSArIHNpemVvZihJbnRUb1N0cmluZ01hcDo6VmFsdWVUeXBlKSAqIHZhbHVlLT5jYXBhY2l0
eSgpICsgc2l6ZW9mKFN0cmluZ0ltcGwpICogdmFsdWUtPnNpemUoKSwgaGVscGVyLnJlcG9ydGVk
U2l6ZUZvckFsbFR5cGVzKCkpOworICAgIEVYUEVDVF9FUShjb3VudCArIDEsIGhlbHBlci52aXNp
dGVkT2JqZWN0cygpKTsKK30KKworVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBoYXNo
TWFwV2l0aEluc3RydW1lbnRlZEtleXNBbmRWYWx1ZXMpCit7CisgICAgSW5zdHJ1bWVudGF0aW9u
VGVzdEhlbHBlciBoZWxwZXI7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IFN0cmluZ1RvU3RyaW5nTWFwOworICAgIE93blB0cjxTdHJpbmdUb1N0cmluZ01hcD4gdmFsdWUg
PSBhZG9wdFB0cihuZXcgU3RyaW5nVG9TdHJpbmdNYXAoKSk7CisgICAgaW50IGNvdW50ID0gMTA7
CisgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gY291bnQ7ICsraSkKKyAgICAgICAgdmFsdWUtPnNl
dChTdHJpbmc6Om51bWJlcihjb3VudCArIGkpLCBTdHJpbmc6Om51bWJlcihpKSk7CisgICAgSW5z
dHJ1bWVudGVkT3duZXI8U3RyaW5nVG9TdHJpbmdNYXAqID4gcm9vdCh2YWx1ZS5nZXQoKSk7Cisg
ICAgaGVscGVyLmFkZFJvb3RPYmplY3Qocm9vdCk7CisgICAgRVhQRUNUX0VRKHNpemVvZihTdHJp
bmdUb1N0cmluZ01hcCkgKyBzaXplb2YoU3RyaW5nVG9TdHJpbmdNYXA6OlZhbHVlVHlwZSkgKiB2
YWx1ZS0+Y2FwYWNpdHkoKSArIDIgKiBzaXplb2YoU3RyaW5nSW1wbCkgKiB2YWx1ZS0+c2l6ZSgp
LCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgRVhQRUNUX0VRKDIgKiBj
b3VudCArIDEsIGhlbHBlci52aXNpdGVkT2JqZWN0cygpKTsKK30KKworVEVTVChNZW1vcnlJbnN0
cnVtZW50YXRpb25UZXN0LCBoYXNoTWFwV2l0aEluc3RydW1lbnRlZFBvaW50ZXJLZXlzQW5kUG9p
bnRlclZhbHVlcykKK3sKKyAgICBJbnN0cnVtZW50YXRpb25UZXN0SGVscGVyIGhlbHBlcjsKKwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxJbnN0cnVtZW50ZWQqLCBJbnN0cnVtZW50ZWQqPiBJbnN0cnVt
ZW50ZWRUb0luc3RydW1lbnRlZE1hcDsKKyAgICBPd25QdHI8SW5zdHJ1bWVudGVkVG9JbnN0cnVt
ZW50ZWRNYXA+IHZhbHVlID0gYWRvcHRQdHIobmV3IEluc3RydW1lbnRlZFRvSW5zdHJ1bWVudGVk
TWFwKCkpOworICAgIFZlY3RvcjxPd25QdHI8SW5zdHJ1bWVudGVkPiA+IHZhbHVlc1ZlY3RvcjsK
KyAgICBpbnQgY291bnQgPSAxMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKKyAgICAgICAgdmFsdWVzVmVjdG9yLmFwcGVuZChhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGVk
KCkpKTsKKyAgICAgICAgdmFsdWVzVmVjdG9yLmFwcGVuZChhZG9wdFB0cihuZXcgSW5zdHJ1bWVu
dGVkKCkpKTsKKyAgICAgICAgdmFsdWUtPnNldCh2YWx1ZXNWZWN0b3JbMiAqIGldLmdldCgpLCB2
YWx1ZXNWZWN0b3JbMiAqIGkgKyAxXS5nZXQoKSk7CisgICAgfQorICAgIEluc3RydW1lbnRlZE93
bmVyPEluc3RydW1lbnRlZFRvSW5zdHJ1bWVudGVkTWFwKiA+IHJvb3QodmFsdWUuZ2V0KCkpOwor
ICAgIGhlbHBlci5hZGRSb290T2JqZWN0KHJvb3QpOworICAgIEVYUEVDVF9FUShzaXplb2YoSW5z
dHJ1bWVudGVkVG9JbnN0cnVtZW50ZWRNYXApICsgc2l6ZW9mKEluc3RydW1lbnRlZFRvSW5zdHJ1
bWVudGVkTWFwOjpWYWx1ZVR5cGUpICogdmFsdWUtPmNhcGFjaXR5KCkgKyAyICogKHNpemVvZihJ
bnN0cnVtZW50ZWQpICsgc2l6ZW9mKE5vdEluc3RydW1lbnRlZCkpICogdmFsdWUtPnNpemUoKSwg
aGVscGVyLnJlcG9ydGVkU2l6ZUZvckFsbFR5cGVzKCkpOworICAgIEVYUEVDVF9FUSgyICogMiAq
IGNvdW50ICsgMSwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOworfQorCitjbGFzcyBJbnN0cnVt
ZW50ZWRDb252ZXJ0aWJsZVRvSW50IHsKK3B1YmxpYzoKKyAgICBJbnN0cnVtZW50ZWRDb252ZXJ0
aWJsZVRvSW50KCkgOiBtX25vdEluc3RydW1lbnRlZCgwKSB7IH0KKyAgICB+SW5zdHJ1bWVudGVk
Q29udmVydGlibGVUb0ludCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CisgICAgeworICAg
ICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3Jl
TWVtb3J5VHlwZXM6OkRPTSk7CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fbm90SW5zdHJ1bWVu
dGVkKTsKKyAgICB9CisKKyAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJldHVybiAyMDEyOyB9
CisKKyAgICBOb3RJbnN0cnVtZW50ZWQqIG1fbm90SW5zdHJ1bWVudGVkOworfTsKKworLy8gVGhp
cyB0ZXN0IGNoZWNrcyBpZiByZXBvcnRNZW1vcnlVc2FnZSBtZXRob2Qgd2lsbCBiZSBjYWxsZWQg
b24gYSBjbGFzcworLy8gdGhhdCBjYW4gYmUgaW1wbGljaXRseSBjYXN0IHRvIGludC4gQ3VycmVu
dGx5IG9iamVjdHMgb2Ygc3VjaCBjbGFzc2VzIGFyZQorLy8gdHJlYXRlZCBhcyBpbnRlZ2VycyB3
aGVuIHRoZXkgYXJlIHN0b3JlZCBpbiBhIEhhc2hNYXAgYnkgdmFsdWUgYW5kCisvLyByZXBvcnRN
ZW1vcnlVc2FnZSB3aWxsIG5vdCBiZSBjYWxsZWQgb24gdGhlbS4gV2UgbWF5IGZpeCB0aGF0IGxh
dGVyLgorVEVTVChNZW1vcnlJbnN0cnVtZW50YXRpb25UZXN0LCBoYXNoTWFwV2l0aFZhbHVlc0Nv
bnZlcnRpYmxlVG9JbnQpCit7CisgICAgSW5zdHJ1bWVudGF0aW9uVGVzdEhlbHBlciBoZWxwZXI7
CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8SW5zdHJ1bWVudGVkQ29udmVydGlibGVUb0ludCosIElu
c3RydW1lbnRlZENvbnZlcnRpYmxlVG9JbnQ+IFRlc3RNYXA7CisgICAgT3duUHRyPFRlc3RNYXA+
IHZhbHVlID0gYWRvcHRQdHIobmV3IFRlc3RNYXAoKSk7CisgICAgVmVjdG9yPE93blB0cjxJbnN0
cnVtZW50ZWRDb252ZXJ0aWJsZVRvSW50PiA+IGtleXNWZWN0b3I7CisgICAgVmVjdG9yPE93blB0
cjxOb3RJbnN0cnVtZW50ZWQ+ID4gdmFsdWVzVmVjdG9yOworICAgIGludCBjb3VudCA9IDEwOwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBrZXlzVmVjdG9y
LmFwcGVuZChhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGVkQ29udmVydGlibGVUb0ludCgpKSk7Cisg
ICAgICAgIHZhbHVlc1ZlY3Rvci5hcHBlbmQoYWRvcHRQdHIobmV3IE5vdEluc3RydW1lbnRlZCgp
KSk7CisgICAgICAgIHZhbHVlLT5zZXQoa2V5c1ZlY3RvcltpXS5nZXQoKSwgSW5zdHJ1bWVudGVk
Q29udmVydGlibGVUb0ludCgpKS5pdGVyYXRvci0+c2Vjb25kLm1fbm90SW5zdHJ1bWVudGVkID0g
dmFsdWVzVmVjdG9yW2ldLmdldCgpOworICAgIH0KKyAgICBJbnN0cnVtZW50ZWRPd25lcjxUZXN0
TWFwKiA+IHJvb3QodmFsdWUuZ2V0KCkpOworICAgIGhlbHBlci5hZGRSb290T2JqZWN0KHJvb3Qp
OworICAgIEVYUEVDVF9FUShzaXplb2YoVGVzdE1hcCkgKyBzaXplb2YoVGVzdE1hcDo6VmFsdWVU
eXBlKSAqIHZhbHVlLT5jYXBhY2l0eSgpICsKKyAgICAgICAgc2l6ZW9mKEluc3RydW1lbnRlZENv
bnZlcnRpYmxlVG9JbnQpICogY291bnQgLyogKyBzaXplb2YoTm90SW5zdHJ1bWVudGVkKSAqIGNv
dW50ICovLCBoZWxwZXIucmVwb3J0ZWRTaXplRm9yQWxsVHlwZXMoKSk7CisgICAgRVhQRUNUX0VR
KGNvdW50ICsgMSwgaGVscGVyLnZpc2l0ZWRPYmplY3RzKCkpOworfQorCitURVNUKE1lbW9yeUlu
c3RydW1lbnRhdGlvblRlc3QsIGhhc2hNYXBXaXRoRW51bUtleXNBbmRJbnN0cnVtZW50ZWRWYWx1
ZXMpCit7CisgICAgSW5zdHJ1bWVudGF0aW9uVGVzdEhlbHBlciBoZWxwZXI7CisKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8VGVzdEVudW0sIFN0cmluZz4gRW51bVRvU3RyaW5nTWFwOworICAgIE93blB0
cjxFbnVtVG9TdHJpbmdNYXA+IHZhbHVlID0gYWRvcHRQdHIobmV3IEVudW1Ub1N0cmluZ01hcCgp
KTsKKyAgICBpbnQgY291bnQgPSBNWV9FTlVNX01BWDsKKyAgICBmb3IgKGludCBpID0gT05FOyBp
IDw9IGNvdW50OyArK2kpCisgICAgICAgIHZhbHVlLT5zZXQoc3RhdGljX2Nhc3Q8VGVzdEVudW0+
KGkpLCBTdHJpbmc6Om51bWJlcihpKSk7CisgICAgSW5zdHJ1bWVudGVkT3duZXI8RW51bVRvU3Ry
aW5nTWFwKiA+IHJvb3QodmFsdWUuZ2V0KCkpOworICAgIGhlbHBlci5hZGRSb290T2JqZWN0KHJv
b3QpOworICAgIEVYUEVDVF9FUShzaXplb2YoRW51bVRvU3RyaW5nTWFwKSArIHNpemVvZihFbnVt
VG9TdHJpbmdNYXA6OlZhbHVlVHlwZSkgKiB2YWx1ZS0+Y2FwYWNpdHkoKSArIHNpemVvZihTdHJp
bmdJbXBsKSAqIHZhbHVlLT5zaXplKCksIGhlbHBlci5yZXBvcnRlZFNpemVGb3JBbGxUeXBlcygp
KTsKKyAgICBFWFBFQ1RfRVEoY291bnQgKyAxLCBoZWxwZXIudmlzaXRlZE9iamVjdHMoKSk7Cit9
CisKIFRFU1QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uVGVzdCwgYXJyYXlCdWZmZXIpCiB7CiAgICAg
SW5zdHJ1bWVudGF0aW9uVGVzdEhlbHBlciBoZWxwZXI7Cg==
</data>
<flag name="review"
          id="178791"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="178792"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>