<?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>40630</bug_id>
          
          <creation_ts>2010-06-15 10:03:03 -0700</creation_ts>
          <short_desc>WebKit2: Add mechanism to inject code into the WebProcess on startup</short_desc>
          <delta_ts>2010-06-15 19:44:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>238435</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-15 10:03:03 -0700</bug_when>
    <thetext>We need a mechanism to allow injecting code into the WebProcess on startup, sort of like a plugin, but for the embedding app instead of the web content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238447</commentid>
    <comment_count>1</comment_count>
      <attachid>58793</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-15 10:14:21 -0700</bug_when>
    <thetext>Created attachment 58793
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238498</commentid>
    <comment_count>2</comment_count>
      <attachid>58793</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-15 12:15:43 -0700</bug_when>
    <thetext>Comment on attachment 58793
patch

Double change log in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238533</commentid>
    <comment_count>3</comment_count>
      <attachid>58793</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-06-15 13:55:44 -0700</bug_when>
    <thetext>Comment on attachment 58793
patch

&gt; Index: WebKit2/ChangeLog
&gt; ===================================================================
&gt; --- WebKit2/ChangeLog	(revision 61196)
&gt; +++ WebKit2/ChangeLog	(working copy)
&gt; @@ -1,3 +1,172 @@
&gt; +2010-06-15  Sam Weinig  &lt;sam@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Fix for https://bugs.webkit.org/show_bug.cgi?id=40630
&gt; +        WebKit2: Add mechanism to inject code into the WebProcess on startup
&gt; +
&gt; +        Add initial WebBundle support.

Let&apos;s call it &quot;Injected Bundle&quot; instead.


