<?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>153934</bug_id>
          
          <creation_ts>2016-02-05 17:32:20 -0800</creation_ts>
          <short_desc>Add a WebKit SPI for creating an automation session and advertise the active session via RemoteInspector</short_desc>
          <delta_ts>2016-02-16 01:38:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit 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>
          <dependson>154077</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>bburg</cc>
    
    <cc>joepeck</cc>
    
    <cc>mitz</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1162554</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-05 17:32:20 -0800</bug_when>
    <thetext>An automation session is the main place where WebKit-side support for browser automation should be implemented. A session encapsulates the state (default timeouts, page identifier mappings), objects (active automation WebPages) and logic (how to open a window, run JS, send user input, etc) used to implement automation commands. A process pool can only have one session at a time. The session is created on demand and only if the _WKAutomationDelegate implementation allows it.

I&apos;m currently focusing on *remote* automation, over the RemoteInspector/webinspectord relay system. This is needed in WK2 since its clients cannot directly talk to RemoteInspector in JavaScriptCore.framework.

The session has a delegate so that WK2 clients can perform actions that are outside the scope of WK2, such as creating new tabs, enumerating windows, or sending native user inputs.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162664</commentid>
    <comment_count>1</comment_count>
      <attachid>270805</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-06 14:56:39 -0800</bug_when>
    <thetext>Created attachment 270805
Take 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162940</commentid>
    <comment_count>2</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-08 11:14:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/24077538&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163277</commentid>
    <comment_count>3</comment_count>
      <attachid>270805</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-02-09 13:55:22 -0800</bug_when>
    <thetext>Comment on attachment 270805
Take 1

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

Looks good to me. This should get a WK2 Owner for the API bits

&gt; Source/WebKit2/UIProcess/API/APIAutomationSessionClient.h:42
&gt; +    virtual String sessionIdentifier() const { return emptyString(); }

Null string would be even simpler. String().

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.mm:74
&gt; +- (NSString *)sessionIdentifier
&gt; +{
&gt; +    return _session-&gt;name();
&gt; +}

This only exists in WebKit::WebAutomationSession when ENABLE(REMOTE_INSPECTOR) via:

    virtual String name() const override { return m_sessionIdentifier; }

WebKit::WebAutomationSession should probably have a `String sessionIdentifier() const { return m_sessionIdentifier; }` for this to work sans REMOTE_INSPECTOR.

&gt; Source/WebKit2/UIProcess/WebAutomationSession.cpp:74
&gt; +void WebAutomationSession::connect(Inspector::FrontendChannel* channel, bool isAutomaticConnection)
&gt; +{
&gt; +    UNUSED_PARAM(isAutomaticConnection);
&gt; +
&gt; +    m_remoteChannel = channel;
&gt; +    setAutomationAllowed(false);
&gt; +}

Wouldn&apos;t this make the listing for this AutomationTarget go away? It seems this might cause the remote client to disconnect from it. I&apos;m not sure this part is right.

&gt; Source/WebKit2/UIProcess/WebAutomationSession.h:66
&gt; +    String m_sessionIdentifier { ASCIILiteral(&quot;Untitled Session&quot;) };

Whoa! I didn&apos;t realize you could do this.

&gt; Source/WebKit2/UIProcess/WebAutomationSession.h:69
&gt; +    Inspector::FrontendChannel* m_remoteChannel;

Nit: { nullptr }, otherwise this will be uninitialized.

&gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:5160
&gt; +				990D28AF1C65203900986977 /* _WKAutomationSessionInternal.h */,
&gt; +				990D28A81C6404B000986977 /* _WKAutomationSessionDelegate.h */,

Sort order here may be important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163319</commentid>
    <comment_count>4</comment_count>
      <attachid>270805</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-09 16:08:36 -0800</bug_when>
    <thetext>Comment on attachment 270805
Take 1

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.mm:74
&gt;&gt; +}
&gt; 
&gt; This only exists in WebKit::WebAutomationSession when ENABLE(REMOTE_INSPECTOR) via:
&gt; 
&gt;     virtual String name() const override { return m_sessionIdentifier; }
&gt; 
&gt; WebKit::WebAutomationSession should probably have a `String sessionIdentifier() const { return m_sessionIdentifier; }` for this to work sans REMOTE_INSPECTOR.

REMOTE_INSPECTOR is always enabled when building Cocoa API, as far as I know. So I didn&apos;t bother. But maybe it would be fine to have a second method that&apos;s not a RemoteInspector::Client override.

&gt;&gt; Source/WebKit2/UIProcess/WebAutomationSession.cpp:74
&gt;&gt; +}
&gt; 
&gt; Wouldn&apos;t this make the listing for this AutomationTarget go away? It seems this might cause the remote client to disconnect from it. I&apos;m not sure this part is right.

You are right. I think I should change automationAllowed() to pairedWithDriver() or something similar. I want this bit to be included in the listing, so other drivers don&apos;t try to connect to the same session. On the backend, a driver can check sessionIdentifier against its own identifier to make sure that it was the one who paired with the automation target.

&gt;&gt; Source/WebKit2/UIProcess/WebAutomationSession.h:66
&gt;&gt; +    String m_sessionIdentifier { ASCIILiteral(&quot;Untitled Session&quot;) };
&gt; 
&gt; Whoa! I didn&apos;t realize you could do this.

Yeah, I didn&apos;t know either until I searched.

&gt;&gt; Source/WebKit2/UIProcess/WebAutomationSession.h:69
&gt;&gt; +    Inspector::FrontendChannel* m_remoteChannel;
&gt; 
&gt; Nit: { nullptr }, otherwise this will be uninitialized.

Yup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163328</commentid>
    <comment_count>5</comment_count>
      <attachid>270805</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-09 16:14:40 -0800</bug_when>
    <thetext>Comment on attachment 270805
Take 1

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/WebAutomationSession.cpp:74
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; Wouldn&apos;t this make the listing for this AutomationTarget go away? It seems this might cause the remote client to disconnect from it. I&apos;m not sure this part is right.
&gt; 
&gt; You are right. I think I should change automationAllowed() to pairedWithDriver() or something similar. I want this bit to be included in the listing, so other drivers don&apos;t try to connect to the same session. On the backend, a driver can check sessionIdentifier against its own identifier to make sure that it was the one who paired with the automation target.

Note: the _WKAutomationDelegate can refuse to create a session if it doesn&apos;t support automation or one already exists, so this bit is not useful as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163506</commentid>
    <comment_count>6</comment_count>
      <attachid>270805</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-10 10:05:55 -0800</bug_when>
    <thetext>Comment on attachment 270805
Take 1

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/WebAutomationSession.cpp:74
&gt;&gt;&gt;&gt; +}
&gt;&gt;&gt; 
&gt;&gt;&gt; Wouldn&apos;t this make the listing for this AutomationTarget go away? It seems this might cause the remote client to disconnect from it. I&apos;m not sure this part is right.
&gt;&gt; 
&gt;&gt; You are right. I think I should change automationAllowed() to pairedWithDriver() or something similar. I want this bit to be included in the listing, so other drivers don&apos;t try to connect to the same session. On the backend, a driver can check sessionIdentifier against its own identifier to make sure that it was the one who paired with the automation target.
&gt; 
&gt; Note: the _WKAutomationDelegate can refuse to create a session if it doesn&apos;t support automation or one already exists, so this bit is not useful as-is.

Split this off: https://bugs.webkit.org/show_bug.cgi?id=154077

&gt;&gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:5160
&gt;&gt; +				990D28A81C6404B000986977 /* _WKAutomationSessionDelegate.h */,
&gt; 
&gt; Sort order here may be important.

The WK2 project is well overdue for a sorting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163562</commentid>
    <comment_count>7</comment_count>
      <attachid>271019</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-10 12:31:02 -0800</bug_when>
    <thetext>Created attachment 271019
Take 2 (Depends on 154077)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163689</commentid>
    <comment_count>8</comment_count>
      <attachid>271019</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-02-10 19:59:51 -0800</bug_when>
    <thetext>Comment on attachment 271019
Take 2 (Depends on 154077)

Looks fine to me. Needs a WK2 Owner nod</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164229</commentid>
    <comment_count>9</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-12 11:28:30 -0800</bug_when>
    <thetext>Committed r196488: &lt;http://trac.webkit.org/changeset/196488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165065</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-02-15 23:28:27 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Committed r196488: &lt;http://trac.webkit.org/changeset/196488&gt;

It broke the Apple Mac cmake build:

Undefined symbols for architecture x86_64:
  &quot;_OBJC_CLASS_$__WKAutomationSession&quot;, referenced from:
      objc-class-ref in APIObject.mm.o
  &quot;_OBJC_IVAR_$__WKAutomationSession._session&quot;, referenced from:
      -[WKProcessPool(WKPrivate) _setAutomationSession:] in WKProcessPool.mm.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/WebKit.framework/Versions/SOVERSION/WebKit] Error 1
make[1]: *** [Source/WebKit2/CMakeFiles/WebKit2.dir/all] Error 2
make: *** [all] Error 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165082</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-02-16 01:38:14 -0800</bug_when>
    <thetext>build fixed by https://trac.webkit.org/changeset/196630</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270805</attachid>
            <date>2016-02-06 14:56:39 -0800</date>
            <delta_ts>2016-02-10 12:30:59 -0800</delta_ts>
            <desc>Take 1</desc>
            <filename>bug-153934-20160206145616.patch</filename>
            <type>text/plain</type>
            <size>46830</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2FiOGMyOGUzZDI2NWNk
