<?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>98543</bug_id>
          
          <creation_ts>2012-10-05 11:44:43 -0700</creation_ts>
          <short_desc>Add a basic NetworkProcess.app to the WebKit2 build</short_desc>
          <delta_ts>2012-10-12 10:13:17 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98537</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>735834</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-05 11:44:43 -0700</bug_when>
    <thetext>Add a basic NetworkProcess.app to the WebKit2 build

I intend to make a few changes to cross platform WK2 code that will show up in all ports.

I&apos;ll also add an actual new NetworkProcess.app to the Mac build only, since I&apos;m certainly not an expert in getting a new process running on any other port.

Using the NetworkProcess will be completely optional and other ports that wish to adopt it can bring it up in the build on their own schedule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736292</commentid>
    <comment_count>1</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-06 15:13:28 -0700</bug_when>
    <thetext>You could just call it NetProcess to match the brevity of WebProcess and UIProcess (but I guess PluginProcess is similarly long).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736447</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-07 17:19:09 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; You could just call it NetProcess to match the brevity of WebProcess and UIProcess (but I guess PluginProcess is similarly long).

Ick. I prefer Network if we are voting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736701</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-08 08:41:02 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; You could just call it NetProcess to match the brevity of WebProcess and UIProcess (but I guess PluginProcess is similarly long).
&gt; 
&gt; Ick. I prefer Network if we are voting.

Me too!!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740982</commentid>
    <comment_count>4</comment_count>
      <attachid>168440</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-12 09:47:26 -0700</bug_when>
    <thetext>Created attachment 168440
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740984</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-12 09:50:07 -0700</bug_when>
    <thetext>Attachment 168440 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/NetworkProcess/NetworkProcess.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740989</commentid>
    <comment_count>6</comment_count>
      <attachid>168440</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-12 09:53:42 -0700</bug_when>
    <thetext>Comment on attachment 168440
Patch v1

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

&gt; Source/WebKit2/NetworkProcess/NetworkProcess.h:33
&gt; +#include &lt;wtf/text/WTFString.h&gt;

This should not be needed.

