<?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>143410</bug_id>
          
          <creation_ts>2015-04-04 20:33:42 -0700</creation_ts>
          <short_desc>[Content Filtering] Replacement data is not always displayed when it should be</short_desc>
          <delta_ts>2015-04-05 00:53:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>128858</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1082849</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-04-04 20:33:42 -0700</bug_when>
    <thetext>[Content Filtering] Blocked page is not always displayed when it should be</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082850</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-04-04 20:34:56 -0700</bug_when>
    <thetext>rdar://problem/20211099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082852</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-04-04 20:35:22 -0700</bug_when>
    <thetext>*** Bug 142894 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082866</commentid>
    <comment_count>3</comment_count>
      <attachid>250150</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-04-04 23:39:53 -0700</bug_when>
    <thetext>Created attachment 250150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082867</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-04 23:42:03 -0700</bug_when>
    <thetext>Attachment 250150 did not pass style-queue:


ERROR: Source/WebCore/loader/ContentFilter.cpp:74:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/loader/ContentFilter.cpp:158:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WebCore/platform/spi/cocoa/WebFilterEvaluatorSPI.h:35:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/WebFilterEvaluatorSPI.h:36:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/WebFilterEvaluatorSPI.h:37:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/spi/cocoa/WebFilterEvaluatorSPI.h:38:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:68:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 7 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082870</commentid>
    <comment_count>5</comment_count>
      <attachid>250150</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-05 00:15:39 -0700</bug_when>
    <thetext>Comment on attachment 250150
Patch

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

r=me

&gt; Source/WebCore/loader/ContentFilter.cpp:102
&gt; +    ASSERT(m_blockingContentFilter &amp;&amp; m_blockingContentFilter-&gt;didBlockData());

I would break this into two assertions so it would display the specific failure.

&gt; Source/WebCore/loader/ContentFilter.cpp:109
&gt; +    ASSERT(m_blockingContentFilter &amp;&amp; m_blockingContentFilter-&gt;didBlockData());

Ditto.

&gt; Source/WebCore/loader/ContentFilter.cpp:116
&gt; +    ASSERT(m_blockingContentFilter &amp;&amp; m_blockingContentFilter-&gt;didBlockData());

Ditto.

&gt; Source/WebCore/loader/ContentFilter.cpp:173
&gt; +    ASSERT(m_state != State::Allowed &amp;&amp; m_state != State::Blocked);

The same idea also applies here.

&gt; Source/WebCore/loader/ContentFilter.cpp:177
&gt; +    // Calling m_decisionFunction might delete |this|.

Good to know!

&gt; Source/WebCore/loader/ContentFilter.h:52
&gt; +    ~ContentFilter() override;

One of the compilers we support used to barf on &quot;override&quot; on destructors. I don&apos;t recall which one. EWS will tell us I suppose.

&gt; Source/WebCore/loader/ContentFilter.h:66
&gt; +    RefPtr&lt;SharedBuffer&gt; replacementData() const;

Since this function will never return a null pointer, we should make it return Ref&lt;SharedBuffer&gt;.
Ditto for all of its namesake functions in this patch.

&gt; Source/WebCore/loader/ContentFilter.h:95
&gt; +    PlatformContentFilter* m_blockingContentFilter;
&gt; +    State m_state;

I would initialize these here instead of doing it in the constructor&apos;s initializer list.

&gt; Source/WebCore/loader/DocumentLoader.cpp:1585
&gt; +            if (!unblocked &amp;&amp; frame)

Can frame really be non-null here? I honestly have no idea.

&gt; Source/WebCore/platform/spi/cocoa/NEFilterSourceSPI.h:71
&gt; +

k</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082874</commentid>
    <comment_count>6</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-04-05 00:33:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 250150 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=250150&amp;action=review
&gt; 
&gt; r=me

Thanks!

&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.cpp:102
&gt; &gt; +    ASSERT(m_blockingContentFilter &amp;&amp; m_blockingContentFilter-&gt;didBlockData());
&gt; 
&gt; I would break this into two assertions so it would display the specific
&gt; failure.

Ok.

&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.cpp:109
&gt; &gt; +    ASSERT(m_blockingContentFilter &amp;&amp; m_blockingContentFilter-&gt;didBlockData());
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.cpp:116
&gt; &gt; +    ASSERT(m_blockingContentFilter &amp;&amp; m_blockingContentFilter-&gt;didBlockData());
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.cpp:173
&gt; &gt; +    ASSERT(m_state != State::Allowed &amp;&amp; m_state != State::Blocked);
&gt; 
&gt; The same idea also applies here.
&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.cpp:177
&gt; &gt; +    // Calling m_decisionFunction might delete |this|.
&gt; 
&gt; Good to know!
&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.h:52
&gt; &gt; +    ~ContentFilter() override;
&gt; 
&gt; One of the compilers we support used to barf on &quot;override&quot; on destructors. I
&gt; don&apos;t recall which one. EWS will tell us I suppose.

Only clang should see this header, so I think we&apos;re okay.

&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.h:66
&gt; &gt; +    RefPtr&lt;SharedBuffer&gt; replacementData() const;
&gt; 
&gt; Since this function will never return a null pointer, we should make it
&gt; return Ref&lt;SharedBuffer&gt;.
&gt; Ditto for all of its namesake functions in this patch.

Ok.

&gt; 
&gt; &gt; Source/WebCore/loader/ContentFilter.h:95
&gt; &gt; +    PlatformContentFilter* m_blockingContentFilter;
&gt; &gt; +    State m_state;
&gt; 
&gt; I would initialize these here instead of doing it in the constructor&apos;s
&gt; initializer list.

Done.

&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:1585
&gt; &gt; +            if (!unblocked &amp;&amp; frame)
&gt; 
&gt; Can frame really be non-null here? I honestly have no idea.

I think it&apos;s possible, but I can move the null check earlier in this function.
&gt; 
&gt; &gt; Source/WebCore/platform/spi/cocoa/NEFilterSourceSPI.h:71
&gt; &gt; +
&gt; 
&gt; k</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082875</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-04-05 00:53:06 -0700</bug_when>
    <thetext>Committed r182356: &lt;http://trac.webkit.org/changeset/182356&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250150</attachid>
            <date>2015-04-04 23:39:53 -0700</date>
            <delta_ts>2015-04-05 00:15:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143410-20150404233906.patch</filename>
            <type>text/plain</type>
            <size>68041</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY3OTlkNzBlM2Y2ODJk