&gt; Index: WebKit2/Shared/CoreIPCSupport/WebProcessMessageKinds.h
&gt; ===================================================================
&gt; --- WebKit2/Shared/CoreIPCSupport/WebProcessMessageKinds.h	(revision 61159)
&gt; +++ WebKit2/Shared/CoreIPCSupport/WebProcessMessageKinds.h	(working copy)
&gt; @@ -33,6 +33,7 @@
&gt;  namespace WebProcessMessage {
&gt;  
&gt;  enum Kind {
&gt; +    LoadWebBundle,
&gt;      Create
&gt;  };
&gt; 

Injected bundle.
 
&gt; Index: WebKit2/UIProcess/WebContext.cpp
&gt; ===================================================================
&gt; --- WebKit2/UIProcess/WebContext.cpp	(revision 61159)
&gt; +++ WebKit2/UIProcess/WebContext.cpp	(working copy)
&gt; @@ -36,6 +36,8 @@
&gt;  #include &lt;wtf/RefCountedLeakCounter.h&gt;
&gt;  #endif
&gt;  
&gt; +using namespace WebCore;
&gt; +
&gt;  namespace WebKit {
&gt;  
&gt;  #ifndef NDEBUG
&gt; @@ -55,6 +57,20 @@ WebContext::WebContext(ProcessModel proc
&gt;  #endif
&gt;  }
&gt;  
&gt; +WebContext::WebContext(ProcessModel processModel, const WebCore::String&amp; bundlePath)
&gt; +    : m_processModel(processModel)
&gt; +    , m_bundlePath(bundlePath)
&gt; +{
&gt; +    RunLoop::initializeMainRunLoop();
&gt; +
&gt; +    m_preferences = WebPreferences::shared();
&gt; +    m_preferences-&gt;addContext(this);
&gt; +
&gt; +#ifndef NDEBUG
&gt; +    webContextCounter.increment();
&gt; +#endif
&gt; +}
&gt; +

No need for an extra constructor, just add a bundlePath parameter to the already existing constructor.

&gt;  WebContext::~WebContext()
&gt;  {
&gt;      ASSERT(m_pageNamespaces.isEmpty());
&gt; Index: WebKit2/UIProcess/WebContext.h
&gt; ===================================================================
&gt; --- WebKit2/UIProcess/WebContext.h	(revision 61159)
&gt; +++ WebKit2/UIProcess/WebContext.h	(working copy)
&gt; @@ -27,6 +27,7 @@
&gt;  #define WebContext_h
&gt;  
&gt;  #include &quot;ProcessModel.h&quot;
&gt; +#include &lt;WebCore/PlatformString.h&gt;
&gt;  #include &lt;wtf/HashSet.h&gt;
&gt;  #include &lt;wtf/PassRefPtr.h&gt;
&gt;  #include &lt;wtf/RefCounted.h&gt;
&gt; @@ -46,26 +47,35 @@ public:
&gt;          return adoptRef(new WebContext(processModel));
&gt;      }
&gt;  
&gt; +    static PassRefPtr&lt;WebContext&gt; create(ProcessModel processModel, const WebCore::String&amp; bundlePath)
&gt; +    {
&gt; +        return adoptRef(new WebContext(processModel, bundlePath));
&gt; +    }
&gt; +

No need for an extra ::create function here.
&gt;  
&gt; +void WebProcess::loadWebBundle(const WebCore::String&amp; path)
&gt; +{

InjectedBundle! (I&apos;m gonna stop complaining about that now).

&gt; +void WebBundle::initializeClient(WKBundleClient* client)
&gt; +{
&gt; +    if (client &amp;&amp; !client-&gt;version)
&gt; +        m_client = *client;

Maybe we should log an error if the client version didn&apos;t match?


r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238602</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-15 16:17:41 -0700</bug_when>
    <thetext>Landed in r61222.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238652</commentid>
    <comment_count>5</comment_count>
      <attachid>58793</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-06-15 19:44:53 -0700</bug_when>
    <thetext>Comment on attachment 58793
patch

Cleared r? since the patch was &quot;r=me&quot; (in comments) and landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58793</attachid>
            <date>2010-06-15 10:14:21 -0700</date>
            <delta_ts>2010-06-15 19:44:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bundle.diff</filename>
            <type>text/plain</type>
            <size>91852</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTE5NikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcyIEBACisyMDEwLTA2LTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2MzAKKyAgICAgICAg
V2ViS2l0MjogQWRkIG1lY2hhbmlzbSB0byBpbmplY3QgY29kZSBpbnRvIHRoZSBXZWJQcm9jZXNz
IG9uIHN0YXJ0dXAKKworICAgICAgICBBZGQgaW5pdGlhbCBXZWJCdW5kbGUgc3VwcG9ydC4KKwor
ICAgICAgICAqIFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmg6
CisgICAgICAgIChXZWJQcm9jZXNzTWVzc2FnZTo6KToKKyAgICAgICAgQWRkIG5ldyBMb2FkV2Vi
QnVuZGxlIG1lc3NhZ2Uga2luZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuY3BwOgorICAgICAgICAodG9XSyk6CisgICAgICAgIChXS0NvbnRleHRDcmVhdGUpOgorICAg
ICAgICAoV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICBSZW5hbWUgV0tDb250ZXh0Q3Jl
YXRlV2l0aFByb2Nlc3NNb2RlbCB0byBXS0NvbnRleHRDcmVhdGUgYW5kIGFkZAorICAgICAgICBX
S0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGZvciBjcmVhdGluZyBhIGNvbnRl
eHQgd2l0aAorICAgICAgICBhIGJ1bmRsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cHJvY2Vzc01vZGVsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YnVuZGxlUGF0aCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlTmFt
ZXNwYWNlOjplbnN1cmVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZU5hbWVz
cGFjZTo6cmV2aXZlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NNYW5hZ2VyOjpnZXRXZWJQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OldlYlByb2Nlc3NQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkJ1bmRsZTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJC
dW5kbGUvQVBJOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkJ1bmRsZS9BUEkvYzog
QWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdLQnVuZGxlU2V0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6Oik6CisgICAgICAgICh0b1dLKToKKyAgICAgICAgKHRvUmVmKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhc2UuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbml0aWFsaXplLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQnVuZGxlL1dlYkJ1bmRsZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJCdW5kbGU6OldlYkJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkJ1bmRsZTo6fldlYkJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJ1bmRsZTo6aW5p
dGlhbGl6ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJ1bmRsZTo6ZGlkQ3JlYXRlUGFn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJCdW5kbGUvV2ViQnVuZGxlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJCdW5kbGUvbWFjOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkJ1bmRsZS9t
YWMvV2ViQnVuZGxlTWFjLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkJ1bmRsZTo6
bG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJCdW5kbGUvd2luOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkJ1bmRsZS93aW4vV2ViQnVuZGxlV2luLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OnBhdGhHZXRGaWxlTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OmRpcmVj
dG9yeU5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJCdW5kbGU6OmxvYWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6V2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bG9hZFdlYkJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6d2ViQnVuZGxlKToKKyAg
ICAgICAgKiBtYWMvV2ViS2l0Mi5leHA6CisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgor
ICAgICAgICAqIHdpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2U6CisKKzIwMTAtMDYtMTUgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDYzMAorICAgICAgICBXZWJLaXQyOiBBZGQgbWVjaGFuaXNtIHRvIGluamVjdCBj
b2RlIGludG8gdGhlIFdlYlByb2Nlc3Mgb24gc3RhcnR1cAorCisgICAgICAgIEFkZCBpbml0aWFs
IFdlYkJ1bmRsZSBzdXBwb3J0LgorCisgICAgICAgICogU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dl
YlByb2Nlc3NNZXNzYWdlS2luZHMuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NNZXNzYWdlOjopOgor
ICAgICAgICBBZGQgbmV3IExvYWRXZWJCdW5kbGUgbWVzc2FnZSBraW5kLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgICh0b1dLKToKKyAgICAgICAg
KFdLQ29udGV4dENyZWF0ZSk6CisgICAgICAgIChXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRC
dW5kbGVQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAg
ICAgIFJlbmFtZSBXS0NvbnRleHRDcmVhdGVXaXRoUHJvY2Vzc01vZGVsIHRvIFdLQ29udGV4dENy
ZWF0ZSBhbmQgYWRkCisgICAgICAgIFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBh
dGggZm9yIGNyZWF0aW5nIGEgY29udGV4dCB3aXRoCisgICAgICAgIGEgYnVuZGxlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpXZWJDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0Ojpwcm9jZXNzTW9kZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpidW5k
bGVQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VOYW1lc3BhY2U6OmVuc3VyZVdlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlTmFtZXNwYWNlOjpyZXZpdmVJZk5lY2Vzc2FyeSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc01hbmFnZXI6OmdldFdlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIFRocmVhZCB0aGUgYnVuZGxlIHBhdGgg
dGhyb3VnaCBwcm9jZXNzIGNyZWF0aW9uLgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJCdW5kbGU6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQnVuZGxl
L0FQSTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJCdW5kbGUvQVBJL2M6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDogQWRk
ZWQuCisgICAgICAgIChXS0J1bmRsZVNldENsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjopOgorICAgICAgICAodG9XSyk6CisgICAgICAgICh0b1JlZik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYXNlLmg6IEFkZGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5pdGlhbGl6ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkJ1bmRsZS9XZWJCdW5kbGUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQnVuZGxlOjpXZWJCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJC
dW5kbGU6On5XZWJCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJCdW5kbGU6OmluaXRpYWxp
emVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJCdW5kbGU6OmRpZENyZWF0ZVBhZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQnVuZGxlL1dlYkJ1bmRsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQnVuZGxlOjpjcmVhdGUpOgorICAgICAgICBBZGQgYnVuZGxlIGJvaWxl
cnBsYXRlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJCdW5kbGUvbWFjOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkJ1bmRsZS9tYWMvV2ViQnVuZGxlTWFjLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkJ1bmRsZTo6bG9hZCk6CisgICAgICAgIExvYWQgdGhlIFdl
YkJ1bmRsZSB1c2luZyBDRkJ1bmRsZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQnVuZGxl
L3dpbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJCdW5kbGUvd2luL1dlYkJ1bmRs
ZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpwYXRoR2V0RmlsZU5hbWUpOgorICAg
ICAgICAoV2ViS2l0OjpkaXJlY3RvcnlOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViQnVuZGxl
Ojpsb2FkKToKKyAgICAgICAgTG9hZCB0aGUgV2ViQnVuZGxlIHVzaW5nIEhNT0RVTEUuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICBBZGQgaW5pdGlhbCBidW5kbGUgY2FsbGJhY2sg
Zm9yIHBhZ2UgY3JlYXRpb24uIE1vcmUgdG8gY29tZS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmxvYWRXZWJCdW5k
bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OndlYkJ1bmRsZSk6CisgICAgICAgIExvYWQgdGhlIFdlYkJ1bmRsZSBvbiBMb2FkV2Vi
QnVuZGxlIG1lc3NhZ2UuCisKKyAgICAgICAgKiBtYWMvV2ViS2l0Mi5leHA6CisgICAgICAgICog
d2luL1dlYktpdDIudmNwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2U6
CisgICAgICAgIEFkZCB0aGUgbmV3IGZpbGVzLgorCiAyMDEwLTA2LTE0ICBTdGV2ZSBGYWxrZW5i
dXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93cyBidWlsZCBmaXguCklu
ZGV4OiBXZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQcm9jZXNzTWVzc2FnZUtpbmRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vz
c01lc3NhZ2VLaW5kcy5oCShyZXZpc2lvbiA2MTE1OSkKKysrIFdlYktpdDIvU2hhcmVkL0NvcmVJ
UENTdXBwb3J0L1dlYlByb2Nlc3NNZXNzYWdlS2luZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYlByb2Nlc3NNZXNzYWdlIHsKIAogZW51bSBLaW5kIHsK
KyAgICBMb2FkV2ViQnVuZGxlLAogICAgIENyZWF0ZQogfTsKIApJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5jcHAJKHJldmlzaW9uIDYxMTU5KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWZuZGVmIE5ERUJVRwpAQCAtNTUsNiArNTcs
MjAgQEAgV2ViQ29udGV4dDo6V2ViQ29udGV4dChQcm9jZXNzTW9kZWwgcHJvYwogI2VuZGlmCiB9
CiAKK1dlYkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29u
c3QgV2ViQ29yZTo6U3RyaW5nJiBidW5kbGVQYXRoKQorICAgIDogbV9wcm9jZXNzTW9kZWwocHJv
Y2Vzc01vZGVsKQorICAgICwgbV9idW5kbGVQYXRoKGJ1bmRsZVBhdGgpCit7CisgICAgUnVuTG9v
cDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OnNoYXJlZCgpOworICAgIG1fcHJlZmVyZW5jZXMtPmFkZENvbnRleHQodGhpcyk7
CisKKyNpZm5kZWYgTkRFQlVHCisgICAgd2ViQ29udGV4dENvdW50ZXIuaW5jcmVtZW50KCk7Cisj
ZW5kaWYKK30KKwogV2ViQ29udGV4dDo6fldlYkNvbnRleHQoKQogewogICAgIEFTU0VSVChtX3Bh
Z2VOYW1lc3BhY2VzLmlzRW1wdHkoKSk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCShyZXZp
c2lvbiA2MTE1OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBXZWJDb250ZXh0X2gKIAogI2luY2x1ZGUg
IlByb2Nlc3NNb2RlbC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ2LDI2ICs0NywzNSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGV4dChwcm9jZXNzTW9kZWwpKTsKICAgICB9
CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBjcmVhdGUoUHJvY2Vzc01vZGVs
IHByb2Nlc3NNb2RlbCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBidW5kbGVQYXRoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0KHByb2Nlc3NNb2RlbCwgYnVu
ZGxlUGF0aCkpOworICAgIH0KKwogICAgIH5XZWJDb250ZXh0KCk7CiAKKyAgICBQcm9jZXNzTW9k
ZWwgcHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzTW9kZWw7IH0KKwogICAg
IFdlYlBhZ2VOYW1lc3BhY2UqIGNyZWF0ZVBhZ2VOYW1lc3BhY2UoKTsKICAgICB2b2lkIHBhZ2VO
YW1lc3BhY2VXYXNEZXN0cm95ZWQoV2ViUGFnZU5hbWVzcGFjZSopOwogCiAgICAgdm9pZCBzZXRQ
cmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlcyopOwogICAgIFdlYlByZWZlcmVuY2VzKiBwcmVmZXJl
bmNlcygpIGNvbnN0OwotCiAgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpOwogCi0gICAg
UHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc01vZGVs
OyB9CisgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBidW5kbGVQYXRoKCkgY29uc3QgeyByZXR1
cm4gbV9idW5kbGVQYXRoOyB9CiAKICAgICB2b2lkIGdldFN0YXRpc3RpY3MoV0tDb250ZXh0U3Rh
dGlzdGljcyogc3RhdGlzdGljcyk7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29udGV4dChQcm9jZXNz
TW9kZWwpOworICAgIFdlYkNvbnRleHQoUHJvY2Vzc01vZGVsLCBjb25zdCBXZWJDb3JlOjpTdHJp
bmcmIGJ1bmRsZVBhdGgpOwogCiAgICAgUHJvY2Vzc01vZGVsIG1fcHJvY2Vzc01vZGVsOwogICAg
IEhhc2hTZXQ8V2ViUGFnZU5hbWVzcGFjZSo+IG1fcGFnZU5hbWVzcGFjZXM7CiAgICAgUmVmUHRy
PFdlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVuY2VzOworCisgICAgV2ViQ29yZTo6U3RyaW5nIG1f
YnVuZGxlUGF0aDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5jcHAJKHJldmlzaW9uIDYxMTU5KQorKysgV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcw
LDcgQEAgdm9pZCBXZWJQYWdlTmFtZXNwYWNlOjplbnN1cmVXZWJQcm9jZXNzKAogICAgIGlmICht
X3Byb2Nlc3MgJiYgbV9wcm9jZXNzLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJvY2VzcyA9IFdlYlByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5nZXRXZWJQcm9jZXNzKG1f
Y29udGV4dC0+cHJvY2Vzc01vZGVsKCkpOworICAgIG1fcHJvY2VzcyA9IFdlYlByb2Nlc3NNYW5h
Z2VyOjpzaGFyZWQoKS5nZXRXZWJQcm9jZXNzKG1fY29udGV4dC0+cHJvY2Vzc01vZGVsKCksIG1f
Y29udGV4dC0+YnVuZGxlUGF0aCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlTmFtZXNwYWNlOjpyZXZp
dmVJZk5lY2Vzc2FyeSgpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV2ViUGFnZU5hbWVzcGFjZTo6
cmV2aXZlSWZOZWNlc3NhcnkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFRoZSBX
ZWJDb250ZXh0IHNob3VsZCBoYW5kIHVzIHRoZSBuZXcgUHJvY2Vzc1Byb3h5IGJhc2VkIG9uIGl0
cyBwcm9jZXNzIG1vZGVsLgotICAgIG1fcHJvY2VzcyA9IFdlYlByb2Nlc3NNYW5hZ2VyOjpzaGFy
ZWQoKS5nZXRXZWJQcm9jZXNzKG1fY29udGV4dC0+cHJvY2Vzc01vZGVsKCkpOworICAgIG1fcHJv
Y2VzcyA9IFdlYlByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5nZXRXZWJQcm9jZXNzKG1fY29udGV4
dC0+cHJvY2Vzc01vZGVsKCksIG1fY29udGV4dC0+YnVuZGxlUGF0aCgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlTmFtZXNwYWNlOjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc01hbmFnZXIuY3BwCShyZXZpc2lvbiA2MTE1OSkKKysrIFdlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsMTAgQEAKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViUHJvY2Vzc01hbmFnZXImIFdlYlByb2Nlc3NNYW5hZ2Vy
OjpzaGFyZWQoKQpAQCAtMzcsMTkgKzQxLDE2IEBAIFdlYlByb2Nlc3NNYW5hZ2VyOjpXZWJQcm9j
ZXNzTWFuYWdlcigpCiB7CiB9CiAKLVdlYlByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc01hbmFnZXI6
OmdldFdlYlByb2Nlc3MoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCkKK1dlYlByb2Nlc3NQcm94
eSogV2ViUHJvY2Vzc01hbmFnZXI6OmdldFdlYlByb2Nlc3MoUHJvY2Vzc01vZGVsIHByb2Nlc3NN
b2RlbCwgY29uc3QgU3RyaW5nJiBidW5kbGVQYXRoKQogewogICAgIHN3aXRjaCAocHJvY2Vzc01v
ZGVsKSB7CiAgICAgICAgIGNhc2UgUHJvY2Vzc01vZGVsU2Vjb25kYXJ5UHJvY2VzczoKICAgICAg
ICAgICAgIGlmICghbV9zaGFyZWRQcm9jZXNzKQotICAgICAgICAgICAgICAgIG1fc2hhcmVkUHJv
Y2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKHByb2Nlc3NNb2RlbCk7Ci0gICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBtX3NoYXJlZFByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZShwcm9jZXNzTW9kZWwsIGJ1bmRsZVBhdGgpOwogICAgICAgICAgICAgcmV0dXJuIG1fc2hh
cmVkUHJvY2Vzcy5nZXQoKTsKLQogICAgICAgICBjYXNlIFByb2Nlc3NNb2RlbFNlY29uZGFyeVRo
cmVhZDoKICAgICAgICAgICAgIGlmICghbV9zaGFyZWRUaHJlYWQpCi0gICAgICAgICAgICAgICAg
bV9zaGFyZWRUaHJlYWQgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShwcm9jZXNzTW9kZWwpOwot
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV9zaGFyZWRUaHJlYWQgPSBXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZShwcm9jZXNzTW9kZWwsIGJ1bmRsZVBhdGgpOwogICAgICAgICAgICAgcmV0
dXJuIG1fc2hhcmVkVGhyZWFkLmdldCgpOwogICAgIH0KIApJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzTWFuYWdlci5oCShyZXZpc2lvbiA2MTE1OSkKKysrIFdlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBACiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBTdHJpbmc7Cit9OworCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwpAQCAtNDAsNyArNDQsNyBAQCBjbGFzcyBXZWJQ
cm9jZXNzTWFuYWdlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlByb2Nlc3NNYW5hZ2VyJiBz
aGFyZWQoKTsKIAotICAgIFdlYlByb2Nlc3NQcm94eSogZ2V0V2ViUHJvY2VzcyhQcm9jZXNzTW9k
ZWwpOworICAgIFdlYlByb2Nlc3NQcm94eSogZ2V0V2ViUHJvY2VzcyhQcm9jZXNzTW9kZWwsIGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYgYnVuZGxlUGF0aCk7CiAKICAgICB2b2lkIHByb2Nlc3NEaWRD
bG9zZShXZWJQcm9jZXNzUHJveHkqKTsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCShyZXZpc2lvbiA2MTE1OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc01hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZUtpbmRz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM4LDE2ICs0MiwyMSBAQCBz
dGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKQogICAgIHJldHVybiB1bmlxdWVQYWdlSUQr
KzsKIH0KIAotUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlKFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwpCitQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29u
c3QgU3RyaW5nJiBidW5kbGVQYXRoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUHJv
Y2Vzc1Byb3h5KHByb2Nlc3NNb2RlbCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUHJv
Y2Vzc1Byb3h5KHByb2Nlc3NNb2RlbCwgYnVuZGxlUGF0aCkpOwogfQogCi1XZWJQcm9jZXNzUHJv
eHk6OldlYlByb2Nlc3NQcm94eShQcm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKQorV2ViUHJvY2Vz
c1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29uc3Qg
U3RyaW5nJiBidW5kbGVQYXRoKQogICAgIDogbV9yZXNwb25zaXZlbmVzc1RpbWVyKHRoaXMpCiAg
ICAgLCBtX3Byb2Nlc3NNb2RlbChwcm9jZXNzTW9kZWwpCiB7CiAgICAgY29ubmVjdCgpOworCisg
ICAgLy8gRklYTUU6IFdlIGNvdWxkIGluc3RlYWQgc2VuZCB0aGUgYnVuZGxlIHBhdGggYXMgcGFy
dCBvZiB0aGUgYXJndW1lbnRzIHRvIHByb2Nlc3MgY3JlYXRpb24/CisgICAgLy8gV291bGQgdGhh
dCBiZSBiZXR0ZXIgdGhhbiBzZW5kaW5nIGEgY29ubmVjdGlvbj8KKyAgICBpZiAoIWJ1bmRsZVBh
dGguaXNFbXB0eSgpKQorICAgICAgICBjb25uZWN0aW9uKCktPnNlbmQoV2ViUHJvY2Vzc01lc3Nh
Z2U6OkxvYWRXZWJCdW5kbGUsIDAsIENvcmVJUEM6OkluKGJ1bmRsZVBhdGgpKTsKIH0KIAogV2Vi
UHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vzc1Byb3h5KCkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCShyZXZpc2lvbiA2MTE1OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFN0cmluZzsKK307CisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBXZWJQYWdlTmFtZXNwYWNlOwpAQCAtNDQsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZVByb3h5PiA+IFdlYlBh
Z2VQcm94eU1hcDsKICAgICB0eXBlZGVmIFdlYlBhZ2VQcm94eU1hcDo6Y29uc3RfaXRlcmF0b3I6
OlZhbHVlcyBwYWdlc19jb25zdF9pdGVyYXRvcjsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4gY3JlYXRlKFByb2Nlc3NNb2RlbCk7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoUHJvY2Vzc01vZGVsLCBjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIGJ1bmRsZVBhdGgpOwogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIAogICAgIHZvaWQg
dGVybWluYXRlKCk7CkBAIC02OSw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bVByb2Nlc3NJZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViUHJvY2Vz
c1Byb3h5KFByb2Nlc3NNb2RlbCk7Ci0gICAgCisgICAgZXhwbGljaXQgV2ViUHJvY2Vzc1Byb3h5
KFByb2Nlc3NNb2RlbCwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBidW5kbGVQYXRoKTsKKwogICAg
IHZvaWQgY29ubmVjdCgpOwogCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHJldmlzaW9uIDYxMTU5KQor
KysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMjEgKzM1LDMwIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLVdLQ29udGV4
dFJlZiBXS0NvbnRleHRDcmVhdGVXaXRoUHJvY2Vzc01vZGVsKFdLUHJvY2Vzc01vZGVsIHByb2Nl
c3NNb2RlbCkKK3N0YXRpYyBQcm9jZXNzTW9kZWwgdG9XSyhXS1Byb2Nlc3NNb2RlbCB3a1Byb2Nl
c3NNb2RlbCkKIHsKLSAgICBQcm9jZXNzTW9kZWwgbW9kZWwgPSAoUHJvY2Vzc01vZGVsKTA7Ci0g
ICAgc3dpdGNoIChwcm9jZXNzTW9kZWwpIHsKKyAgICBzd2l0Y2ggKHdrUHJvY2Vzc01vZGVsKSB7
CiAgICAgICAgIGNhc2Uga1dLUHJvY2Vzc01vZGVsU2Vjb25kYXJ5UHJvY2VzczoKLSAgICAgICAg
ICAgIG1vZGVsID0gUHJvY2Vzc01vZGVsU2Vjb25kYXJ5UHJvY2VzczsKLSAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgcmV0dXJuIFByb2Nlc3NNb2RlbFNlY29uZGFyeVByb2Nlc3M7CiAg
ICAgICAgIGNhc2Uga1dLUHJvY2Vzc01vZGVsU2Vjb25kYXJ5VGhyZWFkOgotICAgICAgICAgICAg
bW9kZWwgPSBQcm9jZXNzTW9kZWxTZWNvbmRhcnlUaHJlYWQ7Ci0gICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIHJldHVybiBQcm9jZXNzTW9kZWxTZWNvbmRhcnlUaHJlYWQ7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8V2ViQ29udGV4dD4gY29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShtb2RlbCk7
CisgICAgLy8gRGVmYXVsdCB0byBTZWNvbmRhcnlQcm9jZXNzIGlmIGEgYmFkIHZhbHVlIGlzIHBh
c3NlZC4KKyAgICByZXR1cm4gUHJvY2Vzc01vZGVsU2Vjb25kYXJ5UHJvY2VzczsKK30KKworV0tD
b250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZShXS1Byb2Nlc3NNb2RlbCB3a1Byb2Nlc3NNb2RlbCkK
K3sKKyAgICBSZWZQdHI8V2ViQ29udGV4dD4gY29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZSh0
b1dLKHdrUHJvY2Vzc01vZGVsKSk7CisgICAgcmV0dXJuIHRvUmVmKGNvbnRleHQucmVsZWFzZSgp
LnJlbGVhc2VSZWYoKSk7Cit9CisKK1dLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVXaXRoSW5q
ZWN0ZWRCdW5kbGVQYXRoKFdLUHJvY2Vzc01vZGVsIHdrUHJvY2Vzc01vZGVsLCBXS1N0cmluZ1Jl
ZiBwYXRoUmVmKQoreworICAgIFJlZlB0cjxXZWJDb250ZXh0PiBjb250ZXh0ID0gV2ViQ29udGV4
dDo6Y3JlYXRlKHRvV0sod2tQcm9jZXNzTW9kZWwpLCB0b1dLKHBhdGhSZWYpKTsKICAgICByZXR1
cm4gdG9SZWYoY29udGV4dC5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKIH0KIApJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgJKHJldmlzaW9uIDYxMTU5KQorKysgV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDgg
QEAgZW51bSB7CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIFdLUHJvY2Vzc01vZGVsOwogCi1X
S19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhQcm9jZXNzTW9kZWwoV0tQ
cm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKTsKK1dLX0VYUE9SVCBXS0NvbnRleHRSZWYgV0tDb250
ZXh0Q3JlYXRlKFdLUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCk7CitXS19FWFBPUlQgV0tDb250
ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoV0tQcm9jZXNzTW9k
ZWwgcHJvY2Vzc01vZGVsLCBXS1N0cmluZ1JlZiBwYXRoKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0U2V0UHJlZmVyZW5jZXMoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXMpOwogV0tfRVhQT1JUIFdLUHJlZmVyZW5jZXNSZWYgV0tDb250ZXh0R2V0
UHJlZmVyZW5jZXMoV0tDb250ZXh0UmVmIGNvbnRleHQpOwpJbmRleDogV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDYxMTU5KQorKysgV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2
ICsxMTcsMTMgQEAKIAkJQkM1RjdCQjUxMTgyMzc2QzAwNTJDMDJDIC8qIERyYXdpbmdBcmVhVXBk
YXRlQ2h1bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNUY3QkIzMTE4MjM3NkMwMDUyQzAyQyAvKiBEcmF3aW5nQXJlYVVwZGF0ZUNodW5rLmggKi87
IH07CiAJCUJDNUY3QkI5MTE4MjM3OTkwMDUyQzAyQyAvKiBEcmF3aW5nQXJlYVVwZGF0ZUNodW5r
TWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NUY3QkI4MTE4MjM3OTkwMDUyQzAyQyAvKiBEcmF3aW5nQXJlYVVwZGF0ZUNodW5rTWFjLmNwcCAq
LzsgfTsKIAkJQkM2MTdFRTgxMDRDQjM0NzAwRkIzRkUxIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QTFDN0RFMTAwRTg0NkUwMDc4REVCQyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07
CisJCUJDNkUzRkY0MTFBRjU0OTYwMDkzRkVDNCAvKiBXS0J1bmRsZUJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNkUzRkYzMTFBRjU0OTYwMDkz
RkVDNCAvKiBXS0J1bmRsZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CisJCUJDNkUzRkY3MTFBRjU1MUUwMDkzRkVDNCAvKiBXS0J1bmRsZUFQSUNh
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNkUz
RkY2MTFBRjU1MUUwMDkzRkVDNCAvKiBXS0J1bmRsZUFQSUNhc3QuaCAqLzsgfTsKKwkJQkM2RTNG
RkMxMUFGNTZFQTAwOTNGRUM0IC8qIFdlYkJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZFM0ZGQTExQUY1NkVBMDA5M0ZFQzQgLyogV2Vi
QnVuZGxlLmNwcCAqLzsgfTsKKwkJQkM2RTNGRkQxMUFGNTZFQTAwOTNGRUM0IC8qIFdlYkJ1bmRs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2RTNG
RkIxMUFGNTZFQTAwOTNGRUM0IC8qIFdlYkJ1bmRsZS5oICovOyB9OworCQlCQzZFNDAwMTExQUY1
NzFCMDA5M0ZFQzQgLyogV0tCdW5kbGVJbml0aWFsaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzZFNDAwMDExQUY1NzFCMDA5M0ZFQzQgLyogV0tC
dW5kbGVJbml0aWFsaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCAp
OyB9OyB9OworCQlCQzZFNDA4NjExQUY2MEI3MDA5M0ZFQzQgLyogV0tCdW5kbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNkU0MDg0MTFBRjYwQjcw
MDkzRkVDNCAvKiBXS0J1bmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKKwkJQkM2RTQwODcxMUFGNjBCNzAwOTNGRUM0IC8qIFdLQnVuZGxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNkU0MDg1MTFB
RjYwQjcwMDkzRkVDNCAvKiBXS0J1bmRsZS5jcHAgKi87IH07CiAJCUJDNkVEQUE2MTExMjcxQzYw
MEU3Njc4QiAvKiBQYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyogUGFnZUNsaWVudC5oICov
OyB9OwogCQlCQzg0NTJBNzExNjJDODA5MDBDQUI5QjUgLyogRHJhd2luZ0FyZWEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4NDUyQTUxMTYyQzgw
OTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmNwcCAqLzsgfTsKIAkJQkM4NDUyQTgxMTYyQzgwOTAw
Q0FCOUI1IC8qIERyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzg0NTJBNjExNjJDODA5MDBDQUI5QjUgLyogRHJhd2luZ0FyZWEuaCAq
LzsgfTsKQEAgLTEyNiw2ICsxMzMsNyBAQAogCQlCQzg3ODBGQzExNjFDMkI4MDBDQzI3NjggLyog
UGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM4NzgwRkIxMTYxQzJCODAwQ0MyNzY4IC8qIFBsYXRmb3JtUHJv
Y2Vzc0lkZW50aWZpZXIuaCAqLzsgfTsKIAkJQkM4N0RGQUExMDE4MTAxNDAwNTY0MjE2IC8qIGxp
YmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzg3REZBOTEwMTgxMDE0MDA1NjQyMTYgLyogbGliaWN1Y29yZS5keWxpYiAqLzsg
fTsKIAkJQkM4QTUwMTUxMTc2NUY1NjAwNzU3NTczIC8qIFdLUmV0YWluUHRyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhBNTAxNDExNzY1RjU2MDA3
NTc1NzMgLyogV0tSZXRhaW5QdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlCQzk0NjY3MzExQjAzMzkxMDBCNzZBNTQgLyogV2ViQnVuZGxlTWFj
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTQ2
NjcyMTFCMDMzOTEwMEI3NkE1NCAvKiBXZWJCdW5kbGVNYWMuY3BwICovOyB9OwogCQlCQzk2M0Q2
QjExM0REMTkyMDA1NzRCRTIgLyogV2ViUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk2M0Q2QTExM0REMTkyMDA1NzRCRTIgLyogV2ViUGFn
ZS5jcHAgKi87IH07CiAJCUJDOTYzRDZFMTEzREQxQTUwMDU3NEJFMiAvKiBXZWJQYWdlTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5NjNENkQx
MTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gKi87IH07CiAJCUJDOUIzOEExMTBGNTM4
QkUwMDQ0M0ExNSAvKiBXZWJGcmFtZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzlCMzg5RjEwRjUzOEJFMDA0NDNBMTUgLyogV2ViRnJhbWVQ
cm94eS5oICovOyB9OwpAQCAtMzE3LDYgKzMyNSwxMyBAQAogCQlCQzVGN0JCMjExODIzNzZDMDA1
MkMwMkMgLyogRHJhd2luZ0FyZWFVcGRhdGVDaHVuay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYVVwZGF0ZUNodW5rLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkM1RjdCQjMxMTgyMzc2QzAwNTJDMDJDIC8qIERyYXdpbmdBcmVh
VXBkYXRlQ2h1bmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0Fy
ZWFVcGRhdGVDaHVuay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzVGN0JCODEx
ODIzNzk5MDA1MkMwMkMgLyogRHJhd2luZ0FyZWFVcGRhdGVDaHVua01hYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYVVwZGF0ZUNodW5rTWFjLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2RTNGRjMxMUFGNTQ5NjAwOTNGRUM0
IC8qIFdLQnVuZGxlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0J1
bmRsZUJhc2UuaDsgcGF0aCA9IFdlYlByb2Nlc3MvV2ViQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFz
ZS5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUJDNkUzRkY2MTFBRjU1MUUwMDkz
RkVDNCAvKiBXS0J1bmRsZUFQSUNhc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tCdW5kbGVBUElDYXN0Lmg7IHBhdGggPSBXZWJQcm9jZXNzL1dlYkJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUFQSUNhc3QuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCQzZFM0ZG
QTExQUY1NkVBMDA5M0ZFQzQgLyogV2ViQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkJ1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJDNkUzRkZCMTFBRjU2RUEwMDkzRkVDNCAvKiBXZWJCdW5kbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQnVuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDNkU0MDAwMTFBRjU3MUIwMDkzRkVDNCAvKiBXS0J1bmRsZUluaXRpYWxpemUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVJbml0aWFsaXplLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNkU0MDg0MTFBRjYwQjcwMDkzRkVDNCAvKiBX
S0J1bmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzZFNDA4NTExQUY2MEI3MDA5M0ZFQzQgLyog
V0tCdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzZFREFBNTExMTI3MUM2MDBF
NzY3OEIgLyogUGFnZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
YWdlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODQ1MkE1MTE2MkM4
MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEcmF3aW5nQXJlYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDODQ1MkE2MTE2MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3aW5nQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzI3LDYgKzM0Miw3IEBACiAJCUJDODdERkE5MTAxODEwMTQwMDU2NDIxNiAvKiBs
aWJpY3Vjb3JlLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJpY3Vjb3JlLmR5bGli
OyBwYXRoID0gL3Vzci9saWIvbGliaWN1Y29yZS5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1
dGU+IjsgfTsKIAkJQkM4QTUwMTAxMTc2NUFGNzAwNzU3NTczIC8qIEluZm8ucGxpc3QgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnBsaXN0LnhtbDsgbmFtZSA9IEluZm8ucGxpc3Q7IHBhdGggPSBXZWJQcm9jZXNz
L0luZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOEE1MDE0MTE3NjVG
NTYwMDc1NzU3MyAvKiBXS1JldGFpblB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1JldGFpblB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzk0NjY3
MjExQjAzMzkxMDBCNzZBNTQgLyogV2ViQnVuZGxlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkJ1bmRsZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDOTYzRDZBMTEzREQxOTIwMDU3NEJFMiAvKiBXZWJQYWdlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzk2M0Q2RDExM0REMUE1MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBhZ2VNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOUIzODlGMTBGNTM4QkUwMDQ0M0ExNSAv
KiBXZWJGcmFtZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZy
YW1lUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzNiw2ICszNTIsNyBA
QAogCQlCQzlFOTY5QjExNDU3RjNGMDA4NzBFNzEgLyogRHJhd2luZ0FyZWFNZXNzYWdlS2luZHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFNZXNzYWdlS2lu
ZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNjM0NzcxMTZCRjEwNjAwNjAz
MjE1IC8qIFdlYktpdDIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0
Mi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I4NkY0QjExNkFBQUNEMDBDRTIw
QjcgLyogV2ViS2l0Mi54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBX
ZWJLaXQyLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0I4RDRFMDEx
QUY3OEMxMDA4RjkxMDMgLyogV2ViS2l0Mi5leHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmV4cG9y
dHM7IG5hbWUgPSBXZWJLaXQyLmV4cDsgcGF0aCA9IG1hYy9XZWJLaXQyLmV4cDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCOUUyNDExMTIwREFDQTAwQTEzN0UwIC8qIFdlYkNvbnRl
eHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I5RTI0MjExMjBEQUNBMDBBMTM3RTAgLyogV2Vi
Q29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250
ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCOUUyNDkxMTIwRTE1QzAw
QTEzN0UwIC8qIFdLQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0OSw2ICs0NjYsNyBA
QAogCQkJCUJDOEE1MDBGMTE3NjVBRTMwMDc1NzU3MyAvKiBXZWJQcm9jZXNzICovLAogCQkJCUJD
OEE1MDBFMTE3NjVBRDQwMDc1NzU3MyAvKiBXZWJLaXQyICovLAogCQkJCTA4OUMxNjY2RkU4NDEx
NThDMDJBQUMwNyAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLywKKwkJCQlCQ0I4RDRFMDExQUY3OEMx
MDA4RjkxMDMgLyogV2ViS2l0Mi5leHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFJlc291cmNlczsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01NDgsNiArNTY2LDcgQEAKIAkJCWNoaWxk
cmVuID0gKAogCQkJCUJDMTExQUY2MTEyRjVDQUMwMDMzN0JBQiAvKiBMYXVuY2hpbmcgKi8sCiAJ
CQkJQkMwMzJENUQxMEY0MzcyMjAwNThDMTVBIC8qIFdlYkNvcmVTdXBwb3J0ICovLAorCQkJCUJD
NkUzRkYwMTFBRjU0MjgwMDkzRkVDNCAvKiBXZWJCdW5kbGUgKi8sCiAJCQkJQkMwMzJENUUxMEY0
MzcyQjAwNThDMTVBIC8qIFdlYlBhZ2UgKi8sCiAJCQkJQkMxMTFBRTMxMTJGNUMyNjAwMzM3QkFC
IC8qIFdlYlByb2Nlc3MuY3BwICovLAogCQkJCUJDMDMyRDkxMTBGNDM3QUYwMDU4QzE1QSAvKiBX
ZWJQcm9jZXNzLmggKi8sCkBAIC03ODIsNiArODAxLDM3IEBACiAJCQlwYXRoID0gUGxhdGZvcm07
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlCQzZFM0ZGMDExQUY1NDI4MDA5
M0ZFQzQgLyogV2ViQnVuZGxlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQlCQzZFM0ZGMTExQUY1NDQyMDA5M0ZFQzQgLyogQVBJICovLAorCQkJCUJDOTQ2
NjZGMTFCMDMzNjUwMEI3NkE1NCAvKiBtYWMgKi8sCisJCQkJQkM2RTNGRkExMUFGNTZFQTAwOTNG
RUM0IC8qIFdlYkJ1bmRsZS5jcHAgKi8sCisJCQkJQkM2RTNGRkIxMUFGNTZFQTAwOTNGRUM0IC8q
IFdlYkJ1bmRsZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBXZWJCdW5kbGU7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQlCQzZFM0ZGMTExQUY1NDQyMDA5M0ZFQzQgLyogQVBJ
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzZFM0ZG
MjExQUY1NDUyMDA5M0ZFQzQgLyogYyAqLywKKwkJCSk7CisJCQlwYXRoID0gQVBJOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQkM2RTNGRjIxMUFGNTQ1MjAwOTNGRUM0IC8q
IGMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDNkUz
RkY2MTFBRjU1MUUwMDkzRkVDNCAvKiBXS0J1bmRsZUFQSUNhc3QuaCAqLywKKwkJCQlCQzZFM0ZG
MzExQUY1NDk2MDA5M0ZFQzQgLyogV0tCdW5kbGVCYXNlLmggKi8sCisJCQkJQkM2RTQwMDAxMUFG
NTcxQjAwOTNGRUM0IC8qIFdLQnVuZGxlSW5pdGlhbGl6ZS5oICovLAorCQkJCUJDNkU0MDg1MTFB
RjYwQjcwMDkzRkVDNCAvKiBXS0J1bmRsZS5jcHAgKi8sCisJCQkJQkM2RTQwODQxMUFGNjBCNzAw
OTNGRUM0IC8qIFdLQnVuZGxlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGM7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OwogCQlCQzhBNTAwRTExNzY1QUQ0MDA3NTc1NzMgLyogV2Vi
S2l0MiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC04MDYs
NiArODU2LDE0IEBACiAJCQlwYXRoID0gY3BwOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKKwkJQkM5NDY2NkYxMUIwMzM2NTAwQjc2QTU0IC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkM5NDY2NzIxMUIwMzM5MTAwQjc2QTU0
IC8qIFdlYkJ1bmRsZU1hYy5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IG1hYzsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUJDOTYzRDZDMTEzREQxOTUwMDU3NEJFMiAvKiBt
YWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTE3LDYg
Kzk3NSwxMSBAQAogCQkJCUJDMjY1MjE5MTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVBy
b3h5VXBkYXRlQ2h1bmsuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc3NDY1MTE4QjlGRjQwMDdE
OUU5QSAvKiBXS1BhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE3NzUzRjExOEJB
QkYwMDA3RDlFOUEgLyogR2VuZXJpY0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzZF
M0ZGNDExQUY1NDk2MDA5M0ZFQzQgLyogV0tCdW5kbGVCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzZFM0ZGNzExQUY1NTFFMDA5M0ZFQzQgLyogV0tCdW5kbGVBUElDYXN0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlCQzZFM0ZGRDExQUY1NkVBMDA5M0ZFQzQgLyogV2ViQnVuZGxlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlCQzZFNDAwMTExQUY1NzFCMDA5M0ZFQzQgLyogV0tCdW5kbGVJbml0aWFs
aXplLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzZFNDA4NjExQUY2MEI3MDA5M0ZFQzQgLyogV0tC
dW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTA3MCw2ICsxMTMzLDkgQEAKIAkJCQlCQzI2NTFG
NjExODI1RUY4MDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eVVwZGF0ZUNodW5rTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkMyNjUyMTYxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVh
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyNjUyMTgxMTgyNjA4MTAwMjQzRTEyIC8q
IERyYXdpbmdBcmVhUHJveHlVcGRhdGVDaHVuay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzZF
M0ZGQzExQUY1NkVBMDA5M0ZFQzQgLyogV2ViQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUJDNkU0MDg3MTFBRjYwQjcwMDkzRkVDNCAvKiBXS0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlCQzk0NjY3MzExQjAzMzkxMDBCNzZBNTQgLyogV2ViQnVuZGxlTWFjLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gNjExNTkp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKICNpbmNsdWRlICJSdW5M
b29wLmgiCisjaW5jbHVkZSAiV2ViQnVuZGxlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVR5cGVBcmd1
bWVudE1hcnNoYWxsaW5nLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCkBAIC02Myw2ICs2NCwxOCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemUoQ29y
ZUlQQzo6Q29uCiAgICAgbV9ydW5Mb29wID0gcnVuTG9vcDsKIH0KIAordm9pZCBXZWJQcm9jZXNz
Ojpsb2FkV2ViQnVuZGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgcGF0aCkKK3sKKyAgICBBU1NF
UlQobV9wYWdlTWFwLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFwYXRoLmlzRW1wdHkoKSk7CisK
KyAgICBtX3dlYkJ1bmRsZSA9IFdlYkJ1bmRsZTo6Y3JlYXRlKHBhdGgpOworICAgIGlmICghbV93
ZWJCdW5kbGUtPmxvYWQoKSkgeworICAgICAgICAvLyBEb24ndCBrZWVwIGFyb3VuZCBXZWJCdW5k
bGUgcmVmZXJlbmNlIGlmIHRoZSBsb2FkIGZhaWxzLgorICAgICAgICBtX3dlYkJ1bmRsZS5jbGVh
cigpOworICAgIH0KK30KKwogV2ViUGFnZSogV2ViUHJvY2Vzczo6d2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZU1hcC5nZXQocGFnZUlEKS5nZXQoKTsK
QEAgLTExOSw2ICsxMzIsMTQgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSQogewogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViUHJv
Y2Vzcz4oKSkgewogICAgICAgICBzd2l0Y2ggKG1lc3NhZ2VJRC5nZXQ8V2ViUHJvY2Vzc01lc3Nh
Z2U6OktpbmQ+KCkpIHsKKyAgICAgICAgICAgIGNhc2UgV2ViUHJvY2Vzc01lc3NhZ2U6OkxvYWRX
ZWJCdW5kbGU6IHsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpTdHJpbmcgcGF0aDsKKyAgICAg
ICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChwYXRoKSkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGxvYWRXZWJCdW5k
bGUocGF0aCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FzZSBXZWJQcm9jZXNzTWVzc2FnZTo6Q3JlYXRlOiB7CiAgICAgICAgICAgICAgICAg
dWludDY0X3QgcGFnZUlEID0gYXJndW1lbnRzLT5kZXN0aW5hdGlvbklEKCk7CiAgICAgICAgICAg
ICAgICAgSW50U2l6ZSB2aWV3U2l6ZTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2
aXNpb24gNjExNTkpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwxMCArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIEludFNpemU7CisgICAgY2xhc3MgU3RyaW5nOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY2xhc3MgV2ViQnVuZGxlOwogY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlByZWZlcmVuY2Vz
U3RvcmU7CiAKQEAgLTUyLDEyICs1NCwxNiBAQCBwdWJsaWM6CiAgICAgV2ViUGFnZSogY3JlYXRl
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXpl
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgRHJhd2luZ0FyZWE6OlR5cGUpOwogICAgIHZv
aWQgcmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwogCisgICAgV2ViQnVuZGxlKiB3ZWJC
dW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3dlYkJ1bmRsZS5nZXQoKTsgfQorCiAgICAgYm9vbCBp
c1NlcGFyYXRlUHJvY2VzcygpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNz
KCk7CiAgICAgdm9pZCBzaHV0ZG93bigpOwogCisgICAgdm9pZCBsb2FkV2ViQnVuZGxlKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYpOworCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQ
Qzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlE
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKTsK
QEAgLTY1LDYgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+
ID4gbV9wYWdlTWFwOworICAgIFJlZlB0cjxXZWJCdW5kbGU+IG1fd2ViQnVuZGxlOwogCiAgICAg
Ym9vbCBtX2luRGlkQ2xvc2U7CiAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJCdW5kbGUv
V2ViQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQnVuZGxl
L1dlYkJ1bmRsZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQnVu
ZGxlL1dlYkJ1bmRsZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiV2ViQnVuZGxlLmgiCisKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3Qu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkJ1bmRsZTo6V2ViQnVuZGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYgcGF0aCkKKyAgICA6IG1fcGF0aChwYXRoKQorICAgICwgbV9wbGF0Zm9y
bUJ1bmRsZSgwKQoreworICAgIGluaXRpYWxpemVDbGllbnQoMCk7Cit9CisKK1dlYkJ1bmRsZTo6
fldlYkJ1bmRsZSgpCit7Cit9CisKK3ZvaWQgV2ViQnVuZGxlOjppbml0aWFsaXplQ2xpZW50KFdL
QnVuZGxlQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKGNsaWVudCAmJiAhY2xpZW50LT52ZXJz
aW9uKQorICAgICAgICBtX2NsaWVudCA9ICpjbGllbnQ7CisgICAgZWxzZQorICAgICAgICBtZW1z
ZXQoJm1fY2xpZW50LCAwLCBzaXplb2YobV9jbGllbnQpKTsKK30KKwordm9pZCBXZWJCdW5kbGU6
OmRpZENyZWF0ZVBhZ2UoV2ViUGFnZSogcGFnZSkKK3sKKyAgICBpZiAobV9jbGllbnQuZGlkQ3Jl
YXRlUGFnZSkKKyAgICAgICAgbV9jbGllbnQuZGlkQ3JlYXRlUGFnZSh0b1JlZihwYWdlKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkJ1bmRsZS9XZWJCdW5kbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQnVuZGxlL1dlYkJ1bmRsZS5oCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkJ1bmRsZS9XZWJCdW5kbGUuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQnVuZGxlX2gKKyNkZWZpbmUgV2Vi
QnVuZGxlX2gKKworI2luY2x1ZGUgIldLQnVuZGxlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybVN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBQTEFURk9STShNQUMp
Cit0eXBlZGVmIENGQnVuZGxlUmVmIFBsYXRmb3JtQnVuZGxlOworI2VsaWYgUExBVEZPUk0oV0lO
KQordHlwZWRlZiBITU9EVUxFIFBsYXRmb3JtQnVuZGxlOworI2VuZGlmCisKK2NsYXNzIFdlYlBh
Z2U7CisKK2NsYXNzIFdlYkJ1bmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkJ1bmRsZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkJ1bmRsZT4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYgcGF0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViQnVuZGxlKHBhdGgpKTsKKyAgICB9CisgICAgfldlYkJ1bmRsZSgpOworCisgICAgYm9vbCBs
b2FkKCk7CisKKyAgICAvLyBBUEkKKyAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoV0tCdW5kbGVD
bGllbnQqKTsKKworICAgIC8vIENhbGxiYWNrIGhvb2tzCisgICAgdm9pZCBkaWRDcmVhdGVQYWdl
KFdlYlBhZ2UqKTsKKworcHJpdmF0ZToKKyAgICBXZWJCdW5kbGUoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJik7CisKKyAgICBXZWJDb3JlOjpTdHJpbmcgbV9wYXRoOworICAgIFBsYXRmb3JtQnVuZGxl
IG1fcGxhdGZvcm1CdW5kbGU7IC8vIFRoaXMgaXMgbGVha2VkIHJpZ2h0IG5vdywgc2luY2Ugd2Ug
bmV2ZXIgdW5sb2FkIHRoZSBidW5kbGUvbW9kdWxlLgorCisgICAgV0tCdW5kbGVDbGllbnQgbV9j
bGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkJ1bmRs
ZV9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJCdW5kbGUvQVBJ
L2MvV0tCdW5kbGUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgIldLQnVuZGxlLmgiCisKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIK
KyNpbmNsdWRlICJXZWJCdW5kbGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9p
ZCBXS0J1bmRsZVNldENsaWVudChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlQ2xpZW50
ICogd2tDbGllbnQpCit7CisgICAgaWYgKHdrQ2xpZW50ICYmICF3a0NsaWVudC0+dmVyc2lvbikK
KyAgICAgICAgdG9XSyhidW5kbGVSZWYpLT5pbml0aWFsaXplQ2xpZW50KHdrQ2xpZW50KTsKK30K
SW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdLQnVuZGxlX2gKKyNkZWZpbmUgV0tCdW5kbGVfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1
bmRsZUJhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CisvLyBDbGllbnQKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlRGlkQ3JlYXRlUGFnZUNhbGxiYWNr
KShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisKK3N0cnVj
dCBXS0J1bmRsZUNsaWVudCB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZv
aWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xpZW50SW5mbzsKKyAgICBXS0J1bmRsZURpZENyZWF0ZVBhZ2VDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENyZWF0ZVBhZ2U7Cit9OwordHlwZWRl
ZiBzdHJ1Y3QgV0tCdW5kbGVDbGllbnQgV0tCdW5kbGVDbGllbnQ7CisKK1dLX0VYUE9SVCB2b2lk
IFdLQnVuZGxlU2V0Q2xpZW50KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVDbGllbnQgKiBj
bGllbnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tC
dW5kbGVfaCAqLwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQnVuZGxl
L0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tCdW5kbGVBUElDYXN0X2gKKyNkZWZp
bmUgV0tCdW5kbGVBUElDYXN0X2gKKworI2luY2x1ZGUgIldLQnVuZGxlQmFzZS5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQnVuZGxlOworY2xhc3MgV2ViRnJhbWU7CitjbGFz
cyBXZWJQYWdlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBBUElUeXBlPiBzdHJ1Y3QgQnVuZGxlQVBJ
VHlwZUluZm8geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlQVBJVHlwZUluZm88V0tCdW5k
bGVQYWdlUmVmPiAgICAgICAgICAgIHsgdHlwZWRlZiBXZWJQYWdlKiBJbXBsVHlwZTsgfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IEJ1bmRsZUFQSVR5cGVJbmZvPFdLQnVuZGxlRnJhbWVSZWY+ICAgICAg
ICAgICB7IHR5cGVkZWYgV2ViRnJhbWUqIEltcGxUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
QnVuZGxlQVBJVHlwZUluZm88V0tCdW5kbGVSZWY+ICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBX
ZWJCdW5kbGUqIEltcGxUeXBlOyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbXBsVHlwZT4gc3Ry
dWN0IEJ1bmRsZUltcGxUeXBlSW5mbyB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVJbXBs
VHlwZUluZm88V2ViUGFnZSo+ICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdLQnVuZGxlUGFn
ZVJlZiBBUElUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlSW1wbFR5cGVJbmZvPFdl
YkZyYW1lKj4gICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZUZyYW1lUmVmIEFQSVR5
cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVJbXBsVHlwZUluZm88V2ViQnVuZGxlKj4g
ICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdLQnVuZGxlUmVmIEFQSVR5cGU7IH07CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisvKiBPcGFxdWUgdHlwaW5nIGNvbnZlbmllbmNlIG1ldGhvZHMg
Ki8KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSB0eXBlbmFtZSBXZWJLaXQ6OkJ1bmRs
ZUFQSVR5cGVJbmZvPFQ+OjpJbXBsVHlwZSB0b1dLKFQgdCkKK3sKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx0eXBlbmFtZSBXZWJLaXQ6OkJ1bmRsZUFQSVR5cGVJbmZvPFQ+OjpJbXBsVHlw
ZT4odCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdHlwZW5hbWUgV2ViS2l0
OjpCdW5kbGVJbXBsVHlwZUluZm88VD46OkFQSVR5cGUgdG9SZWYoVCB0KQoreworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHR5cGVuYW1lIFdlYktpdDo6QnVuZGxlSW1wbFR5cGVJbmZvPFQ+
OjpBUElUeXBlPih0KTsKK30KKworI2VuZGlmIC8vIFdLQnVuZGxlQVBJQ2FzdF9oCkluZGV4OiBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFzZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYXNlLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlQmFzZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXS0J1bmRsZUJhc2VfaAorI2RlZmluZSBXS0J1bmRsZUJhc2VfaAorCit0eXBlZGVmIHN0
cnVjdCBPcGFxdWVXS0J1bmRsZVBhZ2UqIFdLQnVuZGxlUGFnZVJlZjsKK3R5cGVkZWYgc3RydWN0
IE9wYXF1ZVdLQnVuZGxlKiBXS0J1bmRsZVJlZjsKKworI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRl
ZmluZWQoX1dJTjMyKQorI2lmIEJVSUxESU5HX1dFQktJVDIKKyNkZWZpbmUgV0tfRVhQT1JUIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KQorI2Vsc2UKKyNkZWZpbmUgV0tfRVhQT1JUIF9fZGVjbHNwZWMo
ZGxsaW1wb3J0KQorI2VuZGlmCisjZWxzZQorI2RlZmluZSBXS19FWFBPUlQKKyNlbmRpZgorCisj
ZW5kaWYgLyogV0tCdW5kbGVCYXNlX2ggKi8KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJC
dW5kbGUvQVBJL2MvV0tCdW5kbGVJbml0aWFsaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluaXRpYWxpemUuaAkocmV2aXNpb24g
MCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbml0aWFs
aXplLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdLQnVuZGxlSW5pdGlhbGl6ZV9oCisjZGVmaW5lIFdLQnVuZGxlSW5pdGlhbGl6ZV9oCisKKyNp
bmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKKy8vIE5PVEU6IE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgV2Vi
QnVuZGxlJ3MgYXMgYSBmdW5jdGlvbiBuYW1lZCAiV0tCdW5kbGVJbml0aWFsaXplIi4KK3R5cGVk
ZWYgdm9pZCAoKldLQnVuZGxlSW5pdGlhbGl6ZUZ1bmN0aW9uUHRyKShXS0J1bmRsZVJlZik7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0J1bmRsZUluaXRp
YWxpemVfaCAqLwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkJ1bmRsZS9tYWMvV2ViQnVu
ZGxlTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQnVuZGxlL21h
Yy9XZWJCdW5kbGVNYWMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkJ1bmRsZS9tYWMvV2ViQnVuZGxlTWFjLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJCdW5kbGUuaCIKKworI2luY2x1ZGUgIldLQnVu
ZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlSW5pdGlhbGl6ZS5oIgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitib29sIFdlYkJ1bmRsZTo6bG9hZCgpCit7CisgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBidW5kbGVQYXRoU3RyKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4obV9wYXRoLmNoYXJhY3Rl
cnMoKSksIG1fcGF0aC5sZW5ndGgoKSkpOworICAgIGlmICghYnVuZGxlUGF0aFN0cikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJM
KEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHIu
Z2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIGlmICghYnVuZGxlVVJM
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3BsYXRmb3JtQnVuZGxlID0gQ0ZCdW5k
bGVDcmVhdGUoMCwgYnVuZGxlVVJMLmdldCgpKTsKKyAgICBpZiAoIW1fcGxhdGZvcm1CdW5kbGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgaWYgKCFDRkJ1bmRsZUxvYWRF
eGVjdXRhYmxlKG1fcGxhdGZvcm1CdW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBXS0J1bmRsZUluaXRpYWxpemVGdW5jdGlvblB0ciBpbml0aWFsaXplRnVuY3Rpb24gPSByZWlu
dGVycHJldF9jYXN0PFdLQnVuZGxlSW5pdGlhbGl6ZUZ1bmN0aW9uUHRyPihDRkJ1bmRsZUdldEZ1
bmN0aW9uUG9pbnRlckZvck5hbWUobV9wbGF0Zm9ybUJ1bmRsZSwgQ0ZTVFIoIldLQnVuZGxlSW5p
dGlhbGl6ZSIpKSk7CisgICAgaWYgKCFpbml0aWFsaXplRnVuY3Rpb24pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGluaXRpYWxpemVGdW5jdGlvbih0b1JlZih0aGlzKSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkJ1bmRsZS93aW4vV2ViQnVuZGxlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQnVuZGxlL3dpbi9XZWJCdW5kbGVXaW4uY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkJ1bmRsZS93aW4vV2ViQnVuZGxlV2luLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJC
dW5kbGUuaCIKKworI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVu
ZGxlSW5pdGlhbGl6ZS5oIgorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHdpbmJh
c2UuaD4KKyNpbmNsdWRlIDxzaGxvYmouaD4KKyNpbmNsdWRlIDxzaGx3YXBpLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHRyeSBhbmQgdXNlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4uCisKK3N0YXRpYyBT
dHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4g
U3RyaW5nKDo6UGF0aEZpbmRGaWxlTmFtZShTdHJpbmcocGF0aCkuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKSkpOworfQorCitzdGF0aWMgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3Qg
U3RyaW5nJiBwYXRoKQoreworICAgIFN0cmluZyBmaWxlTmFtZSA9IHBhdGhHZXRGaWxlTmFtZShw
YXRoKTsKKyAgICBTdHJpbmcgZGlyTmFtZSA9IFN0cmluZyhwYXRoKTsKKyAgICBkaXJOYW1lLnRy
dW5jYXRlKGRpck5hbWUubGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5hbWUocGF0aCkubGVuZ3RoKCkp
OworICAgIHJldHVybiBkaXJOYW1lOworfQorCitib29sIFdlYkJ1bmRsZTo6bG9hZCgpCit7Cisg
ICAgV0NIQVIgY3VycmVudFBhdGhbTUFYX1BBVEhdOworICAgIGlmICghOjpHZXRDdXJyZW50RGly
ZWN0b3J5VyhNQVhfUEFUSCwgY3VycmVudFBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBTdHJpbmcgZGlyZWN0b3JCdW5kbGVSZXNpZGVzSW4gPSBkaXJlY3RvcnlOYW1lKG1fcGF0
aCk7CisgICAgaWYgKCE6OlNldEN1cnJlbnREaXJlY3RvcnlXKGRpcmVjdG9yQnVuZGxlUmVzaWRl
c0luLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX3BsYXRmb3JtQnVuZGxlID0gOjpMb2FkTGlicmFyeUV4VyhtX3BhdGguY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgMCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNI
X1BBVEgpOworICAgIGlmICghbV9wbGF0Zm9ybUJ1bmRsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gUmVzZXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgIGlmICghOjpTZXRD
dXJyZW50RGlyZWN0b3J5VyhjdXJyZW50UGF0aCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIFdLQnVuZGxlSW5pdGlhbGl6ZUZ1bmN0aW9uUHRyIGluaXRpYWxpemVGdW5j
dGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8V0tCdW5kbGVJbml0aWFsaXplRnVuY3Rpb25QdHI+KDo6
R2V0UHJvY0FkZHJlc3MobV9wbGF0Zm9ybUJ1bmRsZSwgIldLQnVuZGxlSW5pdGlhbGl6ZSIpKTsK
KyAgICBpZiAoIWluaXRpYWxpemVGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaW5pdGlhbGl6ZUZ1bmN0aW9uKHRvUmVmKHRoaXMpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkocmV2aXNpb24gNjExNTkpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZUlELmgiCisjaW5jbHVkZSAiV2ViQnVuZGxlLmgiCiAjaW5jbHVkZSAiV2ViQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJDb3Jl
VHlwZUFyZ3VtZW50TWFyc2hhbGxpbmcuaCIKQEAgLTEwMiw2ICsxMDMsOSBAQCBXZWJQYWdlOjpX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgbV9tYWluRnJhbWUgPSBXZWJGcmFt
ZTo6Y3JlYXRlTWFpbkZyYW1lKHRoaXMpOwogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5l
Y3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRDcmVhdGVNYWluRnJhbWUsIG1f
cGFnZUlELCBDb3JlSVBDOjpJbihtX21haW5GcmFtZS0+ZnJhbWVJRCgpKSk7CiAKKyAgICBpZiAo
V2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViQnVuZGxlKCkpCisgICAgICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLndlYkJ1bmRsZSgpLT5kaWRDcmVhdGVQYWdlKHRoaXMpOworCiAjaWZuZGVmIE5ERUJV
RwogICAgIHdlYlBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwogI2VuZGlmCkluZGV4OiBXZWJLaXQy
L21hYy9XZWJLaXQyLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL21hYy9XZWJLaXQyLmV4cAko
cmV2aXNpb24gNjExNTkpCisrKyBXZWJLaXQyL21hYy9XZWJLaXQyLmV4cAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNyArMSwxOSBAQAogLm9iamNfY2xhc3NfbmFtZV9XS1ZpZXcKIF9Jbml0V2ViQ29y
ZVN5c3RlbUludGVyZmFjZQotX1dLQ29udGV4dENyZWF0ZVdpdGhQcm9jZXNzTW9kZWwKK19XS0J1
bmRsZVNldENsaWVudAorX1dLQ29udGV4dENyZWF0ZQorX1dLQ29udGV4dENyZWF0ZVdpdGhJbmpl
Y3RlZEJ1bmRsZVBhdGgKIF9XS0NvbnRleHRHZXRTdGF0aXN0aWNzCiBfV0tDb250ZXh0UmVsZWFz
ZQogX1dLQ29udGV4dFJldGFpbgogX1dLRnJhbWVHZXRGcmFtZUxvYWRTdGF0ZQotX1dLRnJhbWVH
ZXRQcm92aXNpb25hbFVSTAogX1dLRnJhbWVHZXRQYWdlCitfV0tGcmFtZUdldFByb3Zpc2lvbmFs
VVJMCiBfV0tGcmFtZUdldFVSTAogX1dLRnJhbWVJc01haW5GcmFtZQorX1dLRnJhbWVQb2xpY3lM
aXN0ZW5lclVzZQogX1dLRnJhbWVSZWxlYXNlCiBfV0tGcmFtZVJldGFpbgotX1dLRnJhbWVQb2xp
Y3lMaXN0ZW5lclVzZQogX1dLTmF2aWdhdGlvbkRhdGFHZXRUaXRsZQogX1dLTmF2aWdhdGlvbkRh
dGFHZXRVUkwKIF9XS1BhZ2VDbG9zZQpAQCAtMzMsNiArMzUsNyBAQCBfV0tQYWdlU2V0UGFnZVBv
bGljeUNsaWVudAogX1dLUGFnZVNldFBhZ2VVSUNsaWVudAogX1dLUGFnZVRyeUNsb3NlCiBfV0tT
dHJpbmdDb3B5Q0ZTdHJpbmcKK19XS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZwogX1dLU3RyaW5n
UmVsZWFzZQogX1dLU3RyaW5nUmV0YWluCiBfV0tVUkxDb3B5Q0ZVUkwKSW5kZXg6IFdlYktpdDIv
d2luL1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNw
cm9qCShyZXZpc2lvbiA2MTE1OSkKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxJbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJ
bmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXHByaXZhdGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcilcLi5cUGxhdGZvcm1cQ29yZUlQQyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFNoYXJlZCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZFx3aW4mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcQ29yZUlQQ1N1cHBvcnQmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxVSVByb2Nlc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVBy
b2Nlc3NcQVBJXEMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXGNw
cCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcd2luJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXExhdW5jaGVyJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcilcLi5cVUlQcm9jZXNzXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdl
YlByb2Nlc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdlYkNvcmVT
dXBwb3J0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJQYWdlJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXHdpbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3Ncd2luJnF1b3Q7IgorCQkJCUFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRl
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXHB0aHJlYWRzJnF1b3Q7
OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0
cHV0RGlyKVxJbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXElu
Y2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1
ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cUGxhdGZvcm1cQ29yZUlQQyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZCZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpXC4uXFNoYXJlZFx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcQ29y
ZUlQQ1N1cHBvcnQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3MmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXEMmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXGNwcCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFVJUHJvY2Vzc1xBUElcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNz
XExhdW5jaGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXHdpbiZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxXZWJQcm9jZXNzXFdlYkNvcmVTdXBwb3J0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cilcLi5cV2ViUHJvY2Vzc1xXZWJQYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2Vi
UHJvY2Vzc1xXZWJQYWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nl
c3NcV2ViQnVuZGxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJC
dW5kbGVcQVBJXGMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdlYkJ1
bmRsZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXHdpbiZxdW90
OyIKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtGUkFNRVdPUktfTkFNRT1X
ZWJLaXQyO0JVSUxESU5HX1dFQktJVDIiCiAJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCiAJ
CQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSJXZWJLaXQyUHJlZml4LmgiCkBAIC0xMTUsNyAr
MTE1LDcgQEAKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0J
CQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVccHRo
cmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdE91
dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1
dERpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcilcLi5cUGxhdGZvcm0mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxQbGF0Zm9y
bVxDb3JlSVBDJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFNoYXJlZFxDb3JlSVBDU3VwcG9ydCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJv
Y2VzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcQyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcY3BwJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxVSVByb2Nlc3NcTGF1bmNoZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nl
c3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2VzcyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcV2ViQ29yZVN1cHBvcnQmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdlYlBhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxXZWJQcm9jZXNzXFdlYlBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cV2ViUHJvY2Vzc1x3aW4mcXVvdDsiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz0iJnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJL
aXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVccHJp
dmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29y
ZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRp
bmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cUGxhdGZvcm0mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxQbGF0Zm9ybVxDb3JlSVBDJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcilcLi5cU2hhcmVkJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXHdpbiZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZFxDb3JlSVBDU3VwcG9ydCZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2VzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
XC4uXFVJUHJvY2Vzc1xBUElcQyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vz
c1xBUElcY3BwJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVx3aW4m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcTGF1bmNoZXImcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cilcLi5cV2ViUHJvY2VzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3Nc
V2ViQ29yZVN1cHBvcnQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdl
YlBhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdlYlBhZ2Vcd2lu
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJCdW5kbGUmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdlYkJ1bmRsZVxBUElcYyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcV2ViQnVuZGxlXHdpbiZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3Ncd2luJnF1b3Q7IgogCQkJCVByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPSJfVVNSRExMO0ZSQU1FV09SS19OQU1FPVdlYktpdDI7QlVJTERJTkdfV0VC
S0lUMiIKIAkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKIAkJCQlQcmVjb21waWxlZEhlYWRl
clRocm91Z2g9IldlYktpdDJQcmVmaXguaCIKQEAgLTE5MCw3ICsxOTAsNyBAQAogCQkJLz4KIAkJ
CTxUb29sCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPSImcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZSZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilc
SW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXEph
dmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxQbGF0Zm9y
bSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFBsYXRmb3JtXENvcmVJUEMmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxT
aGFyZWRcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXENvcmVJUENTdXBw
b3J0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVxDJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cVUlQcm9jZXNzXEFQSVxjcHAmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nl
c3NcQVBJXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xMYXVuY2hl
ciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1x3aW4mcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5c
V2ViUHJvY2Vzc1xXZWJDb3JlU3VwcG9ydCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdl
YlByb2Nlc3NcV2ViUGFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3Nc
V2ViUGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXHdpbiZx
dW90OyIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5j
bHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZSZxdW90
OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxQbGF0Zm9ybSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFBsYXRmb3JtXENvcmVJUEMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWQmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcilcLi5cU2hhcmVkXENvcmVJUENTdXBwb3J0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cVUlQcm9jZXNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVxD
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVxjcHAmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXHdpbiZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpXC4uXFVJUHJvY2Vzc1xMYXVuY2hlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFVJUHJvY2Vzc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJDb3JlU3VwcG9ydCZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcV2ViUGFnZSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcV2ViUGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdlYkJ1bmRsZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
XC4uXFdlYlByb2Nlc3NcV2ViQnVuZGxlXEFQSVxjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cV2ViUHJvY2Vzc1xXZWJCdW5kbGVcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5c
V2ViUHJvY2Vzc1x3aW4mcXVvdDsiCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JE
TEw7V0VCS0lUX0VYUE9SVFM7RlJBTUVXT1JLX05BTUU9V2ViS2l0MjtCVUlMRElOR19XRUJLSVQy
IgogCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgogCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhy
b3VnaD0iV2ViS2l0MlByZWZpeC5oIgpAQCAtMjY2LDcgKzI2Niw3IEBACiAJCQkvPgogCQkJPFRv
b2wKIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM9IiZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNs
dWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcSmF2YVNj
cmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFBsYXRmb3JtJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cUGxhdGZvcm1cQ29yZUlQQyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpXC4uXFNoYXJlZCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJl
ZFx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcQ29yZUlQQ1N1cHBvcnQm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3MmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXEMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxV
SVByb2Nlc3NcQVBJXGNwcCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xB
UElcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXExhdW5jaGVyJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXHdpbiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpXC4uXFdlYlByb2Nlc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQ
cm9jZXNzXFdlYkNvcmVTdXBwb3J0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJv
Y2Vzc1xXZWJQYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJQ
YWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3Ncd2luJnF1b3Q7
IgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRl
XHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXEluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpXC4uXFBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cUGxh
dGZvcm1cQ29yZUlQQyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZCZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZFx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxTaGFyZWRcQ29yZUlQQ1N1cHBvcnQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxV
SVByb2Nlc3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXEMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXGNwcCZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cilcLi5cVUlQcm9jZXNzXExhdW5jaGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQ
cm9jZXNzXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3MmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdlYkNvcmVTdXBwb3J0JnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJQYWdlJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJQYWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpXC4uXFdlYlByb2Nlc3NcV2ViQnVuZGxlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5c
V2ViUHJvY2Vzc1xXZWJCdW5kbGVcQVBJXGMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxX
ZWJQcm9jZXNzXFdlYkJ1bmRsZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQ
cm9jZXNzXHdpbiZxdW90OyIKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtX
RUJLSVRfRVhQT1JUUztGUkFNRVdPUktfTkFNRT1XZWJLaXQyO0JVSUxESU5HX1dFQktJVDIiCiAJ
CQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCiAJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdo
PSJXZWJLaXQyUHJlZml4LmgiCkBAIC0zNDUsNyArMzQ1LDcgQEAKIAkJCS8+CiAJCQk8VG9vbAog
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz0iJnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRP
dXRwdXREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVc
cHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0
Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndh
cmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cUGxhdGZvcm0mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxQbGF0Zm9ybVxDb3JlSVBDJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcilcLi5cU2hhcmVkJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXHdp
biZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFNoYXJlZFxDb3JlSVBDU3VwcG9ydCZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2VzcyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpXC4uXFVJUHJvY2Vzc1xBUElcQyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJv
Y2Vzc1xBUElcY3BwJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVx3
aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcTGF1bmNoZXImcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcilcLi5cV2ViUHJvY2VzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nl
c3NcV2ViQ29yZVN1cHBvcnQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNz
XFdlYlBhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdlYlBhZ2Vc
d2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1x3aW4mcXVvdDsiCisJ
CQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVccHRo
cmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7
JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdE91
dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1
dERpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcilcLi5cUGxhdGZvcm0mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxQbGF0Zm9y
bVxDb3JlSVBDJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4u
XFNoYXJlZFxDb3JlSVBDU3VwcG9ydCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJv
Y2VzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcQyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xBUElcY3BwJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwu
LlxVSVByb2Nlc3NcTGF1bmNoZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nl
c3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2VzcyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcV2ViQ29yZVN1cHBvcnQmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXFdlYlBhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxXZWJQcm9jZXNzXFdlYlBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cV2ViUHJvY2Vzc1xXZWJCdW5kbGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQ
cm9jZXNzXFdlYkJ1bmRsZVxBUElcYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlBy
b2Nlc3NcV2ViQnVuZGxlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nl
c3Ncd2luJnF1b3Q7IgogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1dFQktJ
VF9FWFBPUlRTO0ZSQU1FV09SS19OQU1FPVdlYktpdDI7QlVJTERJTkdfV0VCS0lUMiIKIAkJCQlV
c2VQcmVjb21waWxlZEhlYWRlcj0iMiIKIAkJCQlQcmVjb21waWxlZEhlYWRlclRocm91Z2g9Ildl
YktpdDJQcmVmaXguaCIKQEAgLTQyMCw3ICs0MjAsNyBAQAogCQkJLz4KIAkJCTxUb29sCiAJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVz
PSImcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktp
dExpYnJhcmllc0RpcilcSW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1
dERpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxwcml2
YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3Jl
JnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGlu
Z0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxQbGF0Zm9ybSZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpXC4uXFBsYXRmb3JtXENvcmVJUEMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxTaGFyZWQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWRcd2luJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hhcmVkXENvcmVJUENTdXBwb3J0JnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cVUlQcm9jZXNzXEFQSVxDJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNz
XEFQSVxjcHAmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxVSVByb2Nlc3NcQVBJXHdpbiZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1xMYXVuY2hlciZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxXZWJQcm9jZXNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xX
ZWJDb3JlU3VwcG9ydCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcV2Vi
UGFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nlc3NcV2ViUGFnZVx3aW4m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzXHdpbiZxdW90OyIKKwkJCQlB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
SW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxwdGhyZWFk
cyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdl
YktpdE91dHB1dERpcilcSW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxQbGF0Zm9ybSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFBsYXRmb3JtXENv
cmVJUEMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxTaGFyZWQmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKVwuLlxTaGFyZWRcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cU2hh
cmVkXENvcmVJUENTdXBwb3J0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNz
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVxDJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcilcLi5cVUlQcm9jZXNzXEFQSVxjcHAmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxVSVByb2Nlc3NcQVBJXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJ
UHJvY2Vzc1xMYXVuY2hlciZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFVJUHJvY2Vzc1x3
aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJQcm9jZXNzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1xXZWJDb3JlU3VwcG9ydCZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpXC4uXFdlYlByb2Nlc3NcV2ViUGFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
XC4uXFdlYlByb2Nlc3NcV2ViUGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxX
ZWJQcm9jZXNzXFdlYkJ1bmRsZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYlByb2Nl
c3NcV2ViQnVuZGxlXEFQSVxjJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vz
c1xXZWJCdW5kbGVcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViUHJvY2Vzc1x3
aW4mcXVvdDsiCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7V0VCS0lUX0VY
UE9SVFM7RlJBTUVXT1JLX05BTUU9V2ViS2l0MjtCVUlMRElOR19XRUJLSVQyIgogCQkJCVVzZVBy
ZWNvbXBpbGVkSGVhZGVyPSIyIgogCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iV2ViS2l0
MlByZWZpeC5oIgpAQCAtNjk5LDYgKzY5OSw1NCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
PC9GaWx0ZXI+CisJCQk8RmlsdGVyCisJCQkJTmFtZT0iV2ViQnVuZGxlIgorCQkJCT4KKwkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViQnVuZGxlXFdlYkJ1bmRs
ZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxXZWJQcm9jZXNzXFdlYkJ1bmRsZVxXZWJCdW5kbGUuaCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsdGVyCisJCQkJCU5hbWU9IkFQSSIKKwkJCQkJPgorCQkJCQk8RmlsdGVyCisJ
CQkJCQlOYW1lPSJjIgorCQkJCQkJPgorCQkJCQkJPEZpbGUKKwkJCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFdlYlByb2Nlc3NcV2ViQnVuZGxlXEFQSVxjXFdLQnVuZGxlLmNwcCIKKwkJCQkJCQk+CisJ
CQkJCQk8L0ZpbGU+CisJCQkJCQk8RmlsZQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJv
Y2Vzc1xXZWJCdW5kbGVcQVBJXGNcV0tCdW5kbGUuaCIKKwkJCQkJCQk+CisJCQkJCQk8L0ZpbGU+
CisJCQkJCQk8RmlsZQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJCdW5k
bGVcQVBJXGNcV0tCdW5kbGVBUElDYXN0LmgiCisJCQkJCQkJPgorCQkJCQkJPC9GaWxlPgorCQkJ
CQkJPEZpbGUKKwkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViQnVuZGxlXEFQ
SVxjXFdLQnVuZGxlQmFzZS5oIgorCQkJCQkJCT4KKwkJCQkJCTwvRmlsZT4KKwkJCQkJCTxGaWxl
CisJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYkJ1bmRsZVxBUElcY1xXS0J1
bmRsZUluaXRpYWxpemUuaCIKKwkJCQkJCQk+CisJCQkJCQk8L0ZpbGU+CisJCQkJCTwvRmlsdGVy
PgorCQkJCTwvRmlsdGVyPgorCQkJCTxGaWx0ZXIKKwkJCQkJTmFtZT0id2luIgorCQkJCQk+CisJ
CQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcV2ViQnVuZGxlXHdp
blxXZWJCdW5kbGVXaW4uY3BwIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+CisJCQkJPC9GaWx0ZXI+
CisJCQk8L0ZpbHRlcj4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKIAkJCU5hbWU9IlVJUHJvY2Vz
cyIKSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UJKHJldmlzaW9uIDYxMTU5KQorKysg
V2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw2
ICsxNyw5IEBAIGFsbDoKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxjcHBcV0tS
ZXRhaW5QdHIuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNv
cHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcd2luXFdLQmFzZVdpbi5oIiAiJChXRUJLSVRPVVRQ
VVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQ
SVx3aW5cV0tWaWV3LmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgorICAg
IHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXFdlYkJ1bmRsZVxBUElcY1xXS0J1bmRsZUJhc2Uu
aCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCisgICAgeGNvcHkgL3kgL2Qg
Ii4uXFdlYlByb2Nlc3NcV2ViQnVuZGxlXEFQSVxjXFdLQnVuZGxlLmgiICIkKFdFQktJVE9VVFBV
VERJUilcaW5jbHVkZVxXZWJLaXQyIgorICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNzXFdl
YkJ1bmRsZVxBUElcY1xXS0J1bmRsZUluaXRpYWxpemUuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxp
bmNsdWRlXFdlYktpdDIiCiAgICAgLWRlbCAiJChXRUJLSVRPVVRQVVRESVIpXGJ1aWxkZmFpbGVk
IgogCiBjbGVhbjoKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxMTk2KQorKysgV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDYtMTUgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDYzMAorICAgICAgICBXZWJLaXQyOiBBZGQgbWVjaGFuaXNtIHRvIGluamVjdCBj
b2RlIGludG8gdGhlIFdlYlByb2Nlc3Mgb24gc3RhcnR1cAorCisgICAgICAgIEFkZCBpbml0aWFs
IFdlYkJ1bmRsZSBzdXBwb3J0LgorCisgICAgICAgICogTWluaUJyb3dzZXIvTWluaUJyb3dzZXIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9XZWJCdW5k
bGUtSW5mby5wbGlzdDogQWRkZWQuCisgICAgICAgIEFkZCB0ZXN0IFdlYkJ1bmRsZSB0byB0aGUg
cHJvamVjdC4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tOgorICAg
ICAgICAoLVtCcm93c2VyQXBwRGVsZWdhdGUgaW5pdF0pOgorICAgICAgICBHZXQgdGhlIHBhdGgg
dG8gdGhlIFdlYkJ1bmRsZSBmcm9tIHRoZSB0aGUgbWFpbiBidW5kbGUgYW5kIHBhc3MgaXQgdG8g
dGhlIG5ldworICAgICAgICBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoIGZ1
bmN0aW9uLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm06CisgICAgICAgIChfZGlkQ2hhbmdlUHJvZ3Jlc3MpOgorICAgICAgICBGaXggdGhlIGJ1
aWxkLiAgVGhpcyBoYXMgYmVlbiBicm9rZW4gZm9yIGEgd2hpbGUuCisKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvV2ViQnVuZGxlOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMv
V2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4uYzogQWRkZWQuCisgICAgICAgIChfZGlkQ3JlYXRlUGFn
ZSk6CisgICAgICAgIChXS0J1bmRsZUluaXRpYWxpemUpOgorICAgICAgICBBZGQgcmVhbGx5IGJh
c2ljIFdlYkJ1bmRsZS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL3dpbi9Ccm93c2VyVmlldy5j
cHA6CisgICAgICAgIChCcm93c2VyVmlldzo6Y3JlYXRlKToKKyAgICAgICAgU3dpdGNoIGZyb20g
V0tDb250ZXh0Q3JlYXRlV2l0aFByb2Nlc3NNb2RlbCB0byBXS0NvbnRleHRDcmVhdGUgYW5kIHJl
bW92ZSBjb21tZW50ZWQgb3V0IGNvZGUuCisKIDIwMTAtMDYtMTUgIEFkYW0gUm9iZW4gIDxhcm9i
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgcmVkdW5kYW50IHNldC1hcHBsZS13
aW5kb3dzLWVudmlyb25tZW50LXZhcmlhYmxlcyBzY3JpcHQKSW5kZXg6IFdlYktpdFRvb2xzL01p
bmlCcm93c2VyL1dlYkJ1bmRsZS1JbmZvLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L01pbmlCcm93c2VyL1dlYkJ1bmRsZS1JbmZvLnBsaXN0CShyZXZpc2lvbiAwKQorKysgV2ViS2l0
VG9vbHMvTWluaUJyb3dzZXIvV2ViQnVuZGxlLUluZm8ucGxpc3QJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURP
Q1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8v
d3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KKzxwbGlzdCB2ZXJzaW9u
PSIxLjAiPgorPGRpY3Q+CisJPGtleT5DRkJ1bmRsZURldmVsb3BtZW50UmVnaW9uPC9rZXk+CisJ
PHN0cmluZz5FbmdsaXNoPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZUV4ZWN1dGFibGU8L2tleT4K
Kwk8c3RyaW5nPiR7RVhFQ1VUQUJMRV9OQU1FfTwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVJZGVu
dGlmaWVyPC9rZXk+CisJPHN0cmluZz5jb20ueW91cmNvbXBhbnkuJHtQUk9EVUNUX05BTUU6cmZj
MTAzNGlkZW50aWZpZXJ9PC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZUluZm9EaWN0aW9uYXJ5VmVy
c2lvbjwva2V5PgorCTxzdHJpbmc+Ni4wPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVBhY2thZ2VU
eXBlPC9rZXk+CisJPHN0cmluZz5CTkRMPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVNob3J0VmVy
c2lvblN0cmluZzwva2V5PgorCTxzdHJpbmc+MS4wPC9zdHJpbmc+CisJPGtleT5DRkJ1bmRsZVNp
Z25hdHVyZTwva2V5PgorCTxzdHJpbmc+Pz8/Pzwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVWZXJz
aW9uPC9rZXk+CisJPHN0cmluZz4xPC9zdHJpbmc+Cis8L2RpY3Q+Cis8L3BsaXN0PgpJbmRleDog
V2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvTWluaUJyb3dzZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2MTE1OSkKKysrIFdlYktpdFRvb2xz
L01pbmlCcm93c2VyL01pbmlCcm93c2VyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE1LDEwICsxNSwzNyBAQAogCQlCQzMyOTQ5ODExNkE5NDFCMDA4NjM1RDAg
LyogQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzI5NDk3MTE2QTk0MUIwMDg2MzVEMCAvKiBCcm93c2VyV2lu
ZG93Q29udHJvbGxlci5tICovOyB9OwogCQlCQzMyOTRBMzExNkE5ODUyMDA4NjM1RDAgLyogQnJv
d3NlcldpbmRvdy54aWIgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMzI5NEExMTE2QTk4NTIwMDg2MzVEMCAvKiBCcm93c2VyV2luZG93LnhpYiAqLzsg
fTsKIAkJQkM4RkI1QTgxMTZBQTFGRTAwODBENDEzIC8qIFdlYktpdDIuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4RkI1QTcxMTZB
QTFGRTAwODBENDEzIC8qIFdlYktpdDIuZnJhbWV3b3JrICovOyB9OworCQlCQ0JEMzg0MDExQjA4
QTY4MDBFMDFFNTQgLyogV2ViQnVuZGxlTWFpbi5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCRDM4M0QxMUIwOEEzMTAwRTAxRTU0IC8qIFdlYkJ1bmRs
ZU1haW4uYyAqLzsgfTsKKwkJQkNCRDM4NDQxMUIwOEFBRDAwRTAxRTU0IC8qIFdlYktpdDIuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4RkI1QTcxMTZBQTFGRTAwODBENDEzIC8qIFdlYktpdDIuZnJhbWV3b3JrICovOyB9OworCQlC
Q0JEMzhEMDExQjA4QzAyMDBFMDFFNTQgLyogV2ViQnVuZGxlLmJ1bmRsZSBpbiBDb3B5IFdlYkJ1
bmRsZSAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JEMzgxRDExQjA4OTgy
MDBFMDFFNTQgLyogV2ViQnVuZGxlLmJ1bmRsZSAqLzsgfTsKIAkJQkNFNjI1RUUxMTdGQzgwRTAw
NTcyNDMzIC8qIEJyb3dzZXJTdGF0aXN0aWNzV2luZG93LnhpYiBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFNjI1RUQxMTdGQzgwRTAwNTcyNDMzIC8q
IEJyb3dzZXJTdGF0aXN0aWNzV2luZG93LnhpYiAqLzsgfTsKIAkJQkNFNjI1RjExMTdGQzgyNzAw
NTcyNDMzIC8qIEJyb3dzZXJTdGF0aXN0aWNzV2luZG93Q29udHJvbGxlci5tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFNjI1RjAxMTdGQzgyNzAwNTcy
NDMzIC8qIEJyb3dzZXJTdGF0aXN0aWNzV2luZG93Q29udHJvbGxlci5tICovOyB9OwogLyogRW5k
IFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKKy8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSBzZWN0aW9uICovCisJCUJDQkQzOEM1MTFCMDhCQTQwMEUwMUU1NCAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250
YWluZXJQb3J0YWwgPSAyOUI5NzMxM0ZEQ0ZBMzk0MTFDQTJDRUEgLyogUHJvamVjdCBvYmplY3Qg
Ki87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBCQ0JEMzgx
QzExQjA4OTgyMDBFMDFFNTQgLyogV2ViQnVuZGxlICovOworCQkJcmVtb3RlSW5mbyA9IFdlYkJ1
bmRsZTsKKwkJfTsKKy8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCisv
KiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJQkNCRDM4Q0YxMUIw
OEMwMTAwRTAxRTU0IC8qIENvcHkgV2ViQnVuZGxlICovID0geworCQkJaXNhID0gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQ
YXRoID0gQ29udGVudHM7CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMTsKKwkJCWZpbGVzID0gKAor
CQkJCUJDQkQzOEQwMTFCMDhDMDIwMEUwMUU1NCAvKiBXZWJCdW5kbGUuYnVuZGxlIGluIENvcHkg
V2ViQnVuZGxlICovLAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBXZWJCdW5kbGUiOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYQ29w
eUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCQkwODlDMTY1REZFODQwRTBDQzAyQUFDMDcgLyogSW5mb1BsaXN0LnN0cmlu
Z3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5hbWUgPSBJbmZvUGxpc3Quc3RyaW5n
czsgcGF0aCA9IG1hYy9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxMDU4QzdBMUZFQTU0RjAxMTFDQTJDQkIgLyogQ29jb2EuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29s
dXRlPiI7IH07CkBAIC0zNyw2ICs2NCw5IEBACiAJCUJDMzI5NDk3MTE2QTk0MUIwMDg2MzVEMCAv
KiBCcm93c2VyV2luZG93Q29udHJvbGxlci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7
IG5hbWUgPSBCcm93c2VyV2luZG93Q29udHJvbGxlci5tOyBwYXRoID0gbWFjL0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzI5NEEyMTE2
QTk4NTIwMDg2MzVEMCAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gZmlsZS54aWI7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gbWFjL0Vu
Z2xpc2gubHByb2ovQnJvd3NlcldpbmRvdy54aWI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDOEZCNUE3MTE2QUExRkUwMDgwRDQxMyAvKiBXZWJLaXQyLmZyYW1ld29yayAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3
b3JrOyBwYXRoID0gV2ViS2l0Mi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCUJDQkQzODFEMTFCMDg5ODIwMEUwMUU1NCAvKiBXZWJCdW5kbGUuYnVuZGxl
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVy
LmNmYnVuZGxlOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBXZWJCdW5kbGUuYnVuZGxlOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQlCQ0JEMzgxRTExQjA4OTgyMDBF
MDFFNTQgLyogV2ViQnVuZGxlLUluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9ICJXZWJCdW5kbGUt
SW5mby5wbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDQkQzODNEMTFCMDhB
MzEwMEUwMUU1NCAvKiBXZWJCdW5kbGVNYWluLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsg
cGF0aCA9IFdlYkJ1bmRsZU1haW4uYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNF
NjI1RUQxMTdGQzgwRTAwNTcyNDMzIC8qIEJyb3dzZXJTdGF0aXN0aWNzV2luZG93LnhpYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGUueGliOyBu
YW1lID0gQnJvd3NlclN0YXRpc3RpY3NXaW5kb3cueGliOyBwYXRoID0gbWFjL0Jyb3dzZXJTdGF0
aXN0aWNzV2luZG93LnhpYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFNjI1RUYx
MTdGQzgyNzAwNTcyNDMzIC8qIEJyb3dzZXJTdGF0aXN0aWNzV2luZG93Q29udHJvbGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCcm93c2VyU3RhdGlzdGljc1dpbmRvd0Nv
bnRyb2xsZXIuaDsgcGF0aCA9IG1hYy9Ccm93c2VyU3RhdGlzdGljc1dpbmRvd0NvbnRyb2xsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFNjI1RjAxMTdGQzgyNzAwNTcyNDMz
IC8qIEJyb3dzZXJTdGF0aXN0aWNzV2luZG93Q29udHJvbGxlci5tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLm9iamM7IG5hbWUgPSBCcm93c2VyU3RhdGlzdGljc1dpbmRvd0NvbnRyb2xsZXIubTsg
cGF0aCA9IG1hYy9Ccm93c2VyU3RhdGlzdGljc1dpbmRvd0NvbnRyb2xsZXIubTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyLDYgKzgyLDE0IEBACiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCUJDQkQzODFCMTFCMDg5ODIw
MEUwMUU1NCAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkJQkNCRDM4NDQxMUIwOEFBRDAwRTAxRTU0IC8qIFdlYktpdDIuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCX07CiAvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCkBAIC05MSw2ICsxMjksNyBAQAogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk4RDExMDczMjA0ODZDRUI4MDBFNDcwOTAg
LyogTWluaUJyb3dzZXIuYXBwICovLAorCQkJCUJDQkQzODFEMTFCMDg5ODIwMEUwMUU1NCAvKiBX
ZWJCdW5kbGUuYnVuZGxlICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMDAsNiArMTM5LDcgQEAKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTA4MEU5NkRERkUyMDFENkQ3RjAwMDAwMSAvKiBDbGFzc2VzICovLAogCQkJCTI5Qjk3MzE1
RkRDRkEzOTQxMUNBMkNFQSAvKiBPdGhlciBTb3VyY2VzICovLAorCQkJCUJDQkQzODJCMTFCMDg5
RjcwMEUwMUU1NCAvKiBXZWJCdW5kbGUgKi8sCiAJCQkJMjlCOTczMTdGRENGQTM5NDExQ0EyQ0VB
IC8qIFJlc291cmNlcyAqLywKIAkJCQlCQzE3NzA0ODExODhFQjA1MDA3RDlFOUEgLyogU2NyaXB0
cyAqLywKIAkJCQkyOUI5NzMyM0ZEQ0ZBMzk0MTFDQTJDRUEgLyogRnJhbWV3b3JrcyAqLywKQEAg
LTEyMSw2ICsxNjEsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQk4RDExMDczMTA0ODZDRUI4MDBFNDcwOTAgLyogTWluaUJyb3dzZXItSW5mby5wbGlzdCAqLywK
KwkJCQlCQ0JEMzgxRTExQjA4OTgyMDBFMDFFNTQgLyogV2ViQnVuZGxlLUluZm8ucGxpc3QgKi8s
CiAJCQkJMDg5QzE2NUNGRTg0MEUwQ0MwMkFBQzA3IC8qIEluZm9QbGlzdC5zdHJpbmdzICovLAog
CQkJCUJDMzI5NEExMTE2QTk4NTIwMDg2MzVEMCAvKiBCcm93c2VyV2luZG93LnhpYiAqLywKIAkJ
CQkxRERENTgxNDBEQTFEMEEzMDBCMzIwMjkgLyogTWFpbk1lbnUueGliICovLApAQCAtMTQ2LDYg
KzE4NywxNSBAQAogCQkJbmFtZSA9IFNjcmlwdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OworCQlCQ0JEMzgyQjExQjA4OUY3MDBFMDFFNTQgLyogV2ViQnVuZGxlICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCQ0JEMzgzRDExQjA4QTMx
MDBFMDFFNTQgLyogV2ViQnVuZGxlTWFpbi5jICovLAorCQkJKTsKKwkJCW5hbWUgPSBXZWJCdW5k
bGU7CisJCQlwYXRoID0gbWFjL1dlYkJ1bmRsZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVU
YXJnZXQgc2VjdGlvbiAqLwpAQCAtMTU0LDYgKzIwNCw3IEBACiAJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gQzAxRkNGNEEwOEE5NTQ1NDAwNTQyNDdCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJNaW5pQnJvd3NlciIgKi87CiAJCQlidWlsZFBoYXNl
cyA9ICgKIAkJCQk4RDExMDcyOTA0ODZDRUI4MDBFNDcwOTAgLyogUmVzb3VyY2VzICovLAorCQkJ
CUJDQkQzOENGMTFCMDhDMDEwMEUwMUU1NCAvKiBDb3B5IFdlYkJ1bmRsZSAqLywKIAkJCQk4RDEx
MDcyQzA0ODZDRUI4MDBFNDcwOTAgLyogU291cmNlcyAqLywKIAkJCQk4RDExMDcyRTA0ODZDRUI4
MDBFNDcwOTAgLyogRnJhbWV3b3JrcyAqLywKIAkJCQlCQzE3NzAxRTExODhERkI0MDA3RDlFOUEg
LyogTWFrZSBMYXVuY2hhYmxlICovLApAQCAtMTYxLDYgKzIxMiw3IEBACiAJCQlidWlsZFJ1bGVz
ID0gKAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQlCQ0JEMzhDNjExQjA4QkE0MDBF
MDFFNTQgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCSk7CiAJCQluYW1lID0gTWluaUJy
b3dzZXI7CiAJCQlwcm9kdWN0SW5zdGFsbFBhdGggPSAiJChIT01FKS9BcHBsaWNhdGlvbnMiOwpA
QCAtMTY4LDYgKzIyMCwyMyBAQAogCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDhEMTEwNzMyMDQ4NkNF
QjgwMEU0NzA5MCAvKiBNaW5pQnJvd3Nlci5hcHAgKi87CiAJCQlwcm9kdWN0VHlwZSA9ICJjb20u
YXBwbGUucHJvZHVjdC10eXBlLmFwcGxpY2F0aW9uIjsKIAkJfTsKKwkJQkNCRDM4MUMxMUIwODk4
MjAwRTAxRTU0IC8qIFdlYkJ1bmRsZSAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBCQ0JEMzgyMTExQjA4OTgzMDBFMDFFNTQgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIldlYkJ1bmRsZSIg
Ki87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQlCQ0JEMzgxOTExQjA4OTgyMDBFMDFFNTQgLyog
UmVzb3VyY2VzICovLAorCQkJCUJDQkQzODFBMTFCMDg5ODIwMEUwMUU1NCAvKiBTb3VyY2VzICov
LAorCQkJCUJDQkQzODFCMTFCMDg5ODIwMEUwMUU1NCAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsK
KwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJ
CW5hbWUgPSBXZWJCdW5kbGU7CisJCQlwcm9kdWN0TmFtZSA9IFdlYkJ1bmRsZTsKKwkJCXByb2R1
Y3RSZWZlcmVuY2UgPSBCQ0JEMzgxRDExQjA4OTgyMDBFMDFFNTQgLyogV2ViQnVuZGxlLmJ1bmRs
ZSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuYnVuZGxlIjsK
KwkJfTsKIC8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhQ
cm9qZWN0IHNlY3Rpb24gKi8KQEAgLTE4MSw2ICsyNTAsNyBAQAogCQkJcHJvamVjdFJvb3QgPSAi
IjsKIAkJCXRhcmdldHMgPSAoCiAJCQkJOEQxMTA3MjYwNDg2Q0VCODAwRTQ3MDkwIC8qIE1pbmlC
cm93c2VyICovLAorCQkJCUJDQkQzODFDMTFCMDg5ODIwMEUwMUU1NCAvKiBXZWJCdW5kbGUgKi8s
CiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwpAQCAtMTk3LDYgKzI2
NywxMyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OworCQlCQ0JEMzgxOTExQjA4OTgyMDBFMDFFNTQgLyogUmVzb3VyY2VzICovID0gewor
CQkJaXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIC8qIEVuZCBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
QEAgLTIyOCw4ICszMDUsMjQgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJQkNCRDM4MUExMUIwODk4MjAwRTAxRTU0IC8qIFNvdXJj
ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlCQ0JEMzg0MDExQjA4QTY4MDBF
MDFFNTQgLyogV2ViQnVuZGxlTWFpbi5jIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAvKiBFbmQgUEJYU291cmNl
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCisvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNl
Y3Rpb24gKi8KKwkJQkNCRDM4QzYxMUIwOEJBNDAwRTAxRTU0IC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gQkNC
RDM4MUMxMUIwODk4MjAwRTAxRTU0IC8qIFdlYkJ1bmRsZSAqLzsKKwkJCXRhcmdldFByb3h5ID0g
QkNCRDM4QzUxMUIwOEJBNDAwRTAxRTU0IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJ
fTsKKy8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KKwogLyogQmVnaW4gUEJY
VmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KIAkJMDg5QzE2NUNGRTg0MEUwQ0MwMkFBQzA3IC8qIElu
Zm9QbGlzdC5zdHJpbmdzICovID0gewogCQkJaXNhID0gUEJYVmFyaWFudEdyb3VwOwpAQCAtMjU4
LDYgKzM1MSwzMiBAQAogLyogRW5kIFBCWFZhcmlhbnRHcm91cCBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJQkNCRDM4MUYxMUIwODk4MzAw
RTAxRTU0IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POwor
CQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfR0MgPSBzdXBw
b3J0ZWQ7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJSU5GT1BMSVNUX0ZJ
TEUgPSAiV2ViQnVuZGxlLUluZm8ucGxpc3QiOworCQkJCVBST0RVQ1RfTkFNRSA9IFdlYkJ1bmRs
ZTsKKwkJCQlXUkFQUEVSX0VYVEVOU0lPTiA9IGJ1bmRsZTsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCUJDQkQzODIwMTFCMDg5ODMwMEUwMUU1NCAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZ
RVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJ
CQkJR0NDX0VOQUJMRV9PQkpDX0dDID0gc3VwcG9ydGVkOworCQkJCUlORk9QTElTVF9GSUxFID0g
IldlYkJ1bmRsZS1JbmZvLnBsaXN0IjsKKwkJCQlQUk9EVUNUX05BTUUgPSBXZWJCdW5kbGU7CisJ
CQkJV1JBUFBFUl9FWFRFTlNJT04gPSBidW5kbGU7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7
CisJCX07CiAJCUMwMUZDRjRCMDhBOTU0NTQwMDU0MjQ3QiAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTMxOCw2
ICs0MzcsMTUgQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQlCQ0JEMzgyMTExQjA4OTgz
MDBFMDFFNTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
IldlYkJ1bmRsZSIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQlCQ0JEMzgxRjExQjA4OTgzMDBFMDFFNTQgLyogRGVi
dWcgKi8sCisJCQkJQkNCRDM4MjAxMUIwODk4MzAwRTAxRTU0IC8qIFJlbGVhc2UgKi8sCisJCQkp
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKIAkJQzAxRkNGNEEwOEE5NTQ1NDAwNTQyNDdC
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJNaW5pQnJv
d3NlciIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25m
aWd1cmF0aW9ucyA9ICgKSW5kZXg6IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxl
Z2F0ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxl
Z2F0ZS5tCShyZXZpc2lvbiA2MTE1OSkKKysrIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9B
cHBEZWxlZ2F0ZS5tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAjaW1wb3J0ICJC
cm93c2VyV2luZG93Q29udHJvbGxlci5oIgogI2ltcG9ydCAiQnJvd3NlclN0YXRpc3RpY3NXaW5k
b3dDb250cm9sbGVyLmgiCiAKKyNpbXBvcnQgPFdlYktpdDIvV0tTdHJpbmdDRi5oPgorCiBzdGF0
aWMgTlNTdHJpbmcgKmRlZmF1bHRVUkwgPSBAImh0dHA6Ly93ZWJraXQub3JnLyI7CiAKIEBpbXBs
ZW1lbnRhdGlvbiBCcm93c2VyQXBwRGVsZWdhdGUKQEAgLTQxLDEzICs0MywxOCBAQCAtIChpZClp
bml0CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGN1cnJlbnRQcm9jZXNzTW9kZWwgPSBrV0tQ
cm9jZXNzTW9kZWxTZWNvbmRhcnlQcm9jZXNzOwogCi0gICAgICAgIFdLQ29udGV4dFJlZiB0aHJl
YWRDb250ZXh0ID0gV0tDb250ZXh0Q3JlYXRlV2l0aFByb2Nlc3NNb2RlbChrV0tQcm9jZXNzTW9k
ZWxTZWNvbmRhcnlUaHJlYWQpOworICAgICAgICBDRlN0cmluZ1JlZiBidW5kbGVQYXRoQ0YgPSAo
Q0ZTdHJpbmdSZWYpW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0
YWJsZTpAIldlYkJ1bmRsZS5idW5kbGUiXTsKKyAgICAgICAgV0tTdHJpbmdSZWYgYnVuZGxlUGF0
aCA9IFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKGJ1bmRsZVBhdGhDRik7CisKKyAgICAgICAg
V0tDb250ZXh0UmVmIHRocmVhZENvbnRleHQgPSBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRC
dW5kbGVQYXRoKGtXS1Byb2Nlc3NNb2RlbFNlY29uZGFyeVRocmVhZCwgYnVuZGxlUGF0aCk7CiAg
ICAgICAgIHRocmVhZFBhZ2VOYW1lc3BhY2UgPSBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUodGhyZWFk
Q29udGV4dCk7CiAgICAgICAgIFdLQ29udGV4dFJlbGVhc2UodGhyZWFkQ29udGV4dCk7CiAKLSAg
ICAgICAgV0tDb250ZXh0UmVmIHByb2Nlc3NDb250ZXh0ID0gV0tDb250ZXh0Q3JlYXRlV2l0aFBy
b2Nlc3NNb2RlbChrV0tQcm9jZXNzTW9kZWxTZWNvbmRhcnlQcm9jZXNzKTsKKyAgICAgICAgV0tD
b250ZXh0UmVmIHByb2Nlc3NDb250ZXh0ID0gV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVu
ZGxlUGF0aChrV0tQcm9jZXNzTW9kZWxTZWNvbmRhcnlQcm9jZXNzLCBidW5kbGVQYXRoKTsKICAg
ICAgICAgcHJvY2Vzc1BhZ2VOYW1lc3BhY2UgPSBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUocHJvY2Vz
c0NvbnRleHQpOwogICAgICAgICBXS0NvbnRleHRSZWxlYXNlKHByb2Nlc3NDb250ZXh0KTsKKwor
ICAgICAgICBXS1N0cmluZ1JlbGVhc2UoYnVuZGxlUGF0aCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHNlbGY7CkluZGV4OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIubQkocmV2aXNpb24gNjExNTkpCisrKyBXZWJLaXRUb29scy9N
aW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpA
QCAtMjUsNiArMjUsNyBAQAogCiAjaW1wb3J0ICJCcm93c2VyV2luZG93Q29udHJvbGxlci5oIgog
CisjaW1wb3J0IDxXZWJLaXQyL1dLUGFnZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdDIvV0tT
dHJpbmdDRi5oPgogI2ltcG9ydCA8V2ViS2l0Mi9XS1VSTENGLmg+CiAKQEAgLTE3MCw5ICsxNzEs
OSBAQCBzdGF0aWMgdm9pZCBfZGlkU3RhcnRQcm9ncmVzcyhXS1BhZ2VSZWYgCiAgICAgWyhCcm93
c2VyV2luZG93Q29udHJvbGxlciAqKWNsaWVudEluZm8gZGlkU3RhcnRQcm9ncmVzc107CiB9CiAK
LXN0YXRpYyB2b2lkIF9kaWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZSwgZG91YmxlIHZh
bHVlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQorc3RhdGljIHZvaWQgX2RpZENoYW5nZVByb2dy
ZXNzKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAgIFsoQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIgKiljbGllbnRJbmZvIGRpZENoYW5nZVByb2dyZXNzOnZhbHVl
XTsKKyAgICBbKEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopY2xpZW50SW5mbyBkaWRDaGFuZ2VQ
cm9ncmVzczpXS1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhwYWdlKV07CiB9CiAKIHN0YXRpYyB2
b2lkIF9kaWRGaW5pc2hQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbykKSW5kZXg6IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVu
ZGxlTWFpbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9XZWJC
dW5kbGUvV2ViQnVuZGxlTWFpbi5jCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvTWluaUJy
b3dzZXIvbWFjL1dlYkJ1bmRsZS9XZWJCdW5kbGVNYWluLmMJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQnVuZGxlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUluaXRpYWxpemUuaD4K
Kworc3RhdGljIFdLQnVuZGxlUmVmIGdsb2JhbEJ1bmRsZTsKKwordm9pZCBfZGlkQ3JlYXRlUGFn
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBw
cmludGYoIldLQnVuZGxlQ2xpZW50IC0gZGlkQ3JlYXRlUGFnZVxuIik7Cit9CisKK3ZvaWQgV0tC
dW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSkKK3sKKyAgICBnbG9iYWxCdW5kbGUg
PSBidW5kbGU7CisKKyAgICBXS0J1bmRsZUNsaWVudCBjbGllbnQgPSB7CisgICAgICAgIDAsCisg
ICAgICAgIDAsCisgICAgICAgIF9kaWRDcmVhdGVQYWdlCisgICAgfTsKKyAgICBXS0J1bmRsZVNl
dENsaWVudChidW5kbGUsICZjbGllbnQpOworfQpJbmRleDogV2ViS2l0VG9vbHMvTWluaUJyb3dz
ZXIvd2luL0Jyb3dzZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5pQnJv
d3Nlci93aW4vQnJvd3NlclZpZXcuY3BwCShyZXZpc2lvbiA2MTE1OSkKKysrIFdlYktpdFRvb2xz
L01pbmlCcm93c2VyL3dpbi9Ccm93c2VyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDgg
KzY2LDcgQEAgdm9pZCBCcm93c2VyVmlldzo6Y3JlYXRlKFJFQ1Qgd2ViVmlld1JlYwogCiAgICAg
Ym9vbCBpc1NoaWZ0S2V5RG93biA9IDo6R2V0S2V5U3RhdGUoVktfU0hJRlQpICYgSElHSF9CSVRf
TUFTS19TSE9SVDsKIAotICAgIC8vV0tDb250ZXh0UmVmIGNvbnRleHQgPSBXS0NvbnRleHRDcmVh
dGVXaXRoUHJvY2Vzc01vZGVsKGlzU2hpZnRLZXlEb3duID8ga1dLUHJvY2Vzc01vZGVsU2Vjb25k
YXJ5VGhyZWFkIDoga1dLUHJvY2Vzc01vZGVsU2Vjb25kYXJ5UHJvY2Vzcyk7Ci0gICAgV0tDb250
ZXh0UmVmIGNvbnRleHQgPSBXS0NvbnRleHRDcmVhdGVXaXRoUHJvY2Vzc01vZGVsKGtXS1Byb2Nl
c3NNb2RlbFNlY29uZGFyeVRocmVhZCk7CisgICAgV0tDb250ZXh0UmVmIGNvbnRleHQgPSBXS0Nv
bnRleHRDcmVhdGUoaXNTaGlmdEtleURvd24gPyBrV0tQcm9jZXNzTW9kZWxTZWNvbmRhcnlUaHJl
YWQgOiBrV0tQcm9jZXNzTW9kZWxTZWNvbmRhcnlQcm9jZXNzKTsKICAgICBXS1BhZ2VOYW1lc3Bh
Y2VSZWYgcGFnZU5hbWVzcGFjZSA9IFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShjb250ZXh0KTsKIAog
ICAgIG1fd2ViVmlldyA9IFdLVmlld0NyZWF0ZSh3ZWJWaWV3UmVjdCwgcGFnZU5hbWVzcGFjZSwg
cGFyZW50V2luZG93LT53aW5kb3coKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>