<?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>95198</bug_id>
          
          <creation_ts>2012-08-28 07:24:47 -0700</creation_ts>
          <short_desc>MediaStream API: Introduce MediaConstraints</short_desc>
          <delta_ts>2012-08-30 11:30:27 -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>WebCore Misc.</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>80589</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706316</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-28 07:24:47 -0700</bug_when>
    <thetext>This introduces MediaConstraints together with relevant infrastructure, a chromium mock and LayoutTests.
I had to add a function to Dictionary for extracting the names of the attributes to get this to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706382</commentid>
    <comment_count>1</comment_count>
      <attachid>160992</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-28 08:37:35 -0700</bug_when>
    <thetext>Created attachment 160992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706385</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-28 08:40:42 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706393</commentid>
    <comment_count>3</comment_count>
      <attachid>160992</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 08:51:41 -0700</bug_when>
    <thetext>Comment on attachment 160992
Patch

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

&gt; Source/WebCore/bindings/v8/Dictionary.cpp:514
&gt; +        String stringKey = toWebCoreString(key);
&gt; +        names.append(stringKey);

I&apos;d combine these two lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706396</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 08:52:25 -0700</bug_when>
    <thetext>I need to read this again.  MediaConstraintsImpl is an interesting approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706585</commentid>
    <comment_count>5</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-28 11:50:19 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I need to read this again.  MediaConstraintsImpl is an interesting approach.

Interesting is such a ambivalent word ;) I did it like this since I wanted to keep a Dictionary in an object that will be sent through the WebKit interface.


Also a better description of the MediaConstraints objects is in order, it&apos;s not trivial.

A constraint is a key:value pair, and example is minVideoWidth:1024. The constraint can be either mandator or optional.

MediaConstraints contains two members, mandatory and optional, whose structures are not the same.

&quot;mandatory&quot; is unordered and therefore is a simple sub-Dictionary. If a web developer specifies a mandatory constraint which isn&apos;t supported by the user agent an exception should be thrown.

&quot;optional&quot; is an ordered list of key:value pairs and each constraint should be in its own Dictionary.

{
  mandatory: {
    minVideoWidth:640
  },
  optional: {
    [ { minVideoWidth:1024 }, { magic:true }, { awesomeness:&quot;super&quot; } ]
  }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706616</commentid>
    <comment_count>6</comment_count>
      <attachid>161032</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-28 12:32:05 -0700</bug_when>
    <thetext>Created attachment 161032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706618</commentid>
    <comment_count>7</comment_count>
      <attachid>160992</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-28 12:33:19 -0700</bug_when>
    <thetext>Comment on attachment 160992
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/Dictionary.cpp:514
&gt;&gt; +        names.append(stringKey);
&gt; 
&gt; I&apos;d combine these two lines.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706678</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-28 13:28:49 -0700</bug_when>
    <thetext>&gt; Interesting is such a ambivalent word ;)

I didn&apos;t mean to be ambivalent.  I just meant that I need to look at it in more detail to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707646</commentid>
    <comment_count>9</comment_count>
      <attachid>161032</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-29 11:01:53 -0700</bug_when>
    <thetext>Comment on attachment 161032
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaConstraintsImpl.h:63
&gt; +    Dictionary m_mandatoryConstraints;

I don&apos;t think you can hold a Dictionary are a member variable.  I&apos;ll explain why in a moment.

&gt; Source/WebCore/bindings/js/Dictionary.cpp:88
&gt; +    ExecState* exec = m_dictionary.execState();

The problem is that you can&apos;t hold an ExecState* as a member.  The ExecState&apos;s lifetime is limited to the call stack.

&gt; Source/WebCore/platform/chromium/support/WebMediaConstraints.cpp:67
&gt; +    m_private-&gt;getConstraintNames(mandatory, constraintNames);

As you&apos;ve written things, this function requires a executing JavaScript, but given that this is a public API, there&apos;s no reason to believe that we&apos;re inside a JavaScript context (or even have a HandleScope on the stack).