MWEwMGMxYzczNzY3Y2M1YzlkNjZiNGJkNy4uYzE0ZWZlNzcxZTliYzA5ZTIxMzM2MGI2YzllZjhh
NDNmNDkyOWE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE2LTAyLTA2ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdlYktpdCBTUEkgZm9y
IGNyZWF0aW5nIGFuIGF1dG9tYXRpb24gc2Vzc2lvbiBhbmQgYWR2ZXJ0aXNlIHRoZSBhY3RpdmUg
c2Vzc2lvbiB2aWEgUmVtb3RlSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBbiBhdXRvbWF0aW9uIHNlc3Npb24gaXMgdGhlIG1haW4gcGxh
Y2Ugd2hlcmUgV2ViS2l0IHN1cHBvcnQgZm9yIHVzZXIgYWdlbnQgYXV0b21hdGlvbiBpcyBpbXBs
ZW1lbnRlZC4KKyAgICAgICAgQSBzZXNzaW9uIGVuY2Fwc3VsYXRlcyB0aGUgc3RhdGUgKGRlZmF1
bHQgdGltZW91dHMsIHBhZ2UgaWRlbnRpZmllciBtYXBwaW5ncyksIG9iamVjdHMgKGFjdGl2ZSBh
dXRvbWF0aW9uCisgICAgICAgIFdlYlBhZ2VzKSBhbmQgbG9naWMgKGhvdyB0byBvcGVuIGEgd2lu
ZG93LCBydW4gSlMsIHNlbmQgdXNlciBpbnB1dCwgZXRjLikgdXNlZCB0byBpbXBsZW1lbnQgYXV0
b21hdGlvbgorICAgICAgICBjb21tYW5kcy4KKworICAgICAgICBBIHByb2Nlc3MgcG9vbCBjYW4g
b25seSBoYXZlIG9uZSBzZXNzaW9uIGF0IGEgdGltZS4gVGhlIHNlc3Npb24gaXMgY3JlYXRlZCBi
eSB0aGUgV2ViS2l0IGNsaWVudCBpbgorICAgICAgICByZXNwb25zZSB0byBhIHJlcXVlc3QgdGhh
dCBjb21lcyB0aHJvdWdoIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS4gV2hlbiBhIHNlc3Npb24gaXMg
c2V0IG9uIHRoZSBwcm9jZXNzIHBvb2wsCisgICAgICAgIGl0IGlzIGFkdmVydGlzZWQgdG8gcmVt
b3RlIGRyaXZlcnMgYW5kIGRlYnVnZ2VycyBhcyBhIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC4g
QSByZW1vdGUgZHJpdmVyIGNhbiB1c2UKKyAgICAgICAgdGhlIGV4aXN0aW5nIFJlbW90ZUluc3Bl
Y3RvciBBUEkgdG8gY29ubmVjdCB0byB0aGUgc2Vzc2lvbiBhbmQgc2VuZCBpdCBhdXRvbWF0aW9u
IGNvbW1hbmRzLgorCisgICAgICAgIFRoZSBzZXNzaW9uIGhhcyBhIGRlbGVnYXRlIHNvIHRoYXQg
V2ViS2l0IGNsaWVudHMgY2FuIHBlcmZvcm0gYWN0aW9ucyB0aGF0IGFyZSBvdXRzaWRlIHRoZSBz
Y29wZSBvZiBXZWJLaXQsCisgICAgICAgIHN1Y2ggYXMgY3JlYXRpbmcgbmV3IHRhYnMsIGVudW1l
cmF0aW5nIHdpbmRvd3MsIG9yIHNlbmRpbmcgbmF0aXZlIHVzZXIgaW5wdXRzLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBBdXRvbWF0aW9uU2Vzc2lvbiBjbGFzc2VzIGF0IHRoZSBBUEkgYW5k
IGltcGxlbWVudGF0aW9uIGxldmVsIGluIFdlYktpdDIuIFRoZQorICAgICAgICBpbXBsZW1lbnRh
dGlvbiBjbGFzcyBjb250YWlucyBSZW1vdGVJbnNwZWN0b3Igc3VwcG9ydCwgd2hpY2ggY2Fubm90
IGJlIHVzZWQgZGlyZWN0bHkgYnkgV2ViS2l0IGNsaWVudHMuCisgICAgICAgIEF1dG9tYXRpb25T
ZXNzaW9uRGVsZWdhdGUgY2xhc3NlcyBleGlzdCBhdCBib3RoIHRoZSBBUEkgYW5kIGltcGxlbWVu
dGF0aW9uIGxldmVsIHRvIGJyaWRnZSBiZXR3ZWVuCisgICAgICAgIE9iamVjdGl2ZS1DIGRlbGVn
YXRlcyBhbmQgQysrIGNsaWVudHMuIEFsbCBjb2RlIHJlbGF0ZWQgdG8gUmVtb3RlSW5zcGVjdG9y
IGFuZCBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0CisgICAgICAgIG11c3QgYmUgZ3VhcmRlZCBieSBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVj
dC5oOiBBZGQgbmV3IEFQSSB0eXBlICdBdXRvbWF0aW9uU2Vzc2lvbicuCisgICAgICAgICogU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3Qp
OiBBbGxvY2F0ZSBpbiB0aGUgd3JhcHBlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudDo6fkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50KToKKyAgICAgICAgKEFQSTo6
QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OmRpZFJlcXVlc3ROZXdXaW5kb3cpOiBEZWxlZ2F0ZSB3
aW5kb3cgY3JlYXRpb24gdG8gdGhlIGNsaWVudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9t
YXRpb25TZXNzaW9uOl0pOiBLZWVwIGF0IG1vc3Qgb25lIFdlYkF1dG9tYXRpb25TZXNzaW9uIGF0
IGEgdGltZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lv
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25T
ZXNzaW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24gaW5pdF0p
OiBDb25zdHJ1Y3QgdGhlIEFQSSBvYmplY3QgaW4gdGhlIGltcGxlbWVudGF0aW9uIHdyYXBwZXIu
CisgICAgICAgICgtW19XS0F1dG9tYXRpb25TZXNzaW9uIGRlYWxsb2NdKTogQ2xlYXIgdGhlIGNs
aWVudCBiZWZvcmUgY2FsbGluZyB0aGUgaW1wbGVtZW50YXRpb24gZGVzdHJ1Y3Rvci4KKworICAg
ICAgICAoLVtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBzZXNzaW9uSWRlbnRpZmllcl0pOgorICAgICAg
ICAoLVtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBzZXRTZXNzaW9uSWRlbnRpZmllcjpdKToKKyAgICAg
ICAgU3RvcmUgdGhlIHNlc3Npb24gaWRlbnRpZmllciBzdHJpbmcgaW4gdGhlIGltcGxlbWVudGF0
aW9uLgorCisgICAgICAgICgtW19XS0F1dG9tYXRpb25TZXNzaW9uIGRlbGVnYXRlXSk6CisgICAg
ICAgICgtW19XS0F1dG9tYXRpb25TZXNzaW9uIHNldERlbGVnYXRlOl0pOgorICAgICAgICBDcmVh
dGUgYW4gT2JqZWN0aXZlLUMgYWRhcHRlciBmb3IgdGhlIGRlbGVnYXRlIGlmIG5vdCBuaWwgYW5k
IHNldCBpdCBhcyB0aGUgaW1wbGVtZW50YXRpb24ncyBjbGllbnQuCisKKyAgICAgICAgKC1bX1dL
QXV0b21hdGlvblNlc3Npb24gX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaDogQWRkZWQu
CisgICAgICAgICh3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlv
blNlc3Npb25DbGllbnQuaDogQWRkZWQuCisgICAgICAgIFNldCB1cCB0aGUgYm9pbGVycGxhdGUg
Zm9yIGNhY2hpbmcgZGVsZWdhdGUgbWV0aG9kIGF2YWlsYWJpbGl0eS4gSXQgd2lsbCBpbmNsdWRl
IG1vcmUgbWV0aG9kcyBsYXRlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudC5tbTogQWRkZWQuIEZvcndhcmQgcmVxdWVzdHMgdG8gdGhlIFNQSSBk
ZWxlZ2F0ZS4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ6OmRpZFJlcXVlc3ROZXdXaW5kb3cpOiBEZWxlZ2F0ZSB3aW5kb3cgY3JlYXRpb24gdG8g
dGhlIGNsaWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0
b21hdGlvblNlc3Npb24pOgorICAgICAgICBCeSBkZWZhdWx0LCBhIHNlc3Npb24gc2hvdWxkIGJl
IGF2YWlsYWJsZSBhbmQgbm90IGJvdW5kIHRvIGFueSBwYXJ0aWN1bGFyIHJlbW90ZSBkcml2ZXIu
CisgICAgICAgIENhbGxpbmcgc2V0QXV0b21hdGlvbkFsbG93ZWQodHJ1ZSkgbWFrZXMgdGhlIHRh
cmdldCBzaG93IGFzIGF2YWlsYWJsZSBpbiBSZW1vdGVJbnNwZWN0b3IncyBsaXN0aW5nLgorCisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjp+V2ViQXV0b21hdGlvblNlc3Np
b24pOiBSZXF1aXJlIGNhbGxlcnMgdG8gY2xlYXIgdGhlIGNsaWVudCBmaXJzdC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNldENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRTZXNzaW9uSWRlbnRpZmllcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
KTogU3R1YiB0aGlzIG91dCBmb3Igbm93LgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OmRpc2Nvbm5lY3QpOgorICAgICAgICBUbyBwcmV2ZW50IG11bHRpcGxlIGNvbm5lY3Rpb24g
YXR0ZW1wdHMsIG1hcmsgdGhlIHRhcmdldCBhcyBub3Qgc3VwcG9ydGluZyBhdXRvbWF0aW9uCisg
ICAgICAgIHdoZW4gYSByZW1vdGUgY2xpZW50IGhhcyBjb25uZWN0ZWQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0b21hdGlvblNlc3Npb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNldEF1dG9tYXRpb25TZXNzaW9uKToKKyAgICAgICAgU3RvcmUgdGhlIHNlc3Npb24gb2JqZWN0
IGFuZCB0ZWxsIGl0IHRvIHJlZ2lzdGVyIGl0c2VsZi4gVW5yZWdpc3RlcmluZyBoYXBwZW5zIGF1
dG9tYXRpY2FsbHkKKyAgICAgICAgaW4gUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0Ojp+UmVtb3Rl
Q29udHJvbGxhYmxlVGFyZ2V0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgZmls
ZXMgYW5kIGhlYWRlcnMuCisKIDIwMTYtMDItMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBtb3JlIGluY29ycmVj
dCBBU1NFUlQgaW50cm9kdWNlZCBpbiByMTk2MDUzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgKaW5kZXggODI1YWY5N2I1ZDcwMGViMzI3MDYwNDlkZTlhM2Y4MjM5ZTg0MDRmYy4u
OGQ3N2YyMjNkOTIxMTEwNDA1N2ZkMzUwNTM2MTZmNGY5MTJhODE2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICAgICAgICAg
CiAgICAgICAgIC8vIFVJUHJvY2VzcyB0eXBlcwogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlciwKKyAgICAgICAgQXV0b21hdGlvblNlc3Npb24sCiAgICAgICAgIEJhY2tGb3J3YXJkTGlz
dCwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0SXRlbSwKICAgICAgICAgQmF0dGVyeU1hbmFnZXIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCAyYTQ1NGI4MjNh
MDJkNDMzNzIzM2NhMmE2NjYwOWVhODdlYzRkNjQ4Li5hMmYwNDE2YThmZGIxODAxYmU4N2VlZGEz
NmQyNDVhYjJhM2Q1NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3Qu
bW0KQEAgLTYxLDYgKzYxLDcgQEAKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
V2luZG93RmVhdHVyZXNJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25J
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
RnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFs
LmgiCkBAIC05OSw2ICsxMDAsMTAgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNp
emUsIFR5cGUgdHlwZSkKICAgICAgICAgd3JhcHBlciA9IE5TQWxsb2NhdGVPYmplY3QoW1dLTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBzZWxmXSwgc2l6ZSwgbnVsbHB0cik7CiAgICAgICAg
IGJyZWFrOwogCisgICAgY2FzZSBUeXBlOjpBdXRvbWF0aW9uU2Vzc2lvbjoKKyAgICAgICAgd3Jh
cHBlciA9IFtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAg
ICAgY2FzZSBUeXBlOjpCYWNrRm9yd2FyZExpc3Q6CiAgICAgICAgIHdyYXBwZXIgPSBbV0tCYWNr
Rm9yd2FyZExpc3QgYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41OWEzY2YwNWQxMzU5MWMyNzRjZTRhYTI2MWYyNTExNDA1OWJkMGVhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFQSUF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50X2gKKyNkZWZpbmUgQVBJQXV0b21hdGlvblNlc3Npb25DbGll
bnRfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb247CitjbGFzcyBXZWJQcm9jZXNzUG9vbDsK
K30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCgpIHsgfQorCisg
ICAgdmlydHVhbCBTdHJpbmcgc2Vzc2lvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBlbXB0
eVN0cmluZygpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3ROZXdXaW5kb3coV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24qKSB7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gQVBJQXV0b21hdGlvblNlc3Npb25D
bGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCmluZGV4IGM3NTcyY2Q2NDJkZWZiYWE0Mzg1YzJkNTYxNzdlZDg1YzljZDY3
NzcuLjIwMGRiYmQ3NzI4MDZkZTZhYzRmNmQ3YjVlNjlkMmY2ZmM3NDdkNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAg
LTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIgorI2lt
cG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRG93bmxv
YWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJu
YWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CkBAIC01NCw2ICs1NSw3IEBA
IEBpbXBsZW1lbnRhdGlvbiBXS1Byb2Nlc3NQb29sIHsKICAgICBXZWJLaXQ6OldlYWtPYmpDUHRy
PGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+PiBfYXV0b21hdGlvbkRlbGVnYXRlOwogICAgIFdl
YktpdDo6V2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+PiBfZG93bmxvYWREZWxl
Z2F0ZTsKIAorICAgIFJldGFpblB0cjxfV0tBdXRvbWF0aW9uU2Vzc2lvbj4gX2F1dG9tYXRpb25T
ZXNzaW9uOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBSZXRhaW5QdHI8V0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TPiBfZ2VvbG9jYXRpb25Qcm92aWRlcjsKICNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CkBAIC0yNDMsNiArMjQ1LDEyIEBAIC0gKHZvaWQpX2F1dG9tYXRpb25DYXBhYmlsaXRpZXNEaWRD
aGFuZ2UKICAgICBfcHJvY2Vzc1Bvb2wtPnVwZGF0ZUF1dG9tYXRpb25DYXBhYmlsaXRpZXMoKTsK
IH0KIAorLSAodm9pZClfc2V0QXV0b21hdGlvblNlc3Npb246KF9XS0F1dG9tYXRpb25TZXNzaW9u
ICopYXV0b21hdGlvblNlc3Npb24KK3sKKyAgICBfYXV0b21hdGlvblNlc3Npb24gPSBhdXRvbWF0
aW9uU2Vzc2lvbjsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25TZXNzaW9uKGF1dG9t
YXRpb25TZXNzaW9uID8gYXV0b21hdGlvblNlc3Npb24tPl9zZXNzaW9uLmdldCgpIDogbnVsbHB0
cik7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRl
LmgKaW5kZXggYWRkMTIyMGIxNmRiNzQ1ZTk2NTc1NjEzMTUwNjQzNGU1NjMxZmYzNC4uNzMzN2Vm
MWQ3Yzk0MzdmYjZjZWRiNDc4Mzk1MDFlMTg0ZDI1YzlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorQGNsYXNzIF9XS0F1dG9t
YXRpb25TZXNzaW9uOwogQGNsYXNzIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKIEBwcm90
b2NvbCBfV0tBdXRvbWF0aW9uRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0
ZTsKQEAgLTU2LDYgKzU3LDcgQEAKIAogLSAodm9pZClfd2FybUluaXRpYWxQcm9jZXNzIFdLX0FW
QUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIC0gKHZvaWQpX2F1dG9tYXRpb25DYXBh
YmlsaXRpZXNEaWRDaGFuZ2UgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwor
LSAodm9pZClfc2V0QXV0b21hdGlvblNlc3Npb246KF9XS0F1dG9tYXRpb25TZXNzaW9uICopYXV0
b21hdGlvblNlc3Npb24gV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogCiBA
ZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0b21hdGlvblNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGRhM2ZhNjY4ZDhlMWUzMDc3ZGJk
Yzg3MDNkYWQ3MGU1NmZlNjYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0wLDAgKzEsNDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19B
UElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworQHByb3Rv
Y29sIF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU7CisKK05TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKQorQGludGVy
ZmFjZSBfV0tBdXRvbWF0aW9uU2Vzc2lvbiA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSBOU1N0cmluZyAqc2Vzc2lvbklkZW50aWZpZXI7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgd2VhaykgaWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+IGRlbGVnYXRlOwor
CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJM
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
b21hdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F1dG9tYXRpb25TZXNzaW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1YmVmMWNkZTVjYjE5NTQyMTVhYjY3
MzI5MmE5M2UxNmE2ODY3NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCkBAIC0wLDAgKzEsOTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0F1dG9tYXRpb25T
ZXNzaW9uSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50LmgiCisjaW1wb3J0ICJXS0FQSUNhc3QuaCIKKyNpbXBvcnQgIldL
UHJvY2Vzc1Bvb2wuaCIKKyNpbXBvcnQgIldlYWtPYmpDUHRyLmgiCisjaW1wb3J0ICJXZWJBdXRv
bWF0aW9uU2Vzc2lvbi5oIgorI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZS5o
IgorCitAaW1wbGVtZW50YXRpb24gX1dLQXV0b21hdGlvblNlc3Npb24geworICAgIFdlYktpdDo6
V2Vha09iakNQdHI8aWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+PiBfZGVsZWdhdGU7
Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0
SW5XcmFwcGVyPFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24+KHNlbGYpOworCisgICAgcmV0
dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9zZXNzaW9uLT5zZXRDbGll
bnQobnVsbHB0cik7CisgICAgX3Nlc3Npb24tPn5XZWJBdXRvbWF0aW9uU2Vzc2lvbigpOworCisg
ICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChpZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxl
Z2F0ZT4pZGVsZWdhdGUKK3sKKyAgICByZXR1cm4gX2RlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgp
OworfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxl
Z2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBfc2Vzc2lv
bi0+c2V0Q2xpZW50KGRlbGVnYXRlID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRp
b25TZXNzaW9uQ2xpZW50PihkZWxlZ2F0ZSkgOiBudWxscHRyKTsKK30KKworLSAoTlNTdHJpbmcg
KilzZXNzaW9uSWRlbnRpZmllcgoreworICAgIHJldHVybiBfc2Vzc2lvbi0+bmFtZSgpOworfQor
CistICh2b2lkKXNldFNlc3Npb25JZGVudGlmaWVyOihOU1N0cmluZyAqKXNlc3Npb25JZGVudGlm
aWVyCit7CisgICAgX3Nlc3Npb24tPnNldFNlc3Npb25JZGVudGlmaWVyKHNlc3Npb25JZGVudGlm
aWVyKTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9u
CisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfc2Vzc2lvbjsK
K30KKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vz
c2lvbkRlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ3YjI3MDk1NjI1NDNiMmU5YWVjMTk3YTE1OTY5
ZDg4NWY5NjhkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19B
UElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworQGNsYXNz
IF9XS0F1dG9tYXRpb25TZXNzaW9uOworCitAcHJvdG9jb2wgX1dLQXV0b21hdGlvblNlc3Npb25E
ZWxlZ2F0ZSA8TlNPYmplY3Q+CitAb3B0aW9uYWwKKy0gKHZvaWQpX2F1dG9tYXRpb25TZXNzaW9u
RGlkUmVxdWVzdE5ld1dpbmRvdzooX1dLQXV0b21hdGlvblNlc3Npb24gKilhdXRvbWF0aW9uU2Vz
c2lvbjsKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNl
c3Npb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjYTdhN2YyOWZlOGM0Y2UzZDllY2JkOWNiYzJl
MzY0MTMyZjViOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaApAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb24uaCIKKworI2lmIFdL
X0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJXZWJBdXRvbWF0
aW9uU2Vzc2lvbi5oIgorCitpbmxpbmUgX1dLQXV0b21hdGlvblNlc3Npb24gKndyYXBwZXIoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBBU1NFUlQoW3Nlc3Np
b24ud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W19XS0F1dG9tYXRpb25TZXNzaW9uIGNsYXNzXV0p
OworICAgIHJldHVybiAoX1dLQXV0b21hdGlvblNlc3Npb24gKilzZXNzaW9uLndyYXBwZXIoKTsK
K30KKworQGludGVyZmFjZSBfV0tBdXRvbWF0aW9uU2Vzc2lvbiAoKSA8V0tPYmplY3Q+IHsKK0Bw
YWNrYWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b24+IF9zZXNzaW9uOworfQorQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9u
Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YwMjNhMWRmODMwZDcxMjFlYjE4NWU4ZDVkYTE3NmMzMWFi
YzdjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9B
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50X2gKKyNkZWZpbmUgQXV0b21hdGlvblNlc3Np
b25DbGllbnRfaAorCisjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKKworI2lmIFdLX0FQSV9FTkFC
TEVECisKKyNpbXBvcnQgIkFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgiCisjaW1wb3J0ICJX
ZWFrT2JqQ1B0ci5oIgorCitAcHJvdG9jb2wgX1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQgeworcHVibGljOgorICAg
IGV4cGxpY2l0IEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50KGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lv
bkRlbGVnYXRlPik7CisKK3ByaXZhdGU6CisgICAgLy8gRnJvbSBBUEk6OkF1dG9tYXRpb25TZXNz
aW9uQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3ROZXdXaW5kb3coV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24qKSBvdmVycmlkZTsK
KworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPj4gbV9k
ZWxlZ2F0ZTsKKworICAgIHN0cnVjdCB7CisgICAgICAgIGJvb2wgZGlkUmVxdWVzdE5ld1dpbmRv
dyA6IDE7CisgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYKKworI2VuZGlmIC8vIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOWI0NTBiY2U3NTZlNWE4Y2E5YzY1NDQyNzVmNWNl
NTgxOTNlYmRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJXZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oIgorI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAi
X1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50KGlkIDxfV0tB
dXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICA6IG1fZGVsZWdhdGUoZGVs
ZWdhdGUpCit7CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuZGlkUmVxdWVzdE5ld1dpbmRvdyA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9hdXRvbWF0aW9uU2Vzc2lvbkRp
ZFJlcXVlc3ROZXdXaW5kb3c6KV07Cit9CisKK3ZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6
OmRpZFJlcXVlc3ROZXdXaW5kb3coV2ViUHJvY2Vzc1Bvb2wqLCBXZWJBdXRvbWF0aW9uU2Vzc2lv
biogc2Vzc2lvbikKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZGlkUmVxdWVzdE5ld1dp
bmRvdykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uRGlkUmVx
dWVzdE5ld1dpbmRvdzp3cmFwcGVyKCpzZXNzaW9uKV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NWU4Zjg3OTg2
MzE5ODY1NjQzNmIwZjc2ODQ1MmIxZTE5MDFmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0wLDAgKzEsODQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXV0b21h
dGlvblNlc3Npb24uaCIKKworI2luY2x1ZGUgIkFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21h
dGlvblNlc3Npb24oKQorICAgIDogbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50PigpKQoreworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQor
ICAgIHNldEF1dG9tYXRpb25BbGxvd2VkKHRydWUpOworI2VuZGlmCit9CisKK1dlYkF1dG9tYXRp
b25TZXNzaW9uOjp+V2ViQXV0b21hdGlvblNlc3Npb24oKQoreworICAgIEFTU0VSVCghbV9jbGll
bnQpOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRDbGllbnQoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+IGNsaWVudCkKK3sKKyAgICBtX2Ns
aWVudCA9IFdURk1vdmUoY2xpZW50KTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
c2V0U2Vzc2lvbklkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikKK3sK
KyAgICBtX3Nlc3Npb25JZGVudGlmaWVyID0gc2Vzc2lvbklkZW50aWZpZXI7Cit9CisKKy8vIE5P
VEU6IHRoaXMgY2xhc3MgY291bGQgYmUgc3BsaXQgYXQgc29tZSBwb2ludCB0byBzdXBwb3J0IGxv
Y2FsIGFuZCByZW1vdGUgYXV0b21hdGlvbiBzZXNzaW9ucy4KKy8vIEZvciBub3csIGl0IG9ubHkg
d29ya3Mgd2l0aCBhIHJlbW90ZSBhdXRvbWF0aW9uIGRyaXZlciBvdmVyIGEgUmVtb3RlSW5zcGVj
dG9yIGNvbm5lY3Rpb24uCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworLy8gSW5z
cGVjdG9yOjpSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0IEFQSQorCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlKGNvbnN0IFN0cmluZyYpCit7CisgICAg
Ly8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgorfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBjaGFubmVsLCBib29sIGlz
QXV0b21hdGljQ29ubmVjdGlvbikKK3sKKyAgICBVTlVTRURfUEFSQU0oaXNBdXRvbWF0aWNDb25u
ZWN0aW9uKTsKKworICAgIG1fcmVtb3RlQ2hhbm5lbCA9IGNoYW5uZWw7CisgICAgc2V0QXV0b21h
dGlvbkFsbG93ZWQoZmFsc2UpOworfQorCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaXNj
b25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBjaGFubmVsKQoreworICAgIG1fcmVt
b3RlQ2hhbm5lbCA9IG51bGxwdHI7CisgICAgc2V0QXV0b21hdGlvbkFsbG93ZWQodHJ1ZSk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQXV0b21hdGlv
blNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAwNjMyMDA0NTAxM2RkMmE1NTczMjk5YzNlMWY4OTc1ZThkNmU5N2YK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQXV0b21hdGlv
blNlc3Npb24uaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBdXRv
bWF0aW9uU2Vzc2lvbl9oCisjZGVmaW5lIFdlYkF1dG9tYXRpb25TZXNzaW9uX2gKKworI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKyNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVBdXRvbWF0
aW9uVGFyZ2V0Lmg+CisjZW5kaWYKKworbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50OworCitjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBmaW5hbCA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkF1dG9tYXRpb25TZXNz
aW9uPgorI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgICwgcHVibGljIEluc3BlY3Rv
cjo6UmVtb3RlQXV0b21hdGlvblRhcmdldAorI2VuZGlmCit7CitwdWJsaWM6CisgICAgV2ViQXV0
b21hdGlvblNlc3Npb24oKTsKKyAgICB+V2ViQXV0b21hdGlvblNlc3Npb24oKTsKKworICAgIHZv
aWQgc2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
Pik7CisgICAgdm9pZCBzZXRTZXNzaW9uSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKKworI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIC8vIEluc3BlY3Rvcjo6UmVtb3RlQXV0b21h
dGlvblRhcmdldCBBUEkKKyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9zZXNzaW9uSWRlbnRpZmllcjsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aE1lc3NhZ2VGcm9tUmVtb3RlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBib29sIGlz
QXV0b21hdGljQ29ubmVjdGlvbiA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCopIG92ZXJyaWRlOworI2VuZGlm
CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ+IG1fY2xpZW50OworICAgIFN0cmluZyBtX3Nlc3Npb25JZGVudGlmaWVyIHsgQVNDSUlM
aXRlcmFsKCJVbnRpdGxlZCBTZXNzaW9uIikgfTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQorICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBtX3JlbW90ZUNoYW5uZWw7Cisj
ZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQXV0b21h
dGlvblNlc3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKaW5kZXggNjJiODVlY2VhMDVkMTM4MTI2MGZiMDY2OWFkZjhkY2NiMWEyMGQ3MC4uZTlhMzJj
M2I2ZGQ1MTM3MmEzMzY4OTg1MzQ4NDUyNWEwZmJhMGQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
U3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldL
Q29udGV4dFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVt
ZW50LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCkBAIC0xMDkzLDYgKzEw
OTQsMTYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlQXV0b21hdGlvbkNhcGFiaWxpdGll
cygpIGNvbnN0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlv
blNlc3Npb24oUmVmUHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uPiYmIGF1dG9tYXRpb25TZXNzaW9u
KQoreworICAgIG1fYXV0b21hdGlvblNlc3Npb24gPSBXVEZNb3ZlKGF1dG9tYXRpb25TZXNzaW9u
KTsKKworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmIChtX2F1dG9tYXRpb25T
ZXNzaW9uKQorICAgICAgICBtX2F1dG9tYXRpb25TZXNzaW9uLT5pbml0KCk7CisjZW5kaWYKK30K
Kwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SFRUUFBpcGVsaW5pbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKaW5kZXggZmYwNmNmNzU1MzUwNWM1NGVkZGE2OWJmZTg0YTM4NzJmYWE3
ZDAyMi4uZTA5Y2RhYzMwYTk4YjIxYWNlOTAxZjljODU5NzgyMTBkYzZjZjQzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xh
c3MgUGFnZUNvbmZpZ3VyYXRpb247CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRG93bmxv
YWRQcm94eTsKK2NsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3MgV2ViQ29udGV4dFN1
cHBsZW1lbnQ7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CkBA
IC0yNTQsNiArMjU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlUHJvY2Vzc1Rlcm1pbmF0
aW9uKCk7CiAKICAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpb25DYXBhYmlsaXRpZXMoKSBjb25zdDsK
KyAgICB2b2lkIHNldEF1dG9tYXRpb25TZXNzaW9uKFJlZlB0cjxXZWJBdXRvbWF0aW9uU2Vzc2lv
bj4mJik7CiAKICAgICAvLyBEZWZhdWx0cyB0byBmYWxzZS4KICAgICB2b2lkIHNldEhUVFBQaXBl
bGluaW5nRW5hYmxlZChib29sKTsKQEAgLTQyNiw2ICs0MjgsOCBAQCBwcml2YXRlOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiBtX2hpc3Rv
cnlDbGllbnQ7CiAKKyAgICBSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+IG1fYXV0b21hdGlv
blNlc3Npb247CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBQbHVnaW5J
bmZvU3RvcmUgbV9wbHVnaW5JbmZvU3RvcmU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYmUxZDg0MTkzMTY0MzEw
N2U3MDZjZTQ2ZTI5Mzk1NjNjMTc4NGRkLi5hN2U0YThiNGY1YjZkOTJjZGE5YWI1YjBmZDhiNjE3
ZjZkM2VkMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjQ0LDYgKzEyNDQsMTUgQEAKIAkJOTNBODhCNDcxQkM4ODI5NzAw
QUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBODhCNDIxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRl
c3RSZXN1bHQuY3BwICovOyB9OwogCQk5M0JERUIwMTE3MUREN0FGMDBCRkVFMUIgLyogV0tQYWdl
TG9hZFR5cGVzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNCREVCMDAxNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQxQkM1REQzOTAwRjhB
MEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5OTBEMjhBQjFDNjQyMEM2MDA5ODY5NzcgLyogX1dLQXV0b21h
dGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5MEQyOEE3MUM2NDA0QjAwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MEQyOEFD
MUM2NDIwQ0YwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTBEMjhBODFDNjQwNEIw
MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5MEQyOEIxMUM2NTIwOEQwMDk4
Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTBEMjhBRjFDNjUyMDM5MDA5ODY5NzcgLyog
X1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oICovOyB9OworCQk5OTBEMjhCMjFDNjUyMDk0
MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTBEMjhBRDFDNjUxOTA0MDA5ODY5NzcgLyogX1dL
QXV0b21hdGlvblNlc3Npb24ubW0gKi87IH07CisJCTk5MEQyOEJCMUM2NTM5RDMwMDk4Njk3NyAv
KiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTkwRDI4QjcxQzY1MzlBMDAwOTg2OTc3IC8qIEF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50LmggKi87IH07CisJCTk5MEQyOEJDMUM2NTM5REEwMDk4Njk3NyAvKiBBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5MEQyOEI4MUM2NTM5QTAwMDk4Njk3NyAvKiBBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudC5tbSAqLzsgfTsKKwkJOTkwRDI4QkYxQzY1NEQzOTAwOTg2OTc3IC8qIFdlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5MEQyOEJEMUM2NTQ5MEEwMDk4Njk3NyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAgKi87IH07CisJCTk5MEQyOEMwMUM2NTUzRjEwMDk4Njk3NyAvKiBBUElBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTkwRDI4QjMxQzY1MjZENDAwOTg2OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
LmggKi87IH07CisJCTk5MEQyOEMxMUM2NTYyNjUwMDk4Njk3NyAvKiBXZWJBdXRvbWF0aW9uU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkw
RDI4QjUxQzY1MjZGNTAwOTg2OTc3IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi87IH07CiAJ
CTk5QzgxRDU5MUMyMEUxRTUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENTYxQzIwREZCRTAw
NUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gKi87IH07CiAJCTk5QzgxRDVBMUMyMEU3RTIw
MDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlv
bkNsaWVudC5oICovOyB9OwogCQk5OUM4MUQ1RDFDMjFGMzhCMDA1QzRDODIgLyogQVBJQXV0b21h
dGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLzsg
fTsKQEAgLTMzNjUsNiArMzM3NCwxNSBAQAogCQk5M0E4OEI0MzFCQzg4MjhDMDBBQkE1QzIgLyog
QVBJSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElI
aXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQkRFQjAwMTcx
REQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RS
ZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3Vs
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTBEMjhBNzFDNjQwNEIwMDA5ODY5
NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLQXV0b21hdGlvblNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTkwRDI4QTgxQzY0MDRCMDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXV0b21hdGlvblNlc3Np
b25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTBEMjhBRDFDNjUx
OTA0MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwRDI4QUYxQzY1MjAzOTAwOTg2OTc3IC8qIF9XS0F1dG9t
YXRpb25TZXNzaW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5OTBEMjhCMzFDNjUyNkQ0MDA5ODY5NzcgLyogQVBJQXV0b21hdGlvblNlc3Npb25DbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvblNlc3Np
b25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwRDI4QjUxQzY1MjZG
NTAwOTg2OTc3IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5MEQyOEI3MUM2NTM5QTAwMDk4Njk3NyAvKiBBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTBEMjhCODFDNjUzOUEw
MDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwRDI4QkQxQzY1NDkwQTAwOTg2OTc3IC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b21hdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNs
aWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dG9tYXRp
b25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzgxRDVCMUMyMEU4
MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSUF1dG9tYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ3NzEsNiArNDc4OSw4IEBACiAJCQkJNTE3REQ1QkIxODBEQTdDNDAwODE2NjBC
IC8qIERhdGFiYXNlcyAqLywKIAkJCQk5OUM4MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21h
dGlvbkNsaWVudC5oICovLAogCQkJCTk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0
aW9uQ2xpZW50Lm1tICovLAorCQkJCTk5MEQyOEI3MUM2NTM5QTAwMDk4Njk3NyAvKiBBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudC5oICovLAorCQkJCTk5MEQyOEI4MUM2NTM5QTAwMDk4Njk3NyAvKiBB
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbSAqLywKIAkJCQk4Mzg5MUI2QTFBNjhDMzBCMDAzMEYz
ODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCAqLywKIAkJCQk4Mzg5MUI2QjFBNjhDMzBC
MDAzMEYzODYgLyogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQubW0gKi8sCiAJCQkJQTFERjYzMTEx
OEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50LmggKi8sCkBAIC01MTM0LDYgKzUxNTQs
MTAgQEAKIAkJCQkzN0E1RTAxMTE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8ubW0gKi8sCiAJCQkJMzc5QTg3MzUxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRl
ZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywKIAkJCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0Eg
LyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggKi8sCisJCQkJOTkwRDI4QTcxQzY0MDRCMDAwOTg2
OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLmggKi8sCisJCQkJOTkwRDI4QUQxQzY1MTkwNDAw
OTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLm1tICovLAorCQkJCTk5MEQyOEFGMUM2NTIw
MzkwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmggKi8sCisJCQkJOTkw
RDI4QTgxQzY0MDRCMDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGUuaCAq
LywKIAkJCQkxQTU3MDRGNjFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50
SW5mby5oICovLAogCQkJCTFBNTcwNEY1MUJFMDFGRjQwMDg3NEFGMSAvKiBfV0tDb250ZXh0TWVu
dUVsZW1lbnRJbmZvLm1tICovLAogCQkJCTgzODkxQjY4MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tE
aWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmggKi8sCkBAIC02MDMwLDYgKzYwNTQsOCBAQAogCQkJ
CTFBMEYyOUUxMTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1N0b3JlLmNwcCAqLywKIAkJ
CQkxQTBGMjlFMjEyMEI0NDQyMDA1M0QxQjkgLyogVmlzaXRlZExpbmtTdG9yZS5oICovLAogCQkJ
CTFBNjAyMjQ5MThDMTZCMDgwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmlu
ICovLAorCQkJCTk5MEQyOEJEMUM2NTQ5MEEwMDk4Njk3NyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAgKi8sCisJCQkJOTkwRDI4QjUxQzY1MjZGNTAwOTg2OTc3IC8qIFdlYkF1dG9tYXRpb25T
ZXNzaW9uLmggKi8sCiAJCQkJQkM3MkJBMUIxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3
YXJkTGlzdC5jcHAgKi8sCiAJCQkJQkM3MkJBMUMxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tG
b3J3YXJkTGlzdC5oICovLAogCQkJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xv
clBpY2tlci5jcHAgKi8sCkBAIC02MTI4LDYgKzYxNTQsNyBAQAogCQkJCUJDOEE1MDEzMTE3NjVG
NDUwMDc1NzU3MyAvKiBjcHAgKi8sCiAJCQkJQkMxMTFCNDcxMTJGNjE2OTAwMzM3QkFCIC8qIG1h
YyAqLywKIAkJCQk5OUM4MUQ1QjFDMjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVu
dC5oICovLAorCQkJCTk5MEQyOEIzMUM2NTI2RDQwMDk4Njk3NyAvKiBBUElBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudC5oICovLAogCQkJCTA3NkU4ODREMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250
ZXh0TWVudUNsaWVudC5oICovLAogCQkJCTgzODkxQjYyMUE2OEIzNDIwMDMwRjM4NiAvKiBBUElE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oICovLAogCQkJCTFGN0QzNkMwMThEQTUxM0YwMEQ5RDY1
OSAvKiBBUElEb3dubG9hZENsaWVudC5oICovLApAQCAtNzM4NCw2ICs3NDExLDcgQEAKIAkJCQlB
MUE0RkU1QzE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzc5QTg3M0ExOEJCRkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUE4NzNDMThCQkZGMDcwMDU4OEFGMiAvKiBfV0tFbGVt
ZW50QWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5MEQyOEJCMUM2NTM5RDMw
MDk4Njk3NyAvKiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE1NzA0RjIxQkUwMTc0MDAwODc0QUYxIC8qIF9XS0VsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUQwMUJDOTE5MDVEMzdFMDBDOUM0NUYgLyogX1dLRXJyb3JSZWNvdmVyeUF0dGVt
cHRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwNUQxNThGMThFNEM0RUIwMDczNDYxOSAvKiBf
V0tGaW5kRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ2MCw2ICs3NDg4LDcgQEAKIAkJ
CQkxQUMxMzM2QzE4NTY1QzdBMDBGM0VDMDUgLyogQVBJUGFnZUhhbmRsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFGREQzMTUxODkxQjU0MDAwMTUzOTcwIC8qIEFQSVBvbGljeUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0NFNEQyMjAxQTQ5MTRDQTAwQzdGMTUyIC8qIEFQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTkwRDI4QUMxQzY0MjBDRjAw
OTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY2MzQ0NDU2MTJBODg1QzgwMDA2MTJEOCAvKiBBUElTZWN1cml0eU9yaWdpbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzVBOEQyRTExODdERUMxQTAwQzM5QzlFIC8qIEFQSVNlc3Npb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTFBRkRFNjYyMTk1NEU5QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9u
U3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzU3Nyw2ICs3NjA2LDcgQEAKIAkJCQk1MTI5MzVF
NDEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUU1M0UzMTFGOENGQzAwMENDQkVFNCAvKiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTRFMTBBMTIw
QjkwNUUwMDgyNkMwQyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5OTBEMjhDMTFDNjU2MjY1MDA5ODY5NzcgLyogV2ViQXV0b21hdGlvblNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNENUM2NkExMTM0QjlEMzgwMDRGRTJBOCAvKiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4
QzZBOTExRTNCQTVGMDA4MTJGQjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzgxNDdBOTEyRjY0Q0RBMDA3QjJDMzIgLyogSW5qZWN0ZWRC
dW5kbGVQYWdlUG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTc2MTAsNiArNzY0MCw3
IEBACiAJCQkJMUFEQ0I4NkIxODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rpb25EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUJDM0RGNjE4OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdh
dGlvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTZGQkEyQTExRTY4NjI3MDBEQjEzNzEg
LyogTmV0c2NhcGVCcm93c2VyRnVuY3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5MEQyOEFCMUM2
NDIwQzYwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE2RkJEMjgxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTRBOUM1NjEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTU4ODkyMTFFRTcwNDAwMDYxQjg4MiAvKiBOZXRz
Y2FwZVBsdWdpblN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCkBAIC03ODM2LDYgKzc4NjcsNyBAQAog
CQkJCUJDMDMyREI5MTBGNDM4MEYwMDU4QzE1QSAvKiBXZWJFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMwMzJEQkIxMEY0MzgwRjAwNThDMTVBIC8qIFdlYkV2ZW50Q29udmVyc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxMTFCNUQxMTJGNjI5ODAwMzM3QkFCIC8qIFdlYkV2ZW50RmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTkwRDI4QzAxQzY1NTNGMTAwOTg2OTc3IC8qIEFQ
SUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkwQzFFRTEy
NjRGRDUwMDAzRTQ0RDQgLyogV2ViRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RTQ2OTU0MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0U0Njk1NjEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
clByb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTc4ODgsNiArNzkyMCw3IEBACiAJCQkJMkQzRUY0
NDMxOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlcklPUy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTA5ODU0RUQxMkJDNEUxODAwMEFEMDgwIC8qIFdlYk1lbW9yeVNhbXBs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjY5RjlBMTE3NkNFRDYwMDQ3MUE1MiAvKiBXZWJO
YXZpZ2F0aW9uRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTBEMjhCMTFDNjUyMDhE
MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0NDQ0M4RkIxQTVGNTBGRDAwOEZCMERBIC8qIFdlYk5hdmlnYXRpb25TdGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVDNDkxNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwOTk5QzcxNDZDOUUzRDAwMjlERUI5IC8qIFdl
Yk5vdGlmaWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05MjA4LDYgKzkyNDEsNyBA
QAogCQkJCUU0ODlEMjhGMUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVFbmNvZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUU0MTNGNTlGMUFDMUFGOUQwMDM0NTM2MCAvKiBOZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDY5N0NDRDFCMjVFQjhGMDAxQjBB
NkMgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OTBE
MjhCQzFDNjUzOURBMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQlFNDJFMDYwRjFBQTc1MjM0MDBCMTE2OTkgLyogTmV0d29ya0NhY2hlSU9D
aGFubmVsQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlFNDQzNkVDRDFBMEQwNDBCMDBFQUQy
MDQgLyogTmV0d29ya0NhY2hlS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTgzMUVFQkJFMUJE
ODVDNDMwMEJCNjRDMyAvKiBOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC05NjgxLDYgKzk3MTUsNyBAQAogCQkJCTFBNEQ2NjRCMThBMzAzMEUwMEQ4MkUy
MSAvKiBXS0ZyYW1lSW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEM0E2NUU2MUE3QzNBQTcw
MENBQzYzNyAvKiBXS0ZyYW1lSW5mb1JlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0I5RjZB
NjExMjNERDBEMDBBMTM3RTAgLyogV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTk5MEQyOEIyMUM2NTIwOTQwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxQUVBMjMwMTQ2ODdCREIwMDgwNDU2OSAvKiBXS0Z1
bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRENBODVDODEz
MkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDNTRDQzEzMTJENjc0RUUwMDVDNjdCMCAvKiBXS0dlb2xvY2F0aW9uTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk3MDYsNiArOTc0MSw3IEBACiAJCQkJQzk4QzQ4
QTkxQjZGRDVCNTAwMTQ1MTAzIC8qIFdLTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUM5Q0Q0MzlFMUI0QjAyNTMwMDIzOUUzMyAvKiBXS01lZGlhU2Vzc2lv
bk1ldGFkYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZEMTI0RkYwMjcwMDY4RjIw
QSAvKiBXS011dGFibGVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OTBEMjhCRjFDNjU0
RDM5MDA5ODY5NzcgLyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM0MDc1RkYxMjRGRjAyNzAwNjhGMjBBIC8qIFdLTXV0YWJsZURpY3Rpb25hcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE1QjFDNTAxODk4NjA2RjAwNEZDRjlCIC8qIFdLTmF2aWdhdGlv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMjU2RTM3MThBMUE3ODgwMDZGQjkyMiAvKiBXS05h
dmlnYXRpb25BY3Rpb24ubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271019</attachid>
            <date>2016-02-10 12:31:02 -0800</date>
            <delta_ts>2016-02-11 22:25:10 -0800</delta_ts>
            <desc>Take 2 (Depends on 154077)</desc>
            <filename>bug-153934-20160210123040.patch</filename>
            <type>text/plain</type>
            <size>46753</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzYxNGY4ODljZmMwNTNh