NTcxMDYzODNmMmUxYzgyZmM5YmI1ZGU4Yy4uMWUxOWM0ZjMyZDE4Y2U5OTM2N2YzOGI2YTE0MWI5
ZTMwZGYyNjQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MiBAQAorMjAxNS0wNC0wNCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5n
XSBCbG9ja2VkIHBhZ2UgaXMgbm90IGFsd2F5cyBkaXNwbGF5ZWQgd2hlbiBpdCBzaG91bGQgYmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQxMAor
ICAgICAgICByZGFyOi8vcHJvYmxlbS8yMDIxMTA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIHRlc3RzIG5vdyBwYXNzOiBjb250ZW50Zmls
dGVyaW5nL2Jsb2NrLWFmdGVyLWFkZC1kYXRhLmh0bWwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRlbnRmaWx0ZXJpbmcvYmxvY2stYWZ0ZXItcmVzcG9uc2UuaHRtbAorCisgICAg
ICAgIFRoZXJlIHdlcmUgc2V2ZXJhbCBwcm9ibGVtcyB3aXRoIGhvdyBDb250ZW50RmlsdGVyIGxv
YWRlZCByZXBsYWNlbWVudCBkYXRhOgorICAgICAgICAoMSkgUmVwbGFjZW1lbnQgZGF0YSB3YXMg
ZGVsaXZlcmVkIHRvIERvY3VtZW50TG9hZGVyIGFzIGlmIGl0IHdlcmUgdGhlIG9yaWdpbmFsIGRv
Y3VtZW50J3MgZGF0YS4gVGhpcyBhc3N1bWVzCisgICAgICAgICAgICB0aGF0IHRoZSBvcmlnaW5h
bCBkYXRhIHdhcyBhIFVURi04IGVuY29kZWQgSFRNTCBkb2N1bWVudCwgd2hpY2ggaXMgbm90IGFs
d2F5cyB0cnVlLiBXZSBoYWQgYSB3YXkgdG8gcmVzZXQKKyAgICAgICAgICAgIHRoZSBlbmNvZGlu
ZywgYnV0IG5vdCB0aGUgY29udGVudCB0eXBlLgorICAgICAgICAoMikgUmVwbGFjZW1lbnQgZGF0
YSB3YXMgbmV2ZXIgZGVsaXZlcmVkIHdoZW4gdGhlIGZpbHRlciBibG9ja3MgaW4gRG9jdW1lbnRM
b2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoKS4KKyAgICAgICAgKDMpIFRoZSBtYWluIHJlc291cmNl
IGxvYWQgd2FzIGNhbmNlbGxlZCBiZWZvcmUgdGhlIHJlcGxhY2VtZW50IGRhdGEgY291bGQgYmUg
cmVuZGVyZWQgd2hlbiB0aGUgZmlsdGVyIGJsb2NrcworICAgICAgICAgICAgaW4gRG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZCgpLgorICAgICAgICBUaGUgcmVzdWx0IHdhcyB0aGF0IG9ubHkg
d2hlbiB0aGUgbG9hZCB3YXMgYmxvY2tlZCBhZnRlciBEb2N1bWVudExvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoKSB3b3VsZCB0aGUgcmVwbGFjZW1lbnQKKyAgICAgICAgZGF0YSBiZSBzaG93biBwcm9w
ZXJseSwgYW5kIG9ubHkgd2hlbiBwcm9ibGVtICgxKSB3YXNuJ3Qgb2NjdXJyaW5nLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRoZXNlIGlzc3VlcyBieSB1c2luZyB0aGUgc3Vic3Rp
dHV0ZSBkYXRhIG1lY2hhbmlzbSB0byBkZWxpdmVyIHJlcGxhY2VtZW50IGRhdGEuIEJ5IHVzaW5n
CisgICAgICAgIHN1YnN0aXR1dGUgZGF0YSwgd2UgY2FuIGVuc3VyZSB0aGF0IHRoZSBvcmlnaW5h
bCBsb2FkIGlzIGNhbmNlbGxlZCBhdCB0aGUgZWFybGllc3Qgb3Bwb3J0dW5pdHkgYW5kIHRoYXQg
dGhlCisgICAgICAgIHJlcGxhY2VtZW50IGRhdGEgaXMgbG9hZGVkIHdpdGggdGhlIHByb3BlciBj
b250ZW50IHR5cGUgYW5kIGVuY29kaW5nLgorCisgICAgICAgIEFjY29tcGxpc2hpbmcgdGhpcyBy
ZXF1aXJlZCBjaGFuZ2luZyB0aGUgd2F5IENvbnRlbnRGaWx0ZXIgaW50ZXJhY3RzIHdpdGggRG9j
dW1lbnRMb2FkZXIuIEluc3RlYWQgb2YgcGxhY2luZworICAgICAgICBDb250ZW50RmlsdGVyIGhv
b2tzIHRocm91Z2hvdXQgRG9jdW1lbnRMb2FkZXIsIHRoaXMgcGF0Y2ggbWFrZXMgQ29udGVudEZp
bHRlciBpdHNlbGYgdGhlIGNsaWVudCBvZiB0aGUKKyAgICAgICAgQ2FjaGVkUmF3UmVzb3VyY2Ug
Zm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgZmlsdGVyaW5nLiBJZiB0aGUgZmlsdGVyIGRlY2lkZXMg
dG8gYWxsb3cgdGhlIGxvYWQsIERvY3VtZW50TG9hZGVyCisgICAgICAgIGFkZHMgaXRzZWxmIGFz
IGEgY2xpZW50IGNhdXNpbmcgQ2FjaGVkUmF3UmVzb3VyY2UgdG8gZGVsaXZlciB0byBpdCB0aGUg
cmVzcG9uc2UgYW5kIGJ1ZmZlcmVkIGRhdGEuIElmIHRoZQorICAgICAgICBmaWx0ZXIgZGVjaWRl
cyB0byBibG9jayB0aGUgbG9hZCwgRG9jdW1lbnRMb2FkZXIgc2NoZWR1bGVzIGEgc3Vic3RpdHV0
ZSBkYXRhIGxvYWQuIEFuIGFkZGVkIGJlbmVmaXQgb2YgdGhpcworICAgICAgICBhcHByb2FjaCBp
cyB0aGF0IENvbnRlbnRGaWx0ZXIgY2FuIHJldXNlIENhY2hlZFJhd1Jlc291cmNlJ3Mgb3JpZ2lu
YWwgZGF0YSBidWZmZXIgaW5zdGVhZCBvZiBrZWVwaW5nIGl0cyBvd24uCisKKyAgICAgICAgKiBs
b2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
OjpjcmVhdGVJZk5lZWRlZCk6IENoYW5nZWQgdG8gdGFrZSBhIERlY2lzaW9uRnVuY3Rpb24gcmF0
aGVyIHRoYW4gYSBSZXNvdXJjZVJlc3BvbnNlIGFuZCBEb2N1bWVudExvYWRlci4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6On5Db250ZW50RmlsdGVyKTogUmVtb3ZlZCBvdXJzZWxm
IGFzIGEgQ2FjaGVkUmF3UmVzb3VyY2UgY2xpZW50IGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKTogTWFkZSBvdXJz
ZWx2ZXMgdGhlIGNsaWVudCBvZiB0aGUgQ2FjaGVkUmF3UmVzb3VyY2UgaW4KKyAgICAgICAgb3Jk
ZXIgdG8gc3RhcnQgdGhlIGZpbHRlcmluZyBwcm9jZXNzLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6dW5ibG9ja0hhbmRsZXIpOiBSZXR1cm5lZCB0aGUgdW5ibG9jayBoYW5kbGVy
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKTogUmV0
dXJuZWQgdGhlIHJlcGxhY2VtZW50IGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Rmls
dGVyOjp1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk6IFJldHVybmVkIHRoZSB1bmJsb2NrIHJl
cXVlc3QgZGVuaWVkIHNjcmlwdC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnJl
c3BvbnNlUmVjZWl2ZWQpOiBDYWxsZWQgcmVzcG9uc2VSZWNlaXZlZCgpIG9uIGVhY2ggZmlsdGVy
IHVzaW5nIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKCkuCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RmlsdGVyOjpkYXRhUmVjZWl2ZWQpOiBEaXR0byBmb3IgZGF0YVJlY2VpdmVk
KCkuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpub3RpZnlGaW5pc2hlZCk6IERp
dHRvIGZvciBmaW5pc2hlZExvYWRpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OmZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKTogRm9yIGVhY2ggZmlsdGVyIHRo
YXQgbmVlZHMgbW9yZSBkYXRhLCBjYWxsZWQgdGhlIGZ1bmN0aW9uLgorICAgICAgICBJZiB0aGUg
ZmlsdGVyIGJsb2NrcyB0aGUgbG9hZCwgY2FsbCBkaWREZWNpZGUoKSB3aXRoIFN0YXRlOjpCbG9j
a2VkLgorICAgICAgICBJZiBhbGwgZmlsdGVycyBhbGxvd2VkIHRoZSBsb2FkLCBjYWxsIGRpZERl
Y2lkZSgpIHdpdGggU3RhdGU6OkFsbG93ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50Rmls
dGVyOjpkaWREZWNpZGUpOiBTZXQgbV9zdGF0ZSBhbmQgY2FsbCBtX2RlY2lzaW9uRnVuY3Rpb24o
KS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmFkZERhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6Om5lZWRzTW9yZURhdGEpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGlkQmxvY2tEYXRhKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmdldFJlcGxhY2VtZW50
RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnR5cGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6RG9jdW1l
bnRMb2FkZXIpOiBDYWxsZWQgQ29udGVudEZpbHRlcjo6Y3JlYXRlSWZOZWVkZWQoKSBpZiBub3Qg
bG9hZGluZyBzdWJzdGl0dXRlIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZmluaXNoZWRMb2FkaW5nKTogUmVtb3ZlZCBvbGQgQ29udGVudEZpbHRlciBjb2RlLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKTogU2V0IG1f
Y29udGVudEZpbHRlciB0byBudWxscHRyLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6IENhbGxlZCBiZWNvbWVNYWluUmVzb3VyY2VD
bGllbnRJZkZpbHRlckFsbG93cygpIGluc3RlYWQgb2YKKyAgICAgICAgYWRkaW5nIG91cnNlbGYg
YXMgbV9tYWluUmVzb3VyY2UncyBjbGllbnQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6Y2xlYXJNYWluUmVzb3VyY2UpOiBTZXQgbV9jb250ZW50RmlsdGVyIHRvIG51bGxwdHIu
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xp
ZW50SWZGaWx0ZXJBbGxvd3MpOiBJZiBhIENvbnRlbnRGaWx0ZXIgaXMgaW5pdGlhbGl6ZWQsIGNh
bGwKKyAgICAgICAgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKS4g
T3RoZXJ3aXNlIGFkZCBvdXJzZWxmIGFzIGEgY2xpZW50IG9mIG1fbWFpblJlc291cmNlLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Omluc3RhbGxDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIpOiBBZGRlZCBhIGhlbHBlciBmb3IgY3JlYXRpbmcgYW5kIG5vdGlmeWluZworICAg
ICAgICBGcmFtZUxvYWRlckNsaWVudCBvZiB0aGUgdW5ibG9jayBoYW5kbGVyLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWREZWNpZGUpOiBTZXQgbV9j
b250ZW50RmlsdGVyIHRvIG51bGxwdHIuIElmIHRoZSBjb250ZW50IGZpbHRlcgorICAgICAgICBh
bGxvd2VkIHRoZSBsb2FkLCB0aGVuIGFkZCBvdXJzZWxmIGFzIHRoZSBDYWNoZWRSYXdSZXNvdXJj
ZSdzIGNsaWVudC4gT3RoZXJ3aXNlLCBpbnN0YWxsIHRoZSB1bmJsb2NrIGhhbmRsZXIKKyAgICAg
ICAgYW5kIHNjaGVkdWxlIGEgc3Vic3RpdHV0ZSBkYXRhIGxvYWQgd2l0aCB0aGUgcmVwbGFjZW1l
bnQgZGF0YS4KKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnBy
ZXBhcmVGb3JMb2FkU3RhcnQpOiBSZW1vdmVkIGNhbGwgdG8gUG9saWN5Q2hlY2tlcjo6cHJlcGFy
ZUZvckxvYWRTdGFydCgpLgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFN1YnN0aXR1dGVEYXRhTG9hZDo6U2NoZWR1
bGVkU3Vic3RpdHV0ZURhdGFMb2FkKTogQWRkZWQgYSBTY2hlZHVsZWROYXZpZ2F0aW9uIHN1YmNs
YXNzIHRoYXQKKyAgICAgICAgY2FsbHMgRnJhbWVMb2FkZXI6OmxvYWQoKSB3aXRoIGEgRnJhbWVM
b2FkUmVxdWVzdCBjb250YWluaW5nIHN1YnN0aXR1dGUgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6
Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlU3Vic3RpdHV0ZURhdGFMb2FkKTogU2NoZWR1
bGVkIGEgc3Vic3RpdHV0ZSBkYXRhIGxvYWQuCisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOiBSZXNldCBt
X2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBpZiBpdCBjb3VsZG4ndCBoYW5kbGUgdGhlIHJl
cXVlc3QuCisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpwcmVwYXJlRm9yTG9hZFN0
YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjp1bnJlYWNoYWJsZVVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnNldFVucmVhY2hhYmxl
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6dW5i
bG9ja1VSTFNjaGVtZSk6IFJlbmFtZWQgdG8gQ29udGVudEZpbHRlcjo6dXJsU2NoZW1lKCkuCisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OndyYXBXaXRoRGVjaXNpb25I
YW5kbGVyKTogQWRkZWQgYSBoZWxwZXIgdG8gd3JhcCB0aGUgdW5ibG9jayBoYW5kbGVyIHdpdGgg
YW4gb3V0ZXIgRGVjaXNpb25IYW5kbGVyRnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZSk6IEFkZGVkIG1fdW5yZWFjaGFibGVVUkwg
dG8gdGhlIGVuY29kaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyOjpkZWNvZGUpOiBEaXR0byBmb3IgdGhlIGRlY29kaW5nLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5kbGVSZXF1ZXN0KTogQ2hhbmdl
ZCB0byBjYWxsIENvbnRlbnRGaWx0ZXI6OnVybFNjaGVtZSgpLgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChyZXBs
YWNlbWVudERhdGFGcm9tRGVjaXNpb25JbmZvKTogQWRkZWQgYSBoZWxwZXIgdG8gZXh0cmFjdCBy
ZXBsYWNlbWVudCBkYXRhIGZyb20gdGhlIGRlY2lzaW9uSW5mbyBkaWN0aW9uYXJ5LgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmVuYWJsZWQpOiBSZW5h
bWVkIGZyb20gY2FuSGFuZGxlUmVwb25zZSgpOyBvbmx5IGNoZWNrcyBpZiB0aGUgZmlsdGVyIGlz
IGVuYWJsZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cjo6Y3JlYXRlKTogQ3JlYXRlZCBhIG5ldyBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIp
OiBDcmVhdGVkIGEgTkVGaWx0ZXJTb3VyY2UgaW1tZWRpYXRlbHkgd2hlbiB1c2luZyB0aGUgbW9k
ZXJuIEFQSS4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
OjpyZXNwb25zZVJlY2VpdmVkKTogQ3JlYXRlZCBhIE5FRmlsdGVyU291cmNlIHdoZW4gdXNpbmcg
dGhlIGxlZ2FjeSBBUEkuCisgICAgICAgIENhbGxlZCAtW05FRmlsdGVyU291cmNlIHJlY2VpdmVk
UmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0gd2hlbiB1c2luZyB0aGUgbW9kZXJuIEFQSS4KKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjphZGREYXRhKTog
U3RvcHBlZCBidWZmZXJpbmcgdGhlIG9yaWdpbmFsIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKTogUmV0dXJuZWQg
YSBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBhIGNoYXIqIGFuZCBpbnQmLgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmNhbkhhbmRsZVJlc3BvbnNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU5FRmlsdGVyU291cmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpnZXRS
ZXBsYWNlbWVudERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZW5hYmxlZCk6IFJlbmFtZWQgZnJvbSBjYW5IYW5kbGVS
ZXBvbnNlKCk7IG9ubHkgY2hlY2tzIGlmIHRoZSBmaWx0ZXIgaXMgZW5hYmxlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpjcmVhdGUpOiBDcmVhdGVk
IGEgbmV3IG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcik6IEluaXRpYWxpemVkIG1fZmls
dGVyU3RhdGUgdG8ga1dGRVN0YXRlQnVmZmVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6Y2FuSGFu
ZGxlUmVzcG9uc2UpOiBBZGRlZCBhIGhlbHBlciB0byBjaGVjayBpZiB0aGUgcmVzcG9uc2UgY2Fu
IGJlIGZpbHRlcmVkLgorICAgICAgICAoV2ViQ29yZTo6UGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOiBJZiAhY2FuSGFuZGxlUmVzcG9uc2UoKSwgc2V0IG1f
ZmlsdGVyU3RhdGUgdG8ga1dGRVN0YXRlQWxsb3dlZCBhbmQgcmV0dXJuLgorICAgICAgICBPdGhl
cndpc2UgY3JlYXRlIGEgbmV3IFdlYkZpbHRlckV2YWx1YXRvciB3aXRoIHRoZSByZXNwb25zZS4K
KyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRh
KTogQ2FsbGVkIHVwZGF0ZUZpbHRlclN0YXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6bmVlZHNNb3JlRGF0
YSk6IENoYW5nZWQgdG8gY2hlY2sgbV9maWx0ZXJTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpkaWRCbG9ja0RhdGEpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERh
dGEpOiBSZXR1cm5lZCBhIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIGEgY2hhciogYW5kIGludCYu
CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6dXBkYXRl
RmlsdGVyU3RhdGUpOiBVcGRhdGVkIG1fZmlsdGVyU3RhdGUgYnkgY2FsbGluZyAtW1dlYkZpbHRl
ckV2YWx1YXRvciBmaWx0ZXJTdGF0ZV0uCisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlcjo6Y2FuSGFuZGxlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmdldFJlcGxhY2VtZW50RGF0
YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3BpL2NvY29hL05FRmlsdGVyU291cmNl
U1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vc3BpL2NvY29hL1dlYkZpbHRlckV2YWx1YXRvclNQ
SS5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQpOiBSZW5hbWVkIGZyb20gY2FuSGFu
ZGxlUmVwb25zZSgpOyBvbmx5IGNoZWNrcyBpZiB0aGUgZmlsdGVyIGlzIGVuYWJsZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKTogQ3JlYXRlZCBhIG5ldyBv
YmplY3QuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNl
aXZlZCk6IENhbGxlZCBtYXliZURldGVybWluZVN0YXR1cygpLgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEpOiBTdG9wcGVkIGJ1ZmZlcmluZyB0aGUgb3JpZ2lu
YWwgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVu
dERhdGEpOiBSZXR1cm5lZCBhIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIGEgY2hhciogYW5kIGlu
dCYuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlcjo6dW5ibG9ja0hhbmRsZXIp
OiBBc3NlcnRlZCB0aGF0IHdlIGJsb2NrZWQgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyOjpjYW5IYW5kbGVSZXNwb25zZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlcjo6TW9ja0NvbnRlbnRGaWx0ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXI6OmdldFJlcGxhY2VtZW50RGF0YSk6IERl
bGV0ZWQuCisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oOgorICAgICAgICAq
IHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVSTCk6IENoYW5nZWQg
dG8gdXNlIGEgU3RyaW5nQnVpbGRlci4KKwogMjAxNS0wNC0wMyAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNd
IEFkZCBtZW1vcnkgcmVwb3J0aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc4ZTExMjY2NGM3MzY3MzNkYjMx
NTU5MmExODVkOTdhYWYzNmY2MWUuLjg4OTZlMWUzZDNiZGY3OTJlMGE4MTZiMGNkZjZkNmMwMzkz
MmFlNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNC0wNCAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBCbG9j
a2VkIHBhZ2UgaXMgbm90IGFsd2F5cyBkaXNwbGF5ZWQgd2hlbiBpdCBzaG91bGQgYmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQxMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZCk6IFN0b3BwZWQgY2xlYXJpbmcgbV9jb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgaGVyZS4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxl
Q29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKTogU3RhcnRlZCBkb2luZyBpdCBoZXJlIGlu
c3RlYWQuCisKIDIwMTUtMDQtMDMgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzODcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCAyN2VjMGRhN2I0NDhkZTI3
NmM4YzZjNDVlOTYxZDdjMTI5MTJkZjJiLi4yOThkOGVmMjQ0NWVmYTlmMTdhODNjNzM5MmQ4OTY0
MTMwNGJhZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0y
OCwxMiArMjgsMTEgQEAKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAotI2luY2x1
ZGUgIkRvY3VtZW50TG9hZGVyLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJDYWNo
ZWRSYXdSZXNvdXJjZS5oIgorI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5o
IgogI2luY2x1ZGUgIk5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAi
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCi0jaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKQEAgLTUyLDEwNyArNTEsMTMyIEBAIFZlY3RvcjxDb250ZW50RmlsdGVy
OjpUeXBlPiYgQ29udGVudEZpbHRlcjo6dHlwZXMoKQogICAgIHJldHVybiB0eXBlczsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZUlmTmVl
ZGVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBEb2N1bWVudExvYWRlciYgZG9j
dW1lbnRMb2FkZXIpCitzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gQ29udGVudEZpbHRl
cjo6Y3JlYXRlSWZOZWVkZWQoRGVjaXNpb25GdW5jdGlvbiBkZWNpc2lvbkZ1bmN0aW9uKQogewog
ICAgIENvbnRhaW5lciBmaWx0ZXJzOwogICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKCkpIHsK
LSAgICAgICAgaWYgKHR5cGUuY2FuSGFuZGxlUmVzcG9uc2UocmVzcG9uc2UpKQotICAgICAgICAg
ICAgZmlsdGVycy5hcHBlbmQodHlwZS5jcmVhdGUocmVzcG9uc2UpKTsKKyAgICAgICAgaWYgKCF0
eXBlLmVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gZmls
dGVyID0gdHlwZS5jcmVhdGUoKTsKKyAgICAgICAgQVNTRVJUKGZpbHRlcik7CisgICAgICAgIGZp
bHRlcnMuYXBwZW5kKFdURjo6bW92ZShmaWx0ZXIpKTsKICAgICB9CiAKICAgICBpZiAoZmlsdGVy
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4oV1RGOjptb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExv
YWRlcik7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4oV1RGOjpt
b3ZlKGZpbHRlcnMpLCBXVEY6Om1vdmUoZGVjaXNpb25GdW5jdGlvbikpOwogfQogCi1Db250ZW50
RmlsdGVyOjpDb250ZW50RmlsdGVyKENvbnRhaW5lciBjb250ZW50RmlsdGVycywgRG9jdW1lbnRM
b2FkZXImIGRvY3VtZW50TG9hZGVyKQorQ29udGVudEZpbHRlcjo6Q29udGVudEZpbHRlcihDb250
YWluZXIgY29udGVudEZpbHRlcnMsIERlY2lzaW9uRnVuY3Rpb24gZGVjaXNpb25GdW5jdGlvbikK
ICAgICA6IG1fY29udGVudEZpbHRlcnMgeyBXVEY6Om1vdmUoY29udGVudEZpbHRlcnMpIH0KLSAg
ICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBkb2N1bWVudExvYWRlciB9CisgICAgLCBtX2RlY2lzaW9u
RnVuY3Rpb24geyBXVEY6Om1vdmUoZGVjaXNpb25GdW5jdGlvbikgfQorICAgICwgbV9ibG9ja2lu
Z0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH0KKyAgICAsIG1fc3RhdGUgeyBTdGF0ZTo6SW5pdGlh
bGl6ZWQgfQogewogICAgIEFTU0VSVCghbV9jb250ZW50RmlsdGVycy5pc0VtcHR5KCkpOwogfQog
Ci12b2lkIENvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKK0NvbnRlbnRGaWx0ZXI6On5Db250ZW50RmlsdGVyKCkKIHsKLSAgICBBU1NFUlQobmVlZHNN
b3JlRGF0YSgpKTsKLQotICAgIGZvciAoYXV0byYgY29udGVudEZpbHRlciA6IG1fY29udGVudEZp
bHRlcnMpCi0gICAgICAgIGNvbnRlbnRGaWx0ZXItPmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAg
ICBpZiAoIW1fbWFpblJlc291cmNlKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1fbWFp
blJlc291cmNlLT5oYXNDbGllbnQodGhpcykpOworICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVD
bGllbnQodGhpcyk7CiB9Ci0gICAgCi12b2lkIENvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5n
RGF0YSgpCi17Ci0gICAgQVNTRVJUKG5lZWRzTW9yZURhdGEoKSk7CiAKLSAgICBmb3IgKGF1dG8m
IGNvbnRlbnRGaWx0ZXIgOiBtX2NvbnRlbnRGaWx0ZXJzKQotICAgICAgICBjb250ZW50RmlsdGVy
LT5maW5pc2hlZEFkZGluZ0RhdGEoKTsKK3ZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJp
bmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291cmNlKQoreworICAgIEFTU0VS
VChtX3N0YXRlID09IFN0YXRlOjpJbml0aWFsaXplZCk7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpG
aWx0ZXJpbmc7CisgICAgQVNTRVJUKCFtX21haW5SZXNvdXJjZSk7CisgICAgbV9tYWluUmVzb3Vy
Y2UgPSAmcmVzb3VyY2U7CisgICAgQVNTRVJUKCFtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KHRo
aXMpKTsKKyAgICBtX21haW5SZXNvdXJjZS0+YWRkQ2xpZW50KHRoaXMpOworfQogCi0gICAgQVNT
RVJUKCFuZWVkc01vcmVEYXRhKCkpOworQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIENvbnRl
bnRGaWx0ZXI6OnVuYmxvY2tIYW5kbGVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9
PSBTdGF0ZTo6QmxvY2tlZCk7CisgICAgQVNTRVJUKG1fYmxvY2tpbmdDb250ZW50RmlsdGVyICYm
IG1fYmxvY2tpbmdDb250ZW50RmlsdGVyLT5kaWRCbG9ja0RhdGEoKSk7CisgICAgcmV0dXJuIG1f
YmxvY2tpbmdDb250ZW50RmlsdGVyLT51bmJsb2NrSGFuZGxlcigpOwogfQogCi1ib29sIENvbnRl
bnRGaWx0ZXI6Om5lZWRzTW9yZURhdGEoKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ29u
dGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIGNv
bnRlbnRGaWx0ZXIgOiBtX2NvbnRlbnRGaWx0ZXJzKSB7Ci0gICAgICAgIGlmIChjb250ZW50Rmls
dGVyLT5uZWVkc01vcmVEYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Cisg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkJsb2NrZWQpOworICAgIEFTU0VSVChtX2Jsb2Nr
aW5nQ29udGVudEZpbHRlciAmJiBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+ZGlkQmxvY2tEYXRh
KCkpOworICAgIHJldHVybiBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRh
KCk7Cit9CiAKLSAgICByZXR1cm4gZmFsc2U7CitTdHJpbmcgQ29udGVudEZpbHRlcjo6dW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQoKSBjb25zdAoreworICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpCbG9ja2VkKTsKKyAgICBBU1NFUlQobV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgJiYgbV9i
bG9ja2luZ0NvbnRlbnRGaWx0ZXItPmRpZEJsb2NrRGF0YSgpKTsKKyAgICByZXR1cm4gbV9ibG9j
a2luZ0NvbnRlbnRGaWx0ZXItPnVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KCk7CiB9CiAKLWJv
b2wgQ29udGVudEZpbHRlcjo6ZGlkQmxvY2tEYXRhKCkgY29uc3QKK3ZvaWQgQ29udGVudEZpbHRl
cjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIGZvciAoYXV0byYgY29udGVudEZpbHRlciA6
IG1fY29udGVudEZpbHRlcnMpIHsKLSAgICAgICAgaWYgKGNvbnRlbnRGaWx0ZXItPmRpZEJsb2Nr
RGF0YSgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpOworICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJl
c291cmNlID09IG1fbWFpblJlc291cmNlLmdldCgpKTsKKyAgICBmb3JFYWNoQ29udGVudEZpbHRl
clVudGlsQmxvY2tlZChbJnJlc3BvbnNlXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRG
aWx0ZXIpIHsKKyAgICAgICAgY29udGVudEZpbHRlci5yZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNl
KTsKKyAgICB9KTsKK30KIAotICAgIHJldHVybiBmYWxzZTsKK3ZvaWQgQ29udGVudEZpbHRlcjo6
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgY2hhciogZGF0YSwg
aW50IGxlbmd0aCkKK3sKKyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZS5n
ZXQoKSk7CisgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2RhdGEsIGxlbmd0
aF0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CisgICAgICAgIGNvbnRl
bnRGaWx0ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAgIH0pOwogfQogCi1jb25zdCBjaGFy
KiBDb250ZW50RmlsdGVyOjpnZXRSZXBsYWNlbWVudERhdGEoaW50JiBsZW5ndGgpIGNvbnN0Cit2
b2lkIENvbnRlbnRGaWx0ZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKIHsKLSAgICBBU1NFUlQoIW5lZWRzTW9yZURhdGEoKSk7CisgICAgQVNTRVJUKG1fc3RhdGUg
PT0gU3RhdGU6OkZpbHRlcmluZyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3Vy
Y2UgPT0gbV9tYWluUmVzb3VyY2UuZ2V0KCkpOworICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50
aWxCbG9ja2VkKFtdKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgeworICAg
ICAgICBjb250ZW50RmlsdGVyLmZpbmlzaGVkQWRkaW5nRGF0YSgpOworICAgIH0pOworfQogCit2
b2lkIENvbnRlbnRGaWx0ZXI6OmZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKHN0ZDo6
ZnVuY3Rpb248dm9pZChQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImKT4gZnVuY3Rpb24pCit7CisgICAg
Ym9vbCBhbGxGaWx0ZXJzQWxsb3dlZExvYWQgeyB0cnVlIH07CiAgICAgZm9yIChhdXRvJiBjb250
ZW50RmlsdGVyIDogbV9jb250ZW50RmlsdGVycykgewotICAgICAgICBpZiAoY29udGVudEZpbHRl
ci0+ZGlkQmxvY2tEYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gY29udGVudEZpbHRlci0+Z2V0
UmVwbGFjZW1lbnREYXRhKGxlbmd0aCk7CisgICAgICAgIGlmICghY29udGVudEZpbHRlci0+bmVl
ZHNNb3JlRGF0YSgpKSB7CisgICAgICAgICAgICBBU1NFUlQoIWNvbnRlbnRGaWx0ZXItPmRpZEJs
b2NrRGF0YSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24oKmNvbnRlbnRGaWx0ZXIpOworCisgICAgICAgIGlmIChjb250ZW50RmlsdGVyLT5k
aWRCbG9ja0RhdGEoKSkgeworICAgICAgICAgICAgQVNTRVJUKCFtX2Jsb2NraW5nQ29udGVudEZp
bHRlcik7CisgICAgICAgICAgICBtX2Jsb2NraW5nQ29udGVudEZpbHRlciA9IGNvbnRlbnRGaWx0
ZXIuZ2V0KCk7CisgICAgICAgICAgICBkaWREZWNpZGUoU3RhdGU6OkJsb2NrZWQpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRGaWx0ZXItPm5lZWRzTW9y
ZURhdGEoKSkKKyAgICAgICAgICAgIGFsbEZpbHRlcnNBbGxvd2VkTG9hZCA9IGZhbHNlOwogICAg
IH0KIAotICAgIHJldHVybiBtX2NvbnRlbnRGaWx0ZXJzWzBdLT5nZXRSZXBsYWNlbWVudERhdGEo
bGVuZ3RoKTsKKyAgICBpZiAoYWxsRmlsdGVyc0FsbG93ZWRMb2FkKQorICAgICAgICBkaWREZWNp
ZGUoU3RhdGU6OkFsbG93ZWQpOwogfQogCi1Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgQ29u
dGVudEZpbHRlcjo6dW5ibG9ja0hhbmRsZXIoKSBjb25zdAordm9pZCBDb250ZW50RmlsdGVyOjpk
aWREZWNpZGUoU3RhdGUgc3RhdGUpCiB7Ci0gICAgQVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsKKyAg
ICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6QWxsb3dlZCAmJiBtX3N0YXRlICE9IFN0YXRlOjpC
bG9ja2VkKTsKKyAgICBBU1NFUlQoc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQgfHwgc3RhdGUgPT0g
U3RhdGU6OkJsb2NrZWQpOworICAgIG1fc3RhdGUgPSBzdGF0ZTsKIAotICAgIFBsYXRmb3JtQ29u
dGVudEZpbHRlciogYmxvY2tpbmdGaWx0ZXIgPSBudWxscHRyOwotICAgIGZvciAoYXV0byYgY29u
dGVudEZpbHRlciA6IG1fY29udGVudEZpbHRlcnMpIHsKLSAgICAgICAgaWYgKGNvbnRlbnRGaWx0
ZXItPmRpZEJsb2NrRGF0YSgpKSB7Ci0gICAgICAgICAgICBibG9ja2luZ0ZpbHRlciA9IGNvbnRl
bnRGaWx0ZXIuZ2V0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBBU1NFUlQoYmxvY2tpbmdGaWx0ZXIpOwotCi0gICAgU3RyaW5nQ2FwdHVyZSB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCB7IGJsb2NraW5nRmlsdGVyLT51bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCgpIH07Ci0gICAgaWYgKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LnN0cmluZygpLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGJsb2NraW5nRmlsdGVyLT51bmJsb2NrSGFuZGxlcigp
OwotCi0gICAgLy8gSXQgd291bGQgYmUgYSBsYXllcmluZyB2aW9sYXRpb24gZm9yIHRoZSB1bmJs
b2NrIGhhbmRsZXIgdG8gYWNjZXNzIGl0cyBmcmFtZSwKLSAgICAvLyBzbyB3ZSB3aWxsIGV4ZWN1
dGUgdGhlIHVuYmxvY2sgZGVuaWVkIHNjcmlwdCBvbiBpdHMgYmVoYWxmLgotICAgIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciB7IGJsb2NraW5nRmlsdGVyLT51bmJs
b2NrSGFuZGxlcigpIH07Ci0gICAgUmVmUHRyPEZyYW1lPiBmcmFtZSB7IG1fZG9jdW1lbnRMb2Fk
ZXIuZnJhbWUoKSB9OwotICAgIHJldHVybiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgewot
ICAgICAgICB1bmJsb2NrSGFuZGxlci51bmJsb2NrVVJMSG9zdCgpLCBbdW5ibG9ja0hhbmRsZXIs
IGZyYW1lLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdF0oQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyOjpEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiBkZWNpc2lvbkhhbmRsZXIpIHsKLSAgICAg
ICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW2RlY2lzaW9uSGFuZGxl
ciwgZnJhbWUsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0XShib29sIHVuYmxvY2tlZCkgewot
ICAgICAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOwotICAgICAgICAgICAg
ICAgIGlmICghdW5ibG9ja2VkICYmIGZyYW1lKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+
c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdCh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5zdHJpbmco
KSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH07CisgICAgLy8gQ2FsbGluZyBt
X2RlY2lzaW9uRnVuY3Rpb24gbWlnaHQgZGVsZXRlIHx0aGlzfC4KKyAgICBpZiAobV9kZWNpc2lv
bkZ1bmN0aW9uKQorICAgICAgICBtX2RlY2lzaW9uRnVuY3Rpb24oKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKaW5kZXggMmU4
Y2NhZDU2ZGQ0YjUwZDgzOTQyZGU5OTM5MDljMjU4NzlmMmFhNC4uMzllOTU5NTljNmI4YTJlOTE4
NDQ3NThlMGUwNDViZDczMGI4NWI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5oCkBAIC0yOCw0NyArMjgsNzggQEAKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
IAotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRlci5oIgorI2luY2x1ZGUgIkNhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNp
bmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBEb2N1bWVudExvYWRlcjsKLWNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CitjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKK2NsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjsKK2NsYXNzIFBsYXRmb3JtQ29udGVudEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKKworY2xhc3MgQ29udGVudEZpbHRlciBmaW5hbCA6IHByaXZhdGUgQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENvbnRlbnRGaWx0ZXIpOwogCi1jbGFzcyBDb250ZW50RmlsdGVyIGZpbmFsIDog
cHVibGljIFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIGFkZFR5cGUoKSB7IHR5cGVzKCkuYXBwZW5kKHR5cGU8VD4o
KSk7IH0KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZUlm
TmVlZGVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBEb2N1bWVudExvYWRlciYpOwogCi0gICAg
dm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwotICAg
IHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBuZWVkc01vcmVE
YXRhKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBkaWRCbG9ja0RhdGEoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBjb25zdCBjaGFyKiBnZXRSZXBsYWNlbWVudERhdGEoaW50JiBsZW5ndGgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHVzaW5nIERlY2lzaW9uRnVuY3Rpb24gPSBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT47CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50Rmls
dGVyPiBjcmVhdGVJZk5lZWRlZChEZWNpc2lvbkZ1bmN0aW9uKTsKKyAgICB+Q29udGVudEZpbHRl
cigpIG92ZXJyaWRlOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVybFNjaGVtZSgpIHsgcmV0
dXJuICJ4LWFwcGxlLWNvbnRlbnQtZmlsdGVyIjsgfQorCisgICAgdm9pZCBzdGFydEZpbHRlcmlu
Z01haW5SZXNvdXJjZShDYWNoZWRSYXdSZXNvdXJjZSYpOworCisgICAgZW51bSBjbGFzcyBTdGF0
ZSB7CisgICAgICAgIEluaXRpYWxpemVkLAorICAgICAgICBGaWx0ZXJpbmcsCisgICAgICAgIEFs
bG93ZWQsCisgICAgICAgIEJsb2NrZWQKKyAgICB9OworICAgIFN0YXRlIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQorICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJs
b2NrSGFuZGxlcigpIGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50
RGF0YSgpIGNvbnN0OworICAgIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBUeXBlIHsKLSAgICAgICAgY29uc3Qgc3RkOjpm
dW5jdGlvbjxib29sKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKT4gY2FuSGFuZGxlUmVzcG9uc2U7
Ci0gICAgICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29u
dGVudEZpbHRlcj4oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpPiBjcmVhdGU7CisgICAgICAgIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCgpPiBlbmFibGVkOworICAgICAgICBjb25zdCBzdGQ6OmZ1
bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI+KCk+IGNyZWF0ZTsK
ICAgICB9OwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgVHlwZSB0eXBlKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxUeXBlPiYgdHlwZXMoKTsKIAogICAgIHVz
aW5nIENvbnRhaW5lciA9IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZW50Rmls
dGVyPj47Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBzdGQ6Om1h
a2VfdW5pcXVlPENvbnRlbnRGaWx0ZXI+KENvbnRhaW5lciYmLCBEb2N1bWVudExvYWRlciYpOwot
ICAgIGV4cGxpY2l0IENvbnRlbnRGaWx0ZXIoQ29udGFpbmVyLCBEb2N1bWVudExvYWRlciYpOwor
ICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50RmlsdGVyPihDb250YWluZXImJiwgRGVjaXNpb25GdW5jdGlvbiYmKTsKKyAgICBD
b250ZW50RmlsdGVyKENvbnRhaW5lciwgRGVjaXNpb25GdW5jdGlvbik7CisKKyAgICAvLyBDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudAorICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpIG92
ZXJyaWRlOworCisgICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKKyAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGZvckVhY2hDb250
ZW50RmlsdGVyVW50aWxCbG9ja2VkKHN0ZDo6ZnVuY3Rpb248dm9pZChQbGF0Zm9ybUNvbnRlbnRG
aWx0ZXImKT4pOworICAgIHZvaWQgZGlkRGVjaWRlKFN0YXRlKTsKIAotICAgIENvbnRhaW5lciBt
X2NvbnRlbnRGaWx0ZXJzOwotICAgIERvY3VtZW50TG9hZGVyJiBtX2RvY3VtZW50TG9hZGVyOwor
ICAgIGNvbnN0IENvbnRhaW5lciBtX2NvbnRlbnRGaWx0ZXJzOworICAgIGNvbnN0IERlY2lzaW9u
RnVuY3Rpb24gbV9kZWNpc2lvbkZ1bmN0aW9uOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJjZTsKKyAgICBQbGF0Zm9ybUNvbnRlbnRGaWx0
ZXIqIG1fYmxvY2tpbmdDb250ZW50RmlsdGVyOworICAgIFN0YXRlIG1fc3RhdGU7CiB9OwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIENvbnRlbnRGaWx0ZXI6OlR5cGUgQ29udGVudEZpbHRlcjo6
dHlwZSgpCiB7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Y8UGxhdGZvcm1Db250
ZW50RmlsdGVyLCBUPjo6dmFsdWUsICJUeXBlIG11c3QgYmUgYSBQbGF0Zm9ybUNvbnRlbnRGaWx0
ZXIuIik7Ci0gICAgcmV0dXJuIHsgVDo6Y2FuSGFuZGxlUmVzcG9uc2UsIFQ6OmNyZWF0ZSB9Owor
ICAgIHJldHVybiB7IFQ6OmVuYWJsZWQsIFQ6OmNyZWF0ZSB9OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBi
MTA5ZTc0MjNkNzY4MzJmN2NkZGFhOTFjMmNhNGJiM2QyOWVlMzIwLi5hYjlmNGE0NjQwYzJmZmYw
ODBlOTgzOTU5NjhkMzI1ODQ4OTQwZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5
LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9s
aWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRl
ci5oIgpAQCAtMTQwLDYgKzE0MSw5IEBAIERvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcSwgY29uc3QgU3Vic3RpdHV0ZURhdGEmCiAgICAgLCBt
X3dhaXRpbmdGb3JDb250ZW50UG9saWN5KGZhbHNlKQogICAgICwgbV9zdWJyZXNvdXJjZUxvYWRl
cnNBcmVQYWdlQ2FjaGVBY2NlcHRhYmxlKGZhbHNlKQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hl
SG9zdChhZG9wdFB0cihuZXcgQXBwbGljYXRpb25DYWNoZUhvc3QoKnRoaXMpKSkKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCisgICAgLCBtX2NvbnRlbnRGaWx0ZXIoIXN1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZUlmTmVlZGVkKHN0ZDo6YmluZCgm
RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWREZWNpZGUsIHRoaXMpKSA6IG51bGxwdHIp
CisjZW5kaWYKIHsKIH0KIApAQCAtNDAxLDIxICs0MDUsNiBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpmaW5pc2hlZExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKHRoaXMsIGlkZW50aWZpZXIs
IGZpbmlzaFRpbWUpOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAg
ICBpZiAobV9jb250ZW50RmlsdGVyICYmIG1fY29udGVudEZpbHRlci0+bmVlZHNNb3JlRGF0YSgp
KSB7Ci0gICAgICAgIG1fY29udGVudEZpbHRlci0+ZmluaXNoZWRBZGRpbmdEYXRhKCk7Ci0gICAg
ICAgIGludCBsZW5ndGg7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBtX2NvbnRlbnRGaWx0
ZXItPmdldFJlcGxhY2VtZW50RGF0YShsZW5ndGgpOwotICAgICAgICBpZiAoZGF0YSkKLSAgICAg
ICAgICAgIGRhdGFSZWNlaXZlZChtX21haW5SZXNvdXJjZS5nZXQoKSwgZGF0YSwgbGVuZ3RoKTsK
LQotICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyLT5kaWRCbG9ja0RhdGEoKSkgewotICAgICAg
ICAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9hZCht
X2NvbnRlbnRGaWx0ZXItPnVuYmxvY2tIYW5kbGVyKCkpOwotICAgICAgICAgICAgbV9jb250ZW50
RmlsdGVyID0gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCiAgICAgbWF5YmVG
aW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpOwogCiAgICAgZG91YmxlIHJlc3BvbnNlRW5k
VGltZSA9IGZpbmlzaFRpbWU7CkBAIC02NjIsMTAgKzY1MSw2IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNv
dXJjZVJlCiAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0g
ICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlSWZOZWVkZWQocmVzcG9u
c2UsICp0aGlzKTsKLSNlbmRpZgotCiAgICAgZnJhbWVMb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigp
LmNoZWNrQ29udGVudFBvbGljeShtX3Jlc3BvbnNlLCBbdGhpc10oUG9saWN5QWN0aW9uIHBvbGlj
eSkgewogICAgICAgICBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShwb2xpY3kpOwogICAgIH0p
OwpAQCAtODE4LDE0ICs4MDMsNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQogCiAgICAgICAgIGJvb2wgdXNlckNob3Nl
bjsKICAgICAgICAgU3RyaW5nIGVuY29kaW5nOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKLSAgICAgICAgLy8gVGhlIGNvbnRlbnQgZmlsdGVyJ3MgcmVwbGFjZW1lbnQgZGF0YSBoYXMg
YSBrbm93biBlbmNvZGluZyB0aGF0IG1pZ2h0Ci0gICAgICAgIC8vIGRpZmZlciBmcm9tIHRoZSBy
ZXNwb25zZSdzIGVuY29kaW5nLgotICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmIG1fY29u
dGVudEZpbHRlci0+ZGlkQmxvY2tEYXRhKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV9jb250
ZW50RmlsdGVyLT5uZWVkc01vcmVEYXRhKCkpOwotICAgICAgICAgICAgdXNlckNob3NlbiA9IGZh
bHNlOwotICAgICAgICB9IGVsc2UKLSNlbmRpZgogICAgICAgICBpZiAob3ZlcnJpZGVFbmNvZGlu
ZygpLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICB1c2VyQ2hvc2VuID0gZmFsc2U7CiAgICAgICAg
ICAgICBlbmNvZGluZyA9IHJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpOwpAQCAtODcwLDI2
ICs4NDcsNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbgogICAgIEFTU0VSVCghbWFpblJlc291
cmNlTG9hZGVyKCkgfHwgIW1haW5SZXNvdXJjZUxvYWRlcigpLT5kZWZlcnNMb2FkaW5nKCkpOwog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgYm9vbCBsb2FkV2Fz
QmxvY2tlZEJlZm9yZUZpbmlzaGluZyA9IGZhbHNlOwotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIg
JiYgbV9jb250ZW50RmlsdGVyLT5uZWVkc01vcmVEYXRhKCkpIHsKLSAgICAgICAgbV9jb250ZW50
RmlsdGVyLT5hZGREYXRhKGRhdGEsIGxlbmd0aCk7Ci0KLSAgICAgICAgaWYgKG1fY29udGVudEZp
bHRlci0+bmVlZHNNb3JlRGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaW5jZSB0aGUgZmlsdGVy
IHN0aWxsIG5lZWRzIG1vcmUgZGF0YSB0byBtYWtlIGEgZGVjaXNpb24sCi0gICAgICAgICAgICAv
LyBhdm9pZCBjb21taXR0aW5nIHRoaXMgZGF0YSB0byBwcmV2ZW50IHBhcnRpYWwgcmVuZGVyaW5n
IG9mCi0gICAgICAgICAgICAvLyBjb250ZW50IHRoYXQgbWlnaHQgbGF0ZXIgYmUgYmxvY2tlZC4K
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGRhdGEgPSBtX2NvbnRl
bnRGaWx0ZXItPmdldFJlcGxhY2VtZW50RGF0YShsZW5ndGgpOwotICAgICAgICBsb2FkV2FzQmxv
Y2tlZEJlZm9yZUZpbmlzaGluZyA9IG1fY29udGVudEZpbHRlci0+ZGlkQmxvY2tEYXRhKCk7Ci0K
LSAgICAgICAgaWYgKGxvYWRXYXNCbG9ja2VkQmVmb3JlRmluaXNoaW5nKQotICAgICAgICAgICAg
ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChtX2NvbnRl
bnRGaWx0ZXItPnVuYmxvY2tIYW5kbGVyKCkpOwotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKG1f
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIGZyYW1lTG9h
ZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YSh0aGlzLCBtX2lkZW50aWZp
ZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCBkYXRhLCBsZW5ndGgsIC0xKTsKIApAQCAt
ODk4LDEzICs4NTUsNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbgogCiAgICAgaWYgKCFpc011
bHRpcGFydFJlcGxhY2luZ0xvYWQoKSkKICAgICAgICAgY29tbWl0TG9hZChkYXRhLCBsZW5ndGgp
OwotCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChsb2FkV2FzQmxvY2tl
ZEJlZm9yZUZpbmlzaGluZykgewotICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1l
TG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkpOwotICAgICAgICBtX2NvbnRlbnRG
aWx0ZXIgPSBudWxscHRyOwotICAgIH0KLSNlbmRpZgogfQogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpzZXR1cEZvclJlcGxhY2UoKQpAQCAtOTYwLDYgKzkxMCw5IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRldGFjaEZyb21GcmFtZSgpCiAgICAgc3RvcExvYWRpbmcoKTsKICAgICBpZiAobV9tYWlu
UmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCh0aGlzKSkKICAgICAgICAgbV9t
YWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCisgICAgbV9jb250ZW50RmlsdGVyID0gbnVsbHB0cjsKKyNlbmRpZgogCiAgICAgbV9h
cHBsaWNhdGlvbkNhY2hlSG9zdC0+c2V0RE9NQXBwbGljYXRpb25DYWNoZShudWxscHRyKTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxvYWRlckRldGFjaGVkRnJvbUZyYW1lKCptX2Zy
YW1lLCAqdGhpcyk7CkBAIC0xNDcxLDcgKzE0MjQsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZp
ZXIoKS5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChtX2lkZW50aWZpZXJGb3JMb2Fk
V2l0aG91dFJlc291cmNlTG9hZGVyLCB0aGlzLCByZXF1ZXN0KTsKICAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCh0aGlzLCBtX2lkZW50aWZp
ZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNl
KCkpOwogICAgIH0KKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAgICBiZWNvbWVN
YWluUmVzb3VyY2VDbGllbnRJZkZpbHRlckFsbG93cygpOworI2Vsc2UKICAgICBtX21haW5SZXNv
dXJjZS0+YWRkQ2xpZW50KHRoaXMpOworI2VuZGlmCiAKICAgICAvLyBBIGJ1bmNoIG9mIGhlYWRl
cnMgYXJlIHNldCB3aGVuIHRoZSB1bmRlcmx5aW5nIFJlc291cmNlTG9hZGVyIGlzIGNyZWF0ZWQs
IGFuZCBtX3JlcXVlc3QgbmVlZHMgdG8gaW5jbHVkZSB0aG9zZS4KICAgICBpZiAobWFpblJlc291
cmNlTG9hZGVyKCkpCkBAIC0xNTA3LDYgKzE0NjUsOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpj
bGVhck1haW5SZXNvdXJjZSgpCiB7CiAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFpblJl
c291cmNlLT5oYXNDbGllbnQodGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVD
bGllbnQodGhpcyk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorICAgIG1fY29udGVu
dEZpbHRlciA9IG51bGxwdHI7CisjZW5kaWYKIAogICAgIG1fbWFpblJlc291cmNlID0gMDsKIH0K
QEAgLTE2MDAsNCArMTU2MSw1NiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRQZW5kaW5nQ29u
dGVudEV4dGVuc2lvblNoZWV0KFN0eWxlU2hlZXRDb250ZW50cyYgc2hlZXQpCiB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmJl
Y29tZU1haW5SZXNvdXJjZUNsaWVudElmRmlsdGVyQWxsb3dzKCkKK3sKKyAgICBBU1NFUlQobV9t
YWluUmVzb3VyY2UpOworICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgQVNTRVJU
KG1fY29udGVudEZpbHRlci0+c3RhdGUoKSA9PSBDb250ZW50RmlsdGVyOjpTdGF0ZTo6SW5pdGlh
bGl6ZWQpOworICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291
cmNlKCptX21haW5SZXNvdXJjZSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fbWFpblJlc291cmNl
LT5hZGRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6Omluc3RhbGxDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikKK3sK
KyAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIgeyBjb250ZW50
RmlsdGVyLnVuYmxvY2tIYW5kbGVyKCkgfTsKKyAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNo
YWJsZVVSTChkb2N1bWVudFVSTCgpKTsKKyAgICBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQgeyBjb250ZW50RmlsdGVyLnVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KCkgfTsKKyAg
ICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSkgeworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxUaHJlYWRTYWZlUmVmQ291bnRlZDxGcmFtZT4s
IEZyYW1lPjo6dmFsdWUsICJGcmFtZSBtdXN0IGJlIFRocmVhZFNhZmVSZWZDb3VudGVkLiIpOwor
ICAgICAgICBSZWZQdHI8RnJhbWU+IGZyYW1lIHsgdGhpcy0+ZnJhbWUoKSB9OworICAgICAgICBT
dHJpbmdDYXB0dXJlIGNhcHR1cmVkU2NyaXB0IHsgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQg
fTsKKyAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW2ZyYW1l
LCBjYXB0dXJlZFNjcmlwdF0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAgICAgIGlmICghdW5i
bG9ja2VkICYmIGZyYW1lKQorICAgICAgICAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5leGVjdXRl
U2NyaXB0KGNhcHR1cmVkU2NyaXB0LnN0cmluZygpKTsKKyAgICAgICAgfSk7CisgICAgfQorICAg
IGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGOjpt
b3ZlKHVuYmxvY2tIYW5kbGVyKSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRG
aWx0ZXJEaWREZWNpZGUoKQoreworICAgIHVzaW5nIFN0YXRlID0gQ29udGVudEZpbHRlcjo6U3Rh
dGU7CisgICAgQVNTRVJUKG1fY29udGVudEZpbHRlcik7CisgICAgQVNTRVJUKG1fY29udGVudEZp
bHRlci0+c3RhdGUoKSA9PSBTdGF0ZTo6QmxvY2tlZCB8fCBtX2NvbnRlbnRGaWx0ZXItPnN0YXRl
KCkgPT0gU3RhdGU6OkFsbG93ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVy
PiBjb250ZW50RmlsdGVyOworICAgIHN0ZDo6c3dhcChjb250ZW50RmlsdGVyLCBtX2NvbnRlbnRG
aWx0ZXIpOworICAgIGlmIChjb250ZW50RmlsdGVyLT5zdGF0ZSgpID09IFN0YXRlOjpBbGxvd2Vk
KSB7CisgICAgICAgIGlmIChtX21haW5SZXNvdXJjZSkKKyAgICAgICAgICAgIG1fbWFpblJlc291
cmNlLT5hZGRDbGllbnQodGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnN0
YWxsQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKCpjb250ZW50RmlsdGVyKTsKKworICAgIFVS
TCBibG9ja2VkVVJMOworICAgIGJsb2NrZWRVUkwuc2V0UHJvdG9jb2woQ29udGVudEZpbHRlcjo6
dXJsU2NoZW1lKCkpOworICAgIGJsb2NrZWRVUkwuc2V0SG9zdChBU0NJSUxpdGVyYWwoImJsb2Nr
ZWQtcGFnZSIpKTsKKyAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSB7IGNvbnRlbnRG
aWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpLCBBU0NJSUxpdGVyYWwoInRleHQvaHRtbCIpLCBBU0NJ
SUxpdGVyYWwoIlVURi04IiksIGRvY3VtZW50VVJMKCkgfTsKKyAgICBmcmFtZSgpLT5uYXZpZ2F0
aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVTdWJzdGl0dXRlRGF0YUxvYWQoYmxvY2tlZFVSTCwgc3Vi
c3RpdHV0ZURhdGEpOworfQorI2VuZGlmCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBiMDNhZmZlMDdjNDFiODE3NmEx
YTZiNzdjMTA4ZjU5YzVkMDNiMGI1Li5hYjU3ZWU5NmJjNWNkOTRlNGY1YjIyNzIwMjg4ZWJjZjJl
YjFkNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNjQsNyAr
NjQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbjsKICAgICBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKICAgICBjbGFzcyBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjsKLSAgICBjbGFzcyBDb250ZW50RmlsdGVyOwogICAgIGNsYXNzIEZvcm1T
dGF0ZTsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZUxvYWRlcjsKQEAgLTczLDYg
KzcyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CiAg
ICAgY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQorICAgIGNsYXNzIENvbnRlbnRGaWx0ZXI7CisjZW5kaWYKKwogICAgIHR5cGVkZWYgSGFz
aE1hcDx1bnNpZ25lZCBsb25nLCBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBSZXNvdXJjZUxvYWRl
ck1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxSZXNvdXJjZVJlc3BvbnNlPiBSZXNwb25zZVZlY3Rv
cjsKIApAQCAtMzMwLDYgKzMzMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dm9pZCBjbGVhck1haW5SZXNvdXJjZSgpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorICAgICAgICB2b2lkIGJlY29tZU1haW5SZXNvdXJjZUNsaWVudElmRmlsdGVyQWxsb3dzKCk7
CisgICAgICAgIHZvaWQgaW5zdGFsbENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcihDb250ZW50
RmlsdGVyJik7CisgICAgICAgIHZvaWQgY29udGVudEZpbHRlckRpZERlY2lkZSgpOworI2VuZGlm
CisKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFJlZjxDYWNoZWRSZXNvdXJjZUxv
YWRlcj4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggMTA1YzgyYzAwYjFkOGZhNmY5MzAwOWQzMDNmODlhMzBjNjNiMDgyNS4u
ZDAwZWRjOTI4NDkwNDJlN2UzNTlmYzA3MmRmOTRiNTEwYjMxNTljMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMTI0LDcgKzExMjQsNiBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpzdGFydGVkKCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckxvYWRTdGFydCgp
CiB7Ci0gICAgcG9saWN5Q2hlY2tlcigpLnByZXBhcmVGb3JMb2FkU3RhcnQoKTsKICAgICBtX3By
b2dyZXNzVHJhY2tlci0+cHJvZ3Jlc3NTdGFydGVkKCk7CiAgICAgbV9jbGllbnQuZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggM2FmMjhkYjk1ZTViNTQzMzNmMzA2ZTZkNWQ2MjZl
YzI4ZjZjODQzZi4uNGNhZDY4MmJmNjNmNTIzMWQ0NjkzZmFjOTBhOGVmNmY5NGI1ODRkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMjc4
LDYgKzI3OCwyNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXZlVG9sZENsaWVudDsKIH07CiAK
K2NsYXNzIFNjaGVkdWxlZFN1YnN0aXR1dGVEYXRhTG9hZCA6IHB1YmxpYyBTY2hlZHVsZWROYXZp
Z2F0aW9uIHsKK3B1YmxpYzoKKyAgICBTY2hlZHVsZWRTdWJzdGl0dXRlRGF0YUxvYWQoY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCisgICAg
ICAgIDogU2NoZWR1bGVkTmF2aWdhdGlvbiB7IDAsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tG
b3J3YXJkTGlzdDo6Tm8sIGZhbHNlLCBmYWxzZSB9CisgICAgICAgICwgbV9iYXNlVVJMIHsgYmFz
ZVVSTCB9CisgICAgICAgICwgbV9zdWJzdGl0dXRlRGF0YSB7IHN1YnN0aXR1dGVEYXRhIH0KKyAg
ICB7CisgICAgfQorCisgICAgdm9pZCBmaXJlKEZyYW1lJiBmcmFtZSkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IgeyB3YXNVc2Vy
R2VzdHVyZSgpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlO
b3RQcm9jZXNzaW5nVXNlckdlc3R1cmUgfTsKKyAgICAgICAgZnJhbWUubG9hZGVyKCkubG9hZChG
cmFtZUxvYWRSZXF1ZXN0IHsgJmZyYW1lLCBtX2Jhc2VVUkwsIG1fc3Vic3RpdHV0ZURhdGEgfSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFVSTCBtX2Jhc2VVUkw7CisgICAgU3Vic3RpdHV0ZURh
dGEgbV9zdWJzdGl0dXRlRGF0YTsKK307CisKIE5hdmlnYXRpb25TY2hlZHVsZXI6Ok5hdmlnYXRp
b25TY2hlZHVsZXIoRnJhbWUmIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1f
dGltZXIoKnRoaXMsICZOYXZpZ2F0aW9uU2NoZWR1bGVyOjp0aW1lckZpcmVkKQpAQCAtNDMwLDYg
KzQ1MCwxMiBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmln
YXRpb24oaW50IHN0ZXBzKQogICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVk
SGlzdG9yeU5hdmlnYXRpb24+KHN0ZXBzKSk7CiB9CiAKK3ZvaWQgTmF2aWdhdGlvblNjaGVkdWxl
cjo6c2NoZWR1bGVTdWJzdGl0dXRlRGF0YUxvYWQoY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBT
dWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCit7CisgICAgaWYgKHNob3VsZFNjaGVkdWxl
TmF2aWdhdGlvbigpKQorICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxl
ZFN1YnN0aXR1dGVEYXRhTG9hZD4oYmFzZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKK30KKwogdm9p
ZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjp0aW1lckZpcmVkKCkKIHsKICAgICBpZiAoIW1fZnJhbWUu
cGFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hl
ZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKaW5k
ZXggODUyMjg0MGFmMzI0MmMyNzA3MmMwY2NhNDM4Nzg2MTRiMzBmMTdmZi4uNGFlNWIxMGZmYWI1
YTA4ZGE0YWIzNzYyMzNlYjU5MGNmZDc5NDlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvblNjaGVkdWxlci5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIEZvcm1TdWJtaXNz
aW9uOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBTY2hlZHVsZWROYXZpZ2F0aW9uOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CitjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFVSTDsKIAogY2xhc3Mg
TmF2aWdhdGlvbkRpc2FibGVyRm9yQmVmb3JlVW5sb2FkIHsKQEAgLTczLDYgKzc0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2NoZWR1bGVGb3JtU3VibWlzc2lvbihQYXNzUmVmUHRyPEZvcm1TdWJt
aXNzaW9uPik7CiAgICAgdm9pZCBzY2hlZHVsZVJlZnJlc2goKTsKICAgICB2b2lkIHNjaGVkdWxl
SGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKTsKKyAgICB2b2lkIHNjaGVkdWxlU3Vic3RpdHV0
ZURhdGFMb2FkKGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKIAog
ICAgIHZvaWQgc3RhcnRUaW1lcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHAKaW5kZXggMTIxNTEyMTIwOTgxNWM1ZjFhY2ZiZmIwMWQzOWY1MjE5ZGU2ZGI2Ni4uYTNj
OTZhZmE2MjY2ODUzMzhlYTkzZGFlOGU1NTdjNGIwOWNkZTliZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtNTYsMTMgKzU2LDYgQEAgUG9saWN5Q2hlY2tlcjo6
UG9saWN5Q2hlY2tlcihGcmFtZSYgZnJhbWUpCiB7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6
cHJlcGFyZUZvckxvYWRTdGFydCgpCi17Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQot
ICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0geyB9OwotI2VuZGlmCi19Ci0KIHZv
aWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgbmV3UmVxdWVzdCwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rp
b24pCiB7CiAgICAgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KG5ld1JlcXVlc3QsIG1fZnJhbWUubG9h
ZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSwgbnVsbHB0ciwgV1RGOjptb3ZlKGZ1bmN0aW9u
KSk7CkBAIC0xMjAsNyArMTEzLDkgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRp
b25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1bWUKICAgICAgICAg
ICAgICAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKCk7CiAgICAgICAgIH0pOwogICAgICAgICBj
b250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lJZ25vcmUpOworICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0geyB9OwogI2Vu
ZGlmCiAKICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKaW5kZXggM2NhNGVhODgxZmMwNmNhOWNm
OTE3ODZkNjlmZmYxNTE1NGIyNjJhZS4uNTI4M2FkNDJlNDUyNTg4NjY4M2IxNGFmNjhkZWEzOTcw
MDg0OGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCkBAIC01NCw3ICs1
NCw2IEBAIGNsYXNzIFBvbGljeUNoZWNrZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IFBvbGlj
eUNoZWNrZXIoRnJhbWUmKTsKIAotICAgIHZvaWQgcHJlcGFyZUZvckxvYWRTdGFydCgpOwogICAg
IHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIERvY3Vt
ZW50TG9hZGVyKiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b25GdW5jdGlvbik7CiAgICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24pOwogICAgIHZvaWQg
Y2hlY2tOZXdXaW5kb3dQb2xpY3koY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAppbmRleCAzNWMy
NjU1YTM0YmU0ODliYmYzNzgyNTZhNjc1MmZkMGM1NTZkOTkxLi43ZDA0NGNjYzNlM2FkN2ZiM2Jk
N2MyNWQ2YWY0ZmI5ZDQ0ODgzZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Nyw4ICs0OCw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBE
ZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiA9IHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIHVuYmxvY2tl
ZCk+OwogICAgIHVzaW5nIFVuYmxvY2tSZXF1ZXN0ZXJGdW5jdGlvbiA9IHN0ZDo6ZnVuY3Rpb248
dm9pZChEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbik+OwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIq
IHVuYmxvY2tVUkxTY2hlbWUoKSB7IHJldHVybiAieC1hcHBsZS1jb250ZW50LWZpbHRlciI7IH0K
LQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcigpID0gZGVmYXVsdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoU3RyaW5nIHVuYmxvY2tVUkxI
b3N0LCBVbmJsb2NrUmVxdWVzdGVyRnVuY3Rpb24pOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTYw
LDExICs1OSwxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZGVj
b2RlKE5TQ29kZXIgKiwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdFVuYmxvY2tBc3luYyhEZWNpc2lv
bkhhbmRsZXJGdW5jdGlvbikgY29uc3Q7CisgICAgdm9pZCB3cmFwV2l0aERlY2lzaW9uSGFuZGxl
cihjb25zdCBEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiYpOwogCiAgICAgY29uc3QgU3RyaW5nJiB1
bmJsb2NrVVJMSG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5ibG9ja1VSTEhvc3Q7IH0KKyAgICBj
b25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV91bnJlYWNoYWJsZVVS
TDsgfQorICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV91bnJl
YWNoYWJsZVVSTCA9IHVybDsgfQogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3VuYmxvY2tVUkxI
b3N0OworICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOwogICAgIFVuYmxvY2tSZXF1ZXN0ZXJGdW5j
dGlvbiBtX3VuYmxvY2tSZXF1ZXN0ZXI7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFJldGFpblB0
cjxXZWJGaWx0ZXJFdmFsdWF0b3I+IG1fd2ViRmlsdGVyRXZhbHVhdG9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAppbmRleCAyZWU0MDhhNTQy
ZWQzNTJkNjBlNDlmY2EyYWI1YjZlMjIxMjM5MzZjLi41MDA2ZGM1Y2YxNDI2YTFkNGEwYzc5MzM5
NWY0NTA3NmMyYTQ1MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybUNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bUNvbnRlbnRGaWx0ZXIuaApAQCAtMjYsMTIgKzI2LDE0IEBACiAjaWZuZGVmIFBsYXRmb3JtQ29u
dGVudEZpbHRlcl9oCiAjZGVmaW5lIFBsYXRmb3JtQ29udGVudEZpbHRlcl9oCiAKLSNpbmNsdWRl
ICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1Db250ZW50RmlsdGVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQyLDExICs0NCwxMiBAQCBwcm90
ZWN0ZWQ6CiAKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc01vcmVEYXRhKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBkaWRCbG9ja0RhdGEoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFy
KiBnZXRSZXBsYWNlbWVudERhdGEoaW50JiBsZW5ndGgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIGNv
bnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ckNvY29hLm1tCmluZGV4IDI5OGIyMmM3ODAxZGM0MjBiZWM5NDViMTFkZDI1OWYyM2JiYTA3Yjku
LmI0NmNmZjg3OGQ2OTExN2UwNTdlZWY5MjU3MjE1OWE1MDY0NTcxZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlckNvY29hLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQogCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKKyNpbXBvcnQgIkNv
bnRlbnRGaWx0ZXIuaCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgogCiAjaWYgUExBVEZP
Uk0oSU9TKQpAQCAtNDMsNiArNDQsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJGaWx0
ZXJFdmFsdWF0b3JLZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsKICNlbmRpZgogCiBzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9ja1VSTEhvc3Qi
IH07CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7IEAidW5yZWFj
aGFibGVVUkwiIH07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjAsNiArNjIsMjEgQEAg
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIo
U3RyaW5nIHVuYmxvY2tVUkxIb3N0LAogfQogI2VuZGlmCiAKK3ZvaWQgQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyOjp3cmFwV2l0aERlY2lzaW9uSGFuZGxlcihjb25zdCBEZWNpc2lvbkhhbmRs
ZXJGdW5jdGlvbiYgZGVjaXNpb25IYW5kbGVyKQoreworICAgIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciB3cmFwcGVkIHsgKnRoaXMgfTsKKyAgICBVbmJsb2NrUmVxdWVzdGVyRnVuY3Rpb24g
d3JhcHBlZFJlcXVlc3RlciB7IFt3cmFwcGVkLCBkZWNpc2lvbkhhbmRsZXJdKERlY2lzaW9uSGFu
ZGxlckZ1bmN0aW9uIHdyYXBwZWREZWNpc2lvbkhhbmRsZXIpIHsKKyAgICAgICAgd3JhcHBlZC5y
ZXF1ZXN0VW5ibG9ja0FzeW5jKFt3cmFwcGVkRGVjaXNpb25IYW5kbGVyLCBkZWNpc2lvbkhhbmRs
ZXJdKGJvb2wgdW5ibG9ja2VkKSB7CisgICAgICAgICAgICB3cmFwcGVkRGVjaXNpb25IYW5kbGVy
KHVuYmxvY2tlZCk7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKKyAg
ICAgICAgfSk7CisgICAgfX07CisjaWYgUExBVEZPUk0oSU9TKQorICAgIG1fd2ViRmlsdGVyRXZh
bHVhdG9yID0gbnVsbHB0cjsKKyNlbmRpZgorICAgIHN0ZDo6c3dhcChtX3VuYmxvY2tSZXF1ZXN0
ZXIsIHdyYXBwZWRSZXF1ZXN0ZXIpOworfQorCiBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcjo6bmVlZHNVSVByb2Nlc3MoKSBjb25zdAogewogI2lmIFBMQVRGT1JNKElPUykKQEAgLTc0
LDYgKzkxLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZShOU0Nv
ZGVyICpjb2RlcikgY29uc3QKICAgICBBU1NFUlRfQVJHKGNvZGVyLCBjb2Rlci5hbGxvd3NLZXll
ZENvZGluZyAmJiBjb2Rlci5yZXF1aXJlc1NlY3VyZUNvZGluZyk7CiAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwogICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV91bmJsb2NrVVJMSG9z
dCBmb3JLZXk6dW5ibG9ja1VSTEhvc3RLZXldOworICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6KE5T
VVJMICopbV91bnJlYWNoYWJsZVVSTCBmb3JLZXk6dW5yZWFjaGFibGVVUkxLZXldOwogI2lmIFBM
QVRGT1JNKElPUykKICAgICBbY29kZXIgZW5jb2RlT2JqZWN0Om1fd2ViRmlsdGVyRXZhbHVhdG9y
LmdldCgpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCkBAIC04NSw2ICsx
MDMsNyBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZGVjb2RlKE5TQ29kZXIg
KmNvZGVyLCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbgogICAgIEFTU0VSVF9BUkcoY29kZXIsIGNv
ZGVyLmFsbG93c0tleWVkQ29kaW5nICYmIGNvZGVyLnJlcXVpcmVzU2VjdXJlQ29kaW5nKTsKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgdW5ibG9ja0hhbmRsZXIubV91bmJs
b2NrVVJMSG9zdCA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU1N0cmluZyBjbGFzc10g
Zm9yS2V5OnVuYmxvY2tVUkxIb3N0S2V5XTsKKyAgICB1bmJsb2NrSGFuZGxlci5tX3VucmVhY2hh
YmxlVVJMID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMIGNsYXNzXSBmb3JLZXk6
dW5yZWFjaGFibGVVUkxLZXldOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB1bmJsb2NrSGFuZGxl
ci5tX3dlYkZpbHRlckV2YWx1YXRvciA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFdl
YkZpbHRlckV2YWx1YXRvckNsYXNzKCkgZm9yS2V5OndlYkZpbHRlckV2YWx1YXRvcktleV07CiAj
ZW5kaWYKQEAgLTEwNCw3ICsxMjMsNyBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlcwogI2VuZGlm
CiAgICAgfQogCi0gICAgcmV0dXJuIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcyh1bmJsb2NrVVJM
U2NoZW1lKCkpICYmIGVxdWFsSWdub3JpbmdDYXNlKHJlcXVlc3QudXJsKCkuaG9zdCgpLCBtX3Vu
YmxvY2tVUkxIb3N0KTsKKyAgICByZXR1cm4gcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKENvbnRl
bnRGaWx0ZXI6OnVybFNjaGVtZSgpKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShyZXF1ZXN0LnVybCgp
Lmhvc3QoKSwgbV91bmJsb2NrVVJMSG9zdCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBkaXNw
YXRjaFRvTWFpblRocmVhZCh2b2lkICheYmxvY2spKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
aAppbmRleCAyNmRmZTVkODEwYjllZGM5YTc2YTk0OTkzYzJjOGRhNTkwZDkyZjlmLi4zOTA4Y2Yx
N2Y4MDlmZWM3ZWFlMWYzMTRhMjJhZDhkYjE0YWQzMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLmgKQEAgLTI3LDExICsyNyw5IEBACiAjZGVmaW5lIE5ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGVudEZpbHRlci5oIgotI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPG9iamMvTlNPYmpDUnVudGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9Db21waWxlci5oPgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNkZWZpbmUgSEFW
RV9ORVRXT1JLX0VYVEVOU0lPTiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwICYmIENQVShYODZfNjQpKQpA
QCAtNDIsMzEgKzQwLDMxIEBAIE9CSkNfQ0xBU1MgTkVGaWx0ZXJTb3VyY2U7CiBPQkpDX0NMQVNT
IE5TRGF0YTsKIE9CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OwogT0JKQ19DTEFTUyBOU011dGFibGVE
YXRhOwotCitPQkpDX0NMQVNTIE5TU3RyaW5nOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlciBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUNv
bnRlbnRGaWx0ZXIgewotICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXI+IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXI+KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBmcmllbmQgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGJvb2wg
Y2FuSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IGNyZWF0ZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIGJvb2wgZW5hYmxlZCgpOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IGNyZWF0
ZSgpOwogCisgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKICAg
ICBib29sIG5lZWRzTW9yZURhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGRpZEJsb2Nr
RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0IGNoYXIqIGdldFJlcGxhY2VtZW50RGF0
YShpbnQmIGxlbmd0aCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOworICAgIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyKCk7CiAgICAgdm9p
ZCBoYW5kbGVEZWNpc2lvbihORUZpbHRlclNvdXJjZVN0YXR1cywgTlNEYXRhICpyZXBsYWNlbWVu
dERhdGEpOwogCiAgICAgTkVGaWx0ZXJTb3VyY2VTdGF0dXMgbV9zdGF0dXM7CiAgICAgT1NPYmpl
Y3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9xdWV1ZTsKICAgICBPU09iamVjdFB0cjxkaXNwYXRj
aF9zZW1hcGhvcmVfdD4gbV9zZW1hcGhvcmU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmln
aW5hbERhdGE7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gbV9yZXBsYWNlbWVudERhdGE7CiAgICAg
UmV0YWluUHRyPE5FRmlsdGVyU291cmNlPiBtX25lRmlsdGVyU291cmNlOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggM2MxMWM3NTBjZDgzYjcwNjFlYjFlNjM4MDJhNGRmYTdk
ZDNmZWI1YS4uZTJhZTA4Mzc4MjIyMjEwNmQ3YWU3Njk2MWJiZjNiNGRiYmI3YWZmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTI4LDIxICsyOCwyMSBAQAogCiAjaWYgSEFWRShO
RVRXT1JLX0VYVEVOU0lPTikKIAorI2ltcG9ydCAiQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
LmgiCiAjaW1wb3J0ICJORUZpbHRlclNvdXJjZVNQSS5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXNw
b25zZS5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5o
IgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KIAogU09GVF9MSU5L
X0ZSQU1FV09SSyhOZXR3b3JrRXh0ZW5zaW9uKTsKIFNPRlRfTElOS19DTEFTUyhOZXR3b3JrRXh0
ZW5zaW9uLCBORUZpbHRlclNvdXJjZSk7CiAKICNpZiBIQVZFKE1PREVSTl9ORV9GSUxURVJfU09V
UkNFKQotLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS8yMDE2NTY2ND4gRXhwb3NlIGRlY2lzaW9u
SGFuZGxlciBkaWN0aW9uYXJ5IGtleXMgYXMgTlNTdHJpbmcgY29uc3RhbnRzIGluIE5FRmlsdGVy
U291cmNlLmgKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IG9wdGlvbnNQYWdlRGF0YSA9IEAiUGFn
ZURhdGEiOwotCiBzdGF0aWMgaW5saW5lIE5TRGF0YSAqcmVwbGFjZW1lbnREYXRhRnJvbURlY2lz
aW9uSW5mbyhOU0RpY3Rpb25hcnkgKmRlY2lzaW9uSW5mbykKIHsKLSAgICBpZCByZXBsYWNlbWVu
dERhdGEgPSBkZWNpc2lvbkluZm9bb3B0aW9uc1BhZ2VEYXRhXTsKKyAgICBpZCByZXBsYWNlbWVu
dERhdGEgPSBkZWNpc2lvbkluZm9bTkVGaWx0ZXJTb3VyY2VPcHRpb25zUGFnZURhdGFdOwogICAg
IEFTU0VSVCghcmVwbGFjZW1lbnREYXRhIHx8IFtyZXBsYWNlbWVudERhdGEgaXNLaW5kT2ZDbGFz
czpbTlNEYXRhIGNsYXNzXV0pOwogICAgIHJldHVybiByZXBsYWNlbWVudERhdGE7CiB9CkBAIC01
MCwzNyArNTAsMzggQEAgc3RhdGljIGlubGluZSBOU0RhdGEgKnJlcGxhY2VtZW50RGF0YUZyb21E
ZWNpc2lvbkluZm8oTlNEaWN0aW9uYXJ5ICpkZWNpc2lvbkluZm8KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ib29sIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjYW5IYW5kbGVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2Jvb2wgTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogewotICAgIHJldHVybiByZXNwb25zZS51cmwo
KS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgW2dldE5FRmlsdGVyU291cmNlQ2xhc3MoKSBm
aWx0ZXJSZXF1aXJlZF07CisgICAgcmV0dXJuIFtnZXRORUZpbHRlclNvdXJjZUNsYXNzKCkgZmls
dGVyUmVxdWlyZWRdOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUoKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyPihyZXNwb25zZSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5FRmls
dGVyU291cmNlPiBjcmVhdGVORUZpbHRlclNvdXJjZShjb25zdCBVUkwmIHVybCwgZGlzcGF0Y2hf
cXVldWVfdCBkZWNpc2lvblF1ZXVlKQotewotI2lmIEhBVkUoTU9ERVJOX05FX0ZJTFRFUl9TT1VS
Q0UpCi0gICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgcmV0dXJuIGFkb3B0TlMoW2FsbG9jTkVG
aWx0ZXJTb3VyY2VJbnN0YW5jZSgpIGluaXRXaXRoRGVjaXNpb25RdWV1ZTpkZWNpc2lvblF1ZXVl
XSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkZWNpc2lvblF1ZXVlKTsKLSAgICByZXR1cm4g
YWRvcHROUyhbYWxsb2NORUZpbHRlclNvdXJjZUluc3RhbmNlKCkgaW5pdFdpdGhVUkw6dXJsIGRp
cmVjdGlvbjpORUZpbHRlclNvdXJjZURpcmVjdGlvbkluYm91bmQgc29ja2V0SWRlbnRpZmllcjow
XSk7Ci0jZW5kaWYKLX0KLQotTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6Ok5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQor
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyKCkKICAgICA6IG1fc3RhdHVzIHsgTkVGaWx0ZXJTb3VyY2VTdGF0dXNOZWVkc01vcmVEYXRh
IH0KICAgICAsIG1fcXVldWUgeyBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgi
Y29tLmFwcGxlLldlYkNvcmUuTkVGaWx0ZXJTb3VyY2VRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCkpIH0KICAgICAsIG1fc2VtYXBob3JlIHsgYWRvcHRPU09iamVjdChkaXNwYXRjaF9zZW1h
cGhvcmVfY3JlYXRlKDApKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7ICpTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpIH0KLSAgICAsIG1fbmVGaWx0ZXJTb3VyY2UgeyBjcmVhdGVORUZpbHRlclNvdXJj
ZShyZXNwb25zZS51cmwoKSwgbV9xdWV1ZS5nZXQoKSkgfQorI2lmIEhBVkUoTU9ERVJOX05FX0ZJ
TFRFUl9TT1VSQ0UpCisgICAgLCBtX25lRmlsdGVyU291cmNlIHsgYWRvcHROUyhbYWxsb2NORUZp
bHRlclNvdXJjZUluc3RhbmNlKCkgaW5pdFdpdGhEZWNpc2lvblF1ZXVlOm1fcXVldWUuZ2V0KCld
KSB9CisjZW5kaWYKIHsKICAgICBBU1NFUlQoW2dldE5FRmlsdGVyU291cmNlQ2xhc3MoKSBmaWx0
ZXJSZXF1aXJlZF0pOworfQogCi0jaWYgSEFWRShNT0RFUk5fTkVfRklMVEVSX1NPVVJDRSkKK3Zv
aWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKCFyZXNwb25zZS51cmwoKS5w
cm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICAgICAgbV9zdGF0dXMgPSBORUZpbHRlclNv
dXJjZVN0YXR1c1Bhc3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiAhSEFWRShNT0RF
Uk5fTkVfRklMVEVSX1NPVVJDRSkKKyAgICBBU1NFUlQoIW1fbmVGaWx0ZXJTb3VyY2UpOworICAg
IG1fbmVGaWx0ZXJTb3VyY2UgPSBhZG9wdE5TKFthbGxvY05FRmlsdGVyU291cmNlSW5zdGFuY2Uo
KSBpbml0V2l0aFVSTDpyZXNwb25zZS51cmwoKSBkaXJlY3Rpb246TkVGaWx0ZXJTb3VyY2VEaXJl
Y3Rpb25JbmJvdW5kIHNvY2tldElkZW50aWZpZXI6MF0pOworI2Vsc2UKICAgICBbbV9uZUZpbHRl
clNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBkZWNpc2lv
bkhhbmRsZXI6W3RoaXNdKE5FRmlsdGVyU291cmNlU3RhdHVzIHN0YXR1cywgTlNEaWN0aW9uYXJ5
ICpkZWNpc2lvbkluZm8pIHsKICAgICAgICAgaGFuZGxlRGVjaXNpb24oc3RhdHVzLCByZXBsYWNl
bWVudERhdGFGcm9tRGVjaXNpb25JbmZvKGRlY2lzaW9uSW5mbykpOwogICAgIH1dOwpAQCAtOTYs
MTIgKzk3LDYgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGNv
cGllZERhdGEgeyBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0
aF0gfTsKIAotICAgIC8vIEZJWE1FOiBORUZpbHRlclNvdXJjZSBkb2Vzbid0IGJ1ZmZlciBkYXRh
IGxpa2UgV2ViRmlsdGVyRXZhbHVhdG9yIGRvZXMsCi0gICAgLy8gc28gd2UgbmVlZCB0byBkbyBp
dCBvdXJzZWx2ZXMgc28gZ2V0UmVwbGFjZW1lbnREYXRhKCkgY2FuIHJldHVybiB0aGUKLSAgICAv
LyBvcmlnaW5hbCBieXRlcyBiYWNrIHRvIHRoZSBsb2FkZXIuIFdlIHNob3VsZCBmaW5kIGEgd2F5
IHRvIHJlbW92ZSB0aGlzCi0gICAgLy8gYWRkaXRpb25hbCBjb3B5LgotICAgIG1fb3JpZ2luYWxE
YXRhLT5hcHBlbmQoKENGRGF0YVJlZiljb3BpZWREYXRhLmdldCgpKTsKLQogI2lmIEhBVkUoTU9E
RVJOX05FX0ZJTFRFUl9TT1VSQ0UpCiAgICAgW21fbmVGaWx0ZXJTb3VyY2UgcmVjZWl2ZWREYXRh
OmNvcGllZERhdGEuZ2V0KCkgZGVjaXNpb25IYW5kbGVyOlt0aGlzXShORUZpbHRlclNvdXJjZVN0
YXR1cyBzdGF0dXMsIE5TRGljdGlvbmFyeSAqZGVjaXNpb25JbmZvKSB7CiAgICAgICAgIGhhbmRs
ZURlY2lzaW9uKHN0YXR1cywgcmVwbGFjZW1lbnREYXRhRnJvbURlY2lzaW9uSW5mbyhkZWNpc2lv
bkluZm8pKTsKQEAgLTE0OCwxNSArMTQzLDEwIEBAIGJvb2wgTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXI6OmRpZEJsb2NrRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RhdHVzID09IE5F
RmlsdGVyU291cmNlU3RhdHVzQmxvY2s7CiB9CiAKLWNvbnN0IGNoYXIqIE5ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyOjpnZXRSZXBsYWNlbWVudERhdGEoaW50JiBsZW5ndGgpIGNvbnN0CitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVwbGFj
ZW1lbnREYXRhKCkgY29uc3QKIHsKLSAgICBpZiAoZGlkQmxvY2tEYXRhKCkpIHsKLSAgICAgICAg
bGVuZ3RoID0gW21fcmVwbGFjZW1lbnREYXRhIGxlbmd0aF07Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oW21fcmVwbGFjZW1lbnREYXRhIGJ5dGVzXSk7Ci0gICAgfQot
Ci0gICAgbGVuZ3RoID0gbV9vcmlnaW5hbERhdGEtPnNpemUoKTsKLSAgICByZXR1cm4gbV9vcmln
aW5hbERhdGEtPmRhdGEoKTsKKyAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOworICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEobV9yZXBsYWNlbWVudERhdGEuZ2V0KCkpOwogfQog
CiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXI6OnVuYmxvY2tIYW5kbGVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4
IGVhMGE0ZTJlZWE0NjMyOWNkYjU2MjA0ZGIwZGI5NDA0Y2Y2NWIxOGQuLjM2YmJjNmJhYjI1ODI3
OTM0ZWIxYTQ4MTlmNTg1ZWMzNjNiZmU3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApA
QCAtMzYsMjIgKzM2LDI1IEBAIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlciBmaW5h
bCA6IHB1YmxpYyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewotICAgIGZyaWVuZCBzdGQ6OnVuaXF1
ZV9wdHI8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+IHN0ZDo6bWFrZV91bmlxdWU8UGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPiBz
dGQ6Om1ha2VfdW5pcXVlPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPigpOwogCiBwdWJs
aWM6Ci0gICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXI+IGNyZWF0ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIGJv
b2wgZW5hYmxlZCgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXI+IGNyZWF0ZSgpOwogCisgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGlu
Z0RhdGEoKSBvdmVycmlkZTsKICAgICBib29sIG5lZWRzTW9yZURhdGEoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGRpZEJsb2NrRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0IGNo
YXIqIGdldFJlcGxhY2VtZW50RGF0YShpbnQmIGxlbmd0aCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyKCk7CisgICAgdm9pZCB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogCisgICAgT1NTdGF0
dXMgbV9maWx0ZXJTdGF0ZTsKICAgICBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVhdG9yPiBtX3dl
YkZpbHRlckV2YWx1YXRvcjsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBtX3JlcGxhY2VtZW50RGF0
YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IDkwNGNmY2ZmMGY0NGE2Mjdh
Y2I3ZDAyMDVmOGRhN2RmOGJhMDRmMjEuLmU4ZGRiMDFmMmIxNTBhM2ZlZGE5NWU1OTMxY2IzOTIw
MDdhM2M4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC0yNiw3ICsyNiw5IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLmgiCiAKKyNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgogI2ltcG9y
dCAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0
ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmgiCiAjaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAgLTM2LDM2ICszOCw0OSBAQCBTT0ZUX0xJTktfQ0xBU1Mo
V2ViQ29udGVudEFuYWx5c2lzLCBXZWJGaWx0ZXJFdmFsdWF0b3IpOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWJvb2wgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNhbkhhbmRsZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorYm9vbCBQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlcjo6ZW5hYmxlZCgpCiB7Ci0gICAgaWYgKCFyZXNwb25zZS51cmwo
KS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gW2dldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lvbl07Cit9
CiAKLSAgICBpZiAoW2dldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lv
bl0pIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIGlmIChyZXNwb25zZS51cmwoKS5wcm90
b2NvbElzKCJodHRwcyIpKQotI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
CitzdGQ6OnVuaXF1ZV9wdHI8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+IFBhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPigpOworfQogCi0gICAgcmV0dXJu
IGZhbHNlOworUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OlBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyKCkKKyAgICA6IG1fZmlsdGVyU3RhdGUgeyBrV0ZFU3RhdGVCdWZmZXJpbmcg
fQoreworICAgIEFTU0VSVChbZ2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBpc01hbmFnZWRT
ZXNzaW9uXSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBjYW5IYW5kbGVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4ocmVzcG9uc2UpOworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gcmVzcG9uc2UudXJsKCkucHJvdG9jb2xJcygiaHR0
cHMiKTsKKyNlbHNlCisgICAgcmV0dXJuIHJlc3BvbnNlLnVybCgpLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKTsKKyNlbmRpZgogfQogCi1QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6UGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCi0gICAgOiBtX3dlYkZpbHRlckV2YWx1YXRvciB7IGFkb3B0TlMoW2FsbG9jV2ViRmlsdGVy
RXZhbHVhdG9ySW5zdGFuY2UoKSBpbml0V2l0aFJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9u
c2UoKV0pIH0KK3ZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgQVNTRVJUKFtn
ZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFzcygpIGlzTWFuYWdlZFNlc3Npb25dKTsKKyAgICBBU1NF
UlQoIW1fd2ViRmlsdGVyRXZhbHVhdG9yKTsKKworICAgIGlmICghY2FuSGFuZGxlUmVzcG9uc2Uo
cmVzcG9uc2UpKSB7CisgICAgICAgIG1fZmlsdGVyU3RhdGUgPSBrV0ZFU3RhdGVBbGxvd2VkOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV93ZWJGaWx0ZXJFdmFsdWF0b3IgPSBhZG9w
dE5TKFthbGxvY1dlYkZpbHRlckV2YWx1YXRvckluc3RhbmNlKCkgaW5pdFdpdGhSZXNwb25zZTpy
ZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldKTsKKyAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQog
CiB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFbbV9yZXBsYWNlbWVudERhdGEuZ2V0
KCkgbGVuZ3RoXSk7CiAgICAgbV9yZXBsYWNlbWVudERhdGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0
b3IgYWRkRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3Ro
Omxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dXTsKKyAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogICAg
IEFTU0VSVChuZWVkc01vcmVEYXRhKCkgfHwgW21fcmVwbGFjZW1lbnREYXRhLmdldCgpIGxlbmd0
aF0pOwogfQogCkBAIC03MywyMiArODgsMjMgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKIHsKICAgICBBU1NFUlQoIVttX3JlcGxhY2Vt
ZW50RGF0YS5nZXQoKSBsZW5ndGhdKTsKICAgICBtX3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZp
bHRlckV2YWx1YXRvciBkYXRhQ29tcGxldGVdOworICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9
CiAKIGJvb2wgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6Om5lZWRzTW9yZURhdGEoKSBj
b25zdAogewotICAgIHJldHVybiBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgZmlsdGVyU3RhdGVdID09
IGtXRkVTdGF0ZUJ1ZmZlcmluZzsKKyAgICByZXR1cm4gbV9maWx0ZXJTdGF0ZSA9PSBrV0ZFU3Rh
dGVCdWZmZXJpbmc7CiB9CiAKIGJvb2wgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmRp
ZEJsb2NrRGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFttX3dlYkZpbHRlckV2YWx1YXRvciB3
YXNCbG9ja2VkXTsKKyAgICByZXR1cm4gbV9maWx0ZXJTdGF0ZSA9PSBrV0ZFU3RhdGVCbG9ja2Vk
OwogfQogCi1jb25zdCBjaGFyKiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Z2V0UmVw
bGFjZW1lbnREYXRhKGludCYgbGVuZ3RoKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7Ci0g
ICAgbGVuZ3RoID0gW21fcmVwbGFjZW1lbnREYXRhIGxlbmd0aF07Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihbbV9yZXBsYWNlbWVudERhdGEgYnl0ZXNdKTsKKyAgICBBU1NF
UlQoZGlkQmxvY2tEYXRhKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEo
bV9yZXBsYWNlbWVudERhdGEuZ2V0KCkpOwogfQogCiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnVuYmxvY2tIYW5kbGVyKCkgY29uc3QK
QEAgLTEwMCw0ICsxMTYsOSBAQCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXI6OnVuYmxvY2tIYW5kbGVyKCkgY29ucwogI2VuZGlmCiB9CiAK
K3ZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnVwZGF0ZUZpbHRlclN0YXRlKCkK
K3sKKyAgICBtX2ZpbHRlclN0YXRlID0gW21fd2ViRmlsdGVyRXZhbHVhdG9yIGZpbHRlclN0YXRl
XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NvY29hL05FRmlsdGVyU291cmNlU1BJLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcGkvY29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaAppbmRleCBhNzZjNDMyMDJi
OWYwMzNjYTgyMzQ3MjY1NDRmZGYxYzE4MmM3ZGNmLi4yZWIzMWExNWEzYmJmZmQ4NDczODFkMWJm
NGY2OWUxZDI1NmFiZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkv
Y29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cGkvY29jb2EvTkVGaWx0ZXJTb3VyY2VTUEkuaApAQCAtNjgsNiArNjgsNyBAQCB0eXBlZGVmIHZv
aWQgKF5ORUZpbHRlclNvdXJjZURlY2lzaW9uSGFuZGxlcikoTkVGaWx0ZXJTb3VyY2VTdGF0dXMs
IE5TRGljdGlvbmFyeQogLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGVjaXNpb25IYW5kbGVy
OihORUZpbHRlclNvdXJjZURlY2lzaW9uSGFuZGxlcilkZWNpc2lvbkhhbmRsZXI7CiAtICh2b2lk
KXJlbWVkaWF0ZVdpdGhEZWNpc2lvbkhhbmRsZXI6KE5FRmlsdGVyU291cmNlRGVjaXNpb25IYW5k
bGVyKWRlY2lzaW9uSGFuZGxlcjsKIEBlbmQKKwogI2VuZGlmCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1dlYkZpbHRlckV2YWx1YXRvclNQ
SS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL1dlYkZpbHRlckV2YWx1YXRv
clNQSS5oCmluZGV4IDk1ODZhOGViMWVhNzhmZTQ0M2NiMmRhNGE1MzQyNzdkNmY3ZjEwYzMuLmE1
ZGViYzk5OTVjM2FlOWNjYWI0Zjc1MzJhOTNhNTY3NWQ1ODI1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9XZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvV2ViRmlsdGVyRXZhbHVhdG9yU1BJ
LmgKQEAgLTMyLDcgKzMyLDEwIEBACiAjaW1wb3J0IDxUYXJnZXRDb25kaXRpb25hbHMuaD4KIAog
ZW51bSB7Ci0gICAga1dGRVN0YXRlQnVmZmVyaW5nID0gMgorICAgIGtXRkVTdGF0ZUFsbG93ZWQg
PSAwLAorICAgIGtXRkVTdGF0ZUJsb2NrZWQgPSAxLAorICAgIGtXRkVTdGF0ZUJ1ZmZlcmluZyA9
IDIsCisgICAga1dGRVN0YXRlRXZhbHVhdGluZyA9IDMKIH07CiAKIEBpbnRlcmZhY2UgV2ViRmls
dGVyRXZhbHVhdG9yIDogTlNPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5jcHAKaW5kZXggODQ5MDkyMzQ2NGZjYmRhMWEyMjYzNWMwYmY5ZjJlZGFiYzIx
Mjc1My4uMmQ4NDgwYWUyNmU3YWZmZGJlMzM0Mzg2MjNiNjYzMzg3MjUyMjU2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTI5LDggKzI5LDEx
IEBACiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaW5jbHVkZSAiQ29udGVudEZp
bHRlci5oIgorI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTAsMjQgKzUzLDIzIEBAIHN0YXRpYyBpbmxpbmUgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MoKQogICAgIHJldHVybiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpzaW5nbGV0b24oKTsKIH0KIAotYm9vbCBNb2NrQ29udGVudEZpbHRlcjo6
Y2FuSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCitib29sIE1vY2tDb250
ZW50RmlsdGVyOjplbmFibGVkKCkKIHsKICAgICByZXR1cm4gc2V0dGluZ3MoKS5lbmFibGVkKCk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxNb2NrQ29udGVudEZpbHRlcj4gTW9ja0NvbnRlbnRGaWx0
ZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3N0ZDo6dW5pcXVl
X3B0cjxNb2NrQ29udGVudEZpbHRlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KHJlc3BvbnNlKTsK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ29udGVudEZpbHRlcj4oKTsKIH0KIAot
TW9ja0NvbnRlbnRGaWx0ZXI6Ok1vY2tDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikKIHsKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50
OjpBZnRlclJlc3BvbnNlKTsKIH0KIAotdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRk
RGF0YShjb25zdCBjaGFyKiwgaW50KQogewotICAgIG1fcmVwbGFjZW1lbnREYXRhLmFwcGVuZChk
YXRhLCBsZW5ndGgpOwogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFm
dGVyQWRkRGF0YSk7CiB9CiAKQEAgLTg2LDE0ICs4OCwxNSBAQCBib29sIE1vY2tDb250ZW50Rmls
dGVyOjpkaWRCbG9ja0RhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6
OkJsb2NrZWQ7CiB9CiAKLWNvbnN0IGNoYXIqIE1vY2tDb250ZW50RmlsdGVyOjpnZXRSZXBsYWNl
bWVudERhdGEoaW50JiBsZW5ndGgpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ29u
dGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKLSAgICBsZW5ndGggPSBtX3Jl
cGxhY2VtZW50RGF0YS5zaXplKCk7Ci0gICAgcmV0dXJuIG1fcmVwbGFjZW1lbnREYXRhLmRhdGEo
KTsKKyAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNpemUo
KSk7CiB9CiAKIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBNb2NrQ29udGVudEZpbHRlcjo6
dW5ibG9ja0hhbmRsZXIoKSBjb25zdAogeworICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAg
ICAgdXNpbmcgRGVjaXNpb25IYW5kbGVyRnVuY3Rpb24gPSBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI6OkRlY2lzaW9uSGFuZGxlckZ1bmN0aW9uOwogCiAgICAgcmV0dXJuIENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmgKaW5kZXggMGZhMTM1ODgzMzc4OTIwMTU3MjI1M2RkZmVjNzMwODE4ODE5ZDQ5NC4uYTRm
OGQzYjZjYzIyMzM1MmIyMmZiNzQxMjVhNmFiZTY1YjJhNzRkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtMzIsMTggKzMyLDE5IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tDb250ZW50RmlsdGVyIGZpbmFsIDogcHVibGljIFBs
YXRmb3JtQ29udGVudEZpbHRlciB7Ci0gICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxNb2NrQ29u
dGVudEZpbHRlcj4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ29udGVudEZpbHRlcj4oY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOworICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0NvbnRlbnRG
aWx0ZXI+IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CiAKIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBlbnN1cmVJbnN0YWxsZWQoKTsKLSAgICBzdGF0aWMgYm9vbCBjYW5I
YW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxNb2NrQ29udGVudEZpbHRlcj4gY3JlYXRlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICBzdGF0aWMgYm9vbCBlbmFibGVkKCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxNb2NrQ29udGVudEZpbHRlcj4gY3JlYXRlKCk7CiAKKyAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlz
aGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbmVlZHNNb3JlRGF0YSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIGJvb2wgZGlkQmxvY2tEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
Y29uc3QgY2hhciogZ2V0UmVwbGFjZW1lbnREYXRhKGludCYgbGVuZ3RoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBj
b25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQoKSBj
b25zdCBvdmVycmlkZTsKIApAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgICAgICBCbG9j
a2VkCiAgICAgfTsKIAotICAgIGV4cGxpY2l0IE1vY2tDb250ZW50RmlsdGVyKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICBNb2NrQ29udGVudEZpbHRlcigpID0gZGVmYXVsdDsKICAgICB2
b2lkIG1heWJlRGV0ZXJtaW5lU3RhdHVzKE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lz
aW9uUG9pbnQpOwogCiAgICAgVmVjdG9yPGNoYXI+IG1fcmVwbGFjZW1lbnREYXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAK
aW5kZXggYTQ3ZDRlY2NiOWVjZmI2NTQ4NGIzM2EyZTdiNjQzMGVkNjMxN2U2Ny4uMDg2ODYyYmZj
YTQ3NjUwMWM5NTAyNzViODk0MjRjOGQxY2QwMmUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCkBAIC0yOCw5ICsyOCwx
MSBAQAogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCisjaW5jbHVkZSAiQ29udGVu
dEZpbHRlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgogI2lu
Y2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
MCw5ICs1MiwxMSBAQCBjb25zdCBTdHJpbmcmIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnVu
YmxvY2tSZXF1ZXN0VVJMKCkgY29uc3QKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFN0
cmluZz4gdW5ibG9ja1JlcXVlc3RVUkw7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIHVuYmxvY2tS
ZXF1ZXN0VVJMLmNvbnN0cnVjdChDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnVuYmxvY2tV
UkxTY2hlbWUoKSk7Ci0gICAgICAgIHVuYmxvY2tSZXF1ZXN0VVJMLmdldCgpLmFwcGVuZCgiOi8v
Iik7Ci0gICAgICAgIHVuYmxvY2tSZXF1ZXN0VVJMLmdldCgpLmFwcGVuZCh1bmJsb2NrVVJMSG9z
dCgpKTsKKyAgICAgICAgU3RyaW5nQnVpbGRlciB1bmJsb2NrUmVxdWVzdFVSTEJ1aWxkZXI7Cisg
ICAgICAgIHVuYmxvY2tSZXF1ZXN0VVJMQnVpbGRlci5hcHBlbmQoQ29udGVudEZpbHRlcjo6dXJs
U2NoZW1lKCkpOworICAgICAgICB1bmJsb2NrUmVxdWVzdFVSTEJ1aWxkZXIuYXBwZW5kKCI6Ly8i
KTsKKyAgICAgICAgdW5ibG9ja1JlcXVlc3RVUkxCdWlsZGVyLmFwcGVuZCh1bmJsb2NrVVJMSG9z
dCgpKTsKKyAgICAgICAgdW5ibG9ja1JlcXVlc3RVUkwuY29uc3RydWN0KHVuYmxvY2tSZXF1ZXN0
VVJMQnVpbGRlci50b1N0cmluZygpKTsKICAgICB9KTsKICAgICByZXR1cm4gdW5ibG9ja1JlcXVl
c3RVUkw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5k
ZXggMmUyNzg1ZGM4MWM4NTc5NGJmYmRiOTQ4YjAzZDE1NjExMWMxZDIxZC4uN2I3ZGFjMjNhY2M5
ZTQ5OGZhNTJmZWFmYWI5OGIxNjI4MDUxYTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcApAQCAtMTI3LDkgKzEyNyw2IEBAIGJvb2wgV2ViRnJhbWVQcm94
eTo6aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQoKSBjb25zdAogdm9pZCBXZWJGcmFtZVByb3h5Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBtX2ZyYW1l
TG9hZFN0YXRlLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHVybCk7Ci0jaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQotICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0geyB9Owot
I2VuZGlmCiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtMjM2LDggKzIzMywxMCBA
QCB2b2lkIFdlYkZyYW1lUHJveHk6OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFN0cmluZyYgdW5y
ZWFjaGFibGVVUkwpCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogYm9vbCBXZWJGcmFt
ZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24oY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmICghbV9jb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KSkKKyAgICBpZiAoIW1f
Y29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsK
KyAgICAgICAgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgPSB7IH07CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlIHsgbV9w
YWdlIH07CiAgICAgQVNTRVJUKHBhZ2UpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQxNGM3N2FlNTA4NWQ4MzljMWZkNTk5
Y2FiODZjZjZkZTQ0MzBhNjguLjNlYTZlY2E0ODYzNTIxNTVjMzc0ZTQ2Y2FkYjNhNmU3YWYzNDlj
MjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNS0wNC0wNCAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBCbG9ja2VkIHBhZ2Ug
aXMgbm90IGFsd2F5cyBkaXNwbGF5ZWQgd2hlbiBpdCBzaG91bGQgYmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQxMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogVW5z
a2lwcGVkIGJsb2NrLWFmdGVyLWFkZC1kYXRhLmh0bWwuCisgICAgICAgICogY29udGVudGZpbHRl
cmluZy9ibG9jay1hZnRlci1hZGQtZGF0YS1leHBlY3RlZC5odG1sOiBBZGRlZCBhIHBhc3Npbmcg
ZXhwZWN0YXRpb24uCisgICAgICAgICogY29udGVudGZpbHRlcmluZy9ibG9jay1hZnRlci1yZXNw
b25zZS1leHBlY3RlZC5odG1sOiBEaXR0by4KKwogMjAxNS0wNC0wMyAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBmYXN0L2ZpeGVkLWxheW91dC9maXhl
ZC1sYXlvdXQuaHRtbCBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOWNlNzNhNGU1ODlk
YTNhODgxYzQ5OGEzOGU5YmY4OWRhNmViNTBmOS4uMWNlZTU0YmU4NjIwNDE0MzRjZjUxMjc1N2Nj
ZjA4ZDVjMGYyODczZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC00OTcsOSArNDk3LDYgQEAgd2Vi
a2l0Lm9yZy9iLzExNDI4MCBzdmcvYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5j
ZXMtbm9CYXNlVmFsUmVmLnN2Zwogd2Via2l0Lm9yZy9iLzExNDI4MCBzdmcvYW5pbWF0aW9ucy9z
bWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMuc3ZnIFsgUGFzcyBGYWlsdXJlIF0KIHdlYmtpdC5v
cmcvYi8xMTQyODAgc3ZnL2FuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnRzLnN2ZyBbIFBhc3Mg
RmFpbHVyZSBdCiAKLSMgY29udGVudGZpbHRlcmluZy9ibG9jay1hZnRlci1hZGQtZGF0YS5odG1s
IHRpbWVzIG91dCB1bmV4cGVjdGVkbHkKLXdlYmtpdC5vcmcvYi8xNDI4OTQgY29udGVudGZpbHRl
cmluZy9ibG9jay1hZnRlci1hZGQtZGF0YS5odG1sIFsgU2tpcCBdCi0KIHdlYmtpdC5vcmcvYi8x
NDMwODUgbWVkaWEvdHJhY2svdHJhY2stbW9kZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAogIyBJ
biBFUzYsIE9iamVjdCB0eXBlIHJlc3RyaWN0aW9ucyBvbiBhIGZpcnN0IHBhcmFtZXRlciBvZiBz
ZXZlcmFsIE9iamVjdC4qIGZ1bmN0aW9ucyBhcmUgcmVsYXhlZC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYmxvY2stYWZ0ZXItYWRkLWRhdGEtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYmxvY2stYWZ0ZXItYWRkLWRhdGEtZXhw
ZWN0ZWQuaHRtbAppbmRleCBiYTJmMTMzMjNmZTUwODgyMjczOTc0ZDgzZWZiM2Q4ZjRhOTg2YzE5
Li5mYmQ5MmFkYWZmZGZkZDBkYmU1YmRjNWY1YWIxMzFhZWE1ODIzNjI4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL2Jsb2NrLWFmdGVyLWFkZC1kYXRhLWV4cGVjdGVk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9ibG9jay1hZnRlci1hZGQt
ZGF0YS1leHBlY3RlZC5odG1sCkBAIC0xLDIgKzEsMiBAQAogPCFET0NUWVBFIGh0bWw+Ci08aWZy
YW1lIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPCFET0NUWVBFIGh0bWw+PGJvZHk+Ij48L2lmcmFtZT4K
KzxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCw8IURPQ1RZUEUgaHRtbD48Ym9keT5QQVNTIj48
L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYmxvY2st
YWZ0ZXItcmVzcG9uc2UtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJp
bmcvYmxvY2stYWZ0ZXItcmVzcG9uc2UtZXhwZWN0ZWQuaHRtbAppbmRleCBhYmRlMDk4YmIxYTky
YWJiNGE2MWYxMzNiYTI2N2U5MWFhMzNiZjBmLi5mYmQ5MmFkYWZmZGZkZDBkYmU1YmRjNWY1YWIx
MzFhZWE1ODIzNjI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL2Js
b2NrLWFmdGVyLXJlc3BvbnNlLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY29udGVu
dGZpbHRlcmluZy9ibG9jay1hZnRlci1yZXNwb25zZS1leHBlY3RlZC5odG1sCkBAIC0xLDIgKzEs
MiBAQAogPCFET0NUWVBFIGh0bWw+Ci08aWZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPCFET0NU
WVBFIGh0bWw+PGJvZHk+RkFJTCI+PC9pZnJhbWU+Cis8aWZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0
bWwsPCFET0NUWVBFIGh0bWw+PGJvZHk+UEFTUyI+PC9pZnJhbWU+Cg==
</data>
<flag name="review"
          id="274966"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>