&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:41
&gt; +class MediaConstraints : public RefCounted&lt;MediaConstraints&gt; {

I don&apos;t understand why we need the abstract base class.  There&apos;s only one implementation of this class that I can see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707653</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-29 11:06:37 -0700</bug_when>
    <thetext>&gt; Also a better description of the MediaConstraints objects is in order, it&apos;s not trivial.

I see.  Maybe it would be better to represent this state explicitly with C++ types rather than leaving it in JavaScript objects?  Presumably we need to copy it out of the JavaScript VM at some point.  Perhaps we&apos;re trying to save a copy by copying it directly into the embedder?

The problem is that Dictionary object can&apos;t really live past the stack frame in which they are created.  They hold onto a bunch of ephemeral state that explodes as you unwind the stack.  Maybe you&apos;ve set things up so that MediaConstraints are only ever used in their own stack frame?

I don&apos;t see anything that prevents the embedder from holding onto a WebMediaConstraints object.  Even if this work today, it&apos;s a pretty fragile API.

Is there a strong reason not to just copy the data out of JS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707656</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-29 11:09:00 -0700</bug_when>
    <thetext>If you&apos;re worried that these things are variants and C++ doesn&apos;t have a good way of representing variants, we can use InspectorValue.

For example, we can use v8ToInspectorValue or ScriptValue::toInspectorValue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707657</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-29 11:09:29 -0700</bug_when>
    <thetext>Finally, I don&apos;t get why we need to separate MediaConstraints from MediaConstraintsImpl.  What does that buy us?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708408</commentid>
    <comment_count>13</comment_count>
      <attachid>161032</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-30 01:24:15 -0700</bug_when>
    <thetext>Comment on attachment 161032
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/MediaConstraints.h:41
&gt;&gt; +class MediaConstraints : public RefCounted&lt;MediaConstraints&gt; {
&gt; 
&gt; I don&apos;t understand why we need the abstract base class.  There&apos;s only one implementation of this class that I can see.

It&apos;s this platform abstraction again... The abstract base class defines the interface for the object that will go from WebCore/platform to WebKit, whereas the implementation is then free to use WebCore proper objects and APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708416</commentid>
    <comment_count>14</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-30 01:36:18 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Also a better description of the MediaConstraints objects is in order, it&apos;s not trivial.
&gt; 
&gt; I see.  Maybe it would be better to represent this state explicitly with C++ types rather than leaving it in JavaScript objects?  Presumably we need to copy it out of the JavaScript VM at some point.  Perhaps we&apos;re trying to save a copy by copying it directly into the embedder?
&gt; 
&gt; The problem is that Dictionary object can&apos;t really live past the stack frame in which they are created.  They hold onto a bunch of ephemeral state that explodes as you unwind the stack.  Maybe you&apos;ve set things up so that MediaConstraints are only ever used in their own stack frame?
&gt; 
&gt; I don&apos;t see anything that prevents the embedder from holding onto a WebMediaConstraints object.  Even if this work today, it&apos;s a pretty fragile API.

Right, MediaConstraints are only supposed to be used in the context of the call but as you rightly point out the API doesn&apos;t stop holding on to the object.

&gt; 
&gt; Is there a strong reason not to just copy the data out of JS?

Here&apos;s the reason I did it this way:

I can create a C++ class but I wanted to push the responsibility for knowing about valid constraints and their types to the user agent, otherwise both WebKit and the UA have to be patched as soon as a new constraint is added. This way only the UA is affected.

Another alternative is for webkit to extract everything as strings and let the UA convert to the right type as needed but it adds some extra overhead. No big deal though, and converting to InspectorValues will do the same, so maybe this is a better approach. It is certainly much safer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708420</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-30 01:41:28 -0700</bug_when>
    <thetext>No abstraction is required.  WebKit can use WebCore types directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708421</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-30 01:43:02 -0700</bug_when>
    <thetext>I&apos;d go with the safer approach.  We can optimize later if this is a bottleneck.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708712</commentid>
    <comment_count>17</comment_count>
      <attachid>161494</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-30 09:33:37 -0700</bug_when>
    <thetext>Created attachment 161494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708713</commentid>
    <comment_count>18</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-30 09:34:19 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I&apos;d go with the safer approach.  We can optimize later if this is a bottleneck.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708720</commentid>
    <comment_count>19</comment_count>
      <attachid>161494</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-30 09:37:52 -0700</bug_when>
    <thetext>Comment on attachment 161494
Patch

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

This looks good, but we still have the extra MediaConstraints class.

&gt; Source/WebCore/bindings/js/Dictionary.h:64
&gt; +    bool getOwnPropertyNames(WTF::Vector&lt;String&gt;&amp;) const;

WTF::Vector -&gt; Vector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708729</commentid>
    <comment_count>20</comment_count>
      <attachid>161494</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-30 09:43:32 -0700</bug_when>
    <thetext>Comment on attachment 161494
Patch

Attachment 161494 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13691754</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708736</commentid>
    <comment_count>21</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-30 09:48:42 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; No abstraction is required.  WebKit can use WebCore types directly.

The entire MediaStream feature is built upon these rules:

The WebKit API only sees and uses WebCore/platform classes (WebMediaConstraints)
WebCore/platform classes doesn&apos;t use anything from WebCore proper (MediaConstraints)
WebCore proper uses webCore/platform classes (MediaConstraintsImpl)

Previously this has been solved by the *Descriptor pattern, whereas here I thought inheritance would work better.

So if I understand you correctly you would prefer if MediaConstraints in WebCore/platform directly uses the Dictionary class. I would prefer not so that the WebCore/platform pulls in as little as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708739</commentid>
    <comment_count>22</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-30 09:51:26 -0700</bug_when>
    <thetext>Hmm, I don&apos;t think the mac build problem is due to my code...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708748</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-30 09:55:39 -0700</bug_when>
    <thetext>Ah!  I misunderstood what you wrote in Comment #13.

Now that we&apos;re not keeping the Dictionary around, do you think it would be more consistent with the rest of the feature to copy the data into a Descriptor object in the platform layer rather than into the DOM object?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708750</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-30 09:56:19 -0700</bug_when>
    <thetext>&gt; Hmm, I don&apos;t think the mac build problem is due to my code...

Yeah, looks like xcode just crashed for some reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708763</commentid>
    <comment_count>25</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-30 10:04:29 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Ah!  I misunderstood what you wrote in Comment #13.

No problems.

&gt; 
&gt; Now that we&apos;re not keeping the Dictionary around, do you think it would be more consistent with the rest of the feature to copy the data into a Descriptor object in the platform layer rather than into the DOM object?

If you don&apos;t scream I would like to keep it like this, and even use it for two more classes (to be reviewed soon).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708773</commentid>
    <comment_count>26</comment_count>
      <attachid>161505</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-30 10:09:58 -0700</bug_when>
    <thetext>Created attachment 161505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708776</commentid>
    <comment_count>27</comment_count>
      <attachid>161494</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-08-30 10:11:25 -0700</bug_when>
    <thetext>Comment on attachment 161494
Patch

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

&gt;&gt; Source/WebCore/bindings/js/Dictionary.h:64
&gt;&gt; +    bool getOwnPropertyNames(WTF::Vector&lt;String&gt;&amp;) const;
&gt; 
&gt; WTF::Vector -&gt; Vector

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708806</commentid>
    <comment_count>28</comment_count>
      <attachid>161505</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-30 10:34:56 -0700</bug_when>
    <thetext>Comment on attachment 161505
Patch

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

Ok.  If you think this pattern is better in some cases, we can give it a try.  Thanks for being patient with me.  :)

&gt; Source/WebCore/bindings/v8/Dictionary.cpp:497
&gt; +bool Dictionary::getOwnPropertyNames(WTF::Vector&lt;String&gt;&amp; names) const

Technically this doesn&apos;t need a WTF either.  The WTF headers tend to have &quot;using&quot; statements that import these names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708864</commentid>
    <comment_count>29</comment_count>
      <attachid>161505</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 11:30:21 -0700</bug_when>
    <thetext>Comment on attachment 161505
Patch

Clearing flags on attachment: 161505

Committed r127165: &lt;http://trac.webkit.org/changeset/127165&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708865</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 11:30:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160992</attachid>
            <date>2012-08-28 08:37:35 -0700</date>
            <delta_ts>2012-08-28 12:33:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95198-20120828173725.patch</filename>
            <type>text/plain</type>
            <size>48216</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhYjIxZTA1NWU0MGFm
ZTU1NzAxNTMyNzJkMDljNDFkMmQ4OTBmZGIxLi41NzFlOTljNjk2NTMwYTU4NDU1NTZlMDZkY2Rj
ZDUxN2QxZmY2YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wOC0yOCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IEludHJvZHVjZSBNZWRpYUNvbnN0cmFpbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgV2ViTWVkaWFDb25zdHJhaW50cy4KKwor
ICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYk1l
ZGlhQ29uc3RyYWludHMuaDogQ29waWVkIGZyb20gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhQ29uc3RyYWludHMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjpXZWJNZWRpYUNvbnN0cmFpbnRzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50czo6fldlYk1lZGlhQ29uc3RyYWludHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjpvcGVyYXRvcj0pOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgor
CiAyMDEyLTA4LTI3ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gU2hvdWxkIGFjY2VsZXJhdGUgcm90YXRpb25zIG9mID49IDE4MCBkZWdy
ZWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggYjRlOTg0ZTBkMGQyZDk2OGZjYWNmNGE3YzkzMTRmY2ZiZjYyMmFk
Zi4uZmU2ZGYzZDhmZGM1YTc0MTA0MWYyMDMwMmQwNDQ0MDQ5YTZiMGJhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDY1IEBACisyMDEyLTA4LTI4ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogSW50cm9kdWNlIE1lZGlhQ29u
c3RyYWludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1MTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBpbnRyb2R1Y2VzIE1lZGlhQ29uc3RyYWludHMgdG9nZXRoZXIgd2l0aCByZWxldmFudCBp
bmZyYXN0cnVjdHVyZSwgYSBjaHJvbWl1bSBtb2NrIGFuZCBMYXlvdXRUZXN0cy4KKworICAgICAg
ICBQYXRjaCBjb3ZlcmVkIGJ5IGV4cGFuZGVkIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRp
YWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNv
bnN0cmFpbnRzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6
Z2V0Q29uc3RyYWludE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJ
bXBsOjpnZXRDb25zdHJhaW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHNJbXBsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChNZWRpYUNvbnN0cmFpbnRzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnRzSW1wbDo6TWVkaWFDb25zdHJhaW50c0ltcGwpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29u
bmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRD
UGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6Omdl
dE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvRGljdGlvbmFyeS5oOgorICAgICAgICAoRGljdGlvbmFyeSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKERpY3Rpb25hcnkpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFDb25zdHJhaW50cy5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHM6OldlYk1lZGlhQ29uc3RyYWludHMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjphc3NpZ24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1l
ZGlhQ29uc3RyYWludHM6OmlzTnVsbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ29uc3Ry
YWludHM6OmdldENvbnN0cmFpbnROYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ29u
c3RyYWludHM6OmdldENvbnN0cmFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKE1lZGlhQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50czo6fk1lZGlhQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50czo6TWVkaWFDb25zdHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmluaXRp
YWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtLmg6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDaHJvbWl1bSk6CisKIDIwMTItMDgtMjggIEh1Z28gUGFyZW50ZSBMaW1hICA8aHVnby5s
aW1hQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1dLMl0gU2VuZCBjbGljayBldmVudHMgdG8g
V2ViQ29yZSB3aGVuIHRoZSB1c2VyIGNsaWNrZWQgb24gYSBub24tc3BlY2lhbCBub2RlIHdpdGgg
VE9VQ0hfQURKVVNUTUVOVCBlbmFibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCA3YWIwODI2
MmFmZTc2MDcxNDZlN2NlNGJhNjRiZjRlNWY0N2Y2OTA1Li5iY2QzZDcyYzZmMzY2ZjA5NzIxYjE3
ZTRlMDRkMjA3YzBmMzI0MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0u
Z3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtODAsNiArODAsNyBA
QAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcuaCcsCisgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhSGludHMuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzM3Mjc2ZjM3NDkyMDY3ZjQyZjRhNDFkZmU2ZWIxZDllODQ2OTAzZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50
cy5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhQ29uc3RyYWludHNfaAorI2RlZmlu
ZSBXZWJNZWRpYUNvbnN0cmFpbnRzX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1
ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1
ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViTWVkaWFDb25zdHJhaW50cyB7CitwdWJsaWM6CisgICAgV2ViTWVkaWFDb25z
dHJhaW50cygpIHsgfQorICAgIFdlYk1lZGlhQ29uc3RyYWludHMoY29uc3QgV2ViTWVkaWFDb25z
dHJhaW50cyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJNZWRpYUNvbnN0cmFp
bnRzKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJNZWRpYUNvbnN0cmFpbnRzJiBvcGVyYXRvcj0o
Y29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24o
b3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGFzc2lnbihjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJik7CisKKyAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0OworCisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGdldENvbnN0cmFpbnROYW1lcyhib29sIG1hbmRhdG9yeSwgV2ViVmVj
dG9yPFdlYlN0cmluZz4mIG5hbWVzKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZ2V0
Q29uc3RyYWludChib29sIG1hbmRhdG9yeSwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJTdHJp
bmcmIHZhbHVlKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZ2V0Q29uc3RyYWludChi
b29sIG1hbmRhdG9yeSwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCYgdmFsdWUpIGNv
bnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViTWVkaWFDb25zdHJhaW50
cyhjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4mKTsKKyNl
bmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TWVkaWFDb25zdHJh
aW50cz4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBXZWJNZWRpYUNvbnN0cmFpbnRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCmluZGV4IDcw
YzI2YWI2NWY3MzIzZDhlM2YxMTFhZTQ4YWZjODllNjQ4YWEwN2YuLmQ2ZTE4ZGIzMDY2NGQ3NGZh
MDU2MTMxYWY0YjkzNDhlNTQ1MzhiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAt
MzIsMTMgKzMyLDE1IEBACiAjZGVmaW5lIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcl9oCiAK
IG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTWVkaWFDb25zdHJhaW50czsKK2NsYXNzIFdl
YlJUQ0NvbmZpZ3VyYXRpb247CiBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGll
bnQ7CiAKIGNsYXNzIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKCkgeyB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaW5pdGlhbGl6ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25z
dCBXZWJSVENDb25maWd1cmF0aW9uJiwgY29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggYWUyOGVhNzYwMzk5YmU4NjkxMGJmMTdjNDI2ZmFmNDMwNWU4YTJhZC4uNDVkYzg5NTc2ODIz
MjJhODZlMWQ3NGFjYTg5NTQ2YWVlYTgwOTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg0
NCw2ICs4NDQsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0ljZUNhbmRpZGF0ZS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFT
dHJlYW0uY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5j
cHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtTGlzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDcy
ODcyOWUxM2ExMDI5Mjg1ZGFkYzZmNGRhNmNjODUyYWVjMWI4YTcuLjU4ZjlkN2I3ZTZlMzE1ZDBm
NDVkM2VmZWZjZWYyNGM5ZmMwMTY3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtMTg5NCw2ICsxODk0LDggQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1w
bC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3Bw
IFwKQEAgLTQ1MjMsNiArNDUyNSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VPcHRpb25zLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlT3B0aW9ucy5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhSGludHMuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUhpbnRzLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJh
aW50c0ltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViM2NiZmJjZWIxMjQ5YmM4MmMwYTQ0NGQ4YmEzMDU1
ODc1OTk1YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAg
ICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgorCisjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgor
I2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHNJbXBsPiBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0
IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBSZWZQ
dHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG9iamVjdCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnN0
cmFpbnRzSW1wbCgpKTsKKyAgICBpZiAoIW9iamVjdC0+aW5pdGlhbGl6ZShjb25zdHJhaW50cykp
IHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorICAgIHJldHVybiBvYmplY3QucmVsZWFzZSgpOworfQorCitib29sIE1lZGlhQ29uc3Ry
YWludHNJbXBsOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQorewor
ICAgIGlmIChjb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOworICAgIGNvbnN0cmFpbnRzLmdldE93
blByb3BlcnR5TmFtZXMobmFtZXMpOworCisgICAgU3RyaW5nIG1hbmRhdG9yeSA9IEFTQ0lJTGl0
ZXJhbCgibWFuZGF0b3J5Iik7CisgICAgaWYgKG5hbWVzLmNvbnRhaW5zKG1hbmRhdG9yeSkpIHsK
KyAgICAgICAgYm9vbCBvayA9IGNvbnN0cmFpbnRzLmdldChtYW5kYXRvcnksIG1fbWFuZGF0b3J5
Q29uc3RyYWludHMpOworICAgICAgICBpZiAoIW9rIHx8IG1fbWFuZGF0b3J5Q29uc3RyYWludHMu
aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBTdHJpbmcgb3B0aW9uYWwgPSBBU0NJSUxpdGVyYWwoIm9wdGlvbmFsIik7CisgICAgaWYg
KG5hbWVzLmNvbnRhaW5zKG9wdGlvbmFsKSkgeworICAgICAgICBib29sIG9rID0gY29uc3RyYWlu
dHMuZ2V0KG9wdGlvbmFsLCBtX29wdGlvbmFsQ29uc3RyYWludHMpOworICAgICAgICBpZiAoIW9r
IHx8IG1fb3B0aW9uYWxDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHNpemVfdCBudW1iZXJPZkNvbnN0cmFpbnRzOwor
ICAgICAgICBvayA9IG1fb3B0aW9uYWxDb25zdHJhaW50cy5sZW5ndGgobnVtYmVyT2ZDb25zdHJh
aW50cyk7CisgICAgICAgIGlmICghb2spCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkNvbnN0cmFpbnRzOyArK2kpIHsK
KyAgICAgICAgICAgIERpY3Rpb25hcnkgY29uc3RyYWludDsKKyAgICAgICAgICAgIG9rID0gbV9v
cHRpb25hbENvbnN0cmFpbnRzLmdldChpLCBjb25zdHJhaW50KTsKKyAgICAgICAgICAgIGlmICgh
b2sgfHwgY29uc3RyYWludC5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxvY2FsTmFtZXM7CisgICAg
ICAgICAgICBjb25zdHJhaW50LmdldE93blByb3BlcnR5TmFtZXMobG9jYWxOYW1lcyk7CisgICAg
ICAgICAgICBpZiAobG9jYWxOYW1lcy5zaXplKCkgIT0gMSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBtX29wdGlvbmFsQ29uc3RyYWludE5hbWVzLmFwcGVuZChs
b2NhbE5hbWVzWzBdKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
CitNZWRpYUNvbnN0cmFpbnRzSW1wbDo6fk1lZGlhQ29uc3RyYWludHNJbXBsKCkKK3sKK30KKwor
dm9pZCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0Q29uc3RyYWludE5hbWVzKGJvb2wgbWFuZGF0
b3J5LCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0Cit7CisgICAgbmFtZXMuY2xlYXIoKTsK
KyAgICBpZiAobWFuZGF0b3J5KSB7CisgICAgICAgIGlmICghbV9tYW5kYXRvcnlDb25zdHJhaW50
cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgbV9tYW5kYXRvcnlDb25zdHJhaW50
cy5nZXRPd25Qcm9wZXJ0eU5hbWVzKG5hbWVzKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbmFtZXMg
PSBtX29wdGlvbmFsQ29uc3RyYWludE5hbWVzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVz
dWx0PgorYm9vbCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUmVzdWx0JiB2YWx1ZSkgY29uc3QKK3sKKyAgICBpZiAobV9tYW5kYXRvcnlDb25z
dHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5nZXQobmFtZSwgdmFsdWUpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0PgorYm9vbCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0
T3B0aW9uYWwoY29uc3QgU3RyaW5nJiBuYW1lLCBSZXN1bHQmIHZhbHVlKSBjb25zdAoreworICAg
IHNpemVfdCBpbmRleCA9IG1fb3B0aW9uYWxDb25zdHJhaW50TmFtZXMuZmluZChuYW1lKTsKKyAg
ICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERp
Y3Rpb25hcnkgY29uc3RyYWludDsKKyAgICBtX29wdGlvbmFsQ29uc3RyYWludHMuZ2V0KGluZGV4
LCBjb25zdHJhaW50KTsKKworICAgIHJldHVybiBjb25zdHJhaW50LmdldChuYW1lLCB2YWx1ZSk7
Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6OmdldENvbnN0cmFpbnQoYm9vbCBtYW5k
YXRvcnksIGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbWFuZGF0b3J5ID8gZ2V0TWFuZGF0b3J5KG5hbWUsIHZhbHVlKSA6IGdldE9wdGlvbmFs
KG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0Q29uc3Ry
YWludChib29sIG1hbmRhdG9yeSwgY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCYgdmFsdWUp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1hbmRhdG9yeSA/IGdldE1hbmRhdG9yeShuYW1lLCB2YWx1
ZSkgOiBnZXRPcHRpb25hbChuYW1lLCB2YWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmM2NGU1NjZkODM4NDU5OTRiMWZjOTZkNjUxMTZmNWNkMDE0MmQ3MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25z
dHJhaW50c0ltcGwuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMg
Y29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnN0
cmFpbnRzSW1wbF9oCisjZGVmaW5lIE1lZGlhQ29uc3RyYWludHNJbXBsX2gKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBcnJheVZhbHVlLmgiCisjaW5jbHVkZSAiRGlj
dGlvbmFyeS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKKyNpbmNsdWRlICJNZWRpYUNv
bnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIDogcHVibGljIE1lZGlhQ29uc3RyYWlu
dHMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBs
PiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFs
IH5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpOworCisgICAgdmlydHVhbCB2b2lkIGdldENvbnN0cmFp
bnROYW1lcyhib29sIG1hbmRhdG9yeSwgVmVjdG9yPFN0cmluZz4mIG5hbWVzKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29uc3RyYWludChib29sIG1hbmRhdG9yeSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0Q29uc3RyYWludChib29sIG1hbmRhdG9yeSwgY29uc3QgU3RyaW5nJiBuYW1l
LCB1bnNpZ25lZCYgdmFsdWUpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIE1lZGlh
Q29uc3RyYWludHNJbXBsKCkgeyB9CisgICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IERpY3Rpb25h
cnkmKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+CisgICAgYm9vbCBnZXRNYW5k
YXRvcnkoY29uc3QgU3RyaW5nJiBuYW1lLCBSZXN1bHQmIHZhbHVlKSBjb25zdDsKKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+CisgICAgYm9vbCBnZXRPcHRpb25hbChjb25zdCBTdHJp
bmcmIG5hbWUsIFJlc3VsdCYgdmFsdWUpIGNvbnN0OworCisgICAgRGljdGlvbmFyeSBtX21hbmRh
dG9yeUNvbnN0cmFpbnRzOworCisgICAgQXJyYXlWYWx1ZSBtX29wdGlvbmFsQ29uc3RyYWludHM7
CisgICAgVmVjdG9yPFN0cmluZz4gbV9vcHRpb25hbENvbnN0cmFpbnROYW1lczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNlbmRpZiAvLyBNZWRpYUNvbnN0cmFpbnRzSW1wbF9oCisKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRl
eCBmMDYzYjkyNzliYWU1Yzg1ODgwNWE4NWUwOGI3OWI5NzE0NWFiNGFjLi5lYzFlMzFhZTkzNmY0
NTdkMzU1OWVkZDgzZjgzN2I3MzA3ZGIwZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5o
IgogI2luY2x1ZGUgIlJUQ0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAKQEAgLTkwLDEzICs5MSwxNyBAQCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3Vy
YXRpb24+IFJUQ1BlZXJDb25uZWN0aW9uOjpwYXJzZUNvbmZpZ3VyYXRpb24oY29uc3QgRGljdGlv
bgogICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxSVENQZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9u
LCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPFJUQ1Bl
ZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIGNvbnN0
IERpY3Rpb25hcnkmIG1lZGlhQ29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IFJlZlB0cjxSVENDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gcGFyc2VDb25maWd1cmF0
aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IGFkb3B0
UmVmKG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBjb25maWd1cmF0aW9uLnJlbGVhc2Uo
KSwgZWMpKTsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMgPSBNZWRp
YUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKG1lZGlhQ29uc3RyYWludHMsIGVjKTsKKyAgICBpZiAo
ZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBw
ZWVyQ29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBj
b25maWd1cmF0aW9uLnJlbGVhc2UoKSwgY29uc3RyYWludHMucmVsZWFzZSgpLCBlYykpOwogICAg
IHBlZXJDb25uZWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICBpZiAoZWMpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMTA0LDEyICsxMDksMTIgQEAgUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVj
dGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kgog
ICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5yZWxlYXNlKCk7CiB9CiAKLVJUQ1BlZXJDb25uZWN0
aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBFeGNlcHRpb25Db2RlJiBlYykKK1JUQ1BlZXJD
b25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQ
dHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX3JlYWR5U3RhdGUoUmVh
ZHlTdGF0ZU5ldykKIHsKICAgICBtX3BlZXJIYW5kbGVyID0gUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjpjcmVhdGUodGhpcyk7Ci0gICAgaWYgKCFtX3BlZXJIYW5kbGVyIHx8ICFtX3BlZXJIYW5k
bGVyLT5pbml0aWFsaXplKCkpCisgICAgaWYgKCFtX3BlZXJIYW5kbGVyIHx8ICFtX3BlZXJIYW5k
bGVyLT5pbml0aWFsaXplKGNvbmZpZ3VyYXRpb24sIGNvbnN0cmFpbnRzKSkKICAgICAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDQzNDIyZWRkMzYwMjMx
YzQ1ZWQ3OGQwNjczMjRlNTViMzdlMGJhZjIuLmM4MjA5ZDBhNjczNGU0YjMyMTRlODJjMWE3OGYw
ZjkwODA3N2E2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTQyLDYgKzQyLDggQEAKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhQ29u
c3RyYWludHM7CiBjbGFzcyBSVENDb25maWd1cmF0aW9uOwogCiBjbGFzcyBSVENQZWVyQ29ubmVj
dGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVibGljIFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0IHsKQEAgLTcwLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNv
dW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBSVENQZWVy
Q29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxSVENDb25maWd1
cmF0aW9uPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxSVENDb25maWd1cmF0aW9uPiBwYXJzZUNvbmZpZ3VyYXRpb24oY29uc3QgRGljdGlvbmFy
eSYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
MmZhMzQ5OTA1Yzc4NDM3Y2U1ZjI4MmJhOGFlY2I2MjVkZWNjNjI0Ni4uZjgyZWQ5YmJiMTRjYzkz
NjdjYjE1Y2M5ZDQxMTU1ZDE5MTNmMmU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDQ0LDYgKzQ0
NCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlRGVz
Y3JpcHRvci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VPcHRpb25z
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlT3B0aW9ucy5oJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhSGludHMuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUhpbnRzLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcCcsCkBAIC0xNTgwLDYg
KzE1ODEsOCBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRl
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5j
cHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5o
JywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBs
LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRz
SW1wbC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwJywKQEAg
LTgzMTYsNiArODMxOSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJIVFRQTG9hZEluZm8uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYklDRU9wdGlvbnMuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhSGludHMuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtQ29tcG9u
ZW50LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlv
bmFyeS5jcHAKaW5kZXggYmE5NjBkYzgyODNiZWEzYTJkNGUyNzAxMGM0OWUzY2I0OTQzZjZkZi4u
ZDIwYjQ0NTRiMWRjZGE0Njk3YmU4MDk1M2RmMWU0NTkzNzkzMjJjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKQEAgLTc5LDYgKzc5LDI1IEBAIGJvb2wgRGlj
dGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+JiBtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRGljdGlvbmFyeTo6
Z2V0T3duUHJvcGVydHlOYW1lcyhXVEY6OlZlY3RvcjxTdHJpbmc+JiBuYW1lcykgY29uc3QKK3sK
KyAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEpTT2JqZWN0KiBvYmplY3QgPSAgbV9kaWN0aW9uYXJ5LmluaXRpYWxpemVyT2JqZWN0
KCk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNTdGF0ZSgpOworCisg
ICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMpOworICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0eU5hbWVzLmVu
ZCgpOyBpdCsrKSB7CisgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSB1c3RyaW5nVG9TdHJpbmco
aXQtPnVzdHJpbmcoKSk7CisgICAgICAgIGlmICghc3RyaW5nS2V5LmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIG5hbWVzLmFwcGVuZChzdHJpbmdLZXkpOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCiBib29sIERpY3Rpb25hcnk6OmdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9kaWN0aW9uYXJ5LmdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhwcm9wZXJ0eU5hbWUs
IHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25h
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAppbmRleCAxY2Jk
N2Q5NTVmN2Q5ZTMzN2EzZjhiNmI1NzUwMjkyOTE1OWVhM2RiLi5iMGRkOTc1MTcyNGE5ZTc4OWEx
Zjg2ODlmMDc1MjYwNDc0NGQ4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlv
bmFyeS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT2JqZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5LmlzVmFsaWQoKTsgfQogICAgIGJvb2wgaXNVbmRlZmlu
ZWRPck51bGwoKSBjb25zdCB7IHJldHVybiAhbV9kaWN0aW9uYXJ5LmlzVmFsaWQoKTsgfQogICAg
IGJvb2wgZ2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+JikgY29uc3Q7CisgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eU5hbWVzKFdURjo6VmVj
dG9yPFN0cmluZz4mKSBjb25zdDsKICAgICBib29sIGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVj
ayhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCmluZGV4IDE1
ZGEyZmZlODE5NzRhN2ZmNjAyOGQ5ZTVmNGMyYjFiYWYwMGE3YWIuLmYyNjlmZmM1ODQ4MWEwOWI0
YjU1OTBlNzk0ZmE0NGE1NDkwYTVhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0Rp
Y3Rpb25hcnkuY3BwCkBAIC00OTQsNCArNDk0LDI3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0T3du
UHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBo
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydHlO
YW1lcyhXVEY6OlZlY3RvcjxTdHJpbmc+JiBuYW1lcykgY29uc3QKK3sKKyAgICBpZiAoIWlzT2Jq
ZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb3B0aW9ucyA9IG1fb3B0aW9ucy0+VG9PYmplY3QoKTsKKyAgICBpZiAob3B0aW9ucy5Jc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+
IHByb3BlcnRpZXMgPSBvcHRpb25zLT5HZXRPd25Qcm9wZXJ0eU5hbWVzKCk7CisgICAgaWYgKHBy
b3BlcnRpZXMuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgcHJvcGVydGllcy0+TGVuZ3RoKCk7ICsraSkgeworICAgICAgICB2ODo6
TG9jYWw8djg6OlN0cmluZz4ga2V5ID0gcHJvcGVydGllcy0+R2V0KGkpLT5Ub1N0cmluZygpOwor
ICAgICAgICBpZiAoIW9wdGlvbnMtPkhhcyhrZXkpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSB0b1dlYkNvcmVTdHJpbmcoa2V5KTsKKyAgICAgICAg
bmFtZXMuYXBwZW5kKHN0cmluZ0tleSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25h
cnkuaAppbmRleCA4MzczYzdiMjhkM2EyNDEyYmQ2NmMzYzA5N2JjOWI0NGQ3NDUxMDU0Li43Njdk
NDQ4MTU1MTVkMmQ3YWJjYzQ1YjgxMTY4ZTg3MjY3MDJkMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRGljdGlvbmFyeS5oCkBAIC05MCw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGdldChjb25zdCBTdHJpbmcmLCBBcnJheVZhbHVlJikgY29uc3Q7CiAKICAgICBib29sIGdldE93
blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoV1RGOjpIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYp
IGNvbnN0OworICAgIGJvb2wgZ2V0T3duUHJvcGVydHlOYW1lcyhXVEY6OlZlY3RvcjxTdHJpbmc+
JikgY29uc3Q7CiAKICAgICBib29sIGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBT
dHJpbmcmLCBTdHJpbmcmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFDb25zdHJhaW50cy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWIzMjUyN2Y4ZTE2ZWU1NWRlOTQyYTRhNWI1MGFiMDUxODM1OGM3MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViTWVkaWFDb25zdHJhaW50cy5jcHAKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVk
aWFDb25zdHJhaW50cy5oPgorCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk1lZGlhQ29u
c3RyYWludHM6OldlYk1lZGlhQ29uc3RyYWludHMoY29uc3QgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiYgY29uc3RyYWludHMpCisgICAgOiBtX3ByaXZhdGUoY29uc3RyYWludHMpCit7Cit9
CisKK3ZvaWQgV2ViTWVkaWFDb25zdHJhaW50czo6YXNzaWduKGNvbnN0IFdlYk1lZGlhQ29uc3Ry
YWludHMmIG90aGVyKQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwor
dm9pZCBXZWJNZWRpYUNvbnN0cmFpbnRzOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0
KCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFDb25zdHJhaW50czo6aXNOdWxsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOworfQorCit2b2lkIFdlYk1lZGlhQ29uc3RyYWlu
dHM6OmdldENvbnN0cmFpbnROYW1lcyhib29sIG1hbmRhdG9yeSwgV2ViVmVjdG9yPFdlYlN0cmlu
Zz4mIG5hbWVzKSBjb25zdAoreworICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIFZlY3RvcjxT
dHJpbmc+IGNvbnN0cmFpbnROYW1lczsKKyAgICBtX3ByaXZhdGUtPmdldENvbnN0cmFpbnROYW1l
cyhtYW5kYXRvcnksIGNvbnN0cmFpbnROYW1lcyk7CisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4g
cmVzdWx0KGNvbnN0cmFpbnROYW1lcyk7CisgICAgbmFtZXMuc3dhcChyZXN1bHQpOworfQorCiti
b29sIFdlYk1lZGlhQ29uc3RyYWludHM6OmdldENvbnN0cmFpbnQoYm9vbCBtYW5kYXRvcnksIGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBBU1NF
UlQoIWlzTnVsbCgpKTsKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlmIChtX3ByaXZhdGUtPmdl
dENvbnN0cmFpbnQobWFuZGF0b3J5LCBuYW1lLCByZXN1bHQpKSB7CisgICAgICAgIHZhbHVlID0g
cmVzdWx0OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIFdlYk1lZGlhQ29uc3RyYWludHM6OmdldENvbnN0cmFpbnQoYm9vbCBtYW5kYXRv
cnksIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgdW5zaWduZWQmIHZhbHVlKSBjb25zdAoreworICAg
IEFTU0VSVCghaXNOdWxsKCkpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmdldENvbnN0cmFpbnQo
bWFuZGF0b3J5LCBuYW1lLCB2YWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5
MzZhNDk1NmVjMTA1NzU4ZjZkMTNmYTRkODQ3ZTExYzEwMTg4NDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwor
ICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFDb25zdHJhaW50c19oCisjZGVm
aW5lIE1lZGlhQ29uc3RyYWludHNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFDb25zdHJhaW50cyA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludHM+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5N
ZWRpYUNvbnN0cmFpbnRzKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29uc3RyYWludE5h
bWVzKGJvb2wgbWFuZGF0b3J5LCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0Q29uc3RyYWludChib29sIG1hbmRhdG9yeSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGdldENv
bnN0cmFpbnQoYm9vbCBtYW5kYXRvcnksIGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQmIHZh
bHVlKSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYUNvbnN0cmFpbnRzKCkgeyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjZW5kaWYgLy8gTWVkaWFDb25zdHJhaW50c19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oCmluZGV4IGU1ODA0MDcwZTY1NjIwN2Y3YmM0NjkzN2Y2NDY1NDkwN2EzZDM4YTku
Ljc1NThmMmUxNmE1YTdlMDdkYjczYjM4ZWNjZmRjOWJkY2FjMWM1NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oCkBAIC0zOCw2ICszOCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgTWVkaWFDb25zdHJhaW50czsKK2NsYXNzIFJUQ0NvbmZpZ3VyYXRpb247CiBjbGFz
cyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CiAKIGNsYXNzIFJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlciB7CkBAIC00NSw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IGNyZWF0ZShSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoKSB7
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpbml0aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4sIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKIAogcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2hyb21pdW0uY3BwCmluZGV4IDQ1YjZhNjJiMzQwYTIyOGUzNGQwOTFhMDU4OTkwZmNkOGZj
MDI4NTguLmQyY2Q1NDUyNzBkNjk0YTQ4NTIzM2Q5YzRiYTEyY2U1YmYyZTIwODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5j
cHAKQEAgLTM0LDggKzM0LDEyIEBACiAKICNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgorI2luY2x1ZGUg
IlJUQ0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQuaCIKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViTWVkaWFDb25zdHJhaW50cy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENDb25maWd1cmF0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNTUsMTAgKzU5LDEwIEBAIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjp+
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0oKQogewogfQogCi1ib29sIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtOjppbml0aWFsaXplKCkKK2Jvb2wgUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2hyb21pdW06OmluaXRpYWxpemUoUGFzc1JlZlB0cjxSVENDb25maWd1cmF0
aW9uPiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFp
bnRzKQogewogICAgIG1fd2ViSGFuZGxlciA9IGFkb3B0UHRyKFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+Y3JlYXRlUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKHRoaXMpKTsKLSAgICByZXR1
cm4gbV93ZWJIYW5kbGVyID8gbV93ZWJIYW5kbGVyLT5pbml0aWFsaXplKCkgOiBmYWxzZTsKKyAg
ICByZXR1cm4gbV93ZWJIYW5kbGVyID8gbV93ZWJIYW5kbGVyLT5pbml0aWFsaXplKGNvbmZpZ3Vy
YXRpb24sIGNvbnN0cmFpbnRzKSA6IGZhbHNlOwogfQogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNocm9taXVtOjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oCmluZGV4IDI3MmNkOTRkZGJmM2U1YzAwYTBlYmEw
ODY5YTcxZDA4ZDgyYzBlZGMuLjY5ZmMyNGQzMzVlZDAyYTk1MGNjMGE2NzEwOWM3YjY1YmY2YTZl
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9t
aXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
Q2hyb21pdW0uaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2hyb21pdW0oUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Kik7CiAgICAg
dmlydHVhbCB+UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0oKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBpbml0aWFsaXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGluaXRpYWxp
emUoUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAogICAg
IC8vIFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50IGltcGxlbWVudGF0
aW9uLgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDUzNmM3NTFkOGVhMjllNzBiNWJmYWFmODFhZjU0MWQ1MzMzNTJjZTMuLmI2NmVlZDBmMTQ2ZjJj
NjMxZmE2NTRiMjNjY2M4NTY4NjFkNmUwMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wOC0yOCAgVG9tbXkg
V2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBB
UEk6IEludHJvZHVjZSBNZWRpYUNvbnN0cmFpbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEV4dGVuZGluZyB0aGUgTW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlciB3aXRoIE1lZGlhQ29uc3RyYWludHMgZnVuY3Rpb25hbGl0eS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuY3BwOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6TW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAgICAgIChpc1N1cHBvcnRlZENvbnN0cmFp
bnQpOgorICAgICAgICAoaXNWYWxpZENvbnN0cmFpbnQpOgorICAgICAgICAoTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAo
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisKIDIwMTItMDgtMjggIEFuZHJhcyBC
ZWNzaSAgPGFuZHJhcy5iZWNzaUBub2tpYS5jb20+CiAKICAgICAgICAgW3dhdGNobGlzdF0gVW5y
ZXZpZXdlZCwgc3Vic2NyaWJlIHRvIFF0IGJ1Z3MuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuY3BwCmluZGV4IDNhYWQ3OGQ5ZGFmZTU0NjhjNmQxYjNmNzg2NDdmN2QxMmUwMDUyNGUuLjRm
MmQ5MjJmNzIyZTBhOTgyZThjNzc5ZWM4ZTljYmRhMjAzMDc4MTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuY3BwCkBAIC0zMywxNiArMzMsNDcgQEAKIAogI2luY2x1ZGUgIk1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRp
YUNvbnN0cmFpbnRzLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNsaWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLU1vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIo
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KikKK01vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQpCiB7CiB9CiAKLWJvb2wgTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcjo6aW5pdGlhbGl6ZSgpCitzdGF0aWMgYm9vbCBpc1N1cHBvcnRl
ZENvbnN0cmFpbnQoY29uc3QgV2ViU3RyaW5nJiBjb25zdHJhaW50KQogeworICAgIHJldHVybiBj
b25zdHJhaW50ID09ICJ2YWxpZF9hbmRfc3VwcG9ydGVkXzEiIHx8IGNvbnN0cmFpbnQgPT0gInZh
bGlkX2FuZF9zdXBwb3J0ZWRfMiI7Cit9CisKK3N0YXRpYyBib29sIGlzVmFsaWRDb25zdHJhaW50
KGNvbnN0IFdlYlN0cmluZyYgY29uc3RyYWludCkKK3sKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWRD
b25zdHJhaW50KGNvbnN0cmFpbnQpIHx8IGNvbnN0cmFpbnQgPT0gInZhbGlkX2J1dF91bnN1cHBv
cnRlZF8xIiB8fCBjb25zdHJhaW50ID09ICJ2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMiI7Cit9CisK
K2Jvb2wgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6aW5pdGlhbGl6ZShjb25zdCBX
ZWJSVENDb25maWd1cmF0aW9uJiwgY29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWlu
dHMpCit7CisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gbWFuZGF0b3J5Q29uc3RyYWludE5hbWVz
OworICAgIGNvbnN0cmFpbnRzLmdldENvbnN0cmFpbnROYW1lcyh0cnVlLCBtYW5kYXRvcnlDb25z
dHJhaW50TmFtZXMpOworICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50TmFtZXMuc2l6ZSgpKSB7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFuZGF0b3J5Q29uc3RyYWludE5hbWVz
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVkQ29uc3RyYWludCht
YW5kYXRvcnlDb25zdHJhaW50TmFtZXNbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IG9wdGlvbmFs
Q29uc3RyYWludE5hbWVzOworICAgIGNvbnN0cmFpbnRzLmdldENvbnN0cmFpbnROYW1lcyhmYWxz
ZSwgb3B0aW9uYWxDb25zdHJhaW50TmFtZXMpOworICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnRO
YW1lcy5zaXplKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcHRpb25hbENv
bnN0cmFpbnROYW1lcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkQ29u
c3RyYWludChvcHRpb25hbENvbnN0cmFpbnROYW1lc1tpXSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCA1ODlmNmU5NzM1NDE4ZmYxNTNmZmUxZjI2
ZDE0ZjJhN2UxNWJhYWU0Li4wMTYyYmRiODUwYzMwNjYzZWM2NWQzMzcwNGFhY2U5ZWQ0ODhhMDE3
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC00Miw3ICs0Miw4IEBAIGNsYXNz
IE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcihXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dCopOwogCi0gICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBXZWJLaXQ6OldlYlJUQ0NvbmZpZ3VyYXRpb24mLCBj
b25zdCBXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHMmKSBPVkVSUklERTsKKwogICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGYwN2FhNDMwMDI1
NDk1MzcyOThjM2VjODBlYmI5OTEwZGJjODNlMS4uYzY5ZGUyNmIyMzY0ZDUxOTkzMGQyMjc0NGQ0
YWIxOGE4NDk1MmM5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA4LTI4ICBUb21teSBX
aWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQ
STogSW50cm9kdWNlIE1lZGlhQ29uc3RyYWludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmh0bWw6CisKIDIwMTItMDgtMjggIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtFRkxdW1dLMl1bV1RSXSBSZWJhc2VsaW5lIG5ld2x5IGFkZGVkIFNW
RyB0ZXh0IHRlc3QgY2FzZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKaW5kZXggY2YxYmJiNTU0ZWFm
ZTNlMGJjYmM3ZDFmNGIyNGQ3NWU4OWI0MjUxYy4uZjUxMzA4NTUwODFlMmRhNzhiZmM5MGRmY2Rm
MjFlZDY5ZTcxMGFkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTcsMTggKzcsMjkgQEAg
UEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCk7IGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwgbnVsbCk7IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24o
dW5kZWZpbmVkKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5ldyB3ZWJraXRSVENQ
ZWVyQ29ubmVjdGlvbih1bmRlZmluZWQsIHVuZGVmaW5lZCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oKTsgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbignJyk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBhbiBvYmplY3Qu
LgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwgJycpOyB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBOb3QgYW4gb2JqZWN0Li4KIFBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uKHtpY2VTZXJ2ZXJzOltdfSwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3N0
dW46Zm9vLmNvbSd9XX0sIG51bGwpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmV3
IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJpOid0dXJuOmZvby5jb20n
LCBjcmVkZW50aWFsOid4J31dfSwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFT
UyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3R1cm46Zm9v
LmNvbScsIGNyZWRlbnRpYWw6J3gnfSx7dXJpOidzdHVuOmJhci5jb20nfV19LCBudWxsKTsgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbigp
OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1Mg
bmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCcnKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogTm90IGFuIG9iamVjdC4uCi1QQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxs
LCAnJyk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBhbiBvYmplY3QuLgogUEFTUyBu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZlcnM6W119LCBudWxsKTsgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBB
U1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOnRydWV9LCBudWxsKTsg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KIFBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlsxLCAyLCAz
XX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00g
RXhjZXB0aW9uIDE3LgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZl
cnM6W3t9XX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2lj
ZVNlcnZlcnM6W3t1cmw6J2Zvbyd9XX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24obnVsbCwge21hbmRhdG9yeTp7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjF9fSk7
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rp
b24obnVsbCwge21hbmRhdG9yeTp7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjEsIHZhbGlkX2FuZF9z
dXBwb3J0ZWRfMjoxfX0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtp
dFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHtvcHRpb25hbDpbe3ZhbGlkX2FuZF9zdXBwb3J0ZWRf
MToxfV19KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbihudWxsLCB7b3B0aW9uYWw6W3t2YWxpZF9hbmRfc3VwcG9ydGVkXzE6MX0se3Zh
bGlkX2FuZF9zdXBwb3J0ZWRfMjoxfV19KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7b3B0aW9uYWw6W3t2YWxpZF9idXRf
dW5zdXBwb3J0ZWRfMToxfSx7dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzI6MX1dfSk7IGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwg
e21hbmRhdG9yeTp7aW52YWxpZDoxfX0pOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQ
T1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVj
dGlvbihudWxsLCB7bWFuZGF0b3J5Ont2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMToxfX0pOyB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQ
QVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7bWFuZGF0b3J5Ont2YWxpZF9i
dXRfdW5zdXBwb3J0ZWRfMToxLCB2YWxpZF9hbmRfc3VwcG9ydGVkXzE6MX19KTsgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge29wdGlvbmFsOnt2YWxpZF9hbmRfc3Vw
cG9ydGVkXzE6MX19KTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjog
RE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGws
IHtvcHRpb25hbDpbe3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMToxLHZhbGlkX2FuZF9zdXBwb3J0ZWRf
MjoxfV19KTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4
Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHtvcHRp
b25hbDpbe2ludmFsaWQ6MX1dfSk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRF
RF9FUlI6IERPTSBFeGNlcHRpb24gOS4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5odG1sCmluZGV4IDBmMjllNmIyNThlMGY4MjUzMDdjMjgwMGM5MzVj
NTY2MTNkZmMxMTguLjIzYmI4ODlhZTUwY2U1YmVmODdiODI0YTY2MDBjZjFkNjZiYTI2MTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
Lmh0bWwKQEAgLTExLDE5ICsxMSwzMiBAQCBzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1Bl
ZXJDb25uZWN0aW9uKG51bGwpOyIpOwogc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbihudWxsLCBudWxsKTsiKTsKIHNob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRD
UGVlckNvbm5lY3Rpb24odW5kZWZpbmVkKTsiKTsKIHNob3VsZE5vdFRocm93KCJuZXcgd2Via2l0
UlRDUGVlckNvbm5lY3Rpb24odW5kZWZpbmVkLCB1bmRlZmluZWQpOyIpOworc2hvdWxkVGhyb3co
Im5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbigpOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJr
aXRSVENQZWVyQ29ubmVjdGlvbignJyk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1Bl
ZXJDb25uZWN0aW9uKG51bGwsICcnKTsiKTsKKwogc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRS
VENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbXX0sIG51bGwpOyIpOwogc2hvdWxkTm90VGhy
b3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTonc3R1bjpm
b28uY29tJ31dfSwgbnVsbCk7Iik7CiBzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJpOid0dXJuOmZvby5jb20nLCBjcmVkZW50aWFsOid4
J31dfSwgbnVsbCk7Iik7CiBzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0
aW9uKHtpY2VTZXJ2ZXJzOlt7dXJpOid0dXJuOmZvby5jb20nLCBjcmVkZW50aWFsOid4J30se3Vy
aTonc3R1bjpiYXIuY29tJ31dfSwgbnVsbCk7Iik7Ci0KLXNob3VsZFRocm93KCJuZXcgd2Via2l0
UlRDUGVlckNvbm5lY3Rpb24oKTsiKTsKLXNob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb24oJycpOyIpOwotc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlv
bihudWxsLCAnJyk7Iik7CiBzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9u
KHtmb29TZXJ2ZXJzOltdfSwgbnVsbCk7Iik7CiBzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1Bl
ZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOnRydWV9LCBudWxsKTsiKTsKIHNob3VsZFRocm93KCJu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6WzEsIDIsIDNdfSwgbnVsbCk7
Iik7CiBzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJz
Olt7fV19LCBudWxsKTsiKTsKIHNob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rp
b24oe2ljZVNlcnZlcnM6W3t1cmw6J2Zvbyd9XX0sIG51bGwpOyIpOworCitzaG91bGROb3RUaHJv
dygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHttYW5kYXRvcnk6e3ZhbGlkX2Fu
ZF9zdXBwb3J0ZWRfMToxfX0pOyIpOworc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbihudWxsLCB7bWFuZGF0b3J5Ont2YWxpZF9hbmRfc3VwcG9ydGVkXzE6MSwgdmFs
aWRfYW5kX3N1cHBvcnRlZF8yOjF9fSk7Iik7CitzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJU
Q1BlZXJDb25uZWN0aW9uKG51bGwsIHtvcHRpb25hbDpbe3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMTox
fV19KTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVs
bCwge29wdGlvbmFsOlt7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjF9LHt2YWxpZF9hbmRfc3VwcG9y
dGVkXzI6MX1dfSk7Iik7CitzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0
aW9uKG51bGwsIHtvcHRpb25hbDpbe3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xOjF9LHt2YWxpZF9i
dXRfdW5zdXBwb3J0ZWRfMjoxfV19KTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24obnVsbCwge21hbmRhdG9yeTp7aW52YWxpZDoxfX0pOyIpOworc2hvdWxkVGhy
b3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7bWFuZGF0b3J5Ont2YWxpZF9i
dXRfdW5zdXBwb3J0ZWRfMToxfX0pOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbihudWxsLCB7bWFuZGF0b3J5Ont2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMToxLCB2
YWxpZF9hbmRfc3VwcG9ydGVkXzE6MX19KTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRD
UGVlckNvbm5lY3Rpb24obnVsbCwge29wdGlvbmFsOnt2YWxpZF9hbmRfc3VwcG9ydGVkXzE6MX19
KTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge29w
dGlvbmFsOlt7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjEsdmFsaWRfYW5kX3N1cHBvcnRlZF8yOjF9
XX0pOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7
b3B0aW9uYWw6W3tpbnZhbGlkOjF9XX0pOyIpOworCiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161032</attachid>
            <date>2012-08-28 12:32:05 -0700</date>
            <delta_ts>2012-08-30 09:33:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95198-20120828213155.patch</filename>
            <type>text/plain</type>
            <size>49118</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhYjIxZTA1NWU0MGFm
ZTU1NzAxNTMyNzJkMDljNDFkMmQ4OTBmZGIxLi41NzFlOTljNjk2NTMwYTU4NDU1NTZlMDZkY2Rj
ZDUxN2QxZmY2YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wOC0yOCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IEludHJvZHVjZSBNZWRpYUNvbnN0cmFpbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgV2ViTWVkaWFDb25zdHJhaW50cy4KKwor
ICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYk1l
ZGlhQ29uc3RyYWludHMuaDogQ29waWVkIGZyb20gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhQ29uc3RyYWludHMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjpXZWJNZWRpYUNvbnN0cmFpbnRzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50czo6fldlYk1lZGlhQ29uc3RyYWludHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjpvcGVyYXRvcj0pOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgor
CiAyMDEyLTA4LTI3ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gU2hvdWxkIGFjY2VsZXJhdGUgcm90YXRpb25zIG9mID49IDE4MCBkZWdy
ZWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZGQzYzBjYzJhMzhhOTc2NTgxNzg5MTM4ZWFiNGRlMWIwNzZhNjM4
My4uNTBlMDQ0ZDViOGEyZTkxMmJlMzlkMmFmNGZkNTViM2ZiMTEwNzBjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDY1IEBACisyMDEyLTA4LTI4ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogSW50cm9kdWNlIE1lZGlhQ29u
c3RyYWludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1MTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBpbnRyb2R1Y2VzIE1lZGlhQ29uc3RyYWludHMgdG9nZXRoZXIgd2l0aCByZWxldmFudCBp
bmZyYXN0cnVjdHVyZSwgYSBjaHJvbWl1bSBtb2NrIGFuZCBMYXlvdXRUZXN0cy4KKworICAgICAg
ICBQYXRjaCBjb3ZlcmVkIGJ5IGV4cGFuZGVkIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRp
YWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNv
bnN0cmFpbnRzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6
Z2V0Q29uc3RyYWludE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJ
bXBsOjpnZXRDb25zdHJhaW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHNJbXBsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChNZWRpYUNvbnN0cmFpbnRzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnRzSW1wbDo6TWVkaWFDb25zdHJhaW50c0ltcGwpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29u
bmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRD
UGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6Omdl
dE93blByb3BlcnR5TmFtZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvRGljdGlvbmFyeS5oOgorICAgICAgICAoRGljdGlvbmFyeSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKERpY3Rpb25hcnkpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFDb25zdHJhaW50cy5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHM6OldlYk1lZGlhQ29uc3RyYWludHMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjphc3NpZ24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1l
ZGlhQ29uc3RyYWludHM6OmlzTnVsbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ29uc3Ry
YWludHM6OmdldENvbnN0cmFpbnROYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ29u
c3RyYWludHM6OmdldENvbnN0cmFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhQ29uc3RyYWludHMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKE1lZGlhQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50czo6fk1lZGlhQ29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50czo6TWVkaWFDb25zdHJhaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmluaXRp
YWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtLmg6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDaHJvbWl1bSk6CisKIDIwMTItMDgtMjggIEtvamkgSXNoaWkgIDxrb2ppaXNoaUBnbWFp
bC5jb20+CiAKICAgICAgICAgT1BFTlRZUEVfVkVSVElDQUwgc3VwcG9ydCBmb3IgQ2hyb21pdW0g
V2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9Q
bGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4IDdhYjA4MjYyYWZlNzYwNzE0NmU3Y2U0YmE2NGJm
NGU1ZjQ3ZjY5MDUuLmJjZDNkNzJjNmYzNjZmMDk3MjFiMTdlNGUwNGQyMDdjMGYzMjQxM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC04MCw2ICs4MCw3IEBACiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkxvY2FsaXplZFN0cmluZy5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViTWVkaWFDb25zdHJhaW50cy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
TWVkaWFIaW50cy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJl
YW1DZW50ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFt
Q2VudGVyQ2xpZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYk1lZGlhQ29uc3RyYWludHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzcyNzZmMzc0OTIwNjdmNDJm
NGE0MWRmZTZlYjFkOWU4NDY5MDNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTAsMCArMSw3NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViTWVkaWFDb25zdHJhaW50c19oCisjZGVmaW5lIFdlYk1lZGlhQ29uc3RyYWludHNf
aAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIK
KyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5j
bHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE1lZGlhQ29u
c3RyYWludHM7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJNZWRpYUNvbnN0
cmFpbnRzIHsKK3B1YmxpYzoKKyAgICBXZWJNZWRpYUNvbnN0cmFpbnRzKCkgeyB9CisgICAgV2Vi
TWVkaWFDb25zdHJhaW50cyhjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJiBvdGhlcikgeyBhc3Np
Z24ob3RoZXIpOyB9CisgICAgfldlYk1lZGlhQ29uc3RyYWludHMoKSB7IHJlc2V0KCk7IH0KKwor
ICAgIFdlYk1lZGlhQ29uc3RyYWludHMmIG9wZXJhdG9yPShjb25zdCBXZWJNZWRpYUNvbnN0cmFp
bnRzJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhlcik7CisgICAgICAgIHJldHVy
biAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdl
Yk1lZGlhQ29uc3RyYWludHMmKTsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwor
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZ2V0Q29u
c3RyYWludE5hbWVzKGJvb2wgbWFuZGF0b3J5LCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMp
IGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBnZXRDb25zdHJhaW50KGJvb2wgbWFuZGF0
b3J5LCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYlN0cmluZyYgdmFsdWUpIGNvbnN0OworICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBnZXRDb25zdHJhaW50KGJvb2wgbWFuZGF0b3J5LCBjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIHVuc2lnbmVkJiB2YWx1ZSkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KKyAgICBXZWJNZWRpYUNvbnN0cmFpbnRzKGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzPiYpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzPiBtX3ByaXZhdGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYk1lZGlhQ29uc3RyYWludHNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXggNzBjMjZhYjY1ZjczMjNkOGUzZjExMWFl
NDhhZmM4OWU2NDhhYTA3Zi4uZDZlMThkYjMwNjY0ZDc0ZmEwNTYxMzFhZjRiOTM0OGU1NDUzOGJj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC0zMiwxMyArMzIsMTUgQEAKICNkZWZp
bmUgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyX2gKIAogbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJNZWRpYUNvbnN0cmFpbnRzOworY2xhc3MgV2ViUlRDQ29uZmlndXJhdGlvbjsKIGNs
YXNzIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDsKIAogY2xhc3MgV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIoKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0IFdlYlJUQ0NvbmZpZ3VyYXRpb24m
LCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhZTI4ZWE3NjAzOTliZTg2OTEw
YmYxN2M0MjZmYWY0MzA1ZThhMmFkLi40NWRjODk1NzY4MjMyMmE4NmUxZDc0YWNhODk1NDZhZWVh
ODA5MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODQ0LDYgKzg0NCw3IEBAIFNFVChXZWJD
b3JlX1NPVVJDRVMKIAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmNwcAog
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAKKyAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcAogICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bUV2ZW50LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1MaXN0LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNzI4NzI5ZTEzYTEwMjkyODVkYWRjNmY0
ZGE2Y2M4NTJhZWMxYjhhNy4uNThmOWQ3YjdlNmUzMTVkMGY0NWQzZWZlZmNlZjI0YzlmYzAxNjdh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xODk0LDYgKzE4OTQsOCBAQCB3
ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9JY2VDYW5kaWRhdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAgXApAQCAtNDUyMyw2ICs0NTI1LDcg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0ljZU9wdGlvbnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9JY2VPcHRpb25zLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFIaW50cy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhSGludHMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWIzY2JmYmNlYjEyNDliYzgyYzBhNDQ0ZDhiYTMwNTU4NzU5OTVhMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
c0ltcGwuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29u
dHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJ
bXBsLmgiCisKKyNpbmNsdWRlICJBcnJheVZhbHVlLmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+
IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWlu
dHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzSW1w
bD4gb2JqZWN0ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29uc3RyYWludHNJbXBsKCkpOworICAgIGlm
ICghb2JqZWN0LT5pbml0aWFsaXplKGNvbnN0cmFpbnRzKSkgeworICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIG9iamVj
dC5yZWxlYXNlKCk7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRpYWxpemUo
Y29uc3QgRGljdGlvbmFyeSYgY29uc3RyYWludHMpCit7CisgICAgaWYgKGNvbnN0cmFpbnRzLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgVmVjdG9yPFN0
cmluZz4gbmFtZXM7CisgICAgY29uc3RyYWludHMuZ2V0T3duUHJvcGVydHlOYW1lcyhuYW1lcyk7
CisKKyAgICBTdHJpbmcgbWFuZGF0b3J5ID0gQVNDSUlMaXRlcmFsKCJtYW5kYXRvcnkiKTsKKyAg
ICBpZiAobmFtZXMuY29udGFpbnMobWFuZGF0b3J5KSkgeworICAgICAgICBib29sIG9rID0gY29u
c3RyYWludHMuZ2V0KG1hbmRhdG9yeSwgbV9tYW5kYXRvcnlDb25zdHJhaW50cyk7CisgICAgICAg
IGlmICghb2sgfHwgbV9tYW5kYXRvcnlDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFN0cmluZyBvcHRpb25hbCA9
IEFTQ0lJTGl0ZXJhbCgib3B0aW9uYWwiKTsKKyAgICBpZiAobmFtZXMuY29udGFpbnMob3B0aW9u
YWwpKSB7CisgICAgICAgIGJvb2wgb2sgPSBjb25zdHJhaW50cy5nZXQob3B0aW9uYWwsIG1fb3B0
aW9uYWxDb25zdHJhaW50cyk7CisgICAgICAgIGlmICghb2sgfHwgbV9vcHRpb25hbENvbnN0cmFp
bnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgc2l6ZV90IG51bWJlck9mQ29uc3RyYWludHM7CisgICAgICAgIG9rID0gbV9vcHRpb25h
bENvbnN0cmFpbnRzLmxlbmd0aChudW1iZXJPZkNvbnN0cmFpbnRzKTsKKyAgICAgICAgaWYgKCFv
aykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bWJlck9mQ29uc3RyYWludHM7ICsraSkgeworICAgICAgICAgICAgRGljdGlvbmFy
eSBjb25zdHJhaW50OworICAgICAgICAgICAgb2sgPSBtX29wdGlvbmFsQ29uc3RyYWludHMuZ2V0
KGksIGNvbnN0cmFpbnQpOworICAgICAgICAgICAgaWYgKCFvayB8fCBjb25zdHJhaW50LmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgVmVjdG9yPFN0cmluZz4gbG9jYWxOYW1lczsKKyAgICAgICAgICAgIGNvbnN0cmFpbnQuZ2V0
T3duUHJvcGVydHlOYW1lcyhsb2NhbE5hbWVzKTsKKyAgICAgICAgICAgIGlmIChsb2NhbE5hbWVz
LnNpemUoKSAhPSAxKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IG1fb3B0aW9uYWxDb25zdHJhaW50TmFtZXMuYXBwZW5kKGxvY2FsTmFtZXNbMF0pOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK01lZGlhQ29uc3RyYWludHNJbXBs
Ojp+TWVkaWFDb25zdHJhaW50c0ltcGwoKQoreworfQorCit2b2lkIE1lZGlhQ29uc3RyYWludHNJ
bXBsOjpnZXRDb25zdHJhaW50TmFtZXMoYm9vbCBtYW5kYXRvcnksIFZlY3RvcjxTdHJpbmc+JiBu
YW1lcykgY29uc3QKK3sKKyAgICBuYW1lcy5jbGVhcigpOworICAgIGlmIChtYW5kYXRvcnkpIHsK
KyAgICAgICAgaWYgKCFtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkp
CisgICAgICAgICAgICBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmdldE93blByb3BlcnR5TmFtZXMo
bmFtZXMpOworICAgIH0gZWxzZQorICAgICAgICBuYW1lcyA9IG1fb3B0aW9uYWxDb25zdHJhaW50
TmFtZXM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+Citib29sIE1lZGlhQ29uc3Ry
YWludHNJbXBsOjpnZXRNYW5kYXRvcnkoY29uc3QgU3RyaW5nJiBuYW1lLCBSZXN1bHQmIHZhbHVl
KSBjb25zdAoreworICAgIGlmIChtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX21hbmRhdG9yeUNv
bnN0cmFpbnRzLmdldChuYW1lLCB2YWx1ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXN1
bHQ+Citib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbChjb25zdCBTdHJpbmcm
IG5hbWUsIFJlc3VsdCYgdmFsdWUpIGNvbnN0Cit7CisgICAgc2l6ZV90IGluZGV4ID0gbV9vcHRp
b25hbENvbnN0cmFpbnROYW1lcy5maW5kKG5hbWUpOworICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRGljdGlvbmFyeSBjb25zdHJhaW50Owor
ICAgIG1fb3B0aW9uYWxDb25zdHJhaW50cy5nZXQoaW5kZXgsIGNvbnN0cmFpbnQpOworCisgICAg
cmV0dXJuIGNvbnN0cmFpbnQuZ2V0KG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBNZWRpYUNvbnN0
cmFpbnRzSW1wbDo6Z2V0Q29uc3RyYWludChib29sIG1hbmRhdG9yeSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBtYW5kYXRvcnkgPyBnZXRN
YW5kYXRvcnkobmFtZSwgdmFsdWUpIDogZ2V0T3B0aW9uYWwobmFtZSwgdmFsdWUpOworfQorCiti
b29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRDb25zdHJhaW50KGJvb2wgbWFuZGF0b3J5LCBj
b25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkJiB2YWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4g
bWFuZGF0b3J5ID8gZ2V0TWFuZGF0b3J5KG5hbWUsIHZhbHVlKSA6IGdldE9wdGlvbmFsKG5hbWUs
IHZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzY0ZTU2NmQ4Mzg0
NTk5NGIxZmM5NmQ2NTExNmY1Y2QwMTQyZDcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCkBAIC0wLDAg
KzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhp
cworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlhQ29uc3RyYWludHNJbXBsX2gKKyNkZWZpbmUg
TWVkaWFDb25zdHJhaW50c0ltcGxfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lu
Y2x1ZGUgIkFycmF5VmFsdWUuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAi
RXhjZXB0aW9uQmFzZS5oIgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFDb25z
dHJhaW50c0ltcGwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50cyB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IGNyZWF0ZShjb25zdCBEaWN0aW9u
YXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgfk1lZGlhQ29uc3RyYWludHNJbXBs
KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29uc3RyYWludE5hbWVzKGJvb2wgbWFuZGF0b3J5
LCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBnZXRDb25zdHJhaW50KGJvb2wgbWFuZGF0b3J5LCBjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmlu
ZyYgdmFsdWUpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBnZXRDb25zdHJhaW50
KGJvb2wgbWFuZGF0b3J5LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkJiB2YWx1ZSkgY29u
c3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoKSB7IH0K
KyAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOworCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFJlc3VsdD4KKyAgICBib29sIGdldE1hbmRhdG9yeShjb25zdCBTdHJpbmcmIG5h
bWUsIFJlc3VsdCYgdmFsdWUpIGNvbnN0OworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFJlc3Vs
dD4KKyAgICBib29sIGdldE9wdGlvbmFsKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVzdWx0JiB2YWx1
ZSkgY29uc3Q7CisKKyAgICBEaWN0aW9uYXJ5IG1fbWFuZGF0b3J5Q29uc3RyYWludHM7CisKKyAg
ICBBcnJheVZhbHVlIG1fb3B0aW9uYWxDb25zdHJhaW50czsKKyAgICBWZWN0b3I8U3RyaW5nPiBt
X29wdGlvbmFsQ29uc3RyYWludE5hbWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhQ29uc3Ry
YWludHNJbXBsX2gKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGYwNjNiOTI3OWJhZTVjODU4ODA1
YTg1ZTA4Yjc5Yjk3MTQ1YWI0YWMuLmVjMWUzMWFlOTM2ZjQ1N2QzNTU5ZWRkODNmODM3YjczMDdk
YjBmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQXJy
YXlWYWx1ZS5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJbXBsLmgiCiAjaW5jbHVkZSAiUlRDQ29uZmln
dXJhdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtOTAs
MTMgKzkxLDE3IEBAIFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4gUlRDUGVlckNvbm5lY3Rp
b246OnBhcnNlQ29uZmlndXJhdGlvbihjb25zdCBEaWN0aW9uCiAgICAgcmV0dXJuIHJ0Y0NvbmZp
Z3VyYXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBS
VENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRpb24sIGNvbnN0IERpY3Rpb25hcnkmLCBF
eGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8UlRDUGVlckNvbm5lY3Rpb24+IFJUQ1BlZXJD
b25uZWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RGljdGlvbmFyeSYgcnRjQ29uZmlndXJhdGlvbiwgY29uc3QgRGljdGlvbmFyeSYgbWVkaWFDb25z
dHJhaW50cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRp
b24+IGNvbmZpZ3VyYXRpb24gPSBwYXJzZUNvbmZpZ3VyYXRpb24ocnRjQ29uZmlndXJhdGlvbiwg
ZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8UlRDUGVl
ckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gYWRvcHRSZWYobmV3IFJUQ1BlZXJDb25uZWN0
aW9uKGNvbnRleHQsIGNvbmZpZ3VyYXRpb24ucmVsZWFzZSgpLCBlYykpOworICAgIFJlZlB0cjxN
ZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cyA9IE1lZGlhQ29uc3RyYWludHNJbXBsOjpjcmVh
dGUobWVkaWFDb25zdHJhaW50cywgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBSZWZQdHI8UlRDUGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gYWRvcHRS
ZWYobmV3IFJUQ1BlZXJDb25uZWN0aW9uKGNvbnRleHQsIGNvbmZpZ3VyYXRpb24ucmVsZWFzZSgp
LCBjb25zdHJhaW50cy5yZWxlYXNlKCksIGVjKSk7CiAgICAgcGVlckNvbm5lY3Rpb24tPnN1c3Bl
bmRJZk5lZWRlZCgpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDQsMTIg
KzEwOSwxMiBAQCBQYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlv
bjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAgICAgcmV0dXJuIHBlZXJDb25uZWN0
aW9uLnJlbGVhc2UoKTsKIH0KIAotUlRDUGVlckNvbm5lY3Rpb246OlJUQ1BlZXJDb25uZWN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8UlRDQ29uZmlndXJh
dGlvbj4sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUlRDUGVlckNvbm5lY3Rpb246OlJUQ1BlZXJDb25u
ZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8UlRDQ29u
ZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBj
b25zdHJhaW50cywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29u
dGV4dCwgdGhpcykKICAgICAsIG1fcmVhZHlTdGF0ZShSZWFkeVN0YXRlTmV3KQogewogICAgIG1f
cGVlckhhbmRsZXIgPSBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZSh0aGlzKTsKLSAg
ICBpZiAoIW1fcGVlckhhbmRsZXIgfHwgIW1fcGVlckhhbmRsZXItPmluaXRpYWxpemUoKSkKKyAg
ICBpZiAoIW1fcGVlckhhbmRsZXIgfHwgIW1fcGVlckhhbmRsZXItPmluaXRpYWxpemUoY29uZmln
dXJhdGlvbiwgY29uc3RyYWludHMpKQogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmgKaW5kZXggNDM0MjJlZGQzNjAyMzFjNDVlZDc4ZDA2NzMyNGU1NWIzN2Uw
YmFmMi4uYzgyMDlkMGE2NzM0ZTRiMzIxNGU4MmMxYTc4ZjBmOTA4MDc3YTZlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaApAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIGNsYXNzIFJUQ0Nv
bmZpZ3VyYXRpb247CiAKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8UlRDUGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewpAQCAtNzAs
NyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxSVENQZWVyQ29ubmVjdGlv
bj46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIFJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgUlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4sIEV4
Y2VwdGlvbkNvZGUmKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+
IHBhcnNlQ29uZmlndXJhdGlvbihjb25zdCBEaWN0aW9uYXJ5JiBjb25maWd1cmF0aW9uLCBFeGNl
cHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1ZTcyZDQzNzQ1ZGM4YTU1NGJhOWE0
NzQ0YzY1NTFlMDhmY2IyM2U0Li5lMTBhZmQ0MWU0Yjc4MzU3NzEwY2U1NjE0YjA4YWJhNjUzNDUz
ZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00NDQsNiArNDQ0LDcgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZU9wdGlvbnMuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VPcHRpb25zLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFIaW50cy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhSGludHMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1DZW50ZXIuY3BwJywKQEAgLTE1ODAsNiArMTU4MSw4IEBACiAgICAgICAgICAg
ICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmNwcCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9tZWRpYXN0cmVhbS9Mb2NhbE1lZGlhU3RyZWFtLmgnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwJywKKyAgICAgICAgICAgICdN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwJywKICAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5jcHAnLApAQCAtODMyMyw2ICs4MzI2LDcgQEAKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBMb2FkSW5mby5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSUNFQ2FuZGlkYXRl
RGVzY3JpcHRvci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViSUNFT3B0aW9ucy5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViTWVkaWFDb25zdHJhaW50cy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViTWVkaWFIaW50cy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAppbmRleCBiYTk2MGRj
ODI4M2JlYTNhMmQ0ZTI3MDEwYzQ5ZTNjYjQ5NDNmNmRmLi5kMjBiNDQ1NGIxZGNkYTQ2OTdiZTgw
OTUzZGYxZTQ1OTM3OTMyMmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9u
YXJ5LmNwcApAQCAtNzksNiArNzksMjUgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0
aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIG0KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKFdU
Rjo6VmVjdG9yPFN0cmluZz4mIG5hbWVzKSBjb25zdAoreworICAgIGlmICghbV9kaWN0aW9uYXJ5
LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNPYmplY3QqIG9iamVj
dCA9ICBtX2RpY3Rpb25hcnkuaW5pdGlhbGl6ZXJPYmplY3QoKTsKKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBtX2RpY3Rpb25hcnkuZXhlY1N0YXRlKCk7CisKKyAgICBQcm9wZXJ0eU5hbWVBcnJheSBw
cm9wZXJ0eU5hbWVzKGV4ZWMpOworICAgIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Cisg
ICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5h
bWVzLmJlZ2luKCk7IGl0ICE9IHByb3BlcnR5TmFtZXMuZW5kKCk7IGl0KyspIHsKKyAgICAgICAg
U3RyaW5nIHN0cmluZ0tleSA9IHVzdHJpbmdUb1N0cmluZyhpdC0+dXN0cmluZygpKTsKKyAgICAg
ICAgaWYgKCFzdHJpbmdLZXkuaXNFbXB0eSgpKQorICAgICAgICAgICAgbmFtZXMuYXBwZW5kKHN0
cmluZ0tleSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgRGljdGlvbmFy
eTo6Z2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1l
LCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBtX2RpY3Rpb25hcnkuZ2V0V2l0
aFVuZGVmaW5lZE9yTnVsbENoZWNrKHByb3BlcnR5TmFtZSwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRGljdGlvbmFyeS5oCmluZGV4IDFjYmQ3ZDk1NWY3ZDllMzM3YTNmOGI2YjU3
NTAyOTI5MTU5ZWEzZGIuLmIwZGQ5NzUxNzI0YTllNzg5YTFmODY4OWYwNzUyNjA0NzQ0ZDgwOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKQEAgLTYxLDYgKzYxLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25h
cnkuaXNWYWxpZCgpOyB9CiAgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0IHsgcmV0
dXJuICFtX2RpY3Rpb25hcnkuaXNWYWxpZCgpOyB9CiAgICAgYm9vbCBnZXRPd25Qcm9wZXJ0aWVz
QXNTdHJpbmdIYXNoTWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKKyAg
ICBib29sIGdldE93blByb3BlcnR5TmFtZXMoV1RGOjpWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Owog
ICAgIGJvb2wgZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmluZyYgcHJvcGVy
dHlOYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKaW5kZXggMTVkYTJmZmU4MTk3NGE3ZmY2MDI4ZDll
NWY0YzJiMWJhZjAwYTdhYi4uM2FmNjMzMGIyZmUxZGQyOTdlMGU2ZGY2NGMzODQ5ZmM0Yzg5MTQw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAgLTQ5NCw0
ICs0OTQsMjYgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNo
TWFwKFdURjo6SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGgKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorYm9vbCBEaWN0aW9uYXJ5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKFdURjo6VmVjdG9yPFN0cmlu
Zz4mIG5hbWVzKSBjb25zdAoreworICAgIGlmICghaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvcHRpb25zID0gbV9vcHRpb25z
LT5Ub09iamVjdCgpOworICAgIGlmIChvcHRpb25zLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcHJvcGVydGllcyA9IG9wdGlvbnMt
PkdldE93blByb3BlcnR5TmFtZXMoKTsKKyAgICBpZiAocHJvcGVydGllcy5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBwcm9wZXJ0
aWVzLT5MZW5ndGgoKTsgKytpKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBrZXkg
PSBwcm9wZXJ0aWVzLT5HZXQoaSktPlRvU3RyaW5nKCk7CisgICAgICAgIGlmICghb3B0aW9ucy0+
SGFzKGtleSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbmFtZXMuYXBwZW5kKHRv
V2ViQ29yZVN0cmluZyhrZXkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5o
CmluZGV4IDgzNzNjN2IyOGQzYTI0MTJiZDY2YzNjMDk3YmM5YjQ0ZDc0NTEwNTQuLjc2N2Q0NDgx
NTUxNWQyZDdhYmNjNDViODExNjhlODcyNjcwMmQwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9EaWN0aW9uYXJ5LmgKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0
KGNvbnN0IFN0cmluZyYsIEFycmF5VmFsdWUmKSBjb25zdDsKIAogICAgIGJvb2wgZ2V0T3duUHJv
cGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JikgY29u
c3Q7CisgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eU5hbWVzKFdURjo6VmVjdG9yPFN0cmluZz4mKSBj
b25zdDsKIAogICAgIGJvb2wgZ2V0V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGNvbnN0IFN0cmlu
ZyYsIFN0cmluZyYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYUNvbnN0cmFpbnRzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xYjMyNTI3ZjhlMTZlZTU1ZGU5NDJhNGE1YjUwYWIwNTE4MzU4YzcyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJN
ZWRpYUNvbnN0cmFpbnRzLmNwcApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYUNv
bnN0cmFpbnRzLmg+CisKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTWVkaWFDb25zdHJh
aW50czo6V2ViTWVkaWFDb25zdHJhaW50cyhjb25zdCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+JiBjb25zdHJhaW50cykKKyAgICA6IG1fcHJpdmF0ZShjb25zdHJhaW50cykKK3sKK30KKwor
dm9pZCBXZWJNZWRpYUNvbnN0cmFpbnRzOjphc3NpZ24oY29uc3QgV2ViTWVkaWFDb25zdHJhaW50
cyYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCit2b2lk
IFdlYk1lZGlhQ29uc3RyYWludHM6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsK
K30KKworYm9vbCBXZWJNZWRpYUNvbnN0cmFpbnRzOjppc051bGwoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7Cit9CisKK3ZvaWQgV2ViTWVkaWFDb25zdHJhaW50czo6
Z2V0Q29uc3RyYWludE5hbWVzKGJvb2wgbWFuZGF0b3J5LCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYg
bmFtZXMpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc051bGwoKSk7CisgICAgVmVjdG9yPFN0cmlu
Zz4gY29uc3RyYWludE5hbWVzOworICAgIG1fcHJpdmF0ZS0+Z2V0Q29uc3RyYWludE5hbWVzKG1h
bmRhdG9yeSwgY29uc3RyYWludE5hbWVzKTsKKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiByZXN1
bHQoY29uc3RyYWludE5hbWVzKTsKKyAgICBuYW1lcy5zd2FwKHJlc3VsdCk7Cit9CisKK2Jvb2wg
V2ViTWVkaWFDb25zdHJhaW50czo6Z2V0Q29uc3RyYWludChib29sIG1hbmRhdG9yeSwgY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBXZWJTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIEFTU0VSVCgh
aXNOdWxsKCkpOworICAgIFN0cmluZyByZXN1bHQ7CisgICAgaWYgKG1fcHJpdmF0ZS0+Z2V0Q29u
c3RyYWludChtYW5kYXRvcnksIG5hbWUsIHJlc3VsdCkpIHsKKyAgICAgICAgdmFsdWUgPSByZXN1
bHQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgV2ViTWVkaWFDb25zdHJhaW50czo6Z2V0Q29uc3RyYWludChib29sIG1hbmRhdG9yeSwg
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCYgdmFsdWUpIGNvbnN0Cit7CisgICAgQVNT
RVJUKCFpc051bGwoKSk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Z2V0Q29uc3RyYWludChtYW5k
YXRvcnksIG5hbWUsIHZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkzNmE0
OTU2ZWMxMDU3NThmNmQxM2ZhNGQ4NDdlMTFjMTAxODg0MgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaApAQCAt
MCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAg
ICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
IHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnN0cmFpbnRzX2gKKyNkZWZpbmUg
TWVkaWFDb25zdHJhaW50c19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFDb25zdHJhaW50cz4geworcHVibGljOgorICAgIHZpcnR1YWwgfk1lZGlh
Q29uc3RyYWludHMoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBnZXRDb25zdHJhaW50TmFtZXMo
Ym9vbCBtYW5kYXRvcnksIFZlY3RvcjxTdHJpbmc+JiBuYW1lcykgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBnZXRDb25zdHJhaW50KGJvb2wgbWFuZGF0b3J5LCBjb25zdCBTdHJpbmcmIG5h
bWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29uc3Ry
YWludChib29sIG1hbmRhdG9yeSwgY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCYgdmFsdWUp
IGNvbnN0ID0gMDsKKworcHJvdGVjdGVkOgorICAgIE1lZGlhQ29uc3RyYWludHMoKSB7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNlbmRpZiAvLyBNZWRpYUNvbnN0cmFpbnRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIuY3BwCmluZGV4IDU0MGZiZmNkYmNkNWY2ZGUwOTdiMDc4ZDcxZTIyNTU4ZTg1NzNhM2Uu
LjA1OGFhMTg2NzQ3NDRjZDE5OGJmNmMzYjk2ZDQzOTI1OWZiYThlNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyRHVtbXkoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Kik7
CiAgICAgdmlydHVhbCB+UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXkoKTsKIAotICAgIHZp
cnR1YWwgYm9vbCBpbml0aWFsaXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGluaXRp
YWxpemUoUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAog
cHJpdmF0ZToKQEAgLTY4LDcgKzY4LDcgQEAgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6
On5SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teSgpCiB7CiB9CiAKLWJvb2wgUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyRHVtbXk6OmluaXRpYWxpemUoKQorYm9vbCBSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJEdW1teTo6aW5pdGlhbGl6ZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQ
YXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KQogewogICAgIHJldHVybiBmYWxzZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXggZTU4MDQwNzBlNjU2MjA3ZjdiYzQ2OTM3ZjY0
NjU0OTA3YTNkMzhhOS4uNzU1OGYyZTE2YTVhN2UwN2RiNzNiMzhlY2NmZGM5YmRjYWMxYzU1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTM4LDYgKzM4LDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOworY2xhc3MgUlRDQ29uZmln
dXJhdGlvbjsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDsKIAogY2xhc3Mg
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyIHsKQEAgLTQ1LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcj4gY3JlYXRlKFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwogICAgIHZpcnR1YWwgflJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcigpIHsgfQogCi0gICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCkgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKaW5kZXggNDViNmE2MmIzNDBhMjI4ZTM0ZDA5
MWEwNTg5OTBmY2Q4ZmMwMjg1OC4uZDJjZDU0NTI3MGQ2OTRhNDg1MjMzZDljNGJhMTJjZTViZjJl
MjA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hy
b21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtLmNwcApAQCAtMzQsOCArMzQsMTIgQEAKIAogI2luY2x1ZGUgIlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRz
LmgiCisjaW5jbHVkZSAiUlRDQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudC5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YlJUQ0NvbmZpZ3VyYXRpb24uaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC01NSwxMCArNTksMTAgQEAgUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2hyb21pdW06On5SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bSgpCiB7CiB9CiAK
LWJvb2wgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmluaXRpYWxpemUoKQorYm9v
bCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZShQYXNzUmVmUHRy
PFJUQ0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gY29uc3RyYWludHMpCiB7CiAgICAgbV93ZWJIYW5kbGVyID0gYWRvcHRQdHIoV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIodGhp
cykpOwotICAgIHJldHVybiBtX3dlYkhhbmRsZXIgPyBtX3dlYkhhbmRsZXItPmluaXRpYWxpemUo
KSA6IGZhbHNlOworICAgIHJldHVybiBtX3dlYkhhbmRsZXIgPyBtX3dlYkhhbmRsZXItPmluaXRp
YWxpemUoY29uZmlndXJhdGlvbiwgY29uc3RyYWludHMpIDogZmFsc2U7CiB9CiAKIHZvaWQgUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OnN0b3AoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2No
cm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgKaW5kZXggMjcyY2Q5NGRk
YmYzZTVjMDBhMGViYTA4NjlhNzFkMDhkODJjMGVkYy4uNjlmYzI0ZDMzNWVkMDJhOTUwY2MwYTY3
MTA5YzdiNjViZjZhNmUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bShSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQqKTsKICAgICB2aXJ0dWFsIH5SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bSgp
OwogCi0gICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaW5pdGlhbGl6ZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9W
RVJSSURFOwogCiAgICAgLy8gV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGll
bnQgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYjAwOWEwMDkzMjk3OTI1OTYxYjA0NjQwMjI3MmIxZmJhMmZmMDMwMC4u
NGFmMDk2NmFkN2I0MDA0ZTJkMDQ0MzU5ZTJiOTc1YjkyNzg3MDdjMyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEy
LTA4LTI4ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAg
IE1lZGlhU3RyZWFtIEFQSTogSW50cm9kdWNlIE1lZGlhQ29uc3RyYWludHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTk4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0ZW5kaW5nIHRoZSBNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyIHdpdGggTWVkaWFDb25zdHJhaW50cyBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlci5jcHA6CisgICAgICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKGlzU3Vw
cG9ydGVkQ29uc3RyYWludCk6CisgICAgICAgIChpc1ZhbGlkQ29uc3RyYWludCk6CisgICAgICAg
IChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjppbml0aWFsaXplKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
Lmg6CisgICAgICAgIChNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKToKKwogMjAxMi0w
OC0yOCAgU3ppbGFyZCBMZWRhbiAgPHN6bGVkYW5AaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAg
IFt3ZWJraXQtcGF0Y2hdIGdldHMgc3R1Y2sgaW50byBhbiBpbmZpbml0ZSBsb29wIGlmIGJ1Z3pp
bGxhIGRvZXNuJ3QgcmVzcG9uZCBpbiB0aW1lLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmNwcAppbmRleCAzYWFkNzhkOWRhZmU1NDY4YzZkMWIzZjc4NjQ3ZjdkMTJlMDA1MjRlLi40ZjJk
OTIyZjcyMmUwYTk4MmU4Yzc3OWVjOGU5Y2JkYTIwMzA3ODE4IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmNwcApAQCAtMzMsMTYgKzMzLDQ3IEBACiAKICNpbmNsdWRlICJNb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFD
b25zdHJhaW50cy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlZlY3Rvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1Nb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopCitNb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyOjpNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50KQogewogfQogCi1ib29sIE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXI6OmluaXRpYWxpemUoKQorc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRD
b25zdHJhaW50KGNvbnN0IFdlYlN0cmluZyYgY29uc3RyYWludCkKIHsKKyAgICByZXR1cm4gY29u
c3RyYWludCA9PSAidmFsaWRfYW5kX3N1cHBvcnRlZF8xIiB8fCBjb25zdHJhaW50ID09ICJ2YWxp
ZF9hbmRfc3VwcG9ydGVkXzIiOworfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkQ29uc3RyYWludChj
b25zdCBXZWJTdHJpbmcmIGNvbnN0cmFpbnQpCit7CisgICAgcmV0dXJuIGlzU3VwcG9ydGVkQ29u
c3RyYWludChjb25zdHJhaW50KSB8fCBjb25zdHJhaW50ID09ICJ2YWxpZF9idXRfdW5zdXBwb3J0
ZWRfMSIgfHwgY29uc3RyYWludCA9PSAidmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzIiOworfQorCiti
b29sIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmluaXRpYWxpemUoY29uc3QgV2Vi
UlRDQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRz
KQoreworICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IG1hbmRhdG9yeUNvbnN0cmFpbnROYW1lczsK
KyAgICBjb25zdHJhaW50cy5nZXRDb25zdHJhaW50TmFtZXModHJ1ZSwgbWFuZGF0b3J5Q29uc3Ry
YWludE5hbWVzKTsKKyAgICBpZiAobWFuZGF0b3J5Q29uc3RyYWludE5hbWVzLnNpemUoKSkgewor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFpc1N1cHBvcnRlZENvbnN0cmFpbnQobWFu
ZGF0b3J5Q29uc3RyYWludE5hbWVzW2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBvcHRpb25hbENv
bnN0cmFpbnROYW1lczsKKyAgICBjb25zdHJhaW50cy5nZXRDb25zdHJhaW50TmFtZXMoZmFsc2Us
IG9wdGlvbmFsQ29uc3RyYWludE5hbWVzKTsKKyAgICBpZiAob3B0aW9uYWxDb25zdHJhaW50TmFt
ZXMuc2l6ZSgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3B0aW9uYWxDb25z
dHJhaW50TmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZENvbnN0
cmFpbnQob3B0aW9uYWxDb25zdHJhaW50TmFtZXNbaV0pKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXggNTg5ZjZlOTczNTQxOGZmMTUzZmZlMWYyNmQx
NGYyYTdlMTViYWFlNC4uMDE2MmJkYjg1MGMzMDY2M2VjNjVkMzM3MDRhYWNlOWVkNDg4YTAxNyAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtNDIsNyArNDIsOCBAQCBjbGFzcyBN
b2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyIDogcHVibGljIFdlYktpdDo6V2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbAogcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQq
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBib29sIGluaXRpYWxpemUoY29uc3QgV2ViS2l0OjpXZWJSVENDb25maWd1cmF0aW9uJiwgY29u
c3QgV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzJikgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc0NjgyMWIyYjUzYzMw
YzRhMzU5MjkzYWQ3NDAwYmU5YjBjMWQ5NGIuLjU4ZjJmMzFmZjJhYmMwMzBkMDFmYzJkYzA2Njg3
N2YzMDIxZDM4N2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wOC0yOCAgVG9tbXkgV2lk
ZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6
IEludHJvZHVjZSBNZWRpYUNvbnN0cmFpbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTE5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5odG1sOgorCiAyMDEyLTA4LTI4ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgUmViYXNlbGluaW5nIGNocm9taXVtLW1hYyB0ZXN0IHJlc3VsdHMgd2l0aCBzY3Jv
bGxiYXJzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLWV4cGVjdGVkLnR4dAppbmRleCBjZjFiYmI1NTRlYWZlM2UwYmNiYzdk
MWY0YjI0ZDc1ZTg5YjQyNTFjLi5mNTEzMDg1NTA4MWUyZGE3OGJmYzkwZGZjZGYyMWVkNjllNzEw
YWRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtNywxOCArNywyOSBAQCBQQVNTIG5ldyB3
ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQ
QVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCBudWxsKTsgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCiBQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1bmRlZmluZWQp
OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0
aW9uKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbigpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9u
KCcnKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uCitQQVNTIG5l
dyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCAnJyk7IHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBhbiBvYmplY3QuLgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24o
e2ljZVNlcnZlcnM6W119LCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5l
dyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTonc3R1bjpmb28uY29t
J31dfSwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuZXcgd2Via2l0UlRD
UGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRp
YWw6J3gnfV19LCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5ldyB3ZWJr
aXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VyaTondHVybjpmb28uY29tJywgY3Jl
ZGVudGlhbDoneCd9LHt1cmk6J3N0dW46YmFyLmNvbSd9XX0sIG51bGwpOyBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KLVBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCk7IHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0
UlRDUGVlckNvbm5lY3Rpb24oJycpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgYW4g
b2JqZWN0Li4KLVBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsICcnKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uCiBQQVNTIG5ldyB3ZWJraXRS
VENQZWVyQ29ubmVjdGlvbih7Zm9vU2VydmVyczpbXX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuZXcgd2Vi
a2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6dHJ1ZX0sIG51bGwpOyB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6WzEsIDIsIDNdfSwgbnVsbCk7
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24g
MTcuCiBQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe31dfSwg
bnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCiBQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpb
e3VybDonZm9vJ31dfSwgbnVsbCk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRD
SF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlv
bihudWxsLCB7bWFuZGF0b3J5Ont2YWxpZF9hbmRfc3VwcG9ydGVkXzE6MX19KTsgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7
bWFuZGF0b3J5Ont2YWxpZF9hbmRfc3VwcG9ydGVkXzE6MSwgdmFsaWRfYW5kX3N1cHBvcnRlZF8y
OjF9fSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb24obnVsbCwge29wdGlvbmFsOlt7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjF9XX0pOyBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9u
KG51bGwsIHtvcHRpb25hbDpbe3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMToxfSx7dmFsaWRfYW5kX3N1
cHBvcnRlZF8yOjF9XX0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtp
dFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHtvcHRpb25hbDpbe3ZhbGlkX2J1dF91bnN1cHBvcnRl
ZF8xOjF9LHt2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMjoxfV19KTsgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7bWFuZGF0b3J5
OntpbnZhbGlkOjF9fSk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6
IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGws
IHttYW5kYXRvcnk6e3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xOjF9fSk7IHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgbmV3IHdl
YmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHttYW5kYXRvcnk6e3ZhbGlkX2J1dF91bnN1cHBv
cnRlZF8xOjEsIHZhbGlkX2FuZF9zdXBwb3J0ZWRfMToxfX0pOyB0aHJldyBleGNlcHRpb24gRXJy
b3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5ldyB3ZWJraXRS
VENQZWVyQ29ubmVjdGlvbihudWxsLCB7b3B0aW9uYWw6e3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMTox
fX0pOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge29wdGlvbmFs
Olt7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjEsdmFsaWRfYW5kX3N1cHBvcnRlZF8yOjF9XX0pOyB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3
LgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge29wdGlvbmFsOlt7aW52
YWxpZDoxfV19KTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9N
IEV4Y2VwdGlvbiA5LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmh0bWwKaW5kZXggMGYyOWU2YjI1OGUwZjgyNTMwN2MyODAwYzkzNWM1NjYxM2RmYzEx
OC4uMjNiYjg4OWFlNTBjZTViZWY4N2I4MjRhNjYwMGNmMWQ2NmJhMjYxOSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaHRtbApAQCAt
MTEsMTkgKzExLDMyIEBAIHNob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rp
b24obnVsbCk7Iik7CiBzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9u
KG51bGwsIG51bGwpOyIpOwogc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVj
dGlvbih1bmRlZmluZWQpOyIpOwogc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29u
bmVjdGlvbih1bmRlZmluZWQsIHVuZGVmaW5lZCk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtp
dFJUQ1BlZXJDb25uZWN0aW9uKCk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uKCcnKTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rp
b24obnVsbCwgJycpOyIpOworCiBzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25u
ZWN0aW9uKHtpY2VTZXJ2ZXJzOltdfSwgbnVsbCk7Iik7CiBzaG91bGROb3RUaHJvdygibmV3IHdl
YmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJpOidzdHVuOmZvby5jb20nfV19
LCBudWxsKTsiKTsKIHNob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24o
e2ljZVNlcnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfV19LCBudWxs
KTsiKTsKIHNob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNl
cnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfSx7dXJpOidzdHVuOmJh
ci5jb20nfV19LCBudWxsKTsiKTsKLQotc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29u
bmVjdGlvbigpOyIpOwotc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbign
Jyk7Iik7Ci1zaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsICcn
KTsiKTsKIHNob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZl
cnM6W119LCBudWxsKTsiKTsKIHNob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rp
b24oe2ljZVNlcnZlcnM6dHJ1ZX0sIG51bGwpOyIpOwogc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRS
VENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbMSwgMiwgM119LCBudWxsKTsiKTsKIHNob3Vs
ZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t9XX0sIG51
bGwpOyIpOwogc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2Vy
dmVyczpbe3VybDonZm9vJ31dfSwgbnVsbCk7Iik7CisKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Vi
a2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge21hbmRhdG9yeTp7dmFsaWRfYW5kX3N1cHBvcnRl
ZF8xOjF9fSk7Iik7CitzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9u
KG51bGwsIHttYW5kYXRvcnk6e3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMToxLCB2YWxpZF9hbmRfc3Vw
cG9ydGVkXzI6MX19KTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5l
Y3Rpb24obnVsbCwge29wdGlvbmFsOlt7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjF9XX0pOyIpOwor
c2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7b3B0aW9u
YWw6W3t2YWxpZF9hbmRfc3VwcG9ydGVkXzE6MX0se3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMjoxfV19
KTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwg
e29wdGlvbmFsOlt7dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzE6MX0se3ZhbGlkX2J1dF91bnN1cHBv
cnRlZF8yOjF9XX0pOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlv
bihudWxsLCB7bWFuZGF0b3J5OntpbnZhbGlkOjF9fSk7Iik7CitzaG91bGRUaHJvdygibmV3IHdl
YmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHttYW5kYXRvcnk6e3ZhbGlkX2J1dF91bnN1cHBv
cnRlZF8xOjF9fSk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9u
KG51bGwsIHttYW5kYXRvcnk6e3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xOjEsIHZhbGlkX2FuZF9z
dXBwb3J0ZWRfMToxfX0pOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVj
dGlvbihudWxsLCB7b3B0aW9uYWw6e3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMToxfX0pOyIpOworc2hv
dWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7b3B0aW9uYWw6W3t2
YWxpZF9hbmRfc3VwcG9ydGVkXzE6MSx2YWxpZF9hbmRfc3VwcG9ydGVkXzI6MX1dfSk7Iik7Citz
aG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHtvcHRpb25hbDpb
e2ludmFsaWQ6MX1dfSk7Iik7CisKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161494</attachid>
            <date>2012-08-30 09:33:37 -0700</date>
            <delta_ts>2012-08-30 10:11:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95198-20120830183325.patch</filename>
            <type>text/plain</type>
            <size>50723</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhYjIxZTA1NWU0MGFm
ZTU1NzAxNTMyNzJkMDljNDFkMmQ4OTBmZGIxLi4zMTlmNzg5NWU2YWYwZTQyYjdmNTE5Nzc4MTNm
MzRlYzlkMDlhMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wOC0zMCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IEludHJvZHVjZSBNZWRpYUNvbnN0cmFpbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgV2ViTWVkaWFDb25zdHJhaW50cy4KKwor
ICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYk1l
ZGlhQ29uc3RyYWludHMuaDogQ29waWVkIGZyb20gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhQ29uc3RyYWludHMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjpXZWJNZWRpYUNvbnN0cmFpbnRzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50czo6fldlYk1lZGlhQ29uc3RyYWludHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjpvcGVyYXRvcj0pOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgor
CiAyMDEyLTA4LTI3ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gU2hvdWxkIGFjY2VsZXJhdGUgcm90YXRpb25zIG9mID49IDE4MCBkZWdy
ZWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZDRhYzc4Mjk1ZmI5ZjU4NzhiNTgwM2Q4ZjE0MTIyMmUxNmZmODZh
Ny4uOWQ1NTRjYWZiZTA1YjhlN2E5NTZmN2ZiY2NkOGRiMGI1YzE1NDIxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDcyIEBACisyMDEyLTA4LTMwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogSW50cm9kdWNlIE1lZGlhQ29u
c3RyYWludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1MTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBpbnRyb2R1Y2VzIE1lZGlhQ29uc3RyYWludHMgdG9nZXRoZXIgd2l0aCByZWxldmFudCBp
bmZyYXN0cnVjdHVyZSwgYSBjaHJvbWl1bSBtb2NrIGFuZCBMYXlvdXRUZXN0cy4KKworICAgICAg
ICBQYXRjaCBjb3ZlcmVkIGJ5IGV4cGFuZGVkIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRp
YWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNv
bnN0cmFpbnRzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6
Z2V0TWFuZGF0b3J5Q29uc3RyYWludE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0
cmFpbnRWYWx1ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzSW1wbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoTWVkaWFDb25zdHJhaW50c0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJh
aW50c0ltcGw6Ok1lZGlhQ29uc3RyYWludHNJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJD
b25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246
OlJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvanMv
RGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0Rp
Y3Rpb25hcnkuaDoKKyAgICAgICAgKERpY3Rpb25hcnkpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJv
cGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9E
aWN0aW9uYXJ5Lmg6CisgICAgICAgIChEaWN0aW9uYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
Y3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJh
aW50czo6V2ViTWVkaWFDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ29u
c3RyYWludHM6OmFzc2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHM6
OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50czo6aXNOdWxsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50czo6Z2V0TWFuZGF0b3J5Q29uc3Ry
YWludE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50czo6Z2V0T3B0
aW9uYWxDb25zdHJhaW50TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFp
bnRzOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYUNvbnN0cmFpbnRzOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVkaWFDb25zdHJhaW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzOjp+TWVkaWFDb25zdHJhaW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzOjpNZWRpYUNvbnN0cmFpbnRzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwOgor
ICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXkpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OmluaXRpYWxpemUpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNocm9taXVtOjppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
aHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oOgorICAgICAgICAoUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0pOgorCiAyMDEyLTA4LTMwICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtT
b3VyY2VzXSBJbnZpc2libGUgcmlnaHQgc2lkZWJhciBpc3N1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpp
bmRleCA3YWIwODI2MmFmZTc2MDcxNDZlN2NlNGJhNjRiZjRlNWY0N2Y2OTA1Li5iY2QzZDcyYzZm
MzY2ZjA5NzIxYjE3ZTRlMDRkMjA3YzBmMzI0MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZv
cm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAt
ODAsNiArODAsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xp
ZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcu
aCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhSGludHMuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50
cy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzc3NDI0ODgwOTY4MDU5NmY0Yzg0ZWE0ZTUwZTU2ODBiYmNkZTliYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVk
aWFDb25zdHJhaW50cy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhQ29uc3RyYWlu
dHNfaAorI2RlZmluZSBXZWJNZWRpYUNvbnN0cmFpbnRzX2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0
ci5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFDb25zdHJhaW50cyB7CitwdWJsaWM6CisgICAg
V2ViTWVkaWFDb25zdHJhaW50cygpIHsgfQorICAgIFdlYk1lZGlhQ29uc3RyYWludHMoY29uc3Qg
V2ViTWVkaWFDb25zdHJhaW50cyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJN
ZWRpYUNvbnN0cmFpbnRzKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJNZWRpYUNvbnN0cmFpbnRz
JiBvcGVyYXRvcj0oY29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYgb3RoZXIpCisgICAgeworICAg
ICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJik7CisK
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0
OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcyhX
ZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBnZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyhXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMp
IGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRW
YWx1ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYlN0cmluZyYgdmFsdWUpIGNvbnN0OworICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIFdlYlN0cmluZyYgdmFsdWUpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCisgICAgV2ViTWVkaWFDb25zdHJhaW50cyhjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdl
YlByaXZhdGVQdHI8V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4gbV9wcml2YXRlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYUNvbnN0cmFpbnRzX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCmluZGV4IDcwYzI2YWI2NWY3MzIzZDhlM2YxMTFhZTQ4
YWZjODllNjQ4YWEwN2YuLmQ2ZTE4ZGIzMDY2NGQ3NGZhMDU2MTMxYWY0YjkzNDhlNTQ1MzhiYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtMzIsMTMgKzMyLDE1IEBACiAjZGVmaW5l
IFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcl9oCiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgV2ViTWVkaWFDb25zdHJhaW50czsKK2NsYXNzIFdlYlJUQ0NvbmZpZ3VyYXRpb247CiBjbGFz
cyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CiAKIGNsYXNzIFdlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSgpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBXZWJSVENDb25maWd1cmF0aW9uJiwg
Y29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgp
ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTFiYzUyNGY1YjU4NDEwNTZiY2Ex
ZmI0MzM3YzIxNzE5NmU0ODlhNC4uZTU1ZGQyZDIwNmFjODljZmE5ODA3MDZjYWM5ZmMyYWU5ZTRl
NGExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg0NCw2ICs4NDQsNyBAQCBTRVQoV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5jcHAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uY3BwCisgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1F
dmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtTGlzdC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGYzYjU2OGMzNGU5Nzk1NmM5NTYyODJmNmRi
NjlkNWIxNDI2MzU4MTUuLjFjMDY4OGMwNTMxMzYyZTlmNTNhZTVlODc1NWU5MjkxZmU0YWI4NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTg5NCw2ICsxODk0LDggQEAgd2Vi
Y29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vSWNlQ2FuZGlkYXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwIFwKQEAgLTQ1MjUsNiArNDUyNyw3IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9JY2VPcHRpb25zLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vSWNlT3B0aW9ucy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhSGludHMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUhpbnRzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2VudGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzMzZmODI4YTBiN2I0Njg3MTdjZGI0OTFjODBmYTk2NDRjZDJlZTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJ
bXBsLmNwcApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1w
bC5oIgorCisjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgorI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBN
ZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRz
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+
IG9iamVjdCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpKTsKKyAgICBpZiAo
IW9iamVjdC0+aW5pdGlhbGl6ZShjb25zdHJhaW50cykpIHsKKyAgICAgICAgZWMgPSBUWVBFX01J
U01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBvYmplY3Qu
cmVsZWFzZSgpOworfQorCitib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjppbml0aWFsaXplKGNv
bnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQoreworICAgIGlmIChjb25zdHJhaW50cy5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFZlY3RvcjxTdHJp
bmc+IG5hbWVzOworICAgIGNvbnN0cmFpbnRzLmdldE93blByb3BlcnR5TmFtZXMobmFtZXMpOwor
CisgICAgU3RyaW5nIG1hbmRhdG9yeSA9IEFTQ0lJTGl0ZXJhbCgibWFuZGF0b3J5Iik7CisgICAg
aWYgKG5hbWVzLmNvbnRhaW5zKG1hbmRhdG9yeSkpIHsKKyAgICAgICAgRGljdGlvbmFyeSBtYW5k
YXRvcnlDb25zdHJhaW50czsKKyAgICAgICAgYm9vbCBvayA9IGNvbnN0cmFpbnRzLmdldChtYW5k
YXRvcnksIG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKKyAgICAgICAgaWYgKCFvayB8fCBtYW5kYXRv
cnlDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIG9rID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0T3duUHJvcGVydGll
c0FzU3RyaW5nSGFzaE1hcChtX21hbmRhdG9yeUNvbnN0cmFpbnRzKTsKKyAgICAgICAgaWYgKCFv
aykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBTdHJpbmcgb3B0aW9u
YWwgPSBBU0NJSUxpdGVyYWwoIm9wdGlvbmFsIik7CisgICAgaWYgKG5hbWVzLmNvbnRhaW5zKG9w
dGlvbmFsKSkgeworICAgICAgICBBcnJheVZhbHVlIG9wdGlvbmFsQ29uc3RyYWludHM7CisgICAg
ICAgIGJvb2wgb2sgPSBjb25zdHJhaW50cy5nZXQob3B0aW9uYWwsIG9wdGlvbmFsQ29uc3RyYWlu
dHMpOworICAgICAgICBpZiAoIW9rIHx8IG9wdGlvbmFsQ29uc3RyYWludHMuaXNVbmRlZmluZWRP
ck51bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzaXplX3QgbnVt
YmVyT2ZDb25zdHJhaW50czsKKyAgICAgICAgb2sgPSBvcHRpb25hbENvbnN0cmFpbnRzLmxlbmd0
aChudW1iZXJPZkNvbnN0cmFpbnRzKTsKKyAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQ29u
c3RyYWludHM7ICsraSkgeworICAgICAgICAgICAgRGljdGlvbmFyeSBjb25zdHJhaW50OworICAg
ICAgICAgICAgb2sgPSBvcHRpb25hbENvbnN0cmFpbnRzLmdldChpLCBjb25zdHJhaW50KTsKKyAg
ICAgICAgICAgIGlmICghb2sgfHwgY29uc3RyYWludC5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxv
Y2FsTmFtZXM7CisgICAgICAgICAgICBjb25zdHJhaW50LmdldE93blByb3BlcnR5TmFtZXMobG9j
YWxOYW1lcyk7CisgICAgICAgICAgICBpZiAobG9jYWxOYW1lcy5zaXplKCkgIT0gMSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBTdHJpbmcga2V5ID0gbG9jYWxO
YW1lc1swXTsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgICAgIG9rID0gY29u
c3RyYWludC5nZXQoa2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAoIW9rKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIG1fb3B0aW9uYWxDb25zdHJhaW50TmFt
ZXMuYXBwZW5kKGtleSk7CisgICAgICAgICAgICBtX29wdGlvbmFsQ29uc3RyYWludFZhbHVlcy5h
cHBlbmQodmFsdWUpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K01lZGlhQ29uc3RyYWludHNJbXBsOjp+TWVkaWFDb25zdHJhaW50c0ltcGwoKQoreworfQorCit2
b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50TmFtZXMoVmVj
dG9yPFN0cmluZz4mIG5hbWVzKSBjb25zdAoreworICAgIG5hbWVzLmNsZWFyKCk7CisgICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0
cmFpbnRzLmJlZ2luKCk7CisgICAgZm9yICg7IGkgIT0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5l
bmQoKTsgKytpKQorICAgICAgICBuYW1lcy5hcHBlbmQoaS0+Zmlyc3QpOworfQorCit2b2lkIE1l
ZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyhWZWN0b3I8U3Ry
aW5nPiYgbmFtZXMpIGNvbnN0Cit7CisgICAgbmFtZXMuY2xlYXIoKTsKKyAgICBuYW1lcyA9IG1f
b3B0aW9uYWxDb25zdHJhaW50TmFtZXM7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6
OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYg
dmFsdWUpIGNvbnN0Cit7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJh
dG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmZpbmQobmFtZSk7CisgICAgaWYgKGkgPT0g
bV9tYW5kYXRvcnlDb25zdHJhaW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgdmFsdWUgPSBpLT5zZWNvbmQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFD
b25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBzaXplX3QgaW5kZXggPSBtX29wdGlv
bmFsQ29uc3RyYWludE5hbWVzLmZpbmQobmFtZSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5k
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZSA9IG1fb3B0aW9uYWxDb25zdHJh
aW50VmFsdWVzW2luZGV4XTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40YTczMWM5MDQ5MWMwYTJjZDZmYjZkZTExOWNkNmU5NWYxZDkyZWJmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUNvbnN0cmFpbnRzSW1wbC5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9u
LgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlh
Q29uc3RyYWludHNJbXBsX2gKKyNkZWZpbmUgTWVkaWFDb25zdHJhaW50c0ltcGxfaAorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKKyNpbmNs
dWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERpY3Rpb25h
cnk7CisKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIDogcHVibGljIE1lZGlhQ29uc3RyYWlu
dHMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBs
PiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFs
IH5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpOworCisgICAgdmlydHVhbCB2b2lkIGdldE1hbmRhdG9y
eUNvbnN0cmFpbnROYW1lcyhWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyhWZWN0b3I8U3RyaW5n
PiYgbmFtZXMpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIGdldE1hbmRhdG9y
eUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShj
b25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IE9WRVJSSURFOworCitwcml2
YXRlOgorICAgIE1lZGlhQ29uc3RyYWludHNJbXBsKCkgeyB9CisgICAgYm9vbCBpbml0aWFsaXpl
KGNvbnN0IERpY3Rpb25hcnkmKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fbWFu
ZGF0b3J5Q29uc3RyYWludHM7CisgICAgVmVjdG9yPFN0cmluZz4gbV9vcHRpb25hbENvbnN0cmFp
bnROYW1lczsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX29wdGlvbmFsQ29uc3RyYWludFZhbHVlczsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNlbmRpZiAvLyBNZWRpYUNvbnN0cmFpbnRzSW1wbF9oCisKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcAppbmRleCBmMDYzYjkyNzliYWU1Yzg1ODgwNWE4NWUwOGI3OWI5NzE0NWFiNGFjLi5lYzFl
MzFhZTkzNmY0NTdkMzU1OWVkZDgzZjgzN2I3MzA3ZGIwZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFp
bnRzSW1wbC5oIgogI2luY2x1ZGUgIlJUQ0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAKQEAgLTkwLDEzICs5MSwxNyBAQCBQYXNzUmVmUHRyPFJU
Q0NvbmZpZ3VyYXRpb24+IFJUQ1BlZXJDb25uZWN0aW9uOjpwYXJzZUNvbmZpZ3VyYXRpb24oY29u
c3QgRGljdGlvbgogICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uLnJlbGVhc2UoKTsKIH0KIAot
UGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25m
aWd1cmF0aW9uLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVm
UHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRp
b24sIGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhQ29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIFJlZlB0cjxSVENDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gcGFyc2VD
b25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlv
biA9IGFkb3B0UmVmKG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBjb25maWd1cmF0aW9u
LnJlbGVhc2UoKSwgZWMpKTsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWlu
dHMgPSBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKG1lZGlhQ29uc3RyYWludHMsIGVjKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPFJUQ1BlZXJDb25u
ZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSVENQZWVyQ29ubmVjdGlvbihj
b250ZXh0LCBjb25maWd1cmF0aW9uLnJlbGVhc2UoKSwgY29uc3RyYWludHMucmVsZWFzZSgpLCBl
YykpOwogICAgIHBlZXJDb25uZWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICBpZiAoZWMp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA0LDEyICsxMDksMTIgQEAgUGFzc1JlZlB0cjxSVENQ
ZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KgogICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5yZWxlYXNlKCk7CiB9CiAKLVJUQ1Bl
ZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBFeGNlcHRpb25Db2RlJiBlYykK
K1JUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24s
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX3JlYWR5
U3RhdGUoUmVhZHlTdGF0ZU5ldykKIHsKICAgICBtX3BlZXJIYW5kbGVyID0gUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyOjpjcmVhdGUodGhpcyk7Ci0gICAgaWYgKCFtX3BlZXJIYW5kbGVyIHx8ICFt
X3BlZXJIYW5kbGVyLT5pbml0aWFsaXplKCkpCisgICAgaWYgKCFtX3BlZXJIYW5kbGVyIHx8ICFt
X3BlZXJIYW5kbGVyLT5pbml0aWFsaXplKGNvbmZpZ3VyYXRpb24sIGNvbnN0cmFpbnRzKSkKICAg
ICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDQzNDIy
ZWRkMzYwMjMxYzQ1ZWQ3OGQwNjczMjRlNTViMzdlMGJhZjIuLmM4MjA5ZDBhNjczNGU0YjMyMTRl
ODJjMWE3OGYwZjkwODA3N2E2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTQyLDYgKzQyLDggQEAKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBSVENDb25maWd1cmF0aW9uOwogCiBjbGFzcyBSVENQ
ZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVi
bGljIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKQEAgLTcwLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHVz
aW5nIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAg
ICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxS
VENDb25maWd1cmF0aW9uPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJUQ1BlZXJDb25uZWN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQ
YXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiBwYXJzZUNvbmZpZ3VyYXRpb24oY29uc3Qg
RGljdGlvbmFyeSYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggOTg0MTE3NjU0NDMyMDRlMzUzZDhjYTYzZGJiMWFlMzQ2ZmRjMGVlOS4uMzE4MmJk
MTBjMjQxN2I4MDMwYmJkZjFiNmY3YjY3OTg2YjMyYjViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
NDQ0LDYgKzQ0NCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2Fu
ZGlkYXRlRGVzY3JpcHRvci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9J
Y2VPcHRpb25zLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlT3B0
aW9ucy5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhSGludHMuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUhpbnRzLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcCcsCkBA
IC0xNTc5LDYgKzE1ODAsOCBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vSWNl
Q2FuZGlkYXRlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRp
YVN0cmVhbS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRp
YVN0cmVhbS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHNJbXBsLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNv
bnN0cmFpbnRzSW1wbC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQu
Y3BwJywKQEAgLTgzMjIsNiArODMyNSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJIVFRQTG9hZEluZm8uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYklDRU9wdGlvbnMuY3BwJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhSGludHMu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3Ry
ZWFtQ29tcG9uZW50LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5jcHAKaW5kZXggYmE5NjBkYzgyODNiZWEzYTJkNGUyNzAxMGM0OWUzY2I0
OTQzZjZkZi4uZDIwYjQ0NTRiMWRjZGE0Njk3YmU4MDk1M2RmMWU0NTkzNzkzMjJjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKQEAgLTc5LDYgKzc5LDI1IEBA
IGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRGlj
dGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyhXVEY6OlZlY3RvcjxTdHJpbmc+JiBuYW1lcykg
Y29uc3QKK3sKKyAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSAgbV9kaWN0aW9uYXJ5LmluaXRpYWxp
emVyT2JqZWN0KCk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNTdGF0
ZSgpOworCisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0
eU5hbWVzLmVuZCgpOyBpdCsrKSB7CisgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSB1c3RyaW5n
VG9TdHJpbmcoaXQtPnVzdHJpbmcoKSk7CisgICAgICAgIGlmICghc3RyaW5nS2V5LmlzRW1wdHko
KSkKKyAgICAgICAgICAgIG5hbWVzLmFwcGVuZChzdHJpbmdLZXkpOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCiBib29sIERpY3Rpb25hcnk6OmdldFdpdGhVbmRlZmluZWRPck51bGxD
aGVjayhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9kaWN0aW9uYXJ5LmdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhwcm9w
ZXJ0eU5hbWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaApp
bmRleCAxY2JkN2Q5NTVmN2Q5ZTMzN2EzZjhiNmI1NzUwMjkyOTE1OWVhM2RiLi5iMGRkOTc1MTcy
NGE5ZTc4OWExZjg2ODlmMDc1MjYwNDc0NGQ4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5LmlzVmFsaWQoKTsgfQogICAgIGJvb2wg
aXNVbmRlZmluZWRPck51bGwoKSBjb25zdCB7IHJldHVybiAhbV9kaWN0aW9uYXJ5LmlzVmFsaWQo
KTsgfQogICAgIGJvb2wgZ2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CisgICAgYm9vbCBnZXRPd25Qcm9wZXJ0eU5hbWVz
KFdURjo6VmVjdG9yPFN0cmluZz4mKSBjb25zdDsKICAgICBib29sIGdldFdpdGhVbmRlZmluZWRP
ck51bGxDaGVjayhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29u
c3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
aWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3Bw
CmluZGV4IDE1ZGEyZmZlODE5NzRhN2ZmNjAyOGQ5ZTVmNGMyYjFiYWYwMGE3YWIuLjNhZjYzMzBi
MmZlMWRkMjk3ZTBlNmRmNjRjMzg0OWZjNGM4OTE0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RpY3Rpb25hcnkuY3BwCkBAIC00OTQsNCArNDk0LDI2IEBAIGJvb2wgRGljdGlvbmFy
eTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiBoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRGljdGlvbmFyeTo6Z2V0T3du
UHJvcGVydHlOYW1lcyhXVEY6OlZlY3RvcjxTdHJpbmc+JiBuYW1lcykgY29uc3QKK3sKKyAgICBp
ZiAoIWlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb3B0aW9ucyA9IG1fb3B0aW9ucy0+VG9PYmplY3QoKTsKKyAgICBpZiAob3B0
aW9ucy5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHY4OjpMb2NhbDx2
ODo6QXJyYXk+IHByb3BlcnRpZXMgPSBvcHRpb25zLT5HZXRPd25Qcm9wZXJ0eU5hbWVzKCk7Cisg
ICAgaWYgKHByb3BlcnRpZXMuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBm
b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgcHJvcGVydGllcy0+TGVuZ3RoKCk7ICsraSkgeworICAg
ICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4ga2V5ID0gcHJvcGVydGllcy0+R2V0KGkpLT5Ub1N0
cmluZygpOworICAgICAgICBpZiAoIW9wdGlvbnMtPkhhcyhrZXkpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIG5hbWVzLmFwcGVuZCh0b1dlYkNvcmVTdHJpbmcoa2V5KSk7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaAppbmRleCA4MzczYzdiMjhkM2EyNDEyYmQ2
NmMzYzA5N2JjOWI0NGQ3NDUxMDU0Li43NjdkNDQ4MTU1MTVkMmQ3YWJjYzQ1YjgxMTY4ZTg3MjY3
MDJkMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5oCkBAIC05MCw2
ICs5MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldChjb25zdCBTdHJpbmcmLCBBcnJheVZhbHVl
JikgY29uc3Q7CiAKICAgICBib29sIGdldE93blByb3BlcnRpZXNBc1N0cmluZ0hhc2hNYXAoV1RG
OjpIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIGNvbnN0OworICAgIGJvb2wgZ2V0T3duUHJvcGVy
dHlOYW1lcyhXVEY6OlZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAKICAgICBib29sIGdldFdpdGhV
bmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmLCBTdHJpbmcmKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRp
YUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViTWVkaWFDb25zdHJhaW50cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVmYTNmNjY2ZDAxNjMxY2M5
MmE5MjdkNTdjMDM2YTE4OGU1NTkwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFDb25zdHJhaW50cy5jcHAKQEAgLTAs
MCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaD4KKworI2luY2x1ZGUg
Ik1lZGlhQ29uc3RyYWludHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJNZWRpYUNvbnN0cmFpbnRzOjpXZWJNZWRpYUNvbnN0cmFpbnRz
KGNvbnN0IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGNvbnN0cmFpbnRzKQorICAgIDog
bV9wcml2YXRlKGNvbnN0cmFpbnRzKQoreworfQorCit2b2lkIFdlYk1lZGlhQ29uc3RyYWludHM6
OmFzc2lnbihjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJiBvdGhlcikKK3sKKyAgICBtX3ByaXZh
dGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViTWVkaWFDb25zdHJhaW50czo6cmVz
ZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCitib29sIFdlYk1lZGlhQ29uc3Ry
YWludHM6OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsK
K30KKwordm9pZCBXZWJNZWRpYUNvbnN0cmFpbnRzOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50TmFt
ZXMoV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzKSBjb25zdAoreworICAgIEFTU0VSVCghaXNO
dWxsKCkpOworICAgIFZlY3RvcjxTdHJpbmc+IGNvbnN0cmFpbnROYW1lczsKKyAgICBtX3ByaXZh
dGUtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcyhjb25zdHJhaW50TmFtZXMpOworICAgIFdl
YlZlY3RvcjxXZWJTdHJpbmc+IHJlc3VsdChjb25zdHJhaW50TmFtZXMpOworICAgIG5hbWVzLnN3
YXAocmVzdWx0KTsKK30KKwordm9pZCBXZWJNZWRpYUNvbnN0cmFpbnRzOjpnZXRPcHRpb25hbENv
bnN0cmFpbnROYW1lcyhXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMpIGNvbnN0Cit7CisgICAg
QVNTRVJUKCFpc051bGwoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gY29uc3RyYWludE5hbWVzOwor
ICAgIG1fcHJpdmF0ZS0+Z2V0T3B0aW9uYWxDb25zdHJhaW50TmFtZXMoY29uc3RyYWludE5hbWVz
KTsKKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiByZXN1bHQoY29uc3RyYWludE5hbWVzKTsKKyAg
ICBuYW1lcy5zd2FwKHJlc3VsdCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFDb25zdHJhaW50czo6Z2V0
TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViU3RyaW5n
JiB2YWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKyAgICBTdHJpbmcgcmVz
dWx0OworICAgIGlmIChtX3ByaXZhdGUtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShuYW1l
LCByZXN1bHQpKSB7CisgICAgICAgIHZhbHVlID0gcmVzdWx0OworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYk1lZGlhQ29uc3RyYWlu
dHM6OmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2Vi
U3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsKKyAgICBTdHJp
bmcgcmVzdWx0OworICAgIGlmIChtX3ByaXZhdGUtPmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVl
KG5hbWUsIHJlc3VsdCkpIHsKKyAgICAgICAgdmFsdWUgPSByZXN1bHQ7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmYyODVjNTc5Yjk2MzdmMDIyNmZiZGNmMmU5NDZlNjQ0NTFjNWM2YjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFDb25zdHJhaW50
c19oCisjZGVmaW5lIE1lZGlhQ29uc3RyYWludHNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFDb25zdHJhaW50
cyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludHM+IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnRzKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TWFu
ZGF0b3J5Q29uc3RyYWludE5hbWVzKFZlY3RvcjxTdHJpbmc+JiBuYW1lcykgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyhWZWN0b3I8U3RyaW5n
PiYgbmFtZXMpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBnZXRNYW5kYXRvcnlDb25z
dHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZhbHVlKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgTWVk
aWFDb25zdHJhaW50cygpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhQ29uc3RyYWludHNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKaW5kZXggNTQwZmJmY2RiY2Q1ZjZkZTA5
N2IwNzhkNzFlMjI1NThlODU3M2EzZS4uMDU4YWExODY3NDc0NGNkMTk4YmY2YzNiOTZkNDM5MjU5
ZmJhOGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKICAgICBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teShSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5SVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJEdW1teSgpOwogCi0gICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgpAQCAtNjgsNyArNjgsNyBAQCBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJEdW1teTo6flJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15KCkK
IHsKIH0KIAotYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6aW5pdGlhbGl6ZSgp
Citib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15Ojppbml0aWFsaXplKFBhc3NSZWZQ
dHI8UlRDQ29uZmlndXJhdGlvbj4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCiB7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCBlNTgw
NDA3MGU2NTYyMDdmN2JjNDY5MzdmNjQ2NTQ5MDdhM2QzOGE5Li43NTU4ZjJlMTZhNWE3ZTA3ZGI3
M2IzOGVjY2ZkYzliZGNhYzFjNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAt
MzgsNiArMzgsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lZGlhQ29uc3Ry
YWludHM7CitjbGFzcyBSVENDb25maWd1cmF0aW9uOwogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50OwogCiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIgewpAQCAtNDUs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyPiBjcmVhdGUoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Kik7CiAgICAg
dmlydHVhbCB+UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaW5pdGlhbGl6ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShQYXNzUmVm
UHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcAppbmRl
eCA0NWI2YTYyYjM0MGEyMjhlMzRkMDkxYTA1ODk5MGZjZDhmYzAyODU4Li5kMmNkNTQ1MjcwZDY5
NGE0ODUyMzNkOWM0YmExMmNlNWJmMmUyMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21p
dW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCkBAIC0zNCw4ICszNCwxMiBA
QAogCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaCIKIAorI2lu
Y2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJSVENDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8
cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDQ29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU1LDEwICs1OSwxMCBA
QCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6flJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtKCkKIHsKIH0KIAotYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJv
bWl1bTo6aW5pdGlhbGl6ZSgpCitib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
Ojppbml0aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cykKIHsKICAgICBtX3dlYkhh
bmRsZXIgPSBhZG9wdFB0cihXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNyZWF0ZVJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcih0aGlzKSk7Ci0gICAgcmV0dXJuIG1fd2ViSGFuZGxlciA/IG1f
d2ViSGFuZGxlci0+aW5pdGlhbGl6ZSgpIDogZmFsc2U7CisgICAgcmV0dXJuIG1fd2ViSGFuZGxl
ciA/IG1fd2ViSGFuZGxlci0+aW5pdGlhbGl6ZShjb25maWd1cmF0aW9uLCBjb25zdHJhaW50cykg
OiBmYWxzZTsKIH0KIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6c3Rv
cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJv
bWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hy
b21pdW0uaAppbmRleCAyNzJjZDk0ZGRiZjNlNWMwMGEwZWJhMDg2OWE3MWQwOGQ4MmMwZWRjLi42
OWZjMjRkMzM1ZWQwMmE5NTBjYzBhNjcxMDljN2I2NWJmNmE2ZTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgcHVibGljOgogICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtKFJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwogICAgIHZpcnR1YWwgflJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29u
ZmlndXJhdGlvbj4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJLaXQ6OldlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4MzgxNWQyNzQxMjAzOGYyNDg4
Yzc4ZmI1YzIxNTQyYzBkZmUzZDU0Li40MzE1ZDU5YTEyNjdlY2NkZGZlYmFlMWZkYTA5MTM2OTk5
NTMzYWJhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDgtMzAgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3
QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJbnRyb2R1Y2UgTWVkaWFD
b25zdHJhaW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTUxOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFeHRlbmRpbmcgdGhlIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIgd2l0aCBNZWRp
YUNvbnN0cmFpbnRzIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKE1v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIpOgorICAgICAgICAoaXNTdXBwb3J0ZWRDb25zdHJhaW50KToKKyAgICAgICAgKGlzVmFs
aWRDb25zdHJhaW50KToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6
OmluaXRpYWxpemUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIpOgorCiAyMDEyLTA4LTI5ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0Bn
bWFpbC5jb20+CiAKICAgICAgICAgUmFuZG9tIHRlc3Qtd2Via2l0cHkgZmFpbHVyZXMgb24gdGhl
IGJ1aWxkYm90CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IDNhYWQ3OGQ5
ZGFmZTU0NjhjNmQxYjNmNzg2NDdmN2QxMmUwMDUyNGUuLjYwYjY5MDRhYTNhOGNmZjcwOWZlZGJl
OGQ1NmNiNjkyYjk5Yjc2ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCkBA
IC0zMywxNiArMzMsNTUgQEAKIAogI2luY2x1ZGUgIk1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLU1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50KikKK01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6Ok1vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
KiBjbGllbnQpCiB7CiB9CiAKLWJvb2wgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6
aW5pdGlhbGl6ZSgpCitzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZENvbnN0cmFpbnQoY29uc3QgV2Vi
U3RyaW5nJiBjb25zdHJhaW50KQogeworICAgIHJldHVybiBjb25zdHJhaW50ID09ICJ2YWxpZF9h
bmRfc3VwcG9ydGVkXzEiIHx8IGNvbnN0cmFpbnQgPT0gInZhbGlkX2FuZF9zdXBwb3J0ZWRfMiI7
Cit9CisKK3N0YXRpYyBib29sIGlzVmFsaWRDb25zdHJhaW50KGNvbnN0IFdlYlN0cmluZyYgY29u
c3RyYWludCkKK3sKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWRDb25zdHJhaW50KGNvbnN0cmFpbnQp
IHx8IGNvbnN0cmFpbnQgPT0gInZhbGlkX2J1dF91bnN1cHBvcnRlZF8xIiB8fCBjb25zdHJhaW50
ID09ICJ2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMiI7Cit9CisKK2Jvb2wgTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJSVENDb25maWd1cmF0aW9uJiwg
Y29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCit7CisgICAgV2ViVmVjdG9y
PFdlYlN0cmluZz4gbWFuZGF0b3J5Q29uc3RyYWludE5hbWVzOworICAgIGNvbnN0cmFpbnRzLmdl
dE1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcyhtYW5kYXRvcnlDb25zdHJhaW50TmFtZXMpOworICAg
IGlmIChtYW5kYXRvcnlDb25zdHJhaW50TmFtZXMuc2l6ZSgpKSB7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbWFuZGF0b3J5Q29uc3RyYWludE5hbWVzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVkQ29uc3RyYWludChtYW5kYXRvcnlDb25zdHJhaW50
TmFtZXNbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIFdl
YlN0cmluZyB2YWx1ZTsKKyAgICAgICAgICAgIGNvbnN0cmFpbnRzLmdldE1hbmRhdG9yeUNvbnN0
cmFpbnRWYWx1ZShtYW5kYXRvcnlDb25zdHJhaW50TmFtZXNbaV0sIHZhbHVlKTsKKyAgICAgICAg
ICAgIGlmICh2YWx1ZSAhPSAiMSIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gb3B0aW9uYWxDb25zdHJh
aW50TmFtZXM7CisgICAgY29uc3RyYWludHMuZ2V0T3B0aW9uYWxDb25zdHJhaW50TmFtZXMob3B0
aW9uYWxDb25zdHJhaW50TmFtZXMpOworICAgIGlmIChvcHRpb25hbENvbnN0cmFpbnROYW1lcy5z
aXplKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcHRpb25hbENvbnN0cmFp
bnROYW1lcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkQ29uc3RyYWlu
dChvcHRpb25hbENvbnN0cmFpbnROYW1lc1tpXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgV2ViU3RyaW5nIHZhbHVlOworICAgICAgICAgICAgY29uc3RyYWlu
dHMuZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUob3B0aW9uYWxDb25zdHJhaW50TmFtZXNbaV0s
IHZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSAiMCIpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCA1ODlmNmU5NzM1NDE4ZmYxNTNmZmUx
ZjI2ZDE0ZjJhN2UxNWJhYWU0Li4wMTYyYmRiODUwYzMwNjYzZWM2NWQzMzcwNGFhY2U5ZWQ0ODhh
MDE3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC00Miw3ICs0Miw4IEBAIGNs
YXNzIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsCiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcihXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudCopOwogCi0gICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBXZWJLaXQ6OldlYlJUQ0NvbmZpZ3VyYXRpb24m
LCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHMmKSBPVkVSUklERTsKKwogICAgIHZp
cnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzcyMjE5ZGFj
ZDdmODQ3MThmZjU1YjU4YmMxNzZlZjQ5YTkxODUyYy4uYzYyMDIyNzRiODE2OTY5NGM5NjUzOWNl
MjliY2YxMjdiMzI1NWE1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA4LTMwICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogSW50cm9kdWNlIE1lZGlhQ29uc3RyYWludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmh0bWw6CisKIDIwMTItMDgtMzAgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwu
cG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gR2FyZGVuaW5nIGFmdGVyIHIx
MjcxMzUsIHIxMjcwMzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKaW5kZXggY2YxYmJiNTU0ZWFmZTNl
MGJjYmM3ZDFmNGIyNGQ3NWU4OWI0MjUxYy4uYzdjYzkwMzZkNTVmYjYyOWI2MGU0MmU0MjNmYTk3
YjAxZmJmZjBhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTcsMTggKzcsMzAgQEAgUEFT
UyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwgbnVsbCk7IGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24odW5k
ZWZpbmVkKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbih1bmRlZmluZWQsIHVuZGVmaW5lZCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oKTsgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29u
bmVjdGlvbignJyk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBhbiBvYmplY3QuLgor
UEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwgJycpOyB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBOb3QgYW4gb2JqZWN0Li4KIFBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25u
ZWN0aW9uKHtpY2VTZXJ2ZXJzOltdfSwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgog
UEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3N0dW46
Zm9vLmNvbSd9XX0sIG51bGwpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmV3IHdl
YmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJpOid0dXJuOmZvby5jb20nLCBj
cmVkZW50aWFsOid4J31dfSwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNv
bScsIGNyZWRlbnRpYWw6J3gnfSx7dXJpOidzdHVuOmJhci5jb20nfV19LCBudWxsKTsgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbigpOyB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgbmV3
IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCcnKTsgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
Tm90IGFuIG9iamVjdC4uCi1QQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCAn
Jyk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBhbiBvYmplY3QuLgogUEFTUyBuZXcg
d2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZlcnM6W119LCBudWxsKTsgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1Mg
bmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOnRydWV9LCBudWxsKTsgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4K
IFBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlsxLCAyLCAzXX0s
IG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhj
ZXB0aW9uIDE3LgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6
W3t9XX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBE
T00gRXhjZXB0aW9uIDE3LgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNl
cnZlcnM6W3t1cmw6J2Zvbyd9XX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb24obnVsbCwge21hbmRhdG9yeTp7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjF9fSk7IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24o
bnVsbCwge21hbmRhdG9yeTp7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjEsIHZhbGlkX2FuZF9zdXBw
b3J0ZWRfMjoxfX0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdFJU
Q1BlZXJDb25uZWN0aW9uKG51bGwsIHtvcHRpb25hbDpbe3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMTow
fV19KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29u
bmVjdGlvbihudWxsLCB7b3B0aW9uYWw6W3t2YWxpZF9hbmRfc3VwcG9ydGVkXzE6MH0se3ZhbGlk
X2FuZF9zdXBwb3J0ZWRfMjowfV19KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5l
dyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7b3B0aW9uYWw6W3t2YWxpZF9idXRfdW5z
dXBwb3J0ZWRfMTowfSx7dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzI6MH1dfSk7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge21h
bmRhdG9yeTp7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjY2fX0pOyB0aHJldyBleGNlcHRpb24gRXJy
b3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5ldyB3ZWJraXRS
VENQZWVyQ29ubmVjdGlvbihudWxsLCB7bWFuZGF0b3J5OntpbnZhbGlkOjF9fSk7IHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1Mg
bmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHttYW5kYXRvcnk6e3ZhbGlkX2J1dF91
bnN1cHBvcnRlZF8xOjF9fSk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9F
UlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51
bGwsIHttYW5kYXRvcnk6e3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xOjEsIHZhbGlkX2FuZF9zdXBw
b3J0ZWRfMToxfX0pOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBE
T00gRXhjZXB0aW9uIDkuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7
b3B0aW9uYWw6e3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMTowfX0pOyB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuZXcgd2Via2l0
UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge29wdGlvbmFsOlt7dmFsaWRfYW5kX3N1cHBvcnRlZF8x
OjAsdmFsaWRfYW5kX3N1cHBvcnRlZF8yOjB9XX0pOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24obnVsbCwge29wdGlvbmFsOlt7aW52YWxpZDowfV19KTsgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmh0bWwKaW5kZXggMGYyOWU2
YjI1OGUwZjgyNTMwN2MyODAwYzkzNWM1NjYxM2RmYzExOC4uZDRjZTU4N2E3YTZhNGRhODY4ZjQ4
ODU1M2EwYjU0MTBjOWFmZjU5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaHRtbApAQCAtMTEsMTkgKzExLDMyIEBAIHNob3VsZE5v
dFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCk7Iik7CiBzaG91bGROb3RU
aHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51bGwpOyIpOwogc2hvdWxk
Tm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1bmRlZmluZWQpOyIpOwogc2hv
dWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1bmRlZmluZWQsIHVuZGVm
aW5lZCk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCk7Iik7
CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCcnKTsiKTsKK3Nob3Vs
ZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwgJycpOyIpOworCiBzaG91
bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOltdfSwg
bnVsbCk7Iik7CiBzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtp
Y2VTZXJ2ZXJzOlt7dXJpOidzdHVuOmZvby5jb20nfV19LCBudWxsKTsiKTsKIHNob3VsZE5vdFRo
cm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3R1cm46
Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfV19LCBudWxsKTsiKTsKIHNob3VsZE5vdFRocm93KCJu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmk6J3R1cm46Zm9vLmNv
bScsIGNyZWRlbnRpYWw6J3gnfSx7dXJpOidzdHVuOmJhci5jb20nfV19LCBudWxsKTsiKTsKLQot
c2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbigpOyIpOwotc2hvdWxkVGhy
b3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbignJyk7Iik7Ci1zaG91bGRUaHJvdygibmV3
IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsICcnKTsiKTsKIHNob3VsZFRocm93KCJuZXcg
d2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZlcnM6W119LCBudWxsKTsiKTsKIHNob3Vs
ZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6dHJ1ZX0sIG51
bGwpOyIpOwogc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2Vy
dmVyczpbMSwgMiwgM119LCBudWxsKTsiKTsKIHNob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t9XX0sIG51bGwpOyIpOwogc2hvdWxkVGhyb3coIm5l
dyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VybDonZm9vJ31dfSwgbnVs
bCk7Iik7CisKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVs
bCwge21hbmRhdG9yeTp7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjF9fSk7Iik7CitzaG91bGROb3RU
aHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHttYW5kYXRvcnk6e3ZhbGlk
X2FuZF9zdXBwb3J0ZWRfMToxLCB2YWxpZF9hbmRfc3VwcG9ydGVkXzI6MX19KTsiKTsKK3Nob3Vs
ZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge29wdGlvbmFsOlt7
dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjB9XX0pOyIpOworc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJr
aXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7b3B0aW9uYWw6W3t2YWxpZF9hbmRfc3VwcG9ydGVk
XzE6MH0se3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMjowfV19KTsiKTsKK3Nob3VsZE5vdFRocm93KCJu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge29wdGlvbmFsOlt7dmFsaWRfYnV0X3Vu
c3VwcG9ydGVkXzE6MH0se3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8yOjB9XX0pOyIpOworc2hvdWxk
VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7bWFuZGF0b3J5Ont2YWxp
ZF9hbmRfc3VwcG9ydGVkXzE6NjZ9fSk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1Bl
ZXJDb25uZWN0aW9uKG51bGwsIHttYW5kYXRvcnk6e2ludmFsaWQ6MX19KTsiKTsKK3Nob3VsZFRo
cm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge21hbmRhdG9yeTp7dmFsaWRf
YnV0X3Vuc3VwcG9ydGVkXzE6MX19KTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24obnVsbCwge21hbmRhdG9yeTp7dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzE6MSwg
dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjF9fSk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJU
Q1BlZXJDb25uZWN0aW9uKG51bGwsIHtvcHRpb25hbDp7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjB9
fSk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHtv
cHRpb25hbDpbe3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMTowLHZhbGlkX2FuZF9zdXBwb3J0ZWRfMjow
fV19KTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwg
e29wdGlvbmFsOlt7aW52YWxpZDowfV19KTsiKTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161505</attachid>
            <date>2012-08-30 10:09:58 -0700</date>
            <delta_ts>2012-08-30 11:30:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95198-20120830190945.patch</filename>
            <type>text/plain</type>
            <size>50795</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhYjIxZTA1NWU0MGFm
ZTU1NzAxNTMyNzJkMDljNDFkMmQ4OTBmZGIxLi4zMTlmNzg5NWU2YWYwZTQyYjdmNTE5Nzc4MTNm
MzRlYzlkMDlhMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wOC0zMCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IEludHJvZHVjZSBNZWRpYUNvbnN0cmFpbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE5OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgV2ViTWVkaWFDb25zdHJhaW50cy4KKwor
ICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYk1l
ZGlhQ29uc3RyYWludHMuaDogQ29waWVkIGZyb20gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk1lZGlhQ29uc3RyYWludHMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjpXZWJNZWRpYUNvbnN0cmFpbnRzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50czo6fldlYk1lZGlhQ29uc3RyYWludHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFpbnRzOjpvcGVyYXRvcj0pOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgor
CiAyMDEyLTA4LTI3ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gU2hvdWxkIGFjY2VsZXJhdGUgcm90YXRpb25zIG9mID49IDE4MCBkZWdy
ZWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZDRhYzc4Mjk1ZmI5ZjU4NzhiNTgwM2Q4ZjE0MTIyMmUxNmZmODZh
Ny4uOWQ1NTRjYWZiZTA1YjhlN2E5NTZmN2ZiY2NkOGRiMGI1YzE1NDIxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDcyIEBACisyMDEyLTA4LTMwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogSW50cm9kdWNlIE1lZGlhQ29u
c3RyYWludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1MTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBpbnRyb2R1Y2VzIE1lZGlhQ29uc3RyYWludHMgdG9nZXRoZXIgd2l0aCByZWxldmFudCBp
bmZyYXN0cnVjdHVyZSwgYSBjaHJvbWl1bSBtb2NrIGFuZCBMYXlvdXRUZXN0cy4KKworICAgICAg
ICBQYXRjaCBjb3ZlcmVkIGJ5IGV4cGFuZGVkIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6OmluaXRp
YWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50c0ltcGw6On5NZWRpYUNv
bnN0cmFpbnRzSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6
Z2V0TWFuZGF0b3J5Q29uc3RyYWludE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0
cmFpbnRWYWx1ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzSW1wbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoTWVkaWFDb25zdHJhaW50c0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJh
aW50c0ltcGw6Ok1lZGlhQ29uc3RyYWludHNJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJD
b25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246
OlJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvanMv
RGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0Rp
Y3Rpb25hcnkuaDoKKyAgICAgICAgKERpY3Rpb25hcnkpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0T3duUHJv
cGVydHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9E
aWN0aW9uYXJ5Lmg6CisgICAgICAgIChEaWN0aW9uYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
Y3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJh
aW50czo6V2ViTWVkaWFDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ29u
c3RyYWludHM6OmFzc2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHM6
OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50czo6aXNOdWxsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50czo6Z2V0TWFuZGF0b3J5Q29uc3Ry
YWludE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFDb25zdHJhaW50czo6Z2V0T3B0
aW9uYWxDb25zdHJhaW50TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYUNvbnN0cmFp
bnRzOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYUNvbnN0cmFpbnRzOjpnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTWVkaWFDb25zdHJhaW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzOjp+TWVkaWFDb25zdHJhaW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzOjpNZWRpYUNvbnN0cmFpbnRzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwOgor
ICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXkpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyRHVtbXk6OmluaXRpYWxpemUpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNocm9taXVtOjppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
aHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oOgorICAgICAgICAoUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0pOgorCiAyMDEyLTA4LTMwICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtT
b3VyY2VzXSBJbnZpc2libGUgcmlnaHQgc2lkZWJhciBpc3N1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpp
bmRleCA3YWIwODI2MmFmZTc2MDcxNDZlN2NlNGJhNjRiZjRlNWY0N2Y2OTA1Li5iY2QzZDcyYzZm
MzY2ZjA5NzIxYjE3ZTRlMDRkMjA3YzBmMzI0MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZv
cm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAt
ODAsNiArODAsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xp
ZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcu
aCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhSGludHMuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudC5oJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50
cy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzc3NDI0ODgwOTY4MDU5NmY0Yzg0ZWE0ZTUwZTU2ODBiYmNkZTliYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVk
aWFDb25zdHJhaW50cy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhQ29uc3RyYWlu
dHNfaAorI2RlZmluZSBXZWJNZWRpYUNvbnN0cmFpbnRzX2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0
ci5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTWVkaWFDb25zdHJhaW50cyB7CitwdWJsaWM6CisgICAg
V2ViTWVkaWFDb25zdHJhaW50cygpIHsgfQorICAgIFdlYk1lZGlhQ29uc3RyYWludHMoY29uc3Qg
V2ViTWVkaWFDb25zdHJhaW50cyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJN
ZWRpYUNvbnN0cmFpbnRzKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJNZWRpYUNvbnN0cmFpbnRz
JiBvcGVyYXRvcj0oY29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYgb3RoZXIpCisgICAgeworICAg
ICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJik7CisK
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0
OworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcyhX
ZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBnZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyhXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMp
IGNvbnN0OworCisgICAgV0VCS0lUX0VYUE9SVCBib29sIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRW
YWx1ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYlN0cmluZyYgdmFsdWUpIGNvbnN0OworICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIFdlYlN0cmluZyYgdmFsdWUpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCisgICAgV2ViTWVkaWFDb25zdHJhaW50cyhjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4mKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdl
YlByaXZhdGVQdHI8V2ViQ29yZTo6TWVkaWFDb25zdHJhaW50cz4gbV9wcml2YXRlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJNZWRpYUNvbnN0cmFpbnRzX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCmluZGV4IDcwYzI2YWI2NWY3MzIzZDhlM2YxMTFhZTQ4
YWZjODllNjQ4YWEwN2YuLmQ2ZTE4ZGIzMDY2NGQ3NGZhMDU2MTMxYWY0YjkzNDhlNTQ1MzhiYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtMzIsMTMgKzMyLDE1IEBACiAjZGVmaW5l
IFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcl9oCiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xh
c3MgV2ViTWVkaWFDb25zdHJhaW50czsKK2NsYXNzIFdlYlJUQ0NvbmZpZ3VyYXRpb247CiBjbGFz
cyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CiAKIGNsYXNzIFdlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSgpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBXZWJSVENDb25maWd1cmF0aW9uJiwg
Y29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgp
ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTFiYzUyNGY1YjU4NDEwNTZiY2Ex
ZmI0MzM3YzIxNzE5NmU0ODlhNC4uZTU1ZGQyZDIwNmFjODljZmE5ODA3MDZjYWM5ZmMyYWU5ZTRl
NGExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg0NCw2ICs4NDQsNyBAQCBTRVQoV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5jcHAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uY3BwCisgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1F
dmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtTGlzdC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGYzYjU2OGMzNGU5Nzk1NmM5NTYyODJmNmRi
NjlkNWIxNDI2MzU4MTUuLjFjMDY4OGMwNTMxMzYyZTlmNTNhZTVlODc1NWU5MjkxZmU0YWI4NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTg5NCw2ICsxODk0LDggQEAgd2Vi
Y29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vSWNlQ2FuZGlkYXRlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuY3BwIFwKQEAgLTQ1MjUsNiArNDUyNyw3IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9JY2VPcHRpb25zLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vSWNlT3B0aW9ucy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhSGludHMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUhpbnRzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ2VudGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEzMzZmODI4YTBiN2I0Njg3MTdjZGI0OTFjODBmYTk2NDRjZDJlZTkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJ
bXBsLmNwcApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1w
bC5oIgorCisjaW5jbHVkZSAiQXJyYXlWYWx1ZS5oIgorI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBN
ZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKGNvbnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRz
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+
IG9iamVjdCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnN0cmFpbnRzSW1wbCgpKTsKKyAgICBpZiAo
IW9iamVjdC0+aW5pdGlhbGl6ZShjb25zdHJhaW50cykpIHsKKyAgICAgICAgZWMgPSBUWVBFX01J
U01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBvYmplY3Qu
cmVsZWFzZSgpOworfQorCitib29sIE1lZGlhQ29uc3RyYWludHNJbXBsOjppbml0aWFsaXplKGNv
bnN0IERpY3Rpb25hcnkmIGNvbnN0cmFpbnRzKQoreworICAgIGlmIChjb25zdHJhaW50cy5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFZlY3RvcjxTdHJp
bmc+IG5hbWVzOworICAgIGNvbnN0cmFpbnRzLmdldE93blByb3BlcnR5TmFtZXMobmFtZXMpOwor
CisgICAgU3RyaW5nIG1hbmRhdG9yeSA9IEFTQ0lJTGl0ZXJhbCgibWFuZGF0b3J5Iik7CisgICAg
aWYgKG5hbWVzLmNvbnRhaW5zKG1hbmRhdG9yeSkpIHsKKyAgICAgICAgRGljdGlvbmFyeSBtYW5k
YXRvcnlDb25zdHJhaW50czsKKyAgICAgICAgYm9vbCBvayA9IGNvbnN0cmFpbnRzLmdldChtYW5k
YXRvcnksIG1hbmRhdG9yeUNvbnN0cmFpbnRzKTsKKyAgICAgICAgaWYgKCFvayB8fCBtYW5kYXRv
cnlDb25zdHJhaW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIG9rID0gbWFuZGF0b3J5Q29uc3RyYWludHMuZ2V0T3duUHJvcGVydGll
c0FzU3RyaW5nSGFzaE1hcChtX21hbmRhdG9yeUNvbnN0cmFpbnRzKTsKKyAgICAgICAgaWYgKCFv
aykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBTdHJpbmcgb3B0aW9u
YWwgPSBBU0NJSUxpdGVyYWwoIm9wdGlvbmFsIik7CisgICAgaWYgKG5hbWVzLmNvbnRhaW5zKG9w
dGlvbmFsKSkgeworICAgICAgICBBcnJheVZhbHVlIG9wdGlvbmFsQ29uc3RyYWludHM7CisgICAg
ICAgIGJvb2wgb2sgPSBjb25zdHJhaW50cy5nZXQob3B0aW9uYWwsIG9wdGlvbmFsQ29uc3RyYWlu
dHMpOworICAgICAgICBpZiAoIW9rIHx8IG9wdGlvbmFsQ29uc3RyYWludHMuaXNVbmRlZmluZWRP
ck51bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzaXplX3QgbnVt
YmVyT2ZDb25zdHJhaW50czsKKyAgICAgICAgb2sgPSBvcHRpb25hbENvbnN0cmFpbnRzLmxlbmd0
aChudW1iZXJPZkNvbnN0cmFpbnRzKTsKKyAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQ29u
c3RyYWludHM7ICsraSkgeworICAgICAgICAgICAgRGljdGlvbmFyeSBjb25zdHJhaW50OworICAg
ICAgICAgICAgb2sgPSBvcHRpb25hbENvbnN0cmFpbnRzLmdldChpLCBjb25zdHJhaW50KTsKKyAg
ICAgICAgICAgIGlmICghb2sgfHwgY29uc3RyYWludC5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxv
Y2FsTmFtZXM7CisgICAgICAgICAgICBjb25zdHJhaW50LmdldE93blByb3BlcnR5TmFtZXMobG9j
YWxOYW1lcyk7CisgICAgICAgICAgICBpZiAobG9jYWxOYW1lcy5zaXplKCkgIT0gMSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBTdHJpbmcga2V5ID0gbG9jYWxO
YW1lc1swXTsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKKyAgICAgICAgICAgIG9rID0gY29u
c3RyYWludC5nZXQoa2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAoIW9rKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIG1fb3B0aW9uYWxDb25zdHJhaW50TmFt
ZXMuYXBwZW5kKGtleSk7CisgICAgICAgICAgICBtX29wdGlvbmFsQ29uc3RyYWludFZhbHVlcy5h
cHBlbmQodmFsdWUpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K01lZGlhQ29uc3RyYWludHNJbXBsOjp+TWVkaWFDb25zdHJhaW50c0ltcGwoKQoreworfQorCit2
b2lkIE1lZGlhQ29uc3RyYWludHNJbXBsOjpnZXRNYW5kYXRvcnlDb25zdHJhaW50TmFtZXMoVmVj
dG9yPFN0cmluZz4mIG5hbWVzKSBjb25zdAoreworICAgIG5hbWVzLmNsZWFyKCk7CisgICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0
cmFpbnRzLmJlZ2luKCk7CisgICAgZm9yICg7IGkgIT0gbV9tYW5kYXRvcnlDb25zdHJhaW50cy5l
bmQoKTsgKytpKQorICAgICAgICBuYW1lcy5hcHBlbmQoaS0+Zmlyc3QpOworfQorCit2b2lkIE1l
ZGlhQ29uc3RyYWludHNJbXBsOjpnZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyhWZWN0b3I8U3Ry
aW5nPiYgbmFtZXMpIGNvbnN0Cit7CisgICAgbmFtZXMuY2xlYXIoKTsKKyAgICBuYW1lcyA9IG1f
b3B0aW9uYWxDb25zdHJhaW50TmFtZXM7Cit9CisKK2Jvb2wgTWVkaWFDb25zdHJhaW50c0ltcGw6
OmdldE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYg
dmFsdWUpIGNvbnN0Cit7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJh
dG9yIGkgPSBtX21hbmRhdG9yeUNvbnN0cmFpbnRzLmZpbmQobmFtZSk7CisgICAgaWYgKGkgPT0g
bV9tYW5kYXRvcnlDb25zdHJhaW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgdmFsdWUgPSBpLT5zZWNvbmQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgTWVkaWFD
b25zdHJhaW50c0ltcGw6OmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBzaXplX3QgaW5kZXggPSBtX29wdGlv
bmFsQ29uc3RyYWludE5hbWVzLmZpbmQobmFtZSk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5k
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZSA9IG1fb3B0aW9uYWxDb25zdHJh
aW50VmFsdWVzW2luZGV4XTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40YTczMWM5MDQ5MWMwYTJjZDZmYjZkZTExOWNkNmU5NWYxZDkyZWJmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUNvbnN0cmFpbnRzSW1wbC5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9u
LgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1lZGlh
Q29uc3RyYWludHNJbXBsX2gKKyNkZWZpbmUgTWVkaWFDb25zdHJhaW50c0ltcGxfaAorCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKKyNpbmNs
dWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERpY3Rpb25h
cnk7CisKK2NsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsIDogcHVibGljIE1lZGlhQ29uc3RyYWlu
dHMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBs
PiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFs
IH5NZWRpYUNvbnN0cmFpbnRzSW1wbCgpOworCisgICAgdmlydHVhbCB2b2lkIGdldE1hbmRhdG9y
eUNvbnN0cmFpbnROYW1lcyhWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyhWZWN0b3I8U3RyaW5n
PiYgbmFtZXMpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIGdldE1hbmRhdG9y
eUNvbnN0cmFpbnRWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBnZXRPcHRpb25hbENvbnN0cmFpbnRWYWx1ZShj
b25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgdmFsdWUpIGNvbnN0IE9WRVJSSURFOworCitwcml2
YXRlOgorICAgIE1lZGlhQ29uc3RyYWludHNJbXBsKCkgeyB9CisgICAgYm9vbCBpbml0aWFsaXpl
KGNvbnN0IERpY3Rpb25hcnkmKTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fbWFu
ZGF0b3J5Q29uc3RyYWludHM7CisgICAgVmVjdG9yPFN0cmluZz4gbV9vcHRpb25hbENvbnN0cmFp
bnROYW1lczsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX29wdGlvbmFsQ29uc3RyYWludFZhbHVlczsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNlbmRpZiAvLyBNZWRpYUNvbnN0cmFpbnRzSW1wbF9oCisKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcAppbmRleCBmMDYzYjkyNzliYWU1Yzg1ODgwNWE4NWUwOGI3OWI5NzE0NWFiNGFjLi5lYzFl
MzFhZTkzNmY0NTdkMzU1OWVkZDgzZjgzN2I3MzA3ZGIwZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkFycmF5VmFsdWUuaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJNZWRpYUNvbnN0cmFp
bnRzSW1wbC5oIgogI2luY2x1ZGUgIlJUQ0NvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAKQEAgLTkwLDEzICs5MSwxNyBAQCBQYXNzUmVmUHRyPFJU
Q0NvbmZpZ3VyYXRpb24+IFJUQ1BlZXJDb25uZWN0aW9uOjpwYXJzZUNvbmZpZ3VyYXRpb24oY29u
c3QgRGljdGlvbgogICAgIHJldHVybiBydGNDb25maWd1cmF0aW9uLnJlbGVhc2UoKTsKIH0KIAot
UGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25m
aWd1cmF0aW9uLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVm
UHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZpZ3VyYXRp
b24sIGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhQ29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIFJlZlB0cjxSVENDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gcGFyc2VD
b25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlv
biA9IGFkb3B0UmVmKG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBjb25maWd1cmF0aW9u
LnJlbGVhc2UoKSwgZWMpKTsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWlu
dHMgPSBNZWRpYUNvbnN0cmFpbnRzSW1wbDo6Y3JlYXRlKG1lZGlhQ29uc3RyYWludHMsIGVjKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPFJUQ1BlZXJDb25u
ZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSVENQZWVyQ29ubmVjdGlvbihj
b250ZXh0LCBjb25maWd1cmF0aW9uLnJlbGVhc2UoKSwgY29uc3RyYWludHMucmVsZWFzZSgpLCBl
YykpOwogICAgIHBlZXJDb25uZWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICBpZiAoZWMp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA0LDEyICsxMDksMTIgQEAgUGFzc1JlZlB0cjxSVENQ
ZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KgogICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5yZWxlYXNlKCk7CiB9CiAKLVJUQ1Bl
ZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBFeGNlcHRpb25Db2RlJiBlYykK
K1JUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24s
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX3JlYWR5
U3RhdGUoUmVhZHlTdGF0ZU5ldykKIHsKICAgICBtX3BlZXJIYW5kbGVyID0gUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyOjpjcmVhdGUodGhpcyk7Ci0gICAgaWYgKCFtX3BlZXJIYW5kbGVyIHx8ICFt
X3BlZXJIYW5kbGVyLT5pbml0aWFsaXplKCkpCisgICAgaWYgKCFtX3BlZXJIYW5kbGVyIHx8ICFt
X3BlZXJIYW5kbGVyLT5pbml0aWFsaXplKGNvbmZpZ3VyYXRpb24sIGNvbnN0cmFpbnRzKSkKICAg
ICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDQzNDIy
ZWRkMzYwMjMxYzQ1ZWQ3OGQwNjczMjRlNTViMzdlMGJhZjIuLmM4MjA5ZDBhNjczNGU0YjMyMTRl
ODJjMWE3OGYwZjkwODA3N2E2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTQyLDYgKzQyLDggQEAKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBSVENDb25maWd1cmF0aW9uOwogCiBjbGFzcyBSVENQ
ZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVi
bGljIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKQEAgLTcwLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHVz
aW5nIFJlZkNvdW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAg
ICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxS
VENDb25maWd1cmF0aW9uPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJUQ1BlZXJDb25uZWN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQ
YXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+LCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiBwYXJzZUNvbmZpZ3VyYXRpb24oY29uc3Qg
RGljdGlvbmFyeSYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggOTg0MTE3NjU0NDMyMDRlMzUzZDhjYTYzZGJiMWFlMzQ2ZmRjMGVlOS4uMzE4MmJk
MTBjMjQxN2I4MDMwYmJkZjFiNmY3YjY3OTg2YjMyYjViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
NDQ0LDYgKzQ0NCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2Fu
ZGlkYXRlRGVzY3JpcHRvci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9J
Y2VPcHRpb25zLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vSWNlT3B0
aW9ucy5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhSGludHMuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUhpbnRzLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcCcsCkBA
IC0xNTc5LDYgKzE1ODAsOCBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vSWNl
Q2FuZGlkYXRlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRp
YVN0cmVhbS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRp
YVN0cmVhbS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHNJbXBsLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNv
bnN0cmFpbnRzSW1wbC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQu
Y3BwJywKQEAgLTgzMjIsNiArODMyNSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJIVFRQTG9hZEluZm8uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYklDRUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYklDRU9wdGlvbnMuY3BwJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhQ29uc3RyYWludHMuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhSGludHMu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3Ry
ZWFtQ29tcG9uZW50LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5jcHAKaW5kZXggYmE5NjBkYzgyODNiZWEzYTJkNGUyNzAxMGM0OWUzY2I0
OTQzZjZkZi4uZDIwYjQ0NTRiMWRjZGE0Njk3YmU4MDk1M2RmMWU0NTkzNzkzMjJjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAKQEAgLTc5LDYgKzc5LDI1IEBA
IGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRGlj
dGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyhXVEY6OlZlY3RvcjxTdHJpbmc+JiBuYW1lcykg
Y29uc3QKK3sKKyAgICBpZiAoIW1fZGljdGlvbmFyeS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSAgbV9kaWN0aW9uYXJ5LmluaXRpYWxp
emVyT2JqZWN0KCk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kaWN0aW9uYXJ5LmV4ZWNTdGF0
ZSgpOworCisgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKKyAgICBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBwcm9wZXJ0
eU5hbWVzLmVuZCgpOyBpdCsrKSB7CisgICAgICAgIFN0cmluZyBzdHJpbmdLZXkgPSB1c3RyaW5n
VG9TdHJpbmcoaXQtPnVzdHJpbmcoKSk7CisgICAgICAgIGlmICghc3RyaW5nS2V5LmlzRW1wdHko
KSkKKyAgICAgICAgICAgIG5hbWVzLmFwcGVuZChzdHJpbmdLZXkpOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCiBib29sIERpY3Rpb25hcnk6OmdldFdpdGhVbmRlZmluZWRPck51bGxD
aGVjayhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9kaWN0aW9uYXJ5LmdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhwcm9w
ZXJ0eU5hbWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0RpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RpY3Rpb25hcnkuaApp
bmRleCAxY2JkN2Q5NTVmN2Q5ZTMzN2EzZjhiNmI1NzUwMjkyOTE1OWVhM2RiLi45NGRhODc4ZmY2
YjZiZmFjODAyMTRhODdiNDdlYTNmZWM2Zjg1OTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRGljdGlvbmFyeS5oCkBAIC02MCw3ICs2MCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNP
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnkuaXNWYWxpZCgpOyB9CiAgICAgYm9v
bCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2RpY3Rpb25hcnkuaXNWYWxp
ZCgpOyB9Ci0gICAgYm9vbCBnZXRPd25Qcm9wZXJ0aWVzQXNTdHJpbmdIYXNoTWFwKFdURjo6SGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKKyAgICBib29sIGdldE93blByb3BlcnRpZXNB
c1N0cmluZ0hhc2hNYXAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKKyAgICBib29s
IGdldE93blByb3BlcnR5TmFtZXMoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKICAgICBib29sIGdl
dFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgU3Ry
aW5nJiB2YWx1ZSkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RpY3Rpb25hcnkuY3BwCmluZGV4IDE1ZGEyZmZlODE5NzRhN2ZmNjAyOGQ5ZTVmNGMyYjFiYWYw
MGE3YWIuLjNhZjYzMzBiMmZlMWRkMjk3ZTBlNmRmNjRjMzg0OWZjNGM4OTE0MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCkBAIC00OTQsNCArNDk0LDI2IEBA
IGJvb2wgRGljdGlvbmFyeTo6Z2V0T3duUHJvcGVydGllc0FzU3RyaW5nSGFzaE1hcChXVEY6Okhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRGlj
dGlvbmFyeTo6Z2V0T3duUHJvcGVydHlOYW1lcyhXVEY6OlZlY3RvcjxTdHJpbmc+JiBuYW1lcykg
Y29uc3QKK3sKKyAgICBpZiAoIWlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb3B0aW9ucyA9IG1fb3B0aW9ucy0+VG9PYmplY3Qo
KTsKKyAgICBpZiAob3B0aW9ucy5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHByb3BlcnRpZXMgPSBvcHRpb25zLT5HZXRPd25Qcm9w
ZXJ0eU5hbWVzKCk7CisgICAgaWYgKHByb3BlcnRpZXMuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgcHJvcGVydGllcy0+TGVuZ3Ro
KCk7ICsraSkgeworICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4ga2V5ID0gcHJvcGVydGll
cy0+R2V0KGkpLT5Ub1N0cmluZygpOworICAgICAgICBpZiAoIW9wdGlvbnMtPkhhcyhrZXkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG5hbWVzLmFwcGVuZCh0b1dlYkNvcmVTdHJp
bmcoa2V5KSk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25h
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuaAppbmRleCA4Mzcz
YzdiMjhkM2EyNDEyYmQ2NmMzYzA5N2JjOWI0NGQ3NDUxMDU0Li43NjdkNDQ4MTU1MTVkMmQ3YWJj
YzQ1YjgxMTY4ZTg3MjY3MDJkMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9EaWN0aW9uYXJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlv
bmFyeS5oCkBAIC05MCw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldChjb25zdCBTdHJp
bmcmLCBBcnJheVZhbHVlJikgY29uc3Q7CiAKICAgICBib29sIGdldE93blByb3BlcnRpZXNBc1N0
cmluZ0hhc2hNYXAoV1RGOjpIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYpIGNvbnN0OworICAgIGJv
b2wgZ2V0T3duUHJvcGVydHlOYW1lcyhXVEY6OlZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAKICAg
ICBib29sIGdldFdpdGhVbmRlZmluZWRPck51bGxDaGVjayhjb25zdCBTdHJpbmcmLCBTdHJpbmcm
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJNZWRpYUNvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFDb25zdHJhaW50cy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVm
YTNmNjY2ZDAxNjMxY2M5MmE5MjdkNTdjMDM2YTE4OGU1NTkwZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFDb25zdHJh
aW50cy5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMu
aD4KKworI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJNZWRpYUNvbnN0cmFpbnRzOjpXZWJN
ZWRpYUNvbnN0cmFpbnRzKGNvbnN0IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4mIGNvbnN0
cmFpbnRzKQorICAgIDogbV9wcml2YXRlKGNvbnN0cmFpbnRzKQoreworfQorCit2b2lkIFdlYk1l
ZGlhQ29uc3RyYWludHM6OmFzc2lnbihjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJiBvdGhlcikK
K3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViTWVkaWFD
b25zdHJhaW50czo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCitib29s
IFdlYk1lZGlhQ29uc3RyYWludHM6OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS5pc051bGwoKTsKK30KKwordm9pZCBXZWJNZWRpYUNvbnN0cmFpbnRzOjpnZXRNYW5kYXRv
cnlDb25zdHJhaW50TmFtZXMoV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzKSBjb25zdAorewor
ICAgIEFTU0VSVCghaXNOdWxsKCkpOworICAgIFZlY3RvcjxTdHJpbmc+IGNvbnN0cmFpbnROYW1l
czsKKyAgICBtX3ByaXZhdGUtPmdldE1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcyhjb25zdHJhaW50
TmFtZXMpOworICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHJlc3VsdChjb25zdHJhaW50TmFtZXMp
OworICAgIG5hbWVzLnN3YXAocmVzdWx0KTsKK30KKwordm9pZCBXZWJNZWRpYUNvbnN0cmFpbnRz
OjpnZXRPcHRpb25hbENvbnN0cmFpbnROYW1lcyhXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMp
IGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc051bGwoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gY29u
c3RyYWludE5hbWVzOworICAgIG1fcHJpdmF0ZS0+Z2V0T3B0aW9uYWxDb25zdHJhaW50TmFtZXMo
Y29uc3RyYWludE5hbWVzKTsKKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiByZXN1bHQoY29uc3Ry
YWludE5hbWVzKTsKKyAgICBuYW1lcy5zd2FwKHJlc3VsdCk7Cit9CisKK2Jvb2wgV2ViTWVkaWFD
b25zdHJhaW50czo6Z2V0TWFuZGF0b3J5Q29uc3RyYWludFZhbHVlKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgV2ViU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVsbCgpKTsK
KyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlmIChtX3ByaXZhdGUtPmdldE1hbmRhdG9yeUNvbnN0
cmFpbnRWYWx1ZShuYW1lLCByZXN1bHQpKSB7CisgICAgICAgIHZhbHVlID0gcmVzdWx0OworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdl
Yk1lZGlhQ29uc3RyYWludHM6OmdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgV2ViU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlzTnVs
bCgpKTsKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlmIChtX3ByaXZhdGUtPmdldE9wdGlvbmFs
Q29uc3RyYWludFZhbHVlKG5hbWUsIHJlc3VsdCkpIHsKKyAgICAgICAgdmFsdWUgPSByZXN1bHQ7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25z
dHJhaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25z
dHJhaW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyODVjNTc5Yjk2MzdmMDIyNmZiZGNmMmU5NDZlNjQ0NTFj
NWM2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmli
dXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
TWVkaWFDb25zdHJhaW50c19oCisjZGVmaW5lIE1lZGlhQ29uc3RyYWludHNfaAorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TWVkaWFDb25zdHJhaW50cyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29uc3RyYWludHM+IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5NZWRpYUNvbnN0cmFpbnRzKCkgeyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0TWFuZGF0b3J5Q29uc3RyYWludE5hbWVzKFZlY3RvcjxTdHJpbmc+JiBuYW1l
cykgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnROYW1l
cyhWZWN0b3I8U3RyaW5nPiYgbmFtZXMpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBn
ZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZh
bHVlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGdldE9wdGlvbmFsQ29uc3RyYWludFZh
bHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3QgPSAwOworCitwcm90
ZWN0ZWQ6CisgICAgTWVkaWFDb25zdHJhaW50cygpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1l
ZGlhQ29uc3RyYWludHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKaW5kZXggNTQw
ZmJmY2RiY2Q1ZjZkZTA5N2IwNzhkNzFlMjI1NThlODU3M2EzZS4uMDU4YWExODY3NDc0NGNkMTk4
YmY2YzNiOTZkNDM5MjU5ZmJhOGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJE
dW1teShSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5SVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teSgpOwogCi0gICAgdmlydHVhbCBib29sIGluaXRpYWxp
emUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShQYXNzUmVmUHRyPFJU
Q0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiBwcml2YXRlOgpAQCAtNjgsNyAr
NjgsNyBAQCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1teTo6flJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckR1bW15KCkKIHsKIH0KIAotYm9vbCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJEdW1t
eTo6aW5pdGlhbGl6ZSgpCitib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckR1bW15Ojppbml0
aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4sIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4pCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuaAppbmRleCBlNTgwNDA3MGU2NTYyMDdmN2JjNDY5MzdmNjQ2NTQ5MDdhM2QzOGE5Li43NTU4
ZjJlMTZhNWE3ZTA3ZGI3M2IzOGVjY2ZkYzliZGNhYzFjNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIuaApAQCAtMzgsNiArMzgsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIE1lZGlhQ29uc3RyYWludHM7CitjbGFzcyBSVENDb25maWd1cmF0aW9uOwogY2xhc3MgUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OwogCiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIgewpAQCAtNDUsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyPiBjcmVhdGUoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
Q2xpZW50Kik7CiAgICAgdmlydHVhbCB+UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKCkgeyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaW5p
dGlhbGl6ZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CiAKIHByb3RlY3Rl
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9t
aXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNo
cm9taXVtLmNwcAppbmRleCA0NWI2YTYyYjM0MGEyMjhlMzRkMDkxYTA1ODk5MGZjZDhmYzAyODU4
Li5kMmNkNTQ1MjcwZDY5NGE0ODUyMzNkOWM0YmExMmNlNWJmMmUyMDgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCkBA
IC0zNCw4ICszNCwxMiBAQAogCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hy
b21pdW0uaCIKIAorI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJSVEND
b25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1l
ZGlhQ29uc3RyYWludHMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDQ29uZmlndXJhdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTU1LDEwICs1OSwxMCBAQCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6flJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtKCkKIHsKIH0KIAotYm9vbCBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDaHJvbWl1bTo6aW5pdGlhbGl6ZSgpCitib29sIFJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNocm9taXVtOjppbml0aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4g
Y29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cykK
IHsKICAgICBtX3dlYkhhbmRsZXIgPSBhZG9wdFB0cihXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50
KCktPmNyZWF0ZVJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcih0aGlzKSk7Ci0gICAgcmV0dXJuIG1f
d2ViSGFuZGxlciA/IG1fd2ViSGFuZGxlci0+aW5pdGlhbGl6ZSgpIDogZmFsc2U7CisgICAgcmV0
dXJuIG1fd2ViSGFuZGxlciA/IG1fd2ViSGFuZGxlci0+aW5pdGlhbGl6ZShjb25maWd1cmF0aW9u
LCBjb25zdHJhaW50cykgOiBmYWxzZTsKIH0KIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDaHJvbWl1bTo6c3RvcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2hyb21pdW0uaAppbmRleCAyNzJjZDk0ZGRiZjNlNWMwMGEwZWJhMDg2OWE3
MWQwOGQ4MmMwZWRjLi42OWZjMjRkMzM1ZWQwMmE5NTBjYzBhNjcxMDljN2I2NWJmNmE2ZTEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9S
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9t
aXVtLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwogICAgIHZpcnR1
YWwgflJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaW5pdGlhbGl6ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKFBh
c3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4p
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKICAgICAvLyBX
ZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4Mzgx
NWQyNzQxMjAzOGYyNDg4Yzc4ZmI1YzIxNTQyYzBkZmUzZDU0Li40MzE1ZDU5YTEyNjdlY2NkZGZl
YmFlMWZkYTA5MTM2OTk5NTMzYWJhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDgtMzAgIFRvbW15IFdpZGVu
Zmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJ
bnRyb2R1Y2UgTWVkaWFDb25zdHJhaW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTUxOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFeHRlbmRpbmcgdGhlIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIgd2l0aCBNZWRpYUNvbnN0cmFpbnRzIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNw
cDoKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6Ok1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgorICAgICAgICAoaXNTdXBwb3J0ZWRDb25zdHJhaW50KToK
KyAgICAgICAgKGlzVmFsaWRDb25zdHJhaW50KToKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKE1vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOgorCiAyMDEyLTA4LTI5ICBaYW4gRG9iZXJzZWsg
IDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgUmFuZG9tIHRlc3Qtd2Via2l0cHkg
ZmFpbHVyZXMgb24gdGhlIGJ1aWxkYm90CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
CmluZGV4IDNhYWQ3OGQ5ZGFmZTU0NjhjNmQxYjNmNzg2NDdmN2QxMmUwMDUyNGUuLjYwYjY5MDRh
YTNhOGNmZjcwOWZlZGJlOGQ1NmNiNjkyYjk5Yjc2ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIuY3BwCkBAIC0zMywxNiArMzMsNTUgQEAKIAogI2luY2x1ZGUgIk1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKIAorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYUNvbnN0
cmFpbnRzLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLU1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KikKK01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXI6Ok1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50KiBjbGllbnQpCiB7CiB9CiAKLWJvb2wgTW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlcjo6aW5pdGlhbGl6ZSgpCitzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZENvbnN0
cmFpbnQoY29uc3QgV2ViU3RyaW5nJiBjb25zdHJhaW50KQogeworICAgIHJldHVybiBjb25zdHJh
aW50ID09ICJ2YWxpZF9hbmRfc3VwcG9ydGVkXzEiIHx8IGNvbnN0cmFpbnQgPT0gInZhbGlkX2Fu
ZF9zdXBwb3J0ZWRfMiI7Cit9CisKK3N0YXRpYyBib29sIGlzVmFsaWRDb25zdHJhaW50KGNvbnN0
IFdlYlN0cmluZyYgY29uc3RyYWludCkKK3sKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWRDb25zdHJh
aW50KGNvbnN0cmFpbnQpIHx8IGNvbnN0cmFpbnQgPT0gInZhbGlkX2J1dF91bnN1cHBvcnRlZF8x
IiB8fCBjb25zdHJhaW50ID09ICJ2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMiI7Cit9CisKK2Jvb2wg
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6aW5pdGlhbGl6ZShjb25zdCBXZWJSVEND
b25maWd1cmF0aW9uJiwgY29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCit7
CisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gbWFuZGF0b3J5Q29uc3RyYWludE5hbWVzOworICAg
IGNvbnN0cmFpbnRzLmdldE1hbmRhdG9yeUNvbnN0cmFpbnROYW1lcyhtYW5kYXRvcnlDb25zdHJh
aW50TmFtZXMpOworICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50TmFtZXMuc2l6ZSgpKSB7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFuZGF0b3J5Q29uc3RyYWludE5hbWVzLnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoIWlzU3VwcG9ydGVkQ29uc3RyYWludChtYW5k
YXRvcnlDb25zdHJhaW50TmFtZXNbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIFdlYlN0cmluZyB2YWx1ZTsKKyAgICAgICAgICAgIGNvbnN0cmFpbnRzLmdl
dE1hbmRhdG9yeUNvbnN0cmFpbnRWYWx1ZShtYW5kYXRvcnlDb25zdHJhaW50TmFtZXNbaV0sIHZh
bHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSAiMSIpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4g
b3B0aW9uYWxDb25zdHJhaW50TmFtZXM7CisgICAgY29uc3RyYWludHMuZ2V0T3B0aW9uYWxDb25z
dHJhaW50TmFtZXMob3B0aW9uYWxDb25zdHJhaW50TmFtZXMpOworICAgIGlmIChvcHRpb25hbENv
bnN0cmFpbnROYW1lcy5zaXplKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBv
cHRpb25hbENvbnN0cmFpbnROYW1lcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFp
c1ZhbGlkQ29uc3RyYWludChvcHRpb25hbENvbnN0cmFpbnROYW1lc1tpXSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgV2ViU3RyaW5nIHZhbHVlOworICAgICAg
ICAgICAgY29uc3RyYWludHMuZ2V0T3B0aW9uYWxDb25zdHJhaW50VmFsdWUob3B0aW9uYWxDb25z
dHJhaW50TmFtZXNbaV0sIHZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSAiMCIpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCA1ODlmNmU5
NzM1NDE4ZmYxNTNmZmUxZjI2ZDE0ZjJhN2UxNWJhYWU0Li4wMTYyYmRiODUwYzMwNjYzZWM2NWQz
MzcwNGFhY2U5ZWQ0ODhhMDE3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC00
Miw3ICs0Miw4IEBAIGNsYXNzIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIgOiBwdWJs
aWMgV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsCiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcihXZWJLaXQ6OldlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudCopOwogCi0gICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBXZWJLaXQ6OldlYlJU
Q0NvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhQ29uc3RyYWludHMmKSBPVkVS
UklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMzcyMjE5ZGFjZDdmODQ3MThmZjU1YjU4YmMxNzZlZjQ5YTkxODUyYy4uYzYyMDIyNzRi
ODE2OTY5NGM5NjUzOWNlMjliY2YxMjdiMzI1NWE1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDEyLTA4LTMwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAg
ICAgIE1lZGlhU3RyZWFtIEFQSTogSW50cm9kdWNlIE1lZGlhQ29uc3RyYWludHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmh0bWw6CisKIDIwMTItMDgtMzAgIE1pa2hhaWwgUG96ZG55
YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gR2Fy
ZGVuaW5nIGFmdGVyIHIxMjcxMzUsIHIxMjcwMzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKaW5kZXgg
Y2YxYmJiNTU0ZWFmZTNlMGJjYmM3ZDFmNGIyNGQ3NWU4OWI0MjUxYy4uYzdjYzkwMzZkNTVmYjYy
OWI2MGU0MmU0MjNmYTk3YjAxZmJmZjBhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTcs
MTggKzcsMzAgQEAgUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCk7IGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVs
bCwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24odW5kZWZpbmVkKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5l
dyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1bmRlZmluZWQsIHVuZGVmaW5lZCk7IGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oKTsgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3
ZWJraXRSVENQZWVyQ29ubmVjdGlvbignJyk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5v
dCBhbiBvYmplY3QuLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwgJycp
OyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgYW4gb2JqZWN0Li4KIFBBU1MgbmV3IHdl
YmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOltdfSwgbnVsbCk7IGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZl
cnM6W3t1cmk6J3N0dW46Zm9vLmNvbSd9XX0sIG51bGwpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KIFBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJpOid0
dXJuOmZvby5jb20nLCBjcmVkZW50aWFsOid4J31dfSwgbnVsbCk7IGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1
cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfSx7dXJpOidzdHVuOmJhci5jb20nfV19
LCBudWxsKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbigpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3Vt
ZW50cy4KLVBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKCcnKTsgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogTm90IGFuIG9iamVjdC4uCi1QQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29u
bmVjdGlvbihudWxsLCAnJyk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBhbiBvYmpl
Y3QuLgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZlcnM6W119LCBu
dWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KIFBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOnRy
dWV9LCBudWxsKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KIFBBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2
ZXJzOlsxLCAyLCAzXX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rp
b24oe2ljZVNlcnZlcnM6W3t9XX0sIG51bGwpOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuZXcgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1cmw6J2Zvbyd9XX0sIG51bGwpOyB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuZXcg
d2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge21hbmRhdG9yeTp7dmFsaWRfYW5kX3N1cHBv
cnRlZF8xOjF9fSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRD
UGVlckNvbm5lY3Rpb24obnVsbCwge21hbmRhdG9yeTp7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjEs
IHZhbGlkX2FuZF9zdXBwb3J0ZWRfMjoxfX0pOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHtvcHRpb25hbDpbe3ZhbGlkX2Fu
ZF9zdXBwb3J0ZWRfMTowfV19KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3
ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7b3B0aW9uYWw6W3t2YWxpZF9hbmRfc3VwcG9y
dGVkXzE6MH0se3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMjowfV19KTsgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7b3B0aW9uYWw6
W3t2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMTowfSx7dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzI6MH1d
fSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5l
Y3Rpb24obnVsbCwge21hbmRhdG9yeTp7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjY2fX0pOyB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IE5PVF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQ
QVNTIG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7bWFuZGF0b3J5OntpbnZhbGlk
OjF9fSk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNl
cHRpb24gOS4KK1BBU1MgbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHttYW5kYXRv
cnk6e3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xOjF9fSk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
Tk9UX1NVUFBPUlRFRF9FUlI6IERPTSBFeGNlcHRpb24gOS4KK1BBU1MgbmV3IHdlYmtpdFJUQ1Bl
ZXJDb25uZWN0aW9uKG51bGwsIHttYW5kYXRvcnk6e3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xOjEs
IHZhbGlkX2FuZF9zdXBwb3J0ZWRfMToxfX0pOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5PVF9T
VVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5ldyB3ZWJraXRSVENQZWVyQ29u
bmVjdGlvbihudWxsLCB7b3B0aW9uYWw6e3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMTowfX0pOyB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3Lgor
UEFTUyBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge29wdGlvbmFsOlt7dmFsaWRf
YW5kX3N1cHBvcnRlZF8xOjAsdmFsaWRfYW5kX3N1cHBvcnRlZF8yOjB9XX0pOyB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge29wdGlvbmFsOlt7aW52YWxpZDowfV19
KTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlv
biA5LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmh0
bWwKaW5kZXggMGYyOWU2YjI1OGUwZjgyNTMwN2MyODAwYzkzNWM1NjYxM2RmYzExOC4uZDRjZTU4
N2E3YTZhNGRhODY4ZjQ4ODU1M2EwYjU0MTBjOWFmZjU5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaHRtbApAQCAtMTEsMTkgKzEx
LDMyIEBAIHNob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCk7
Iik7CiBzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51
bGwpOyIpOwogc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1bmRl
ZmluZWQpOyIpOwogc2hvdWxkTm90VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih1
bmRlZmluZWQsIHVuZGVmaW5lZCk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uKCk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9u
KCcnKTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwg
JycpOyIpOworCiBzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtp
Y2VTZXJ2ZXJzOltdfSwgbnVsbCk7Iik7CiBzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1Bl
ZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJpOidzdHVuOmZvby5jb20nfV19LCBudWxsKTsi
KTsKIHNob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZl
cnM6W3t1cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfV19LCBudWxsKTsiKTsKIHNo
b3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1
cmk6J3R1cm46Zm9vLmNvbScsIGNyZWRlbnRpYWw6J3gnfSx7dXJpOidzdHVuOmJhci5jb20nfV19
LCBudWxsKTsiKTsKLQotc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbigp
OyIpOwotc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbignJyk7Iik7Ci1z
aG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsICcnKTsiKTsKIHNo
b3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2Zvb1NlcnZlcnM6W119LCBu
dWxsKTsiKTsKIHNob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNl
cnZlcnM6dHJ1ZX0sIG51bGwpOyIpOwogc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29u
bmVjdGlvbih7aWNlU2VydmVyczpbMSwgMiwgM119LCBudWxsKTsiKTsKIHNob3VsZFRocm93KCJu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t9XX0sIG51bGwpOyIpOwog
c2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3Vy
bDonZm9vJ31dfSwgbnVsbCk7Iik7CisKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVl
ckNvbm5lY3Rpb24obnVsbCwge21hbmRhdG9yeTp7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjF9fSk7
Iik7CitzaG91bGROb3RUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHtt
YW5kYXRvcnk6e3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMToxLCB2YWxpZF9hbmRfc3VwcG9ydGVkXzI6
MX19KTsiKTsKK3Nob3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVs
bCwge29wdGlvbmFsOlt7dmFsaWRfYW5kX3N1cHBvcnRlZF8xOjB9XX0pOyIpOworc2hvdWxkTm90
VGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7b3B0aW9uYWw6W3t2YWxp
ZF9hbmRfc3VwcG9ydGVkXzE6MH0se3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMjowfV19KTsiKTsKK3No
b3VsZE5vdFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge29wdGlvbmFs
Olt7dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzE6MH0se3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8yOjB9
XX0pOyIpOworc2hvdWxkVGhyb3coIm5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCB7
bWFuZGF0b3J5Ont2YWxpZF9hbmRfc3VwcG9ydGVkXzE6NjZ9fSk7Iik7CitzaG91bGRUaHJvdygi
bmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHttYW5kYXRvcnk6e2ludmFsaWQ6MX19
KTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge21h
bmRhdG9yeTp7dmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzE6MX19KTsiKTsKK3Nob3VsZFRocm93KCJu
ZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCwge21hbmRhdG9yeTp7dmFsaWRfYnV0X3Vu
c3VwcG9ydGVkXzE6MSwgdmFsaWRfYW5kX3N1cHBvcnRlZF8xOjF9fSk7Iik7CitzaG91bGRUaHJv
dygibmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIHtvcHRpb25hbDp7dmFsaWRfYW5k
X3N1cHBvcnRlZF8xOjB9fSk7Iik7CitzaG91bGRUaHJvdygibmV3IHdlYmtpdFJUQ1BlZXJDb25u
ZWN0aW9uKG51bGwsIHtvcHRpb25hbDpbe3ZhbGlkX2FuZF9zdXBwb3J0ZWRfMTowLHZhbGlkX2Fu
ZF9zdXBwb3J0ZWRfMjowfV19KTsiKTsKK3Nob3VsZFRocm93KCJuZXcgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb24obnVsbCwge29wdGlvbmFsOlt7aW52YWxpZDowfV19KTsiKTsKIDwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>