&gt; Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm:384
&gt; +    switch(launchOptions.processType) {
&gt; +    case ProcessLauncher::WebProcess:
&gt; +        processPath = [webKit2Bundle pathForAuxiliaryExecutable:@&quot;WebProcess.app&quot;];
&gt; +        break;
&gt; +    case ProcessLauncher::PluginProcess:
&gt; +        processPath = [webKit2Bundle pathForAuxiliaryExecutable:@&quot;PluginProcess.app&quot;];
&gt; +        break;
&gt; +#if ENABLE(NETWORK_PROCESS)
&gt; +    case ProcessLauncher::NetworkProcess:
&gt; +        processPath = [webKit2Bundle pathForAuxiliaryExecutable:@&quot;NetworkProcess.app&quot;];
&gt; +        break;
&gt; +#endif
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();

The switch needs a space after it.  Also, I would rather not have the default, but rather handle each case.

&gt; Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:49
&gt; +    launchOptions.architecture = ProcessLauncher::LaunchOptions::MatchCurrentArchitecture;
&gt; +    launchOptions.executableHeap = false;
&gt; +    launchOptions.useXPC = false;

I believe these are mac specific and should go in NetworkProcessProxyMac.mm file.

&gt; Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:38
&gt; +class NetworkProcessManager;

Does this class exist?

&gt; Source/WebKit2/UIProcess/WebContext.h:35
&gt; +#if ENABLE(NETWORK_PROCESS)
&gt; +#include &quot;NetworkProcessProxy.h&quot;
&gt; +#endif

Please move this to the bottom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740991</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-12 09:55:46 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 168440 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168440&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/NetworkProcess/NetworkProcess.h:33
&gt; &gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; This should not be needed.

True, not yet.  Will fix.

&gt; &gt; Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm:384
&gt; &gt; +    switch(launchOptions.processType) {
&gt; &gt; +    case ProcessLauncher::WebProcess:
&gt; &gt; +        processPath = [webKit2Bundle pathForAuxiliaryExecutable:@&quot;WebProcess.app&quot;];
&gt; &gt; +        break;
&gt; &gt; +    case ProcessLauncher::PluginProcess:
&gt; &gt; +        processPath = [webKit2Bundle pathForAuxiliaryExecutable:@&quot;PluginProcess.app&quot;];
&gt; &gt; +        break;
&gt; &gt; +#if ENABLE(NETWORK_PROCESS)
&gt; &gt; +    case ProcessLauncher::NetworkProcess:
&gt; &gt; +        processPath = [webKit2Bundle pathForAuxiliaryExecutable:@&quot;NetworkProcess.app&quot;];
&gt; &gt; +        break;
&gt; &gt; +#endif
&gt; &gt; +    default:
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; The switch needs a space after it.  Also, I would rather not have the default, but rather handle each case.

It does handle each case.  Will fix.

&gt; &gt; Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:49
&gt; &gt; +    launchOptions.architecture = ProcessLauncher::LaunchOptions::MatchCurrentArchitecture;
&gt; &gt; +    launchOptions.executableHeap = false;
&gt; &gt; +    launchOptions.useXPC = false;
&gt; 
&gt; I believe these are mac specific and should go in NetworkProcessProxyMac.mm file.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h:38
&gt; &gt; +class NetworkProcessManager;
&gt; 
&gt; Does this class exist?

Not in this patch, but in later patches in my tree.  Trying to split this up...  will remove.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebContext.h:35
&gt; &gt; +#if ENABLE(NETWORK_PROCESS)
&gt; &gt; +#include &quot;NetworkProcessProxy.h&quot;
&gt; &gt; +#endif
&gt; 
&gt; Please move this to the bottom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740998</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-12 10:01:04 -0700</bug_when>
    <thetext>(In reply to comment #6)

&gt; &gt; Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp:49
&gt; &gt; +    launchOptions.architecture = ProcessLauncher::LaunchOptions::MatchCurrentArchitecture;
&gt; &gt; +    launchOptions.executableHeap = false;
&gt; &gt; +    launchOptions.useXPC = false;
&gt; 
&gt; I believe these are mac specific and should go in NetworkProcessProxyMac.mm file.

They are Mac specific, but are in the shared constructor.  The other processes follow this pattern with PLATFORM(MAC) ifdefs.  I implemented that same pattern here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741000</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-12 10:04:40 -0700</bug_when>
    <thetext>Just for a sanity check will wait for qt-wk2 EWS to finish</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741005</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-12 10:13:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/131196</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168440</attachid>
            <date>2012-10-12 09:47:26 -0700</date>
            <delta_ts>2012-10-12 09:53:42 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>46115</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1OTljOGE0Li5iYmJhMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTItMTAtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBhIGJhc2ljIE5ldHdvcmtQcm9jZXNzLmFwcCB0byB0aGUgV2ViS2l0MiBidWlsZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg1NDMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5n
ZSBzZXRzIHVwIHRoZSBNYWMgYnVpbGQgdG8gaW5jbHVkZSBhIE5ldHdvcmtQcm9jZXNzLmFwcC4K
KyAgICAgICAgSXQgYWxzbyBsYXVuY2hlcyB0aGlzIGFwcCB3aGVuIHRoZSBmaXJzdCBXZWJQcm9j
ZXNzIGlzIGNyZWF0ZWQuCisgICAgICAgIEl0IHRoZW4gcXVpdHMgdGhpcyBhcHAgd2hlbiB0aGUg
VUlQcm9jZXNzIHRlcm1pbmF0ZXMuCisKKyAgICAgICAgVGhlIGFwcCwgaXQgZG9lcyBub3RoaW5n
LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtTWNCYWluCisKKyAgICAgICAgUHVyZSBw
cm9qZWN0IGZpbGUvYnVpbGQgc3lzdGVtIHN0dWZmOgorICAgICAgICAqIENvbmZpZ3VyYXRpb25z
L05ldHdvcmtQcm9jZXNzLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViS2l0MlByZWZpeC5oOgorCisgICAg
ICAgIEJhc2ljIFVJUHJvY2VzcyBzaWRlIG9mIHRoaW5nczoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6fk5ldHdvcmtQcm9jZXNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c3luY01lc3NhZ2VT
ZW5kVGltZWRPdXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRG
aW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTmV0d29ya1By
b2Nlc3NQcm94eSk6CisKKyAgICAgICAgQmFzaWMgTmV0d29ya1Byb2Nlc3Mgc2lkZSBvZiB0aGlu
Z3M6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5mby5wbGlzdDogQWRkZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaGFyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6fk5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2hvdWxkVGVybWluYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRp
ZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzeW5jTWVzc2Fn
ZVNlbmRUaW1lZE91dCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChOZXR3b3JrUHJvY2Vzcyk6CisKKyAgICAgICAgQWRkIHRoZSBtYWluIG1ldGhvZCBmb3IgdGhl
IE5ldHdvcmtQcm9jZXNzIGl0c2VsZjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYktpdE1haW4u
Y3BwOgorICAgICAgICAoV2ViS2l0TWFpbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3NNYWluLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFpbik6CisKKyAg
ICAgICAgVGVhY2ggUHJvY2Vzc0xhdW5jaGVyIGFib3V0IHRoZSBuZXcgYXBwIHR5cGU6CisgICAg
ICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5cGVBc1N0cmluZyk6CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Z2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OmNyZWF0ZVByb2Nlc3MpOgorCisgICAgICAgIExhdW5jaCB0aGUgTmV0d29ya1Byb2Nlc3Mg
d2hlbiB3ZSBsYXVuY2ggdGhlIGZpcnN0IFdlYlByb2Nlc3M6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjplbnN1cmVOZXR3
b3JrUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAg
KFdlYkNvbnRleHQpOgorCiAyMDEyLTEwLTEyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMxMTYw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvTmV0d29ya1Byb2Nl
c3MueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9OZXR3b3JrUHJvY2Vz
cy54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWJhYjM0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvTmV0d29ya1By
b2Nlc3MueGNjb25maWcKQEAgLTAsMCArMSwyOSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8v
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorCisjaW5jbHVkZSAiQmFzZVRhcmdldC54Y2NvbmZpZyIKKworR0NDX0VOQUJM
RV9PQkpDX0dDID0gTk87CitQUk9EVUNUX05BTUUgPSBOZXR3b3JrUHJvY2VzczsKK0lORk9QTElT
VF9GSUxFID0gTmV0d29ya1Byb2Nlc3MvSW5mby5wbGlzdDsKK0lOU1RBTExfUEFUSCA9ICQoV0VC
S0lUMl9GUkFNRVdPUktTX0RJUikvV2ViS2l0Mi5mcmFtZXdvcms7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9JbmZvLnBsaXN0IGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvSW5mby5wbGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jYTUwYjNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvSW5mby5wbGlzdApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElT
VCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0
ZCI+Cis8cGxpc3QgdmVyc2lvbj0iMS4wIj4KKzxkaWN0PgorCTxrZXk+Q0ZCdW5kbGVFeGVjdXRh
YmxlPC9rZXk+CisJPHN0cmluZz4ke0VYRUNVVEFCTEVfTkFNRX08L3N0cmluZz4KKwk8a2V5PkNG
QnVuZGxlR2V0SW5mb1N0cmluZzwva2V5PgorCTxzdHJpbmc+JHtCVU5ETEVfVkVSU0lPTn0sIENv
cHlyaWdodCAyMDAzLTIwMTIgQXBwbGUgSW5jLjwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVJZGVu
dGlmaWVyPC9rZXk+CisJPHN0cmluZz5jb20uYXBwbGUuV2ViS2l0LiR7UFJPRFVDVF9OQU1FfTwv
c3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZlcnNpb248L2tleT4KKwk8c3Ry
aW5nPjYuMDwvc3RyaW5nPgorCTxrZXk+Q0ZCdW5kbGVOYW1lPC9rZXk+CisJPHN0cmluZz4ke1BS
T0RVQ1RfTkFNRX08L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlUGFja2FnZVR5cGU8L2tleT4KKwk8
c3RyaW5nPkFQUEw8L3N0cmluZz4KKwk8a2V5PkNGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nPC9r
ZXk+CisJPHN0cmluZz4ke1NIT1JUX1ZFUlNJT05fU1RSSU5HfTwvc3RyaW5nPgorCTxrZXk+Q0ZC
dW5kbGVWZXJzaW9uPC9rZXk+CisJPHN0cmluZz4ke0JVTkRMRV9WRVJTSU9OfTwvc3RyaW5nPgor
CTxrZXk+TFNGaWxlUXVhcmFudGluZUVuYWJsZWQ8L2tleT4KKwk8dHJ1ZS8+CisJPGtleT5MU01p
bmltdW1TeXN0ZW1WZXJzaW9uPC9rZXk+CisJPHN0cmluZz4ke01BQ09TWF9ERVBMT1lNRU5UX1RB
UkdFVH08L3N0cmluZz4KKwk8a2V5PkxTVUlFbGVtZW50PC9rZXk+CisJPHRydWUvPgorCTxrZXk+
TlNQcmluY2lwYWxDbGFzczwva2V5PgorCTxzdHJpbmc+TlNBcHBsaWNhdGlvbjwvc3RyaW5nPgor
PC9kaWN0PgorPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmYz
Zjk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKworI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkF0
dGFjaG1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitOZXR3b3JrUHJvY2VzcyYgTmV0
d29ya1Byb2Nlc3M6OnNoYXJlZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChOZXR3b3Jr
UHJvY2VzcywgbmV0d29ya1Byb2Nlc3MsICgpKTsKKyAgICByZXR1cm4gbmV0d29ya1Byb2Nlc3M7
Cit9CisKK05ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcygpCit7Cit9CisKK05ldHdvcmtQ
cm9jZXNzOjp+TmV0d29ya1Byb2Nlc3MoKQoreworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpp
bml0aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgc2VydmVySWRlbnRpZmll
ciwgV2ViQ29yZTo6UnVuTG9vcCogcnVuTG9vcCkKK3sKKyAgICBBU1NFUlQoIW1fdWlDb25uZWN0
aW9uKTsKKworICAgIG1fdWlDb25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRl
Q2xpZW50Q29ubmVjdGlvbihzZXJ2ZXJJZGVudGlmaWVyLCB0aGlzLCBydW5Mb29wKTsKKyAgICBt
X3VpQ29ubmVjdGlvbi0+c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhk
aWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSk7CisgICAgbV91aUNvbm5lY3Rpb24tPm9wZW4o
KTsKK30KKworYm9vbCBOZXR3b3JrUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3Nh
Z2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7Cit9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKQoreworICAgIC8v
IEVpdGhlciB0aGUgY29ubmVjdGlvbiB0byB0aGUgVUlQcm9jZXNzIG9yIGEgY29ubmVjdGlvbiB0
byBhIFdlYlByb2Nlc3MgaGFzIGdvbmUgYXdheS4KKyAgICAvLyBJbiB0aGUgZnV0dXJlIHdlJ2xs
IGRvIGFwcHJvcHJpYXRlIGNsZWFudXAgYW5kIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCB3ZSB3YW50
IHRvIGtlZXAKKyAgICAvLyB0aGUgTmV0d29ya1Byb2Nlc3Mgb3Blbi4KKyAgICAvLyBGb3Igbm93
IHdlJ2xsIGFsd2F5cyBjbG9zZSBpdC4KKyAgICBSdW5Mb29wOjpjdXJyZW50KCktPnN0b3AoKTsK
K30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQpCit7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLT5zdG9wKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnN5bmNNZXNzYWdlU2Vu
ZFRpbWVkT3V0KENvcmVJUEM6OkNvbm5lY3Rpb24qKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi43OGViMGZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMCwwICsxLDY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBOZXR3b3JrUHJvY2Vzc19oCisjZGVmaW5lIE5ldHdvcmtQcm9jZXNz
X2gKKworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNpbmNsdWRlICJDaGlsZFByb2Nl
c3MuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgUnVuTG9vcDsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzIDogQ2hpbGRQcm9jZXNz
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrUHJvY2Vzcyk7CitwdWJsaWM6Cisg
ICAgc3RhdGljIE5ldHdvcmtQcm9jZXNzJiBzaGFyZWQoKTsKKworICAgIHZvaWQgaW5pdGlhbGl6
ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpSdW5Mb29wKik7CisK
K3ByaXZhdGU6CisgICAgTmV0d29ya1Byb2Nlc3MoKTsKKyAgICB+TmV0d29ya1Byb2Nlc3MoKTsK
KworICAgIC8vIENoaWxkUHJvY2VzcworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZXJtaW5hdGUo
KTsKKworICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xv
c2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCk7Cisg
ICAgdmlydHVhbCB2b2lkIHN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KENvcmVJUEM6OkNvbm5lY3Rp
b24qKTsKKworICAgIC8vIFRoZSBjb25uZWN0aW9uIHRvIHRoZSBVSSBwcm9jZXNzLgorICAgIFJl
ZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX3VpQ29ubmVjdGlvbjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKworI2Vu
ZGlmIC8vIE5ldHdvcmtQcm9jZXNzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzTWFpbi5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NNYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZWU1NWEzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzTWFpbi5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIE5ldHdvcmtQcm9jZXNzTWFpbl9oCisjZGVmaW5lIE5ldHdvcmtQcm9jZXNzTWFp
bl9oCisKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KyAgICAKK2NsYXNzIENvbW1hbmRMaW5lOworCitpbnQgTmV0d29ya1Byb2Nlc3NNYWluKGNvbnN0
IENvbW1hbmRMaW5lJik7CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNlbmRpZiAvLyBOZXR3b3JrUHJvY2Vzc01haW5f
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3
b3JrUHJvY2Vzc01haW5NYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NTM3MTI2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NNYWluLmgiCisK
KyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCisjaW1wb3J0ICJDb21tYW5kTGluZS5oIgor
I2ltcG9ydCAiRW52aXJvbm1lbnRVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIk5ldHdvcmtQcm9jZXNz
LmgiCisjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KKyNpbXBvcnQgPFdlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgorI2ltcG9ydCA8bWFjaC9tYWNoX2Vycm9yLmg+CisjaW1wb3J0IDxydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbXBvcnQgPHNlcnZlcnMvYm9vdHN0cmFwLmg+Cisj
aW1wb3J0IDxzdGRpby5oPgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCisjZGVmaW5lIFNIT1dfQ1JBU0hfUkVQT1JURVIgMQorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEZJWE1F
OiBUaGVyZSBpcyBtdWNoIGNvZGUgaGVyZSB0aGF0IGlzIGR1cGxpY2F0ZWQgaW4gV2ViUHJvY2Vz
c01haW5NYWMubW0sIHdlIHNob3VsZCBhZGQgYSBzaGFyZWQgYmFzZSBjbGFzcyB3aGVyZQorLy8g
d2UgY2FuIHB1dCBldmVyeXRoaW5nLgorCitpbnQgTmV0d29ya1Byb2Nlc3NNYWluKGNvbnN0IENv
bW1hbmRMaW5lJiBjb21tYW5kTGluZSkKK3sKKyAgICBTdHJpbmcgc2VydmljZU5hbWUgPSBjb21t
YW5kTGluZVsic2VydmljZW5hbWUiXTsKKyAgICBpZiAoc2VydmljZU5hbWUuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIAorICAgIC8vIEdldCB0aGUgc2VydmVy
IHBvcnQuCisgICAgbWFjaF9wb3J0X3Qgc2VydmVyUG9ydDsKKyAgICBrZXJuX3JldHVybl90IGty
ID0gYm9vdHN0cmFwX2xvb2tfdXAoYm9vdHN0cmFwX3BvcnQsIHNlcnZpY2VOYW1lLnV0ZjgoKS5k
YXRhKCksICZzZXJ2ZXJQb3J0KTsKKyAgICBpZiAoa3IpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJib290c3RyYXBfbG9va191cCByZXN1bHQ6ICVzICgleClcbiIsIG1hY2hfZXJyb3Jfc3RyaW5n
KGtyKSwga3IpOworICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0KKworICAgIFN0
cmluZyBsb2NhbGl6YXRpb24gPSBjb21tYW5kTGluZVsibG9jYWxpemF0aW9uIl07CisgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBjZkxvY2FsaXphdGlvbihBZG9wdENGLCBDRlN0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGxvY2Fs
aXphdGlvbi5jaGFyYWN0ZXJzKCkpLCBsb2NhbGl6YXRpb24ubGVuZ3RoKCkpKTsKKyAgICBpZiAo
Y2ZMb2NhbGl6YXRpb24pCisgICAgICAgIFdLU2V0RGVmYXVsdExvY2FsaXphdGlvbihjZkxvY2Fs
aXphdGlvbi5nZXQoKSk7CisKKyNpZiAhU0hPV19DUkFTSF9SRVBPUlRFUgorICAgIC8vIEluc3Rh
bGxzIHNpZ25hbCBoYW5kbGVycyB0aGF0IGV4aXQgb24gYSBjcmFzaCBzbyB0aGF0IENyYXNoUmVw
b3J0ZXIgZG9lcyBub3Qgc2hvdyB1cC4KKyAgICBzaWduYWwoU0lHSUxMLCBfZXhpdCk7CisgICAg
c2lnbmFsKFNJR0ZQRSwgX2V4aXQpOworICAgIHNpZ25hbChTSUdCVVMsIF9leGl0KTsKKyAgICBz
aWduYWwoU0lHU0VHViwgX2V4aXQpOworI2VuZGlmCisKKworICAgIEpTQzo6aW5pdGlhbGl6ZVRo
cmVhZGluZygpOworICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICBSdW5Mb29w
Ojppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIG5ldHdv
cmsgcHJvY2VzcyBjb25uZWN0aW9uLgorICAgIE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKS5pbml0
aWFsaXplKENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoc2VydmVyUG9ydCksIFJ1bkxv
b3A6Om1haW4oKSk7CisKKyAgICBbTlNBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl07CisK
KyAgICBSdW5Mb29wOjpydW4oKTsKKworICAgIHJldHVybiAwOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCmlu
ZGV4IGJhMjJkZGEuLmY3OTBkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwCkBAIC03NSw2ICs3NSw4IEBAIGNvbnN0
IGNoYXIqIFByb2Nlc3NMYXVuY2hlcjo6cHJvY2Vzc1R5cGVBc1N0cmluZyhQcm9jZXNzVHlwZSBw
cm9jZXNzVHlwZSkKICAgICAgICAgcmV0dXJuICJ3ZWJwcm9jZXNzIjsKICAgICBjYXNlIFBsdWdp
blByb2Nlc3M6CiAgICAgICAgIHJldHVybiAicGx1Z2lucHJvY2VzcyI7CisgICAgY2FzZSBOZXR3
b3JrUHJvY2VzczoKKyAgICAgICAgcmV0dXJuICJuZXR3b3JrcHJvY2VzcyI7CiAgICAgfQogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05Myw2ICs5NSwxMSBAQCBib29sIFByb2Nlc3NM
YXVuY2hlcjo6Z2V0UHJvY2Vzc1R5cGVGcm9tU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZywgUHJv
Y2Vzc1R5cGUmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGlmICghc3RyY21w
KHN0cmluZywgIm5ldHdvcmtwcm9jZXNzIikpIHsKKyAgICAgICAgcHJvY2Vzc1R5cGUgPSBOZXR3
b3JrUHJvY2VzczsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
UHJvY2Vzc0xhdW5jaGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJv
Y2Vzc0xhdW5jaGVyLmgKaW5kZXggNTk0NWUxZS4uZmY2MDBjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaApAQCAtNDgsNyAr
NDgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgZW51bSBQcm9jZXNzVHlwZSB7CiAgICAgICAgIFdl
YlByb2Nlc3MsCi0gICAgICAgIFBsdWdpblByb2Nlc3MKKyAgICAgICAgUGx1Z2luUHJvY2VzcywK
KyAgICAgICAgTmV0d29ya1Byb2Nlc3MKICAgICB9OwogCiAgICAgc3RydWN0IExhdW5jaE9wdGlv
bnMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Q
cm9jZXNzTGF1bmNoZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQppbmRleCA0MDEyNDRiLi42YmI1MTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nl
c3NMYXVuY2hlck1hYy5tbQpAQCAtMzY2LDcgKzM2NiwyNCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVQ
cm9jZXNzKGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9u
cywgYgogICAgIENTdHJpbmcgbG9jYWxpemF0aW9uID0gU3RyaW5nKGNmTG9jYWxpemF0aW9uLmdl
dCgpKS51dGY4KCk7CiAKICAgICBOU0J1bmRsZSAqd2ViS2l0MkJ1bmRsZSA9IFtOU0J1bmRsZSBi
dW5kbGVXaXRoSWRlbnRpZmllcjpAImNvbS5hcHBsZS5XZWJLaXQyIl07Ci0gICAgTlNTdHJpbmcg
KnByb2Nlc3NQYXRoID0gW3dlYktpdDJCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6
KGxhdW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc0xhdW5jaGVyOjpQbHVnaW5Qcm9j
ZXNzID8gQCJQbHVnaW5Qcm9jZXNzLmFwcCIgOiBAIldlYlByb2Nlc3MuYXBwIildOworCisgICAg
TlNTdHJpbmcgKnByb2Nlc3NQYXRoOworICAgIHN3aXRjaChsYXVuY2hPcHRpb25zLnByb2Nlc3NU
eXBlKSB7CisgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OldlYlByb2Nlc3M6CisgICAgICAgIHBy
b2Nlc3NQYXRoID0gW3dlYktpdDJCdW5kbGUgcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJX
ZWJQcm9jZXNzLmFwcCJdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFByb2Nlc3NMYXVuY2hl
cjo6UGx1Z2luUHJvY2VzczoKKyAgICAgICAgcHJvY2Vzc1BhdGggPSBbd2ViS2l0MkJ1bmRsZSBw
YXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIlBsdWdpblByb2Nlc3MuYXBwIl07CisgICAgICAg
IGJyZWFrOworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisgICAgY2FzZSBQcm9jZXNzTGF1
bmNoZXI6Ok5ldHdvcmtQcm9jZXNzOgorICAgICAgICBwcm9jZXNzUGF0aCA9IFt3ZWJLaXQyQnVu
ZGxlIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiTmV0d29ya1Byb2Nlc3MuYXBwIl07Cisg
ICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorCiAgICAgTlNTdHJpbmcgKmZyYW1ld29ya0V4ZWN1dGFibGVQYXRo
ID0gW3dlYktpdDJCdW5kbGUgZXhlY3V0YWJsZVBhdGhdOwogICAgIE5TU3RyaW5nICpwcm9jZXNz
QXBwRXhlY3V0YWJsZVBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOnByb2Nlc3NQYXRo
XSBleGVjdXRhYmxlUGF0aF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMGI3N2NkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0wLDAgKzEsOTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NQcm94eS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CisKKyNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gTmV0d29ya1By
b2Nlc3NQcm94eTo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzTWFuYWdlciopCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBOZXR3b3JrUHJvY2Vzc1Byb3h5KDApKTsKK30KKworTmV0d29ya1Byb2Nl
c3NQcm94eTo6TmV0d29ya1Byb2Nlc3NQcm94eShOZXR3b3JrUHJvY2Vzc01hbmFnZXIqKQorewor
ICAgIFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyBsYXVuY2hPcHRpb25zOworICAgIGxh
dW5jaE9wdGlvbnMucHJvY2Vzc1R5cGUgPSBQcm9jZXNzTGF1bmNoZXI6Ok5ldHdvcmtQcm9jZXNz
OworCisgICAgbGF1bmNoT3B0aW9ucy5hcmNoaXRlY3R1cmUgPSBQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnM6Ok1hdGNoQ3VycmVudEFyY2hpdGVjdHVyZTsKKyAgICBsYXVuY2hPcHRpb25z
LmV4ZWN1dGFibGVIZWFwID0gZmFsc2U7CisgICAgbGF1bmNoT3B0aW9ucy51c2VYUEMgPSBmYWxz
ZTsKKworICAgIG1fcHJvY2Vzc0xhdW5jaGVyID0gUHJvY2Vzc0xhdW5jaGVyOjpjcmVhdGUodGhp
cywgbGF1bmNoT3B0aW9ucyk7Cit9CisKK05ldHdvcmtQcm9jZXNzUHJveHk6On5OZXR3b3JrUHJv
Y2Vzc1Byb3h5KCkKK3sKKworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2Vp
dmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciopCit7CisKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikKK3sKKworfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlEKQoreworCit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c3luY01lc3NhZ2VTZW5kVGltZWRPdXQoQ29yZUlQQzo6Q29ubmVjdGlvbiopCit7CisKK30K
Kwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xh
dW5jaGVyKiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRp
ZmllcikKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7CisKKyAgICBpZiAoQ29yZUlQQzo6
Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpIHsKKyAg
ICAgICAgLy8gRklYTUU6IERvIGJldHRlciBjbGVhbnVwIGhlcmUuCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVT
ZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBSdW5Mb29wOjptYWlu
KCkpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtX2Nvbm5lY3Rpb24tPnNldFNob3VsZENsb3Nl
Q29ubmVjdGlvbk9uTWFjaEV4Y2VwdGlvbnMoKTsKKyNlbmRpZgorCisgICAgbV9jb25uZWN0aW9u
LT5vcGVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xZmVmZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIE5ldHdvcmtQcm9jZXNzUHJveHlfaAorI2RlZmluZSBOZXR3b3JrUHJv
Y2Vzc1Byb3h5X2gKKworI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCisKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtQcm9jZXNzTWFuYWdlcjsKKworY2xhc3MgTmV0
d29ya1Byb2Nlc3NQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtQcm9jZXNzUHJveHk+
LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiBjcmVh
dGUoTmV0d29ya1Byb2Nlc3NNYW5hZ2VyKik7CisgICAgfk5ldHdvcmtQcm9jZXNzUHJveHkoKTsK
KworcHJpdmF0ZToKKyAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KE5ldHdvcmtQcm9jZXNzTWFuYWdl
ciopOworCisgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
bG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlEKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3luY01lc3NhZ2VTZW5kVGltZWRPdXQoQ29yZUlQQzo6Q29ubmVj
dGlvbiopOworCisgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIpOworCisgICAgLy8gVGhlIG5ldHdvcmsgcHJvY2VzcyBtYW5hZ2VyLgor
ICAgIE5ldHdvcmtQcm9jZXNzTWFuYWdlciogbV9uZXR3b3JrUHJvY2Vzc01hbmFnZXI7CisKKyAg
ICAvLyBUaGUgY29ubmVjdGlvbiB0byB0aGUgbmV0d29yayBwcm9jZXNzLgorICAgIFJlZlB0cjxD
b3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisKKyAgICAvLyBUaGUgcHJvY2VzcyBs
YXVuY2hlciBmb3IgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICBSZWZQdHI8UHJvY2Vzc0xhdW5j
aGVyPiBtX3Byb2Nlc3NMYXVuY2hlcjsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorCisjZW5kaWYgLy8gTmV0d29ya1By
b2Nlc3NQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXgg
MmZjZWFlNy4uNjI2NTdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cApAQCAtNDIzLDcgKzQyMywxMCBAQCB2b2lkIFdlYkNvbnRleHQ6Ondhcm1Jbml0aWFsUHJvY2Vz
cygpCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKIHZvaWQgV2ViQ29udGV4dDo6ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgaWYgKG1f
bmV0d29ya1Byb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbmV0d29ya1Byb2Nlc3Mg
PSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGUoMCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZjFkYmE3Zi4uZGRlNTdjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0zMCw2ICszMCw5IEBACiAjaW5jbHVkZSAi
R2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCisjZW5kaWYKICNpbmNsdWRlICJQbHVnaW5J
bmZvU3RvcmUuaCIKICNpbmNsdWRlICJQcm9jZXNzTW9kZWwuaCIKICNpbmNsdWRlICJWaXNpdGVk
TGlua1Byb3ZpZGVyLmgiCkBAIC0zNzEsNiArMzc0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
cHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZDsKIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CisgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IG1fbmV0d29ya1Byb2Nlc3M7CiAgICAg
Ym9vbCBtX3VzZXNOZXR3b3JrUHJvY2VzczsKICNlbmRpZgogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc1MTMyOTkuLjQw
ZDc0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE4LDYgKzE4LDcgQEAKIAkJCWRlcGVuZGVuY2llcyA9ICgKIAkJCQkxQTUw
REIzQzExMEEzQzE5MDAwRDNGRTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlCQ0RF
MEFDMTEzMjcyNzEyMDAxMjU5RkIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCQk1MTBD
Qzg0ODE2MTNDODUzMDBEMDNFRDMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlCQ0FF
OURGRDE2MEMwQUIwMDBBMzMyMTcgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlCQ0E4
RDQ2ODE1QkNFMEQ2MDA5REMxRjEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCSk7CkBA
IC0zNDIsNiArMzQzLDggQEAKIAkJM0Y4N0I5QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9y
Q2hvb3NlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzRjg3QjlCRjE1ODk0MEQ4MDA5MEZGNjIgLyogV2ViQ29sb3JDaG9vc2VyUHJveHkuaCAq
LzsgfTsKIAkJNEY2MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNjAxNDMw
MTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggKi87IH07CiAJCTUxMDIx
RTlDMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDIxRTlCMTJCMTY3ODgw
MDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSAqLzsgfTsKKwkJNTEwQ0M4NDkx
NjEzQzg1QzAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmFwcCBpbiBDb3B5RmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M4MEUxNjEzQzc5OTAwRDAzRUQzIC8q
IE5ldHdvcmtQcm9jZXNzLmFwcCAqLzsgfTsKKwkJNTEwQ0M4NEYxNjEzQzkyQzAwRDAzRUQzIC8q
IE1haW5NYWNQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBNkZBMzEwMTFFMzkyMUUwMERCMTM3MSAvKiBNYWluTWFjUHJvY2Vzcy5jcHAg
Ki87IH07CiAJCTUxMEZCQjlBMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1E
YXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MEZCQjk4MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLzsg
fTsKIAkJNTEwRkJCOUIxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEZCQjk5
MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmggKi87IH07CiAJCTUx
MTBBRTBDMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEwQUUwQTEzM0MxNkNCMDA3Mjcx
N0EgLyogV0tJY29uRGF0YWJhc2UuY3BwICovOyB9OwpAQCAtNDAzLDYgKzQwNiwxMiBAQAogCQk1
MTU3OEI4MzEyMDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdl
YkRhdGEuaCAqLzsgfTsKIAkJNTE2MEJGRTExMzM4MURGOTAwOTE4OTk5IC8qIExvZ2dpbmcubWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEJG
RTAxMzM4MURGOTAwOTE4OTk5IC8qIExvZ2dpbmcubWFjLm1tICovOyB9OwogCQk1MTZBNEE1RDEy
MEEyQ0NEMDBDMDVCN0YgLyogV2ViRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5o
ICovOyB9OworCQk1MTc5NTU2NTE2Mjg3NkM1MDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NNYWlu
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
Q0M3REQxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbSAqLzsgfTsK
KwkJNTE3OTU1NjgxNjI4NzZDRjAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMENDN0RGMTYxMzhFMjkw
MEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5jcHAgKi87IH07CisJCTUxNzk1NTY5MTYyODc2RUUw
MEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc01haW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMENDN0UxMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3Jr
UHJvY2Vzc01haW4uaCAqLzsgfTsKKwkJNTE3OTU1NkExNjI4NzZGMzAwRkE0M0I2IC8qIE5ldHdv
cmtQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTBDQzdFMDE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuaCAqLzsgfTsKKwkJ
NTE3OTU1NkQxNjI4NzdCMTAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M3RUExNjEzOEU3
MjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuY3BwICovOyB9OworCQk1MTc5NTU2RTE2
Mjg3N0IzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M3RUIxNjEzOEU3MjAwRDAzRUQzIC8q
IE5ldHdvcmtQcm9jZXNzUHJveHkuaCAqLzsgfTsKIAkJNTE4MzQ1OTIxMzQ1MzJFOTAwOTJCNjk2
IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgzNDU5MDEzNDUzMkU4MDA5MkI2OTYgLyogV2ViSWNvbkRh
dGFiYXNlQ2xpZW50LmNwcCAqLzsgfTsKIAkJNTE4MzQ1OTMxMzQ1MzJFOTAwOTJCNjk2IC8qIFdl
Ykljb25EYXRhYmFzZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE4MzQ1OTExMzQ1MzJFODAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNs
aWVudC5oICovOyB9OwogCQk1MTgzQjM5MjEzNzlGN0I4MDBFODc1NEUgLyogV2ViUHJvY2Vzc1No
aW0uZHlsaWIgaW4gQ29weSBXZWIgUHJvY2VzcyBTaGltICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMDAzMUY2MTM3OUNBQ0IwMEM4REZFNCAvKiBXZWJQcm9jZXNzU2hpbS5k
eWxpYiAqLzsgfTsKQEAgLTk5OSw2ICsxMDA4LDIwIEBACiAJCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IEMwQ0U3Mjg1MTI0N0U2NjgwMEJDMEVDNDsKIAkJCXJlbW90ZUluZm8gPSAiRGVyaXZlZCBT
b3VyY2VzIjsKIAkJfTsKKwkJNTEwQ0M4NDcxNjEzQzg1MzAwRDAzRUQzIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNv
bnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDUxMEND
ODBEMTYxM0M3OTkwMEQwM0VEMzsKKwkJCXJlbW90ZUluZm8gPSBOZXR3b3JrUHJvY2VzczsKKwkJ
fTsKKwkJNTEwQ0M4NTAxNjEzQzk4RDAwRDAzRUQzIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDhEQzJFRjRGMDQ4NkE2OTQw
MDk4QjIxNjsKKwkJCXJlbW90ZUluZm8gPSBXZWJLaXQyOworCQl9OwogCQk1MTgzQjM4RDEzNzlG
NTQ2MDBFODc1NEUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJY
Q29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4
RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtMTA1Miw2ICsxMDc1LDcgQEAKIAkJ
CWZpbGVzID0gKAogCQkJCUJDREUwQUJGMTMyNzI3MDgwMDEyNTlGQiAvKiBQbHVnaW5Qcm9jZXNz
LmFwcCBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJMUE1MERCNjYxMTBBM0Q1NzAwMEQzRkU1IC8qIFdl
YlByb2Nlc3MuYXBwIGluIENvcHlGaWxlcyAqLywKKwkJCQk1MTBDQzg0OTE2MTNDODVDMDBEMDNF
RDMgLyogTmV0d29ya1Byb2Nlc3MuYXBwIGluIENvcHlGaWxlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE0MzQsNiArMTQ1
OCwxNSBAQAogCQk0RjYwMTQzMDE1NUM1QTMyMDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1h
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja2luZ1Jlc3BvbnNlTWFw
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDAzMUY2MTM3OUNBQ0IwMEM4REZF
NCAvKiBXZWJQcm9jZXNzU2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBl
eHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IFdlYlByb2Nlc3NTaGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQk1MTAyMUU5QjEyQjE2Nzg4MDA1QzAzM0MgLyogV2ViQ29udGV4dE1l
bnVDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTEwQ0M3REQxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzTWFpbk1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwQ0M3REYxNjEzOEUyOTAwRDAz
RUQzIC8qIE5ldHdvcmtQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IE5ldHdvcmtQcm9jZXNzLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwQ0M3RTAxNjEzOEUy
OTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IE5ldHdvcmtQcm9jZXNzLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBDQzdFMTE2MTM4RTI5MDBE
MDNFRDMgLyogTmV0d29ya1Byb2Nlc3NNYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IE5ldHdvcmtQcm9jZXNzTWFpbi5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NNYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMENDN0VBMTYx
MzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTBDQzdFQjE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1By
b2Nlc3NQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMENDODBFMTYxM0M3
OTkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5hcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuYXBwbGljYXRpb247IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzLmFwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJNTEwQ0M4MTkxNjEzQzc5OTAwRDAzRUQzIC8qIEluZm8ucGxpc3Qg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBs
aXN0LnhtbDsgbmFtZSA9IEluZm8ucGxpc3Q7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9JbmZvLnBs
aXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTBDQzg0NjE2MTNDN0M2MDBEMDNF
RDMgLyogTmV0d29ya1Byb2Nlc3MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gTmV0d29ya1Byb2Nl
c3MueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEZCQjk4MTI4OEM5
NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBGQkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTBB
RTBBMTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ljb25EYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMTc3LDYgKzIyMTAsNyBAQAogCQkJCTUxMDAzMUY2MTM3OUNBQ0Iw
MEM4REZFNCAvKiBXZWJQcm9jZXNzU2hpbS5keWxpYiAqLywKIAkJCQlCQzNERTQ2NjE1QTkxNzYz
MDA4RDI2RkMgLyogY29tLmFwcGxlLldlYktpdDIuV2ViUHJvY2Vzc1NlcnZpY2UueHBjICovLAog
CQkJCUJDQUU5REU5MTYwQzA5NzQwMEEzMzIxNyAvKiBjb20uYXBwbGUuV2ViS2l0Mi5XZWJQcm9j
ZXNzU2VydmljZUZvcldlYktpdERldmVsb3BtZW50LnhwYyAqLywKKwkJCQk1MTBDQzgwRTE2MTND
Nzk5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuYXBwICovLAogCQkJKTsKIAkJCW5hbWUgPSBQ
cm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMTkzLDYgKzIyMjcsNyBA
QAogCQkJCTFBQURERjRCMTBEODJBRjAwMEQzRDYzRCAvKiBTaGFyZWQgKi8sCiAJCQkJQkMwMzJE
QzMxMEY0MzgyNjAwNThDMTVBIC8qIFVJUHJvY2VzcyAqLywKIAkJCQlCQzAzMkQ1QzEwRjQzNkQ1
MDA1OEMxNUEgLyogV2ViUHJvY2VzcyAqLywKKwkJCQk1MTBDQzdEQTE2MTM4RTAxMDBEMDNFRDMg
LyogTmV0d29ya1Byb2Nlc3MgKi8sCiAJCQkJMUEwRUM2QjAxMjRCQkQzNjAwN0VGNEE1IC8qIFBs
dWdpblByb2Nlc3MgKi8sCiAJCQkJMzJDODhERkYwMzcxQzI0MjAwQzkxNzgzIC8qIE90aGVyIFNv
dXJjZXMgKi8sCiAJCQkJQzBDRTcyOUQxMjQ3RTcxRDAwQkMwRUM0IC8qIERlcml2ZWQgU291cmNl
cyAqLywKQEAgLTIyMTksNiArMjI1NCw3IEBACiAJCTA4OUMxNjY1RkU4NDExNThDMDJBQUMwNyAv
KiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTUxMENDODRBMTYxM0M4QUIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2VzcyAqLywKIAkJCQlC
QzEyMkZBNTEzMjcwODVEMDBGN0VBQzEgLyogUGx1Z2luUHJvY2VzcyAqLywKIAkJCQlCQzhBNTAw
RTExNzY1QUQ0MDA3NTc1NzMgLyogV2ViS2l0MiAqLywKIAkJCQlCQzhBNTAwRjExNzY1QUUzMDA3
NTc1NzMgLyogV2ViUHJvY2VzcyAqLywKQEAgLTIzMjEsNiArMjM1Nyw3IEBACiAJCQkJQkNBRTlE
RkYxNjBDMEI0MTAwQTMzMjE3IC8qIENvbXBpbGVyVmVyc2lvbi54Y2NvbmZpZyAqLywKIAkJCQkx
QTRGOTc2QjEwMEU3QjY2MDA2MzdBMTggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovLAogCQkJ
CTFBNEY5NzZDMTAwRTdCNjYwMDYzN0ExOCAvKiBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyAqLywK
KwkJCQk1MTBDQzg0NjE2MTNDN0M2MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MueGNjb25maWcg
Ki8sCiAJCQkJQkMxMjJGQTMxMzI3MDdGMzAwRjdFQUMxIC8qIFBsdWdpblByb2Nlc3MueGNjb25m
aWcgKi8sCiAJCQkJNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgKi8s
CiAJCQkJMUE0Rjk3NkUxMDBFN0I2NjAwNjM3QTE4IC8qIFZlcnNpb24ueGNjb25maWcgKi8sCkBA
IC0yNzg2LDYgKzI4MjMsNDMgQEAKIAkJCW5hbWUgPSBjZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CiAJCX07CisJCTUxMENDN0RBMTYxMzhFMDEwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vz
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTEwQ0M3
REMxNjEzOEUyOTAwRDAzRUQzIC8qIG1hYyAqLywKKwkJCQk1MTBDQzdERjE2MTM4RTI5MDBEMDNF
RDMgLyogTmV0d29ya1Byb2Nlc3MuY3BwICovLAorCQkJCTUxMENDN0UwMTYxMzhFMjkwMEQwM0VE
MyAvKiBOZXR3b3JrUHJvY2Vzcy5oICovLAorCQkJCTUxMENDN0UxMTYxMzhFMjkwMEQwM0VEMyAv
KiBOZXR3b3JrUHJvY2Vzc01haW4uaCAqLywKKwkJCSk7CisJCQluYW1lID0gTmV0d29ya1Byb2Nl
c3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk1MTBDQzdEQzE2MTM4RTI5
MDBEMDNFRDMgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQk1MTBDQzdERDE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NNYWluTWFj
Lm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBtYWM7CisJCQlwYXRoID0gTmV0d29ya1Byb2Nlc3Mv
bWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNTEwQ0M3RTcxNjEzOEU3
MjAwRDAzRUQzIC8qIE5ldHdvcmsgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTUxMENDN0VBMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcCAqLywKKwkJCQk1MTBDQzdFQjE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nl
c3NQcm94eS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBOZXR3b3JrOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNTEwQ0M4NEExNjEzQzhBQjAwRDAzRUQzIC8qIE5ldHdvcmtQ
cm9jZXNzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1
MTBDQzgxOTE2MTNDNzk5MDBEMDNFRDMgLyogSW5mby5wbGlzdCAqLywKKwkJCSk7CisJCQluYW1l
ID0gTmV0d29ya1Byb2Nlc3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk1
MTIzQ0YxODEzM0QyNUU2MDA1NkY4MDAgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtMzAzNSw2ICszMTA5LDcgQEAKIAkJCQkxQUI3RDRDNzEyODhB
QTlBMDBDRkQwOEMgLyogRG93bmxvYWRzICovLAogCQkJCUJDMTExQjE4MTEyRjVGQjQwMDMzN0JB
QiAvKiBMYXVuY2hlciAqLywKIAkJCQlCQ0NGMDg1QzExM0YzQjc1MDBDNjUwQzUgLyogbWFjICov
LAorCQkJCTUxMENDN0U3MTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrICovLAogCQkJCTMxQTJF
QzQwMTQ4OTk3MzcwMDgxMEQ3MSAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTFBRUZDQzA1MTFE
MDFGMzQwMDgyMTlEMyAvKiBQbHVnaW5zICovLAogCQkJCTFBNjQyNTY3MTJERTQyRUMwMENBQUUy
QyAvKiBCYWNraW5nU3RvcmUuY3BwICovLApAQCAtNDQxOCw2ICs0NDkzLDkgQEAKIAkJCQlCQzhG
MkYyRTE2MjczQUNDMDA1RkFDQjUgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUZFQzFEMTYyN0I0NTcw
MDcwMEY2RCAvKiBXZWJDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5
M0VCRUFCMTYyN0Q5QzkwMDVGODlGMSAvKiBXS0RPTVRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxNzk1NTY5MTYyODc2RUUwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc01haW4uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxNzk1NTZBMTYyODc2RjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTE3OTU1NkUxNjI4NzdCMzAwRkE0M0I2IC8qIE5ldHdvcmtQ
cm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDQ3Nyw2ICs0NTU1LDIzIEBACiAJCQlw
cm9kdWN0UmVmZXJlbmNlID0gNTEwMDMxRjYxMzc5Q0FDQjAwQzhERkU0IC8qIFdlYlByb2Nlc3NT
aGltLmR5bGliICovOwogCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5s
aWJyYXJ5LmR5bmFtaWMiOwogCQl9OworCQk1MTBDQzgwRDE2MTNDNzk5MDBEMDNFRDMgLyogTmV0
d29ya1Byb2Nlc3MgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gNTEwQ0M4NDMxNjEzQzc5OTAwRDAzRUQzIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJOZXR3b3JrUHJvY2VzcyIgKi87CisJ
CQlidWlsZFBoYXNlcyA9ICgKKwkJCQk1MTBDQzgwQTE2MTNDNzk5MDBEMDNFRDMgLyogU291cmNl
cyAqLywKKwkJCQk1MTBDQzgwQzE2MTNDNzk5MDBEMDNFRDMgLyogUmVzb3VyY2VzICovLAorCQkJ
KTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTUx
MENDODUxMTYxM0M5OEQwMEQwM0VEMyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsK
KwkJCW5hbWUgPSBOZXR3b3JrUHJvY2VzczsKKwkJCXByb2R1Y3ROYW1lID0gTmV0d29ya1Byb2Nl
c3M7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gNTEwQ0M4MEUxNjEzQzc5OTAwRDAzRUQzIC8qIE5l
dHdvcmtQcm9jZXNzLmFwcCAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0
LXR5cGUuYXBwbGljYXRpb24iOworCQl9OwogCQk4REMyRUY0RjA0ODZBNjk0MDA5OEIyMTYgLyog
V2ViS2l0MiAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmln
dXJhdGlvbkxpc3QgPSAxREVCOTFBRDA4NzMzREE1MDAxMEU5Q0QgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIldlYktpdDIiICovOwpAQCAtNDU4Nyw2ICs0
NjgyLDcgQEAKIAkJCQk4REMyRUY0RjA0ODZBNjk0MDA5OEIyMTYgLyogV2ViS2l0MiAqLywKIAkJ
CQkxQTUwREIxRDExMEEzQkRDMDAwRDNGRTUgLyogV2ViUHJvY2VzcyAqLywKIAkJCQlCQ0RFMDkz
MzEzMjcyNDk2MDAxMjU5RkIgLyogUGx1Z2luUHJvY2VzcyAqLywKKwkJCQk1MTBDQzgwRDE2MTND
Nzk5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MgKi8sCiAJCQkJQzBDRTcyODUxMjQ3RTY2ODAw
QkMwRUM0IC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQkxQUMyNUZBRjEyQTQ4RUE3MDBCRDI2
NzEgLyogUGx1Z2luUHJvY2Vzc1NoaW0gKi8sCiAJCQkJNTEwMDMxRUExMzc5Q0FDQjAwQzhERkU0
IC8qIFdlYlByb2Nlc3NTaGltICovLApAQCAtNDYwNiw2ICs0NzAyLDEzIEBACiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCTUxMENDODBD
MTYxM0M3OTkwMEQwM0VEMyAvKiBSZXNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhSZXNvdXJj
ZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVz
ID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQl9OwogCQk4REMyRUY1MjA0ODZBNjk0MDA5OEIyMTYgLyogUmVzb3VyY2VzICovID0gewogCQkJ
aXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CkBAIC00ODM0LDYgKzQ5MzcsMTQgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJNTEwQ0M4MEExNjEzQzc5OTAwRDAzRUQz
IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk1MTBDQzg0RjE2
MTNDOTJDMDBEMDNFRDMgLyogTWFpbk1hY1Byb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCThE
QzJFRjU0MDQ4NkE2OTQwMDk4QjIxNiAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291
cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtNTI4
Nyw2ICs1Mzk4LDkgQEAKIAkJCQlCQzhGMkYyQTE2MjczQTJDMDA1RkFDQjUgLyogV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUExRkVDMUMxNjI3QjQ1NzAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkzRUJFQUMxNjI3RDlDOTAwNUY4OUYxIC8qIFdLRE9N
VGV4dC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxNzk1NTY1MTYyODc2QzUwMEZBNDNCNiAvKiBO
ZXR3b3JrUHJvY2Vzc01haW5NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTc5NTU2ODE2Mjg3
NkNGMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE3
OTU1NkQxNjI4NzdCMTAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC01MzMyLDYgKzU0NDYsMTYgQEAKIAkJCXRhcmdldCA9IEMwQ0U3Mjg1MTI0N0U2
NjgwMEJDMEVDNCAvKiBEZXJpdmVkIFNvdXJjZXMgKi87CiAJCQl0YXJnZXRQcm94eSA9IDM3Rjc0
MDc4MTI3MjFGNzQwMDkzODY5QiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CiAJCX07CisJ
CTUxMENDODQ4MTYxM0M4NTMwMEQwM0VEMyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDUxMENDODBEMTYxM0M3
OTkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2VzcyAqLzsKKwkJCXRhcmdldFByb3h5ID0gNTEwQ0M4
NDcxNjEzQzg1MzAwRDAzRUQzIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJ
NTEwQ0M4NTExNjEzQzk4RDAwRDAzRUQzIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJ
CQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gOERDMkVGNEYwNDg2QTY5
NDAwOThCMjE2IC8qIFdlYktpdDIgKi87CisJCQl0YXJnZXRQcm94eSA9IDUxMENDODUwMTYxM0M5
OEQwMEQwM0VEMyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTUxODNCMzhF
MTM3OUY1NDYwMEU4NzU0RSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0g
UEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IDUxMDAzMUVBMTM3OUNBQ0IwMEM4REZF
NCAvKiBXZWJQcm9jZXNzU2hpbSAqLzsKQEAgLTU1MDQsNiArNTYyOCwyNyBAQAogCQkJfTsKIAkJ
CW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OworCQk1MTBDQzgzRDE2MTNDNzk5MDBEMDNFRDMgLyog
RGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gNTEwQ0M4NDYxNjEzQzdDNjAwRDAzRUQzIC8qIE5ldHdvcmtQ
cm9jZXNzLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1l
ID0gRGVidWc7CisJCX07CisJCTUxMENDODNFMTYxM0M3OTkwMEQwM0VEMyAvKiBSZWxlYXNlICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDUxMENDODQ2MTYxM0M3QzYwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy54
Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVh
c2U7CisJCX07CisJCTUxMENDODNGMTYxM0M3OTkwMEQwM0VEMyAvKiBQcm9kdWN0aW9uICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDUxMENDODQ2MTYxM0M3QzYwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy54Y2Nv
bmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rp
b247CisJCX07CiAJCTVEMjJENjlCMTFBNzUzNDYwMEJGMzBFNSAvKiBQcm9kdWN0aW9uICovID0g
ewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDFBNEY5NzZBMTAwRTdCNjYwMDYzN0ExOCAvKiBCYXNlLnhjY29uZmlnICovOwpA
QCAtNTY5MSw2ICs1ODM2LDE2IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9
IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OworCQk1
MTBDQzg0MzE2MTNDNzk5MDBEMDNFRDMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIk5ldHdvcmtQcm9jZXNzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmln
dXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTUxMENDODNEMTYx
M0M3OTkwMEQwM0VEMyAvKiBEZWJ1ZyAqLywKKwkJCQk1MTBDQzgzRTE2MTNDNzk5MDBEMDNFRDMg
LyogUmVsZWFzZSAqLywKKwkJCQk1MTBDQzgzRjE2MTNDNzk5MDBEMDNFRDMgLyogUHJvZHVjdGlv
biAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQlCQzNERTQ3NjE1
QTkxNzY0MDA4RDI2RkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIldlYlByb2Nlc3NTZXJ2aWNlIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlv
bkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViS2l0MlByZWZpeC5oIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MlByZWZpeC5oCmlu
ZGV4IDRkZWI2MjkuLjFlZGYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJQ
cmVmaXguaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyUHJlZml4LmgKQEAgLTQwLDYgKzQw
LDggQEAKICNkZWZpbmUgRU5BQkxFX1BMVUdJTl9QUk9DRVNTIDEKICNlbmRpZgogCisjZGVmaW5l
IEVOQUJMRV9ORVRXT1JLX1BST0NFU1MgMQorCiAjZGVmaW5lIEVOQUJMRV9NRU1PUllfU0FNUExF
UiAxCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJLaXRNYWluLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViS2l0TWFpbi5jcHAKaW5kZXggMDNhOGNiNS4uMWZkNzI1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJLaXRNYWluLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYktpdE1haW4uY3BwCkBAIC0zMSw2ICszMSwx
MCBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NNYWluLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCisjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc01haW4uaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPG9i
amMvb2JqYy1hdXRvLmg+CiAjZWxpZiBQTEFURk9STShXSU4pCkBAIC01NCw2ICs1OCwxMiBAQCBz
dGF0aWMgaW50IFdlYktpdE1haW4oY29uc3QgQ29tbWFuZExpbmUmIGNvbW1hbmRMaW5lKQogI2Vs
c2UKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCisgICAgICAgIGNhc2UgUHJvY2Vzc0xhdW5j
aGVyOjpOZXR3b3JrUHJvY2VzczoKKyNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQorICAgICAg
ICAgICAgcmV0dXJuIE5ldHdvcmtQcm9jZXNzTWFpbihjb21tYW5kTGluZSk7CisjZWxzZQorICAg
ICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gRVhJVF9GQUlMVVJF
Owo=
</data>
<flag name="review"
          id="181413"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>