Zjk3OWUxZjE2MDA2NTIwZjY4YWM1YTUwZi4uMjJkM2ZhNGRjNmFiMGEwMjY0OTFhMDc0YjYwZWYy
YTcxZjAzNjk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE2LTAyLTEwICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdlYktpdCBTUEkgZm9y
IGNyZWF0aW5nIGFuIGF1dG9tYXRpb24gc2Vzc2lvbiBhbmQgYWR2ZXJ0aXNlIHRoZSBhY3RpdmUg
c2Vzc2lvbiB2aWEgUmVtb3RlSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBbiBhdXRvbWF0aW9uIHNlc3Npb24gaXMgdGhlIG1haW4gcGxh
Y2Ugd2hlcmUgV2ViS2l0IHN1cHBvcnQgZm9yIHVzZXIgYWdlbnQgYXV0b21hdGlvbiBpcyBpbXBs
ZW1lbnRlZC4KKyAgICAgICAgQSBzZXNzaW9uIGVuY2Fwc3VsYXRlcyB0aGUgc3RhdGUgKGRlZmF1
bHQgdGltZW91dHMsIHBhZ2UgaWRlbnRpZmllciBtYXBwaW5ncyksIG9iamVjdHMgKGFjdGl2ZSBh
dXRvbWF0aW9uCisgICAgICAgIFdlYlBhZ2VzKSBhbmQgbG9naWMgKGhvdyB0byBvcGVuIGEgd2lu
ZG93LCBydW4gSlMsIHNlbmQgdXNlciBpbnB1dCwgZXRjLikgdXNlZCB0byBpbXBsZW1lbnQgYXV0
b21hdGlvbgorICAgICAgICBjb21tYW5kcy4KKworICAgICAgICBBIHByb2Nlc3MgcG9vbCBjYW4g
b25seSBoYXZlIG9uZSBzZXNzaW9uIGF0IGEgdGltZS4gVGhlIHNlc3Npb24gaXMgY3JlYXRlZCBi
eSB0aGUgV2ViS2l0IGNsaWVudCBpbgorICAgICAgICByZXNwb25zZSB0byBhIHJlcXVlc3QgdGhh
dCBjb21lcyB0aHJvdWdoIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS4gV2hlbiBhIHNlc3Npb24gaXMg
c2V0IG9uIHRoZSBwcm9jZXNzIHBvb2wsCisgICAgICAgIGl0IGlzIGFkdmVydGlzZWQgdG8gcmVt
b3RlIGRyaXZlcnMgYW5kIGRlYnVnZ2VycyBhcyBhIFJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldC4g
QSByZW1vdGUgZHJpdmVyIGNhbiB1c2UKKyAgICAgICAgdGhlIGV4aXN0aW5nIFJlbW90ZUluc3Bl
Y3RvciBBUEkgdG8gY29ubmVjdCB0byB0aGUgc2Vzc2lvbiBhbmQgc2VuZCBpdCBhdXRvbWF0aW9u
IGNvbW1hbmRzLgorCisgICAgICAgIFRoZSBzZXNzaW9uIGhhcyBhIGRlbGVnYXRlIHNvIHRoYXQg
V2ViS2l0IGNsaWVudHMgY2FuIHBlcmZvcm0gYWN0aW9ucyB0aGF0IGFyZSBvdXRzaWRlIHRoZSBz
Y29wZSBvZiBXZWJLaXQsCisgICAgICAgIHN1Y2ggYXMgY3JlYXRpbmcgbmV3IHRhYnMsIGVudW1l
cmF0aW5nIHdpbmRvd3MsIG9yIHNlbmRpbmcgbmF0aXZlIHVzZXIgaW5wdXRzLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBBdXRvbWF0aW9uU2Vzc2lvbiBjbGFzc2VzIGF0IHRoZSBBUEkgYW5k
IGltcGxlbWVudGF0aW9uIGxldmVsIGluIFdlYktpdDIuIFRoZQorICAgICAgICBpbXBsZW1lbnRh
dGlvbiBjbGFzcyBjb250YWlucyBSZW1vdGVJbnNwZWN0b3Igc3VwcG9ydCwgd2hpY2ggY2Fubm90
IGJlIHVzZWQgZGlyZWN0bHkgYnkgV2ViS2l0IGNsaWVudHMuCisgICAgICAgIEF1dG9tYXRpb25T
ZXNzaW9uRGVsZWdhdGUgY2xhc3NlcyBleGlzdCBhdCBib3RoIHRoZSBBUEkgYW5kIGltcGxlbWVu
dGF0aW9uIGxldmVsIHRvIGJyaWRnZSBiZXR3ZWVuCisgICAgICAgIE9iamVjdGl2ZS1DIGRlbGVn
YXRlcyBhbmQgQysrIGNsaWVudHMuIEFsbCBjb2RlIHJlbGF0ZWQgdG8gUmVtb3RlSW5zcGVjdG9y
IGFuZCBSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0CisgICAgICAgIG11c3QgYmUgZ3VhcmRlZCBieSBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVj
dC5oOiBBZGQgbmV3IEFQSSB0eXBlICdBdXRvbWF0aW9uU2Vzc2lvbicuCisgICAgICAgICogU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3Qp
OiBBbGxvY2F0ZSBpbiB0aGUgd3JhcHBlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudDo6fkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50KToKKyAgICAgICAgKEFQSTo6
QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OmRpZFJlcXVlc3ROZXdXaW5kb3cpOiBEZWxlZ2F0ZSB3
aW5kb3cgY3JlYXRpb24gdG8gdGhlIGNsaWVudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9t
YXRpb25TZXNzaW9uOl0pOiBLZWVwIGF0IG1vc3Qgb25lIFdlYkF1dG9tYXRpb25TZXNzaW9uIGF0
IGEgdGltZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lv
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25T
ZXNzaW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24gaW5pdF0p
OiBDb25zdHJ1Y3QgdGhlIEFQSSBvYmplY3QgaW4gdGhlIGltcGxlbWVudGF0aW9uIHdyYXBwZXIu
CisgICAgICAgICgtW19XS0F1dG9tYXRpb25TZXNzaW9uIGRlYWxsb2NdKTogQ2xlYXIgdGhlIGNs
aWVudCBiZWZvcmUgY2FsbGluZyB0aGUgaW1wbGVtZW50YXRpb24gZGVzdHJ1Y3Rvci4KKworICAg
ICAgICAoLVtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBzZXNzaW9uSWRlbnRpZmllcl0pOgorICAgICAg
ICAoLVtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBzZXRTZXNzaW9uSWRlbnRpZmllcjpdKToKKyAgICAg
ICAgU3RvcmUgdGhlIHNlc3Npb24gaWRlbnRpZmllciBzdHJpbmcgaW4gdGhlIGltcGxlbWVudGF0
aW9uLgorCisgICAgICAgICgtW19XS0F1dG9tYXRpb25TZXNzaW9uIGRlbGVnYXRlXSk6CisgICAg
ICAgICgtW19XS0F1dG9tYXRpb25TZXNzaW9uIHNldERlbGVnYXRlOl0pOgorICAgICAgICBDcmVh
dGUgYW4gT2JqZWN0aXZlLUMgYWRhcHRlciBmb3IgdGhlIGRlbGVnYXRlIGlmIG5vdCBuaWwgYW5k
IHNldCBpdCBhcyB0aGUgaW1wbGVtZW50YXRpb24ncyBjbGllbnQuCisKKyAgICAgICAgKC1bX1dL
QXV0b21hdGlvblNlc3Npb24gX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaDogQWRkZWQu
CisgICAgICAgICh3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlv
blNlc3Npb25DbGllbnQuaDogQWRkZWQuCisgICAgICAgIFNldCB1cCB0aGUgYm9pbGVycGxhdGUg
Zm9yIGNhY2hpbmcgZGVsZWdhdGUgbWV0aG9kIGF2YWlsYWJpbGl0eS4gSXQgd2lsbCBpbmNsdWRl
IG1vcmUgbWV0aG9kcyBsYXRlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudC5tbTogQWRkZWQuIEZvcndhcmQgcmVxdWVzdHMgdG8gdGhlIFNQSSBk
ZWxlZ2F0ZS4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ6OmRpZFJlcXVlc3ROZXdXaW5kb3cpOiBEZWxlZ2F0ZSB3aW5kb3cgY3JlYXRpb24gdG8g
dGhlIGNsaWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0
b21hdGlvblNlc3Npb24pOgorICAgICAgICBCeSBkZWZhdWx0LCBhIHNlc3Npb24gc2hvdWxkIGJl
IGF2YWlsYWJsZSBhbmQgbm90IHBhaXJlZCB0byBhbnkgcGFydGljdWxhciByZW1vdGUgZHJpdmVy
LgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjp+V2ViQXV0b21hdGlv
blNlc3Npb24pOiBSZXF1aXJlIGNhbGxlcnMgdG8gY2xlYXIgdGhlIGNsaWVudCBmaXJzdC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OnNldENsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
KTogU3R1YiB0aGlzIG91dCBmb3Igbm93LgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b246OmRpc2Nvbm5lY3QpOgorICAgICAgICBUbyBwcmV2ZW50IG11bHRpcGxlIGNvbm5lY3Rpb24g
YXR0ZW1wdHMsIG1hcmsgdGhlIHRhcmdldCBhcyBwYWlyZWQgd2hlbiBhIHJlbW90ZSBjbGllbnQg
aGFzIGNvbm5lY3RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvblNlc3Npb24pOgorICAg
ICAgICBTdG9yZSB0aGUgc2Vzc2lvbiBvYmplY3QgYW5kIHRlbGwgaXQgdG8gcmVnaXN0ZXIgaXRz
ZWxmLiBVbnJlZ2lzdGVyaW5nIGhhcHBlbnMgYXV0b21hdGljYWxseQorICAgICAgICBpbiBSZW1v
dGVDb250cm9sbGFibGVUYXJnZXQ6On5SZW1vdGVDb250cm9sbGFibGVUYXJnZXQuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBmaWxlcyBhbmQgaGVhZGVycy4KKwogMjAxNi0wMi0w
OSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMTk2MTgzKTogW0dUS10gQnJva2UgVGVzdEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggODI1YWY5N2I1ZDcwMGViMzI3MDYwNDlkZTlh
M2Y4MjM5ZTg0MDRmYy4uOGQ3N2YyMjNkOTIxMTEwNDA1N2ZkMzUwNTM2MTZmNGY5MTJhODE2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC05OCw2ICs5OCw3IEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgICAgIC8vIFVJUHJvY2VzcyB0eXBlcwogICAgICAgICBBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlciwKKyAgICAgICAgQXV0b21hdGlvblNlc3Npb24sCiAgICAgICAg
IEJhY2tGb3J3YXJkTGlzdCwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0SXRlbSwKICAgICAgICAg
QmF0dGVyeU1hbmFnZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpp
bmRleCAyYTQ1NGI4MjNhMDJkNDMzNzIzM2NhMmE2NjYwOWVhODdlYzRkNjQ4Li5hMmYwNDE2YThm
ZGIxODAxYmU4N2VlZGEzNmQyNDVhYjJhM2Q1NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b2NvYS9BUElPYmplY3QubW0KQEAgLTYxLDYgKzYxLDcgQEAKICNpbXBvcnQgIldLV2Vic2l0ZURh
dGFSZWNvcmRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLV2luZG93RmVhdHVyZXNJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLQXV0
b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSGl0VGVz
dFJlc3VsdEludGVybmFsLmgiCkBAIC05OSw2ICsxMDAsMTAgQEAgdm9pZCogT2JqZWN0OjpuZXdP
YmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgd3JhcHBlciA9IE5TQWxsb2Nh
dGVPYmplY3QoW1dLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBzZWxmXSwgc2l6ZSwgbnVs
bHB0cik7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBUeXBlOjpBdXRvbWF0aW9uU2Vzc2lv
bjoKKyAgICAgICAgd3JhcHBlciA9IFtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBhbGxvY107CisgICAg
ICAgIGJyZWFrOworCiAgICAgY2FzZSBUeXBlOjpCYWNrRm9yd2FyZExpc3Q6CiAgICAgICAgIHdy
YXBwZXIgPSBbV0tCYWNrRm9yd2FyZExpc3QgYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25D
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Np
b25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOGVkYWNiNTY3MzBlNjIwMmU2NDg2ZjczNGY0N2RkM2Uy
YTU0NjcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50X2gKKyNkZWZpbmUgQVBJQXV0b21h
dGlvblNlc3Npb25DbGllbnRfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb247CitjbGFzcyBX
ZWJQcm9jZXNzUG9vbDsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudCgpIHsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgc2Vzc2lvbklkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0TmV3V2lu
ZG93KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
KikgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEFQSUF1dG9tYXRp
b25TZXNzaW9uQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBjNzU3MmNkNjQyZGVmYmFhNDM4NWMyZDU2MTc3
ZWQ4NWM5Y2Q2Nzc3Li4yMDBkYmJkNzcyODA2ZGU2YWM0ZjZkN2I1ZTY5ZDJmNmZjNzQ3ZDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uRGVsZWdh
dGUuaCIKKyNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCIKICNpbXBvcnQg
Il9XS0Rvd25sb2FkRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbkludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5oPgpAQCAtNTQs
NiArNTUsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tQcm9jZXNzUG9vbCB7CiAgICAgV2ViS2l0OjpX
ZWFrT2JqQ1B0cjxpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPj4gX2F1dG9tYXRpb25EZWxlZ2F0
ZTsKICAgICBXZWJLaXQ6OldlYWtPYmpDUHRyPGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPj4gX2Rv
d25sb2FkRGVsZWdhdGU7CiAKKyAgICBSZXRhaW5QdHI8X1dLQXV0b21hdGlvblNlc3Npb24+IF9h
dXRvbWF0aW9uU2Vzc2lvbjsKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmV0YWluUHRyPFdLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUz4gX2dlb2xvY2F0aW9uUHJvdmlkZXI7CiAjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQpAQCAtMjQzLDYgKzI0NSwxMiBAQCAtICh2b2lkKV9hdXRvbWF0aW9uQ2FwYWJp
bGl0aWVzRGlkQ2hhbmdlCiAgICAgX3Byb2Nlc3NQb29sLT51cGRhdGVBdXRvbWF0aW9uQ2FwYWJp
bGl0aWVzKCk7CiB9CiAKKy0gKHZvaWQpX3NldEF1dG9tYXRpb25TZXNzaW9uOihfV0tBdXRvbWF0
aW9uU2Vzc2lvbiAqKWF1dG9tYXRpb25TZXNzaW9uCit7CisgICAgX2F1dG9tYXRpb25TZXNzaW9u
ID0gYXV0b21hdGlvblNlc3Npb247CisgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uU2Vz
c2lvbihhdXRvbWF0aW9uU2Vzc2lvbiA/IGF1dG9tYXRpb25TZXNzaW9uLT5fc2Vzc2lvbi5nZXQo
KSA6IG51bGxwdHIpOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oCmluZGV4IGFkZDEyMjBiMTZkYjc0NWU5NjU3NTYxMzE1MDY0MzRlNTYzMWZm
MzQuLjczMzdlZjFkN2M5NDM3ZmI2Y2VkYjQ3ODM5NTAxZTE4NGQyNWM5ZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKK0BjbGFz
cyBfV0tBdXRvbWF0aW9uU2Vzc2lvbjsKIEBjbGFzcyBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b247CiBAcHJvdG9jb2wgX1dLQXV0b21hdGlvbkRlbGVnYXRlOwogQHByb3RvY29sIF9XS0Rvd25s
b2FkRGVsZWdhdGU7CkBAIC01Niw2ICs1Nyw3IEBACiAKIC0gKHZvaWQpX3dhcm1Jbml0aWFsUHJv
Y2VzcyBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAtICh2b2lkKV9hdXRv
bWF0aW9uQ2FwYWJpbGl0aWVzRGlkQ2hhbmdlIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19J
T1NfVEJBKTsKKy0gKHZvaWQpX3NldEF1dG9tYXRpb25TZXNzaW9uOihfV0tBdXRvbWF0aW9uU2Vz
c2lvbiAqKWF1dG9tYXRpb25TZXNzaW9uIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1Nf
VEJBKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkYTNmYTY2OGQ4
ZTFlMzA3N2RiZGM4NzAzZGFkNzBlNTZmZTY2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24uaApAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+
CisKK0Bwcm90b2NvbCBfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlOworCitOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RC
QSkKK0BpbnRlcmZhY2UgX1dLQXV0b21hdGlvblNlc3Npb24gOiBOU09iamVjdAorCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnNlc3Npb25JZGVudGlmaWVyOworQHByb3Bl
cnR5IChub25hdG9taWMsIHdlYWspIGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPiBk
ZWxlZ2F0ZTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFdL
X0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTc0Y2U0YTRjNzdk
OTlkZmU5OTc0ZjQzNzhmNDU1MzA2ZGQ5YzAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQpAQCAtMCww
ICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tB
dXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1w
b3J0ICJBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIgorI2ltcG9ydCAiV0tBUElDYXN0LmgiCisj
aW1wb3J0ICJXS1Byb2Nlc3NQb29sLmgiCisjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgorI2ltcG9y
dCAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKKyNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9u
RGVsZWdhdGUuaCIKKworQGltcGxlbWVudGF0aW9uIF9XS0F1dG9tYXRpb25TZXNzaW9uIHsKKyAg
ICBXZWJLaXQ6OldlYWtPYmpDUHRyPGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPj4g
X2RlbGVnYXRlOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVBJOjpPYmplY3Q6
OmNvbnN0cnVjdEluV3JhcHBlcjxXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uPihzZWxmKTsK
KworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfc2Vzc2lv
bi0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgIF9zZXNzaW9uLT5+V2ViQXV0b21hdGlvblNlc3Np
b24oKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoaWQgPF9XS0F1dG9tYXRpb25T
ZXNzaW9uRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXRBdXRv
cmVsZWFzZWQoKTsKK30KKworLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0F1dG9tYXRpb25T
ZXNzaW9uRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxlZ2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7Cit9CisKKy0g
KE5TU3RyaW5nICopc2Vzc2lvbklkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gX3Nlc3Npb24tPnNl
c3Npb25JZGVudGlmaWVyKCk7Cit9CisKKy0gKHZvaWQpc2V0U2Vzc2lvbklkZW50aWZpZXI6KE5T
U3RyaW5nICopc2Vzc2lvbklkZW50aWZpZXIKK3sKKyAgICBfc2Vzc2lvbi0+c2V0U2Vzc2lvbklk
ZW50aWZpZXIoc2Vzc2lvbklkZW50aWZpZXIpOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3Qg
cHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sK
KyAgICByZXR1cm4gKl9zZXNzaW9uOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5B
QkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDdiMjcw
OTU2MjU0M2IyZTlhZWMxOTdhMTU5NjlkODg1Zjk2OGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVn
YXRlLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0Zv
dW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgorCitAY2xhc3MgX1dLQXV0b21hdGlvblNlc3Npb247CisKK0Bwcm90b2Nv
bCBfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlIDxOU09iamVjdD4KK0BvcHRpb25hbAorLSAo
dm9pZClfYXV0b21hdGlvblNlc3Npb25EaWRSZXF1ZXN0TmV3V2luZG93OihfV0tBdXRvbWF0aW9u
U2Vzc2lvbiAqKWF1dG9tYXRpb25TZXNzaW9uOworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNhN2E3
ZjI5ZmU4YzRjZTNkOWVjYmQ5Y2JjMmUzNjQxMzJmNWI4ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb25JbnRl
cm5hbC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tBdXRvbWF0
aW9uU2Vzc2lvbi5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiV0tPYmplY3Qu
aCIKKyNpbXBvcnQgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCisKK2lubGluZSBfV0tBdXRvbWF0
aW9uU2Vzc2lvbiAqd3JhcHBlcihXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiBzZXNzaW9u
KQoreworICAgIEFTU0VSVChbc2Vzc2lvbi53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLQXV0
b21hdGlvblNlc3Npb24gY2xhc3NdXSk7CisgICAgcmV0dXJuIChfV0tBdXRvbWF0aW9uU2Vzc2lv
biAqKXNlc3Npb24ud3JhcHBlcigpOworfQorCitAaW50ZXJmYWNlIF9XS0F1dG9tYXRpb25TZXNz
aW9uICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbj4gX3Nlc3Npb247Cit9CitAZW5kCisKKyNlbmRpZiAv
LyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjAyM2ExZGY4MzBk
NzEyMWViMTg1ZThkNWRhMTc2YzMxYWJjN2NlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTAsMCAr
MSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXV0b21hdGlvblNlc3Npb25DbGllbnRfaAor
I2RlZmluZSBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudF9oCisKKyNpbXBvcnQgIldLRm91bmRhdGlv
bi5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJQXV0b21hdGlvblNlc3Np
b25DbGllbnQuaCIKKyNpbXBvcnQgIldlYWtPYmpDUHRyLmgiCisKK0Bwcm90b2NvbCBfV0tBdXRv
bWF0aW9uU2Vzc2lvbkRlbGVnYXRlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQXV0
b21hdGlvblNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQo
aWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+KTsKKworcHJpdmF0ZToKKyAgICAvLyBG
cm9tIEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVx
dWVzdE5ld1dpbmRvdyhXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbiopIG92ZXJyaWRlOworCisgICAgV2Vha09iakNQdHI8aWQgPF9XS0F1dG9tYXRp
b25TZXNzaW9uRGVsZWdhdGU+PiBtX2RlbGVnYXRlOworCisgICAgc3RydWN0IHsKKyAgICAgICAg
Ym9vbCBkaWRSZXF1ZXN0TmV3V2luZG93IDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgorCisjZW5kaWYgLy8gQXV0b21h
dGlvblNlc3Npb25DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5YjQ1MGJj
ZTc1NmU1YThjYTljNjU0NDI3NWY1Y2U1ODE5M2ViZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0KQEAg
LTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
QXV0b21hdGlvblNlc3Npb25DbGllbnQuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBv
cnQgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCisjaW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lv
bkRlbGVnYXRlLmgiCisjaW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6QXV0b21hdGlv
blNlc3Npb25DbGllbnQoaWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+IGRlbGVnYXRl
KQorICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKK3sKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5k
aWRSZXF1ZXN0TmV3V2luZG93ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX2F1dG9tYXRpb25TZXNzaW9uRGlkUmVxdWVzdE5ld1dpbmRvdzopXTsKK30KKwordm9pZCBB
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6ZGlkUmVxdWVzdE5ld1dpbmRvdyhXZWJQcm9jZXNzUG9v
bCosIFdlYkF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIGlmIChtX2RlbGVnYXRl
TWV0aG9kcy5kaWRSZXF1ZXN0TmV3V2luZG93KQorICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBf
YXV0b21hdGlvblNlc3Npb25EaWRSZXF1ZXN0TmV3V2luZG93OndyYXBwZXIoKnNlc3Npb24pXTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTk5MzE3M2VkNDQ5N2EwZGZjMzFmMmVmNzU2ZTA2N2VhMjkwMWIyOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgorCisjaW5jbHVkZSAiQVBJQXV0
b21hdGlvblNlc3Npb25DbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkF1dG9t
YXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbigpCisgICAgOiBtX2NsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KCkpCit7CisjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgc2V0QXV0b21hdGlvbkFsbG93ZWQodHJ1ZSk7Cisj
ZW5kaWYKK30KKworV2ViQXV0b21hdGlvblNlc3Npb246On5XZWJBdXRvbWF0aW9uU2Vzc2lvbigp
Cit7CisgICAgQVNTRVJUKCFtX2NsaWVudCk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworfQorCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRTZXNzaW9uSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IHNlc3Npb25JZGVudGlmaWVyKQoreworICAgIG1fc2Vzc2lvbklkZW50aWZpZXIgPSBzZXNzaW9u
SWRlbnRpZmllcjsKK30KKworLy8gTk9URTogdGhpcyBjbGFzcyBjb3VsZCBiZSBzcGxpdCBhdCBz
b21lIHBvaW50IHRvIHN1cHBvcnQgbG9jYWwgYW5kIHJlbW90ZSBhdXRvbWF0aW9uIHNlc3Npb25z
LgorLy8gRm9yIG5vdywgaXQgb25seSB3b3JrcyB3aXRoIGEgcmVtb3RlIGF1dG9tYXRpb24gZHJp
dmVyIG92ZXIgYSBSZW1vdGVJbnNwZWN0b3IgY29ubmVjdGlvbi4KKworI2lmIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQorCisvLyBJbnNwZWN0b3I6OlJlbW90ZUF1dG9tYXRpb25UYXJnZXQgQVBJ
CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGUo
Y29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCit9CisK
K3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqIGNoYW5uZWwsIGJvb2wgaXNBdXRvbWF0aWNDb25uZWN0aW9uKQoreworICAgIFVOVVNF
RF9QQVJBTShpc0F1dG9tYXRpY0Nvbm5lY3Rpb24pOworCisgICAgbV9yZW1vdGVDaGFubmVsID0g
Y2hhbm5lbDsKKyAgICBzZXRJc1BhaXJlZCh0cnVlKTsKK30KKwordm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCkK
K3sKKyAgICBtX3JlbW90ZUNoYW5uZWwgPSBudWxscHRyOworICAgIHNldElzUGFpcmVkKGZhbHNl
KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODgzNWVmZDZjOGUzMTJlOWQ4MTk5NjRlMzYzMTkxODgwNjZm
YjdjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YkF1dG9tYXRpb25TZXNzaW9uX2gKKyNkZWZpbmUgV2ViQXV0b21hdGlvblNlc3Npb25faAorCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUF1
dG9tYXRpb25UYXJnZXQuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIEF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
QXV0b21hdGlvblNlc3Npb25DbGllbnQ7CisKK2NsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uIGZp
bmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QXV0b21hdGlv
blNlc3Npb24+CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgLCBwdWJsaWMgSW5z
cGVjdG9yOjpSZW1vdGVBdXRvbWF0aW9uVGFyZ2V0CisjZW5kaWYKK3sKK3B1YmxpYzoKKyAgICBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbigpOworICAgIH5XZWJBdXRvbWF0aW9uU2Vzc2lvbigpOworCisg
ICAgdm9pZCBzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ+KTsKKworICAgIHZvaWQgc2V0U2Vzc2lvbklkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWRlbnRpZmllcikgeyBtX3Nlc3Npb25JZGVudGlmaWVyID0gc2Vzc2lvbklkZW50aWZp
ZXI7IH0KKyAgICBTdHJpbmcgc2Vzc2lvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Nl
c3Npb25JZGVudGlmaWVyOyB9CisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICAv
LyBJbnNwZWN0b3I6OlJlbW90ZUF1dG9tYXRpb25UYXJnZXQgQVBJCisgICAgdmlydHVhbCBTdHJp
bmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lvbklkZW50aWZpZXI7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0Nvbm5lY3Rpb24gPSBmYWxzZSkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwqKSBvdmVycmlkZTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKKyAgICBTdHJpbmcgbV9z
ZXNzaW9uSWRlbnRpZmllciB7IEFTQ0lJTGl0ZXJhbCgiVW50aXRsZWQgU2Vzc2lvbiIpIH07CisK
KyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCogbV9yZW1vdGVDaGFubmVsIHsgbnVsbHB0ciB9OworI2VuZGlmCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkF1dG9tYXRpb25TZXNzaW9uX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGJmM2NlNWQ4ZGZl
YzgyMWEyMTAwODljNTY4YzZlZTBiYzc4ZmJiOGQuLmE1ZTI0Y2FjYWM1NWJiNjYwODM2YjMzYWQ0
YWEwODZlZGNlZGM3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAj
aW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlLmgiCisj
aW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0
ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldl
YkNvb2tpZU1hbmFnZXJQcm94eS5oIgpAQCAtMTA5MSw2ICsxMDkyLDE2IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnVwZGF0ZUF1dG9tYXRpb25DYXBhYmlsaXRpZXMoKSBjb25zdAogI2VuZGlmCiB9
CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25TZXNzaW9uKFJlZlB0cjxXZWJB
dXRvbWF0aW9uU2Vzc2lvbj4mJiBhdXRvbWF0aW9uU2Vzc2lvbikKK3sKKyAgICBtX2F1dG9tYXRp
b25TZXNzaW9uID0gV1RGTW92ZShhdXRvbWF0aW9uU2Vzc2lvbik7CisKKyNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKKyAgICBpZiAobV9hdXRvbWF0aW9uU2Vzc2lvbikKKyAgICAgICAgbV9h
dXRvbWF0aW9uU2Vzc2lvbi0+aW5pdCgpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnNldEhUVFBQaXBlbGluaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4
IGI3Yzc1ZDYwNTcxNzliZWMwOGY2YWVjNjAyZDMxOWU4N2M2MmU1ODYuLjQ0M2FkOTc3MmM0NzBh
ZDk1MjkxNWI4MzZmYzIwOWJiM2Y5OTBiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCkBAIC03OSw2ICs3OSw3IEBAIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9u
OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERvd25sb2FkUHJveHk7CitjbGFzcyBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjsKIGNsYXNzIFdlYkNvbnRleHRTdXBwbGVtZW50OwogY2xhc3MgV2Vi
SWNvbkRhdGFiYXNlOwogY2xhc3MgV2ViUGFnZUdyb3VwOwpAQCAtMjU0LDYgKzI1NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGVuYWJsZVByb2Nlc3NUZXJtaW5hdGlvbigpOwogCiAgICAgdm9pZCB1
cGRhdGVBdXRvbWF0aW9uQ2FwYWJpbGl0aWVzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBdXRvbWF0
aW9uU2Vzc2lvbihSZWZQdHI8V2ViQXV0b21hdGlvblNlc3Npb24+JiYpOwogCiAgICAgLy8gRGVm
YXVsdHMgdG8gZmFsc2UuCiAgICAgdm9pZCBzZXRIVFRQUGlwZWxpbmluZ0VuYWJsZWQoYm9vbCk7
CkBAIC00MjYsNiArNDI4LDggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpE
b3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50OwogCisgICAgUmVm
UHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uPiBtX2F1dG9tYXRpb25TZXNzaW9uOworCiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgUGx1Z2luSW5mb1N0b3JlIG1fcGx1Z2luSW5m
b1N0b3JlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNjQwYjU2Yjc1Y2FhODc1NWU4MTRjNDMwODVhZDE3ZmJkMzRm
Mjk5ZS4uOGVlNjQ2YWU3NWVlY2NhZDRmMTg4ZDk4MTM3YWJkZWU0MDk3YzdlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0
NSw2ICsxMjQ1LDE1IEBACiAJCTkzQTg4QjQ3MUJDODgyOTcwMEFCQTVDMiAvKiBBUElIaXRUZXN0
UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQTg4QjQyMUJDODgyOEMwMEFCQTVDMiAvKiBBUElIaXRUZXN0UmVzdWx0LmNwcCAqLzsgfTsK
IAkJOTNCREVCMDExNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQkRFQjAwMTcx
REQ3QUYwMEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFNkE0RUUxQkM1REQzOTAwRjhB
MEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVz
dWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
OTkwRDI4QUIxQzY0MjBDNjAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTBEMjhBNzFDNjQwNEIw
MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTBEMjhBQzFDNjQyMENGMDA5ODY5NzcgLyog
X1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwRDI4QTgxQzY0MDRCMDAwOTg2OTc3IC8qIF9XS0F1dG9t
YXRpb25TZXNzaW9uRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk5OTBEMjhCMTFDNjUyMDhEMDA5ODY5NzcgLyogX1dLQXV0b21hdGlv
blNlc3Npb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTkwRDI4QUYxQzY1MjAzOTAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9u
SW50ZXJuYWwuaCAqLzsgfTsKKwkJOTkwRDI4QjIxQzY1MjA5NDAwOTg2OTc3IC8qIF9XS0F1dG9t
YXRpb25TZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTkwRDI4QUQxQzY1MTkwNDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLm1t
ICovOyB9OworCQk5OTBEMjhCQjFDNjUzOUQzMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25D
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
MEQyOEI3MUM2NTM5QTAwMDk4Njk3NyAvKiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oICovOyB9
OworCQk5OTBEMjhCQzFDNjUzOURBMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGllbnQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTBEMjhC
ODFDNjUzOUEwMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gKi87IH07CisJ
CTk5MEQyOEJGMUM2NTREMzkwMDk4Njk3NyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTBEMjhCRDFDNjU0
OTBBMDA5ODY5NzcgLyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwICovOyB9OworCQk5OTBEMjhD
MDFDNjU1M0YxMDA5ODY5NzcgLyogQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MEQyOEIzMUM2NTI2RDQw
MDk4Njk3NyAvKiBBUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oICovOyB9OworCQk5OTBEMjhD
MTFDNjU2MjY1MDA5ODY5NzcgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MEQyOEI1MUM2NTI2RjUwMDk4Njk3
NyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oICovOyB9OwogCQk5OUM4MUQ1OTFDMjBFMUU1MDA1
QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDU2MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9u
Q2xpZW50Lm1tICovOyB9OwogCQk5OUM4MUQ1QTFDMjBFN0UyMDA1QzRDODIgLyogQXV0b21hdGlv
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKIAkJ
OTlDODFENUQxQzIxRjM4QjAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDVCMUMyMEU4MTcw
MDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi87IH07CkBAIC0zMzY3LDYgKzMzNzYs
MTUgQEAKIAkJOTNBODhCNDMxQkM4ODI4QzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSGl0VGVzdFJlc3VsdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0JERUIwMDE3MUREN0FGMDBCRkVFMUIgLyogV0tQ
YWdlTG9hZFR5cGVzUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S1BhZ2VMb2FkVHlwZXNQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTkwRDI4QTcxQzY0MDRCMDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25T
ZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25T
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MEQyOEFEMUM2NTE5MDQw
MDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IF9XS0F1dG9tYXRpb25TZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5OTBEMjhBODFDNjQwNEIwMDA5ODY5NzcgLyogX1dLQXV0b21hdGlv
blNlc3Npb25EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tB
dXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk5MEQyOEFGMUM2NTIwMzkwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRpb25TZXNzaW9u
SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwRDI4QjMxQzY1MjZE
NDAwOTg2OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MEQyOEI1MUM2NTI2RjUwMDk4Njk3NyAvKiBXZWJBdXRv
bWF0aW9uU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRv
bWF0aW9uU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTBEMjhCNzFD
NjUzOUEwMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0b21hdGlvblNlc3Npb25DbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTkwRDI4QjgxQzY1MzlBMDAwOTg2OTc3IC8qIEF1dG9tYXRp
b25TZXNzaW9uQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQXV0b21hdGlvblNlc3Npb25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk5MEQyOEJEMUM2NTQ5MEEwMDk4Njk3NyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzgxRDU1MUMyMERGQkUwMDVD
NEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1dG9tYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlD
ODFENTYxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRvbWF0aW9uQ2xpZW50Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OUM4MUQ1QjFDMjBFODE3MDA1QzRDODIgLyogQVBJQXV0
b21hdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElBdXRv
bWF0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzczLDYgKzQ3
OTEsOCBAQAogCQkJCTUxN0RENUJCMTgwREE3QzQwMDgxNjYwQiAvKiBEYXRhYmFzZXMgKi8sCiAJ
CQkJOTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAqLywKIAkJ
CQk5OUM4MUQ1NjFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5tbSAqLywKKwkJ
CQk5OTBEMjhCNzFDNjUzOUEwMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCAq
LywKKwkJCQk5OTBEMjhCODFDNjUzOUEwMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGll
bnQubW0gKi8sCiAJCQkJODM4OTFCNkExQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmggKi8sCiAJCQkJODM4OTFCNkIxQTY4QzMwQjAwMzBGMzg2IC8qIERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50Lm1tICovLAogCQkJCUExREY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBE
b3dubG9hZENsaWVudC5oICovLApAQCAtNTEzNyw2ICs1MTU3LDEwIEBACiAJCQkJMzdBNUUwMTEx
OEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovLAogCQkJCTM3
OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFs
LmggKi8sCiAJCQkJOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZS5oICovLAorCQkJCTk5MEQyOEE3MUM2NDA0QjAwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9u
U2Vzc2lvbi5oICovLAorCQkJCTk5MEQyOEFEMUM2NTE5MDQwMDk4Njk3NyAvKiBfV0tBdXRvbWF0
aW9uU2Vzc2lvbi5tbSAqLywKKwkJCQk5OTBEMjhBODFDNjQwNEIwMDA5ODY5NzcgLyogX1dLQXV0
b21hdGlvblNlc3Npb25EZWxlZ2F0ZS5oICovLAorCQkJCTk5MEQyOEFGMUM2NTIwMzkwMDk4Njk3
NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmggKi8sCiAJCQkJMUE1NzA0RjYxQkUw
MUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCAqLywKIAkJCQkxQTU3
MDRGNTFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywK
IAkJCQk4Mzg5MUI2ODFBNjhCRUJDMDAzMEYzODYgLyogX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxl
Z2F0ZS5oICovLApAQCAtNjAzMyw2ICs2MDU3LDggQEAKIAkJCQkxQTBGMjlFMTEyMEI0NDQyMDA1
M0QxQjkgLyogVmlzaXRlZExpbmtTdG9yZS5jcHAgKi8sCiAJCQkJMUEwRjI5RTIxMjBCNDQ0MjAw
NTNEMUI5IC8qIFZpc2l0ZWRMaW5rU3RvcmUuaCAqLywKIAkJCQkxQTYwMjI0OTE4QzE2QjA4MDBD
M0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbiAqLywKKwkJCQk5OTBEMjhCRDFD
NjU0OTBBMDA5ODY5NzcgLyogV2ViQXV0b21hdGlvblNlc3Npb24uY3BwICovLAorCQkJCTk5MEQy
OEI1MUM2NTI2RjUwMDk4Njk3NyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oICovLAogCQkJCUJD
NzJCQTFCMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwICovLAogCQkJ
CUJDNzJCQTFDMTFFNjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJ
CQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovLApAQCAt
NjEzMSw2ICs2MTU3LDcgQEAKIAkJCQlCQzhBNTAxMzExNzY1RjQ1MDA3NTc1NzMgLyogY3BwICov
LAogCQkJCUJDMTExQjQ3MTEyRjYxNjkwMDMzN0JBQiAvKiBtYWMgKi8sCiAJCQkJOTlDODFENUIx
QzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLywKKwkJCQk5OTBEMjhC
MzFDNjUyNkQ0MDA5ODY5NzcgLyogQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCAqLywKIAkJ
CQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLywK
IAkJCQk4Mzg5MUI2MjFBNjhCMzQyMDAzMEYzODYgLyogQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuaCAqLywKIAkJCQkxRjdEMzZDMDE4REE1MTNGMDBEOUQ2NTkgLyogQVBJRG93bmxvYWRDbGll
bnQuaCAqLywKQEAgLTczODcsNiArNzQxNCw3IEBACiAJCQkJQTFBNEZFNUMxOERDRTlGQTAwQjVF
QThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUE4NzNB
MThCQkZFMEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzNzlBODczQzE4QkJGRjA3MDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5OTBEMjhCQjFDNjUzOUQzMDA5ODY5NzcgLyogQXV0b21hdGlv
blNlc3Npb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTcwNEYyMUJFMDE3NDAwMDg3
NEFGMSAvKiBfV0tFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMDFCQzkxOTA1
RDM3RTAwQzlDNDVGIC8qIF9XS0Vycm9yUmVjb3ZlcnlBdHRlbXB0aW5nLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwMDVEMTU4RjE4RTRDNEVCMDA3MzQ2MTkgLyogX1dLRmluZERlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKQEAgLTc0NjMsNiArNzQ5MSw3IEBACiAJCQkJMUFDMTMzNkMxODU2NUM3QTAw
RjNFQzA1IC8qIEFQSVBhZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkREMzE1MTg5
MUI1NDAwMDE1Mzk3MCAvKiBBUElQb2xpY3lDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
RTREMjIwMUE0OTE0Q0EwMEM3RjE1MiAvKiBBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTk5MEQyOEFDMUM2NDIwQ0YwMDk4Njk3NyAvKiBfV0tBdXRvbWF0
aW9uU2Vzc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjM0NDQ1NjEyQTg4NUM4
MDAwNjEyRDggLyogQVBJU2VjdXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTc1QThE
MkUxMTg3REVDMUEwMEMzOUM5RSAvKiBBUElTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUZERTY2MjE5NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAq
LywKQEAgLTc1ODAsNiArNzYwOSw3IEBACiAJCQkJNTEyOTM1RTQxMjg4RDk3ODAwQTRCNjk1IC8q
IEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUVFNTNFMzExRjhDRkMwMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE0RTEwQTEyMEI5MDVFMDA4MjZDMEMgLyogSW5q
ZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTkwRDI4QzEx
QzY1NjI2NTAwOTg2OTc3IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRDVDNjZBMTEzNEI5RDM4MDA0RkUyQTggLyogSW5qZWN0ZWRCdW5kbGVQYWdlRnVsbFNj
cmVlbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBOEM2QTkxMUUzQkE1RjAwODEyRkI3
IC8qIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM4MTQ3QTkxMkY2NENEQTAwN0IyQzMyIC8qIEluamVjdGVkQnVuZGxlUGFnZVBvbGljeUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NjEzLDYgKzc2NDMsNyBAQAogCQkJCTFBRENCODZCMTg5
ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFCQzNERjYxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE2RkJBMkExMUU2ODYyNzAwREIxMzcxIC8qIE5ldHNjYXBlQnJvd3NlckZ1
bmNzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTBEMjhBQjFDNjQyMEM2MDA5ODY5NzcgLyogX1dL
QXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNkZCRDI4MTFFNjlCQzIw
MERCMTM3MSAvKiBOZXRzY2FwZVBsdWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0QTlDNTYx
MkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUE1ODg5MjExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBp
biBIZWFkZXJzICovLApAQCAtNzgzOSw2ICs3ODcwLDcgQEAKIAkJCQlCQzAzMkRCOTEwRjQzODBG
MDA1OEMxNUEgLyogV2ViRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyREJCMTBGNDM4
MEYwMDU4QzE1QSAvKiBXZWJFdmVudENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MTExQjVEMTEyRjYyOTgwMDMzN0JBQiAvKiBXZWJFdmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICov
LAorCQkJCTk5MEQyOEMwMUM2NTUzRjEwMDk4Njk3NyAvKiBBUElBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MEMxRUUxMjY0RkQ1MDAwM0U0NEQ0IC8qIFdl
YkZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U0Njk1NDEyMTRFNkNCMDAwQjk4
RUIgLyogV2ViRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNDY5NTYxMjE0RTZD
QjAwMEI5OEVCIC8qIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03ODkxLDYgKzc5MjMsNyBAQAogCQkJCTJEM0VGNDQzMTkxNzY0NjMwMDAzNDE4NCAv
KiBXZWJNZW1vcnlQcmVzc3VyZUhhbmRsZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTkwOTg1
NEVEMTJCQzRFMTgwMDBBRDA4MCAvKiBXZWJNZW1vcnlTYW1wbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0Y2OUY5QTExNzZDRUQ2MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTkwRDI4QjExQzY1MjA4RDAwOTg2OTc3IC8qIF9XS0F1dG9t
YXRpb25TZXNzaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDQ0NDOEZCMUE1RjUw
RkQwMDhGQjBEQSAvKiBXZWJOYXZpZ2F0aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
QTJFQzQ5MTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxMDk5OUM3MTQ2QzlFM0QwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtOTIxMiw2ICs5MjQ1LDcgQEAKIAkJCQlFNDg5RDI4RjFBMEEy
REI4MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFNDEzRjU5RjFBQzFBRjlEMDAzNDUzNjAgLyogTmV0d29ya0NhY2hlRW50cnkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTQ2OTdDQ0QxQjI1RUI4RjAwMUIwQTZDIC8qIE5ldHdvcmtDYWNoZUZp
bGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTkwRDI4QkMxQzY1MzlEQTAwOTg2OTc3
IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQyRTA2
MEYxQUE3NTIzNDAwQjExNjk5IC8qIE5ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTQ0MzZFQ0QxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZUtl
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzFFRUJCRTFCRDg1QzQzMDBCQjY0QzMgLyogTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTY4NSw2ICs5
NzE5LDcgQEAKIAkJCQkxQTRENjY0QjE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8ubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyRDNBNjVFNjFBN0MzQUE3MDBDQUM2MzcgLyogV0tGcmFtZUlu
Zm9SZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNCOUY2QTYxMTIzREQwRDAwQTEzN0UwIC8q
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OTBEMjhCMjFD
NjUyMDk0MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb24ubW0gaW4gU291cmNlcyAqLywK
IAkJCQlFMUFFQTIzMDE0Njg3QkRCMDA4MDQ1NjkgLyogV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRj
aGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDQTg1QzgxMzJBQkE0RTAwRTk2MURGIC8qIFdL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzU0Q0Mx
MzEyRDY3NEVFMDA1QzY3QjAgLyogV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC05NzEwLDYgKzk3NDUsNyBAQAogCQkJCUM5OEM0OEE5MUI2RkQ1QjUwMDE0NTEwMyAv
KiBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDOUNE
NDM5RTFCNEIwMjUzMDAyMzlFMzMgLyogV0tNZWRpYVNlc3Npb25NZXRhZGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzQwNzVGRDEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXku
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTkwRDI4QkYxQzY1NEQzOTAwOTg2OTc3IC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUZGMTI0RkYwMjcw
MDY4RjIwQSAvKiBXS011dGFibGVEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
NUIxQzUwMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxQTI1NkUzNzE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="295867"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>