<?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>76885</bug_id>
          
          <creation_ts>2012-01-23 17:14:59 -0800</creation_ts>
          <short_desc>[Chromium] Add chromium-style tracing support</short_desc>
          <delta_ts>2012-02-09 14:18:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>77571</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Bates">jbates</reporter>
          <assigned_to name="John Bates">jbates</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>morrita</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>541005</commentid>
    <comment_count>0</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-23 17:14:59 -0800</bug_when>
    <thetext>[Chromium] Add chromium-style tracing support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541010</commentid>
    <comment_count>1</comment_count>
      <attachid>123667</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-23 17:18:46 -0800</bug_when>
    <thetext>Created attachment 123667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541012</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-23 17:21:00 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541028</commentid>
    <comment_count>3</comment_count>
      <attachid>123667</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-23 17:38:22 -0800</bug_when>
    <thetext>Comment on attachment 123667
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:246
&gt; +    virtual const unsigned char* getCategoryEnabled(const char* categoryName) { return 0; }
&gt; +    virtual int addTraceEvent(

these are the public WK APIs that are being exported (and that anyone implementing support for the WebKit API will need to implement), so they need to be documented here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541061</commentid>
    <comment_count>4</comment_count>
      <attachid>123687</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-23 18:22:24 -0800</bug_when>
    <thetext>Created attachment 123687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541072</commentid>
    <comment_count>5</comment_count>
      <attachid>123687</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-01-23 18:43:54 -0800</bug_when>
    <thetext>Comment on attachment 123687
Patch

Is the use of the internal namespace buying us anything? I&apos;d rather we just set up the names so that they&apos;re not going to obviously clash. We talked about this before though so not a blocker from my point of view.

How are you going to switch over the old instrumentation points to this one? Does this even compile?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541130</commentid>
    <comment_count>6</comment_count>
      <attachid>123687</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-23 22:11:46 -0800</bug_when>
    <thetext>Comment on attachment 123687
Patch

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

&gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:250
&gt; +    virtual const unsigned char* getCategoryEnabled(const char* categoryName) { return 0; }

sorry, i can&apos;t help but nit-pick the name of this function.  it confuses me everytime
I read it.

perhaps better named:  &quot;const bool* getTraceCategoryEnabledFlag(const char* categoryName)&quot;

 - what&apos;s the point of returning the address of an unsigned char over a bool?
 - it seems like it should have the word &quot;Trace&quot; in it somewhere for namespace reasons.
 - a &quot;Flag&quot; suffix might make the function name a little clearer--dunno.

Everytime I read &quot;getCategoryEnabled&quot; I think it is going to tell me right now if the category
is enabled, but in reality this is a query for the address of a flag that I can later dereference
to see if the category is enabled.

another idea, maybe too crazy, would be to implement a small class to wrap the flag:

  class WebTraceCategory {
  public:
      ...
      bool isEnabled() const { *m_flag != 0; }
  private:
      const unsigned char* m_flag;
  };

Then getCategoryEnabled could be morphed into &quot;WebTraceCategory getTraceCategory(const char* categoryName)&quot;

&gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:274
&gt; +    virtual int addTraceEvent(

had to you considered creating a struct for all these params?

  WebTraceEvent?

if you went with my suggestion of WebTraceCategory, then you could also
just make this be a virtual method on WebTraceCategory since you already
having to pass the &quot;categoryEnabled&quot; flag to this function.

also, if you went with WebTraceCategory::addEvent, then you&apos;d be able to
document the addEvent function not in WebKitPlatformSupport.h.

perhaps some downsides to introducing classes like these:

 - don&apos;t have it on the chromium side
 - don&apos;t have it on the webcore side
 - would be awkward to have it only in the webkit API and not elsewhere

hmmm...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541424</commentid>
    <comment_count>7</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-24 10:07:08 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 123687 [details])
&gt; Is the use of the internal namespace buying us anything? 

Yeah, I think so. It buys us less WebCore namespace clutter with things that should never be used outside of this header. This follows the original design in this header where the ScopedTracer class was in the internal namespace.

&gt;I&apos;d rather we just set up the names so that they&apos;re not going to obviously clash. 

How about we mangle the names a bit more but still keep them in internal to avoid cluttering the WebCore namespace?

&gt; How are you going to switch over the old instrumentation points to this one? Does this even compile?

Yes, it does compile and run. Notice the old TRACE_EVENT macro that has been changed to use the new style. However, a followup patch needs to clean up all instances of TRACE_EVENT so that we&apos;re not wasting arguments on 0 and &apos;this&apos;, etc. We could also optionally switch to variadic TRACE_EVENT at that point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541467</commentid>
    <comment_count>8</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-24 10:45:14 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 123687 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123687&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:250
&gt; &gt; +    virtual const unsigned char* getCategoryEnabled(const char* categoryName) { return 0; }
&gt; 
&gt; sorry, i can&apos;t help but nit-pick the name of this function.  it confuses me everytime
&gt; I read it.

Me too, it was left over API naming that I forgot to fix up -- I&apos;ll fix it now.

&gt; 
&gt; perhaps better named:  &quot;const bool* getTraceCategoryEnabledFlag(const char* categoryName)&quot;
&gt;  - what&apos;s the point of returning the address of an unsigned char over a bool?

Some discussion of this took place on the chromium-side CL, but essentially C-compatibility in the unlikely event that we want to trace from a C third-party library. (tl;dr There were also unsubstantiated claims that this pointer could point to garbage in some cases, which would mean unsigned char != 0 is more spec compliant than bool == true, but that&apos;s being really pedantic. Also it should never be garbage thanks to cache coherency as discussed in the chromium CL http://codereview.chromium.org/9155024/.)

&gt;  - it seems like it should have the word &quot;Trace&quot; in it somewhere for namespace reasons.
&gt;  - a &quot;Flag&quot; suffix might make the function name a little clearer--dunno.

Sounds good, will go with getTraceCategoryEnabledFlag.

&gt; 
&gt; Everytime I read &quot;getCategoryEnabled&quot; I think it is going to tell me right now if the category
&gt; is enabled, but in reality this is a query for the address of a flag that I can later dereference
&gt; to see if the category is enabled.
&gt; 
&gt; another idea, maybe too crazy, would be to implement a small class to wrap the flag:
&gt; 
&gt;   class WebTraceCategory {
&gt;   public:
&gt;       ...
&gt;       bool isEnabled() const { *m_flag != 0; }
&gt;   private:
&gt;       const unsigned char* m_flag;
&gt;   };
&gt; 
&gt; Then getCategoryEnabled could be morphed into &quot;WebTraceCategory getTraceCategory(const char* categoryName)&quot;
&gt; 
&gt; &gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:274
&gt; &gt; +    virtual int addTraceEvent(
&gt; 
&gt; had to you considered creating a struct for all these params?

One of the design constraints was to avoid structs altogether in this API so that we didn&apos;t end up with structs defined in multiple libraries that could potentially diverge. Since the third party libraries can&apos;t include headers from chromium/base and base can&apos;t include from a third party, this seemed to be the best solution. Another design constraint is performance, so if we went with a struct and then had to copy from each third party variant to the base struct it would be a bit slower.

&gt; 
&gt;   WebTraceEvent?
&gt; 
&gt; if you went with my suggestion of WebTraceCategory, then you could also
&gt; just make this be a virtual method on WebTraceCategory since you already
&gt; having to pass the &quot;categoryEnabled&quot; flag to this function.
&gt; 
&gt; also, if you went with WebTraceCategory::addEvent, then you&apos;d be able to
&gt; document the addEvent function not in WebKitPlatformSupport.h.
&gt; 
&gt; perhaps some downsides to introducing classes like these:
&gt; 
&gt;  - don&apos;t have it on the chromium side
&gt;  - don&apos;t have it on the webcore side
&gt;  - would be awkward to have it only in the webkit API and not elsewhere
&gt; 
&gt; hmmm...

Yeah, there were some hairy design constraints. It&apos;s also nice to avoid the virtual call to get the enabled state for optimal performance when tracing is disabled (where it currently only needs to fetch the unsigned char value).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541770</commentid>
    <comment_count>9</comment_count>
      <attachid>123825</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-24 15:31:01 -0800</bug_when>
    <thetext>Created attachment 123825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541774</commentid>
    <comment_count>10</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-24 15:35:13 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=123825) [details]
&gt; Patch

I&apos;ve updated the API wording and moved from the internal namespace to WebCore::TraceEvent to give the tracing symbols a home of their own. PTAL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541775</commentid>
    <comment_count>11</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-24 15:36:01 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Created an attachment (id=123825) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; I&apos;ve updated the API wording and moved from the internal namespace to WebCore::TraceEvent to give the tracing symbols a home of their own. PTAL.

Note this won&apos;t compile until the chromium-side CL has landed: https://chromiumcodereview.appspot.com/9234007/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541875</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-24 17:15:57 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; perhaps better named:  &quot;const bool* getTraceCategoryEnabledFlag(const char* categoryName)&quot;
&gt; &gt;  - what&apos;s the point of returning the address of an unsigned char over a bool?
&gt; 
&gt; Some discussion of this took place on the chromium-side CL, but essentially C-compatibility in the unlikely event that we want to trace from a C third-party library. (tl;dr There were also unsubstantiated claims that this pointer could point to garbage in some cases, which would mean unsigned char != 0 is more spec compliant than bool == true, but that&apos;s being really pedantic. Also it should never be garbage thanks to cache coherency as discussed in the chromium CL http://codereview.chromium.org/9155024/.)

It doesn&apos;t seem like we should worry about C-compat, especially in the context of WebKit.  My proposal really was to just wrap the char pointer with a class.  The generated code would be no different than what you get by using the char pointer directly.  I was only proposing some syntactic sugar to make the API cleaner :)


&gt; One of the design constraints was to avoid structs altogether in this API so that we didn&apos;t end up with structs defined in multiple libraries that could potentially diverge. Since the third party libraries can&apos;t include headers from chromium/base and base can&apos;t include from a third party, this seemed to be the best solution. Another design constraint is performance, so if we went with a struct and then had to copy from each third party variant to the base struct it would be a bit slower.

Multiple definitions of the same struct is definitely annoying to maintain.  I wouldn&apos;t be concerned about the cost of copying structs.  Passing a struct by value is the same as passing a set of parameters each by value.  You should get nearly the same code generated.


&gt; Yeah, there were some hairy design constraints. It&apos;s also nice to avoid the virtual call to get the enabled state for optimal performance when tracing is disabled (where it currently only needs to fetch the unsigned char value).

I wasn&apos;t proposing an additional virtual calls.  My proposal was to move the addTraceEvent virtual call from WebKitPlatformSupport to WebTraceCategory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541946</commentid>
    <comment_count>13</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-24 18:25:54 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #8)
&gt; &gt; &gt; perhaps better named:  &quot;const bool* getTraceCategoryEnabledFlag(const char* categoryName)&quot;
&gt; &gt; &gt;  - what&apos;s the point of returning the address of an unsigned char over a bool?
&gt; &gt; 
&gt; &gt; Some discussion of this took place on the chromium-side CL, but essentially C-compatibility in the unlikely event that we want to trace from a C third-party library. (tl;dr There were also unsubstantiated claims that this pointer could point to garbage in some cases, which would mean unsigned char != 0 is more spec compliant than bool == true, but that&apos;s being really pedantic. Also it should never be garbage thanks to cache coherency as discussed in the chromium CL http://codereview.chromium.org/9155024/.)
&gt; 
&gt; It doesn&apos;t seem like we should worry about C-compat, especially in the context of WebKit.  My proposal really was to just wrap the char pointer with a class.  The generated code would be no different than what you get by using the char pointer directly.  I was only proposing some syntactic sugar to make the API cleaner :)

I see. I guess this API has become a bit monstrous in appearance because it&apos;s never called by user code. It&apos;s only called by the macros in TraceEvent.h. The main goal for the macros is to keep them somewhat in sync with chromium&apos;s versions in trace_event.h so that the behavior stays the same.

&gt; 
&gt; 
&gt; &gt; One of the design constraints was to avoid structs altogether in this API so that we didn&apos;t end up with structs defined in multiple libraries that could potentially diverge. Since the third party libraries can&apos;t include headers from chromium/base and base can&apos;t include from a third party, this seemed to be the best solution. Another design constraint is performance, so if we went with a struct and then had to copy from each third party variant to the base struct it would be a bit slower.
&gt; 
&gt; Multiple definitions of the same struct is definitely annoying to maintain.  I wouldn&apos;t be concerned about the cost of copying structs.  Passing a struct by value is the same as passing a set of parameters each by value.  You should get nearly the same code generated.

Good point. I was hoping the compiler could optimize those copies when they are passed through multiple leaf-function calls with the same parameters by sharing the stack frame.

&gt; 
&gt; 
&gt; &gt; Yeah, there were some hairy design constraints. It&apos;s also nice to avoid the virtual call to get the enabled state for optimal performance when tracing is disabled (where it currently only needs to fetch the unsigned char value).
&gt; 
&gt; I wasn&apos;t proposing an additional virtual calls.  My proposal was to move the addTraceEvent virtual call from WebKitPlatformSupport to WebTraceCategory.

I think I understand now. Is the goal to simplify the API of WebKitPlatformSupport or to provide syntactic sugar for the code that calls WebKitPlatformSupport? (The latter would be limited to the TraceEvent macros since they are the only callers.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542001</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-24 22:05:20 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; &gt; perhaps better named:  &quot;const bool* getTraceCategoryEnabledFlag(const char* categoryName)&quot;
&gt; &gt; &gt; &gt;  - what&apos;s the point of returning the address of an unsigned char over a bool?
&gt; &gt; &gt; 
&gt; &gt; &gt; Some discussion of this took place on the chromium-side CL, but essentially C-compatibility in the unlikely event that we want to trace from a C third-party library. (tl;dr There were also unsubstantiated claims that this pointer could point to garbage in some cases, which would mean unsigned char != 0 is more spec compliant than bool == true, but that&apos;s being really pedantic. Also it should never be garbage thanks to cache coherency as discussed in the chromium CL http://codereview.chromium.org/9155024/.)
&gt; &gt; 
&gt; &gt; It doesn&apos;t seem like we should worry about C-compat, especially in the context of WebKit.  My proposal really was to just wrap the char pointer with a class.  The generated code would be no different than what you get by using the char pointer directly.  I was only proposing some syntactic sugar to make the API cleaner :)
&gt; 
&gt; I see. I guess this API has become a bit monstrous in appearance because it&apos;s never called by user code. It&apos;s only called by the macros in TraceEvent.h. The main goal for the macros is to keep them somewhat in sync with chromium&apos;s versions in trace_event.h so that the behavior stays the same.

Yeah...


&gt; &gt; &gt; One of the design constraints was to avoid structs altogether in this API so that we didn&apos;t end up with structs defined in multiple libraries that could potentially diverge. Since the third party libraries can&apos;t include headers from chromium/base and base can&apos;t include from a third party, this seemed to be the best solution. Another design constraint is performance, so if we went with a struct and then had to copy from each third party variant to the base struct it would be a bit slower.
&gt; &gt; 
&gt; &gt; Multiple definitions of the same struct is definitely annoying to maintain.  I wouldn&apos;t be concerned about the cost of copying structs.  Passing a struct by value is the same as passing a set of parameters each by value.  You should get nearly the same code generated.
&gt; 
&gt; Good point. I was hoping the compiler could optimize those copies when they are passed through multiple leaf-function calls with the same parameters by sharing the stack frame.

that optimization should apply regardless of how you structure the parameters passed on the stack, right?  pass by struct or pass by N variables... same thing, no?


&gt; &gt; &gt; Yeah, there were some hairy design constraints. It&apos;s also nice to avoid the virtual call to get the enabled state for optimal performance when tracing is disabled (where it currently only needs to fetch the unsigned char value).
&gt; &gt; 
&gt; &gt; I wasn&apos;t proposing an additional virtual calls.  My proposal was to move the addTraceEvent virtual call from WebKitPlatformSupport to WebTraceCategory.
&gt; 
&gt; I think I understand now. Is the goal to simplify the API of WebKitPlatformSupport or to provide syntactic sugar for the code that calls WebKitPlatformSupport? (The latter would be limited to the TraceEvent macros since they are the only callers.

I am mostly motivated by wanting to compartmentalize, but also when I see a function with a zillion mysterious parameters, it makes me feel a bit sad :)

That said, I don&apos;t think you need to necessarily take my suggestions.  I just wanted to share in case it spurned some thoughts about how to improve things.  It is fine to proceed as-is so that folks can start benefiting from tracing soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542008</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-24 22:15:26 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; Good point. I was hoping the compiler could optimize those copies when they are passed through multiple leaf-function calls with the same parameters by sharing the stack frame.
&gt; 
&gt; that optimization should apply regardless of how you structure the parameters passed on the stack, right?  pass by struct or pass by N variables... same thing, no?

I get it now.  The structs at each level would be different types, and while we might attempt to keep them in-sync, if they ever drifted, then it would neutralize any chance of such a &quot;pass through&quot; optimization.  Got it.

OK, so you&apos;ve convinced that we should have a function with a zillion parameters :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542011</commentid>
    <comment_count>16</comment_count>
      <attachid>123825</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-24 22:23:02 -0800</bug_when>
    <thetext>Comment on attachment 123825
Patch

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

&gt; Source/WebCore/platform/chromium/PlatformSupport.h:424
&gt; +                             const unsigned char* category_enabled,

nit: category_enabled_flag

&gt; Source/WebCore/platform/chromium/TraceEvent.h:570
&gt; +const int kZeroNumArgs = 0;

nit: webkit style for constants is still to use variable naming style: zeroNumArgs, etc.

&gt; Source/WebCore/platform/chromium/TraceEvent.h:571
&gt; +const int kNoThreshholdBeginId = -1;

nit: &quot;hh&quot; -&gt; &quot;h&quot; ??

&gt; Source/WebCore/platform/chromium/TraceEvent.h:791
&gt; +    void Initialize(const unsigned char* categoryEnabled,

nit: webkit style has function names starting with a lowercase letter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542606</commentid>
    <comment_count>17</comment_count>
      <attachid>124007</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-25 14:05:59 -0800</bug_when>
    <thetext>Created attachment 124007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542609</commentid>
    <comment_count>18</comment_count>
      <attachid>123825</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-25 14:09:07 -0800</bug_when>
    <thetext>Comment on attachment 123825
Patch

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

One more thing to do -- remove the old unused tracing API (traceEventBegin, etc).

&gt;&gt; Source/WebCore/platform/chromium/PlatformSupport.h:424
&gt;&gt; +                             const unsigned char* category_enabled,
&gt; 
&gt; nit: category_enabled_flag

Done.

&gt;&gt; Source/WebCore/platform/chromium/TraceEvent.h:570
&gt;&gt; +const int kZeroNumArgs = 0;
&gt; 
&gt; nit: webkit style for constants is still to use variable naming style: zeroNumArgs, etc.

Done.

&gt;&gt; Source/WebCore/platform/chromium/TraceEvent.h:571
&gt;&gt; +const int kNoThreshholdBeginId = -1;
&gt; 
&gt; nit: &quot;hh&quot; -&gt; &quot;h&quot; ??

Done.

&gt;&gt; Source/WebCore/platform/chromium/TraceEvent.h:791
&gt;&gt; +    void Initialize(const unsigned char* categoryEnabled,
&gt; 
&gt; nit: webkit style has function names starting with a lowercase letter.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542673</commentid>
    <comment_count>19</comment_count>
      <attachid>124021</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-25 15:04:37 -0800</bug_when>
    <thetext>Created attachment 124021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542709</commentid>
    <comment_count>20</comment_count>
      <attachid>124021</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 15:42:07 -0800</bug_when>
    <thetext>Comment on attachment 124021
Patch

Attachment 124021 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11191070

New failing tests:
animations/animation-controller-drt-api.html
animations/3d/transform-origin-vs-functions.html
accessibility/aria-checkbox-checked.html
http/tests/appcache/access-via-redirect.php
http/tests/appcache/auth.html
animations/animation-css-rule-types.html
animations/3d/matrix-transform-type-animation.html
animations/3d/state-at-end-event-transform.html
http/tests/appcache/credential-url.html
http/tests/appcache/crash-when-navigating-away-then-back.html
accessibility/anonymous-render-block-in-continuation-causes-crash.html
accessibility/adjacent-continuations-cause-assertion-failure.html
animations/additive-transform-animations.html
animations/3d/change-transform-in-end-event.html
animations/3d/replace-filling-transform.html
http/tests/appcache/cyrillic-uri.html
accessibility/anchor-linked-anonymous-block-crash.html
animations/animation-direction-normal.html
accessibility/aria-checkbox-sends-notification.html
animations/animation-add-events-in-handler.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542710</commentid>
    <comment_count>21</comment_count>
      <attachid>124025</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 15:42:11 -0800</bug_when>
    <thetext>Created attachment 124025
Archive of layout-test-results from ec2-cr-linux-04

The attached test failures were seen while running run-webkit-tests on the chromium-ews.
Bot: ec2-cr-linux-04  Port: Chromium  Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542713</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-25 15:45:48 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 124021 [details])
&gt; Attachment 124021 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11191070
&gt; 
&gt; New failing tests:
&gt; animations/animation-controller-drt-api.html
&gt; animations/3d/transform-origin-vs-functions.html
&gt; accessibility/aria-checkbox-checked.html
&gt; http/tests/appcache/access-via-redirect.php
&gt; http/tests/appcache/auth.html
&gt; animations/animation-css-rule-types.html
&gt; animations/3d/matrix-transform-type-animation.html
&gt; animations/3d/state-at-end-event-transform.html
&gt; http/tests/appcache/credential-url.html
&gt; http/tests/appcache/crash-when-navigating-away-then-back.html
&gt; accessibility/anonymous-render-block-in-continuation-causes-crash.html
&gt; accessibility/adjacent-continuations-cause-assertion-failure.html
&gt; animations/additive-transform-animations.html
&gt; animations/3d/change-transform-in-end-event.html
&gt; animations/3d/replace-filling-transform.html
&gt; http/tests/appcache/cyrillic-uri.html
&gt; accessibility/anchor-linked-anonymous-block-crash.html
&gt; animations/animation-direction-normal.html
&gt; accessibility/aria-checkbox-sends-notification.html
&gt; animations/animation-add-events-in-handler.html

Looks like every test that hits a TRACE_EVENT crashes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542729</commentid>
    <comment_count>23</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-25 15:59:14 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 124021 [details] [details])
&gt; &gt; Attachment 124021 [details] [details] did not pass chromium-ews (chromium-xvfb):
&gt; &gt; Output: http://queues.webkit.org/results/11191070
&gt; &gt; 
&gt; &gt; New failing tests:
&gt; &gt; animations/animation-controller-drt-api.html
&gt; &gt; animations/3d/transform-origin-vs-functions.html
&gt; &gt; accessibility/aria-checkbox-checked.html
&gt; &gt; http/tests/appcache/access-via-redirect.php
&gt; &gt; http/tests/appcache/auth.html
&gt; &gt; animations/animation-css-rule-types.html
&gt; &gt; animations/3d/matrix-transform-type-animation.html
&gt; &gt; animations/3d/state-at-end-event-transform.html
&gt; &gt; http/tests/appcache/credential-url.html
&gt; &gt; http/tests/appcache/crash-when-navigating-away-then-back.html
&gt; &gt; accessibility/anonymous-render-block-in-continuation-causes-crash.html
&gt; &gt; accessibility/adjacent-continuations-cause-assertion-failure.html
&gt; &gt; animations/additive-transform-animations.html
&gt; &gt; animations/3d/change-transform-in-end-event.html
&gt; &gt; animations/3d/replace-filling-transform.html
&gt; &gt; http/tests/appcache/cyrillic-uri.html
&gt; &gt; accessibility/anchor-linked-anonymous-block-crash.html
&gt; &gt; animations/animation-direction-normal.html
&gt; &gt; accessibility/aria-checkbox-sends-notification.html
&gt; &gt; animations/animation-add-events-in-handler.html
&gt; 
&gt; Looks like every test that hits a TRACE_EVENT crashes

The chromium rev needs to be rolled past 118999 before this will run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543430</commentid>
    <comment_count>24</comment_count>
      <attachid>124170</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-26 13:28:49 -0800</bug_when>
    <thetext>Created attachment 124170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543679</commentid>
    <comment_count>25</comment_count>
      <attachid>124221</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-26 17:21:22 -0800</bug_when>
    <thetext>Created attachment 124221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543681</commentid>
    <comment_count>26</comment_count>
      <attachid>124221</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-26 17:23:18 -0800</bug_when>
    <thetext>Comment on attachment 124221
Patch

I removed the manglePointer API, because it&apos;s simpler and cleaner to do that through the flags parameter of addTraceEvent. Everything else is the same -- should be ready to commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543685</commentid>
    <comment_count>27</comment_count>
      <attachid>124224</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-26 17:35:29 -0800</bug_when>
    <thetext>Created attachment 124224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543686</commentid>
    <comment_count>28</comment_count>
      <attachid>124224</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-26 17:36:27 -0800</bug_when>
    <thetext>Comment on attachment 124224
Patch

Voiding unused parameters to be pedantic. Sorry for the patch spam!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544151</commentid>
    <comment_count>29</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-27 10:09:03 -0800</bug_when>
    <thetext>jamesr, darin -- final R / CQ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544197</commentid>
    <comment_count>30</comment_count>
      <attachid>124224</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-27 11:09:27 -0800</bug_when>
    <thetext>Comment on attachment 124224
Patch

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

API is up to Darin. Left some comments.

&gt; Source/WebCore/bindings/v8/V8Proxy.cpp:342
&gt; +        TRACE_EVENT_BEGIN1(&quot;v8&quot;, &quot;v8.compile&quot;, &quot;url&quot;, source.url().string().ascii());

will the argument only be evaluated when tracing is active? source.url().string().ascii() is going to do at least one copy of the string data. even if it&apos;s only active when tracing is enabled this seems pretty heavyweight to do on every evaluate

&gt; Source/WebCore/page/Console.cpp:302
&gt; +    TRACE_EVENT_COPY_BEGIN0(&quot;webkit&quot;, title.utf8().data());

title.utf8() is going to do a conversion and string copy. i guess it was before, though</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544264</commentid>
    <comment_count>31</comment_count>
      <attachid>124224</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-27 12:38:02 -0800</bug_when>
    <thetext>Comment on attachment 124224
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/V8Proxy.cpp:342
&gt;&gt; +        TRACE_EVENT_BEGIN1(&quot;v8&quot;, &quot;v8.compile&quot;, &quot;url&quot;, source.url().string().ascii());
&gt; 
&gt; will the argument only be evaluated when tracing is active? source.url().string().ascii() is going to do at least one copy of the string data. even if it&apos;s only active when tracing is enabled this seems pretty heavyweight to do on every evaluate

It&apos;s only evaluated when tracing is active, but even so I&apos;ll remove it since this is a hot code path.

&gt;&gt; Source/WebCore/page/Console.cpp:302
&gt;&gt; +    TRACE_EVENT_COPY_BEGIN0(&quot;webkit&quot;, title.utf8().data());
&gt; 
&gt; title.utf8() is going to do a conversion and string copy. i guess it was before, though

Yeah, same behavior as before where this arg is only evaluated when tracing is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544267</commentid>
    <comment_count>32</comment_count>
      <attachid>124353</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-27 12:43:04 -0800</bug_when>
    <thetext>Created attachment 124353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545407</commentid>
    <comment_count>33</comment_count>
      <attachid>124599</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-30 14:22:54 -0800</bug_when>
    <thetext>Created attachment 124599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545419</commentid>
    <comment_count>34</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2012-01-30 14:29:42 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Created an attachment (id=124599) [details]
&gt; Patch

The latest patch adds more detail to the documentation of the new tracing API in WebKitPlatformSupport.h so that embedders know exactly what to expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546406</commentid>
    <comment_count>35</comment_count>
      <attachid>124599</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 13:03:03 -0800</bug_when>
    <thetext>Comment on attachment 124599
Patch

Clearing flags on attachment: 124599

Committed r106382: &lt;http://trac.webkit.org/changeset/106382&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546407</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 13:03:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549120</commentid>
    <comment_count>37</comment_count>
    <who name="John Bates">jbates</who>
    <bug_when>2012-02-03 14:48:22 -0800</bug_when>
    <thetext>Reopen after revert to fix crash in chromium unit_tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549145</commentid>
    <comment_count>38</comment_count>
      <attachid>125429</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-02-03 15:08:13 -0800</bug_when>
    <thetext>Created attachment 125429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549149</commentid>
    <comment_count>39</comment_count>
      <attachid>125429</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-02-03 15:13:18 -0800</bug_when>
    <thetext>Comment on attachment 125429
Patch

I hadn&apos;t realized there were chromium tests that ran with the default implementation of WebKitPlatformSupport. The latest patch makes the tracing macros run in a disabled state when the default API in WebKitPlatformSupport is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551122</commentid>
    <comment_count>40</comment_count>
      <attachid>124599</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-02-07 10:47:54 -0800</bug_when>
    <thetext>Comment on attachment 124599
Patch

recommitting now that chromium tests have been fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551124</commentid>
    <comment_count>41</comment_count>
      <attachid>124599</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 10:48:14 -0800</bug_when>
    <thetext>Comment on attachment 124599
Patch

Rejecting attachment 124599 from review queue.

jbates@google.com does not have reviewer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have reviewer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have reviewer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your reviewer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551125</commentid>
    <comment_count>42</comment_count>
      <attachid>124599</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 10:49:03 -0800</bug_when>
    <thetext>Comment on attachment 124599
Patch

Rejecting attachment 124599 from commit-queue.

jbates@google.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553364</commentid>
    <comment_count>43</comment_count>
      <attachid>126338</attachid>
    <who name="John Bates">jbates</who>
    <bug_when>2012-02-09 11:36:07 -0800</bug_when>
    <thetext>Created attachment 126338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553494</commentid>
    <comment_count>44</comment_count>
      <attachid>126338</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 14:18:41 -0800</bug_when>
    <thetext>Comment on attachment 126338
Patch

Clearing flags on attachment: 126338

Committed r107291: &lt;http://trac.webkit.org/changeset/107291&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553495</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 14:18:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123667</attachid>
            <date>2012-01-23 17:18:46 -0800</date>
            <delta_ts>2012-01-23 18:22:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120123171845.patch</filename>
            <type>text/plain</type>
            <size>46513</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQ3OGUzMDU3NjgxNTY2
YTQyZWYwYjQ4Nzk3ZTBiNGNmZTU1ZjgzNC4uMGFhNzNjNGJlNGNiZDk4MmY2NjZkYzhhNTA0Mzcz
YTMyZTIwZGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAxLTIzICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFj
ZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbDo6VHJhY2VJRDo6VHJhY2VJRCk6
CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbDo6VHJhY2VJRDo6ZGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjppbnRlcm5hbDo6VHJhY2VTdHJpbmdXaXRoQ29weTo6VHJhY2VTdHJpbmdXaXRoQ29w
eSk6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbDo6VHJhY2VTdHJpbmdXaXRoQ29weTo6b3Bl
cmF0b3IgY29uc3QgY2hhciogKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsOjpTZXRUcmFj
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsOjpBZGRUcmFjZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmludGVybmFsOjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6VHJhY2VFbmRP
blNjb3BlQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJuYWw6OlRyYWNlRW5kT25TY29w
ZUNsb3NlOjp+VHJhY2VFbmRPblNjb3BlQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJu
YWw6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OmludGVybmFsOjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6QWRkRXZlbnRJZkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6aW50ZXJuYWw6OlRyYWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xkOjpU
cmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCk6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5h
bDo6VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6On5UcmFjZUVuZE9uU2NvcGVDbG9zZVRo
cmVzaG9sZCk6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbDo6VHJhY2VFbmRPblNjb3BlQ2xv
c2VUaHJlc2hvbGQ6OkluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJuYWw6OlRy
YWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xkOjpBZGRFdmVudElmRW5hYmxlZCk6CisKIDIwMTIt
MDEtMjMgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAg
ICAgU1ZHIGFuaW1hdGlvbiByZXBhaW50IGlzc3VlIHdpdGggaW1hZ2UgYW5kIGR5bmFtaWMgY2xp
cFBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWRjZGU4OTYwNmQ5NTlmYThiMDVm
ZTJlZjYxZWYxMGE2ZTYzYjhhNy4uMzJmN2JjZDc0ZjZkMTM3MDYyNmJjODNiOGYzODE4MWNiNjlh
OTQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0w
MS0yMyAgSm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtDaHJvbWl1
bV0gQWRkIGNocm9taXVtLXN0eWxlIHRyYWNpbmcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY4ODUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvZGUgZW5hYmxlcyBXZWJLaXQgdHJh
Y2UgZXZlbnRzIHRvIHBhc3MgdGhyb3VnaCBtb3JlIGRhdGEgdG8gdGhlCisgICAgICAgIGNocm9t
aXVtIHBsYXRmb3JtIHRyYWNpbmcgQVBJIGFuZCBnZW5lcmFsbHkgdG8gdXNlIHRoZSBmdWxsIHRy
YWNpbmcKKyAgICAgICAgQVBJIHByb3ZpZGVkIGJ5IGNocm9taXVtLgorCisgICAgICAgICogcHVi
bGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmdldENhdGVnb3J5RW5hYmxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6bWFuZ2xlUG9pbnRlckZvclRyYWNpbmcpOgorICAg
ICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TdXBwb3J0OjpnZXRDYXRlZ29yeUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1hbmdsZVBvaW50
ZXJGb3JUcmFjaW5nKToKKwogMjAxMi0wMS0yMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdv
b2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUGFnZUFnZW50Lm9wZW4oKSBkb3Nl
bid0IGJlbG9uZyB0byB0aGUgcHJvdG9jb2wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4IGM4ZGVkNmUyNmJhNzg0YzZlMTYz
NzQxZDY2MjhlODU5MzljMzZhNmUuLmQ0ZTM3ZDBiMDAyNjVkMGFlN2JjNDE4NTUxYjJjODBkM2I5
MTYxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtU3VwcG9ydC5oCkBAIC00MTksNiArNDE5LDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBpc1RyYWNlRXZlbnRFbmFibGVkKCk7CiAgICAgc3RhdGljIHZvaWQgdHJhY2VFdmVudEJlZ2lu
KGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqLCBjb25zdCBjaGFyKiBleHRyYSk7CiAgICAgc3RhdGlj
IHZvaWQgdHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiwgY29uc3QgY2hhciog
ZXh0cmEpOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyKiBnZXRDYXRlZ29yeUVuYWJs
ZWQoY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKTsKKyAgICBzdGF0aWMgaW50IGFkZFRyYWNlRXZl
bnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciogY2F0ZWdvcnlfZW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtX2FyZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdfbmFtZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFyZ190eXBl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25n
KiBhcmdfdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xk
X2JlZ2luX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGhyZXNo
b2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKTsK
KyAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIG1hbmdsZVBvaW50ZXJGb3JUcmFjaW5nKHZv
aWQqIHBvaW50ZXIpOwogCiAgICAgLy8gVmlzaXRlZCBsaW5rcyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBzdGF0aWMgTGlua0hhc2gg
dmlzaXRlZExpbmtIYXNoKGNvbnN0IFVDaGFyKiB1cmwsIHVuc2lnbmVkIGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmgKaW5kZXggNjUyZjU0
MDdjYTNmNTc1MTRjZmFhM2Q2YThiZGQwNjgyNTdiOTY5OS4uZTVhZGJiM2Q5MjEyNGZhMGMzZjkz
NzY2OTM2ODFiZjliZDA3NWM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vVHJhY2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1RyYWNlRXZlbnQuaApAQCAtMjIsNTIgKzIyLDgwNSBAQAogICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCisKKy8vIFRyYWNlIGV2ZW50cyBhcmUgZm9yIHRyYWNraW5nIGFw
cGxpY2F0aW9uIHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSB1c2FnZS4KKy8vIE1hY3JvcyBhcmUg
cHJvdmlkZWQgdG8gdHJhY2s6CisvLyAgICBCZWdpbiBhbmQgZW5kIG9mIGZ1bmN0aW9uIGNhbGxz
CisvLyAgICBDb3VudGVycworLy8KKy8vIEV2ZW50cyBhcmUgaXNzdWVkIGFnYWluc3QgY2F0ZWdv
cmllcy4gV2hlcmVhcyBMT0cncworLy8gY2F0ZWdvcmllcyBhcmUgc3RhdGljYWxseSBkZWZpbmVk
LCBUUkFDRSBjYXRlZ29yaWVzIGFyZSBjcmVhdGVkCisvLyBpbXBsaWNpdGx5IHdpdGggYSBzdHJp
bmcuIEZvciBleGFtcGxlOgorLy8gICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiTVlfU1VCU1lTVEVN
IiwgIlNvbWVJbXBvcnRhbnRFdmVudCIpCisvLworLy8gRXZlbnRzIGNhbiBiZSBJTlNUQU5ULCBv
ciBjYW4gYmUgcGFpcnMgb2YgQkVHSU4gYW5kIEVORCBpbiB0aGUgc2FtZSBzY29wZToKKy8vICAg
VFJBQ0VfRVZFTlRfQkVHSU4wKCJNWV9TVUJTWVNURU0iLCAiU29tZXRoaW5nQ29zdGx5IikKKy8v
ICAgZG9Tb21ldGhpbmdDb3N0bHkoKQorLy8gICBUUkFDRV9FVkVOVF9FTkQwKCJNWV9TVUJTWVNU
RU0iLCAiU29tZXRoaW5nQ29zdGx5IikKKy8vIE5vdGU6IG91ciB0b29scyBjYW4ndCBhbHdheXMg
ZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IEJFR0lOL0VORCBwYWlycyB1bmxlc3MKKy8vIHRoZXNlIGFy
ZSB1c2VkIGluIHRoZSBzYW1lIHNjb3BlLiBVc2UgU1RBUlQvRklOSVNIIG1hY3JvcyBpZiB5b3Ug
bmVlZCB0aGVtCisvLyB0byBiZSBpbiBzZXBhcmF0ZSBzY29wZXMuCisvLworLy8gQSBjb21tb24g
dXNlIGNhc2UgaXMgdG8gdHJhY2UgZW50aXJlIGZ1bmN0aW9uIHNjb3Blcy4gVGhpcworLy8gaXNz
dWVzIGEgdHJhY2UgQkVHSU4gYW5kIEVORCBhdXRvbWF0aWNhbGx5OgorLy8gICB2b2lkIGRvU29t
ZXRoaW5nQ29zdGx5KCkgeworLy8gICAgIFRSQUNFX0VWRU5UMCgiTVlfU1VCU1lTVEVNIiwgImRv
U29tZXRoaW5nQ29zdGx5Iik7CisvLyAgICAgLi4uCisvLyAgIH0KKy8vCisvLyBBZGRpdGlvbmFs
IHBhcmFtZXRlcnMgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBldmVudDoKKy8vICAgdm9pZCBk
b1NvbWV0aGluZ0Nvc3RseTIoaW50IGhvd011Y2gpIHsKKy8vICAgICBUUkFDRV9FVkVOVDEoIk1Z
X1NVQlNZU1RFTSIsICJkb1NvbWV0aGluZ0Nvc3RseSIsCisvLyAgICAgICAgICJob3dNdWNoIiwg
aG93TXVjaCk7CisvLyAgICAgLi4uCisvLyAgIH0KKy8vCisvLyBUaGUgdHJhY2Ugc3lzdGVtIHdp
bGwgYXV0b21hdGljYWxseSBhZGQgdG8gdGhpcyBpbmZvcm1hdGlvbiB0aGUKKy8vIGN1cnJlbnQg
cHJvY2VzcyBpZCwgdGhyZWFkIGlkLCBhbmQgYSB0aW1lc3RhbXAgaW4gbWljcm9zZWNvbmRzLgor
Ly8KKy8vIFRvIHRyYWNlIGFuIGFzeW5jaHJvbm91cyBwcm9jZWR1cmUgc3VjaCBhcyBhbiBJUEMg
c2VuZC9yZWNlaXZlLCB1c2UgU1RBUlQgYW5kCisvLyBGSU5JU0g6CisvLyAgIFtzaW5nbGUgdGhy
ZWFkZWQgc2VuZGVyIGNvZGVdCisvLyAgICAgc3RhdGljIGludCBzZW5kX2NvdW50ID0gMDsKKy8v
ICAgICArK3NlbmRfY291bnQ7CisvLyAgICAgVFJBQ0VfRVZFTlRfU1RBUlQwKCJpcGMiLCAibWVz
c2FnZSIsIHNlbmRfY291bnQpOworLy8gICAgIFNlbmQobmV3IE15TWVzc2FnZShzZW5kX2NvdW50
KSk7CisvLyAgIFtyZWNlaXZlIGNvZGVdCisvLyAgICAgdm9pZCBPbk15TWVzc2FnZShzZW5kX2Nv
dW50KSB7CisvLyAgICAgICBUUkFDRV9FVkVOVF9GSU5JU0gwKCJpcGMiLCAibWVzc2FnZSIsIHNl
bmRfY291bnQpOworLy8gICAgIH0KKy8vIFRoZSB0aGlyZCBwYXJhbWV0ZXIgaXMgYSB1bmlxdWUg
SUQgdG8gbWF0Y2ggU1RBUlQvRklOSVNIIHBhaXJzLgorLy8gU1RBUlQgYW5kIEZJTklTSCBjYW4g
b2NjdXIgb24gYW55IHRocmVhZCBvZiBhbnkgdHJhY2VkIHByb2Nlc3MuIFBvaW50ZXJzIGNhbgor
Ly8gYmUgdXNlZCBmb3IgdGhlIElEIHBhcmFtZXRlciwgYW5kIHRoZXkgd2lsbCBiZSBtYW5nbGVk
IGludGVybmFsbHkgc28gdGhhdAorLy8gdGhlIHNhbWUgcG9pbnRlciBvbiB0d28gZGlmZmVyZW50
IHByb2Nlc3NlcyB3aWxsIG5vdCBtYXRjaC4gRm9yIGV4YW1wbGU6CisvLyAgIGNsYXNzIE15VHJh
Y2VkQ2xhc3MgeworLy8gICAgcHVibGljOgorLy8gICAgIE15VHJhY2VkQ2xhc3MoKSB7CisvLyAg
ICAgICBUUkFDRV9FVkVOVF9TVEFSVDAoImNhdGVnb3J5IiwgIk15VHJhY2VkQ2xhc3MiLCB0aGlz
KTsKKy8vICAgICB9CisvLyAgICAgfk15VHJhY2VkQ2xhc3MoKSB7CisvLyAgICAgICBUUkFDRV9F
VkVOVF9GSU5JU0gwKCJjYXRlZ29yeSIsICJNeVRyYWNlZENsYXNzIiwgdGhpcyk7CisvLyAgICAg
fQorLy8gICB9CisvLworLy8gVHJhY2UgZXZlbnQgYWxzbyBzdXBwb3J0cyBjb3VudGVycywgd2hp
Y2ggaXMgYSB3YXkgdG8gdHJhY2sgYSBxdWFudGl0eQorLy8gYXMgaXQgdmFyaWVzIG92ZXIgdGlt
ZS4gQ291bnRlcnMgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1hY3JvOgorLy8gICBU
UkFDRV9DT1VOVEVSMSgiTVlfU1VCU1lTVEVNIiwgIm15Q291bnRlciIsIGdfbXlDb3VudGVyVmFs
dWUpOworLy8KKy8vIENvdW50ZXJzIGFyZSBwcm9jZXNzLXNwZWNpZmljLiBUaGUgbWFjcm8gaXRz
ZWxmIGNhbiBiZSBpc3N1ZWQgZnJvbSBhbnkKKy8vIHRocmVhZCwgaG93ZXZlci4KKy8vCisvLyBT
b21ldGltZXMsIHlvdSB3YW50IHRvIHRyYWNrIHR3byBjb3VudGVycyBhdCBvbmNlLiBZb3UgY2Fu
IGRvIHRoaXMgd2l0aCB0d28KKy8vIGNvdW50ZXIgbWFjcm9zOgorLy8gICBUUkFDRV9DT1VOVEVS
MSgiTVlfU1VCU1lTVEVNIiwgIm15Q291bnRlcjAiLCBnX215Q291bnRlclZhbHVlWzBdKTsKKy8v
ICAgVFJBQ0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIxIiwgZ19teUNvdW50
ZXJWYWx1ZVsxXSk7CisvLyBPciB5b3UgY2FuIGRvIGl0IHdpdGggYSBjb21iaW5lZCBtYWNybzoK
Ky8vICAgVFJBQ0VfQ09VTlRFUjIoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIiLAorLy8gICAg
ICAgImJ5dGVzUGlubmVkIiwgZ19teUNvdW50ZXJWYWx1ZVswXSwKKy8vICAgICAgICJieXRlc0Fs
bG9jYXRlZCIsIGdfbXlDb3VudGVyVmFsdWVbMV0pOworLy8gVGhpcyBpbmRpY2F0ZXMgdG8gdGhl
IHRyYWNpbmcgVUkgdGhhdCB0aGVzZSBjb3VudGVycyBzaG91bGQgYmUgZGlzcGxheWVkCisvLyBp
biBhIHNpbmdsZSBncmFwaCwgYXMgYSBzdW1tZWQgYXJlYSBjaGFydC4KKy8vCisvLyBTaW5jZSBj
b3VudGVycyBhcmUgaW4gYSBnbG9iYWwgbmFtZXNwYWNlLCB5b3UgbWF5IHdhbnQgdG8gZGlzZW1i
aWd1YXRlIHdpdGggYQorLy8gdW5pcXVlIElELCBieSB1c2luZyB0aGUgVFJBQ0VfQ09VTlRFUl9J
RCogdmFyaWF0aW9ucy4KKy8vCisvLyBCeSBkZWZhdWx0LCB0cmFjZSBjb2xsZWN0aW9uIGlzIGNv
bXBpbGVkIGluLCBidXQgdHVybmVkIG9mZiBhdCBydW50aW1lLgorLy8gQ29sbGVjdGluZyB0cmFj
ZSBkYXRhIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgZW1iZWRkaW5nCisvLyBhcHBsaWNh
dGlvbi4gSW4gQ2hyb21lJ3MgY2FzZSwgbmF2aWdhdGluZyB0byBhYm91dDp0cmFjaW5nIHdpbGwg
dHVybiBvbgorLy8gdHJhY2luZyBhbmQgZGlzcGxheSBkYXRhIGNvbGxlY3RlZCBhY3Jvc3MgYWxs
IGFjdGl2ZSBwcm9jZXNzZXMuCisvLworLy8KKy8vIE1lbW9yeSBzY29waW5nIG5vdGU6CisvLyBU
cmFjaW5nIGNvcGllcyB0aGUgcG9pbnRlcnMsIG5vdCB0aGUgc3RyaW5nIGNvbnRlbnQsIG9mIHRo
ZSBzdHJpbmdzIHBhc3NlZAorLy8gaW4gZm9yIGNhdGVnb3J5LCBuYW1lLCBhbmQgYXJnX25hbWVz
LiBUaHVzLCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbAorLy8gY2F1c2UgcHJvYmxlbXM6CisvLyAg
ICAgY2hhciogc3RyID0gc3RyZHVwKCJpbXBwcnRhbnROYW1lIik7CisvLyAgICAgVFJBQ0VfRVZF
TlRfSU5TVEFOVDAoIlNVQlNZU1RFTSIsIHN0cik7ICAvLyBCQUQhCisvLyAgICAgZnJlZShzdHIp
OyAgICAgICAgICAgICAgICAgICAvLyBUcmFjZSBzeXN0ZW0gbm93IGhhcyBkYW5nbGluZyBwb2lu
dGVyCisvLworLy8gVG8gYXZvaWQgdGhpcyBpc3N1ZSB3aXRoIHRoZSB8bmFtZXwgYW5kIHxhcmdf
bmFtZXwgcGFyYW1ldGVycywgdXNlIHRoZQorLy8gVFJBQ0VfRVZFTlRfQ09QWV9YWFggb3Zlcmxv
YWRzIG9mIHRoZSBtYWNyb3MgYXQgYWRkaXRpb25hbCBydW50aW1lIG92ZXJoZWFkLgorLy8gTm90
ZXM6IFRoZSBjYXRlZ29yeSBtdXN0IGFsd2F5cyBiZSBpbiBhIGxvbmctbGl2ZWQgY2hhciogKGku
ZS4gc3RhdGljIGNvbnN0KS4KKy8vICAgICAgICBUaGUgfGFyZ192YWx1ZXN8LCB3aGVuIHVzZWQs
IGFyZSBhbHdheXMgZGVlcCBjb3BpZWQgd2l0aCB0aGUgX0NPUFkKKy8vICAgICAgICBtYWNyb3Mu
CisvLworLy8gV2hlbiBhcmUgc3RyaW5nIGFyZ3VtZW50IHZhbHVlcyBjb3BpZWQ6CisvLyBjb25z
dCBjaGFyKiBhcmdfdmFsdWVzIGFyZSBvbmx5IHJlZmVyZW5jZWQgYnkgZGVmYXVsdDoKKy8vICAg
ICBUUkFDRV9FVkVOVDEoImNhdGVnb3J5IiwgIm5hbWUiLAorLy8gICAgICAgICAgICAgICAgICAi
YXJnMSIsICJsaXRlcmFsIHN0cmluZyBpcyBvbmx5IHJlZmVyZW5jZWQiKTsKKy8vIFVzZSBUUkFD
RV9TVFJfQ09QWSB0byBmb3JjZSBjb3B5aW5nIG9mIGEgY29uc3QgY2hhcio6CisvLyAgICAgVFJB
Q0VfRVZFTlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAgImFyZzEi
LCBUUkFDRV9TVFJfQ09QWSgic3RyaW5nIHdpbGwgYmUgY29waWVkIikpOworLy8gc3RkOjpzdHJp
bmcgYXJnX3ZhbHVlcyBhcmUgYWx3YXlzIGNvcGllZDoKKy8vICAgICBUUkFDRV9FVkVOVDEoImNh
dGVnb3J5IiwgIm5hbWUiLAorLy8gICAgICAgICAgICAgICAgICAiYXJnMSIsIHN0ZDo6c3RyaW5n
KCJzdHJpbmcgd2lsbCBiZSBjb3BpZWQiKSk7CisvLworLy8KKy8vIFRocmVhZCBTYWZldHk6Cisv
LyBBIHRocmVhZCBzYWZlIHNpbmdsZXRvbiBhbmQgbXV0ZXggYXJlIHVzZWQgZm9yIHRocmVhZCBz
YWZldHkuIENhdGVnb3J5CisvLyBlbmFibGVkIGZsYWdzIGFyZSB1c2VkIHRvIGxpbWl0IHRoZSBw
ZXJmb3JtYW5jZSBpbXBhY3Qgd2hlbiB0aGUgc3lzdGVtCisvLyBpcyBub3QgZW5hYmxlZC4KKy8v
CisvLyBUUkFDRV9FVkVOVCBtYWNyb3MgZmlyc3QgY2FjaGUgYSBwb2ludGVyIHRvIGEgY2F0ZWdv
cnkuIFRoZSBjYXRlZ29yaWVzIGFyZQorLy8gc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIHNhZmUg
YXQgYWxsIHRpbWVzLCBldmVuIGFmdGVyIGV4aXQuIEZldGNoaW5nIGEKKy8vIGNhdGVnb3J5IGlz
IHByb3RlY3RlZCBieSB0aGUgVHJhY2VMb2c6OmxvY2tfLiBNdWx0aXBsZSB0aHJlYWRzIGluaXRp
YWxpemluZworLy8gdGhlIHN0YXRpYyB2YXJpYWJsZSBpcyBzYWZlLCBhcyB0aGV5IHdpbGwgYmUg
c2VyaWFsaXplZCBieSB0aGUgbG9jayBhbmQKKy8vIG11bHRpcGxlIGNhbGxzIHdpbGwgcmV0dXJu
IHRoZSBzYW1lIHBvaW50ZXIgdG8gdGhlIGNhdGVnb3J5LgorLy8KKy8vIFRoZW4gdGhlIGNhdGVn
b3J5X2VuYWJsZWQgZmxhZyBpcyBjaGVja2VkLiBUaGlzIGlzIGEgdW5zaWduZWQgY2hhciwgYW5k
CisvLyBub3QgaW50ZW5kZWQgdG8gYmUgbXVsdGl0aHJlYWQgc2FmZS4gSXQgb3B0aW1pemVzIGFj
Y2VzcyB0byBBZGRUcmFjZUV2ZW50CisvLyB3aGljaCBpcyB0aHJlYWRzYWZlIGludGVybmFsbHkg
dmlhIFRyYWNlTG9nOjpsb2NrXy4gVGhlIGVuYWJsZWQgZmxhZyBtYXkKKy8vIGNhdXNlIHNvbWUg
dGhyZWFkcyB0byBpbmNvcnJlY3RseSBjYWxsIG9yIHNraXAgY2FsbGluZyBBZGRUcmFjZUV2ZW50
IG5lYXIKKy8vIHRoZSB0aW1lIG9mIHRoZSBzeXN0ZW0gYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxl
ZC4gVGhpcyBpcyBhY2NlcHRhYmxlIGFzCisvLyB3ZSB0b2xlcmF0ZSBzb21lIGRhdGEgbG9zcyB3
aGlsZSB0aGUgc3lzdGVtIGlzIGJlaW5nIGVuYWJsZWQvZGlzYWJsZWQgYW5kCisvLyBiZWNhdXNl
IEFkZFRyYWNlRXZlbnQgaXMgdGhyZWFkc2FmZSBpbnRlcm5hbGx5IGFuZCBjaGVja3MgdGhlIGVu
YWJsZWQgc3RhdGUKKy8vIGFnYWluIHVuZGVyIGxvY2suCisvLworLy8gV2l0aG91dCB0aGUgdXNl
IG9mIHRoZXNlIHN0YXRpYyBjYXRlZ29yeSBwb2ludGVycyBhbmQgZW5hYmxlZCBmbGFncyBhbGwK
Ky8vIHRyYWNlIHBvaW50cyB3b3VsZCBjYXJyeSBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGNv
c3Qgb2YgYXF1aXJpbmcgYSBsb2NrCisvLyBhbmQgcmVzb2x2aW5nIHRoZSBjYXRlZ29yeS4KKwog
I2lmbmRlZiBUcmFjZUV2ZW50X2gKICNkZWZpbmUgVHJhY2VFdmVudF9oCiAKKyNpbmNsdWRlICJE
eW5hbWljQW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKLSNpbmNs
dWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KworLy8gSXNzdWVzIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luIGFuZCB0cmFjZUV2
ZW50RW5kIGNhbGxzIGZvciB0aGUgZW5jbG9zaW5nIHNjb3BlCisjZGVmaW5lIFRSQUNFX0VWRU5U
KG5hbWUsIGlkLCBleHRyYSkgVFJBQ0VfRVZFTlQyKCJ3ZWJraXQiLCBuYW1lLCAiaWQiLCBpZCwg
ImV4dHJhIiwgZXh0cmEpCisKKy8vIEJ5IGRlZmF1bHQsIGNvbnN0IGNoYXIqIGFyZ3VtZW50IHZh
bHVlcyBhcmUgYXNzdW1lZCB0byBoYXZlIGxvbmctbGl2ZWQgc2NvcGUKKy8vIGFuZCB3aWxsIG5v
dCBiZSBjb3BpZWQuIFVzZSB0aGlzIG1hY3JvIHRvIGZvcmNlIGEgY29uc3QgY2hhciogdG8gYmUg
Y29waWVkLgorI2RlZmluZSBUUkFDRV9TVFJfQ09QWShzdHIpIFwKKyAgICBXZWJDb3JlOjppbnRl
cm5hbDo6VHJhY2VTdHJpbmdXaXRoQ29weShzdHIpCisKKy8vIFJlY29yZHMgYSBwYWlyIG9mIGJl
Z2luIGFuZCBlbmQgZXZlbnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50CisvLyBzY29w
ZSwgd2l0aCAwLCAxIG9yIDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBp
cyBub3QKKy8vIGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5
IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNz
IG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZp
bmUgVFJBQ0VfRVZFTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlQxKGNhdGVn
b3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZp
bmUgVFJBQ0VfRVZFTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcy
X25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChj
YXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUs
IGFyZzJfdmFsKQorCisvLyBTYW1lIGFzIFRSQUNFX0VWRU5UIGV4Y2VwdCB0aGF0IHRoZXkgYXJl
IG5vdCBpbmNsdWRlZCBpbiBvZmZpY2lhbCBidWlsZHMuCisjaWZkZWYgT0ZGSUNJQUxfQlVJTEQK
KyNkZWZpbmUgVU5TSElQUEVEX1RSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFtZSkgKHZvaWQpMAor
I2RlZmluZSBVTlNISVBQRURfVFJBQ0VfRVZFTlQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUs
IGFyZzFfdmFsKSAodm9pZCkwCisjZGVmaW5lIFVOU0hJUFBFRF9UUkFDRV9FVkVOVDIoY2F0ZWdv
cnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSAodm9pZCkwCisjZGVmaW5lIFVOU0hJUFBFRF9U
UkFDRV9FVkVOVF9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgKHZvaWQpMAorI2RlZmluZSBVTlNI
SVBQRURfVFJBQ0VfRVZFTlRfSU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJn
MV92YWwpIFwKKyAgICAodm9pZCkwCisjZGVmaW5lIFVOU0hJUFBFRF9UUkFDRV9FVkVOVF9JTlNU
QU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgKHZvaWQpMAor
I2Vsc2UKKyNkZWZpbmUgVU5TSElQUEVEX1RSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFtZSkgXAor
ICAgIFRSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVU5TSElQUEVEX1RSQUNF
X0VWRU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIFRSQUNF
X0VWRU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVU5T
SElQUEVEX1RSQUNFX0VWRU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwg
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwK
KyAgICBUUkFDRV9FVkVOVDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFy
ZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFVOU0hJUFBFRF9UUkFDRV9FVkVOVF9JTlNUQU5U
MChjYXRlZ29yeSwgbmFtZSkgXAorICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKGNhdGVnb3J5LCBu
YW1lKQorI2RlZmluZSBVTlNISVBQRURfVFJBQ0VfRVZFTlRfSU5TVEFOVDEoY2F0ZWdvcnksIG5h
bWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMShjYXRl
Z29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVU5TSElQUEVEX1RSQUNF
X0VWRU5UX0lOU1RBTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFs
KSBcCisgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwg
YXJnMV92YWwsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFs
KQorI2VuZGlmCisKKy8vIFJlY29yZHMgYSBzaW5nbGUgZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1l
ZGlhdGVseSwgd2l0aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUg
Y2F0ZWdvcnkgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8g
LSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGlt
ZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hh
cnMuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfSU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25h
bWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMihjYXRlZ29yeSwgbmFt
ZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQs
IFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9u
YW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBU
UkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
Q09QWV9JTlNUQU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisg
ICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwg
YXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfSU5TVEFOVDIoY2F0ZWdvcnksIG5h
bWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5U
LCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFf
bmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gVGlt
ZSB0aHJlc2hvbGQgZXZlbnQ6CisvLyBPbmx5IHJlY29yZCB0aGUgZXZlbnQgaWYgdGhlIGR1cmF0
aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3BlY2lmaWVkCisvLyB0aHJlc2hvbGRfdXMgKHRpbWUg
aW4gbWljcm9zZWNvbmRzKS4KKy8vIFJlY29yZHMgYSBwYWlyIG9mIGJlZ2luIGFuZCBlbmQgZXZl
bnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50CisvLyBzY29wZSwgd2l0aCAwLCAxIG9y
IDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QKKy8vIGVuYWJs
ZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmlu
Z3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVy
YWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
SUZfTE9OR0VSX1RIQU4wKHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFOKHRocmVzaG9sZF91cywg
Y2F0ZWdvcnksIG5hbWUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lGX0xPTkdFUl9USEFOMSggXAor
ICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFOKCBcCisg
ICAgICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwp
CisjZGVmaW5lIFRSQUNFX0VWRU5UX0lGX0xPTkdFUl9USEFOMiggXAorICAgIHRocmVzaG9sZF91
cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92
YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFO
KCBcCisgICAgICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJn
MV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlIG9mIGEg
Y291bnRlciBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LiBWYWx1ZQorLy8gbXVzdCBiZSByZXBy
ZXNlbnRhYmxlIGFzIGEgMzIgYml0IGludGVnZXIuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0
cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxp
dGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfQ09V
TlRFUjEoY2F0ZWdvcnksIG5hbWUsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
QUREKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxp
bnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSMShjYXRlZ29yeSwgbmFtZSwg
dmFsdWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0Vf
Q09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZ
LCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUpKQorCisvLyBSZWNv
cmRzIHRoZSB2YWx1ZXMgb2YgYSBtdWx0aS1wYXJ0ZWQgY291bnRlciBjYWxsZWQgIm5hbWUiIGlt
bWVkaWF0ZWx5LgorLy8gVGhlIFVJIHdpbGwgdHJlYXQgdmFsdWUxIGFuZCB2YWx1ZTIgYXMgcGFy
dHMgb2YgYSB3aG9sZSwgZGlzcGxheWluZyB0aGVpcgorLy8gdmFsdWVzIGFzIGEgc3RhY2tlZC1i
YXIgY2hhcnQuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxp
Y2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90
IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfQ09VTlRFUjIoY2F0ZWdvcnksIG5hbWUs
IHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCB2YWx1ZTJf
dmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0NP
VU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwg
XAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwgXAor
ICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKyNkZWZp
bmUgVFJBQ0VfQ09QWV9DT1VOVEVSMihjYXRlZ29yeSwgbmFtZSwgdmFsdWUxX25hbWUsIHZhbHVl
MV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRFUk5B
TF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIHZhbHVlMV9u
YW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9uYW1l
LCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorCisvLyBSZWNvcmRzIHRoZSB2YWx1ZSBv
ZiBhIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4gVmFsdWUKKy8vIG11c3QgYmUg
cmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCBpbnRlZ2VyLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFt
ZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8g
ICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisvLyAtIHxpZHwgaXMg
dXNlZCB0byBkaXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBuYW1lLiBJdCBtdXN0
IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2YWx1ZSB1cCB0byA2NCBi
aXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2lsbCBiZSB4b3JlZCB3aXRo
IGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1lIHBvaW50ZXIgb24KKy8v
ICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlkZS4KKyNkZWZpbmUgVFJB
Q0VfQ09VTlRFUl9JRDEoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZSkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgXAorICAg
ICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09Q
WV9DT1VOVEVSX0lEMShjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAg
ICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSB8IFRSQUNFX0VW
RU5UX0ZMQUdfSEFTX0lELCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFs
dWUpKQorCisvLyBSZWNvcmRzIHRoZSB2YWx1ZXMgb2YgYSBtdWx0aS1wYXJ0ZWQgY291bnRlciBj
YWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LgorLy8gVGhlIFVJIHdpbGwgdHJlYXQgdmFsdWUxIGFu
ZCB2YWx1ZTIgYXMgcGFydHMgb2YgYSB3aG9sZSwgZGlzcGxheWluZyB0aGVpcgorLy8gdmFsdWVz
IGFzIGEgc3RhY2tlZC1iYXIgY2hhcnQuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3Mg
bXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxz
KS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRvIGRp
c2FtYmlndWF0ZSBjb3VudGVycyB3aXRoIHRoZSBzYW1lIG5hbWUuIEl0IG11c3QgZWl0aGVyCisv
LyAgIGJlIGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElmIGl0
J3MgYSBwb2ludGVyLCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNoIG9m
IHRoZSBwcm9jZXNzIElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28gZGlm
ZmVyZW50IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9DT1VOVEVS
X0lEMihjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAg
ICAgIHZhbHVlMl9uYW1lLCB2YWx1ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
QUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBcCisgICAgICAgIHZhbHVlMV9u
YW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9uYW1l
LCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorI2RlZmluZSBUUkFDRV9DT1BZX0NPVU5U
RVJfSUQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgdmFsdWUxX25hbWUsIHZhbHVlMV92YWwsIFwKKyAg
ICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVn
b3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZIHwgVFJBQ0VfRVZFTlRfRkxBR19I
QVNfSUQsIFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3Zh
bCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkp
CisKKy8vIFJlY29yZHMgYSBzaW5nbGUgU1RBUlQgZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlh
dGVseSwgd2l0aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0
ZWdvcnkgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBj
YXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAo
c3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMu
CisvLyAtIHxpZHwgaXMgdXNlZCB0byBtYXRjaCB0aGUgU1RBUlQgZXZlbnQgd2l0aCB0aGUgRklO
SVNIIGV2ZW50LiBJdCBtdXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdl
ciB2YWx1ZSB1cCB0byA2NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAg
d2lsbCBiZSB4b3JlZCB3aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBz
YW1lIHBvaW50ZXIgb24KKy8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29s
bGlkZS4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfU1RBUlQwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAor
ICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NU
QVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNf
SUQpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NUQVJUMShjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFf
bmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChU
UkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRS
QUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9TVEFSVDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBc
CisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBcCisgICAgICAgIGFyZzFfbmFt
ZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NP
UFlfU1RBUlQwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NP
UFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfU1RBUlQxKGNhdGVnb3J5LCBuYW1lLCBpZCwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRI
X0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBp
ZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAg
ICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9TVEFS
VDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFy
ZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9J
RChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQs
IFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEIHwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAg
ICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29y
ZHMgYSBzaW5nbGUgRklOSVNIIGV2ZW50IGZvciAibmFtZSIgaW1tZWRpYXRlbHkuIElmIHRoZSBj
YXRlZ29yeQorLy8gaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisjZGVm
aW5lIFRSQUNFX0VWRU5UX0ZJTklTSDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisg
ICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQpCisjZGVm
aW5lIFRSQUNFX0VWRU5UX0ZJTklTSDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFy
ZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZF
TlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZF
TlRfRkxBR19IQVNfSUQsIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5U
X0ZJTklTSDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAg
ICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERf
V0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5h
bWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgXAorICAgICAgICBhcmcxX25hbWUsIGFy
ZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0ZJ
TklTSDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBu
YW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkp
CisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRklOSVNIMShjYXRlZ29yeSwgbmFtZSwgaWQsIGFy
ZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9J
RChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlk
LCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCB8IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAg
ICAgICBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0ZJTklT
SDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFy
ZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9J
RChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlk
LCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCB8IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAg
ICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisKKy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCisvLyBJbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0cmFjaW5nIEFQ
SSBkZWZpbml0aW9ucy4KKworLy8gY29uc3QgdW5zaWduZWQgY2hhcioKKy8vICAgICBUUkFDRV9F
VkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJMRUQoY29uc3QgY2hhciogY2F0ZWdvcnlfbmFtZSkK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVBJX0dFVF9DQVRFR09SWV9FTkFCTEVEIFwKKyAgICBXZWJD
b3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OmdldENhdGVnb3J5RW5hYmxlZAorCisvLyBSZXR1cm5zIHRo
ZSB0aHJlc2hvbGRCZWdpbklEIHVzZWQgYnkgVFJBQ0VfSUZfTE9OR0VSX1RIQU4gbWFjcm9zLgor
Ly8gaW50IFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisvLyAgICAgICAgICAgICAg
ICAgICAgY2hhciBwaGFzZSwKKy8vICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBjYXRlZ29yeV9lbmFibGVkLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IG5hbWUsCisvLyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorLy8g
ICAgICAgICAgICAgICAgICAgIGludCBudW1fYXJncywKKy8vICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiogYXJnX25hbWVzLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGFyZ190eXBlcywKKy8vICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBsb25nIGxvbmcqIGFyZ192YWx1ZXMsCisvLyAgICAgICAgICAgICAgICAgICAgaW50IHRocmVz
aG9sZEJlZ2luSUQsCisvLyAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCwK
Ky8vICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UIFwKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVN1cHBv
cnQ6OmFkZFRyYWNlRXZlbnQKKworLy8gTWFuZ2xlIHxwb2ludGVyfCB3aXRoIGEgaGFzaCBzbyB0
aGF0IGlmIHxwb2ludGVyfCBvY2N1cnMgb24gbW9yZQorLy8gdGhhbiBvbmUgcHJvY2VzcywgaXQg
d2lsbCBub3QgY29sbGlkZSBpbiB0aGUgdHJhY2UgZGF0YS4KKy8vIHVuc2lnbmVkIGxvbmcgbG9u
ZyBUUkFDRV9FVkVOVF9BUElfR0VUX0lEX0ZST01fUE9JTlRFUih2b2lkKiBwb2ludGVyKQorI2Rl
ZmluZSBUUkFDRV9FVkVOVF9BUElfR0VUX0lEX0ZST01fUE9JTlRFUiBcCisgICAgV2ViQ29yZTo6
UGxhdGZvcm1TdXBwb3J0OjptYW5nbGVQb2ludGVyRm9yVHJhY2luZworCisvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLwogCiAvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IHRyYWNlIGV2ZW50IG1hY3Jv
cyBjcmVhdGUgdGVtcG9yYXJ5IHZhcmlhYmxlcwogLy8gdG8ga2VlcCBpbnN0cnVtZW50YXRpb24g
b3ZlcmhlYWQgbG93LiBUaGVzZSBtYWNyb3MgZ2l2ZSBlYWNoIHRlbXBvcmFyeQogLy8gdmFyaWFi
bGUgYSB1bmlxdWUgbmFtZSBiYXNlZCBvbiB0aGUgbGluZSBudW1iZXIgdG8gcHJldmVudCBuYW1l
IGNvbGxpc3Npb25zLgotI2RlZmluZSBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElGSUVS
MyhhLCBiKSBhIyNiCi0jZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIy
KGEsIGIpIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIzKGEsIGIpCi0jZGVmaW5l
IFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIobmFtZV9wcmVmaXgpIFRSQUNFX0VW
RU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIyKG5hbWVfcHJlZml4LCBfX0xJTkVfXykKKyNkZWZp
bmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMyhhLCBiKSBcCisgICAgdHJhY2VfZXZlbnRfdW5p
cXVlXyMjYSMjYgorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQyKGEsIGIpIFwKKyAg
ICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQzKGEsIGIpCisjZGVmaW5lIElOVEVSTkFMVFJBQ0VF
VkVOVFVJRChuYW1lX3ByZWZpeCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJRDIobmFt
ZV9wcmVmaXgsIF9fTElORV9fKQorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVybmFs
IG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkuCisvLyAtIFdURl9BTk5PVEFURV9CRU5J
R05fUkFDRSwgc2VlIFRocmVhZCBTYWZldHkgYWJvdmUuCisjZGVmaW5lIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KSBcCisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpID0gMDsgXAorICAg
IFdURl9BTk5PVEFURV9CRU5JR05fUkFDRSgmSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRp
YyksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNlX2V2ZW50IGNhdGVnb3J5
Iik7IFwKKyAgICBpZiAoIUlOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSBcCisgICAg
ICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSA9IFwKKyAgICAgICAgICBUUkFDRV9F
VkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJMRUQoY2F0ZWdvcnkpOworCisvLyBJbXBsZW1lbnRh
dGlvbiBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5k
IGFkZAorLy8gZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuCisjaWYgQ09NUElMRVIo
TVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChpZ25vcmUp
ICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKHBoYXNl
LCBjYXRlZ29yeSwgbmFtZSwgZmxhZ3MsIC4uLikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIGlmICgqSU5URVJOQUxUUkFDRUVW
RU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAgICAgV2ViQ29yZTo6aW50ZXJuYWw6OkFkZFRyYWNl
RXZlbnQoIFwKKyAgICAgICAgICBwaGFzZSwgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRp
YyksIG5hbWUsIFwKKyAgICAgICAgICBXZWJDb3JlOjppbnRlcm5hbDo6a05vRXZlbnRJZCwgZmxh
Z3MsICMjX19WQV9BUkdTX18pOyBcCisgICAgfQorI2VuZGlmCisKKy8vIEltcGxlbWVudGF0aW9u
IGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeSBhbmQgYWRk
IGJlZ2luCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgZW5hYmxlZC4gQWxzbyBhZGRzIHRo
ZSBlbmQgZXZlbnQgd2hlbiB0aGUgc2NvcGUKKy8vIGVuZHMuCisjaWYgQ09NUElMRVIoTVNWQzdf
T1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoaWdub3Jl
KSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09Q
RUQoY2F0ZWdvcnksIG5hbWUsIC4uLikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9D
QVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIFdlYkNvcmU6OmludGVybmFsOjpUcmFjZUVu
ZE9uU2NvcGVDbG9zZSBcCisgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChwcm9maWxlU2Nv
cGUpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkgeyBcCisg
ICAgICBXZWJDb3JlOjppbnRlcm5hbDo6QWRkVHJhY2VFdmVudCggXAorICAgICAgICAgIFRSQUNF
X0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNh
dHN0YXRpYyksIFwKKyAgICAgICAgICBuYW1lLCBXZWJDb3JlOjppbnRlcm5hbDo6a05vRXZlbnRJ
ZCwgXAorICAgICAgICAgIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgIyNfX1ZBX0FSR1NfXyk7IFwK
KyAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChwcm9maWxlU2NvcGUpLkluaXRpYWxpemUoIFwK
KyAgICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgbmFtZSk7IFwKKyAg
ICB9CisjZW5kaWYKKworLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBtYWNybyB0
byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5IGFuZCBhZGQgYmVnaW4KKy8vIGV2ZW50IGlmIHRoZSBj
YXRlZ29yeSBpcyBlbmFibGVkLiBBbHNvIGFkZHMgdGhlIGVuZCBldmVudCB3aGVuIHRoZSBzY29w
ZQorLy8gZW5kcy4gSWYgdGhlIGVsYXBzZWQgdGltZSBpcyA8IHRocmVzaG9sZCB0aW1lLCB0aGUg
YmVnaW4vZW5kIHBhaXIgaXMgZXJhc2VkLgorI2lmIENPTVBJTEVSKE1TVkM3X09SX0xPV0VSKQor
I2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFOKGln
bm9yZSkgKCh2b2lkKTApCisjZWxzZQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERf
U0NPUEVEX0lGX0xPTkdFUl9USEFOKHRocmVzaG9sZCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0
ZWdvcnkpOyBcCisgICAgV2ViQ29yZTo6aW50ZXJuYWw6OlRyYWNlRW5kT25TY29wZUNsb3NlVGhy
ZXNob2xkIFwKKyAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSk7IFwK
KyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7IFwKKyAgICAgIGlu
dCBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoYmVnaW5fZXZlbnRfaWQpID0gXAorICAgICAgICBXZWJD
b3JlOjppbnRlcm5hbDo6QWRkVHJhY2VFdmVudCggXAorICAgICAgICAgICAgVFJBQ0VfRVZFTlRf
UEhBU0VfQkVHSU4sIFwKKyAgICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0
aWMpLCBcCisgICAgICAgICAgICBuYW1lLCBXZWJDb3JlOjppbnRlcm5hbDo6a05vRXZlbnRJZCwg
XAorICAgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCAjI19fVkFfQVJHU19fKTsgXAor
ICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSkuSW5pdGlhbGl6ZSggXAor
ICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBuYW1lLCBcCisgICAg
ICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGJlZ2luX2V2ZW50X2lkKSwgdGhyZXNob2xkKTsg
XAorICAgIH0KKyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1h
Y3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZAorLy8gZXZlbnQgaWYgdGhlIGNh
dGVnb3J5IGlzIGVuYWJsZWQuCisjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5l
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKGlnbm9yZSkgKCh2b2lkKTApCisjZWxz
ZQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChwaGFzZSwgY2F0ZWdv
cnksIG5hbWUsIGlkLCBmbGFncywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdPUllfSU5G
TyhjYXRlZ29yeSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMp
KSB7IFwKKyAgICAgIFdlYkNvcmU6OmludGVybmFsOjpBZGRUcmFjZUV2ZW50KCBcCisgICAgICAg
ICAgcGhhc2UsIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAg
bmFtZSwgV2ViQ29yZTo6aW50ZXJuYWw6OlRyYWNlSUQoaWQpLmRhdGEoKSwgZmxhZ3MsIFwKKyAg
ICAgICAgICAjI19fVkFfQVJHU19fKTsgXAorICAgIH0KKyNlbmRpZgorCisvLyBOb3RlcyByZWdh
cmRpbmcgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uczoKKy8vIE5ldyB2YWx1ZXMgY2FuIGJlIGFk
ZGVkIGFuZCBwcm9wYWdhdGVkIHRvIHRoaXJkIHBhcnR5IGxpYnJhcmllcywgYnV0IGV4aXN0aW5n
CisvLyBkZWZpbml0aW9ucyBtdXN0IG5ldmVyIGJlIGNoYW5nZWQsIGJlY2F1c2UgdGhpcmQgcGFy
dHkgbGlicmFyaWVzIG1heSB1c2Ugb2xkCisvLyBkZWZpbml0aW9ucy4KKworLy8gUGhhc2UgaW5k
aWNhdGVzIHRoZSBuYXR1cmUgb2YgYW4gZXZlbnQgZW50cnkuIEUuZy4gcGFydCBvZiBhIGJlZ2lu
L2VuZCBwYWlyLgorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiAgICAoJ0InKQorI2Rl
ZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9FTkQgICAgICAoJ0UnKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9QSEFTRV9JTlNUQU5UICAoJ0knKQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCAg
ICAoJ1MnKQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0ggICAoJ0YnKQorI2RlZmlu
ZSBUUkFDRV9FVkVOVF9QSEFTRV9NRVRBREFUQSAoJ00nKQorI2RlZmluZSBUUkFDRV9FVkVOVF9Q
SEFTRV9DT1VOVEVSICAoJ0MnKQorCisvLyBGbGFncyBmb3IgY2hhbmdpbmcgdGhlIGJlaGF2aW9y
IG9mIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQuCisjZGVmaW5lIFRSQUNFX0VWRU5U
X0ZMQUdfTk9ORSAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDApKQorI2RlZmlu
ZSBUUkFDRV9FVkVOVF9GTEFHX0NPUFkgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PigxIDw8IDApKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCAgICAgIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPigxIDw8IDEpKQorCisvLyBUeXBlIHZhbHVlcyBmb3IgaWRlbnRp
ZnlpbmcgdHlwZXMgaW4gdGhlIFRyYWNlVmFsdWUgdW5pb24uCisjZGVmaW5lIFRSQUNFX1ZBTFVF
X1RZUEVfQk9PTCAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxKSkKKyNkZWZp
bmUgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KDIpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX0lOVCAgICAgICAgICAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oMykpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfRE9VQkxFICAg
ICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig0KSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVf
VFlQRV9QT0lOVEVSICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDUpKQorI2RlZmlu
ZSBUUkFDRV9WQUxVRV9UWVBFX1NUUklORyAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4oNikpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfQ09QWV9TVFJJTkcgIChzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPig3KSkKIAotLy8gSXNzdWVzIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VF
dmVudEJlZ2luIGFuZCB0cmFjZUV2ZW50RW5kIGNhbGxzIGZvciB0aGUgZW5jbG9zaW5nIHNjb3Bl
Ci0jZGVmaW5lIFRSQUNFX0VWRU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29yZTo6aW50ZXJuYWw6
OlNjb3BlVHJhY2VyIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIoX190cmFjZUV2
ZW50U2NvcGUpKG5hbWUsIGlkLCBleHRyYSk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFt
ZXNwYWNlIGludGVybmFsIHsKIAotLy8gVXNlZCBieSBUUkFDRV9FVkVOVCBtYWNyby4gRG8gbm90
IHVzZSBkaXJlY3RseS4KLWNsYXNzIFNjb3BlVHJhY2VyIHsKKy8vIFNwZWNpZnkgdGhlc2UgdmFs
dWVzIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgb2YgQWRkVHJhY2VFdmVudCBpcyBu
b3QKKy8vIHVzZWQuCitjb25zdCBpbnQga1plcm9OdW1BcmdzID0gMDsKK2NvbnN0IGludCBrTm9U
aHJlc2hob2xkQmVnaW5JZCA9IC0xOworY29uc3QgbG9uZyBsb25nIGtOb1RocmVzaG9sZFZhbHVl
ID0gMDsKK2NvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBrTm9FdmVudElkID0gMDsKKworLy8gVHJh
Y2VJRCBlbmNhcHN1bGF0ZXMgYW4gSUQgdGhhdCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIgb3Ig
cG9pbnRlci4gUG9pbnRlcnMKKy8vIGFyZSBtYW5nbGVkIHdpdGggdGhlIFByb2Nlc3MgSUQgc28g
dGhhdCB0aGV5IGFyZSB1bmxpa2VseSB0byBjb2xsaWRlIHdoZW4gdGhlCisvLyBzYW1lIHBvaW50
ZXIgaXMgdXNlZCBvbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorY2xhc3MgVHJhY2VJRCB7CiBwdWJs
aWM6Ci0gICAgU2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIq
IGV4dHJhKTsKLSAgICB+U2NvcGVUcmFjZXIoKTsKKyAgICBleHBsaWNpdCBUcmFjZUlEKHZvaWQq
IHJocykgOgorICAgICAgICBtX2RhdGEoVFJBQ0VfRVZFTlRfQVBJX0dFVF9JRF9GUk9NX1BPSU5U
RVIocmhzKSkgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBsb25nIGxvbmcgcmhz
KSA6IG1fZGF0YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgbG9uZyBy
aHMpIDogbV9kYXRhKHJocykgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBpbnQg
cmhzKSA6IG1fZGF0YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgc2hv
cnQgcmhzKSA6IG1fZGF0YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQg
Y2hhciByaHMpIDogbV9kYXRhKHJocykgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChsb25nIGxv
bmcgcmhzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KHJocykpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQobG9uZyByaHMpIDogbV9kYXRhKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ocmhzKSkgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJ
RChpbnQgcmhzKSA6IG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHJocykp
IHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQoc2hvcnQgcmhzKSA6IG1fZGF0YShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KHJocykpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQoc2ln
bmVkIGNoYXIgcmhzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
IGxvbmc+KHJocykpIHsgfQorCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiBtX25hbWU7Ci0g
ICAgdm9pZCogbV9pZDsKLSAgICBPd25BcnJheVB0cjxjaGFyPiBtX2V4dHJhOworICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBtX2RhdGE7CiB9OwogCi1pbmxpbmUgU2NvcGVUcmFjZXI6OlNjb3BlVHJh
Y2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkKLSAgICA6
IG1fbmFtZShuYW1lKQotICAgICwgbV9pZChpZCkKLXsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRy
YWNlRXZlbnRCZWdpbihuYW1lLCBpZCwgZXh0cmEpOyBcCi0gICAgaWYgKGV4dHJhICYmIFBsYXRm
b3JtU3VwcG9ydDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgpKQotICAgICAgICBtX2V4dHJhID0gYWRv
cHRBcnJheVB0cihzdHJkdXAoZXh0cmEpKTsKKy8vIFNpbXBsZSB1bmlvbiB0byBzdG9yZSB2YXJp
b3VzIHR5cGVzIGFzIHVuc2lnbmVkIGxvbmcgbG9uZy4KK3VuaW9uIFRyYWNlVmFsdWVVbmlvbiB7
CisgICAgYm9vbCBtX2Jvb2w7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fdWludDsKKyAgICBs
b25nIGxvbmcgbV9pbnQ7CisgICAgZG91YmxlIG1fZG91YmxlOworICAgIGNvbnN0IHZvaWQqIG1f
cG9pbnRlcjsKKyAgICBjb25zdCBjaGFyKiBtX3N0cmluZzsKK307CisKKy8vIFNpbXBsZSBjb250
YWluZXIgZm9yIGNvbnN0IGNoYXIqIHRoYXQgc2hvdWxkIGJlIGNvcGllZCBpbnN0ZWFkIG9mIHJl
dGFpbmVkLgorY2xhc3MgVHJhY2VTdHJpbmdXaXRoQ29weSB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgVHJhY2VTdHJpbmdXaXRoQ29weShjb25zdCBjaGFyKiBzdHIpIDogbV9zdHIoc3RyKSB7IH0K
KyAgICBvcGVyYXRvciBjb25zdCBjaGFyKiAoKSBjb25zdCB7IHJldHVybiBtX3N0cjsgfQorcHJp
dmF0ZToKKyAgICBjb25zdCBjaGFyKiBtX3N0cjsKK307CisKKy8vIERlZmluZSBTZXRUcmFjZVZh
bHVlIGZvciBlYWNoIGFsbG93ZWQgdHlwZS4gSXQgc3RvcmVzIHRoZSB0eXBlIGFuZAorLy8gdmFs
dWUgaW4gdGhlIHJldHVybiBhcmd1bWVudHMuIFRoaXMgYWxsb3dzIHRoaXMgQVBJIHRvIGF2b2lk
IGRlY2xhcmluZyBhbnkKKy8vIHN0cnVjdHVyZXMgc28gdGhhdCBpdCBpcyBwb3J0YWJsZSB0byB0
aGlyZF9wYXJ0eSBsaWJyYXJpZXMuCisjZGVmaW5lIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNF
X1ZBTFVFKGFjdHVhbF90eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuaW9uX21lbWJlciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZV90eXBlX2lkKSBcCisgICAgc3RhdGljIGlubGluZSB2b2lkIFNldFRyYWNl
VmFsdWUoYWN0dWFsX3R5cGUgYXJnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciogdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyogdmFsdWUpIHsgXAorICAgICAgICBUcmFjZVZh
bHVlVW5pb24gdHlwZVZhbHVlOyBcCisgICAgICAgIHR5cGVWYWx1ZS51bmlvbl9tZW1iZXIgPSBh
cmc7IFwKKyAgICAgICAgKnR5cGUgPSB2YWx1ZV90eXBlX2lkOyBcCisgICAgICAgICp2YWx1ZSA9
IHR5cGVWYWx1ZS5tX3VpbnQ7IFwKKyAgICB9CisvLyBTaW1wbGVyIGZvcm0gZm9yIGludCB0eXBl
cyB0aGF0IGNhbiBiZSBzYWZlbHkgY2FzdGVkLgorI2RlZmluZSBJTlRFUk5BTF9ERUNMQVJFX1NF
VF9UUkFDRV9WQUxVRV9JTlQoYWN0dWFsX3R5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGVfaWQpIFwKKyAgICBzdGF0aWMgaW5saW5l
IHZvaWQgU2V0VHJhY2VWYWx1ZShhY3R1YWxfdHlwZSBhcmcsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0eXBlLCBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2YWx1ZSkgeyBcCisg
ICAgICAgICp0eXBlID0gdmFsdWVfdHlwZV9pZDsgXAorICAgICAgICAqdmFsdWUgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGFyZyk7IFwKKyAgICB9CisKK0lOVEVSTkFMX0RFQ0xB
UkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBsb25nIGxvbmcsIFRSQUNFX1ZBTFVFX1RZ
UEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBp
bnQsIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZB
TFVFX0lOVCh1bnNpZ25lZCBzaG9ydCwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxf
REVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGNoYXIsIFRSQUNFX1ZBTFVFX1RZ
UEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChsb25nIGxvbmcs
IFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVf
SU5UKGludCwgVFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFD
RV9WQUxVRV9JTlQoc2hvcnQsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFS
RV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHNpZ25lZCBjaGFyLCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkK
K0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGJvb2wsIG1fYm9vbCwgVFJBQ0VfVkFM
VUVfVFlQRV9CT09MKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoZG91YmxlLCBt
X2RvdWJsZSwgVFJBQ0VfVkFMVUVfVFlQRV9ET1VCTEUpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9U
UkFDRV9WQUxVRShjb25zdCB2b2lkKiwgbV9wb2ludGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFJBQ0VfVkFMVUVfVFlQRV9QT0lOVEVSKQorSU5URVJOQUxfREVDTEFSRV9T
RVRfVFJBQ0VfVkFMVUUoY29uc3QgY2hhciosIG1fc3RyaW5nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFJBQ0VfVkFMVUVfVFlQRV9TVFJJTkcpCitJTlRFUk5BTF9ERUNMQVJF
X1NFVF9UUkFDRV9WQUxVRShjb25zdCBUcmFjZVN0cmluZ1dpdGhDb3B5JiwgbV9zdHJpbmcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9UWVBFX0NPUFlfU1RS
SU5HKQorCisjdW5kZWYgSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUKKyN1bmRlZiBJ
TlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQKKworLy8gV1RGOjpTdHJpbmcgdmVy
c2lvbiBvZiBTZXRUcmFjZVZhbHVlIHNvIHRoYXQgdHJhY2UgYXJndW1lbnRzIGNhbiBiZSBzdHJp
bmdzLgorc3RhdGljIGlubGluZSB2b2lkIFNldFRyYWNlVmFsdWUoY29uc3QgV1RGOjpDU3RyaW5n
JiBhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25n
KiB2YWx1ZSkgeworICAgIFRyYWNlVmFsdWVVbmlvbiB0eXBlVmFsdWU7CisgICAgdHlwZVZhbHVl
Lm1fc3RyaW5nID0gYXJnLmRhdGEoKTsKKyAgICAqdHlwZSA9IFRSQUNFX1ZBTFVFX1RZUEVfQ09Q
WV9TVFJJTkc7CisgICAgKnZhbHVlID0gdHlwZVZhbHVlLm1fdWludDsKK30KKworLy8gVGhlc2Ug
QWRkVHJhY2VFdmVudCB0ZW1wbGF0ZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaGVyZSBpbnN0ZWFk
IG9mIGluIHRoZQorLy8gbWFjcm8sIGJlY2F1c2UgdGhlIGFyZ192YWx1ZXMgY291bGQgYmUgdGVt
cG9yYXJ5IG9iamVjdHMsIHN1Y2ggYXMKKy8vIHN0ZDo6c3RyaW5nLiBJbiBvcmRlciB0byBzdG9y
ZSBwb2ludGVycyB0byB0aGUgaW50ZXJuYWwgY19zdHIgYW5kIHBhc3MKKy8vIHRocm91Z2ggdG8g
dGhlIHRyYWNpbmcgQVBJLCB0aGUgYXJnX3ZhbHVlcyBtdXN0IGxpdmUgdGhyb3VnaG91dAorLy8g
dGhlc2UgcHJvY2VkdXJlcy4KKworc3RhdGljIGlubGluZSBpbnQgQWRkVHJhY2VFdmVudChjaGFy
IHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBmbGFncykgeworICAgIHJldHVybiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5U
KAorICAgICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwKKyAgICAgICAga1pl
cm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICBrTm9UaHJlc2hob2xkQmVnaW5JZCwga05vVGhy
ZXNob2xkVmFsdWUsIGZsYWdzKTsKIH0KIAotaW5saW5lIFNjb3BlVHJhY2VyOjp+U2NvcGVUcmFj
ZXIoKQotewotICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVuZChtX25hbWUsIG1faWQs
IG1fZXh0cmEuZ2V0KCkpOwordGVtcGxhdGU8Y2xhc3MgQVJHMV9UWVBFPgorc3RhdGljIGlubGlu
ZSBpbnQgQWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogYXJnMU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEFSRzFfVFlQRSYgYXJnMVZhbCkgeworICAgIGNvbnN0IGludCBudW1B
cmdzID0gMTsKKyAgICB1bnNpZ25lZCBjaGFyIGFyZ1R5cGVzWzFdOworICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBhcmdWYWx1ZXNbMV07CisgICAgU2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlw
ZXNbMF0sICZhcmdWYWx1ZXNbMF0pOworICAgIHJldHVybiBUUkFDRV9FVkVOVF9BUElfQUREX1RS
QUNFX0VWRU5UKAorICAgICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwKKyAg
ICAgICAgbnVtQXJncywgJmFyZzFOYW1lLCBhcmdUeXBlcywgYXJnVmFsdWVzLAorICAgICAgICBr
Tm9UaHJlc2hob2xkQmVnaW5JZCwga05vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKIH0KIAordGVt
cGxhdGU8Y2xhc3MgQVJHMV9UWVBFLCBjbGFzcyBBUkcyX1RZUEU+CitzdGF0aWMgaW5saW5lIGlu
dCBBZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBhcmcxTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQVJHMV9UWVBFJiBhcmcxVmFsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBhcmcyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQVJHMl9UWVBFJiBhcmcyVmFsKSB7CisgICAgY29uc3QgaW50IG51bUFyZ3Mg
PSAyOworICAgIGNvbnN0IGNoYXIqIGFyZ05hbWVzWzJdID0geyBhcmcxTmFtZSwgYXJnMk5hbWUg
fTsKKyAgICB1bnNpZ25lZCBjaGFyIGFyZ1R5cGVzWzJdOworICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBhcmdWYWx1ZXNbMl07CisgICAgU2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlwZXNbMF0s
ICZhcmdWYWx1ZXNbMF0pOworICAgIFNldFRyYWNlVmFsdWUoYXJnMlZhbCwgJmFyZ1R5cGVzWzFd
LCAmYXJnVmFsdWVzWzFdKTsKKyAgICByZXR1cm4gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9F
VkVOVCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgbmFtZSwgaWQsCisgICAgICAg
IG51bUFyZ3MsIGFyZ05hbWVzLCBhcmdUeXBlcywgYXJnVmFsdWVzLAorICAgICAgICBrTm9UaHJl
c2hob2xkQmVnaW5JZCwga05vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKK30KKworLy8gVXNlZCBi
eSBUUkFDRV9FVkVOVHggbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHkuCitjbGFzcyBUcmFjZUVu
ZE9uU2NvcGVDbG9zZSB7CitwdWJsaWM6CisgICAgLy8gTm90ZTogbWVtYmVycyBvZiBtX2RhdGEg
aW50ZW50aW9uYWxseSBsZWZ0IHVuaW5pdGlhbGl6ZWQuIFNlZSBJbml0aWFsaXplLgorICAgIFRy
YWNlRW5kT25TY29wZUNsb3NlKCkgOiBtX3BkYXRhKDApIHsgfQorICAgIH5UcmFjZUVuZE9uU2Nv
cGVDbG9zZSgpCisgICAgeworICAgICAgICBpZiAobV9wZGF0YSkKKyAgICAgICAgICAgIEFkZEV2
ZW50SWZFbmFibGVkKCk7CisgICAgfQorCisgICAgdm9pZCBJbml0aWFsaXplKGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogbmFtZSkKKyAgICB7CisgICAgICAgIG1fZGF0YS5jYXRlZ29yeUVuYWJsZWQgPSBjYXRlZ29y
eUVuYWJsZWQ7CisgICAgICAgIG1fZGF0YS5uYW1lID0gbmFtZTsKKyAgICAgICAgbV9wZGF0YSA9
ICZtX2RhdGE7CisgICAgfQorCitwcml2YXRlOgorICAgIC8vIEFkZCB0aGUgZW5kIGV2ZW50IGlm
IHRoZSBjYXRlZ29yeSBpcyBzdGlsbCBlbmFibGVkLgorICAgIHZvaWQgQWRkRXZlbnRJZkVuYWJs
ZWQoKQorICAgIHsKKyAgICAgICAgLy8gT25seSBjYWxsZWQgd2hlbiBtX3BkYXRhIGlzIG5vbi1u
dWxsLgorICAgICAgICBpZiAoKm1fcGRhdGEtPmNhdGVnb3J5RW5hYmxlZCkgeworICAgICAgICAg
ICAgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgICAgICAgICBUUkFD
RV9FVkVOVF9QSEFTRV9FTkQsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+Y2F0ZWdvcnlFbmFi
bGVkLAorICAgICAgICAgICAgICAgIG1fcGRhdGEtPm5hbWUsIGtOb0V2ZW50SWQsCisgICAgICAg
ICAgICAgICAga1plcm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgIGtOb1RocmVz
aGhvbGRCZWdpbklkLCBrTm9UaHJlc2hvbGRWYWx1ZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMgRGF0YSBzdHJ1Y3Qgd29ya2Fyb3VuZCBp
cyB0byBhdm9pZCBpbml0aWFsaXppbmcgYWxsIHRoZSBtZW1iZXJzCisgICAgLy8gaW4gRGF0YSBk
dXJpbmcgY29uc3RydWN0aW9uIG9mIHRoaXMgb2JqZWN0LCBzaW5jZSB0aGlzIG9iamVjdCBpcyBh
bHdheXMKKyAgICAvLyBjb25zdHJ1Y3RlZCwgZXZlbiB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQu
IElmIHRoZSBtZW1iZXJzIG9mIERhdGEgd2VyZQorICAgIC8vIG1lbWJlcnMgb2YgdGhpcyBjbGFz
cyBpbnN0ZWFkLCBjb21waWxlciB3YXJuaW5ncyBvY2N1ciBhYm91dCBwb3RlbnRpYWwKKyAgICAv
LyB1bmluaXRpYWxpemVkIGFjY2Vzc2VzLgorICAgIHN0cnVjdCBEYXRhIHsKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkOworICAgICAgICBjb25zdCBjaGFyKiBu
YW1lOworICAgIH07CisgICAgRGF0YSogbV9wZGF0YTsKKyAgICBEYXRhIG1fZGF0YTsKK307CisK
Ky8vIFVzZWQgYnkgVFJBQ0VfRVZFTlR4IG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5LgorY2xh
c3MgVHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQgeworcHVibGljOgorICAgIC8vIE5vdGU6
IG1lbWJlcnMgb2YgbV9kYXRhIGludGVudGlvbmFsbHkgbGVmdCB1bmluaXRpYWxpemVkLiBTZWUg
SW5pdGlhbGl6ZS4KKyAgICBUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCgpIDogbV9wZGF0
YSgwKSB7IH0KKyAgICB+VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQoKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fcGRhdGEpCisgICAgICAgICAgICBBZGRFdmVudElmRW5hYmxlZCgpOworICAg
IH0KKworICAgIC8vIENhbGxlZCBieSBtYWNyb3Mgb25seSB3aGVuIHRyYWNpbmcgaXMgZW5hYmxl
ZCBhdCB0aGUgcG9pbnQgd2hlbiB0aGUgYmVnaW4KKyAgICAvLyBldmVudCBpcyBhZGRlZC4KKyAg
ICB2b2lkIEluaXRpYWxpemUoY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKyAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRo
cmVzaG9sZCkKKyAgICB7CisgICAgICAgIG1fZGF0YS5jYXRlZ29yeUVuYWJsZWQgPSBjYXRlZ29y
eUVuYWJsZWQ7CisgICAgICAgIG1fZGF0YS5uYW1lID0gbmFtZTsKKyAgICAgICAgbV9kYXRhLnRo
cmVzaG9sZEJlZ2luSUQgPSB0aHJlc2hvbGRCZWdpbklEOworICAgICAgICBtX2RhdGEudGhyZXNo
b2xkID0gdGhyZXNob2xkOworICAgICAgICBtX3BkYXRhID0gJm1fZGF0YTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgLy8gQWRkIHRoZSBlbmQgZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIHN0aWxs
IGVuYWJsZWQuCisgICAgdm9pZCBBZGRFdmVudElmRW5hYmxlZCgpCisgICAgeworICAgICAgICAv
LyBPbmx5IGNhbGxlZCB3aGVuIG1fcGRhdGEgaXMgbm9uLW51bGwuCisgICAgICAgIGlmICgqbV9w
ZGF0YS0+Y2F0ZWdvcnlFbmFibGVkKSB7CisgICAgICAgICAgICBUUkFDRV9FVkVOVF9BUElfQURE
X1RSQUNFX0VWRU5UKAorICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0VORCwKKyAg
ICAgICAgICAgICAgICBtX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAg
bV9wZGF0YS0+bmFtZSwga05vRXZlbnRJZCwKKyAgICAgICAgICAgICAgICBrWmVyb051bUFyZ3Ms
IDAsIDAsIDAsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+dGhyZXNob2xkQmVnaW5JRCwgbV9w
ZGF0YS0+dGhyZXNob2xkLAorICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGlzIERhdGEgc3RydWN0IHdvcmthcm91bmQg
aXMgdG8gYXZvaWQgaW5pdGlhbGl6aW5nIGFsbCB0aGUgbWVtYmVycworICAgIC8vIGluIERhdGEg
ZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGlzIG9iamVjdCwgc2luY2UgdGhpcyBvYmplY3QgaXMg
YWx3YXlzCisgICAgLy8gY29uc3RydWN0ZWQsIGV2ZW4gd2hlbiB0cmFjaW5nIGlzIGRpc2FibGVk
LiBJZiB0aGUgbWVtYmVycyBvZiBEYXRhIHdlcmUKKyAgICAvLyBtZW1iZXJzIG9mIHRoaXMgY2xh
c3MgaW5zdGVhZCwgY29tcGlsZXIgd2FybmluZ3Mgb2NjdXIgYWJvdXQgcG90ZW50aWFsCisgICAg
Ly8gdW5pbml0aWFsaXplZCBhY2Nlc3Nlcy4KKyAgICBzdHJ1Y3QgRGF0YSB7CisgICAgICAgIGxv
bmcgbG9uZyB0aHJlc2hvbGQ7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5
RW5hYmxlZDsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICAgICAgaW50IHRocmVzaG9s
ZEJlZ2luSUQ7CisgICAgfTsKKyAgICBEYXRhKiBtX3BkYXRhOworICAgIERhdGEgbV9kYXRhOwor
fTsKKwogfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0
UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRleCA2YzBlNzRmMTI5NzJjN2YzNzQ2MzQwYWZm
NjliMzEyZGMyNWNhMWU5Li5mMWI0MzNkNmEwYjc0MGI4ODJiZGNhNGQyYTg4OTY0NjMzMmM2ZTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJL
aXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtMjQyLDYgKzI0MiwyMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGlzVHJhY2VFdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBu
YW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0
cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRy
YSkgeyB9CisgICAgdmlydHVhbCBjb25zdCB1bnNpZ25lZCBjaGFyKiBnZXRDYXRlZ29yeUVuYWJs
ZWQoY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBp
bnQgYWRkVHJhY2VFdmVudCgKKyAgICAgICAgY2hhciBwaGFzZSwKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAor
ICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAgIGludCBudW1BcmdzLAorICAg
ICAgICBjb25zdCBjaGFyKiogYXJnTmFtZXMsCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGFyZ1R5cGVzLAorICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcqIGFyZ1ZhbHVlcywK
KyAgICAgICAgaW50IHRocmVzaG9sZEJlZ2luSWQsCisgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hv
bGQsCisgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpIHsgcmV0dXJuIC0xOyB9CisgICAgdmly
dHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgbWFuZ2xlUG9pbnRlckZvclRyYWNpbmcodm9pZCogcG9p
bnRlcikgeyByZXR1cm4gMHU7IH0KIAogICAgIC8vIENhbGxiYWNrcyBmb3IgcmVwb3J0aW5nIGhp
c3RvZ3JhbSBkYXRhLgogICAgIC8vIEN1c3RvbUNvdW50cyBoaXN0b2dyYW0gaGFzIGV4cG9uZW50
aWFsIGJ1Y2tldCBzaXplcywgc28gdGhhdCBtaW49MSwgbWF4PTEwMDAwMDAsIGJ1Y2tldENvdW50
PTUwIHdvdWxkIGRvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxh
dGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3Vw
cG9ydC5jcHAKaW5kZXggMjQ2ODFlYzk2MmQ3NGViZmViNWFiMzM1NWMxOTAzYWZkOWU5ZWNkNi4u
M2E1N2UwOGRkMDdlMTkwMzdjOGE3N2U2NzA1MzkwNTFiZmNlNWVjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC05NjEsNiArOTYxLDI5
IEBAIHZvaWQgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUs
IHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyCiB7CiAgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0
KCktPnRyYWNlRXZlbnRFbmQobmFtZSwgaWQsIGV4dHJhKTsKIH0KK2NvbnN0IHVuc2lnbmVkIGNo
YXIqIFBsYXRmb3JtU3VwcG9ydDo6Z2V0Q2F0ZWdvcnlFbmFibGVkKGNvbnN0IGNoYXIqIGNhdGVn
b3J5TmFtZSkKK3sKKyAgICByZXR1cm4gd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmdldENhdGVn
b3J5RW5hYmxlZChjYXRlZ29yeU5hbWUpOworfQoraW50IFBsYXRmb3JtU3VwcG9ydDo6YWRkVHJh
Y2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG51bUFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnVHlwZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnVmFsdWVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncykK
K3sKKyAgICByZXR1cm4gd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmFkZFRyYWNlRXZlbnQoCisg
ICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQsIG5hbWUsIGlkLCBudW1BcmdzLCBhcmdOYW1l
cywgYXJnVHlwZXMsIGFyZ1ZhbHVlcywgIHRocmVzaG9sZEJlZ2luSWQsIHRocmVzaG9sZCwgZmxh
Z3MpOworfQordW5zaWduZWQgbG9uZyBsb25nIG1hbmdsZVBvaW50ZXJGb3JUcmFjaW5nKHZvaWQq
IHBvaW50ZXIpCit7CisgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5tYW5nbGVQ
b2ludGVyRm9yVHJhY2luZyhwb2ludGVyKTsKK30KIAogLy8gVmlzaXRlZCBMaW5rcyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123687</attachid>
            <date>2012-01-23 18:22:24 -0800</date>
            <delta_ts>2012-01-24 15:30:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120123182223.patch</filename>
            <type>text/plain</type>
            <size>50045</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQ3OGUzMDU3NjgxNTY2
YTQyZWYwYjQ4Nzk3ZTBiNGNmZTU1ZjgzNC4uMGFhNzNjNGJlNGNiZDk4MmY2NjZkYzhhNTA0Mzcz
YTMyZTIwZGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAxLTIzICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFj
ZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbDo6VHJhY2VJRDo6VHJhY2VJRCk6
CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbDo6VHJhY2VJRDo6ZGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjppbnRlcm5hbDo6VHJhY2VTdHJpbmdXaXRoQ29weTo6VHJhY2VTdHJpbmdXaXRoQ29w
eSk6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbDo6VHJhY2VTdHJpbmdXaXRoQ29weTo6b3Bl
cmF0b3IgY29uc3QgY2hhciogKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsOjpTZXRUcmFj
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmludGVybmFsOjpBZGRUcmFjZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmludGVybmFsOjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6VHJhY2VFbmRP
blNjb3BlQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJuYWw6OlRyYWNlRW5kT25TY29w
ZUNsb3NlOjp+VHJhY2VFbmRPblNjb3BlQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJu
YWw6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OmludGVybmFsOjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6QWRkRXZlbnRJZkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6aW50ZXJuYWw6OlRyYWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xkOjpU
cmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCk6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5h
bDo6VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6On5UcmFjZUVuZE9uU2NvcGVDbG9zZVRo
cmVzaG9sZCk6CisgICAgICAgIChXZWJDb3JlOjppbnRlcm5hbDo6VHJhY2VFbmRPblNjb3BlQ2xv
c2VUaHJlc2hvbGQ6OkluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJuYWw6OlRy
YWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xkOjpBZGRFdmVudElmRW5hYmxlZCk6CisKIDIwMTIt
MDEtMjMgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAg
ICAgU1ZHIGFuaW1hdGlvbiByZXBhaW50IGlzc3VlIHdpdGggaW1hZ2UgYW5kIGR5bmFtaWMgY2xp
cFBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWRjZGU4OTYwNmQ5NTlmYThiMDVm
ZTJlZjYxZWYxMGE2ZTYzYjhhNy4uMzJmN2JjZDc0ZjZkMTM3MDYyNmJjODNiOGYzODE4MWNiNjlh
OTQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0w
MS0yMyAgSm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtDaHJvbWl1
bV0gQWRkIGNocm9taXVtLXN0eWxlIHRyYWNpbmcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY4ODUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvZGUgZW5hYmxlcyBXZWJLaXQgdHJh
Y2UgZXZlbnRzIHRvIHBhc3MgdGhyb3VnaCBtb3JlIGRhdGEgdG8gdGhlCisgICAgICAgIGNocm9t
aXVtIHBsYXRmb3JtIHRyYWNpbmcgQVBJIGFuZCBnZW5lcmFsbHkgdG8gdXNlIHRoZSBmdWxsIHRy
YWNpbmcKKyAgICAgICAgQVBJIHByb3ZpZGVkIGJ5IGNocm9taXVtLgorCisgICAgICAgICogcHVi
bGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmdldENhdGVnb3J5RW5hYmxlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6bWFuZ2xlUG9pbnRlckZvclRyYWNpbmcpOgorICAg
ICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TdXBwb3J0OjpnZXRDYXRlZ29yeUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1hbmdsZVBvaW50
ZXJGb3JUcmFjaW5nKToKKwogMjAxMi0wMS0yMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdv
b2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUGFnZUFnZW50Lm9wZW4oKSBkb3Nl
bid0IGJlbG9uZyB0byB0aGUgcHJvdG9jb2wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCmluZGV4IGM4ZGVkNmUyNmJhNzg0YzZlMTYz
NzQxZDY2MjhlODU5MzljMzZhNmUuLmQ0ZTM3ZDBiMDAyNjVkMGFlN2JjNDE4NTUxYjJjODBkM2I5
MTYxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtU3VwcG9ydC5oCkBAIC00MTksNiArNDE5LDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBpc1RyYWNlRXZlbnRFbmFibGVkKCk7CiAgICAgc3RhdGljIHZvaWQgdHJhY2VFdmVudEJlZ2lu
KGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqLCBjb25zdCBjaGFyKiBleHRyYSk7CiAgICAgc3RhdGlj
IHZvaWQgdHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiwgY29uc3QgY2hhciog
ZXh0cmEpOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyKiBnZXRDYXRlZ29yeUVuYWJs
ZWQoY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKTsKKyAgICBzdGF0aWMgaW50IGFkZFRyYWNlRXZl
bnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciogY2F0ZWdvcnlfZW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtX2FyZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdfbmFtZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFyZ190eXBl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25n
KiBhcmdfdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xk
X2JlZ2luX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGhyZXNo
b2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKTsK
KyAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIG1hbmdsZVBvaW50ZXJGb3JUcmFjaW5nKHZv
aWQqIHBvaW50ZXIpOwogCiAgICAgLy8gVmlzaXRlZCBsaW5rcyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBzdGF0aWMgTGlua0hhc2gg
dmlzaXRlZExpbmtIYXNoKGNvbnN0IFVDaGFyKiB1cmwsIHVuc2lnbmVkIGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmgKaW5kZXggNjUyZjU0
MDdjYTNmNTc1MTRjZmFhM2Q2YThiZGQwNjgyNTdiOTY5OS4uN2U0ZjVlZWExYzliMWQwY2FiNGZh
YTg5NTJiOGU5MmFiMmIzYTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vVHJhY2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1RyYWNlRXZlbnQuaApAQCAtMjIsNTIgKzIyLDgzMSBAQAogICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCisKKy8vIFRyYWNlIGV2ZW50cyBhcmUgZm9yIHRyYWNraW5nIGFw
cGxpY2F0aW9uIHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSB1c2FnZS4KKy8vIE1hY3JvcyBhcmUg
cHJvdmlkZWQgdG8gdHJhY2s6CisvLyAgICBCZWdpbiBhbmQgZW5kIG9mIGZ1bmN0aW9uIGNhbGxz
CisvLyAgICBDb3VudGVycworLy8KKy8vIEV2ZW50cyBhcmUgaXNzdWVkIGFnYWluc3QgY2F0ZWdv
cmllcy4gV2hlcmVhcyBMT0cncworLy8gY2F0ZWdvcmllcyBhcmUgc3RhdGljYWxseSBkZWZpbmVk
LCBUUkFDRSBjYXRlZ29yaWVzIGFyZSBjcmVhdGVkCisvLyBpbXBsaWNpdGx5IHdpdGggYSBzdHJp
bmcuIEZvciBleGFtcGxlOgorLy8gICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiTVlfU1VCU1lTVEVN
IiwgIlNvbWVJbXBvcnRhbnRFdmVudCIpCisvLworLy8gRXZlbnRzIGNhbiBiZSBJTlNUQU5ULCBv
ciBjYW4gYmUgcGFpcnMgb2YgQkVHSU4gYW5kIEVORCBpbiB0aGUgc2FtZSBzY29wZToKKy8vICAg
VFJBQ0VfRVZFTlRfQkVHSU4wKCJNWV9TVUJTWVNURU0iLCAiU29tZXRoaW5nQ29zdGx5IikKKy8v
ICAgZG9Tb21ldGhpbmdDb3N0bHkoKQorLy8gICBUUkFDRV9FVkVOVF9FTkQwKCJNWV9TVUJTWVNU
RU0iLCAiU29tZXRoaW5nQ29zdGx5IikKKy8vIE5vdGU6IG91ciB0b29scyBjYW4ndCBhbHdheXMg
ZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IEJFR0lOL0VORCBwYWlycyB1bmxlc3MKKy8vIHRoZXNlIGFy
ZSB1c2VkIGluIHRoZSBzYW1lIHNjb3BlLiBVc2UgU1RBUlQvRklOSVNIIG1hY3JvcyBpZiB5b3Ug
bmVlZCB0aGVtCisvLyB0byBiZSBpbiBzZXBhcmF0ZSBzY29wZXMuCisvLworLy8gQSBjb21tb24g
dXNlIGNhc2UgaXMgdG8gdHJhY2UgZW50aXJlIGZ1bmN0aW9uIHNjb3Blcy4gVGhpcworLy8gaXNz
dWVzIGEgdHJhY2UgQkVHSU4gYW5kIEVORCBhdXRvbWF0aWNhbGx5OgorLy8gICB2b2lkIGRvU29t
ZXRoaW5nQ29zdGx5KCkgeworLy8gICAgIFRSQUNFX0VWRU5UMCgiTVlfU1VCU1lTVEVNIiwgImRv
U29tZXRoaW5nQ29zdGx5Iik7CisvLyAgICAgLi4uCisvLyAgIH0KKy8vCisvLyBBZGRpdGlvbmFs
IHBhcmFtZXRlcnMgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBldmVudDoKKy8vICAgdm9pZCBk
b1NvbWV0aGluZ0Nvc3RseTIoaW50IGhvd011Y2gpIHsKKy8vICAgICBUUkFDRV9FVkVOVDEoIk1Z
X1NVQlNZU1RFTSIsICJkb1NvbWV0aGluZ0Nvc3RseSIsCisvLyAgICAgICAgICJob3dNdWNoIiwg
aG93TXVjaCk7CisvLyAgICAgLi4uCisvLyAgIH0KKy8vCisvLyBUaGUgdHJhY2Ugc3lzdGVtIHdp
bGwgYXV0b21hdGljYWxseSBhZGQgdG8gdGhpcyBpbmZvcm1hdGlvbiB0aGUKKy8vIGN1cnJlbnQg
cHJvY2VzcyBpZCwgdGhyZWFkIGlkLCBhbmQgYSB0aW1lc3RhbXAgaW4gbWljcm9zZWNvbmRzLgor
Ly8KKy8vIFRvIHRyYWNlIGFuIGFzeW5jaHJvbm91cyBwcm9jZWR1cmUgc3VjaCBhcyBhbiBJUEMg
c2VuZC9yZWNlaXZlLCB1c2UgU1RBUlQgYW5kCisvLyBGSU5JU0g6CisvLyAgIFtzaW5nbGUgdGhy
ZWFkZWQgc2VuZGVyIGNvZGVdCisvLyAgICAgc3RhdGljIGludCBzZW5kX2NvdW50ID0gMDsKKy8v
ICAgICArK3NlbmRfY291bnQ7CisvLyAgICAgVFJBQ0VfRVZFTlRfU1RBUlQwKCJpcGMiLCAibWVz
c2FnZSIsIHNlbmRfY291bnQpOworLy8gICAgIFNlbmQobmV3IE15TWVzc2FnZShzZW5kX2NvdW50
KSk7CisvLyAgIFtyZWNlaXZlIGNvZGVdCisvLyAgICAgdm9pZCBPbk15TWVzc2FnZShzZW5kX2Nv
dW50KSB7CisvLyAgICAgICBUUkFDRV9FVkVOVF9GSU5JU0gwKCJpcGMiLCAibWVzc2FnZSIsIHNl
bmRfY291bnQpOworLy8gICAgIH0KKy8vIFRoZSB0aGlyZCBwYXJhbWV0ZXIgaXMgYSB1bmlxdWUg
SUQgdG8gbWF0Y2ggU1RBUlQvRklOSVNIIHBhaXJzLgorLy8gU1RBUlQgYW5kIEZJTklTSCBjYW4g
b2NjdXIgb24gYW55IHRocmVhZCBvZiBhbnkgdHJhY2VkIHByb2Nlc3MuIFBvaW50ZXJzIGNhbgor
Ly8gYmUgdXNlZCBmb3IgdGhlIElEIHBhcmFtZXRlciwgYW5kIHRoZXkgd2lsbCBiZSBtYW5nbGVk
IGludGVybmFsbHkgc28gdGhhdAorLy8gdGhlIHNhbWUgcG9pbnRlciBvbiB0d28gZGlmZmVyZW50
IHByb2Nlc3NlcyB3aWxsIG5vdCBtYXRjaC4gRm9yIGV4YW1wbGU6CisvLyAgIGNsYXNzIE15VHJh
Y2VkQ2xhc3MgeworLy8gICAgcHVibGljOgorLy8gICAgIE15VHJhY2VkQ2xhc3MoKSB7CisvLyAg
ICAgICBUUkFDRV9FVkVOVF9TVEFSVDAoImNhdGVnb3J5IiwgIk15VHJhY2VkQ2xhc3MiLCB0aGlz
KTsKKy8vICAgICB9CisvLyAgICAgfk15VHJhY2VkQ2xhc3MoKSB7CisvLyAgICAgICBUUkFDRV9F
VkVOVF9GSU5JU0gwKCJjYXRlZ29yeSIsICJNeVRyYWNlZENsYXNzIiwgdGhpcyk7CisvLyAgICAg
fQorLy8gICB9CisvLworLy8gVHJhY2UgZXZlbnQgYWxzbyBzdXBwb3J0cyBjb3VudGVycywgd2hp
Y2ggaXMgYSB3YXkgdG8gdHJhY2sgYSBxdWFudGl0eQorLy8gYXMgaXQgdmFyaWVzIG92ZXIgdGlt
ZS4gQ291bnRlcnMgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1hY3JvOgorLy8gICBU
UkFDRV9DT1VOVEVSMSgiTVlfU1VCU1lTVEVNIiwgIm15Q291bnRlciIsIGdfbXlDb3VudGVyVmFs
dWUpOworLy8KKy8vIENvdW50ZXJzIGFyZSBwcm9jZXNzLXNwZWNpZmljLiBUaGUgbWFjcm8gaXRz
ZWxmIGNhbiBiZSBpc3N1ZWQgZnJvbSBhbnkKKy8vIHRocmVhZCwgaG93ZXZlci4KKy8vCisvLyBT
b21ldGltZXMsIHlvdSB3YW50IHRvIHRyYWNrIHR3byBjb3VudGVycyBhdCBvbmNlLiBZb3UgY2Fu
IGRvIHRoaXMgd2l0aCB0d28KKy8vIGNvdW50ZXIgbWFjcm9zOgorLy8gICBUUkFDRV9DT1VOVEVS
MSgiTVlfU1VCU1lTVEVNIiwgIm15Q291bnRlcjAiLCBnX215Q291bnRlclZhbHVlWzBdKTsKKy8v
ICAgVFJBQ0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIxIiwgZ19teUNvdW50
ZXJWYWx1ZVsxXSk7CisvLyBPciB5b3UgY2FuIGRvIGl0IHdpdGggYSBjb21iaW5lZCBtYWNybzoK
Ky8vICAgVFJBQ0VfQ09VTlRFUjIoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIiLAorLy8gICAg
ICAgImJ5dGVzUGlubmVkIiwgZ19teUNvdW50ZXJWYWx1ZVswXSwKKy8vICAgICAgICJieXRlc0Fs
bG9jYXRlZCIsIGdfbXlDb3VudGVyVmFsdWVbMV0pOworLy8gVGhpcyBpbmRpY2F0ZXMgdG8gdGhl
IHRyYWNpbmcgVUkgdGhhdCB0aGVzZSBjb3VudGVycyBzaG91bGQgYmUgZGlzcGxheWVkCisvLyBp
biBhIHNpbmdsZSBncmFwaCwgYXMgYSBzdW1tZWQgYXJlYSBjaGFydC4KKy8vCisvLyBTaW5jZSBj
b3VudGVycyBhcmUgaW4gYSBnbG9iYWwgbmFtZXNwYWNlLCB5b3UgbWF5IHdhbnQgdG8gZGlzZW1i
aWd1YXRlIHdpdGggYQorLy8gdW5pcXVlIElELCBieSB1c2luZyB0aGUgVFJBQ0VfQ09VTlRFUl9J
RCogdmFyaWF0aW9ucy4KKy8vCisvLyBCeSBkZWZhdWx0LCB0cmFjZSBjb2xsZWN0aW9uIGlzIGNv
bXBpbGVkIGluLCBidXQgdHVybmVkIG9mZiBhdCBydW50aW1lLgorLy8gQ29sbGVjdGluZyB0cmFj
ZSBkYXRhIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgZW1iZWRkaW5nCisvLyBhcHBsaWNh
dGlvbi4gSW4gQ2hyb21lJ3MgY2FzZSwgbmF2aWdhdGluZyB0byBhYm91dDp0cmFjaW5nIHdpbGwg
dHVybiBvbgorLy8gdHJhY2luZyBhbmQgZGlzcGxheSBkYXRhIGNvbGxlY3RlZCBhY3Jvc3MgYWxs
IGFjdGl2ZSBwcm9jZXNzZXMuCisvLworLy8KKy8vIE1lbW9yeSBzY29waW5nIG5vdGU6CisvLyBU
cmFjaW5nIGNvcGllcyB0aGUgcG9pbnRlcnMsIG5vdCB0aGUgc3RyaW5nIGNvbnRlbnQsIG9mIHRo
ZSBzdHJpbmdzIHBhc3NlZAorLy8gaW4gZm9yIGNhdGVnb3J5LCBuYW1lLCBhbmQgYXJnX25hbWVz
LiBUaHVzLCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbAorLy8gY2F1c2UgcHJvYmxlbXM6CisvLyAg
ICAgY2hhciogc3RyID0gc3RyZHVwKCJpbXBwcnRhbnROYW1lIik7CisvLyAgICAgVFJBQ0VfRVZF
TlRfSU5TVEFOVDAoIlNVQlNZU1RFTSIsIHN0cik7ICAvLyBCQUQhCisvLyAgICAgZnJlZShzdHIp
OyAgICAgICAgICAgICAgICAgICAvLyBUcmFjZSBzeXN0ZW0gbm93IGhhcyBkYW5nbGluZyBwb2lu
dGVyCisvLworLy8gVG8gYXZvaWQgdGhpcyBpc3N1ZSB3aXRoIHRoZSB8bmFtZXwgYW5kIHxhcmdf
bmFtZXwgcGFyYW1ldGVycywgdXNlIHRoZQorLy8gVFJBQ0VfRVZFTlRfQ09QWV9YWFggb3Zlcmxv
YWRzIG9mIHRoZSBtYWNyb3MgYXQgYWRkaXRpb25hbCBydW50aW1lIG92ZXJoZWFkLgorLy8gTm90
ZXM6IFRoZSBjYXRlZ29yeSBtdXN0IGFsd2F5cyBiZSBpbiBhIGxvbmctbGl2ZWQgY2hhciogKGku
ZS4gc3RhdGljIGNvbnN0KS4KKy8vICAgICAgICBUaGUgfGFyZ192YWx1ZXN8LCB3aGVuIHVzZWQs
IGFyZSBhbHdheXMgZGVlcCBjb3BpZWQgd2l0aCB0aGUgX0NPUFkKKy8vICAgICAgICBtYWNyb3Mu
CisvLworLy8gV2hlbiBhcmUgc3RyaW5nIGFyZ3VtZW50IHZhbHVlcyBjb3BpZWQ6CisvLyBjb25z
dCBjaGFyKiBhcmdfdmFsdWVzIGFyZSBvbmx5IHJlZmVyZW5jZWQgYnkgZGVmYXVsdDoKKy8vICAg
ICBUUkFDRV9FVkVOVDEoImNhdGVnb3J5IiwgIm5hbWUiLAorLy8gICAgICAgICAgICAgICAgICAi
YXJnMSIsICJsaXRlcmFsIHN0cmluZyBpcyBvbmx5IHJlZmVyZW5jZWQiKTsKKy8vIFVzZSBUUkFD
RV9TVFJfQ09QWSB0byBmb3JjZSBjb3B5aW5nIG9mIGEgY29uc3QgY2hhcio6CisvLyAgICAgVFJB
Q0VfRVZFTlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAgImFyZzEi
LCBUUkFDRV9TVFJfQ09QWSgic3RyaW5nIHdpbGwgYmUgY29waWVkIikpOworLy8gc3RkOjpzdHJp
bmcgYXJnX3ZhbHVlcyBhcmUgYWx3YXlzIGNvcGllZDoKKy8vICAgICBUUkFDRV9FVkVOVDEoImNh
dGVnb3J5IiwgIm5hbWUiLAorLy8gICAgICAgICAgICAgICAgICAiYXJnMSIsIHN0ZDo6c3RyaW5n
KCJzdHJpbmcgd2lsbCBiZSBjb3BpZWQiKSk7CisvLworLy8KKy8vIFRocmVhZCBTYWZldHk6Cisv
LyBBIHRocmVhZCBzYWZlIHNpbmdsZXRvbiBhbmQgbXV0ZXggYXJlIHVzZWQgZm9yIHRocmVhZCBz
YWZldHkuIENhdGVnb3J5CisvLyBlbmFibGVkIGZsYWdzIGFyZSB1c2VkIHRvIGxpbWl0IHRoZSBw
ZXJmb3JtYW5jZSBpbXBhY3Qgd2hlbiB0aGUgc3lzdGVtCisvLyBpcyBub3QgZW5hYmxlZC4KKy8v
CisvLyBUUkFDRV9FVkVOVCBtYWNyb3MgZmlyc3QgY2FjaGUgYSBwb2ludGVyIHRvIGEgY2F0ZWdv
cnkuIFRoZSBjYXRlZ29yaWVzIGFyZQorLy8gc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIHNhZmUg
YXQgYWxsIHRpbWVzLCBldmVuIGFmdGVyIGV4aXQuIEZldGNoaW5nIGEKKy8vIGNhdGVnb3J5IGlz
IHByb3RlY3RlZCBieSB0aGUgVHJhY2VMb2c6OmxvY2tfLiBNdWx0aXBsZSB0aHJlYWRzIGluaXRp
YWxpemluZworLy8gdGhlIHN0YXRpYyB2YXJpYWJsZSBpcyBzYWZlLCBhcyB0aGV5IHdpbGwgYmUg
c2VyaWFsaXplZCBieSB0aGUgbG9jayBhbmQKKy8vIG11bHRpcGxlIGNhbGxzIHdpbGwgcmV0dXJu
IHRoZSBzYW1lIHBvaW50ZXIgdG8gdGhlIGNhdGVnb3J5LgorLy8KKy8vIFRoZW4gdGhlIGNhdGVn
b3J5X2VuYWJsZWQgZmxhZyBpcyBjaGVja2VkLiBUaGlzIGlzIGEgdW5zaWduZWQgY2hhciwgYW5k
CisvLyBub3QgaW50ZW5kZWQgdG8gYmUgbXVsdGl0aHJlYWQgc2FmZS4gSXQgb3B0aW1pemVzIGFj
Y2VzcyB0byBBZGRUcmFjZUV2ZW50CisvLyB3aGljaCBpcyB0aHJlYWRzYWZlIGludGVybmFsbHkg
dmlhIFRyYWNlTG9nOjpsb2NrXy4gVGhlIGVuYWJsZWQgZmxhZyBtYXkKKy8vIGNhdXNlIHNvbWUg
dGhyZWFkcyB0byBpbmNvcnJlY3RseSBjYWxsIG9yIHNraXAgY2FsbGluZyBBZGRUcmFjZUV2ZW50
IG5lYXIKKy8vIHRoZSB0aW1lIG9mIHRoZSBzeXN0ZW0gYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxl
ZC4gVGhpcyBpcyBhY2NlcHRhYmxlIGFzCisvLyB3ZSB0b2xlcmF0ZSBzb21lIGRhdGEgbG9zcyB3
aGlsZSB0aGUgc3lzdGVtIGlzIGJlaW5nIGVuYWJsZWQvZGlzYWJsZWQgYW5kCisvLyBiZWNhdXNl
IEFkZFRyYWNlRXZlbnQgaXMgdGhyZWFkc2FmZSBpbnRlcm5hbGx5IGFuZCBjaGVja3MgdGhlIGVu
YWJsZWQgc3RhdGUKKy8vIGFnYWluIHVuZGVyIGxvY2suCisvLworLy8gV2l0aG91dCB0aGUgdXNl
IG9mIHRoZXNlIHN0YXRpYyBjYXRlZ29yeSBwb2ludGVycyBhbmQgZW5hYmxlZCBmbGFncyBhbGwK
Ky8vIHRyYWNlIHBvaW50cyB3b3VsZCBjYXJyeSBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGNv
c3Qgb2YgYXF1aXJpbmcgYSBsb2NrCisvLyBhbmQgcmVzb2x2aW5nIHRoZSBjYXRlZ29yeS4KKwog
I2lmbmRlZiBUcmFjZUV2ZW50X2gKICNkZWZpbmUgVHJhY2VFdmVudF9oCiAKKyNpbmNsdWRlICJE
eW5hbWljQW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKLSNpbmNs
dWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KworLy8gSXNzdWVzIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luIGFuZCB0cmFjZUV2
ZW50RW5kIGNhbGxzIGZvciB0aGUgZW5jbG9zaW5nIHNjb3BlCisjZGVmaW5lIFRSQUNFX0VWRU5U
KG5hbWUsIGlkLCBleHRyYSkgVFJBQ0VfRVZFTlQyKCJ3ZWJraXQiLCBuYW1lLCAiaWQiLCBpZCwg
ImV4dHJhIiwgZXh0cmEpCisKKy8vIEJ5IGRlZmF1bHQsIGNvbnN0IGNoYXIqIGFyZ3VtZW50IHZh
bHVlcyBhcmUgYXNzdW1lZCB0byBoYXZlIGxvbmctbGl2ZWQgc2NvcGUKKy8vIGFuZCB3aWxsIG5v
dCBiZSBjb3BpZWQuIFVzZSB0aGlzIG1hY3JvIHRvIGZvcmNlIGEgY29uc3QgY2hhciogdG8gYmUg
Y29waWVkLgorI2RlZmluZSBUUkFDRV9TVFJfQ09QWShzdHIpIFwKKyAgICBXZWJDb3JlOjppbnRl
cm5hbDo6VHJhY2VTdHJpbmdXaXRoQ29weShzdHIpCisKKy8vIFJlY29yZHMgYSBwYWlyIG9mIGJl
Z2luIGFuZCBlbmQgZXZlbnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50CisvLyBzY29w
ZSwgd2l0aCAwLCAxIG9yIDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBp
cyBub3QKKy8vIGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5
IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNz
IG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZp
bmUgVFJBQ0VfRVZFTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlQxKGNhdGVn
b3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZp
bmUgVFJBQ0VfRVZFTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcy
X25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChj
YXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUs
IGFyZzJfdmFsKQorCisvLyBTYW1lIGFzIFRSQUNFX0VWRU5UIGV4Y2VwdCB0aGF0IHRoZXkgYXJl
IG5vdCBpbmNsdWRlZCBpbiBvZmZpY2lhbCBidWlsZHMuCisjaWZkZWYgT0ZGSUNJQUxfQlVJTEQK
KyNkZWZpbmUgVU5TSElQUEVEX1RSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFtZSkgKHZvaWQpMAor
I2RlZmluZSBVTlNISVBQRURfVFJBQ0VfRVZFTlQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUs
IGFyZzFfdmFsKSAodm9pZCkwCisjZGVmaW5lIFVOU0hJUFBFRF9UUkFDRV9FVkVOVDIoY2F0ZWdv
cnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSAodm9pZCkwCisjZGVmaW5lIFVOU0hJUFBFRF9U
UkFDRV9FVkVOVF9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgKHZvaWQpMAorI2RlZmluZSBVTlNI
SVBQRURfVFJBQ0VfRVZFTlRfSU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJn
MV92YWwpIFwKKyAgICAodm9pZCkwCisjZGVmaW5lIFVOU0hJUFBFRF9UUkFDRV9FVkVOVF9JTlNU
QU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgKHZvaWQpMAor
I2Vsc2UKKyNkZWZpbmUgVU5TSElQUEVEX1RSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFtZSkgXAor
ICAgIFRSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVU5TSElQUEVEX1RSQUNF
X0VWRU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIFRSQUNF
X0VWRU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVU5T
SElQUEVEX1RSQUNFX0VWRU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwg
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwK
KyAgICBUUkFDRV9FVkVOVDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFy
ZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFVOU0hJUFBFRF9UUkFDRV9FVkVOVF9JTlNUQU5U
MChjYXRlZ29yeSwgbmFtZSkgXAorICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKGNhdGVnb3J5LCBu
YW1lKQorI2RlZmluZSBVTlNISVBQRURfVFJBQ0VfRVZFTlRfSU5TVEFOVDEoY2F0ZWdvcnksIG5h
bWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMShjYXRl
Z29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVU5TSElQUEVEX1RSQUNF
X0VWRU5UX0lOU1RBTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFs
KSBcCisgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwg
YXJnMV92YWwsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFs
KQorI2VuZGlmCisKKy8vIFJlY29yZHMgYSBzaW5nbGUgZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1l
ZGlhdGVseSwgd2l0aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUg
Y2F0ZWdvcnkgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8g
LSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGlt
ZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hh
cnMuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfSU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25h
bWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMihjYXRlZ29yeSwgbmFt
ZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQs
IFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9u
YW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBU
UkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
Q09QWV9JTlNUQU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisg
ICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwg
YXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfSU5TVEFOVDIoY2F0ZWdvcnksIG5h
bWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5U
LCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFf
bmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gVGlt
ZSB0aHJlc2hvbGQgZXZlbnQ6CisvLyBPbmx5IHJlY29yZCB0aGUgZXZlbnQgaWYgdGhlIGR1cmF0
aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3BlY2lmaWVkCisvLyB0aHJlc2hvbGRfdXMgKHRpbWUg
aW4gbWljcm9zZWNvbmRzKS4KKy8vIFJlY29yZHMgYSBwYWlyIG9mIGJlZ2luIGFuZCBlbmQgZXZl
bnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50CisvLyBzY29wZSwgd2l0aCAwLCAxIG9y
IDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QKKy8vIGVuYWJs
ZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmlu
Z3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVy
YWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
SUZfTE9OR0VSX1RIQU4wKHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFOKHRocmVzaG9sZF91cywg
Y2F0ZWdvcnksIG5hbWUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lGX0xPTkdFUl9USEFOMSggXAor
ICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFOKCBcCisg
ICAgICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwp
CisjZGVmaW5lIFRSQUNFX0VWRU5UX0lGX0xPTkdFUl9USEFOMiggXAorICAgIHRocmVzaG9sZF91
cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92
YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFO
KCBcCisgICAgICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJn
MV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlIG9mIGEg
Y291bnRlciBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LiBWYWx1ZQorLy8gbXVzdCBiZSByZXBy
ZXNlbnRhYmxlIGFzIGEgMzIgYml0IGludGVnZXIuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0
cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxp
dGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfQ09V
TlRFUjEoY2F0ZWdvcnksIG5hbWUsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
QUREKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxp
bnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSMShjYXRlZ29yeSwgbmFtZSwg
dmFsdWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0Vf
Q09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZ
LCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUpKQorCisvLyBSZWNv
cmRzIHRoZSB2YWx1ZXMgb2YgYSBtdWx0aS1wYXJ0ZWQgY291bnRlciBjYWxsZWQgIm5hbWUiIGlt
bWVkaWF0ZWx5LgorLy8gVGhlIFVJIHdpbGwgdHJlYXQgdmFsdWUxIGFuZCB2YWx1ZTIgYXMgcGFy
dHMgb2YgYSB3aG9sZSwgZGlzcGxheWluZyB0aGVpcgorLy8gdmFsdWVzIGFzIGEgc3RhY2tlZC1i
YXIgY2hhcnQuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxp
Y2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90
IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfQ09VTlRFUjIoY2F0ZWdvcnksIG5hbWUs
IHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCB2YWx1ZTJf
dmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0NP
VU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwg
XAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwgXAor
ICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKyNkZWZp
bmUgVFJBQ0VfQ09QWV9DT1VOVEVSMihjYXRlZ29yeSwgbmFtZSwgdmFsdWUxX25hbWUsIHZhbHVl
MV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRFUk5B
TF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIHZhbHVlMV9u
YW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9uYW1l
LCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorCisvLyBSZWNvcmRzIHRoZSB2YWx1ZSBv
ZiBhIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4gVmFsdWUKKy8vIG11c3QgYmUg
cmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCBpbnRlZ2VyLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFt
ZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8g
ICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisvLyAtIHxpZHwgaXMg
dXNlZCB0byBkaXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBuYW1lLiBJdCBtdXN0
IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2YWx1ZSB1cCB0byA2NCBi
aXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2lsbCBiZSB4b3JlZCB3aXRo
IGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1lIHBvaW50ZXIgb24KKy8v
ICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlkZS4KKyNkZWZpbmUgVFJB
Q0VfQ09VTlRFUl9JRDEoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZSkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgXAorICAg
ICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09Q
WV9DT1VOVEVSX0lEMShjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAg
ICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSB8IFRSQUNFX0VW
RU5UX0ZMQUdfSEFTX0lELCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFs
dWUpKQorCisvLyBSZWNvcmRzIHRoZSB2YWx1ZXMgb2YgYSBtdWx0aS1wYXJ0ZWQgY291bnRlciBj
YWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LgorLy8gVGhlIFVJIHdpbGwgdHJlYXQgdmFsdWUxIGFu
ZCB2YWx1ZTIgYXMgcGFydHMgb2YgYSB3aG9sZSwgZGlzcGxheWluZyB0aGVpcgorLy8gdmFsdWVz
IGFzIGEgc3RhY2tlZC1iYXIgY2hhcnQuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3Mg
bXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxz
KS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRvIGRp
c2FtYmlndWF0ZSBjb3VudGVycyB3aXRoIHRoZSBzYW1lIG5hbWUuIEl0IG11c3QgZWl0aGVyCisv
LyAgIGJlIGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElmIGl0
J3MgYSBwb2ludGVyLCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNoIG9m
IHRoZSBwcm9jZXNzIElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28gZGlm
ZmVyZW50IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9DT1VOVEVS
X0lEMihjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAg
ICAgIHZhbHVlMl9uYW1lLCB2YWx1ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
QUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBcCisgICAgICAgIHZhbHVlMV9u
YW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9uYW1l
LCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorI2RlZmluZSBUUkFDRV9DT1BZX0NPVU5U
RVJfSUQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgdmFsdWUxX25hbWUsIHZhbHVlMV92YWwsIFwKKyAg
ICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVn
b3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZIHwgVFJBQ0VfRVZFTlRfRkxBR19I
QVNfSUQsIFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3Zh
bCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkp
CisKKy8vIFJlY29yZHMgYSBzaW5nbGUgU1RBUlQgZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlh
dGVseSwgd2l0aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0
ZWdvcnkgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBj
YXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAo
c3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMu
CisvLyAtIHxpZHwgaXMgdXNlZCB0byBtYXRjaCB0aGUgU1RBUlQgZXZlbnQgd2l0aCB0aGUgRklO
SVNIIGV2ZW50LiBJdCBtdXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdl
ciB2YWx1ZSB1cCB0byA2NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAg
d2lsbCBiZSB4b3JlZCB3aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBz
YW1lIHBvaW50ZXIgb24KKy8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29s
bGlkZS4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfU1RBUlQwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAor
ICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NU
QVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNf
SUQpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NUQVJUMShjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFf
bmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChU
UkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRS
QUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9TVEFSVDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBc
CisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBcCisgICAgICAgIGFyZzFfbmFt
ZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NP
UFlfU1RBUlQwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NP
UFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfU1RBUlQxKGNhdGVnb3J5LCBuYW1lLCBpZCwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRI
X0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBp
ZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAg
ICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9TVEFS
VDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFy
ZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9J
RChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQs
IFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEIHwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAg
ICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29y
ZHMgYSBzaW5nbGUgRklOSVNIIGV2ZW50IGZvciAibmFtZSIgaW1tZWRpYXRlbHkuIElmIHRoZSBj
YXRlZ29yeQorLy8gaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisjZGVm
aW5lIFRSQUNFX0VWRU5UX0ZJTklTSDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisg
ICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQpCisjZGVm
aW5lIFRSQUNFX0VWRU5UX0ZJTklTSDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFy
ZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZF
TlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZF
TlRfRkxBR19IQVNfSUQsIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5U
X0ZJTklTSDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAg
ICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERf
V0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5h
bWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgXAorICAgICAgICBhcmcxX25hbWUsIGFy
ZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0ZJ
TklTSDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBu
YW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkp
CisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRklOSVNIMShjYXRlZ29yeSwgbmFtZSwgaWQsIGFy
ZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9J
RChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlk
LCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCB8IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAg
ICAgICBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0ZJTklT
SDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFy
ZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9J
RChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlk
LCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCB8IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAg
ICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisKKy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCisvLyBJbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0cmFjaW5nIEFQ
SSBkZWZpbml0aW9ucy4KKworLy8gR2V0IGEgcG9pbnRlciB0byB0aGUgZW5hYmxlZCBzdGF0ZSBv
ZiB0aGUgZ2l2ZW4gdHJhY2UgY2F0ZWdvcnkuIE9ubHkKKy8vIGxvbmctbGl2ZWQgbGl0ZXJhbCBz
dHJpbmdzIHNob3VsZCBiZSBnaXZlbiBhcyB0aGUgY2F0ZWdvcnlOYW1lLiBJZiB0aGUKKy8vIHVu
c2lnbmVkIGNoYXIgaXMgbm9uLXplcm8sIHRyYWNpbmcgaXMgZW5hYmxlZC4gSWYgdHJhY2luZyBp
cyBlbmFibGVkLAorLy8gYWRkVHJhY2VFdmVudCBjYW4gYmUgY2FsbGVkLgorLy8gY29uc3QgdW5z
aWduZWQgY2hhcioKKy8vICAgICBUUkFDRV9FVkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJMRUQo
Y29uc3QgY2hhciogY2F0ZWdvcnlfbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVBJX0dFVF9D
QVRFR09SWV9FTkFCTEVEIFwKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OmdldENhdGVn
b3J5RW5hYmxlZAorCisvLyBBZGQgYSB0cmFjZSBldmVudCB0byB0aGUgcGxhdGZvcm0gdHJhY2lu
ZyBzeXN0ZW0uCisvLyBSZXR1cm5zIHRocmVzaG9sZEJlZ2luSWQgZm9yIHVzZSBpbiBhIGNvcnJl
c3BvbmRpbmcgZW5kIGFkZFRyYWNlRXZlbnQgY2FsbC4KKy8vIC0gcGhhc2Ugc3BlY2lmaWVzIHRo
ZSB0eXBlIG9mIGV2ZW50LCBzdWNoIGFzIGJlZ2luLCBlbmQsIGluc3RhbnQsIGV0Yy4KKy8vIC0g
Y2F0ZWdvcnlFbmFibGVkIGlzIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGdldENhdGVnb3J5RW5h
YmxlZC4KKy8vIC0gbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgZXZlbnQuCisvLyAtIGlkIG9wdGlv
bmFsbHkgYWxsb3dzIGV2ZW50cyBvZiB0aGUgc2FtZSBuYW1lIHRvIGJlIGRpc3Rpbmd1aXNoZWQu
CisvLyAtIG51bUFyZ3Mgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYXJnTmFt
ZXMsIGFyZ1R5cGVzLCBhbmQKKy8vICAgYXJnVmFsdWVzLgorLy8gLSBhcmdOYW1lcyBpcyB0aGUg
YXJyYXkgb2YgYXJndW1lbnQgbmFtZXMuCisvLyAtIGFyZ1R5cGVzIGlzIHRoZSBhcnJheSBvZiBh
cmd1bWVudCB0eXBlczogYm9vbCwgdW5zaWduZWQgbG9uZyBsb25nLAorLy8gICBsb25nIGxvbmcs
IGRvdWJsZSwgdm9pZCosIGNoYXIqIChsb25nLWxpdmVkIG51bGwtdGVybWluYXRlZCBjaGFyKiBz
dHJpbmcpLAorLy8gICBjaGFyKiAodGVtcG9yYXJ5IG51bGwtdGVybWluYXRlZCBjaGFyKiBzdHJp
bmcpLgorLy8gLSBhcmdWYWx1ZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50IHZhbHVlcy4KKy8v
IC0gdGhyZXNob2xkQmVnaW5JZCBvcHRpb25hbGx5IHNwZWNpZmllcyB0aGUgdmFsdWUgcmV0dXJu
ZWQgYnkgYSBwcmV2aW91cworLy8gICBjYWxsIHRvIGFkZFRyYWNlRXZlbnQuCisvLyAtIHRocmVz
aG9sZCBzcGVjaWZpZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyB0aGF0IG11
c3QgaGF2ZQorLy8gICBwYXNzZWQgc2luY2UgdGhlIGV2ZW50IGlkZW50aWZpZWQgYnkgdGhyZXNo
b2xkQmVnaW5JZCBmb3IgYm90aCBldmVudHMgdG8KKy8vICAgYmUgcmVjb3JkZWQuCisvLyAtIGZs
YWdzIGNhbiBiZSAwIG9yIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcsIE9SZWQgdG9nZXRo
ZXI6CisvLyAgIC0gdHJlYXQgYWxsIHN0cmluZ3MgYXMgdGVtcG9yYXJ5IHNvIHRoYXQgdGhleSB3
aWxsIGJlIGNvcGllZCBieQorLy8gICAgIGFkZFRyYWNlRXZlbnQsIHdpdGggdGhlIGV4Y2VwdGlv
biBvZiBjYXRlZ29yeSBuYW1lLgorLy8gICAtIHVzZSB0aGUgaWQgYXJndW1lbnQgdG8gdW5pcXVl
bHkgaWRlbnRpZnkgdGhlIGV2ZW50IGZvciBtYXRjaGluZworLy8gICAgIHdpdGggb3RoZXIgZXZl
bnRzIG9mIHRoZSBzYW1lIG5hbWUuCisvLyBpbnQgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9F
VkVOVCgKKy8vICAgICAgICAgICAgICAgICAgICBjaGFyIHBoYXNlLAorLy8gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5X2VuYWJsZWQsCisvLyAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKy8vICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgaWQsCisvLyAgICAgICAgICAgICAgICAgICAgaW50IG51bV9hcmdzLAor
Ly8gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdfbmFtZXMsCisvLyAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnX3R5cGVzLAorLy8gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnX3ZhbHVlcywKKy8vICAgICAg
ICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKy8vICAgICAgICAgICAgICAgICAg
ICBsb25nIGxvbmcgdGhyZXNob2xkLAorLy8gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgZmxhZ3MpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQgXAorICAg
IFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVudAorCisvLyBNYW5nbGUgcG9p
bnRlciB3aXRoIGEgaGFzaCBzbyB0aGF0IGlmIGl0IG9jY3VycyBvbiBtb3JlIHRoYW4gb25lIHBy
b2Nlc3MsCisvLyBpdCB3aWxsIG5vdCBjb2xsaWRlIGluIHRoZSB0cmFjZSBkYXRhLiBQYXNzIHRo
ZSByZXR1cm5lZCB2YWx1ZSB0bworLy8gYWRkVHJhY2VFdmVudCBhcyB0aGUgaWQgcGFyYW1ldGVy
LgorI2RlZmluZSBUUkFDRV9FVkVOVF9BUElfR0VUX0lEX0ZST01fUE9JTlRFUiBcCisgICAgV2Vi
Q29yZTo6UGxhdGZvcm1TdXBwb3J0OjptYW5nbGVQb2ludGVyRm9yVHJhY2luZworCisvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogCiAvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IHRyYWNlIGV2ZW50
IG1hY3JvcyBjcmVhdGUgdGVtcG9yYXJ5IHZhcmlhYmxlcwogLy8gdG8ga2VlcCBpbnN0cnVtZW50
YXRpb24gb3ZlcmhlYWQgbG93LiBUaGVzZSBtYWNyb3MgZ2l2ZSBlYWNoIHRlbXBvcmFyeQogLy8g
dmFyaWFibGUgYSB1bmlxdWUgbmFtZSBiYXNlZCBvbiB0aGUgbGluZSBudW1iZXIgdG8gcHJldmVu
dCBuYW1lIGNvbGxpc3Npb25zLgotI2RlZmluZSBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVO
VElGSUVSMyhhLCBiKSBhIyNiCi0jZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5U
SUZJRVIyKGEsIGIpIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIzKGEsIGIpCi0j
ZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIobmFtZV9wcmVmaXgpIFRS
QUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIyKG5hbWVfcHJlZml4LCBfX0xJTkVfXykK
KyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMyhhLCBiKSBcCisgICAgdHJhY2VfZXZl
bnRfdW5pcXVlXyMjYSMjYgorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQyKGEsIGIp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQzKGEsIGIpCisjZGVmaW5lIElOVEVSTkFM
VFJBQ0VFVkVOVFVJRChuYW1lX3ByZWZpeCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJ
RDIobmFtZV9wcmVmaXgsIF9fTElORV9fKQorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGlu
dGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkuCisvLyAtIFdURl9BTk5PVEFU
RV9CRU5JR05fUkFDRSwgc2VlIFRocmVhZCBTYWZldHkgYWJvdmUuCisjZGVmaW5lIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KSBcCisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpID0gMDsg
XAorICAgIFdURl9BTk5PVEFURV9CRU5JR05fUkFDRSgmSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNh
dHN0YXRpYyksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNlX2V2ZW50IGNh
dGVnb3J5Iik7IFwKKyAgICBpZiAoIUlOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSBc
CisgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSA9IFwKKyAgICAgICAgICBU
UkFDRV9FVkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJMRUQoY2F0ZWdvcnkpOworCisvLyBJbXBs
ZW1lbnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdv
cnkgYW5kIGFkZAorLy8gZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuCisjaWYgQ09N
UElMRVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChp
Z25vcmUpICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
KHBoYXNlLCBjYXRlZ29yeSwgbmFtZSwgZmxhZ3MsIC4uLikgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIGlmICgqSU5URVJOQUxU
UkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAgICAgV2ViQ29yZTo6aW50ZXJuYWw6OkFk
ZFRyYWNlRXZlbnQoIFwKKyAgICAgICAgICBwaGFzZSwgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNh
dHN0YXRpYyksIG5hbWUsIFwKKyAgICAgICAgICBXZWJDb3JlOjppbnRlcm5hbDo6a05vRXZlbnRJ
ZCwgZmxhZ3MsICMjX19WQV9BUkdTX18pOyBcCisgICAgfQorI2VuZGlmCisKKy8vIEltcGxlbWVu
dGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeSBh
bmQgYWRkIGJlZ2luCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgZW5hYmxlZC4gQWxzbyBh
ZGRzIHRoZSBlbmQgZXZlbnQgd2hlbiB0aGUgc2NvcGUKKy8vIGVuZHMuCisjaWYgQ09NUElMRVIo
TVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQo
aWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUsIC4uLikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIFdlYkNvcmU6OmludGVybmFsOjpU
cmFjZUVuZE9uU2NvcGVDbG9zZSBcCisgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChwcm9m
aWxlU2NvcGUpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkg
eyBcCisgICAgICBXZWJDb3JlOjppbnRlcm5hbDo6QWRkVHJhY2VFdmVudCggXAorICAgICAgICAg
IFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5U
VUlEKGNhdHN0YXRpYyksIFwKKyAgICAgICAgICBuYW1lLCBXZWJDb3JlOjppbnRlcm5hbDo6a05v
RXZlbnRJZCwgXAorICAgICAgICAgIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgIyNfX1ZBX0FSR1Nf
Xyk7IFwKKyAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChwcm9maWxlU2NvcGUpLkluaXRpYWxp
emUoIFwKKyAgICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgbmFtZSk7
IFwKKyAgICB9CisjZW5kaWYKKworLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBt
YWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5IGFuZCBhZGQgYmVnaW4KKy8vIGV2ZW50IGlm
IHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLiBBbHNvIGFkZHMgdGhlIGVuZCBldmVudCB3aGVuIHRo
ZSBzY29wZQorLy8gZW5kcy4gSWYgdGhlIGVsYXBzZWQgdGltZSBpcyA8IHRocmVzaG9sZCB0aW1l
LCB0aGUgYmVnaW4vZW5kIHBhaXIgaXMgZXJhc2VkLgorI2lmIENPTVBJTEVSKE1TVkM3X09SX0xP
V0VSKQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9U
SEFOKGlnbm9yZSkgKCh2b2lkKTApCisjZWxzZQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFOKHRocmVzaG9sZCwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lO
Rk8oY2F0ZWdvcnkpOyBcCisgICAgV2ViQ29yZTo6aW50ZXJuYWw6OlRyYWNlRW5kT25TY29wZUNs
b3NlVGhyZXNob2xkIFwKKyAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29w
ZSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7IFwKKyAg
ICAgIGludCBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoYmVnaW5fZXZlbnRfaWQpID0gXAorICAgICAg
ICBXZWJDb3JlOjppbnRlcm5hbDo6QWRkVHJhY2VFdmVudCggXAorICAgICAgICAgICAgVFJBQ0Vf
RVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChj
YXRzdGF0aWMpLCBcCisgICAgICAgICAgICBuYW1lLCBXZWJDb3JlOjppbnRlcm5hbDo6a05vRXZl
bnRJZCwgXAorICAgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCAjI19fVkFfQVJHU19f
KTsgXAorICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSkuSW5pdGlhbGl6
ZSggXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBuYW1lLCBc
CisgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGJlZ2luX2V2ZW50X2lkKSwgdGhyZXNo
b2xkKTsgXAorICAgIH0KKyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVy
bmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZAorLy8gZXZlbnQgaWYg
dGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuCisjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpCisj
ZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKGlnbm9yZSkgKCh2b2lkKTAp
CisjZWxzZQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChwaGFzZSwg
Y2F0ZWdvcnksIG5hbWUsIGlkLCBmbGFncywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdP
UllfSU5GTyhjYXRlZ29yeSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRz
dGF0aWMpKSB7IFwKKyAgICAgIFdlYkNvcmU6OmludGVybmFsOjpBZGRUcmFjZUV2ZW50KCBcCisg
ICAgICAgICAgcGhhc2UsIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAg
ICAgICAgbmFtZSwgV2ViQ29yZTo6aW50ZXJuYWw6OlRyYWNlSUQoaWQpLmRhdGEoKSwgZmxhZ3Ms
IFwKKyAgICAgICAgICAjI19fVkFfQVJHU19fKTsgXAorICAgIH0KKyNlbmRpZgorCisvLyBOb3Rl
cyByZWdhcmRpbmcgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uczoKKy8vIE5ldyB2YWx1ZXMgY2Fu
IGJlIGFkZGVkIGFuZCBwcm9wYWdhdGVkIHRvIHRoaXJkIHBhcnR5IGxpYnJhcmllcywgYnV0IGV4
aXN0aW5nCisvLyBkZWZpbml0aW9ucyBtdXN0IG5ldmVyIGJlIGNoYW5nZWQsIGJlY2F1c2UgdGhp
cmQgcGFydHkgbGlicmFyaWVzIG1heSB1c2Ugb2xkCisvLyBkZWZpbml0aW9ucy4KKworLy8gUGhh
c2UgaW5kaWNhdGVzIHRoZSBuYXR1cmUgb2YgYW4gZXZlbnQgZW50cnkuIEUuZy4gcGFydCBvZiBh
IGJlZ2luL2VuZCBwYWlyLgorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiAgICAoJ0In
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9FTkQgICAgICAoJ0UnKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9QSEFTRV9JTlNUQU5UICAoJ0knKQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9T
VEFSVCAgICAoJ1MnKQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0ggICAoJ0YnKQor
I2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9NRVRBREFUQSAoJ00nKQorI2RlZmluZSBUUkFDRV9F
VkVOVF9QSEFTRV9DT1VOVEVSICAoJ0MnKQorCisvLyBGbGFncyBmb3IgY2hhbmdpbmcgdGhlIGJl
aGF2aW9yIG9mIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQuCisjZGVmaW5lIFRSQUNF
X0VWRU5UX0ZMQUdfTk9ORSAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDApKQor
I2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX0NPUFkgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPigxIDw8IDApKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCAgICAgIChz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxIDw8IDEpKQorCisvLyBUeXBlIHZhbHVlcyBmb3Ig
aWRlbnRpZnlpbmcgdHlwZXMgaW4gdGhlIFRyYWNlVmFsdWUgdW5pb24uCisjZGVmaW5lIFRSQUNF
X1ZBTFVFX1RZUEVfQk9PTCAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxKSkK
KyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KDIpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX0lOVCAgICAgICAgICAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMykpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfRE9V
QkxFICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig0KSkKKyNkZWZpbmUgVFJBQ0Vf
VkFMVUVfVFlQRV9QT0lOVEVSICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDUpKQor
I2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX1NUUklORyAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oNikpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfQ09QWV9TVFJJTkcgIChzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig3KSkKIAotLy8gSXNzdWVzIFBsYXRmb3JtU3VwcG9ydDo6
dHJhY2VFdmVudEJlZ2luIGFuZCB0cmFjZUV2ZW50RW5kIGNhbGxzIGZvciB0aGUgZW5jbG9zaW5n
IHNjb3BlCi0jZGVmaW5lIFRSQUNFX0VWRU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29yZTo6aW50
ZXJuYWw6OlNjb3BlVHJhY2VyIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIoX190
cmFjZUV2ZW50U2NvcGUpKG5hbWUsIGlkLCBleHRyYSk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogbmFtZXNwYWNlIGludGVybmFsIHsKIAotLy8gVXNlZCBieSBUUkFDRV9FVkVOVCBtYWNyby4g
RG8gbm90IHVzZSBkaXJlY3RseS4KLWNsYXNzIFNjb3BlVHJhY2VyIHsKKy8vIFNwZWNpZnkgdGhl
c2UgdmFsdWVzIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgb2YgQWRkVHJhY2VFdmVu
dCBpcyBub3QKKy8vIHVzZWQuCitjb25zdCBpbnQga1plcm9OdW1BcmdzID0gMDsKK2NvbnN0IGlu
dCBrTm9UaHJlc2hob2xkQmVnaW5JZCA9IC0xOworY29uc3QgbG9uZyBsb25nIGtOb1RocmVzaG9s
ZFZhbHVlID0gMDsKK2NvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBrTm9FdmVudElkID0gMDsKKwor
Ly8gVHJhY2VJRCBlbmNhcHN1bGF0ZXMgYW4gSUQgdGhhdCBjYW4gZWl0aGVyIGJlIGFuIGludGVn
ZXIgb3IgcG9pbnRlci4gUG9pbnRlcnMKKy8vIGFyZSBtYW5nbGVkIHdpdGggdGhlIFByb2Nlc3Mg
SUQgc28gdGhhdCB0aGV5IGFyZSB1bmxpa2VseSB0byBjb2xsaWRlIHdoZW4gdGhlCisvLyBzYW1l
IHBvaW50ZXIgaXMgdXNlZCBvbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorY2xhc3MgVHJhY2VJRCB7
CiBwdWJsaWM6Ci0gICAgU2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0
IGNoYXIqIGV4dHJhKTsKLSAgICB+U2NvcGVUcmFjZXIoKTsKKyAgICBleHBsaWNpdCBUcmFjZUlE
KHZvaWQqIHJocykgOgorICAgICAgICBtX2RhdGEoVFJBQ0VfRVZFTlRfQVBJX0dFVF9JRF9GUk9N
X1BPSU5URVIocmhzKSkgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBsb25nIGxv
bmcgcmhzKSA6IG1fZGF0YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQg
bG9uZyByaHMpIDogbV9kYXRhKHJocykgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25l
ZCBpbnQgcmhzKSA6IG1fZGF0YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWdu
ZWQgc2hvcnQgcmhzKSA6IG1fZGF0YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5z
aWduZWQgY2hhciByaHMpIDogbV9kYXRhKHJocykgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChs
b25nIGxvbmcgcmhzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
IGxvbmc+KHJocykpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQobG9uZyByaHMpIDogbV9kYXRh
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ocmhzKSkgeyB9CisgICAgZXhwbGljaXQg
VHJhY2VJRChpbnQgcmhzKSA6IG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KHJocykpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQoc2hvcnQgcmhzKSA6IG1fZGF0YShzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHJocykpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNl
SUQoc2lnbmVkIGNoYXIgcmhzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KHJocykpIHsgfQorCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiBtX25h
bWU7Ci0gICAgdm9pZCogbV9pZDsKLSAgICBPd25BcnJheVB0cjxjaGFyPiBtX2V4dHJhOworICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBtX2RhdGE7CiB9OwogCi1pbmxpbmUgU2NvcGVUcmFjZXI6OlNj
b3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkK
LSAgICA6IG1fbmFtZShuYW1lKQotICAgICwgbV9pZChpZCkKLXsKLSAgICBQbGF0Zm9ybVN1cHBv
cnQ6OnRyYWNlRXZlbnRCZWdpbihuYW1lLCBpZCwgZXh0cmEpOyBcCi0gICAgaWYgKGV4dHJhICYm
IFBsYXRmb3JtU3VwcG9ydDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgpKQotICAgICAgICBtX2V4dHJh
ID0gYWRvcHRBcnJheVB0cihzdHJkdXAoZXh0cmEpKTsKKy8vIFNpbXBsZSB1bmlvbiB0byBzdG9y
ZSB2YXJpb3VzIHR5cGVzIGFzIHVuc2lnbmVkIGxvbmcgbG9uZy4KK3VuaW9uIFRyYWNlVmFsdWVV
bmlvbiB7CisgICAgYm9vbCBtX2Jvb2w7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fdWludDsK
KyAgICBsb25nIGxvbmcgbV9pbnQ7CisgICAgZG91YmxlIG1fZG91YmxlOworICAgIGNvbnN0IHZv
aWQqIG1fcG9pbnRlcjsKKyAgICBjb25zdCBjaGFyKiBtX3N0cmluZzsKK307CisKKy8vIFNpbXBs
ZSBjb250YWluZXIgZm9yIGNvbnN0IGNoYXIqIHRoYXQgc2hvdWxkIGJlIGNvcGllZCBpbnN0ZWFk
IG9mIHJldGFpbmVkLgorY2xhc3MgVHJhY2VTdHJpbmdXaXRoQ29weSB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgVHJhY2VTdHJpbmdXaXRoQ29weShjb25zdCBjaGFyKiBzdHIpIDogbV9zdHIoc3Ry
KSB7IH0KKyAgICBvcGVyYXRvciBjb25zdCBjaGFyKiAoKSBjb25zdCB7IHJldHVybiBtX3N0cjsg
fQorcHJpdmF0ZToKKyAgICBjb25zdCBjaGFyKiBtX3N0cjsKK307CisKKy8vIERlZmluZSBTZXRU
cmFjZVZhbHVlIGZvciBlYWNoIGFsbG93ZWQgdHlwZS4gSXQgc3RvcmVzIHRoZSB0eXBlIGFuZAor
Ly8gdmFsdWUgaW4gdGhlIHJldHVybiBhcmd1bWVudHMuIFRoaXMgYWxsb3dzIHRoaXMgQVBJIHRv
IGF2b2lkIGRlY2xhcmluZyBhbnkKKy8vIHN0cnVjdHVyZXMgc28gdGhhdCBpdCBpcyBwb3J0YWJs
ZSB0byB0aGlyZF9wYXJ0eSBsaWJyYXJpZXMuCisjZGVmaW5lIElOVEVSTkFMX0RFQ0xBUkVfU0VU
X1RSQUNFX1ZBTFVFKGFjdHVhbF90eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaW9uX21lbWJlciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZV90eXBlX2lkKSBcCisgICAgc3RhdGljIGlubGluZSB2b2lkIFNl
dFRyYWNlVmFsdWUoYWN0dWFsX3R5cGUgYXJnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciogdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyogdmFsdWUpIHsgXAorICAgICAgICBU
cmFjZVZhbHVlVW5pb24gdHlwZVZhbHVlOyBcCisgICAgICAgIHR5cGVWYWx1ZS51bmlvbl9tZW1i
ZXIgPSBhcmc7IFwKKyAgICAgICAgKnR5cGUgPSB2YWx1ZV90eXBlX2lkOyBcCisgICAgICAgICp2
YWx1ZSA9IHR5cGVWYWx1ZS5tX3VpbnQ7IFwKKyAgICB9CisvLyBTaW1wbGVyIGZvcm0gZm9yIGlu
dCB0eXBlcyB0aGF0IGNhbiBiZSBzYWZlbHkgY2FzdGVkLgorI2RlZmluZSBJTlRFUk5BTF9ERUNM
QVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQoYWN0dWFsX3R5cGUsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGVfaWQpIFwKKyAgICBzdGF0aWMg
aW5saW5lIHZvaWQgU2V0VHJhY2VWYWx1ZShhY3R1YWxfdHlwZSBhcmcsIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0eXBlLCBcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2YWx1ZSkg
eyBcCisgICAgICAgICp0eXBlID0gdmFsdWVfdHlwZV9pZDsgXAorICAgICAgICAqdmFsdWUgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGFyZyk7IFwKKyAgICB9CisKK0lOVEVSTkFM
X0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBsb25nIGxvbmcsIFRSQUNFX1ZB
TFVFX1RZUEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNp
Z25lZCBpbnQsIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RS
QUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBzaG9ydCwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5U
RVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGNoYXIsIFRSQUNFX1ZB
TFVFX1RZUEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChsb25n
IGxvbmcsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0Vf
VkFMVUVfSU5UKGludCwgVFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NF
VF9UUkFDRV9WQUxVRV9JTlQoc2hvcnQsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxf
REVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHNpZ25lZCBjaGFyLCBUUkFDRV9WQUxVRV9UWVBF
X0lOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGJvb2wsIG1fYm9vbCwgVFJB
Q0VfVkFMVUVfVFlQRV9CT09MKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoZG91
YmxlLCBtX2RvdWJsZSwgVFJBQ0VfVkFMVUVfVFlQRV9ET1VCTEUpCitJTlRFUk5BTF9ERUNMQVJF
X1NFVF9UUkFDRV9WQUxVRShjb25zdCB2b2lkKiwgbV9wb2ludGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFJBQ0VfVkFMVUVfVFlQRV9QT0lOVEVSKQorSU5URVJOQUxfREVD
TEFSRV9TRVRfVFJBQ0VfVkFMVUUoY29uc3QgY2hhciosIG1fc3RyaW5nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFJBQ0VfVkFMVUVfVFlQRV9TVFJJTkcpCitJTlRFUk5BTF9E
RUNMQVJFX1NFVF9UUkFDRV9WQUxVRShjb25zdCBUcmFjZVN0cmluZ1dpdGhDb3B5JiwgbV9zdHJp
bmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9UWVBFX0NP
UFlfU1RSSU5HKQorCisjdW5kZWYgSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUKKyN1
bmRlZiBJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQKKworLy8gV1RGOjpTdHJp
bmcgdmVyc2lvbiBvZiBTZXRUcmFjZVZhbHVlIHNvIHRoYXQgdHJhY2UgYXJndW1lbnRzIGNhbiBi
ZSBzdHJpbmdzLgorc3RhdGljIGlubGluZSB2b2lkIFNldFRyYWNlVmFsdWUoY29uc3QgV1RGOjpD
U3RyaW5nJiBhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyKiB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBsb25nKiB2YWx1ZSkgeworICAgIFRyYWNlVmFsdWVVbmlvbiB0eXBlVmFsdWU7CisgICAgdHlw
ZVZhbHVlLm1fc3RyaW5nID0gYXJnLmRhdGEoKTsKKyAgICAqdHlwZSA9IFRSQUNFX1ZBTFVFX1RZ
UEVfQ09QWV9TVFJJTkc7CisgICAgKnZhbHVlID0gdHlwZVZhbHVlLm1fdWludDsKK30KKworLy8g
VGhlc2UgQWRkVHJhY2VFdmVudCB0ZW1wbGF0ZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaGVyZSBp
bnN0ZWFkIG9mIGluIHRoZQorLy8gbWFjcm8sIGJlY2F1c2UgdGhlIGFyZ192YWx1ZXMgY291bGQg
YmUgdGVtcG9yYXJ5IG9iamVjdHMsIHN1Y2ggYXMKKy8vIHN0ZDo6c3RyaW5nLiBJbiBvcmRlciB0
byBzdG9yZSBwb2ludGVycyB0byB0aGUgaW50ZXJuYWwgY19zdHIgYW5kIHBhc3MKKy8vIHRocm91
Z2ggdG8gdGhlIHRyYWNpbmcgQVBJLCB0aGUgYXJnX3ZhbHVlcyBtdXN0IGxpdmUgdGhyb3VnaG91
dAorLy8gdGhlc2UgcHJvY2VkdXJlcy4KKworc3RhdGljIGlubGluZSBpbnQgQWRkVHJhY2VFdmVu
dChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBmbGFncykgeworICAgIHJldHVybiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNF
X0VWRU5UKAorICAgICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwKKyAgICAg
ICAga1plcm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICBrTm9UaHJlc2hob2xkQmVnaW5JZCwg
a05vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKIH0KIAotaW5saW5lIFNjb3BlVHJhY2VyOjp+U2Nv
cGVUcmFjZXIoKQotewotICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVuZChtX25hbWUs
IG1faWQsIG1fZXh0cmEuZ2V0KCkpOwordGVtcGxhdGU8Y2xhc3MgQVJHMV9UWVBFPgorc3RhdGlj
IGlubGluZSBpbnQgQWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYXJnMU5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEFSRzFfVFlQRSYgYXJnMVZhbCkgeworICAgIGNvbnN0IGlu
dCBudW1BcmdzID0gMTsKKyAgICB1bnNpZ25lZCBjaGFyIGFyZ1R5cGVzWzFdOworICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBhcmdWYWx1ZXNbMV07CisgICAgU2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAm
YXJnVHlwZXNbMF0sICZhcmdWYWx1ZXNbMF0pOworICAgIHJldHVybiBUUkFDRV9FVkVOVF9BUElf
QUREX1RSQUNFX0VWRU5UKAorICAgICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBp
ZCwKKyAgICAgICAgbnVtQXJncywgJmFyZzFOYW1lLCBhcmdUeXBlcywgYXJnVmFsdWVzLAorICAg
ICAgICBrTm9UaHJlc2hob2xkQmVnaW5JZCwga05vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKIH0K
IAordGVtcGxhdGU8Y2xhc3MgQVJHMV9UWVBFLCBjbGFzcyBBUkcyX1RZUEU+CitzdGF0aWMgaW5s
aW5lIGludCBBZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhcmcxTmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQVJHMV9UWVBFJiBhcmcxVmFsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhcmcyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQVJHMl9UWVBFJiBhcmcyVmFsKSB7CisgICAgY29uc3QgaW50IG51
bUFyZ3MgPSAyOworICAgIGNvbnN0IGNoYXIqIGFyZ05hbWVzWzJdID0geyBhcmcxTmFtZSwgYXJn
Mk5hbWUgfTsKKyAgICB1bnNpZ25lZCBjaGFyIGFyZ1R5cGVzWzJdOworICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBhcmdWYWx1ZXNbMl07CisgICAgU2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlw
ZXNbMF0sICZhcmdWYWx1ZXNbMF0pOworICAgIFNldFRyYWNlVmFsdWUoYXJnMlZhbCwgJmFyZ1R5
cGVzWzFdLCAmYXJnVmFsdWVzWzFdKTsKKyAgICByZXR1cm4gVFJBQ0VfRVZFTlRfQVBJX0FERF9U
UkFDRV9FVkVOVCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgbmFtZSwgaWQsCisg
ICAgICAgIG51bUFyZ3MsIGFyZ05hbWVzLCBhcmdUeXBlcywgYXJnVmFsdWVzLAorICAgICAgICBr
Tm9UaHJlc2hob2xkQmVnaW5JZCwga05vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKK30KKworLy8g
VXNlZCBieSBUUkFDRV9FVkVOVHggbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHkuCitjbGFzcyBU
cmFjZUVuZE9uU2NvcGVDbG9zZSB7CitwdWJsaWM6CisgICAgLy8gTm90ZTogbWVtYmVycyBvZiBt
X2RhdGEgaW50ZW50aW9uYWxseSBsZWZ0IHVuaW5pdGlhbGl6ZWQuIFNlZSBJbml0aWFsaXplLgor
ICAgIFRyYWNlRW5kT25TY29wZUNsb3NlKCkgOiBtX3BkYXRhKDApIHsgfQorICAgIH5UcmFjZUVu
ZE9uU2NvcGVDbG9zZSgpCisgICAgeworICAgICAgICBpZiAobV9wZGF0YSkKKyAgICAgICAgICAg
IEFkZEV2ZW50SWZFbmFibGVkKCk7CisgICAgfQorCisgICAgdm9pZCBJbml0aWFsaXplKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogbmFtZSkKKyAgICB7CisgICAgICAgIG1fZGF0YS5jYXRlZ29yeUVuYWJsZWQgPSBj
YXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIG1fZGF0YS5uYW1lID0gbmFtZTsKKyAgICAgICAgbV9w
ZGF0YSA9ICZtX2RhdGE7CisgICAgfQorCitwcml2YXRlOgorICAgIC8vIEFkZCB0aGUgZW5kIGV2
ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBzdGlsbCBlbmFibGVkLgorICAgIHZvaWQgQWRkRXZlbnRJ
ZkVuYWJsZWQoKQorICAgIHsKKyAgICAgICAgLy8gT25seSBjYWxsZWQgd2hlbiBtX3BkYXRhIGlz
IG5vbi1udWxsLgorICAgICAgICBpZiAoKm1fcGRhdGEtPmNhdGVnb3J5RW5hYmxlZCkgeworICAg
ICAgICAgICAgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgICAgICAg
ICBUUkFDRV9FVkVOVF9QSEFTRV9FTkQsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+Y2F0ZWdv
cnlFbmFibGVkLAorICAgICAgICAgICAgICAgIG1fcGRhdGEtPm5hbWUsIGtOb0V2ZW50SWQsCisg
ICAgICAgICAgICAgICAga1plcm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgIGtO
b1RocmVzaGhvbGRCZWdpbklkLCBrTm9UaHJlc2hvbGRWYWx1ZSwgVFJBQ0VfRVZFTlRfRkxBR19O
T05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMgRGF0YSBzdHJ1Y3Qgd29ya2Fy
b3VuZCBpcyB0byBhdm9pZCBpbml0aWFsaXppbmcgYWxsIHRoZSBtZW1iZXJzCisgICAgLy8gaW4g
RGF0YSBkdXJpbmcgY29uc3RydWN0aW9uIG9mIHRoaXMgb2JqZWN0LCBzaW5jZSB0aGlzIG9iamVj
dCBpcyBhbHdheXMKKyAgICAvLyBjb25zdHJ1Y3RlZCwgZXZlbiB3aGVuIHRyYWNpbmcgaXMgZGlz
YWJsZWQuIElmIHRoZSBtZW1iZXJzIG9mIERhdGEgd2VyZQorICAgIC8vIG1lbWJlcnMgb2YgdGhp
cyBjbGFzcyBpbnN0ZWFkLCBjb21waWxlciB3YXJuaW5ncyBvY2N1ciBhYm91dCBwb3RlbnRpYWwK
KyAgICAvLyB1bmluaXRpYWxpemVkIGFjY2Vzc2VzLgorICAgIHN0cnVjdCBEYXRhIHsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkOworICAgICAgICBjb25zdCBj
aGFyKiBuYW1lOworICAgIH07CisgICAgRGF0YSogbV9wZGF0YTsKKyAgICBEYXRhIG1fZGF0YTsK
K307CisKKy8vIFVzZWQgYnkgVFJBQ0VfRVZFTlR4IG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5
LgorY2xhc3MgVHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQgeworcHVibGljOgorICAgIC8v
IE5vdGU6IG1lbWJlcnMgb2YgbV9kYXRhIGludGVudGlvbmFsbHkgbGVmdCB1bmluaXRpYWxpemVk
LiBTZWUgSW5pdGlhbGl6ZS4KKyAgICBUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCgpIDog
bV9wZGF0YSgwKSB7IH0KKyAgICB+VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fcGRhdGEpCisgICAgICAgICAgICBBZGRFdmVudElmRW5hYmxlZCgp
OworICAgIH0KKworICAgIC8vIENhbGxlZCBieSBtYWNyb3Mgb25seSB3aGVuIHRyYWNpbmcgaXMg
ZW5hYmxlZCBhdCB0aGUgcG9pbnQgd2hlbiB0aGUgYmVnaW4KKyAgICAvLyBldmVudCBpcyBhZGRl
ZC4KKyAgICB2b2lkIEluaXRpYWxpemUoY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFi
bGVkLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKyAgICAgICAgICAgICAgICAgICAgbG9uZyBs
b25nIHRocmVzaG9sZCkKKyAgICB7CisgICAgICAgIG1fZGF0YS5jYXRlZ29yeUVuYWJsZWQgPSBj
YXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIG1fZGF0YS5uYW1lID0gbmFtZTsKKyAgICAgICAgbV9k
YXRhLnRocmVzaG9sZEJlZ2luSUQgPSB0aHJlc2hvbGRCZWdpbklEOworICAgICAgICBtX2RhdGEu
dGhyZXNob2xkID0gdGhyZXNob2xkOworICAgICAgICBtX3BkYXRhID0gJm1fZGF0YTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgLy8gQWRkIHRoZSBlbmQgZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlz
IHN0aWxsIGVuYWJsZWQuCisgICAgdm9pZCBBZGRFdmVudElmRW5hYmxlZCgpCisgICAgeworICAg
ICAgICAvLyBPbmx5IGNhbGxlZCB3aGVuIG1fcGRhdGEgaXMgbm9uLW51bGwuCisgICAgICAgIGlm
ICgqbV9wZGF0YS0+Y2F0ZWdvcnlFbmFibGVkKSB7CisgICAgICAgICAgICBUUkFDRV9FVkVOVF9B
UElfQUREX1RSQUNFX0VWRU5UKAorICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0VO
RCwKKyAgICAgICAgICAgICAgICBtX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAg
ICAgICAgbV9wZGF0YS0+bmFtZSwga05vRXZlbnRJZCwKKyAgICAgICAgICAgICAgICBrWmVyb051
bUFyZ3MsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+dGhyZXNob2xkQmVnaW5J
RCwgbV9wZGF0YS0+dGhyZXNob2xkLAorICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UX0ZMQUdf
Tk9ORSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGlzIERhdGEgc3RydWN0IHdvcmth
cm91bmQgaXMgdG8gYXZvaWQgaW5pdGlhbGl6aW5nIGFsbCB0aGUgbWVtYmVycworICAgIC8vIGlu
IERhdGEgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGlzIG9iamVjdCwgc2luY2UgdGhpcyBvYmpl
Y3QgaXMgYWx3YXlzCisgICAgLy8gY29uc3RydWN0ZWQsIGV2ZW4gd2hlbiB0cmFjaW5nIGlzIGRp
c2FibGVkLiBJZiB0aGUgbWVtYmVycyBvZiBEYXRhIHdlcmUKKyAgICAvLyBtZW1iZXJzIG9mIHRo
aXMgY2xhc3MgaW5zdGVhZCwgY29tcGlsZXIgd2FybmluZ3Mgb2NjdXIgYWJvdXQgcG90ZW50aWFs
CisgICAgLy8gdW5pbml0aWFsaXplZCBhY2Nlc3Nlcy4KKyAgICBzdHJ1Y3QgRGF0YSB7CisgICAg
ICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQ7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNh
dGVnb3J5RW5hYmxlZDsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICAgICAgaW50IHRo
cmVzaG9sZEJlZ2luSUQ7CisgICAgfTsKKyAgICBEYXRhKiBtX3BkYXRhOworICAgIERhdGEgbV9k
YXRhOworfTsKKwogfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRleCA2YzBlNzRmMTI5NzJjN2YzNzQ2
MzQwYWZmNjliMzEyZGMyNWNhMWU5Li5jMTI1N2Y2N2JmNWViNWEyZjI2NWYxMzE4ZDE5OGJkZmRi
MTRhZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtMjQzLDYgKzI0Myw1MSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBu
YW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0
cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRy
YSkgeyB9CiAKKyAgICAvLyBHZXQgYSBwb2ludGVyIHRvIHRoZSBlbmFibGVkIHN0YXRlIG9mIHRo
ZSBnaXZlbiB0cmFjZSBjYXRlZ29yeS4gT25seQorICAgIC8vIGxvbmctbGl2ZWQgbGl0ZXJhbCBz
dHJpbmdzIHNob3VsZCBiZSBnaXZlbiBhcyB0aGUgY2F0ZWdvcnlOYW1lLiBJZiB0aGUKKyAgICAv
LyB1bnNpZ25lZCBjaGFyIGlzIG5vbi16ZXJvLCB0cmFjaW5nIGlzIGVuYWJsZWQuIElmIHRyYWNp
bmcgaXMgZW5hYmxlZCwKKyAgICAvLyBhZGRUcmFjZUV2ZW50IGNhbiBiZSBjYWxsZWQuCisgICAg
dmlydHVhbCBjb25zdCB1bnNpZ25lZCBjaGFyKiBnZXRDYXRlZ29yeUVuYWJsZWQoY29uc3QgY2hh
ciogY2F0ZWdvcnlOYW1lKSB7IHJldHVybiAwOyB9CisgICAgLy8gQWRkIGEgdHJhY2UgZXZlbnQg
dG8gdGhlIHBsYXRmb3JtIHRyYWNpbmcgc3lzdGVtLgorICAgIC8vIFJldHVybnMgdGhyZXNob2xk
QmVnaW5JZCBmb3IgdXNlIGluIGEgY29ycmVzcG9uZGluZyBlbmQgYWRkVHJhY2VFdmVudCBjYWxs
LgorICAgIC8vIC0gcGhhc2Ugc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGV2ZW50LCBzdWNoIGFzIGJl
Z2luLCBlbmQsIGluc3RhbnQsIGV0Yy4KKyAgICAvLyAtIGNhdGVnb3J5RW5hYmxlZCBpcyB0aGUg
cG9pbnRlciByZXR1cm5lZCBieSBnZXRDYXRlZ29yeUVuYWJsZWQuCisgICAgLy8gLSBuYW1lIGlz
IHRoZSBuYW1lIG9mIHRoZSBldmVudC4KKyAgICAvLyAtIGlkIG9wdGlvbmFsbHkgYWxsb3dzIGV2
ZW50cyBvZiB0aGUgc2FtZSBuYW1lIHRvIGJlIGRpc3Rpbmd1aXNoZWQuCisgICAgLy8gLSBudW1B
cmdzIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFyZ05hbWVzLCBhcmdUeXBl
cywgYW5kCisgICAgLy8gICBhcmdWYWx1ZXMuCisgICAgLy8gLSBhcmdOYW1lcyBpcyB0aGUgYXJy
YXkgb2YgYXJndW1lbnQgbmFtZXMuCisgICAgLy8gLSBhcmdUeXBlcyBpcyB0aGUgYXJyYXkgb2Yg
YXJndW1lbnQgdHlwZXM6IGJvb2wsIHVuc2lnbmVkIGxvbmcgbG9uZywKKyAgICAvLyAgIGxvbmcg
bG9uZywgZG91YmxlLCB2b2lkKiwgY2hhciogKGxvbmctbGl2ZWQgbnVsbC10ZXJtaW5hdGVkIGNo
YXIqIHN0cmluZyksCisgICAgLy8gICBjaGFyKiAodGVtcG9yYXJ5IG51bGwtdGVybWluYXRlZCBj
aGFyKiBzdHJpbmcpLgorICAgIC8vIC0gYXJnVmFsdWVzIGlzIHRoZSBhcnJheSBvZiBhcmd1bWVu
dCB2YWx1ZXMuCisgICAgLy8gLSB0aHJlc2hvbGRCZWdpbklkIG9wdGlvbmFsbHkgc3BlY2lmaWVz
IHRoZSB2YWx1ZSByZXR1cm5lZCBieSBhIHByZXZpb3VzCisgICAgLy8gICBjYWxsIHRvIGFkZFRy
YWNlRXZlbnQuCisgICAgLy8gLSB0aHJlc2hvbGQgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIG51bWJl
ciBvZiBtaWNyb3NlY29uZHMgdGhhdCBtdXN0IGhhdmUKKyAgICAvLyAgIHBhc3NlZCBzaW5jZSB0
aGUgZXZlbnQgaWRlbnRpZmllZCBieSB0aHJlc2hvbGRCZWdpbklkIGZvciBib3RoIGV2ZW50cyB0
bworICAgIC8vICAgYmUgcmVjb3JkZWQuCisgICAgLy8gLSBmbGFncyBjYW4gYmUgMCBvciBvbmUg
b3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nLCBPUmVkIHRvZ2V0aGVyOgorICAgIC8vICAgLSB0cmVh
dCBhbGwgc3RyaW5ncyBhcyB0ZW1wb3Jhcnkgc28gdGhhdCB0aGV5IHdpbGwgYmUgY29waWVkIGJ5
CisgICAgLy8gICAgIGFkZFRyYWNlRXZlbnQsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBjYXRlZ29y
eSBuYW1lLgorICAgIC8vICAgLSB1c2UgdGhlIGlkIGFyZ3VtZW50IHRvIHVuaXF1ZWx5IGlkZW50
aWZ5IHRoZSBldmVudCBmb3IgbWF0Y2hpbmcKKyAgICAvLyAgICAgd2l0aCBvdGhlciBldmVudHMg
b2YgdGhlIHNhbWUgbmFtZS4KKyAgICB2aXJ0dWFsIGludCBhZGRUcmFjZUV2ZW50KAorICAgICAg
ICBjaGFyIHBoYXNlLAorICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJs
ZWQsCisgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpZCwKKyAgICAgICAgaW50IG51bUFyZ3MsCisgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdOYW1l
cywKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnVHlwZXMsCisgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnVmFsdWVzLAorICAgICAgICBpbnQgdGhyZXNob2xkQmVn
aW5JZCwKKyAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCwKKyAgICAgICAgdW5zaWduZWQgY2hh
ciBmbGFncykgeyByZXR1cm4gLTE7IH0KKyAgICAvLyBNYW5nbGUgcG9pbnRlciB3aXRoIGEgaGFz
aCBzbyB0aGF0IGlmIGl0IG9jY3VycyBvbiBtb3JlIHRoYW4gb25lIHByb2Nlc3MsCisgICAgLy8g
aXQgd2lsbCBub3QgY29sbGlkZSBpbiB0aGUgdHJhY2UgZGF0YS4gUGFzcyB0aGUgcmV0dXJuZWQg
dmFsdWUgdG8KKyAgICAvLyBhZGRUcmFjZUV2ZW50IGFzIHRoZSBpZCBwYXJhbWV0ZXIuCisgICAg
dmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgbWFuZ2xlUG9pbnRlckZvclRyYWNpbmcodm9pZCog
cG9pbnRlcikgeyByZXR1cm4gMHU7IH0KKwogICAgIC8vIENhbGxiYWNrcyBmb3IgcmVwb3J0aW5n
IGhpc3RvZ3JhbSBkYXRhLgogICAgIC8vIEN1c3RvbUNvdW50cyBoaXN0b2dyYW0gaGFzIGV4cG9u
ZW50aWFsIGJ1Y2tldCBzaXplcywgc28gdGhhdCBtaW49MSwgbWF4PTEwMDAwMDAsIGJ1Y2tldENv
dW50PTUwIHdvdWxkIGRvLgogICAgIHZpcnR1YWwgdm9pZCBoaXN0b2dyYW1DdXN0b21Db3VudHMo
Y29uc3QgY2hhciogbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50IG1heCwgaW50IGJ1Y2tl
dENvdW50KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBv
cnQuY3BwCmluZGV4IDI0NjgxZWM5NjJkNzRlYmZlYjVhYjMzNTVjMTkwM2FmZDllOWVjZDYuLjNh
NTdlMDhkZDA3ZTE5MDM3YzhhNzdlNjcwNTM5MDUxYmZjZTVlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtOTYxLDYgKzk2MSwyOSBA
QCB2b2lkIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2
b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cgogewogICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgp
LT50cmFjZUV2ZW50RW5kKG5hbWUsIGlkLCBleHRyYSk7CiB9Citjb25zdCB1bnNpZ25lZCBjaGFy
KiBQbGF0Zm9ybVN1cHBvcnQ6OmdldENhdGVnb3J5RW5hYmxlZChjb25zdCBjaGFyKiBjYXRlZ29y
eU5hbWUpCit7CisgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5nZXRDYXRlZ29y
eUVuYWJsZWQoY2F0ZWdvcnlOYW1lKTsKK30KK2ludCBQbGF0Zm9ybVN1cHBvcnQ6OmFkZFRyYWNl
RXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBudW1BcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiogYXJnTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFyZ1R5cGVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcqIGFyZ1ZhbHVlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRocmVzaG9sZEJlZ2luSWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpCit7
CisgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5hZGRUcmFjZUV2ZW50KAorICAg
ICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwgbnVtQXJncywgYXJnTmFtZXMs
IGFyZ1R5cGVzLCBhcmdWYWx1ZXMsICB0aHJlc2hvbGRCZWdpbklkLCB0aHJlc2hvbGQsIGZsYWdz
KTsKK30KK3Vuc2lnbmVkIGxvbmcgbG9uZyBtYW5nbGVQb2ludGVyRm9yVHJhY2luZyh2b2lkKiBw
b2ludGVyKQoreworICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+bWFuZ2xlUG9p
bnRlckZvclRyYWNpbmcocG9pbnRlcik7Cit9CiAKIC8vIFZpc2l0ZWQgTGlua3MgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123825</attachid>
            <date>2012-01-24 15:31:01 -0800</date>
            <delta_ts>2012-01-25 14:09:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120124153100.patch</filename>
            <type>text/plain</type>
            <size>49703</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYyZDI0OWRkNjFhMTNj
NzAyZTcwODZmZWIxMTAzNWI1Y2ZkMjUwNC4uMzQ3YWVmOGE1MDQyMTEzYWIwOWQzNzM5ZWRjNzc4
OWRiYWQyYzhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAxLTI0ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFj
ZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUlEOjpUcmFjZUlE
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlSUQ6OmRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VTdHJpbmdXaXRoQ29weTo6VHJhY2VTdHJpbmdX
aXRoQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZVN0cmluZ1dpdGhD
b3B5OjpvcGVyYXRvciBjb25zdCBjaGFyKiApOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVu
dDo6U2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpBZGRUcmFj
ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNs
b3NlOjpUcmFjZUVuZE9uU2NvcGVDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50
OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5kT25TY29wZUNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpJbml0aWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpBZGRF
dmVudElmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9u
U2NvcGVDbG9zZVRocmVzaG9sZDo6VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6
On5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6SW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6
QWRkRXZlbnRJZkVuYWJsZWQpOgorCiAyMDEyLTAxLTI0ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9p
c2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnNwZWN0b3IvZGVi
dWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwgc3RhcnRlZCB0byBmYWlsIGFmdGVyIHIxMDU2NDIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWEyZTQzYWZkNTQwNWZhNjQ3MWEwYmRhN2Ri
ZDc0Mzk2MWI3MzZiMC4uMGRlNDM3NzViZDljMDJhY2UxZWVhOGNhM2FmZmNhYjcyNDMzODI2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wMS0yNCAg
Sm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRk
IGNocm9taXVtLXN0eWxlIHRyYWNpbmcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY4ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvZGUgZW5hYmxlcyBXZWJLaXQgdHJhY2UgZXZl
bnRzIHRvIHBhc3MgdGhyb3VnaCBtb3JlIGRhdGEgdG8gdGhlCisgICAgICAgIGNocm9taXVtIHBs
YXRmb3JtIHRyYWNpbmcgQVBJIGFuZCBnZW5lcmFsbHkgdG8gdXNlIHRoZSBmdWxsIHRyYWNpbmcK
KyAgICAgICAgQVBJIHByb3ZpZGVkIGJ5IGNocm9taXVtLgorCisgICAgICAgICogcHVibGljL3Bs
YXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQ6OmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6bWFuZ2xlUG9pbnRlckZvclRyYWNpbmcpOgor
ICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1TdXBwb3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Om1hbmdsZVBvaW50ZXJGb3JUcmFjaW5nKToKKwogMjAxMi0wMS0yNCAgVmluY2VudCBTY2hlaWIg
IDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gQWRkIFdlYktpdCBB
UEkgZm9yIFBvaW50ZXIgTG9jawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBjOGRlZDZlMjZiYTc4NGM2ZTE2Mzc0MWQ2NjI4
ZTg1OTM5YzM2YTZlLi42NGMzMWViYTFkMjU3NDhlZTBmZmI3ZmUwOGVmODdkNzA3MTVhZjMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBv
cnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBv
cnQuaApAQCAtNDE5LDYgKzQxOSwxOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNUcmFj
ZUV2ZW50RW5hYmxlZCgpOwogICAgIHN0YXRpYyB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBj
aGFyKiBuYW1lLCB2b2lkKiwgY29uc3QgY2hhciogZXh0cmEpOwogICAgIHN0YXRpYyB2b2lkIHRy
YWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIqIGV4dHJhKTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciogZ2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRG
bGFnKGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZSk7CisgICAgc3RhdGljIGludCBhZGRUcmFjZUV2
ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGNhdGVnb3J5X2VuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bV9hcmdz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogYXJnX25hbWVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBhcmdfdHlw
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9u
ZyogYXJnX3ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRocmVzaG9s
ZF9iZWdpbl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVz
aG9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncyk7
CisgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBtYW5nbGVQb2ludGVyRm9yVHJhY2luZyh2
b2lkKiBwb2ludGVyKTsKIAogICAgIC8vIFZpc2l0ZWQgbGlua3MgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgc3RhdGljIExpbmtIYXNo
IHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciogdXJsLCB1bnNpZ25lZCBsZW5ndGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCmluZGV4IDY1MmY1
NDA3Y2EzZjU3NTE0Y2ZhYTNkNmE4YmRkMDY4MjU3Yjk2OTkuLjkzNTM0MDg1YjgwMjQzYTBlZDNk
YzAxYTMyNzk3ZTUyZjdkMDAzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1RyYWNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9UcmFjZUV2ZW50LmgKQEAgLTIyLDUzICsyMiw4MTYgQEAKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLworCisvLyBUcmFjZSBldmVudHMgYXJlIGZvciB0cmFja2luZyBh
cHBsaWNhdGlvbiBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXNhZ2UuCisvLyBNYWNyb3MgYXJl
IHByb3ZpZGVkIHRvIHRyYWNrOgorLy8gICAgQmVnaW4gYW5kIGVuZCBvZiBmdW5jdGlvbiBjYWxs
cworLy8gICAgQ291bnRlcnMKKy8vCisvLyBFdmVudHMgYXJlIGlzc3VlZCBhZ2FpbnN0IGNhdGVn
b3JpZXMuIFdoZXJlYXMgTE9HJ3MKKy8vIGNhdGVnb3JpZXMgYXJlIHN0YXRpY2FsbHkgZGVmaW5l
ZCwgVFJBQ0UgY2F0ZWdvcmllcyBhcmUgY3JlYXRlZAorLy8gaW1wbGljaXRseSB3aXRoIGEgc3Ry
aW5nLiBGb3IgZXhhbXBsZToKKy8vICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIk1ZX1NVQlNZU1RF
TSIsICJTb21lSW1wb3J0YW50RXZlbnQiKQorLy8KKy8vIEV2ZW50cyBjYW4gYmUgSU5TVEFOVCwg
b3IgY2FuIGJlIHBhaXJzIG9mIEJFR0lOIGFuZCBFTkQgaW4gdGhlIHNhbWUgc2NvcGU6CisvLyAg
IFRSQUNFX0VWRU5UX0JFR0lOMCgiTVlfU1VCU1lTVEVNIiwgIlNvbWV0aGluZ0Nvc3RseSIpCisv
LyAgIGRvU29tZXRoaW5nQ29zdGx5KCkKKy8vICAgVFJBQ0VfRVZFTlRfRU5EMCgiTVlfU1VCU1lT
VEVNIiwgIlNvbWV0aGluZ0Nvc3RseSIpCisvLyBOb3RlOiBvdXIgdG9vbHMgY2FuJ3QgYWx3YXlz
IGRldGVybWluZSB0aGUgY29ycmVjdCBCRUdJTi9FTkQgcGFpcnMgdW5sZXNzCisvLyB0aGVzZSBh
cmUgdXNlZCBpbiB0aGUgc2FtZSBzY29wZS4gVXNlIFNUQVJUL0ZJTklTSCBtYWNyb3MgaWYgeW91
IG5lZWQgdGhlbQorLy8gdG8gYmUgaW4gc2VwYXJhdGUgc2NvcGVzLgorLy8KKy8vIEEgY29tbW9u
IHVzZSBjYXNlIGlzIHRvIHRyYWNlIGVudGlyZSBmdW5jdGlvbiBzY29wZXMuIFRoaXMKKy8vIGlz
c3VlcyBhIHRyYWNlIEJFR0lOIGFuZCBFTkQgYXV0b21hdGljYWxseToKKy8vICAgdm9pZCBkb1Nv
bWV0aGluZ0Nvc3RseSgpIHsKKy8vICAgICBUUkFDRV9FVkVOVDAoIk1ZX1NVQlNZU1RFTSIsICJk
b1NvbWV0aGluZ0Nvc3RseSIpOworLy8gICAgIC4uLgorLy8gICB9CisvLworLy8gQWRkaXRpb25h
bCBwYXJhbWV0ZXJzIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYW4gZXZlbnQ6CisvLyAgIHZvaWQg
ZG9Tb21ldGhpbmdDb3N0bHkyKGludCBob3dNdWNoKSB7CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJN
WV9TVUJTWVNURU0iLCAiZG9Tb21ldGhpbmdDb3N0bHkiLAorLy8gICAgICAgICAiaG93TXVjaCIs
IGhvd011Y2gpOworLy8gICAgIC4uLgorLy8gICB9CisvLworLy8gVGhlIHRyYWNlIHN5c3RlbSB3
aWxsIGF1dG9tYXRpY2FsbHkgYWRkIHRvIHRoaXMgaW5mb3JtYXRpb24gdGhlCisvLyBjdXJyZW50
IHByb2Nlc3MgaWQsIHRocmVhZCBpZCwgYW5kIGEgdGltZXN0YW1wIGluIG1pY3Jvc2Vjb25kcy4K
Ky8vCisvLyBUbyB0cmFjZSBhbiBhc3luY2hyb25vdXMgcHJvY2VkdXJlIHN1Y2ggYXMgYW4gSVBD
IHNlbmQvcmVjZWl2ZSwgdXNlIFNUQVJUIGFuZAorLy8gRklOSVNIOgorLy8gICBbc2luZ2xlIHRo
cmVhZGVkIHNlbmRlciBjb2RlXQorLy8gICAgIHN0YXRpYyBpbnQgc2VuZF9jb3VudCA9IDA7Cisv
LyAgICAgKytzZW5kX2NvdW50OworLy8gICAgIFRSQUNFX0VWRU5UX1NUQVJUMCgiaXBjIiwgIm1l
c3NhZ2UiLCBzZW5kX2NvdW50KTsKKy8vICAgICBTZW5kKG5ldyBNeU1lc3NhZ2Uoc2VuZF9jb3Vu
dCkpOworLy8gICBbcmVjZWl2ZSBjb2RlXQorLy8gICAgIHZvaWQgT25NeU1lc3NhZ2Uoc2VuZF9j
b3VudCkgeworLy8gICAgICAgVFJBQ0VfRVZFTlRfRklOSVNIMCgiaXBjIiwgIm1lc3NhZ2UiLCBz
ZW5kX2NvdW50KTsKKy8vICAgICB9CisvLyBUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIGEgdW5pcXVl
IElEIHRvIG1hdGNoIFNUQVJUL0ZJTklTSCBwYWlycy4KKy8vIFNUQVJUIGFuZCBGSU5JU0ggY2Fu
IG9jY3VyIG9uIGFueSB0aHJlYWQgb2YgYW55IHRyYWNlZCBwcm9jZXNzLiBQb2ludGVycyBjYW4K
Ky8vIGJlIHVzZWQgZm9yIHRoZSBJRCBwYXJhbWV0ZXIsIGFuZCB0aGV5IHdpbGwgYmUgbWFuZ2xl
ZCBpbnRlcm5hbGx5IHNvIHRoYXQKKy8vIHRoZSBzYW1lIHBvaW50ZXIgb24gdHdvIGRpZmZlcmVu
dCBwcm9jZXNzZXMgd2lsbCBub3QgbWF0Y2guIEZvciBleGFtcGxlOgorLy8gICBjbGFzcyBNeVRy
YWNlZENsYXNzIHsKKy8vICAgIHB1YmxpYzoKKy8vICAgICBNeVRyYWNlZENsYXNzKCkgeworLy8g
ICAgICAgVFJBQ0VfRVZFTlRfU1RBUlQwKCJjYXRlZ29yeSIsICJNeVRyYWNlZENsYXNzIiwgdGhp
cyk7CisvLyAgICAgfQorLy8gICAgIH5NeVRyYWNlZENsYXNzKCkgeworLy8gICAgICAgVFJBQ0Vf
RVZFTlRfRklOSVNIMCgiY2F0ZWdvcnkiLCAiTXlUcmFjZWRDbGFzcyIsIHRoaXMpOworLy8gICAg
IH0KKy8vICAgfQorLy8KKy8vIFRyYWNlIGV2ZW50IGFsc28gc3VwcG9ydHMgY291bnRlcnMsIHdo
aWNoIGlzIGEgd2F5IHRvIHRyYWNrIGEgcXVhbnRpdHkKKy8vIGFzIGl0IHZhcmllcyBvdmVyIHRp
bWUuIENvdW50ZXJzIGFyZSBjcmVhdGVkIHdpdGggdGhlIGZvbGxvd2luZyBtYWNybzoKKy8vICAg
VFJBQ0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIiLCBnX215Q291bnRlclZh
bHVlKTsKKy8vCisvLyBDb3VudGVycyBhcmUgcHJvY2Vzcy1zcGVjaWZpYy4gVGhlIG1hY3JvIGl0
c2VsZiBjYW4gYmUgaXNzdWVkIGZyb20gYW55CisvLyB0aHJlYWQsIGhvd2V2ZXIuCisvLworLy8g
U29tZXRpbWVzLCB5b3Ugd2FudCB0byB0cmFjayB0d28gY291bnRlcnMgYXQgb25jZS4gWW91IGNh
biBkbyB0aGlzIHdpdGggdHdvCisvLyBjb3VudGVyIG1hY3JvczoKKy8vICAgVFJBQ0VfQ09VTlRF
UjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIwIiwgZ19teUNvdW50ZXJWYWx1ZVswXSk7Cisv
LyAgIFRSQUNFX0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVyMSIsIGdfbXlDb3Vu
dGVyVmFsdWVbMV0pOworLy8gT3IgeW91IGNhbiBkbyBpdCB3aXRoIGEgY29tYmluZWQgbWFjcm86
CisvLyAgIFRSQUNFX0NPVU5URVIyKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVyIiwKKy8vICAg
ICAgICJieXRlc1Bpbm5lZCIsIGdfbXlDb3VudGVyVmFsdWVbMF0sCisvLyAgICAgICAiYnl0ZXNB
bGxvY2F0ZWQiLCBnX215Q291bnRlclZhbHVlWzFdKTsKKy8vIFRoaXMgaW5kaWNhdGVzIHRvIHRo
ZSB0cmFjaW5nIFVJIHRoYXQgdGhlc2UgY291bnRlcnMgc2hvdWxkIGJlIGRpc3BsYXllZAorLy8g
aW4gYSBzaW5nbGUgZ3JhcGgsIGFzIGEgc3VtbWVkIGFyZWEgY2hhcnQuCisvLworLy8gU2luY2Ug
Y291bnRlcnMgYXJlIGluIGEgZ2xvYmFsIG5hbWVzcGFjZSwgeW91IG1heSB3YW50IHRvIGRpc2Vt
YmlndWF0ZSB3aXRoIGEKKy8vIHVuaXF1ZSBJRCwgYnkgdXNpbmcgdGhlIFRSQUNFX0NPVU5URVJf
SUQqIHZhcmlhdGlvbnMuCisvLworLy8gQnkgZGVmYXVsdCwgdHJhY2UgY29sbGVjdGlvbiBpcyBj
b21waWxlZCBpbiwgYnV0IHR1cm5lZCBvZmYgYXQgcnVudGltZS4KKy8vIENvbGxlY3RpbmcgdHJh
Y2UgZGF0YSBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGVtYmVkZGluZworLy8gYXBwbGlj
YXRpb24uIEluIENocm9tZSdzIGNhc2UsIG5hdmlnYXRpbmcgdG8gYWJvdXQ6dHJhY2luZyB3aWxs
IHR1cm4gb24KKy8vIHRyYWNpbmcgYW5kIGRpc3BsYXkgZGF0YSBjb2xsZWN0ZWQgYWNyb3NzIGFs
bCBhY3RpdmUgcHJvY2Vzc2VzLgorLy8KKy8vCisvLyBNZW1vcnkgc2NvcGluZyBub3RlOgorLy8g
VHJhY2luZyBjb3BpZXMgdGhlIHBvaW50ZXJzLCBub3QgdGhlIHN0cmluZyBjb250ZW50LCBvZiB0
aGUgc3RyaW5ncyBwYXNzZWQKKy8vIGluIGZvciBjYXRlZ29yeSwgbmFtZSwgYW5kIGFyZ19uYW1l
cy4gVGh1cywgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwKKy8vIGNhdXNlIHByb2JsZW1zOgorLy8g
ICAgIGNoYXIqIHN0ciA9IHN0cmR1cCgiaW1wcHJ0YW50TmFtZSIpOworLy8gICAgIFRSQUNFX0VW
RU5UX0lOU1RBTlQwKCJTVUJTWVNURU0iLCBzdHIpOyAgLy8gQkFEIQorLy8gICAgIGZyZWUoc3Ry
KTsgICAgICAgICAgICAgICAgICAgLy8gVHJhY2Ugc3lzdGVtIG5vdyBoYXMgZGFuZ2xpbmcgcG9p
bnRlcgorLy8KKy8vIFRvIGF2b2lkIHRoaXMgaXNzdWUgd2l0aCB0aGUgfG5hbWV8IGFuZCB8YXJn
X25hbWV8IHBhcmFtZXRlcnMsIHVzZSB0aGUKKy8vIFRSQUNFX0VWRU5UX0NPUFlfWFhYIG92ZXJs
b2FkcyBvZiB0aGUgbWFjcm9zIGF0IGFkZGl0aW9uYWwgcnVudGltZSBvdmVyaGVhZC4KKy8vIE5v
dGVzOiBUaGUgY2F0ZWdvcnkgbXVzdCBhbHdheXMgYmUgaW4gYSBsb25nLWxpdmVkIGNoYXIqIChp
LmUuIHN0YXRpYyBjb25zdCkuCisvLyAgICAgICAgVGhlIHxhcmdfdmFsdWVzfCwgd2hlbiB1c2Vk
LCBhcmUgYWx3YXlzIGRlZXAgY29waWVkIHdpdGggdGhlIF9DT1BZCisvLyAgICAgICAgbWFjcm9z
LgorLy8KKy8vIFdoZW4gYXJlIHN0cmluZyBhcmd1bWVudCB2YWx1ZXMgY29waWVkOgorLy8gY29u
c3QgY2hhciogYXJnX3ZhbHVlcyBhcmUgb25seSByZWZlcmVuY2VkIGJ5IGRlZmF1bHQ6CisvLyAg
ICAgVFJBQ0VfRVZFTlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAg
ImFyZzEiLCAibGl0ZXJhbCBzdHJpbmcgaXMgb25seSByZWZlcmVuY2VkIik7CisvLyBVc2UgVFJB
Q0VfU1RSX0NPUFkgdG8gZm9yY2UgY29weWluZyBvZiBhIGNvbnN0IGNoYXIqOgorLy8gICAgIFRS
QUNFX0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisvLyAgICAgICAgICAgICAgICAgICJhcmcx
IiwgVFJBQ0VfU1RSX0NPUFkoInN0cmluZyB3aWxsIGJlIGNvcGllZCIpKTsKKy8vIHN0ZDo6c3Ry
aW5nIGFyZ192YWx1ZXMgYXJlIGFsd2F5cyBjb3BpZWQ6CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJj
YXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAgImFyZzEiLCBzdGQ6OnN0cmlu
Zygic3RyaW5nIHdpbGwgYmUgY29waWVkIikpOworLy8KKy8vCisvLyBUaHJlYWQgU2FmZXR5Ogor
Ly8gQSB0aHJlYWQgc2FmZSBzaW5nbGV0b24gYW5kIG11dGV4IGFyZSB1c2VkIGZvciB0aHJlYWQg
c2FmZXR5LiBDYXRlZ29yeQorLy8gZW5hYmxlZCBmbGFncyBhcmUgdXNlZCB0byBsaW1pdCB0aGUg
cGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gdGhlIHN5c3RlbQorLy8gaXMgbm90IGVuYWJsZWQuCisv
LworLy8gVFJBQ0VfRVZFTlQgbWFjcm9zIGZpcnN0IGNhY2hlIGEgcG9pbnRlciB0byBhIGNhdGVn
b3J5LiBUaGUgY2F0ZWdvcmllcyBhcmUKKy8vIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGFuZCBzYWZl
IGF0IGFsbCB0aW1lcywgZXZlbiBhZnRlciBleGl0LiBGZXRjaGluZyBhCisvLyBjYXRlZ29yeSBp
cyBwcm90ZWN0ZWQgYnkgdGhlIFRyYWNlTG9nOjpsb2NrXy4gTXVsdGlwbGUgdGhyZWFkcyBpbml0
aWFsaXppbmcKKy8vIHRoZSBzdGF0aWMgdmFyaWFibGUgaXMgc2FmZSwgYXMgdGhleSB3aWxsIGJl
IHNlcmlhbGl6ZWQgYnkgdGhlIGxvY2sgYW5kCisvLyBtdWx0aXBsZSBjYWxscyB3aWxsIHJldHVy
biB0aGUgc2FtZSBwb2ludGVyIHRvIHRoZSBjYXRlZ29yeS4KKy8vCisvLyBUaGVuIHRoZSBjYXRl
Z29yeV9lbmFibGVkIGZsYWcgaXMgY2hlY2tlZC4gVGhpcyBpcyBhIHVuc2lnbmVkIGNoYXIsIGFu
ZAorLy8gbm90IGludGVuZGVkIHRvIGJlIG11bHRpdGhyZWFkIHNhZmUuIEl0IG9wdGltaXplcyBh
Y2Nlc3MgdG8gQWRkVHJhY2VFdmVudAorLy8gd2hpY2ggaXMgdGhyZWFkc2FmZSBpbnRlcm5hbGx5
IHZpYSBUcmFjZUxvZzo6bG9ja18uIFRoZSBlbmFibGVkIGZsYWcgbWF5CisvLyBjYXVzZSBzb21l
IHRocmVhZHMgdG8gaW5jb3JyZWN0bHkgY2FsbCBvciBza2lwIGNhbGxpbmcgQWRkVHJhY2VFdmVu
dCBuZWFyCisvLyB0aGUgdGltZSBvZiB0aGUgc3lzdGVtIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJs
ZWQuIFRoaXMgaXMgYWNjZXB0YWJsZSBhcworLy8gd2UgdG9sZXJhdGUgc29tZSBkYXRhIGxvc3Mg
d2hpbGUgdGhlIHN5c3RlbSBpcyBiZWluZyBlbmFibGVkL2Rpc2FibGVkIGFuZAorLy8gYmVjYXVz
ZSBBZGRUcmFjZUV2ZW50IGlzIHRocmVhZHNhZmUgaW50ZXJuYWxseSBhbmQgY2hlY2tzIHRoZSBl
bmFibGVkIHN0YXRlCisvLyBhZ2FpbiB1bmRlciBsb2NrLgorLy8KKy8vIFdpdGhvdXQgdGhlIHVz
ZSBvZiB0aGVzZSBzdGF0aWMgY2F0ZWdvcnkgcG9pbnRlcnMgYW5kIGVuYWJsZWQgZmxhZ3MgYWxs
CisvLyB0cmFjZSBwb2ludHMgd291bGQgY2FycnkgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBj
b3N0IG9mIGFxdWlyaW5nIGEgbG9jaworLy8gYW5kIHJlc29sdmluZyB0aGUgY2F0ZWdvcnkuCisK
ICNpZm5kZWYgVHJhY2VFdmVudF9oCiAjZGVmaW5lIFRyYWNlRXZlbnRfaAogCisjaW5jbHVkZSAi
RHluYW1pY0Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCi0jaW5j
bHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisKKy8vIElzc3VlcyBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbiBhbmQgdHJhY2VF
dmVudEVuZCBjYWxscyBmb3IgdGhlIGVuY2xvc2luZyBzY29wZQorI2RlZmluZSBUUkFDRV9FVkVO
VChuYW1lLCBpZCwgZXh0cmEpIFRSQUNFX0VWRU5UMigid2Via2l0IiwgbmFtZSwgImlkIiwgaWQs
ICJleHRyYSIsIGV4dHJhKQorCisvLyBCeSBkZWZhdWx0LCBjb25zdCBjaGFyKiBhcmd1bWVudCB2
YWx1ZXMgYXJlIGFzc3VtZWQgdG8gaGF2ZSBsb25nLWxpdmVkIHNjb3BlCisvLyBhbmQgd2lsbCBu
b3QgYmUgY29waWVkLiBVc2UgdGhpcyBtYWNybyB0byBmb3JjZSBhIGNvbnN0IGNoYXIqIHRvIGJl
IGNvcGllZC4KKyNkZWZpbmUgVFJBQ0VfU1RSX0NPUFkoc3RyKSBcCisgICAgV2ViQ29yZTo6VHJh
Y2VFdmVudDo6VHJhY2VTdHJpbmdXaXRoQ29weShzdHIpCisKKy8vIFJlY29yZHMgYSBwYWlyIG9m
IGJlZ2luIGFuZCBlbmQgZXZlbnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50CisvLyBz
Y29wZSwgd2l0aCAwLCAxIG9yIDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29y
eSBpcyBub3QKKy8vIGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVn
b3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0
aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNk
ZWZpbmUgVFJBQ0VfRVZFTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlQxKGNh
dGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNk
ZWZpbmUgVFJBQ0VfRVZFTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBh
cmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BF
RChjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25h
bWUsIGFyZzJfdmFsKQorCisvLyBTYW1lIGFzIFRSQUNFX0VWRU5UIGV4Y2VwdCB0aGF0IHRoZXkg
YXJlIG5vdCBpbmNsdWRlZCBpbiBvZmZpY2lhbCBidWlsZHMuCisjaWZkZWYgT0ZGSUNJQUxfQlVJ
TEQKKyNkZWZpbmUgVU5TSElQUEVEX1RSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFtZSkgKHZvaWQp
MAorI2RlZmluZSBVTlNISVBQRURfVFJBQ0VfRVZFTlQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25h
bWUsIGFyZzFfdmFsKSAodm9pZCkwCisjZGVmaW5lIFVOU0hJUFBFRF9UUkFDRV9FVkVOVDIoY2F0
ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSAodm9pZCkwCisjZGVmaW5lIFVOU0hJUFBF
RF9UUkFDRV9FVkVOVF9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgKHZvaWQpMAorI2RlZmluZSBV
TlNISVBQRURfVFJBQ0VfRVZFTlRfSU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwg
YXJnMV92YWwpIFwKKyAgICAodm9pZCkwCisjZGVmaW5lIFVOU0hJUFBFRF9UUkFDRV9FVkVOVF9J
TlNUQU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgKHZvaWQp
MAorI2Vsc2UKKyNkZWZpbmUgVU5TSElQUEVEX1RSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFtZSkg
XAorICAgIFRSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVU5TSElQUEVEX1RS
QUNFX0VWRU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIFRS
QUNFX0VWRU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUg
VU5TSElQUEVEX1RSQUNFX0VWRU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3Zh
bCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwp
IFwKKyAgICBUUkFDRV9FVkVOVDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWws
IGFyZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFVOU0hJUFBFRF9UUkFDRV9FVkVOVF9JTlNU
QU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKGNhdGVnb3J5
LCBuYW1lKQorI2RlZmluZSBVTlNISVBQRURfVFJBQ0VfRVZFTlRfSU5TVEFOVDEoY2F0ZWdvcnks
IG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMShj
YXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVU5TSElQUEVEX1RS
QUNFX0VWRU5UX0lOU1RBTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyX25hbWUsIGFyZzJf
dmFsKSBcCisgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFt
ZSwgYXJnMV92YWwsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyX25hbWUsIGFyZzJf
dmFsKQorI2VuZGlmCisKKy8vIFJlY29yZHMgYSBzaW5nbGUgZXZlbnQgY2FsbGVkICJuYW1lIiBp
bW1lZGlhdGVseSwgd2l0aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0
aGUgY2F0ZWdvcnkgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgor
Ly8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZl
dGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIg
Y2hhcnMuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisg
ICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwK
KyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfSU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFO
VCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcx
X25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMihjYXRlZ29yeSwg
bmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFs
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RB
TlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJn
MV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmlu
ZSBUUkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAg
Y2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZF
TlRfQ09QWV9JTlNUQU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAor
ICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBc
CisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFt
ZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfSU5TVEFOVDIoY2F0ZWdvcnks
IG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3Zh
bCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNU
QU5ULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFy
ZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8g
VGltZSB0aHJlc2hvbGQgZXZlbnQ6CisvLyBPbmx5IHJlY29yZCB0aGUgZXZlbnQgaWYgdGhlIGR1
cmF0aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3BlY2lmaWVkCisvLyB0aHJlc2hvbGRfdXMgKHRp
bWUgaW4gbWljcm9zZWNvbmRzKS4KKy8vIFJlY29yZHMgYSBwYWlyIG9mIGJlZ2luIGFuZCBlbmQg
ZXZlbnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50CisvLyBzY29wZSwgd2l0aCAwLCAx
IG9yIDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QKKy8vIGVu
YWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0
cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxp
dGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfRVZF
TlRfSUZfTE9OR0VSX1RIQU4wKHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFOKHRocmVzaG9sZF91
cywgY2F0ZWdvcnksIG5hbWUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lGX0xPTkdFUl9USEFOMSgg
XAorICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFOKCBc
CisgICAgICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92
YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lGX0xPTkdFUl9USEFOMiggXAorICAgIHRocmVzaG9s
ZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJn
Ml92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9U
SEFOKCBcCisgICAgICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwg
YXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlIG9m
IGEgY291bnRlciBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LiBWYWx1ZQorLy8gbXVzdCBiZSBy
ZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IGludGVnZXIuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1l
IHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAg
IGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0Vf
Q09VTlRFUjEoY2F0ZWdvcnksIG5hbWUsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5h
bWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNfY2Fz
dDxpbnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSMShjYXRlZ29yeSwgbmFt
ZSwgdmFsdWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhB
U0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19D
T1BZLCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUpKQorCisvLyBS
ZWNvcmRzIHRoZSB2YWx1ZXMgb2YgYSBtdWx0aS1wYXJ0ZWQgY291bnRlciBjYWxsZWQgIm5hbWUi
IGltbWVkaWF0ZWx5LgorLy8gVGhlIFVJIHdpbGwgdHJlYXQgdmFsdWUxIGFuZCB2YWx1ZTIgYXMg
cGFydHMgb2YgYSB3aG9sZSwgZGlzcGxheWluZyB0aGVpcgorLy8gdmFsdWVzIGFzIGEgc3RhY2tl
ZC1iYXIgY2hhcnQuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFw
cGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkg
bm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfQ09VTlRFUjIoY2F0ZWdvcnksIG5h
bWUsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCB2YWx1
ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNF
X0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9O
RSwgXAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwg
XAorICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKyNk
ZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSMihjYXRlZ29yeSwgbmFtZSwgdmFsdWUxX25hbWUsIHZh
bHVlMV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAg
ICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIHZhbHVl
MV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9u
YW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorCisvLyBSZWNvcmRzIHRoZSB2YWx1
ZSBvZiBhIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4gVmFsdWUKKy8vIG11c3Qg
YmUgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCBpbnRlZ2VyLgorLy8gLSBjYXRlZ29yeSBhbmQg
bmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgor
Ly8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisvLyAtIHxpZHwg
aXMgdXNlZCB0byBkaXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBuYW1lLiBJdCBt
dXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2YWx1ZSB1cCB0byA2
NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2lsbCBiZSB4b3JlZCB3
aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1lIHBvaW50ZXIgb24K
Ky8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlkZS4KKyNkZWZpbmUg
VFJBQ0VfQ09VTlRFUl9JRDEoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZSkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwK
KyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgXAor
ICAgICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0Vf
Q09QWV9DT1VOVEVSX0lEMShjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAor
ICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSB8IFRSQUNF
X0VWRU5UX0ZMQUdfSEFTX0lELCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4o
dmFsdWUpKQorCisvLyBSZWNvcmRzIHRoZSB2YWx1ZXMgb2YgYSBtdWx0aS1wYXJ0ZWQgY291bnRl
ciBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LgorLy8gVGhlIFVJIHdpbGwgdHJlYXQgdmFsdWUx
IGFuZCB2YWx1ZTIgYXMgcGFydHMgb2YgYSB3aG9sZSwgZGlzcGxheWluZyB0aGVpcgorLy8gdmFs
dWVzIGFzIGEgc3RhY2tlZC1iYXIgY2hhcnQuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmlu
Z3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVy
YWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRv
IGRpc2FtYmlndWF0ZSBjb3VudGVycyB3aXRoIHRoZSBzYW1lIG5hbWUuIEl0IG11c3QgZWl0aGVy
CisvLyAgIGJlIGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElm
IGl0J3MgYSBwb2ludGVyLCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNo
IG9mIHRoZSBwcm9jZXNzIElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28g
ZGlmZmVyZW50IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9DT1VO
VEVSX0lEMihjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisg
ICAgICAgIHZhbHVlMl9uYW1lLCB2YWx1ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBcCisgICAgICAgIHZhbHVl
MV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9u
YW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorI2RlZmluZSBUUkFDRV9DT1BZX0NP
VU5URVJfSUQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgdmFsdWUxX25hbWUsIHZhbHVlMV92YWwsIFwK
KyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNh
dGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZIHwgVFJBQ0VfRVZFTlRfRkxB
R19IQVNfSUQsIFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUx
X3ZhbCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3Zh
bCkpCisKKy8vIFJlY29yZHMgYSBzaW5nbGUgU1RBUlQgZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1l
ZGlhdGVseSwgd2l0aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUg
Y2F0ZWdvcnkgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8g
LSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGlt
ZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hh
cnMuCisvLyAtIHxpZHwgaXMgdXNlZCB0byBtYXRjaCB0aGUgU1RBUlQgZXZlbnQgd2l0aCB0aGUg
RklOSVNIIGV2ZW50LiBJdCBtdXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50
ZWdlciB2YWx1ZSB1cCB0byA2NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8v
ICAgd2lsbCBiZSB4b3JlZCB3aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRo
ZSBzYW1lIHBvaW50ZXIgb24KKy8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3Qg
Y29sbGlkZS4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfU1RBUlQwKGNhdGVnb3J5LCBuYW1lLCBpZCkg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNF
X1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19I
QVNfSUQpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NUQVJUMShjYXRlZ29yeSwgbmFtZSwgaWQsIGFy
ZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9J
RChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQs
IFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBU
UkFDRV9FVkVOVF9TVEFSVDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFs
LCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBcCisgICAgICAgIGFyZzFf
bmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5U
X0NPUFlfU1RBUlQwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVn
b3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9GTEFH
X0NPUFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfU1RBUlQxKGNhdGVnb3J5LCBuYW1lLCBp
ZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9X
SVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1l
LCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwK
KyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9T
VEFSVDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAg
IGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lU
SF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwg
aWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEIHwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisg
ICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJl
Y29yZHMgYSBzaW5nbGUgRklOSVNIIGV2ZW50IGZvciAibmFtZSIgaW1tZWRpYXRlbHkuIElmIHRo
ZSBjYXRlZ29yeQorLy8gaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0ZJTklTSDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBc
CisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQpCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0ZJTklTSDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUs
IGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0Vf
RVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0Vf
RVZFTlRfRkxBR19IQVNfSUQsIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0ZJTklTSDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisg
ICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9B
RERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnks
IG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgXAorICAgICAgICBhcmcxX25hbWUs
IGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZ
X0ZJTklTSDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
QUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NP
UFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRklOSVNIMShjYXRlZ29yeSwgbmFtZSwgaWQs
IGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lU
SF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCB8IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAor
ICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0ZJ
TklTSDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAg
IGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lU
SF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCB8IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAor
ICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisKKy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBJbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0cmFjaW5n
IEFQSSBkZWZpbml0aW9ucy4KKworLy8gR2V0IGEgcG9pbnRlciB0byB0aGUgZW5hYmxlZCBzdGF0
ZSBvZiB0aGUgZ2l2ZW4gdHJhY2UgY2F0ZWdvcnkuIE9ubHkKKy8vIGxvbmctbGl2ZWQgbGl0ZXJh
bCBzdHJpbmdzIHNob3VsZCBiZSBnaXZlbiBhcyB0aGUgY2F0ZWdvcnkgbmFtZS4gVGhlIHJldHVy
bmVkCisvLyBwb2ludGVyIGNhbiBiZSBoZWxkIHBlcm1hbmVudGx5IGluIGEgbG9jYWwgc3RhdGlj
IGZvciBleGFtcGxlLiBJZiB0aGUKKy8vIHVuc2lnbmVkIGNoYXIgaXMgbm9uLXplcm8sIHRyYWNp
bmcgaXMgZW5hYmxlZC4gSWYgdHJhY2luZyBpcyBlbmFibGVkLAorLy8gVFJBQ0VfRVZFTlRfQVBJ
X0FERF9UUkFDRV9FVkVOVCBjYW4gYmUgY2FsbGVkLiBJdCdzIE9LIGlmIHRyYWNpbmcgaXMgZGlz
YWJsZWQKKy8vIGJldHdlZW4gdGhlIGxvYWQgb2YgdGhlIHRyYWNpbmcgc3RhdGUgYW5kIHRoZSBj
YWxsIHRvCisvLyBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5ULCBiZWNhdXNlIHRoaXMg
ZmxhZyBvbmx5IHByb3ZpZGVzIGFuIGVhcmx5IG91dAorLy8gZm9yIGJlc3QgcGVyZm9ybWFuY2Ug
d2hlbiB0cmFjaW5nIGlzIGRpc2FibGVkLgorLy8gY29uc3QgdW5zaWduZWQgY2hhcioKKy8vICAg
ICBUUkFDRV9FVkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJMRUQoY29uc3QgY2hhciogY2F0ZWdv
cnlfbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVBJX0dFVF9DQVRFR09SWV9FTkFCTEVEIFwK
KyAgICBXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxh
ZworCisvLyBBZGQgYSB0cmFjZSBldmVudCB0byB0aGUgcGxhdGZvcm0gdHJhY2luZyBzeXN0ZW0u
IFJldHVybnMgdGhyZXNob2xkQmVnaW5JZAorLy8gZm9yIHVzZSBpbiBhIGNvcnJlc3BvbmRpbmcg
ZW5kIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQgY2FsbC4KKy8vIGludCBUUkFDRV9F
VkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorLy8gICAgICAgICAgICAgICAgICAgIGNoYXIgcGhh
c2UsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlf
ZW5hYmxlZCwKKy8vICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorLy8gICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKy8vICAgICAgICAgICAgICAg
ICAgICBpbnQgbnVtX2FyZ3MsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcioqIGFy
Z19uYW1lcywKKy8vICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBhcmdf
dHlwZXMsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nKiBh
cmdfdmFsdWVzLAorLy8gICAgICAgICAgICAgICAgICAgIGludCB0aHJlc2hvbGRCZWdpbklELAor
Ly8gICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQsCisvLyAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVBJX0FE
RF9UUkFDRV9FVkVOVCBcCisgICAgV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2
ZW50CisKKy8vIE1hbmdsZSBwb2ludGVyIHdpdGggYSBoYXNoIHNvIHRoYXQgaWYgaXQgb2NjdXJz
IG9uIG1vcmUgdGhhbiBvbmUgcHJvY2VzcywKKy8vIGl0IHdpbGwgbm90IGNvbGxpZGUgaW4gdGhl
IHRyYWNlIGRhdGEuIFBhc3MgdGhlIHJldHVybmVkIHZhbHVlIHRvCisvLyBUUkFDRV9FVkVOVF9B
UElfQUREX1RSQUNFX0VWRU5UIGFzIHRoZSBpZCBwYXJhbWV0ZXIuCisvLyB1bnNpZ25lZCBsb25n
IGxvbmcgVFJBQ0VfRVZFTlRfQVBJX0dFVF9JRF9GUk9NX1BPSU5URVIodm9pZCogcG9pbnRlcikK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVBJX0dFVF9JRF9GUk9NX1BPSU5URVIgXAorICAgIFdlYkNv
cmU6OlBsYXRmb3JtU3VwcG9ydDo6bWFuZ2xlUG9pbnRlckZvclRyYWNpbmcKKworLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KIAogLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiB0cmFjZSBldmVudCBt
YWNyb3MgY3JlYXRlIHRlbXBvcmFyeSB2YXJpYWJsZXMKIC8vIHRvIGtlZXAgaW5zdHJ1bWVudGF0
aW9uIG92ZXJoZWFkIGxvdy4gVGhlc2UgbWFjcm9zIGdpdmUgZWFjaCB0ZW1wb3JhcnkKIC8vIHZh
cmlhYmxlIGEgdW5pcXVlIG5hbWUgYmFzZWQgb24gdGhlIGxpbmUgbnVtYmVyIHRvIHByZXZlbnQg
bmFtZSBjb2xsaXNzaW9ucy4KLSNkZWZpbmUgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJ
RklFUjMoYSwgYikgYSMjYgotI2RlZmluZSBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElG
SUVSMihhLCBiKSBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElGSUVSMyhhLCBiKQotI2Rl
ZmluZSBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElGSUVSKG5hbWVfcHJlZml4KSBUUkFD
RV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElGSUVSMihuYW1lX3ByZWZpeCwgX19MSU5FX18pCisj
ZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJRDMoYSwgYikgXAorICAgIHRyYWNlX2V2ZW50
X3VuaXF1ZV8jI2EjI2IKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMihhLCBiKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMyhhLCBiKQorI2RlZmluZSBJTlRFUk5BTFRS
QUNFRVZFTlRVSUQobmFtZV9wcmVmaXgpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQy
KG5hbWVfcHJlZml4LCBfX0xJTkVfXykKKworLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBpbnRl
cm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5LgorLy8gLSBXVEZfQU5OT1RBVEVf
QkVOSUdOX1JBQ0UsIHNlZSBUaHJlYWQgU2FmZXR5IGFib3ZlLgorI2RlZmluZSBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9HRVRfQ0FURUdPUllfSU5GTyhjYXRlZ29yeSkgXAorICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBjaGFyKiBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSA9IDA7IFwK
KyAgICBXVEZfQU5OT1RBVEVfQkVOSUdOX1JBQ0UoJklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRz
dGF0aWMpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFjZV9ldmVudCBjYXRl
Z29yeSIpOyBcCisgICAgaWYgKCFJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkgXAor
ICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykgPSBcCisgICAgICAgICAgVFJB
Q0VfRVZFTlRfQVBJX0dFVF9DQVRFR09SWV9FTkFCTEVEKGNhdGVnb3J5KTsKKworLy8gSW1wbGVt
ZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5
IGFuZCBhZGQKKy8vIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLgorI2lmIENPTVBJ
TEVSKE1TVkM3X09SX0xPV0VSKQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoaWdu
b3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChw
aGFzZSwgY2F0ZWdvcnksIG5hbWUsIGZsYWdzLCAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9HRVRfQ0FURUdPUllfSU5GTyhjYXRlZ29yeSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJB
Q0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7IFwKKyAgICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OkFk
ZFRyYWNlRXZlbnQoIFwKKyAgICAgICAgICBwaGFzZSwgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNh
dHN0YXRpYyksIG5hbWUsIFwKKyAgICAgICAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjprTm9FdmVu
dElkLCBmbGFncywgIyNfX1ZBX0FSR1NfXyk7IFwKKyAgICB9CisjZW5kaWYKKworLy8gSW1wbGVt
ZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5
IGFuZCBhZGQgYmVnaW4KKy8vIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLiBBbHNv
IGFkZHMgdGhlIGVuZCBldmVudCB3aGVuIHRoZSBzY29wZQorLy8gZW5kcy4KKyNpZiBDT01QSUxF
UihNU1ZDN19PUl9MT1dFUikKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BF
RChpZ25vcmUpICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
QUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpOyBcCisgICAgV2ViQ29yZTo6VHJhY2VFdmVu
dDo6VHJhY2VFbmRPblNjb3BlQ2xvc2UgXAorICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQo
cHJvZmlsZVNjb3BlKTsgXAorICAgIGlmICgqSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRp
YykpIHsgXAorICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6QWRkVHJhY2VFdmVudCggXAorICAg
ICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgICAgSU5URVJOQUxUUkFD
RUVWRU5UVUlEKGNhdHN0YXRpYyksIFwKKyAgICAgICAgICBuYW1lLCBXZWJDb3JlOjpUcmFjZUV2
ZW50OjprTm9FdmVudElkLCBcCisgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCAjI19f
VkFfQVJHU19fKTsgXAorICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSku
SW5pdGlhbGl6ZSggXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMp
LCBuYW1lKTsgXAorICAgIH0KKyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGlu
dGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZCBiZWdpbgorLy8g
ZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuIEFsc28gYWRkcyB0aGUgZW5kIGV2ZW50
IHdoZW4gdGhlIHNjb3BlCisvLyBlbmRzLiBJZiB0aGUgZWxhcHNlZCB0aW1lIGlzIDwgdGhyZXNo
b2xkIHRpbWUsIHRoZSBiZWdpbi9lbmQgcGFpciBpcyBlcmFzZWQuCisjaWYgQ09NUElMRVIoTVNW
QzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZf
TE9OR0VSX1RIQU4oaWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4odGhyZXNob2xkLCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FU
RUdPUllfSU5GTyhjYXRlZ29yeSk7IFwKKyAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVu
ZE9uU2NvcGVDbG9zZVRocmVzaG9sZCBcCisgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChw
cm9maWxlU2NvcGUpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGlj
KSkgeyBcCisgICAgICBpbnQgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGJlZ2luX2V2ZW50X2lkKSA9
IFwKKyAgICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6QWRkVHJhY2VFdmVudCggXAorICAgICAg
ICAgICAgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgICAgIElOVEVSTkFMVFJB
Q0VFVkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgICBuYW1lLCBXZWJDb3JlOjpUcmFj
ZUV2ZW50OjprTm9FdmVudElkLCBcCisgICAgICAgICAgICBUUkFDRV9FVkVOVF9GTEFHX05PTkUs
ICMjX19WQV9BUkdTX18pOyBcCisgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQocHJvZmlsZVNj
b3BlKS5Jbml0aWFsaXplKCBcCisgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0
YXRpYyksIG5hbWUsIFwKKyAgICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoYmVnaW5fZXZl
bnRfaWQpLCB0aHJlc2hvbGQpOyBcCisgICAgfQorI2VuZGlmCisKKy8vIEltcGxlbWVudGF0aW9u
IGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeSBhbmQgYWRk
CisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgZW5hYmxlZC4KKyNpZiBDT01QSUxFUihNU1ZD
N19PUl9MT1dFUikKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoaWdu
b3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9X
SVRIX0lEKHBoYXNlLCBjYXRlZ29yeSwgbmFtZSwgaWQsIGZsYWdzLCBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIGlmICgqSU5URVJOQUxUUkFD
RUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6QWRk
VHJhY2VFdmVudCggXAorICAgICAgICAgIHBoYXNlLCBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0
c3RhdGljKSwgXAorICAgICAgICAgIG5hbWUsIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlSUQo
aWQpLmRhdGEoKSwgZmxhZ3MsIFwKKyAgICAgICAgICAjI19fVkFfQVJHU19fKTsgXAorICAgIH0K
KyNlbmRpZgorCisvLyBOb3RlcyByZWdhcmRpbmcgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uczoK
Ky8vIE5ldyB2YWx1ZXMgY2FuIGJlIGFkZGVkIGFuZCBwcm9wYWdhdGVkIHRvIHRoaXJkIHBhcnR5
IGxpYnJhcmllcywgYnV0IGV4aXN0aW5nCisvLyBkZWZpbml0aW9ucyBtdXN0IG5ldmVyIGJlIGNo
YW5nZWQsIGJlY2F1c2UgdGhpcmQgcGFydHkgbGlicmFyaWVzIG1heSB1c2Ugb2xkCisvLyBkZWZp
bml0aW9ucy4KKworLy8gUGhhc2UgaW5kaWNhdGVzIHRoZSBuYXR1cmUgb2YgYW4gZXZlbnQgZW50
cnkuIEUuZy4gcGFydCBvZiBhIGJlZ2luL2VuZCBwYWlyLgorI2RlZmluZSBUUkFDRV9FVkVOVF9Q
SEFTRV9CRUdJTiAgICAoJ0InKQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9FTkQgICAgICAo
J0UnKQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5UICAoJ0knKQorI2RlZmluZSBU
UkFDRV9FVkVOVF9QSEFTRV9TVEFSVCAgICAoJ1MnKQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFT
RV9GSU5JU0ggICAoJ0YnKQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9NRVRBREFUQSAoJ00n
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSICAoJ0MnKQorCisvLyBGbGFncyBm
b3IgY2hhbmdpbmcgdGhlIGJlaGF2aW9yIG9mIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZF
TlQuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSAgICAgICAgKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KDApKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX0NPUFkgICAgICAgIChz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxIDw8IDApKQorI2RlZmluZSBUUkFDRV9FVkVOVF9G
TEFHX0hBU19JRCAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxIDw8IDEpKQorCisv
LyBUeXBlIHZhbHVlcyBmb3IgaWRlbnRpZnlpbmcgdHlwZXMgaW4gdGhlIFRyYWNlVmFsdWUgdW5p
b24uCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfQk9PTCAgICAgICAgIChzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPigxKSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UICAgICAgICAg
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDIpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBF
X0lOVCAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMykpCisjZGVmaW5lIFRS
QUNFX1ZBTFVFX1RZUEVfRE9VQkxFICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig0
KSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9QT0lOVEVSICAgICAgKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KDUpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX1NUUklORyAgICAgICAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNikpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVf
Q09QWV9TVFJJTkcgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig3KSkKIAotLy8gSXNzdWVz
IFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luIGFuZCB0cmFjZUV2ZW50RW5kIGNhbGxz
IGZvciB0aGUgZW5jbG9zaW5nIHNjb3BlCi0jZGVmaW5lIFRSQUNFX0VWRU5UKG5hbWUsIGlkLCBl
eHRyYSkgV2ViQ29yZTo6aW50ZXJuYWw6OlNjb3BlVHJhY2VyIFRSQUNFX0VWRU5UX01BS0VfVU5J
UVVFX0lERU5USUZJRVIoX190cmFjZUV2ZW50U2NvcGUpKG5hbWUsIGlkLCBleHRyYSk7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotbmFtZXNwYWNlIGludGVybmFsIHsKK25hbWVzcGFjZSBUcmFj
ZUV2ZW50IHsKIAotLy8gVXNlZCBieSBUUkFDRV9FVkVOVCBtYWNyby4gRG8gbm90IHVzZSBkaXJl
Y3RseS4KLWNsYXNzIFNjb3BlVHJhY2VyIHsKKy8vIFNwZWNpZnkgdGhlc2UgdmFsdWVzIHdoZW4g
dGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgb2YgQWRkVHJhY2VFdmVudCBpcyBub3QKKy8vIHVz
ZWQuCitjb25zdCBpbnQga1plcm9OdW1BcmdzID0gMDsKK2NvbnN0IGludCBrTm9UaHJlc2hob2xk
QmVnaW5JZCA9IC0xOworY29uc3QgbG9uZyBsb25nIGtOb1RocmVzaG9sZFZhbHVlID0gMDsKK2Nv
bnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBrTm9FdmVudElkID0gMDsKKworLy8gVHJhY2VJRCBlbmNh
cHN1bGF0ZXMgYW4gSUQgdGhhdCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIgb3IgcG9pbnRlci4g
UG9pbnRlcnMKKy8vIGFyZSBtYW5nbGVkIHdpdGggdGhlIFByb2Nlc3MgSUQgc28gdGhhdCB0aGV5
IGFyZSB1bmxpa2VseSB0byBjb2xsaWRlIHdoZW4gdGhlCisvLyBzYW1lIHBvaW50ZXIgaXMgdXNl
ZCBvbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorY2xhc3MgVHJhY2VJRCB7CiBwdWJsaWM6Ci0gICAg
U2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIqIGV4dHJhKTsK
LSAgICB+U2NvcGVUcmFjZXIoKTsKKyAgICBleHBsaWNpdCBUcmFjZUlEKHZvaWQqIHJocykgOgor
ICAgICAgICBtX2RhdGEoVFJBQ0VfRVZFTlRfQVBJX0dFVF9JRF9GUk9NX1BPSU5URVIocmhzKSkg
eyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBsb25nIGxvbmcgcmhzKSA6IG1fZGF0
YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgbG9uZyByaHMpIDogbV9k
YXRhKHJocykgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBpbnQgcmhzKSA6IG1f
ZGF0YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgc2hvcnQgcmhzKSA6
IG1fZGF0YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgY2hhciByaHMp
IDogbV9kYXRhKHJocykgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChsb25nIGxvbmcgcmhzKSA6
CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHJocykpIHsg
fQorICAgIGV4cGxpY2l0IFRyYWNlSUQobG9uZyByaHMpIDogbV9kYXRhKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmcgbG9uZz4ocmhzKSkgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChpbnQgcmhz
KSA6IG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHJocykpIHsgfQorICAg
IGV4cGxpY2l0IFRyYWNlSUQoc2hvcnQgcmhzKSA6IG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KHJocykpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQoc2lnbmVkIGNoYXIg
cmhzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHJo
cykpIHsgfQorCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGE7IH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiBtX25hbWU7Ci0gICAgdm9pZCog
bV9pZDsKLSAgICBPd25BcnJheVB0cjxjaGFyPiBtX2V4dHJhOworICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBtX2RhdGE7CiB9OwogCi1pbmxpbmUgU2NvcGVUcmFjZXI6OlNjb3BlVHJhY2VyKGNvbnN0
IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkKLSAgICA6IG1fbmFtZShu
YW1lKQotICAgICwgbV9pZChpZCkKLXsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRC
ZWdpbihuYW1lLCBpZCwgZXh0cmEpOyBcCi0gICAgaWYgKGV4dHJhICYmIFBsYXRmb3JtU3VwcG9y
dDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgpKQotICAgICAgICBtX2V4dHJhID0gYWRvcHRBcnJheVB0
cihzdHJkdXAoZXh0cmEpKTsKKy8vIFNpbXBsZSB1bmlvbiB0byBzdG9yZSB2YXJpb3VzIHR5cGVz
IGFzIHVuc2lnbmVkIGxvbmcgbG9uZy4KK3VuaW9uIFRyYWNlVmFsdWVVbmlvbiB7CisgICAgYm9v
bCBtX2Jvb2w7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fdWludDsKKyAgICBsb25nIGxvbmcg
bV9pbnQ7CisgICAgZG91YmxlIG1fZG91YmxlOworICAgIGNvbnN0IHZvaWQqIG1fcG9pbnRlcjsK
KyAgICBjb25zdCBjaGFyKiBtX3N0cmluZzsKK307CisKKy8vIFNpbXBsZSBjb250YWluZXIgZm9y
IGNvbnN0IGNoYXIqIHRoYXQgc2hvdWxkIGJlIGNvcGllZCBpbnN0ZWFkIG9mIHJldGFpbmVkLgor
Y2xhc3MgVHJhY2VTdHJpbmdXaXRoQ29weSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVHJhY2VT
dHJpbmdXaXRoQ29weShjb25zdCBjaGFyKiBzdHIpIDogbV9zdHIoc3RyKSB7IH0KKyAgICBvcGVy
YXRvciBjb25zdCBjaGFyKiAoKSBjb25zdCB7IHJldHVybiBtX3N0cjsgfQorcHJpdmF0ZToKKyAg
ICBjb25zdCBjaGFyKiBtX3N0cjsKK307CisKKy8vIERlZmluZSBTZXRUcmFjZVZhbHVlIGZvciBl
YWNoIGFsbG93ZWQgdHlwZS4gSXQgc3RvcmVzIHRoZSB0eXBlIGFuZAorLy8gdmFsdWUgaW4gdGhl
IHJldHVybiBhcmd1bWVudHMuIFRoaXMgYWxsb3dzIHRoaXMgQVBJIHRvIGF2b2lkIGRlY2xhcmlu
ZyBhbnkKKy8vIHN0cnVjdHVyZXMgc28gdGhhdCBpdCBpcyBwb3J0YWJsZSB0byB0aGlyZF9wYXJ0
eSBsaWJyYXJpZXMuCisjZGVmaW5lIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGFj
dHVhbF90eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
aW9uX21lbWJlciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZV90eXBlX2lkKSBcCisgICAgc3RhdGljIGlubGluZSB2b2lkIFNldFRyYWNlVmFsdWUoYWN0
dWFsX3R5cGUgYXJnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciogdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyogdmFsdWUpIHsgXAorICAgICAgICBUcmFjZVZhbHVlVW5pb24g
dHlwZVZhbHVlOyBcCisgICAgICAgIHR5cGVWYWx1ZS51bmlvbl9tZW1iZXIgPSBhcmc7IFwKKyAg
ICAgICAgKnR5cGUgPSB2YWx1ZV90eXBlX2lkOyBcCisgICAgICAgICp2YWx1ZSA9IHR5cGVWYWx1
ZS5tX3VpbnQ7IFwKKyAgICB9CisvLyBTaW1wbGVyIGZvcm0gZm9yIGludCB0eXBlcyB0aGF0IGNh
biBiZSBzYWZlbHkgY2FzdGVkLgorI2RlZmluZSBJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9W
QUxVRV9JTlQoYWN0dWFsX3R5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlX3R5cGVfaWQpIFwKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgU2V0
VHJhY2VWYWx1ZShhY3R1YWxfdHlwZSBhcmcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2YWx1ZSkgeyBcCisgICAgICAgICp0
eXBlID0gdmFsdWVfdHlwZV9pZDsgXAorICAgICAgICAqdmFsdWUgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGFyZyk7IFwKKyAgICB9CisKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RS
QUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBsb25nIGxvbmcsIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCkK
K0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBpbnQsIFRSQUNF
X1ZBTFVFX1RZUEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1
bnNpZ25lZCBzaG9ydCwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVDTEFSRV9T
RVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGNoYXIsIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCkK
K0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChsb25nIGxvbmcsIFRSQUNFX1ZB
TFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKGludCwg
VFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9J
TlQoc2hvcnQsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJB
Q0VfVkFMVUVfSU5UKHNpZ25lZCBjaGFyLCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkKK0lOVEVSTkFM
X0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGJvb2wsIG1fYm9vbCwgVFJBQ0VfVkFMVUVfVFlQRV9C
T09MKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoZG91YmxlLCBtX2RvdWJsZSwg
VFJBQ0VfVkFMVUVfVFlQRV9ET1VCTEUpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxV
RShjb25zdCB2b2lkKiwgbV9wb2ludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFJBQ0VfVkFMVUVfVFlQRV9QT0lOVEVSKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0Vf
VkFMVUUoY29uc3QgY2hhciosIG1fc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFJBQ0VfVkFMVUVfVFlQRV9TVFJJTkcpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFD
RV9WQUxVRShjb25zdCBUcmFjZVN0cmluZ1dpdGhDb3B5JiwgbV9zdHJpbmcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9UWVBFX0NPUFlfU1RSSU5HKQorCisj
dW5kZWYgSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUKKyN1bmRlZiBJTlRFUk5BTF9E
RUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQKKworLy8gV1RGOjpTdHJpbmcgdmVyc2lvbiBvZiBT
ZXRUcmFjZVZhbHVlIHNvIHRoYXQgdHJhY2UgYXJndW1lbnRzIGNhbiBiZSBzdHJpbmdzLgorc3Rh
dGljIGlubGluZSB2b2lkIFNldFRyYWNlVmFsdWUoY29uc3QgV1RGOjpDU3RyaW5nJiBhcmcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2YWx1ZSkg
eworICAgIFRyYWNlVmFsdWVVbmlvbiB0eXBlVmFsdWU7CisgICAgdHlwZVZhbHVlLm1fc3RyaW5n
ID0gYXJnLmRhdGEoKTsKKyAgICAqdHlwZSA9IFRSQUNFX1ZBTFVFX1RZUEVfQ09QWV9TVFJJTkc7
CisgICAgKnZhbHVlID0gdHlwZVZhbHVlLm1fdWludDsKK30KKworLy8gVGhlc2UgQWRkVHJhY2VF
dmVudCB0ZW1wbGF0ZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaGVyZSBpbnN0ZWFkIG9mIGluIHRo
ZQorLy8gbWFjcm8sIGJlY2F1c2UgdGhlIGFyZ192YWx1ZXMgY291bGQgYmUgdGVtcG9yYXJ5IG9i
amVjdHMsIHN1Y2ggYXMKKy8vIHN0ZDo6c3RyaW5nLiBJbiBvcmRlciB0byBzdG9yZSBwb2ludGVy
cyB0byB0aGUgaW50ZXJuYWwgY19zdHIgYW5kIHBhc3MKKy8vIHRocm91Z2ggdG8gdGhlIHRyYWNp
bmcgQVBJLCB0aGUgYXJnX3ZhbHVlcyBtdXN0IGxpdmUgdGhyb3VnaG91dAorLy8gdGhlc2UgcHJv
Y2VkdXJlcy4KKworc3RhdGljIGlubGluZSBpbnQgQWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRl
Z29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFn
cykgeworICAgIHJldHVybiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAg
ICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwKKyAgICAgICAga1plcm9OdW1Bcmdz
LCAwLCAwLCAwLAorICAgICAgICBrTm9UaHJlc2hob2xkQmVnaW5JZCwga05vVGhyZXNob2xkVmFs
dWUsIGZsYWdzKTsKIH0KIAotaW5saW5lIFNjb3BlVHJhY2VyOjp+U2NvcGVUcmFjZXIoKQotewot
ICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVuZChtX25hbWUsIG1faWQsIG1fZXh0cmEu
Z2V0KCkpOwordGVtcGxhdGU8Y2xhc3MgQVJHMV9UWVBFPgorc3RhdGljIGlubGluZSBpbnQgQWRk
VHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogYXJnMU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEFSRzFfVFlQRSYgYXJnMVZhbCkgeworICAgIGNvbnN0IGludCBudW1BcmdzID0gMTsK
KyAgICB1bnNpZ25lZCBjaGFyIGFyZ1R5cGVzWzFdOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBh
cmdWYWx1ZXNbMV07CisgICAgU2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlwZXNbMF0sICZh
cmdWYWx1ZXNbMF0pOworICAgIHJldHVybiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5U
KAorICAgICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwKKyAgICAgICAgbnVt
QXJncywgJmFyZzFOYW1lLCBhcmdUeXBlcywgYXJnVmFsdWVzLAorICAgICAgICBrTm9UaHJlc2ho
b2xkQmVnaW5JZCwga05vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgaW50ZXJuYWwKK3RlbXBsYXRlPGNsYXNzIEFSRzFfVFlQRSwgY2xhc3MgQVJHMl9UWVBFPgor
c3RhdGljIGlubGluZSBpbnQgQWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYXJnMU5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFSRzFfVFlQRSYgYXJnMVZhbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYXJnMk5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFSRzJfVFlQRSYgYXJnMlZhbCkgeworICAgIGNv
bnN0IGludCBudW1BcmdzID0gMjsKKyAgICBjb25zdCBjaGFyKiBhcmdOYW1lc1syXSA9IHsgYXJn
MU5hbWUsIGFyZzJOYW1lIH07CisgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1syXTsKKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgYXJnVmFsdWVzWzJdOworICAgIFNldFRyYWNlVmFsdWUoYXJnMVZh
bCwgJmFyZ1R5cGVzWzBdLCAmYXJnVmFsdWVzWzBdKTsKKyAgICBTZXRUcmFjZVZhbHVlKGFyZzJW
YWwsICZhcmdUeXBlc1sxXSwgJmFyZ1ZhbHVlc1sxXSk7CisgICAgcmV0dXJuIFRSQUNFX0VWRU5U
X0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQsIG5h
bWUsIGlkLAorICAgICAgICBudW1BcmdzLCBhcmdOYW1lcywgYXJnVHlwZXMsIGFyZ1ZhbHVlcywK
KyAgICAgICAga05vVGhyZXNoaG9sZEJlZ2luSWQsIGtOb1RocmVzaG9sZFZhbHVlLCBmbGFncyk7
Cit9CisKKy8vIFVzZWQgYnkgVFJBQ0VfRVZFTlR4IG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5
LgorY2xhc3MgVHJhY2VFbmRPblNjb3BlQ2xvc2UgeworcHVibGljOgorICAgIC8vIE5vdGU6IG1l
bWJlcnMgb2YgbV9kYXRhIGludGVudGlvbmFsbHkgbGVmdCB1bmluaXRpYWxpemVkLiBTZWUgSW5p
dGlhbGl6ZS4KKyAgICBUcmFjZUVuZE9uU2NvcGVDbG9zZSgpIDogbV9wZGF0YSgwKSB7IH0KKyAg
ICB+VHJhY2VFbmRPblNjb3BlQ2xvc2UoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGRhdGEpCisg
ICAgICAgICAgICBBZGRFdmVudElmRW5hYmxlZCgpOworICAgIH0KKworICAgIHZvaWQgSW5pdGlh
bGl6ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIG5hbWUpCisgICAgeworICAgICAgICBtX2RhdGEuY2F0ZWdvcnlF
bmFibGVkID0gY2F0ZWdvcnlFbmFibGVkOworICAgICAgICBtX2RhdGEubmFtZSA9IG5hbWU7Cisg
ICAgICAgIG1fcGRhdGEgPSAmbV9kYXRhOworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBBZGQg
dGhlIGVuZCBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgc3RpbGwgZW5hYmxlZC4KKyAgICB2b2lk
IEFkZEV2ZW50SWZFbmFibGVkKCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkgY2FsbGVkIHdoZW4g
bV9wZGF0YSBpcyBub24tbnVsbC4KKyAgICAgICAgaWYgKCptX3BkYXRhLT5jYXRlZ29yeUVuYWJs
ZWQpIHsKKyAgICAgICAgICAgIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAg
ICAgICAgICAgICAgVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELAorICAgICAgICAgICAgICAgIG1fcGRh
dGEtPmNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICBtX3BkYXRhLT5uYW1lLCBrTm9F
dmVudElkLAorICAgICAgICAgICAgICAgIGtaZXJvTnVtQXJncywgMCwgMCwgMCwKKyAgICAgICAg
ICAgICAgICBrTm9UaHJlc2hob2xkQmVnaW5JZCwga05vVGhyZXNob2xkVmFsdWUsIFRSQUNFX0VW
RU5UX0ZMQUdfTk9ORSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGlzIERhdGEgc3Ry
dWN0IHdvcmthcm91bmQgaXMgdG8gYXZvaWQgaW5pdGlhbGl6aW5nIGFsbCB0aGUgbWVtYmVycwor
ICAgIC8vIGluIERhdGEgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGlzIG9iamVjdCwgc2luY2Ug
dGhpcyBvYmplY3QgaXMgYWx3YXlzCisgICAgLy8gY29uc3RydWN0ZWQsIGV2ZW4gd2hlbiB0cmFj
aW5nIGlzIGRpc2FibGVkLiBJZiB0aGUgbWVtYmVycyBvZiBEYXRhIHdlcmUKKyAgICAvLyBtZW1i
ZXJzIG9mIHRoaXMgY2xhc3MgaW5zdGVhZCwgY29tcGlsZXIgd2FybmluZ3Mgb2NjdXIgYWJvdXQg
cG90ZW50aWFsCisgICAgLy8gdW5pbml0aWFsaXplZCBhY2Nlc3Nlcy4KKyAgICBzdHJ1Y3QgRGF0
YSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZDsKKyAgICAg
ICAgY29uc3QgY2hhciogbmFtZTsKKyAgICB9OworICAgIERhdGEqIG1fcGRhdGE7CisgICAgRGF0
YSBtX2RhdGE7Cit9OworCisvLyBVc2VkIGJ5IFRSQUNFX0VWRU5UeCBtYWNyby4gRG8gbm90IHVz
ZSBkaXJlY3RseS4KK2NsYXNzIFRyYWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xkIHsKK3B1Ymxp
YzoKKyAgICAvLyBOb3RlOiBtZW1iZXJzIG9mIG1fZGF0YSBpbnRlbnRpb25hbGx5IGxlZnQgdW5p
bml0aWFsaXplZC4gU2VlIEluaXRpYWxpemUuCisgICAgVHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJl
c2hvbGQoKSA6IG1fcGRhdGEoMCkgeyB9CisgICAgflRyYWNlRW5kT25TY29wZUNsb3NlVGhyZXNo
b2xkKCkKKyAgICB7CisgICAgICAgIGlmIChtX3BkYXRhKQorICAgICAgICAgICAgQWRkRXZlbnRJ
ZkVuYWJsZWQoKTsKKyAgICB9CisKKyAgICAvLyBDYWxsZWQgYnkgbWFjcm9zIG9ubHkgd2hlbiB0
cmFjaW5nIGlzIGVuYWJsZWQgYXQgdGhlIHBvaW50IHdoZW4gdGhlIGJlZ2luCisgICAgLy8gZXZl
bnQgaXMgYWRkZWQuCisgICAgdm9pZCBJbml0aWFsaXplKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNh
dGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgaW50IHRocmVzaG9sZEJlZ2luSUQsCisgICAgICAgICAgICAgICAg
ICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQpCisgICAgeworICAgICAgICBtX2RhdGEuY2F0ZWdvcnlF
bmFibGVkID0gY2F0ZWdvcnlFbmFibGVkOworICAgICAgICBtX2RhdGEubmFtZSA9IG5hbWU7Cisg
ICAgICAgIG1fZGF0YS50aHJlc2hvbGRCZWdpbklEID0gdGhyZXNob2xkQmVnaW5JRDsKKyAgICAg
ICAgbV9kYXRhLnRocmVzaG9sZCA9IHRocmVzaG9sZDsKKyAgICAgICAgbV9wZGF0YSA9ICZtX2Rh
dGE7CisgICAgfQorCitwcml2YXRlOgorICAgIC8vIEFkZCB0aGUgZW5kIGV2ZW50IGlmIHRoZSBj
YXRlZ29yeSBpcyBzdGlsbCBlbmFibGVkLgorICAgIHZvaWQgQWRkRXZlbnRJZkVuYWJsZWQoKQor
ICAgIHsKKyAgICAgICAgLy8gT25seSBjYWxsZWQgd2hlbiBtX3BkYXRhIGlzIG5vbi1udWxsLgor
ICAgICAgICBpZiAoKm1fcGRhdGEtPmNhdGVnb3J5RW5hYmxlZCkgeworICAgICAgICAgICAgVFJB
Q0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgICAgICAgICBUUkFDRV9FVkVO
VF9QSEFTRV9FTkQsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+Y2F0ZWdvcnlFbmFibGVkLAor
ICAgICAgICAgICAgICAgIG1fcGRhdGEtPm5hbWUsIGtOb0V2ZW50SWQsCisgICAgICAgICAgICAg
ICAga1plcm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgIG1fcGRhdGEtPnRocmVz
aG9sZEJlZ2luSUQsIG1fcGRhdGEtPnRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICBUUkFDRV9F
VkVOVF9GTEFHX05PTkUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhpcyBEYXRhIHN0
cnVjdCB3b3JrYXJvdW5kIGlzIHRvIGF2b2lkIGluaXRpYWxpemluZyBhbGwgdGhlIG1lbWJlcnMK
KyAgICAvLyBpbiBEYXRhIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgdGhpcyBvYmplY3QsIHNpbmNl
IHRoaXMgb2JqZWN0IGlzIGFsd2F5cworICAgIC8vIGNvbnN0cnVjdGVkLCBldmVuIHdoZW4gdHJh
Y2luZyBpcyBkaXNhYmxlZC4gSWYgdGhlIG1lbWJlcnMgb2YgRGF0YSB3ZXJlCisgICAgLy8gbWVt
YmVycyBvZiB0aGlzIGNsYXNzIGluc3RlYWQsIGNvbXBpbGVyIHdhcm5pbmdzIG9jY3VyIGFib3V0
IHBvdGVudGlhbAorICAgIC8vIHVuaW5pdGlhbGl6ZWQgYWNjZXNzZXMuCisgICAgc3RydWN0IERh
dGEgeworICAgICAgICBsb25nIGxvbmcgdGhyZXNob2xkOworICAgICAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAg
ICAgIGludCB0aHJlc2hvbGRCZWdpbklEOworICAgIH07CisgICAgRGF0YSogbV9wZGF0YTsKKyAg
ICBEYXRhIG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFRyYWNlRXZlbnQKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCmluZGV4IDZjMGU3
NGYxMjk3MmM3ZjM3NDYzNDBhZmY2OWIzMTJkYzI1Y2ExZTkuLmMxYjE5MzUyNzg1Yjc2YmNiN2Vl
OTQwMTQ0YjU1MmFhYWE0MDNiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCkBAIC0y
NDMsNiArMjQzLDU1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdHJhY2VFdmVudEJlZ2lu
KGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNv
bnN0IGNoYXIqIGV4dHJhKSB7IH0KIAorICAgIC8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJs
ZWQgc3RhdGUgb2YgdGhlIGdpdmVuIHRyYWNlIGNhdGVnb3J5LiBPbmx5CisgICAgLy8gbG9uZy1s
aXZlZCBsaXRlcmFsIHN0cmluZ3Mgc2hvdWxkIGJlIGdpdmVuIGFzIHRoZSBjYXRlZ29yeSBuYW1l
LiBUaGUKKyAgICAvLyByZXR1cm5lZCBwb2ludGVyIGNhbiBiZSBoZWxkIHBlcm1hbmVudGx5IGlu
IGEgbG9jYWwgc3RhdGljIGZvciBleGFtcGxlLgorICAgIC8vIElmIHRoZSB1bnNpZ25lZCBjaGFy
IGlzIG5vbi16ZXJvLCB0cmFjaW5nIGlzIGVuYWJsZWQuIElmIHRyYWNpbmcgaXMKKyAgICAvLyBl
bmFibGVkLCBhZGRUcmFjZUV2ZW50IGNhbiBiZSBjYWxsZWQuIEl0J3MgT0sgaWYgdHJhY2luZyBp
cyBkaXNhYmxlZAorICAgIC8vIGJldHdlZW4gdGhlIGxvYWQgb2YgdGhlIHRyYWNpbmcgc3RhdGUg
YW5kIHRoZSBjYWxsIHRvIGFkZFRyYWNlRXZlbnQsCisgICAgLy8gYmVjYXVzZSB0aGlzIGZsYWcg
b25seSBwcm92aWRlcyBhbiBlYXJseSBvdXQgZm9yIGJlc3QgcGVyZm9ybWFuY2Ugd2hlbgorICAg
IC8vIHRyYWNpbmcgaXMgZGlzYWJsZWQuCisgICAgdmlydHVhbCBjb25zdCB1bnNpZ25lZCBjaGFy
KiBnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKSB7
IHJldHVybiAwOyB9CisgICAgLy8gQWRkIGEgdHJhY2UgZXZlbnQgdG8gdGhlIHBsYXRmb3JtIHRy
YWNpbmcgc3lzdGVtLgorICAgIC8vIFJldHVybnMgdGhyZXNob2xkQmVnaW5JZCBmb3IgdXNlIGlu
IGEgY29ycmVzcG9uZGluZyBlbmQgYWRkVHJhY2VFdmVudCBjYWxsLgorICAgIC8vIC0gcGhhc2Ug
c3BlY2lmaWVzIHRoZSB0eXBlIG9mIGV2ZW50LCBzdWNoIGFzIGJlZ2luLCBlbmQsIGluc3RhbnQs
IGV0Yy4KKyAgICAvLyAtIGNhdGVnb3J5RW5hYmxlZCBpcyB0aGUgcG9pbnRlciByZXR1cm5lZCBi
eSBnZXRDYXRlZ29yeUVuYWJsZWQuCisgICAgLy8gLSBuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBl
dmVudC4KKyAgICAvLyAtIGlkIG9wdGlvbmFsbHkgYWxsb3dzIGV2ZW50cyBvZiB0aGUgc2FtZSBu
YW1lIHRvIGJlIGRpc3Rpbmd1aXNoZWQuCisgICAgLy8gLSBudW1BcmdzIHNwZWNpZmllcyB0aGUg
bnVtYmVyIG9mIGVsZW1lbnRzIGluIGFyZ05hbWVzLCBhcmdUeXBlcywgYW5kCisgICAgLy8gICBh
cmdWYWx1ZXMuCisgICAgLy8gLSBhcmdOYW1lcyBpcyB0aGUgYXJyYXkgb2YgYXJndW1lbnQgbmFt
ZXMuCisgICAgLy8gLSBhcmdUeXBlcyBpcyB0aGUgYXJyYXkgb2YgYXJndW1lbnQgdHlwZXM6IGJv
b2wsIHVuc2lnbmVkIGxvbmcgbG9uZywKKyAgICAvLyAgIGxvbmcgbG9uZywgZG91YmxlLCB2b2lk
KiwgY2hhciogKGxvbmctbGl2ZWQgbnVsbC10ZXJtaW5hdGVkIGNoYXIqIHN0cmluZyksCisgICAg
Ly8gICBjaGFyKiAodGVtcG9yYXJ5IG51bGwtdGVybWluYXRlZCBjaGFyKiBzdHJpbmcpLgorICAg
IC8vIC0gYXJnVmFsdWVzIGlzIHRoZSBhcnJheSBvZiBhcmd1bWVudCB2YWx1ZXMuCisgICAgLy8g
LSB0aHJlc2hvbGRCZWdpbklkIG9wdGlvbmFsbHkgc3BlY2lmaWVzIHRoZSB2YWx1ZSByZXR1cm5l
ZCBieSBhIHByZXZpb3VzCisgICAgLy8gICBjYWxsIHRvIGFkZFRyYWNlRXZlbnQuCisgICAgLy8g
LSB0aHJlc2hvbGQgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBtaWNyb3NlY29uZHMg
dGhhdCBtdXN0IGhhdmUKKyAgICAvLyAgIHBhc3NlZCBzaW5jZSB0aGUgZXZlbnQgaWRlbnRpZmll
ZCBieSB0aHJlc2hvbGRCZWdpbklkIGZvciBib3RoIGV2ZW50cyB0bworICAgIC8vICAgYmUgcmVj
b3JkZWQuCisgICAgLy8gLSBmbGFncyBjYW4gYmUgMCBvciBvbmUgb3IgbW9yZSBvZiB0aGUgZm9s
bG93aW5nLCBPUmVkIHRvZ2V0aGVyOgorICAgIC8vICAgLSB0cmVhdCBhbGwgc3RyaW5ncyBhcyB0
ZW1wb3Jhcnkgc28gdGhhdCB0aGV5IHdpbGwgYmUgY29waWVkIGJ5CisgICAgLy8gICAgIGFkZFRy
YWNlRXZlbnQsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBjYXRlZ29yeSBuYW1lLgorICAgIC8vICAg
LSB1c2UgdGhlIGlkIGFyZ3VtZW50IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBldmVudCBmb3Ig
bWF0Y2hpbmcKKyAgICAvLyAgICAgd2l0aCBvdGhlciBldmVudHMgb2YgdGhlIHNhbWUgbmFtZS4K
KyAgICB2aXJ0dWFsIGludCBhZGRUcmFjZUV2ZW50KAorICAgICAgICBjaGFyIHBoYXNlLAorICAg
ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgIGNvbnN0
IGNoYXIqIG5hbWUsCisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgaW50
IG51bUFyZ3MsCisgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywKKyAgICAgICAgY29uc3Qg
dW5zaWduZWQgY2hhciogYXJnVHlwZXMsCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9u
ZyogYXJnVmFsdWVzLAorICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JZCwKKyAgICAgICAgbG9u
ZyBsb25nIHRocmVzaG9sZCwKKyAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncykgeyByZXR1cm4g
LTE7IH0KKyAgICAvLyBNYW5nbGUgcG9pbnRlciB3aXRoIGEgaGFzaCBzbyB0aGF0IGlmIGl0IG9j
Y3VycyBvbiBtb3JlIHRoYW4gb25lIHByb2Nlc3MsCisgICAgLy8gaXQgd2lsbCBub3QgY29sbGlk
ZSBpbiB0aGUgdHJhY2UgZGF0YS4gUGFzcyB0aGUgcmV0dXJuZWQgdmFsdWUgdG8KKyAgICAvLyBh
ZGRUcmFjZUV2ZW50IGFzIHRoZSBpZCBwYXJhbWV0ZXIuCisgICAgdmlydHVhbCB1bnNpZ25lZCBs
b25nIGxvbmcgbWFuZ2xlUG9pbnRlckZvclRyYWNpbmcodm9pZCogcG9pbnRlcikgeyByZXR1cm4g
MHU7IH0KKwogICAgIC8vIENhbGxiYWNrcyBmb3IgcmVwb3J0aW5nIGhpc3RvZ3JhbSBkYXRhLgog
ICAgIC8vIEN1c3RvbUNvdW50cyBoaXN0b2dyYW0gaGFzIGV4cG9uZW50aWFsIGJ1Y2tldCBzaXpl
cywgc28gdGhhdCBtaW49MSwgbWF4PTEwMDAwMDAsIGJ1Y2tldENvdW50PTUwIHdvdWxkIGRvLgog
ICAgIHZpcnR1YWwgdm9pZCBoaXN0b2dyYW1DdXN0b21Db3VudHMoY29uc3QgY2hhciogbmFtZSwg
aW50IHNhbXBsZSwgaW50IG1pbiwgaW50IG1heCwgaW50IGJ1Y2tldENvdW50KSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCmluZGV4IDI0Njgx
ZWM5NjJkNzRlYmZlYjVhYjMzNTVjMTkwM2FmZDllOWVjZDYuLmRiMGJlNmQ4NDM4ZGRkMzRmMmYw
ZGU1MzI1MjQzMDlmNDE4YTI3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
UGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtOTYxLDYgKzk2MSwyOSBAQCB2b2lkIFBsYXRmb3JtU3Vw
cG9ydDo6dHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hh
ciogZXh0cgogewogICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT50cmFjZUV2ZW50RW5kKG5h
bWUsIGlkLCBleHRyYSk7CiB9Citjb25zdCB1bnNpZ25lZCBjaGFyKiBQbGF0Zm9ybVN1cHBvcnQ6
OmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhjb25zdCBjaGFyKiBjYXRlZ29yeU5hbWUpCit7
CisgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5nZXRUcmFjZUNhdGVnb3J5RW5h
YmxlZEZsYWcoY2F0ZWdvcnlOYW1lKTsKK30KK2ludCBQbGF0Zm9ybVN1cHBvcnQ6OmFkZFRyYWNl
RXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBudW1BcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiogYXJnTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFyZ1R5cGVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcqIGFyZ1ZhbHVlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRocmVzaG9sZEJlZ2luSWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpCit7
CisgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5hZGRUcmFjZUV2ZW50KAorICAg
ICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwgbnVtQXJncywgYXJnTmFtZXMs
IGFyZ1R5cGVzLCBhcmdWYWx1ZXMsICB0aHJlc2hvbGRCZWdpbklkLCB0aHJlc2hvbGQsIGZsYWdz
KTsKK30KK3Vuc2lnbmVkIGxvbmcgbG9uZyBtYW5nbGVQb2ludGVyRm9yVHJhY2luZyh2b2lkKiBw
b2ludGVyKQoreworICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+bWFuZ2xlUG9p
bnRlckZvclRyYWNpbmcocG9pbnRlcik7Cit9CiAKIC8vIFZpc2l0ZWQgTGlua3MgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124007</attachid>
            <date>2012-01-25 14:05:59 -0800</date>
            <delta_ts>2012-01-25 15:04:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120125140558.patch</filename>
            <type>text/plain</type>
            <size>48074</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYyZDI0OWRkNjFhMTNj
NzAyZTcwODZmZWIxMTAzNWI1Y2ZkMjUwNC4uMzQ3YWVmOGE1MDQyMTEzYWIwOWQzNzM5ZWRjNzc4
OWRiYWQyYzhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAxLTI0ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFj
ZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUlEOjpUcmFjZUlE
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlSUQ6OmRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VTdHJpbmdXaXRoQ29weTo6VHJhY2VTdHJpbmdX
aXRoQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZVN0cmluZ1dpdGhD
b3B5OjpvcGVyYXRvciBjb25zdCBjaGFyKiApOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVu
dDo6U2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpBZGRUcmFj
ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNs
b3NlOjpUcmFjZUVuZE9uU2NvcGVDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50
OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5kT25TY29wZUNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpJbml0aWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpBZGRF
dmVudElmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9u
U2NvcGVDbG9zZVRocmVzaG9sZDo6VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6
On5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6SW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6
QWRkRXZlbnRJZkVuYWJsZWQpOgorCiAyMDEyLTAxLTI0ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9p
c2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnNwZWN0b3IvZGVi
dWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwgc3RhcnRlZCB0byBmYWlsIGFmdGVyIHIxMDU2NDIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWEyZTQzYWZkNTQwNWZhNjQ3MWEwYmRhN2Ri
ZDc0Mzk2MWI3MzZiMC4uMGRlNDM3NzViZDljMDJhY2UxZWVhOGNhM2FmZmNhYjcyNDMzODI2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wMS0yNCAg
Sm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgorCisgICAgICAgIFtDaHJvbWl1bV0gQWRk
IGNocm9taXVtLXN0eWxlIHRyYWNpbmcgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY4ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvZGUgZW5hYmxlcyBXZWJLaXQgdHJhY2UgZXZl
bnRzIHRvIHBhc3MgdGhyb3VnaCBtb3JlIGRhdGEgdG8gdGhlCisgICAgICAgIGNocm9taXVtIHBs
YXRmb3JtIHRyYWNpbmcgQVBJIGFuZCBnZW5lcmFsbHkgdG8gdXNlIHRoZSBmdWxsIHRyYWNpbmcK
KyAgICAgICAgQVBJIHByb3ZpZGVkIGJ5IGNocm9taXVtLgorCisgICAgICAgICogcHVibGljL3Bs
YXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQ6OmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6bWFuZ2xlUG9pbnRlckZvclRyYWNpbmcpOgor
ICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1TdXBwb3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Om1hbmdsZVBvaW50ZXJGb3JUcmFjaW5nKToKKwogMjAxMi0wMS0yNCAgVmluY2VudCBTY2hlaWIg
IDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gQWRkIFdlYktpdCBB
UEkgZm9yIFBvaW50ZXIgTG9jawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBjOGRlZDZlMjZiYTc4NGM2ZTE2Mzc0MWQ2NjI4
ZTg1OTM5YzM2YTZlLi5kOWVkYjVkMDliZGIzMGMwMGE2M2IyNjhhZDYxNWJiYzg4YWIyYjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBv
cnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBv
cnQuaApAQCAtNDE5LDYgKzQxOSwxOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNUcmFj
ZUV2ZW50RW5hYmxlZCgpOwogICAgIHN0YXRpYyB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBj
aGFyKiBuYW1lLCB2b2lkKiwgY29uc3QgY2hhciogZXh0cmEpOwogICAgIHN0YXRpYyB2b2lkIHRy
YWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIqIGV4dHJhKTsK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciogZ2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRG
bGFnKGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZSk7CisgICAgc3RhdGljIGludCBhZGRUcmFjZUV2
ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZEZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFy
Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnVHlw
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9u
ZyogYXJnVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xk
QmVnaW5JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVzaG9s
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncyk7Cisg
ICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBtYW5nbGVQb2ludGVyRm9yVHJhY2luZyh2b2lk
KiBwb2ludGVyKTsKIAogICAgIC8vIFZpc2l0ZWQgbGlua3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgc3RhdGljIExpbmtIYXNoIHZp
c2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciogdXJsLCB1bnNpZ25lZCBsZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCmluZGV4IDY1MmY1NDA3
Y2EzZjU3NTE0Y2ZhYTNkNmE4YmRkMDY4MjU3Yjk2OTkuLjkxNGVlNGIxMWE5ODcxNzQ3ZDdkNjkz
ZTMyNTA1NDQ1NzY2MWIyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1RyYWNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9UcmFjZUV2ZW50LmgKQEAgLTIyLDUzICsyMiw3ODYgQEAKICAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLworCisvLyBUcmFjZSBldmVudHMgYXJlIGZvciB0cmFja2luZyBhcHBs
aWNhdGlvbiBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXNhZ2UuCisvLyBNYWNyb3MgYXJlIHBy
b3ZpZGVkIHRvIHRyYWNrOgorLy8gICAgQmVnaW4gYW5kIGVuZCBvZiBmdW5jdGlvbiBjYWxscwor
Ly8gICAgQ291bnRlcnMKKy8vCisvLyBFdmVudHMgYXJlIGlzc3VlZCBhZ2FpbnN0IGNhdGVnb3Jp
ZXMuIFdoZXJlYXMgTE9HJ3MKKy8vIGNhdGVnb3JpZXMgYXJlIHN0YXRpY2FsbHkgZGVmaW5lZCwg
VFJBQ0UgY2F0ZWdvcmllcyBhcmUgY3JlYXRlZAorLy8gaW1wbGljaXRseSB3aXRoIGEgc3RyaW5n
LiBGb3IgZXhhbXBsZToKKy8vICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIk1ZX1NVQlNZU1RFTSIs
ICJTb21lSW1wb3J0YW50RXZlbnQiKQorLy8KKy8vIEV2ZW50cyBjYW4gYmUgSU5TVEFOVCwgb3Ig
Y2FuIGJlIHBhaXJzIG9mIEJFR0lOIGFuZCBFTkQgaW4gdGhlIHNhbWUgc2NvcGU6CisvLyAgIFRS
QUNFX0VWRU5UX0JFR0lOMCgiTVlfU1VCU1lTVEVNIiwgIlNvbWV0aGluZ0Nvc3RseSIpCisvLyAg
IGRvU29tZXRoaW5nQ29zdGx5KCkKKy8vICAgVFJBQ0VfRVZFTlRfRU5EMCgiTVlfU1VCU1lTVEVN
IiwgIlNvbWV0aGluZ0Nvc3RseSIpCisvLyBOb3RlOiBvdXIgdG9vbHMgY2FuJ3QgYWx3YXlzIGRl
dGVybWluZSB0aGUgY29ycmVjdCBCRUdJTi9FTkQgcGFpcnMgdW5sZXNzCisvLyB0aGVzZSBhcmUg
dXNlZCBpbiB0aGUgc2FtZSBzY29wZS4gVXNlIFNUQVJUL0ZJTklTSCBtYWNyb3MgaWYgeW91IG5l
ZWQgdGhlbQorLy8gdG8gYmUgaW4gc2VwYXJhdGUgc2NvcGVzLgorLy8KKy8vIEEgY29tbW9uIHVz
ZSBjYXNlIGlzIHRvIHRyYWNlIGVudGlyZSBmdW5jdGlvbiBzY29wZXMuIFRoaXMKKy8vIGlzc3Vl
cyBhIHRyYWNlIEJFR0lOIGFuZCBFTkQgYXV0b21hdGljYWxseToKKy8vICAgdm9pZCBkb1NvbWV0
aGluZ0Nvc3RseSgpIHsKKy8vICAgICBUUkFDRV9FVkVOVDAoIk1ZX1NVQlNZU1RFTSIsICJkb1Nv
bWV0aGluZ0Nvc3RseSIpOworLy8gICAgIC4uLgorLy8gICB9CisvLworLy8gQWRkaXRpb25hbCBw
YXJhbWV0ZXJzIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYW4gZXZlbnQ6CisvLyAgIHZvaWQgZG9T
b21ldGhpbmdDb3N0bHkyKGludCBob3dNdWNoKSB7CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJNWV9T
VUJTWVNURU0iLCAiZG9Tb21ldGhpbmdDb3N0bHkiLAorLy8gICAgICAgICAiaG93TXVjaCIsIGhv
d011Y2gpOworLy8gICAgIC4uLgorLy8gICB9CisvLworLy8gVGhlIHRyYWNlIHN5c3RlbSB3aWxs
IGF1dG9tYXRpY2FsbHkgYWRkIHRvIHRoaXMgaW5mb3JtYXRpb24gdGhlCisvLyBjdXJyZW50IHBy
b2Nlc3MgaWQsIHRocmVhZCBpZCwgYW5kIGEgdGltZXN0YW1wIGluIG1pY3Jvc2Vjb25kcy4KKy8v
CisvLyBUbyB0cmFjZSBhbiBhc3luY2hyb25vdXMgcHJvY2VkdXJlIHN1Y2ggYXMgYW4gSVBDIHNl
bmQvcmVjZWl2ZSwgdXNlIFNUQVJUIGFuZAorLy8gRklOSVNIOgorLy8gICBbc2luZ2xlIHRocmVh
ZGVkIHNlbmRlciBjb2RlXQorLy8gICAgIHN0YXRpYyBpbnQgc2VuZF9jb3VudCA9IDA7CisvLyAg
ICAgKytzZW5kX2NvdW50OworLy8gICAgIFRSQUNFX0VWRU5UX1NUQVJUMCgiaXBjIiwgIm1lc3Nh
Z2UiLCBzZW5kX2NvdW50KTsKKy8vICAgICBTZW5kKG5ldyBNeU1lc3NhZ2Uoc2VuZF9jb3VudCkp
OworLy8gICBbcmVjZWl2ZSBjb2RlXQorLy8gICAgIHZvaWQgT25NeU1lc3NhZ2Uoc2VuZF9jb3Vu
dCkgeworLy8gICAgICAgVFJBQ0VfRVZFTlRfRklOSVNIMCgiaXBjIiwgIm1lc3NhZ2UiLCBzZW5k
X2NvdW50KTsKKy8vICAgICB9CisvLyBUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIGEgdW5pcXVlIElE
IHRvIG1hdGNoIFNUQVJUL0ZJTklTSCBwYWlycy4KKy8vIFNUQVJUIGFuZCBGSU5JU0ggY2FuIG9j
Y3VyIG9uIGFueSB0aHJlYWQgb2YgYW55IHRyYWNlZCBwcm9jZXNzLiBQb2ludGVycyBjYW4KKy8v
IGJlIHVzZWQgZm9yIHRoZSBJRCBwYXJhbWV0ZXIsIGFuZCB0aGV5IHdpbGwgYmUgbWFuZ2xlZCBp
bnRlcm5hbGx5IHNvIHRoYXQKKy8vIHRoZSBzYW1lIHBvaW50ZXIgb24gdHdvIGRpZmZlcmVudCBw
cm9jZXNzZXMgd2lsbCBub3QgbWF0Y2guIEZvciBleGFtcGxlOgorLy8gICBjbGFzcyBNeVRyYWNl
ZENsYXNzIHsKKy8vICAgIHB1YmxpYzoKKy8vICAgICBNeVRyYWNlZENsYXNzKCkgeworLy8gICAg
ICAgVFJBQ0VfRVZFTlRfU1RBUlQwKCJjYXRlZ29yeSIsICJNeVRyYWNlZENsYXNzIiwgdGhpcyk7
CisvLyAgICAgfQorLy8gICAgIH5NeVRyYWNlZENsYXNzKCkgeworLy8gICAgICAgVFJBQ0VfRVZF
TlRfRklOSVNIMCgiY2F0ZWdvcnkiLCAiTXlUcmFjZWRDbGFzcyIsIHRoaXMpOworLy8gICAgIH0K
Ky8vICAgfQorLy8KKy8vIFRyYWNlIGV2ZW50IGFsc28gc3VwcG9ydHMgY291bnRlcnMsIHdoaWNo
IGlzIGEgd2F5IHRvIHRyYWNrIGEgcXVhbnRpdHkKKy8vIGFzIGl0IHZhcmllcyBvdmVyIHRpbWUu
IENvdW50ZXJzIGFyZSBjcmVhdGVkIHdpdGggdGhlIGZvbGxvd2luZyBtYWNybzoKKy8vICAgVFJB
Q0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIiLCBnX215Q291bnRlclZhbHVl
KTsKKy8vCisvLyBDb3VudGVycyBhcmUgcHJvY2Vzcy1zcGVjaWZpYy4gVGhlIG1hY3JvIGl0c2Vs
ZiBjYW4gYmUgaXNzdWVkIGZyb20gYW55CisvLyB0aHJlYWQsIGhvd2V2ZXIuCisvLworLy8gU29t
ZXRpbWVzLCB5b3Ugd2FudCB0byB0cmFjayB0d28gY291bnRlcnMgYXQgb25jZS4gWW91IGNhbiBk
byB0aGlzIHdpdGggdHdvCisvLyBjb3VudGVyIG1hY3JvczoKKy8vICAgVFJBQ0VfQ09VTlRFUjEo
Ik1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIwIiwgZ19teUNvdW50ZXJWYWx1ZVswXSk7CisvLyAg
IFRSQUNFX0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVyMSIsIGdfbXlDb3VudGVy
VmFsdWVbMV0pOworLy8gT3IgeW91IGNhbiBkbyBpdCB3aXRoIGEgY29tYmluZWQgbWFjcm86Cisv
LyAgIFRSQUNFX0NPVU5URVIyKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVyIiwKKy8vICAgICAg
ICJieXRlc1Bpbm5lZCIsIGdfbXlDb3VudGVyVmFsdWVbMF0sCisvLyAgICAgICAiYnl0ZXNBbGxv
Y2F0ZWQiLCBnX215Q291bnRlclZhbHVlWzFdKTsKKy8vIFRoaXMgaW5kaWNhdGVzIHRvIHRoZSB0
cmFjaW5nIFVJIHRoYXQgdGhlc2UgY291bnRlcnMgc2hvdWxkIGJlIGRpc3BsYXllZAorLy8gaW4g
YSBzaW5nbGUgZ3JhcGgsIGFzIGEgc3VtbWVkIGFyZWEgY2hhcnQuCisvLworLy8gU2luY2UgY291
bnRlcnMgYXJlIGluIGEgZ2xvYmFsIG5hbWVzcGFjZSwgeW91IG1heSB3YW50IHRvIGRpc2VtYmln
dWF0ZSB3aXRoIGEKKy8vIHVuaXF1ZSBJRCwgYnkgdXNpbmcgdGhlIFRSQUNFX0NPVU5URVJfSUQq
IHZhcmlhdGlvbnMuCisvLworLy8gQnkgZGVmYXVsdCwgdHJhY2UgY29sbGVjdGlvbiBpcyBjb21w
aWxlZCBpbiwgYnV0IHR1cm5lZCBvZmYgYXQgcnVudGltZS4KKy8vIENvbGxlY3RpbmcgdHJhY2Ug
ZGF0YSBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGVtYmVkZGluZworLy8gYXBwbGljYXRp
b24uIEluIENocm9tZSdzIGNhc2UsIG5hdmlnYXRpbmcgdG8gYWJvdXQ6dHJhY2luZyB3aWxsIHR1
cm4gb24KKy8vIHRyYWNpbmcgYW5kIGRpc3BsYXkgZGF0YSBjb2xsZWN0ZWQgYWNyb3NzIGFsbCBh
Y3RpdmUgcHJvY2Vzc2VzLgorLy8KKy8vCisvLyBNZW1vcnkgc2NvcGluZyBub3RlOgorLy8gVHJh
Y2luZyBjb3BpZXMgdGhlIHBvaW50ZXJzLCBub3QgdGhlIHN0cmluZyBjb250ZW50LCBvZiB0aGUg
c3RyaW5ncyBwYXNzZWQKKy8vIGluIGZvciBjYXRlZ29yeSwgbmFtZSwgYW5kIGFyZ19uYW1lcy4g
VGh1cywgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwKKy8vIGNhdXNlIHByb2JsZW1zOgorLy8gICAg
IGNoYXIqIHN0ciA9IHN0cmR1cCgiaW1wcHJ0YW50TmFtZSIpOworLy8gICAgIFRSQUNFX0VWRU5U
X0lOU1RBTlQwKCJTVUJTWVNURU0iLCBzdHIpOyAgLy8gQkFEIQorLy8gICAgIGZyZWUoc3RyKTsg
ICAgICAgICAgICAgICAgICAgLy8gVHJhY2Ugc3lzdGVtIG5vdyBoYXMgZGFuZ2xpbmcgcG9pbnRl
cgorLy8KKy8vIFRvIGF2b2lkIHRoaXMgaXNzdWUgd2l0aCB0aGUgfG5hbWV8IGFuZCB8YXJnX25h
bWV8IHBhcmFtZXRlcnMsIHVzZSB0aGUKKy8vIFRSQUNFX0VWRU5UX0NPUFlfWFhYIG92ZXJsb2Fk
cyBvZiB0aGUgbWFjcm9zIGF0IGFkZGl0aW9uYWwgcnVudGltZSBvdmVyaGVhZC4KKy8vIE5vdGVz
OiBUaGUgY2F0ZWdvcnkgbXVzdCBhbHdheXMgYmUgaW4gYSBsb25nLWxpdmVkIGNoYXIqIChpLmUu
IHN0YXRpYyBjb25zdCkuCisvLyAgICAgICAgVGhlIHxhcmdfdmFsdWVzfCwgd2hlbiB1c2VkLCBh
cmUgYWx3YXlzIGRlZXAgY29waWVkIHdpdGggdGhlIF9DT1BZCisvLyAgICAgICAgbWFjcm9zLgor
Ly8KKy8vIFdoZW4gYXJlIHN0cmluZyBhcmd1bWVudCB2YWx1ZXMgY29waWVkOgorLy8gY29uc3Qg
Y2hhciogYXJnX3ZhbHVlcyBhcmUgb25seSByZWZlcmVuY2VkIGJ5IGRlZmF1bHQ6CisvLyAgICAg
VFJBQ0VfRVZFTlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAgImFy
ZzEiLCAibGl0ZXJhbCBzdHJpbmcgaXMgb25seSByZWZlcmVuY2VkIik7CisvLyBVc2UgVFJBQ0Vf
U1RSX0NPUFkgdG8gZm9yY2UgY29weWluZyBvZiBhIGNvbnN0IGNoYXIqOgorLy8gICAgIFRSQUNF
X0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisvLyAgICAgICAgICAgICAgICAgICJhcmcxIiwg
VFJBQ0VfU1RSX0NPUFkoInN0cmluZyB3aWxsIGJlIGNvcGllZCIpKTsKKy8vIHN0ZDo6c3RyaW5n
IGFyZ192YWx1ZXMgYXJlIGFsd2F5cyBjb3BpZWQ6CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJjYXRl
Z29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAgImFyZzEiLCBzdGQ6OnN0cmluZygi
c3RyaW5nIHdpbGwgYmUgY29waWVkIikpOworLy8KKy8vCisvLyBUaHJlYWQgU2FmZXR5OgorLy8g
QSB0aHJlYWQgc2FmZSBzaW5nbGV0b24gYW5kIG11dGV4IGFyZSB1c2VkIGZvciB0aHJlYWQgc2Fm
ZXR5LiBDYXRlZ29yeQorLy8gZW5hYmxlZCBmbGFncyBhcmUgdXNlZCB0byBsaW1pdCB0aGUgcGVy
Zm9ybWFuY2UgaW1wYWN0IHdoZW4gdGhlIHN5c3RlbQorLy8gaXMgbm90IGVuYWJsZWQuCisvLwor
Ly8gVFJBQ0VfRVZFTlQgbWFjcm9zIGZpcnN0IGNhY2hlIGEgcG9pbnRlciB0byBhIGNhdGVnb3J5
LiBUaGUgY2F0ZWdvcmllcyBhcmUKKy8vIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGFuZCBzYWZlIGF0
IGFsbCB0aW1lcywgZXZlbiBhZnRlciBleGl0LiBGZXRjaGluZyBhCisvLyBjYXRlZ29yeSBpcyBw
cm90ZWN0ZWQgYnkgdGhlIFRyYWNlTG9nOjpsb2NrXy4gTXVsdGlwbGUgdGhyZWFkcyBpbml0aWFs
aXppbmcKKy8vIHRoZSBzdGF0aWMgdmFyaWFibGUgaXMgc2FmZSwgYXMgdGhleSB3aWxsIGJlIHNl
cmlhbGl6ZWQgYnkgdGhlIGxvY2sgYW5kCisvLyBtdWx0aXBsZSBjYWxscyB3aWxsIHJldHVybiB0
aGUgc2FtZSBwb2ludGVyIHRvIHRoZSBjYXRlZ29yeS4KKy8vCisvLyBUaGVuIHRoZSBjYXRlZ29y
eV9lbmFibGVkIGZsYWcgaXMgY2hlY2tlZC4gVGhpcyBpcyBhIHVuc2lnbmVkIGNoYXIsIGFuZAor
Ly8gbm90IGludGVuZGVkIHRvIGJlIG11bHRpdGhyZWFkIHNhZmUuIEl0IG9wdGltaXplcyBhY2Nl
c3MgdG8gYWRkVHJhY2VFdmVudAorLy8gd2hpY2ggaXMgdGhyZWFkc2FmZSBpbnRlcm5hbGx5IHZp
YSBUcmFjZUxvZzo6bG9ja18uIFRoZSBlbmFibGVkIGZsYWcgbWF5CisvLyBjYXVzZSBzb21lIHRo
cmVhZHMgdG8gaW5jb3JyZWN0bHkgY2FsbCBvciBza2lwIGNhbGxpbmcgYWRkVHJhY2VFdmVudCBu
ZWFyCisvLyB0aGUgdGltZSBvZiB0aGUgc3lzdGVtIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQu
IFRoaXMgaXMgYWNjZXB0YWJsZSBhcworLy8gd2UgdG9sZXJhdGUgc29tZSBkYXRhIGxvc3Mgd2hp
bGUgdGhlIHN5c3RlbSBpcyBiZWluZyBlbmFibGVkL2Rpc2FibGVkIGFuZAorLy8gYmVjYXVzZSBh
ZGRUcmFjZUV2ZW50IGlzIHRocmVhZHNhZmUgaW50ZXJuYWxseSBhbmQgY2hlY2tzIHRoZSBlbmFi
bGVkIHN0YXRlCisvLyBhZ2FpbiB1bmRlciBsb2NrLgorLy8KKy8vIFdpdGhvdXQgdGhlIHVzZSBv
ZiB0aGVzZSBzdGF0aWMgY2F0ZWdvcnkgcG9pbnRlcnMgYW5kIGVuYWJsZWQgZmxhZ3MgYWxsCisv
LyB0cmFjZSBwb2ludHMgd291bGQgY2FycnkgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBjb3N0
IG9mIGFxdWlyaW5nIGEgbG9jaworLy8gYW5kIHJlc29sdmluZyB0aGUgY2F0ZWdvcnkuCisKICNp
Zm5kZWYgVHJhY2VFdmVudF9oCiAjZGVmaW5lIFRyYWNlRXZlbnRfaAogCisjaW5jbHVkZSAiRHlu
YW1pY0Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCi0jaW5jbHVk
ZSA8d3RmL093bkFycmF5UHRyLmg+CisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisK
Ky8vIElzc3VlcyBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbiBhbmQgdHJhY2VFdmVu
dEVuZCBjYWxscyBmb3IgdGhlIGVuY2xvc2luZyBzY29wZQorI2RlZmluZSBUUkFDRV9FVkVOVChu
YW1lLCBpZCwgZXh0cmEpIFRSQUNFX0VWRU5UMigid2Via2l0IiwgbmFtZSwgImlkIiwgaWQsICJl
eHRyYSIsIGV4dHJhKQorCisvLyBCeSBkZWZhdWx0LCBjb25zdCBjaGFyKiBhcmd1bWVudCB2YWx1
ZXMgYXJlIGFzc3VtZWQgdG8gaGF2ZSBsb25nLWxpdmVkIHNjb3BlCisvLyBhbmQgd2lsbCBub3Qg
YmUgY29waWVkLiBVc2UgdGhpcyBtYWNybyB0byBmb3JjZSBhIGNvbnN0IGNoYXIqIHRvIGJlIGNv
cGllZC4KKyNkZWZpbmUgVFJBQ0VfU1RSX0NPUFkoc3RyKSBcCisgICAgV2ViQ29yZTo6VHJhY2VF
dmVudDo6VHJhY2VTdHJpbmdXaXRoQ29weShzdHIpCisKKy8vIFJlY29yZHMgYSBwYWlyIG9mIGJl
Z2luIGFuZCBlbmQgZXZlbnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50CisvLyBzY29w
ZSwgd2l0aCAwLCAxIG9yIDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBp
cyBub3QKKy8vIGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5
IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNz
IG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZp
bmUgVFJBQ0VfRVZFTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlQxKGNhdGVn
b3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZp
bmUgVFJBQ0VfRVZFTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcy
X25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChj
YXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUs
IGFyZzJfdmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIGV2ZW50IGNhbGxlZCAibmFtZSIgaW1t
ZWRpYXRlbHksIHdpdGggMCwgMSBvciAyCisvLyBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhl
IGNhdGVnb3J5IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMKKy8vIGRvZXMgbm90aGluZy4KKy8v
IC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRp
bWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNo
YXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisg
ICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVmaW5lIFRS
QUNFX0VWRU5UX0lOU1RBTlQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQs
IFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9u
YW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoY2F0ZWdvcnksIG5h
bWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5U
LCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFf
bmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfQ09QWV9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAgIGNh
dGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVmaW5lIFRSQUNFX0VWRU5U
X0NPUFlfSU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAg
ICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAor
ICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUs
IGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQyKGNhdGVnb3J5LCBu
YW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFO
VCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcx
X25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFRp
bWUgdGhyZXNob2xkIGV2ZW50OgorLy8gT25seSByZWNvcmQgdGhlIGV2ZW50IGlmIHRoZSBkdXJh
dGlvbiBpcyBncmVhdGVyIHRoYW4gdGhlIHNwZWNpZmllZAorLy8gdGhyZXNob2xkX3VzICh0aW1l
IGluIG1pY3Jvc2Vjb25kcykuCisvLyBSZWNvcmRzIGEgcGFpciBvZiBiZWdpbiBhbmQgZW5kIGV2
ZW50cyBjYWxsZWQgIm5hbWUiIGZvciB0aGUgY3VycmVudAorLy8gc2NvcGUsIHdpdGggMCwgMSBv
ciAyIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdvcnkgaXMgbm90CisvLyBlbmFi
bGVkLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJp
bmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRl
cmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNFX0VWRU5U
X0lGX0xPTkdFUl9USEFOMCh0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9JRl9MT05HRVJfVEhBTih0aHJlc2hvbGRfdXMs
IGNhdGVnb3J5LCBuYW1lKQorI2RlZmluZSBUUkFDRV9FVkVOVF9JRl9MT05HRVJfVEhBTjEoIFwK
KyAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9JRl9MT05HRVJfVEhBTiggXAor
ICAgICAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFs
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9JRl9MT05HRVJfVEhBTjIoIFwKKyAgICB0aHJlc2hvbGRf
dXMsIGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJf
dmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9JRl9MT05HRVJfVEhB
TiggXAorICAgICAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFy
ZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBSZWNvcmRzIHRoZSB2YWx1ZSBvZiBh
IGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4gVmFsdWUKKy8vIG11c3QgYmUgcmVw
cmVzZW50YWJsZSBhcyBhIDMyIGJpdCBpbnRlZ2VyLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBz
dHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBs
aXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNFX0NP
VU5URVIxKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1l
LCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIFwKKyAgICAgICAgInZhbHVlIiwgc3RhdGljX2Nhc3Q8
aW50Pih2YWx1ZSkpCisjZGVmaW5lIFRSQUNFX0NPUFlfQ09VTlRFUjEoY2F0ZWdvcnksIG5hbWUs
IHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNF
X0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09Q
WSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKworLy8gUmVj
b3JkcyB0aGUgdmFsdWVzIG9mIGEgbXVsdGktcGFydGVkIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBp
bW1lZGlhdGVseS4KKy8vIFRoZSBVSSB3aWxsIHRyZWF0IHZhbHVlMSBhbmQgdmFsdWUyIGFzIHBh
cnRzIG9mIGEgd2hvbGUsIGRpc3BsYXlpbmcgdGhlaXIKKy8vIHZhbHVlcyBhcyBhIHN0YWNrZWQt
YmFyIGNoYXJ0LgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBs
aWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5v
dCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNFX0NPVU5URVIyKGNhdGVnb3J5LCBuYW1l
LCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUy
X3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9D
T1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUs
IFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwK
KyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisjZGVm
aW5lIFRSQUNFX0NPUFlfQ09VTlRFUjIoY2F0ZWdvcnksIG5hbWUsIHZhbHVlMV9uYW1lLCB2YWx1
ZTFfdmFsLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCB2YWx1ZTJfdmFsKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAg
Y2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICB2YWx1ZTFf
bmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwgXAorICAgICAgICB2YWx1ZTJfbmFt
ZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWUg
b2YgYSBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHkuIFZhbHVlCisvLyBtdXN0IGJl
IHJlcHJlc2VudGFibGUgYXMgYSAzMiBiaXQgaW50ZWdlci4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5h
bWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8v
ICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorLy8gLSB8aWR8IGlz
IHVzZWQgdG8gZGlzYW1iaWd1YXRlIGNvdW50ZXJzIHdpdGggdGhlIHNhbWUgbmFtZS4gSXQgbXVz
dCBlaXRoZXIKKy8vICAgYmUgYSBwb2ludGVyIG9yIGFuIGludGVnZXIgdmFsdWUgdXAgdG8gNjQg
Yml0cy4gSWYgaXQncyBhIHBvaW50ZXIsIHRoZSBiaXRzCisvLyAgIHdpbGwgYmUgeG9yZWQgd2l0
aCBhIGhhc2ggb2YgdGhlIHByb2Nlc3MgSUQgc28gdGhhdCB0aGUgc2FtZSBwb2ludGVyIG9uCisv
LyAgIHR3byBkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90IGNvbGxpZGUuCisjZGVmaW5lIFRS
QUNFX0NPVU5URVJfSUQxKGNhdGVnb3J5LCBuYW1lLCBpZCwgdmFsdWUpIFwKKyAgICBJTlRFUk5B
TF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisg
ICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQsIFwKKyAg
ICAgICAgInZhbHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisjZGVmaW5lIFRSQUNFX0NP
UFlfQ09VTlRFUl9JRDEoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZSkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkgfCBUUkFDRV9F
VkVOVF9GTEFHX0hBU19JRCwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxpbnQ+KHZh
bHVlKSkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWVzIG9mIGEgbXVsdGktcGFydGVkIGNvdW50ZXIg
Y2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4KKy8vIFRoZSBVSSB3aWxsIHRyZWF0IHZhbHVlMSBh
bmQgdmFsdWUyIGFzIHBhcnRzIG9mIGEgd2hvbGUsIGRpc3BsYXlpbmcgdGhlaXIKKy8vIHZhbHVl
cyBhcyBhIHN0YWNrZWQtYmFyIGNoYXJ0LgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdz
IG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFs
cykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisvLyAtIHxpZHwgaXMgdXNlZCB0byBk
aXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBuYW1lLiBJdCBtdXN0IGVpdGhlcgor
Ly8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2YWx1ZSB1cCB0byA2NCBiaXRzLiBJZiBp
dCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2lsbCBiZSB4b3JlZCB3aXRoIGEgaGFzaCBv
ZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1lIHBvaW50ZXIgb24KKy8vICAgdHdvIGRp
ZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlkZS4KKyNkZWZpbmUgVFJBQ0VfQ09VTlRF
Ul9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAorICAg
ICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdv
cnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgXAorICAgICAgICB2YWx1ZTFf
bmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwgXAorICAgICAgICB2YWx1ZTJfbmFt
ZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VO
VEVSX0lEMihjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisg
ICAgICAgIHZhbHVlMl9uYW1lLCB2YWx1ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSB8IFRSQUNFX0VWRU5UX0ZMQUdf
SEFTX0lELCBcCisgICAgICAgIHZhbHVlMV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92
YWwpLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwp
KQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIFNUQVJUIGV2ZW50IGNhbGxlZCAibmFtZSIgaW1tZWRp
YXRlbHksIHdpdGggMCwgMSBvciAyCisvLyBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhlIGNh
dGVnb3J5IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMKKy8vIGRvZXMgbm90aGluZy4KKy8vIC0g
Y2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUg
KHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJz
LgorLy8gLSB8aWR8IGlzIHVzZWQgdG8gbWF0Y2ggdGhlIFNUQVJUIGV2ZW50IHdpdGggdGhlIEZJ
TklTSCBldmVudC4gSXQgbXVzdCBlaXRoZXIKKy8vICAgYmUgYSBwb2ludGVyIG9yIGFuIGludGVn
ZXIgdmFsdWUgdXAgdG8gNjQgYml0cy4gSWYgaXQncyBhIHBvaW50ZXIsIHRoZSBiaXRzCisvLyAg
IHdpbGwgYmUgeG9yZWQgd2l0aCBhIGhhc2ggb2YgdGhlIHByb2Nlc3MgSUQgc28gdGhhdCB0aGUg
c2FtZSBwb2ludGVyIG9uCisvLyAgIHR3byBkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90IGNv
bGxpZGUuCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NUQVJUMChjYXRlZ29yeSwgbmFtZSwgaWQpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9T
VEFSVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFT
X0lEKQorI2RlZmluZSBUUkFDRV9FVkVOVF9TVEFSVDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcx
X25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQo
VFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBU
UkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfU1RBUlQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwg
XAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwKKyAgICAgICAgY2F0ZWdv
cnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgXAorICAgICAgICBhcmcxX25h
bWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9D
T1BZX1NUQVJUMChjYXRlZ29yeSwgbmFtZSwgaWQpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEIHwgVFJBQ0VfRVZFTlRfRkxBR19D
T1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX1NUQVJUMShjYXRlZ29yeSwgbmFtZSwgaWQs
IGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lU
SF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwg
aWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEIHwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisg
ICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfU1RB
UlQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBh
cmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhf
SUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlk
LCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCB8IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAg
ICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBSZWNv
cmRzIGEgc2luZ2xlIEZJTklTSCBldmVudCBmb3IgIm5hbWUiIGltbWVkaWF0ZWx5LiBJZiB0aGUg
Y2F0ZWdvcnkKKy8vIGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nLgorI2Rl
ZmluZSBUUkFDRV9FVkVOVF9GSU5JU0gwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAor
ICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEKQorI2Rl
ZmluZSBUUkFDRV9FVkVOVF9GSU5JU0gxKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBh
cmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VW
RU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VW
RU5UX0ZMQUdfSEFTX0lELCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9GSU5JU0gyKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAg
ICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBu
YW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQsIFwKKyAgICAgICAgYXJnMV9uYW1lLCBh
cmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9G
SU5JU0gwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBjYXRlZ29yeSwg
bmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEIHwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZ
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0ZJTklTSDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBh
cmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhf
SUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBp
ZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAg
ICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9GSU5J
U0gyKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBh
cmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhf
SUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBp
ZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAg
ICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworCisvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8gSW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdHJhY2luZyBB
UEkgZGVmaW5pdGlvbnMuCisKKy8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJsZWQgc3RhdGUg
b2YgdGhlIGdpdmVuIHRyYWNlIGNhdGVnb3J5LiBPbmx5CisvLyBsb25nLWxpdmVkIGxpdGVyYWwg
c3RyaW5ncyBzaG91bGQgYmUgZ2l2ZW4gYXMgdGhlIGNhdGVnb3J5IG5hbWUuIFRoZSByZXR1cm5l
ZAorLy8gcG9pbnRlciBjYW4gYmUgaGVsZCBwZXJtYW5lbnRseSBpbiBhIGxvY2FsIHN0YXRpYyBm
b3IgZXhhbXBsZS4gSWYgdGhlCisvLyB1bnNpZ25lZCBjaGFyIGlzIG5vbi16ZXJvLCB0cmFjaW5n
IGlzIGVuYWJsZWQuIElmIHRyYWNpbmcgaXMgZW5hYmxlZCwKKy8vIFRSQUNFX0VWRU5UX0FQSV9B
RERfVFJBQ0VfRVZFTlQgY2FuIGJlIGNhbGxlZC4gSXQncyBPSyBpZiB0cmFjaW5nIGlzIGRpc2Fi
bGVkCisvLyBiZXR3ZWVuIHRoZSBsb2FkIG9mIHRoZSB0cmFjaW5nIHN0YXRlIGFuZCB0aGUgY2Fs
bCB0bworLy8gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCwgYmVjYXVzZSB0aGlzIGZs
YWcgb25seSBwcm92aWRlcyBhbiBlYXJseSBvdXQKKy8vIGZvciBiZXN0IHBlcmZvcm1hbmNlIHdo
ZW4gdHJhY2luZyBpcyBkaXNhYmxlZC4KKy8vIGNvbnN0IHVuc2lnbmVkIGNoYXIqCisvLyAgICAg
VFJBQ0VfRVZFTlRfQVBJX0dFVF9DQVRFR09SWV9FTkFCTEVEKGNvbnN0IGNoYXIqIGNhdGVnb3J5
X25hbWUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9HRVRfQ0FURUdPUllfRU5BQkxFRCBcCisg
ICAgV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcK
KworLy8gQWRkIGEgdHJhY2UgZXZlbnQgdG8gdGhlIHBsYXRmb3JtIHRyYWNpbmcgc3lzdGVtLiBS
ZXR1cm5zIHRocmVzaG9sZEJlZ2luSWQKKy8vIGZvciB1c2UgaW4gYSBjb3JyZXNwb25kaW5nIGVu
ZCBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UIGNhbGwuCisvLyBpbnQgVFJBQ0VfRVZF
TlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKy8vICAgICAgICAgICAgICAgICAgICBjaGFyIHBoYXNl
LAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5X2Vu
YWJsZWQsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKy8vICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisvLyAgICAgICAgICAgICAgICAg
ICAgaW50IG51bV9hcmdzLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdf
bmFtZXMsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnX3R5
cGVzLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJn
X3ZhbHVlcywKKy8vICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKy8v
ICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGhyZXNob2xkLAorLy8gICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9BRERf
VFJBQ0VfRVZFTlQgXAorICAgIFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVu
dAorCisvLyBNYW5nbGUgcG9pbnRlciB3aXRoIGEgaGFzaCBzbyB0aGF0IGlmIGl0IG9jY3VycyBv
biBtb3JlIHRoYW4gb25lIHByb2Nlc3MsCisvLyBpdCB3aWxsIG5vdCBjb2xsaWRlIGluIHRoZSB0
cmFjZSBkYXRhLiBQYXNzIHRoZSByZXR1cm5lZCB2YWx1ZSB0bworLy8gVFJBQ0VfRVZFTlRfQVBJ
X0FERF9UUkFDRV9FVkVOVCBhcyB0aGUgaWQgcGFyYW1ldGVyLgorLy8gdW5zaWduZWQgbG9uZyBs
b25nIFRSQUNFX0VWRU5UX0FQSV9HRVRfSURfRlJPTV9QT0lOVEVSKHZvaWQqIHBvaW50ZXIpCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9HRVRfSURfRlJPTV9QT0lOVEVSIFwKKyAgICBXZWJDb3Jl
OjpQbGF0Zm9ybVN1cHBvcnQ6Om1hbmdsZVBvaW50ZXJGb3JUcmFjaW5nCisKKy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCiAKIC8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogdHJhY2UgZXZlbnQgbWFj
cm9zIGNyZWF0ZSB0ZW1wb3JhcnkgdmFyaWFibGVzCiAvLyB0byBrZWVwIGluc3RydW1lbnRhdGlv
biBvdmVyaGVhZCBsb3cuIFRoZXNlIG1hY3JvcyBnaXZlIGVhY2ggdGVtcG9yYXJ5CiAvLyB2YXJp
YWJsZSBhIHVuaXF1ZSBuYW1lIGJhc2VkIG9uIHRoZSBsaW5lIG51bWJlciB0byBwcmV2ZW50IG5h
bWUgY29sbGlzc2lvbnMuCi0jZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJ
RVIzKGEsIGIpIGEjI2IKLSNkZWZpbmUgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklF
UjIoYSwgYikgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUjMoYSwgYikKLSNkZWZp
bmUgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihuYW1lX3ByZWZpeCkgVFJBQ0Vf
RVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUjIobmFtZV9wcmVmaXgsIF9fTElORV9fKQorI2Rl
ZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQzKGEsIGIpIFwKKyAgICB0cmFjZV9ldmVudF91
bmlxdWVfIyNhIyNiCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJRDIoYSwgYikgXAor
ICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJRDMoYSwgYikKKyNkZWZpbmUgSU5URVJOQUxUUkFD
RUVWRU5UVUlEKG5hbWVfcHJlZml4KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMihu
YW1lX3ByZWZpeCwgX19MSU5FX18pCisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJu
YWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeS4KKy8vIC0gV1RGX0FOTk9UQVRFX0JF
TklHTl9SQUNFLCBzZWUgVGhyZWFkIFNhZmV0eSBhYm92ZS4KKyNkZWZpbmUgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpIFwKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY2hhciogSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykgPSAwOyBcCisg
ICAgV1RGX0FOTk9UQVRFX0JFTklHTl9SQUNFKCZJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3Rh
dGljKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhY2VfZXZlbnQgY2F0ZWdv
cnkiKTsgXAorICAgIGlmICghSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIFwKKyAg
ICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpID0gXAorICAgICAgICAgIFRSQUNF
X0VWRU5UX0FQSV9HRVRfQ0FURUdPUllfRU5BQkxFRChjYXRlZ29yeSk7CisKKy8vIEltcGxlbWVu
dGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeSBh
bmQgYWRkCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgZW5hYmxlZC4KKyNpZiBDT01QSUxF
UihNU1ZDN19PUl9MT1dFUikKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKGlnbm9y
ZSkgKCh2b2lkKTApCisjZWxzZQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQocGhh
c2UsIGNhdGVnb3J5LCBuYW1lLCBmbGFncywgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNF
RVZFTlRVSUQoY2F0c3RhdGljKSkgeyBcCisgICAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjphZGRU
cmFjZUV2ZW50KCBcCisgICAgICAgICAgcGhhc2UsIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRz
dGF0aWMpLCBuYW1lLCBcCisgICAgICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6bm9FdmVudElk
LCBmbGFncywgIyNfX1ZBX0FSR1NfXyk7IFwKKyAgICB9CisjZW5kaWYKKworLy8gSW1wbGVtZW50
YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5IGFu
ZCBhZGQgYmVnaW4KKy8vIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLiBBbHNvIGFk
ZHMgdGhlIGVuZCBldmVudCB3aGVuIHRoZSBzY29wZQorLy8gZW5kcy4KKyNpZiBDT01QSUxFUihN
U1ZDN19PUl9MT1dFUikKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChp
Z25vcmUpICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
R0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpOyBcCisgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6
VHJhY2VFbmRPblNjb3BlQ2xvc2UgXAorICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQocHJv
ZmlsZVNjb3BlKTsgXAorICAgIGlmICgqSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykp
IHsgXAorICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAgICAg
ICAgIFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgICAgSU5URVJOQUxUUkFDRUVW
RU5UVUlEKGNhdHN0YXRpYyksIFwKKyAgICAgICAgICBuYW1lLCBXZWJDb3JlOjpUcmFjZUV2ZW50
Ojpub0V2ZW50SWQsIFwKKyAgICAgICAgICBUUkFDRV9FVkVOVF9GTEFHX05PTkUsICMjX19WQV9B
UkdTX18pOyBcCisgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQocHJvZmlsZVNjb3BlKS5pbml0
aWFsaXplKCBcCisgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIG5h
bWUpOyBcCisgICAgfQorI2VuZGlmCisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJu
YWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeSBhbmQgYWRkIGJlZ2luCisvLyBldmVu
dCBpZiB0aGUgY2F0ZWdvcnkgaXMgZW5hYmxlZC4gQWxzbyBhZGRzIHRoZSBlbmQgZXZlbnQgd2hl
biB0aGUgc2NvcGUKKy8vIGVuZHMuIElmIHRoZSBlbGFwc2VkIHRpbWUgaXMgPCB0aHJlc2hvbGQg
dGltZSwgdGhlIGJlZ2luL2VuZCBwYWlyIGlzIGVyYXNlZC4KKyNpZiBDT01QSUxFUihNU1ZDN19P
Ul9MT1dFUikKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9JRl9MT05H
RVJfVEhBTihpZ25vcmUpICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREX1NDT1BFRF9JRl9MT05HRVJfVEhBTih0aHJlc2hvbGQsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIC4uLikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09S
WV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25T
Y29wZUNsb3NlVGhyZXNob2xkIFwKKyAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2Zp
bGVTY29wZSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7
IFwKKyAgICAgIGludCBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoYmVnaW5fZXZlbnRfaWQpID0gXAor
ICAgICAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KCBcCisgICAgICAgICAg
ICBUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICAgICAgSU5URVJOQUxUUkFDRUVW
RU5UVUlEKGNhdHN0YXRpYyksIFwKKyAgICAgICAgICAgIG5hbWUsIFdlYkNvcmU6OlRyYWNlRXZl
bnQ6Om5vRXZlbnRJZCwgXAorICAgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCAjI19f
VkFfQVJHU19fKTsgXAorICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSku
aW5pdGlhbGl6ZSggXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMp
LCBuYW1lLCBcCisgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGJlZ2luX2V2ZW50X2lk
KSwgdGhyZXNob2xkKTsgXAorICAgIH0KKyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRh
aWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZAorLy8g
ZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuCisjaWYgQ09NUElMRVIoTVNWQzdfT1Jf
TE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKGlnbm9yZSkg
KCh2b2lkKTApCisjZWxzZQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9J
RChwaGFzZSwgY2F0ZWdvcnksIG5hbWUsIGlkLCBmbGFncywgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9H
RVRfQ0FURUdPUllfSU5GTyhjYXRlZ29yeSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVO
VFVJRChjYXRzdGF0aWMpKSB7IFwKKyAgICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OmFkZFRyYWNl
RXZlbnQoIFwKKyAgICAgICAgICBwaGFzZSwgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRp
YyksIFwKKyAgICAgICAgICBuYW1lLCBXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUlEKGlkKS5k
YXRhKCksIGZsYWdzLCBcCisgICAgICAgICAgIyNfX1ZBX0FSR1NfXyk7IFwKKyAgICB9CisjZW5k
aWYKKworLy8gTm90ZXMgcmVnYXJkaW5nIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnM6CisvLyBO
ZXcgdmFsdWVzIGNhbiBiZSBhZGRlZCBhbmQgcHJvcGFnYXRlZCB0byB0aGlyZCBwYXJ0eSBsaWJy
YXJpZXMsIGJ1dCBleGlzdGluZworLy8gZGVmaW5pdGlvbnMgbXVzdCBuZXZlciBiZSBjaGFuZ2Vk
LCBiZWNhdXNlIHRoaXJkIHBhcnR5IGxpYnJhcmllcyBtYXkgdXNlIG9sZAorLy8gZGVmaW5pdGlv
bnMuCisKKy8vIFBoYXNlIGluZGljYXRlcyB0aGUgbmF0dXJlIG9mIGFuIGV2ZW50IGVudHJ5LiBF
LmcuIHBhcnQgb2YgYSBiZWdpbi9lbmQgcGFpci4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0Vf
QkVHSU4gICAgKCdCJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfRU5EICAgICAgKCdFJykK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCAgKCdJJykKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfUEhBU0VfU1RBUlQgICAgKCdTJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfRklO
SVNIICAgKCdGJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfTUVUQURBVEEgKCdNJykKKyNk
ZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiAgKCdDJykKKworLy8gRmxhZ3MgZm9yIGNo
YW5naW5nIHRoZSBiZWhhdmlvciBvZiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5ULgor
I2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX05PTkUgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPigwKSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxBR19DT1BZICAgICAgICAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSA8PCAwKSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxBR19I
QVNfSUQgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSA8PCAxKSkKKworLy8gVHlw
ZSB2YWx1ZXMgZm9yIGlkZW50aWZ5aW5nIHR5cGVzIGluIHRoZSBUcmFjZVZhbHVlIHVuaW9uLgor
I2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX0JPT0wgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oMSkpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCAgICAgICAgIChzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigyKSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9JTlQg
ICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDMpKQorI2RlZmluZSBUUkFDRV9W
QUxVRV9UWVBFX0RPVUJMRSAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNCkpCisj
ZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfUE9JTlRFUiAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPig1KSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9TVFJJTkcgICAgICAgKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KDYpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX0NPUFlf
U1RSSU5HICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNykpCiAKLS8vIElzc3VlcyBQbGF0
Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbiBhbmQgdHJhY2VFdmVudEVuZCBjYWxscyBmb3Ig
dGhlIGVuY2xvc2luZyBzY29wZQotI2RlZmluZSBUUkFDRV9FVkVOVChuYW1lLCBpZCwgZXh0cmEp
IFdlYkNvcmU6OmludGVybmFsOjpTY29wZVRyYWNlciBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9J
REVOVElGSUVSKF9fdHJhY2VFdmVudFNjb3BlKShuYW1lLCBpZCwgZXh0cmEpOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7CituYW1lc3BhY2UgVHJhY2VFdmVu
dCB7CiAKLS8vIFVzZWQgYnkgVFJBQ0VfRVZFTlQgbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHku
Ci1jbGFzcyBTY29wZVRyYWNlciB7CisvLyBTcGVjaWZ5IHRoZXNlIHZhbHVlcyB3aGVuIHRoZSBj
b3JyZXNwb25kaW5nIGFyZ3VtZW50IG9mIGFkZFRyYWNlRXZlbnQgaXMgbm90CisvLyB1c2VkLgor
Y29uc3QgaW50IHplcm9OdW1BcmdzID0gMDsKK2NvbnN0IGludCBub1RocmVzaG9sZEJlZ2luSWQg
PSAtMTsKK2NvbnN0IGxvbmcgbG9uZyBub1RocmVzaG9sZFZhbHVlID0gMDsKK2NvbnN0IHVuc2ln
bmVkIGxvbmcgbG9uZyBub0V2ZW50SWQgPSAwOworCisvLyBUcmFjZUlEIGVuY2Fwc3VsYXRlcyBh
biBJRCB0aGF0IGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciBvciBwb2ludGVyLiBQb2ludGVycwor
Ly8gYXJlIG1hbmdsZWQgd2l0aCB0aGUgUHJvY2VzcyBJRCBzbyB0aGF0IHRoZXkgYXJlIHVubGlr
ZWx5IHRvIGNvbGxpZGUgd2hlbiB0aGUKKy8vIHNhbWUgcG9pbnRlciBpcyB1c2VkIG9uIGRpZmZl
cmVudCBwcm9jZXNzZXMuCitjbGFzcyBUcmFjZUlEIHsKIHB1YmxpYzoKLSAgICBTY29wZVRyYWNl
cihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiwgY29uc3QgY2hhciogZXh0cmEpOwotICAgIH5TY29w
ZVRyYWNlcigpOworICAgIGV4cGxpY2l0IFRyYWNlSUQodm9pZCogcmhzKSA6CisgICAgICAgIG1f
ZGF0YShUUkFDRV9FVkVOVF9BUElfR0VUX0lEX0ZST01fUE9JTlRFUihyaHMpKSB7IH0KKyAgICBl
eHBsaWNpdCBUcmFjZUlEKHVuc2lnbmVkIGxvbmcgbG9uZyByaHMpIDogbV9kYXRhKHJocykgeyB9
CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBsb25nIHJocykgOiBtX2RhdGEocmhzKSB7
IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHVuc2lnbmVkIGludCByaHMpIDogbV9kYXRhKHJocykg
eyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBzaG9ydCByaHMpIDogbV9kYXRhKHJo
cykgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBjaGFyIHJocykgOiBtX2RhdGEo
cmhzKSB7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKGxvbmcgbG9uZyByaHMpIDoKKyAgICAgICAg
bV9kYXRhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ocmhzKSkgeyB9CisgICAgZXhw
bGljaXQgVHJhY2VJRChsb25nIHJocykgOiBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPihyaHMpKSB7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKGludCByaHMpIDogbV9kYXRh
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ocmhzKSkgeyB9CisgICAgZXhwbGljaXQg
VHJhY2VJRChzaG9ydCByaHMpIDogbV9kYXRhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9u
Zz4ocmhzKSkgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChzaWduZWQgY2hhciByaHMpIDoKKyAg
ICAgICAgbV9kYXRhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ocmhzKSkgeyB9CisK
KyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQor
Citwcml2YXRlOgorICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX2RhdGE7Cit9OworCisvLyBTaW1w
bGUgdW5pb24gdG8gc3RvcmUgdmFyaW91cyB0eXBlcyBhcyB1bnNpZ25lZCBsb25nIGxvbmcuCit1
bmlvbiBUcmFjZVZhbHVlVW5pb24geworICAgIGJvb2wgbV9ib29sOworICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBtX3VpbnQ7CisgICAgbG9uZyBsb25nIG1faW50OworICAgIGRvdWJsZSBtX2RvdWJs
ZTsKKyAgICBjb25zdCB2b2lkKiBtX3BvaW50ZXI7CisgICAgY29uc3QgY2hhciogbV9zdHJpbmc7
Cit9OwogCisvLyBTaW1wbGUgY29udGFpbmVyIGZvciBjb25zdCBjaGFyKiB0aGF0IHNob3VsZCBi
ZSBjb3BpZWQgaW5zdGVhZCBvZiByZXRhaW5lZC4KK2NsYXNzIFRyYWNlU3RyaW5nV2l0aENvcHkg
eworcHVibGljOgorICAgIGV4cGxpY2l0IFRyYWNlU3RyaW5nV2l0aENvcHkoY29uc3QgY2hhciog
c3RyKSA6IG1fc3RyKHN0cikgeyB9CisgICAgb3BlcmF0b3IgY29uc3QgY2hhciogKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHI7IH0KIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogbV9uYW1lOwotICAg
IHZvaWQqIG1faWQ7Ci0gICAgT3duQXJyYXlQdHI8Y2hhcj4gbV9leHRyYTsKKyAgICBjb25zdCBj
aGFyKiBtX3N0cjsKIH07CiAKLWlubGluZSBTY29wZVRyYWNlcjo6U2NvcGVUcmFjZXIoY29uc3Qg
Y2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKQotICAgIDogbV9uYW1lKG5h
bWUpCi0gICAgLCBtX2lkKGlkKQotewotICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJl
Z2luKG5hbWUsIGlkLCBleHRyYSk7IFwKLSAgICBpZiAoZXh0cmEgJiYgUGxhdGZvcm1TdXBwb3J0
Ojppc1RyYWNlRXZlbnRFbmFibGVkKCkpCi0gICAgICAgIG1fZXh0cmEgPSBhZG9wdEFycmF5UHRy
KHN0cmR1cChleHRyYSkpOworLy8gRGVmaW5lIHNldFRyYWNlVmFsdWUgZm9yIGVhY2ggYWxsb3dl
ZCB0eXBlLiBJdCBzdG9yZXMgdGhlIHR5cGUgYW5kCisvLyB2YWx1ZSBpbiB0aGUgcmV0dXJuIGFy
Z3VtZW50cy4gVGhpcyBhbGxvd3MgdGhpcyBBUEkgdG8gYXZvaWQgZGVjbGFyaW5nIGFueQorLy8g
c3RydWN0dXJlcyBzbyB0aGF0IGl0IGlzIHBvcnRhYmxlIHRvIHRoaXJkX3BhcnR5IGxpYnJhcmll
cy4KKyNkZWZpbmUgSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoYWN0dWFsX3R5cGUs
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25fbWVtYmVy
LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGVf
aWQpIFwKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgc2V0VHJhY2VWYWx1ZShhY3R1YWxfdHlwZSBh
cmcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
KiB0eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBsb25nKiB2YWx1ZSkgeyBcCisgICAgICAgIFRyYWNlVmFsdWVVbmlvbiB0eXBlVmFsdWU7
IFwKKyAgICAgICAgdHlwZVZhbHVlLnVuaW9uX21lbWJlciA9IGFyZzsgXAorICAgICAgICAqdHlw
ZSA9IHZhbHVlX3R5cGVfaWQ7IFwKKyAgICAgICAgKnZhbHVlID0gdHlwZVZhbHVlLm1fdWludDsg
XAorICAgIH0KKy8vIFNpbXBsZXIgZm9ybSBmb3IgaW50IHR5cGVzIHRoYXQgY2FuIGJlIHNhZmVs
eSBjYXN0ZWQuCisjZGVmaW5lIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChh
Y3R1YWxfdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWVfdHlwZV9pZCkgXAorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRUcmFjZVZhbHVl
KGFjdHVhbF90eXBlIGFyZywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIqIHR5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcqIHZhbHVlKSB7IFwKKyAgICAgICAgKnR5cGUgPSB2YWx1
ZV90eXBlX2lkOyBcCisgICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4oYXJnKTsgXAorICAgIH0KKworSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVf
SU5UKHVuc2lnbmVkIGxvbmcgbG9uZywgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxf
REVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGludCwgVFJBQ0VfVkFMVUVfVFlQ
RV9VSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIHNo
b3J0LCBUUkFDRV9WQUxVRV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9W
QUxVRV9JTlQodW5zaWduZWQgY2hhciwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxf
REVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKGxvbmcgbG9uZywgVFJBQ0VfVkFMVUVfVFlQRV9J
TlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQoaW50LCBUUkFDRV9WQUxV
RV9UWVBFX0lOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChzaG9ydCwg
VFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9J
TlQoc2lnbmVkIGNoYXIsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9T
RVRfVFJBQ0VfVkFMVUUoYm9vbCwgbV9ib29sLCBUUkFDRV9WQUxVRV9UWVBFX0JPT0wpCitJTlRF
Uk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShkb3VibGUsIG1fZG91YmxlLCBUUkFDRV9WQUxV
RV9UWVBFX0RPVUJMRSkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0IHZv
aWQqLCBtX3BvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9W
QUxVRV9UWVBFX1BPSU5URVIpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShjb25z
dCBjaGFyKiwgbV9zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFD
RV9WQUxVRV9UWVBFX1NUUklORykKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGNv
bnN0IFRyYWNlU3RyaW5nV2l0aENvcHkmLCBtX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSQUNFX1ZBTFVFX1RZUEVfQ09QWV9TVFJJTkcpCisKKyN1bmRlZiBJTlRF
Uk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRQorI3VuZGVmIElOVEVSTkFMX0RFQ0xBUkVfU0VU
X1RSQUNFX1ZBTFVFX0lOVAorCisvLyBXVEY6OlN0cmluZyB2ZXJzaW9uIG9mIHNldFRyYWNlVmFs
dWUgc28gdGhhdCB0cmFjZSBhcmd1bWVudHMgY2FuIGJlIHN0cmluZ3MuCitzdGF0aWMgaW5saW5l
IHZvaWQgc2V0VHJhY2VWYWx1ZShjb25zdCBXVEY6OkNTdHJpbmcmIGFyZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcqIHZhbHVlKSB7CisgICAgVHJh
Y2VWYWx1ZVVuaW9uIHR5cGVWYWx1ZTsKKyAgICB0eXBlVmFsdWUubV9zdHJpbmcgPSBhcmcuZGF0
YSgpOworICAgICp0eXBlID0gVFJBQ0VfVkFMVUVfVFlQRV9DT1BZX1NUUklORzsKKyAgICAqdmFs
dWUgPSB0eXBlVmFsdWUubV91aW50OworfQorCisvLyBUaGVzZSBhZGRUcmFjZUV2ZW50IHRlbXBs
YXRlIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBoZXJlIGluc3RlYWQgb2YgaW4gdGhlCisvLyBtYWNy
bywgYmVjYXVzZSB0aGUgYXJnIHZhbHVlcyBjb3VsZCBiZSB0ZW1wb3Jhcnkgc3RyaW5nIG9iamVj
dHMuIEluIG9yZGVyIHRvCisvLyBzdG9yZSBwb2ludGVycyB0byB0aGUgaW50ZXJuYWwgY19zdHIg
YW5kIHBhc3MgdGhyb3VnaCB0byB0aGUgdHJhY2luZyBBUEksIHRoZQorLy8gYXJnIHZhbHVlcyBt
dXN0IGxpdmUgdGhyb3VnaG91dCB0aGVzZSBwcm9jZWR1cmVzLgorCitzdGF0aWMgaW5saW5lIGlu
dCBhZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKSB7CisgICAgcmV0dXJuIFRSQUNFX0VWRU5U
X0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQsIG5h
bWUsIGlkLAorICAgICAgICB6ZXJvTnVtQXJncywgMCwgMCwgMCwKKyAgICAgICAgbm9UaHJlc2hv
bGRCZWdpbklkLCBub1RocmVzaG9sZFZhbHVlLCBmbGFncyk7CiB9CiAKLWlubGluZSBTY29wZVRy
YWNlcjo6flNjb3BlVHJhY2VyKCkKLXsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRF
bmQobV9uYW1lLCBtX2lkLCBtX2V4dHJhLmdldCgpKTsKK3RlbXBsYXRlPGNsYXNzIEFSRzFfVFlQ
RT4KK3N0YXRpYyBpbmxpbmUgaW50IGFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFi
bGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFyZzFOYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcxX1RZUEUmIGFyZzFWYWwpIHsKKyAg
ICBjb25zdCBpbnQgbnVtQXJncyA9IDE7CisgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1sxXTsK
KyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYXJnVmFsdWVzWzFdOworICAgIHNldFRyYWNlVmFsdWUo
YXJnMVZhbCwgJmFyZ1R5cGVzWzBdLCAmYXJnVmFsdWVzWzBdKTsKKyAgICByZXR1cm4gVFJBQ0Vf
RVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxl
ZCwgbmFtZSwgaWQsCisgICAgICAgIG51bUFyZ3MsICZhcmcxTmFtZSwgYXJnVHlwZXMsIGFyZ1Zh
bHVlcywKKyAgICAgICAgbm9UaHJlc2hvbGRCZWdpbklkLCBub1RocmVzaG9sZFZhbHVlLCBmbGFn
cyk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIGludGVybmFsCit0ZW1wbGF0ZTxjbGFzcyBBUkcxX1RZ
UEUsIGNsYXNzIEFSRzJfVFlQRT4KK3N0YXRpYyBpbmxpbmUgaW50IGFkZFRyYWNlRXZlbnQoY2hh
ciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg
Y2hhciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFyZzFOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcxX1RZ
UEUmIGFyZzFWYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGFyZzJOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcyX1RZ
UEUmIGFyZzJWYWwpIHsKKyAgICBjb25zdCBpbnQgbnVtQXJncyA9IDI7CisgICAgY29uc3QgY2hh
ciogYXJnTmFtZXNbMl0gPSB7IGFyZzFOYW1lLCBhcmcyTmFtZSB9OworICAgIHVuc2lnbmVkIGNo
YXIgYXJnVHlwZXNbMl07CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZ1ZhbHVlc1syXTsKKyAg
ICBzZXRUcmFjZVZhbHVlKGFyZzFWYWwsICZhcmdUeXBlc1swXSwgJmFyZ1ZhbHVlc1swXSk7Cisg
ICAgc2V0VHJhY2VWYWx1ZShhcmcyVmFsLCAmYXJnVHlwZXNbMV0sICZhcmdWYWx1ZXNbMV0pOwor
ICAgIHJldHVybiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAgICBwaGFz
ZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwKKyAgICAgICAgbnVtQXJncywgYXJnTmFtZXMs
IGFyZ1R5cGVzLCBhcmdWYWx1ZXMsCisgICAgICAgIG5vVGhyZXNob2xkQmVnaW5JZCwgbm9UaHJl
c2hvbGRWYWx1ZSwgZmxhZ3MpOworfQorCisvLyBVc2VkIGJ5IFRSQUNFX0VWRU5UeCBtYWNyby4g
RG8gbm90IHVzZSBkaXJlY3RseS4KK2NsYXNzIFRyYWNlRW5kT25TY29wZUNsb3NlIHsKK3B1Ymxp
YzoKKyAgICAvLyBOb3RlOiBtZW1iZXJzIG9mIG1fZGF0YSBpbnRlbnRpb25hbGx5IGxlZnQgdW5p
bml0aWFsaXplZC4gU2VlIGluaXRpYWxpemUuCisgICAgVHJhY2VFbmRPblNjb3BlQ2xvc2UoKSA6
IG1fcGRhdGEoMCkgeyB9CisgICAgflRyYWNlRW5kT25TY29wZUNsb3NlKCkKKyAgICB7CisgICAg
ICAgIGlmIChtX3BkYXRhKQorICAgICAgICAgICAgYWRkRXZlbnRJZkVuYWJsZWQoKTsKKyAgICB9
CisKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFi
bGVkLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lKQorICAgIHsKKyAgICAg
ICAgbV9kYXRhLmNhdGVnb3J5RW5hYmxlZCA9IGNhdGVnb3J5RW5hYmxlZDsKKyAgICAgICAgbV9k
YXRhLm5hbWUgPSBuYW1lOworICAgICAgICBtX3BkYXRhID0gJm1fZGF0YTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgLy8gQWRkIHRoZSBlbmQgZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIHN0aWxs
IGVuYWJsZWQuCisgICAgdm9pZCBhZGRFdmVudElmRW5hYmxlZCgpCisgICAgeworICAgICAgICAv
LyBPbmx5IGNhbGxlZCB3aGVuIG1fcGRhdGEgaXMgbm9uLW51bGwuCisgICAgICAgIGlmICgqbV9w
ZGF0YS0+Y2F0ZWdvcnlFbmFibGVkKSB7CisgICAgICAgICAgICBUUkFDRV9FVkVOVF9BUElfQURE
X1RSQUNFX0VWRU5UKAorICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0VORCwKKyAg
ICAgICAgICAgICAgICBtX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAg
bV9wZGF0YS0+bmFtZSwgbm9FdmVudElkLAorICAgICAgICAgICAgICAgIHplcm9OdW1BcmdzLCAw
LCAwLCAwLAorICAgICAgICAgICAgICAgIG5vVGhyZXNob2xkQmVnaW5JZCwgbm9UaHJlc2hvbGRW
YWx1ZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IFRoaXMgRGF0YSBzdHJ1Y3Qgd29ya2Fyb3VuZCBpcyB0byBhdm9pZCBpbml0aWFsaXppbmcgYWxs
IHRoZSBtZW1iZXJzCisgICAgLy8gaW4gRGF0YSBkdXJpbmcgY29uc3RydWN0aW9uIG9mIHRoaXMg
b2JqZWN0LCBzaW5jZSB0aGlzIG9iamVjdCBpcyBhbHdheXMKKyAgICAvLyBjb25zdHJ1Y3RlZCwg
ZXZlbiB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQuIElmIHRoZSBtZW1iZXJzIG9mIERhdGEgd2Vy
ZQorICAgIC8vIG1lbWJlcnMgb2YgdGhpcyBjbGFzcyBpbnN0ZWFkLCBjb21waWxlciB3YXJuaW5n
cyBvY2N1ciBhYm91dCBwb3RlbnRpYWwKKyAgICAvLyB1bmluaXRpYWxpemVkIGFjY2Vzc2VzLgor
ICAgIHN0cnVjdCBEYXRhIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlF
bmFibGVkOworICAgICAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIH07CisgICAgRGF0YSogbV9w
ZGF0YTsKKyAgICBEYXRhIG1fZGF0YTsKK307CisKKy8vIFVzZWQgYnkgVFJBQ0VfRVZFTlR4IG1h
Y3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5LgorY2xhc3MgVHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJl
c2hvbGQgeworcHVibGljOgorICAgIC8vIE5vdGU6IG1lbWJlcnMgb2YgbV9kYXRhIGludGVudGlv
bmFsbHkgbGVmdCB1bmluaXRpYWxpemVkLiBTZWUgaW5pdGlhbGl6ZS4KKyAgICBUcmFjZUVuZE9u
U2NvcGVDbG9zZVRocmVzaG9sZCgpIDogbV9wZGF0YSgwKSB7IH0KKyAgICB+VHJhY2VFbmRPblNj
b3BlQ2xvc2VUaHJlc2hvbGQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGRhdGEpCisgICAgICAg
ICAgICBhZGRFdmVudElmRW5hYmxlZCgpOworICAgIH0KKworICAgIC8vIENhbGxlZCBieSBtYWNy
b3Mgb25seSB3aGVuIHRyYWNpbmcgaXMgZW5hYmxlZCBhdCB0aGUgcG9pbnQgd2hlbiB0aGUgYmVn
aW4KKyAgICAvLyBldmVudCBpcyBhZGRlZC4KKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdW5z
aWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKyAg
ICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCkKKyAgICB7CisgICAgICAgIG1f
ZGF0YS5jYXRlZ29yeUVuYWJsZWQgPSBjYXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIG1fZGF0YS5u
YW1lID0gbmFtZTsKKyAgICAgICAgbV9kYXRhLnRocmVzaG9sZEJlZ2luSUQgPSB0aHJlc2hvbGRC
ZWdpbklEOworICAgICAgICBtX2RhdGEudGhyZXNob2xkID0gdGhyZXNob2xkOworICAgICAgICBt
X3BkYXRhID0gJm1fZGF0YTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8gQWRkIHRoZSBlbmQg
ZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIHN0aWxsIGVuYWJsZWQuCisgICAgdm9pZCBhZGRFdmVu
dElmRW5hYmxlZCgpCisgICAgeworICAgICAgICAvLyBPbmx5IGNhbGxlZCB3aGVuIG1fcGRhdGEg
aXMgbm9uLW51bGwuCisgICAgICAgIGlmICgqbV9wZGF0YS0+Y2F0ZWdvcnlFbmFibGVkKSB7Cisg
ICAgICAgICAgICBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAgICAgICAg
ICAgIFRSQUNFX0VWRU5UX1BIQVNFX0VORCwKKyAgICAgICAgICAgICAgICBtX3BkYXRhLT5jYXRl
Z29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+bmFtZSwgbm9FdmVudElkLAor
ICAgICAgICAgICAgICAgIHplcm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgIG1f
cGRhdGEtPnRocmVzaG9sZEJlZ2luSUQsIG1fcGRhdGEtPnRocmVzaG9sZCwKKyAgICAgICAgICAg
ICAgICBUUkFDRV9FVkVOVF9GTEFHX05PTkUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8g
VGhpcyBEYXRhIHN0cnVjdCB3b3JrYXJvdW5kIGlzIHRvIGF2b2lkIGluaXRpYWxpemluZyBhbGwg
dGhlIG1lbWJlcnMKKyAgICAvLyBpbiBEYXRhIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgdGhpcyBv
YmplY3QsIHNpbmNlIHRoaXMgb2JqZWN0IGlzIGFsd2F5cworICAgIC8vIGNvbnN0cnVjdGVkLCBl
dmVuIHdoZW4gdHJhY2luZyBpcyBkaXNhYmxlZC4gSWYgdGhlIG1lbWJlcnMgb2YgRGF0YSB3ZXJl
CisgICAgLy8gbWVtYmVycyBvZiB0aGlzIGNsYXNzIGluc3RlYWQsIGNvbXBpbGVyIHdhcm5pbmdz
IG9jY3VyIGFib3V0IHBvdGVudGlhbAorICAgIC8vIHVuaW5pdGlhbGl6ZWQgYWNjZXNzZXMuCisg
ICAgc3RydWN0IERhdGEgeworICAgICAgICBsb25nIGxvbmcgdGhyZXNob2xkOworICAgICAgICBj
b25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIGNvbnN0IGNoYXIq
IG5hbWU7CisgICAgICAgIGludCB0aHJlc2hvbGRCZWdpbklEOworICAgIH07CisgICAgRGF0YSog
bV9wZGF0YTsKKyAgICBEYXRhIG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFRyYWNlRXZl
bnQKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5o
CmluZGV4IDZjMGU3NGYxMjk3MmM3ZjM3NDYzNDBhZmY2OWIzMTJkYzI1Y2ExZTkuLjMyMjQ2NzNm
MTUyZWE4MTg4ZWZkNTgxOGVkOGQ4NDEzNzhiMzUwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oCkBAIC0yNDMsNiArMjQzLDU1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdHJh
Y2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRy
YSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwg
dm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKSB7IH0KIAorICAgIC8vIEdldCBhIHBvaW50ZXIg
dG8gdGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGdpdmVuIHRyYWNlIGNhdGVnb3J5LiBPbmx5Cisg
ICAgLy8gbG9uZy1saXZlZCBsaXRlcmFsIHN0cmluZ3Mgc2hvdWxkIGJlIGdpdmVuIGFzIHRoZSBj
YXRlZ29yeSBuYW1lLiBUaGUKKyAgICAvLyByZXR1cm5lZCBwb2ludGVyIGNhbiBiZSBoZWxkIHBl
cm1hbmVudGx5IGluIGEgbG9jYWwgc3RhdGljIGZvciBleGFtcGxlLgorICAgIC8vIElmIHRoZSB1
bnNpZ25lZCBjaGFyIGlzIG5vbi16ZXJvLCB0cmFjaW5nIGlzIGVuYWJsZWQuIElmIHRyYWNpbmcg
aXMKKyAgICAvLyBlbmFibGVkLCBhZGRUcmFjZUV2ZW50IGNhbiBiZSBjYWxsZWQuIEl0J3MgT0sg
aWYgdHJhY2luZyBpcyBkaXNhYmxlZAorICAgIC8vIGJldHdlZW4gdGhlIGxvYWQgb2YgdGhlIHRy
YWNpbmcgc3RhdGUgYW5kIHRoZSBjYWxsIHRvIGFkZFRyYWNlRXZlbnQsCisgICAgLy8gYmVjYXVz
ZSB0aGlzIGZsYWcgb25seSBwcm92aWRlcyBhbiBlYXJseSBvdXQgZm9yIGJlc3QgcGVyZm9ybWFu
Y2Ugd2hlbgorICAgIC8vIHRyYWNpbmcgaXMgZGlzYWJsZWQuCisgICAgdmlydHVhbCBjb25zdCB1
bnNpZ25lZCBjaGFyKiBnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3QgY2hhciogY2F0
ZWdvcnlOYW1lKSB7IHJldHVybiAwOyB9CisgICAgLy8gQWRkIGEgdHJhY2UgZXZlbnQgdG8gdGhl
IHBsYXRmb3JtIHRyYWNpbmcgc3lzdGVtLgorICAgIC8vIFJldHVybnMgdGhyZXNob2xkQmVnaW5J
ZCBmb3IgdXNlIGluIGEgY29ycmVzcG9uZGluZyBlbmQgYWRkVHJhY2VFdmVudCBjYWxsLgorICAg
IC8vIC0gcGhhc2Ugc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGV2ZW50LCBzdWNoIGFzIGJlZ2luLCBl
bmQsIGluc3RhbnQsIGV0Yy4KKyAgICAvLyAtIGNhdGVnb3J5RW5hYmxlZCBpcyB0aGUgcG9pbnRl
ciByZXR1cm5lZCBieSBnZXRDYXRlZ29yeUVuYWJsZWQuCisgICAgLy8gLSBuYW1lIGlzIHRoZSBu
YW1lIG9mIHRoZSBldmVudC4KKyAgICAvLyAtIGlkIG9wdGlvbmFsbHkgYWxsb3dzIGV2ZW50cyBv
ZiB0aGUgc2FtZSBuYW1lIHRvIGJlIGRpc3Rpbmd1aXNoZWQuCisgICAgLy8gLSBudW1BcmdzIHNw
ZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFyZ05hbWVzLCBhcmdUeXBlcywgYW5k
CisgICAgLy8gICBhcmdWYWx1ZXMuCisgICAgLy8gLSBhcmdOYW1lcyBpcyB0aGUgYXJyYXkgb2Yg
YXJndW1lbnQgbmFtZXMuCisgICAgLy8gLSBhcmdUeXBlcyBpcyB0aGUgYXJyYXkgb2YgYXJndW1l
bnQgdHlwZXM6IGJvb2wsIHVuc2lnbmVkIGxvbmcgbG9uZywKKyAgICAvLyAgIGxvbmcgbG9uZywg
ZG91YmxlLCB2b2lkKiwgY2hhciogKGxvbmctbGl2ZWQgbnVsbC10ZXJtaW5hdGVkIGNoYXIqIHN0
cmluZyksCisgICAgLy8gICBjaGFyKiAodGVtcG9yYXJ5IG51bGwtdGVybWluYXRlZCBjaGFyKiBz
dHJpbmcpLgorICAgIC8vIC0gYXJnVmFsdWVzIGlzIHRoZSBhcnJheSBvZiBhcmd1bWVudCB2YWx1
ZXMuCisgICAgLy8gLSB0aHJlc2hvbGRCZWdpbklkIG9wdGlvbmFsbHkgc3BlY2lmaWVzIHRoZSB2
YWx1ZSByZXR1cm5lZCBieSBhIHByZXZpb3VzCisgICAgLy8gICBjYWxsIHRvIGFkZFRyYWNlRXZl
bnQuCisgICAgLy8gLSB0aHJlc2hvbGQgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBt
aWNyb3NlY29uZHMgdGhhdCBtdXN0IGhhdmUKKyAgICAvLyAgIHBhc3NlZCBzaW5jZSB0aGUgZXZl
bnQgaWRlbnRpZmllZCBieSB0aHJlc2hvbGRCZWdpbklkIGZvciBib3RoIGV2ZW50cyB0bworICAg
IC8vICAgYmUgcmVjb3JkZWQuCisgICAgLy8gLSBmbGFncyBjYW4gYmUgMCBvciBvbmUgb3IgbW9y
ZSBvZiB0aGUgZm9sbG93aW5nLCBPUmVkIHRvZ2V0aGVyOgorICAgIC8vICAgLSB0cmVhdCBhbGwg
c3RyaW5ncyBhcyB0ZW1wb3Jhcnkgc28gdGhhdCB0aGV5IHdpbGwgYmUgY29waWVkIGJ5CisgICAg
Ly8gICAgIGFkZFRyYWNlRXZlbnQsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBjYXRlZ29yeSBuYW1l
LgorICAgIC8vICAgLSB1c2UgdGhlIGlkIGFyZ3VtZW50IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRo
ZSBldmVudCBmb3IgbWF0Y2hpbmcKKyAgICAvLyAgICAgd2l0aCBvdGhlciBldmVudHMgb2YgdGhl
IHNhbWUgbmFtZS4KKyAgICB2aXJ0dWFsIGludCBhZGRUcmFjZUV2ZW50KAorICAgICAgICBjaGFy
IHBoYXNlLAorICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWRGbGFn
LAorICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
aWQsCisgICAgICAgIGludCBudW1BcmdzLAorICAgICAgICBjb25zdCBjaGFyKiogYXJnTmFtZXMs
CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFyZ1R5cGVzLAorICAgICAgICBjb25zdCB1
bnNpZ25lZCBsb25nIGxvbmcqIGFyZ1ZhbHVlcywKKyAgICAgICAgaW50IHRocmVzaG9sZEJlZ2lu
SWQsCisgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQsCisgICAgICAgIHVuc2lnbmVkIGNoYXIg
ZmxhZ3MpIHsgcmV0dXJuIC0xOyB9CisgICAgLy8gTWFuZ2xlIHBvaW50ZXIgd2l0aCBhIGhhc2gg
c28gdGhhdCBpZiBpdCBvY2N1cnMgb24gbW9yZSB0aGFuIG9uZSBwcm9jZXNzLAorICAgIC8vIGl0
IHdpbGwgbm90IGNvbGxpZGUgaW4gdGhlIHRyYWNlIGRhdGEuIFBhc3MgdGhlIHJldHVybmVkIHZh
bHVlIHRvCisgICAgLy8gYWRkVHJhY2VFdmVudCBhcyB0aGUgaWQgcGFyYW1ldGVyLgorICAgIHZp
cnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIG1hbmdsZVBvaW50ZXJGb3JUcmFjaW5nKHZvaWQqIHBv
aW50ZXIpIHsgcmV0dXJuIDB1OyB9CisKICAgICAvLyBDYWxsYmFja3MgZm9yIHJlcG9ydGluZyBo
aXN0b2dyYW0gZGF0YS4KICAgICAvLyBDdXN0b21Db3VudHMgaGlzdG9ncmFtIGhhcyBleHBvbmVu
dGlhbCBidWNrZXQgc2l6ZXMsIHNvIHRoYXQgbWluPTEsIG1heD0xMDAwMDAwLCBidWNrZXRDb3Vu
dD01MCB3b3VsZCBkby4KICAgICB2aXJ0dWFsIHZvaWQgaGlzdG9ncmFtQ3VzdG9tQ291bnRzKGNv
bnN0IGNoYXIqIG5hbWUsIGludCBzYW1wbGUsIGludCBtaW4sIGludCBtYXgsIGludCBidWNrZXRD
b3VudCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9y
bVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0
LmNwcAppbmRleCAyNDY4MWVjOTYyZDc0ZWJmZWI1YWIzMzU1YzE5MDNhZmQ5ZTllY2Q2Li44NjY1
ZGY1YzcxZWNhZGQ1OTMzNTkyNmVkYTJjYzMyYTIxOTg4OGQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKQEAgLTk2MSw2ICs5NjEsMjkgQEAg
dm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9p
ZCogaWQsIGNvbnN0IGNoYXIqIGV4dHIKIHsKICAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+
dHJhY2VFdmVudEVuZChuYW1lLCBpZCwgZXh0cmEpOwogfQorY29uc3QgdW5zaWduZWQgY2hhciog
UGxhdGZvcm1TdXBwb3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3QgY2hhciog
Y2F0ZWdvcnlOYW1lKQoreworICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Z2V0
VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKGNhdGVnb3J5TmFtZSk7Cit9CitpbnQgUGxhdGZvcm1T
dXBwb3J0OjphZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZEZsYWcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnVHlwZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcg
bG9uZyogYXJnVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
dGhyZXNob2xkQmVnaW5JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9u
ZyBsb25nIHRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBmbGFncykKK3sKKyAgICByZXR1cm4gd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCkt
PmFkZFRyYWNlRXZlbnQoCisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWRGbGFnLCBuYW1l
LCBpZCwgbnVtQXJncywgYXJnTmFtZXMsIGFyZ1R5cGVzLCBhcmdWYWx1ZXMsICB0aHJlc2hvbGRC
ZWdpbklkLCB0aHJlc2hvbGQsIGZsYWdzKTsKK30KK3Vuc2lnbmVkIGxvbmcgbG9uZyBtYW5nbGVQ
b2ludGVyRm9yVHJhY2luZyh2b2lkKiBwb2ludGVyKQoreworICAgIHJldHVybiB3ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQoKS0+bWFuZ2xlUG9pbnRlckZvclRyYWNpbmcocG9pbnRlcik7Cit9CiAKIC8v
IFZpc2l0ZWQgTGlua3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124021</attachid>
            <date>2012-01-25 15:04:37 -0800</date>
            <delta_ts>2012-01-26 13:28:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120125150431.patch</filename>
            <type>text/plain</type>
            <size>54687</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYyZDI0OWRkNjFhMTNj
NzAyZTcwODZmZWIxMTAzNWI1Y2ZkMjUwNC4uNzdjODA3MjMxMjgyNjE1Nzc5OWViNTllYmYxZDJk
MzUzY2VlNmRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmV2YWx1YXRlKTogUmVwbGFj
ZSBvbGQgdHJhY2luZyBBUEkuCisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6OnRpbWUpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnNvbGU6OnRpbWVFbmQpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZUlEOjpUcmFjZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6
OlRyYWNlSUQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VTdHJp
bmdXaXRoQ29weTo6VHJhY2VTdHJpbmdXaXRoQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZVN0cmluZ1dpdGhDb3B5OjpvcGVyYXRvciBjb25zdCBjaGFyKiApOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6c2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNl
RXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpUcmFjZUVuZE9uU2NvcGVDbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5k
T25TY29wZUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25T
Y29wZUNsb3NlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRy
YWNlRW5kT25TY29wZUNsb3NlOjphZGRFdmVudElmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6VHJhY2VFbmRPblNj
b3BlQ2xvc2VUaHJlc2hvbGQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VF
bmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6On5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVz
aG9sZDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVu
ZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6YWRkRXZlbnRJZkVuYWJsZWQpOgorCiAyMDEyLTAxLTI0
ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBpbnNwZWN0b3IvZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0bWwgc3RhcnRl
ZCB0byBmYWlsIGFmdGVyIHIxMDU2NDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWEy
ZTQzYWZkNTQwNWZhNjQ3MWEwYmRhN2RiZDc0Mzk2MWI3MzZiMC4uMjhjY2Q1ZTIyNDhiN2NjMTI1
OWI5OGE4NDNhNTIzNWUxYWYwM2FkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxMi0wMS0yNSAgSm9obiBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgor
CisgICAgICAgIFtDaHJvbWl1bV0gQWRkIGNocm9taXVtLXN0eWxlIHRyYWNpbmcgc3VwcG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY4ODUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvZGUg
ZW5hYmxlcyBXZWJLaXQgdHJhY2UgZXZlbnRzIHRvIHBhc3MgdGhyb3VnaCBtb3JlIGRhdGEgdG8g
dGhlCisgICAgICAgIGNocm9taXVtIHBsYXRmb3JtIHRyYWNpbmcgQVBJIGFuZCBnZW5lcmFsbHkg
dG8gdXNlIHRoZSBmdWxsIHRyYWNpbmcKKyAgICAgICAgQVBJIHByb3ZpZGVkIGJ5IGNocm9taXVt
LgorCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmdldFRyYWNlQ2F0ZWdvcnlF
bmFibGVkRmxhZyk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6YWRk
VHJhY2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6bWFu
Z2xlUG9pbnRlckZvclRyYWNpbmcpOgorICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5h
YmxlZEZsYWcpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om1hbmdsZVBvaW50ZXJGb3JUcmFjaW5nKToKKwogMjAx
Mi0wMS0yNCAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gQWRkIFdlYktpdCBBUEkgZm9yIFBvaW50ZXIgTG9jawpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRleCAzYWFmMGIwZjcyNmY3NjQwODJiZjk3NDNhM2Jj
NTgzYTlmM2NlYWZiLi44OWMzZTQ4ZjdiMjJhMmRjYzIzN2E1ZTRjOGRhYmYwMGZjMGEzZTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtNzEsNiArNzEsMTAgQEAK
ICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBWOEV4dGVuc2lvbnMmIHN0
YXRpY0V4dGVuc2lvbnNMaXN0KCkKQEAgLTMzNSw3ICszMzksNyBAQCB2ODo6TG9jYWw8djg6OlZh
bHVlPiBWOFByb3h5OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2UsIE5v
ZGUqIG5vZAogICAgICAgICAvLyBDb21waWxlIHRoZSBzY3JpcHQuCiAgICAgICAgIHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBjb2RlID0gdjhFeHRlcm5hbFN0cmluZyhzb3VyY2Uuc291cmNlKCkpOwog
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZl
bnRCZWdpbigidjguY29tcGlsZSIsIG5vZGUsICIiKTsKKyAgICAgICAgVFJBQ0VfRVZFTlRfQkVH
SU4xKCJ2OCIsICJ2OC5jb21waWxlIiwgInVybCIsIHNvdXJjZS51cmwoKS5zdHJpbmcoKS5hc2Np
aSgpKTsKICNlbmRpZgogICAgICAgICBPd25QdHI8djg6OlNjcmlwdERhdGE+IHNjcmlwdERhdGEg
PSBwcmVjb21waWxlU2NyaXB0KGNvZGUsIHNvdXJjZS5jYWNoZWRTY3JpcHQoKSk7CiAKQEAgLTM0
MywxNSArMzQ3LDExIEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4UHJveHk6OmV2YWx1YXRlKGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZSwgTm9kZSogbm9kCiAgICAgICAgIC8vIDEsIHdo
ZXJlYXMgdjggc3RhcnRzIGF0IDAuCiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2Ny
aXB0ID0gY29tcGlsZVNjcmlwdChjb2RlLCBzb3VyY2UudXJsKCksIHNvdXJjZS5zdGFydFBvc2l0
aW9uKCksIHNjcmlwdERhdGEuZ2V0KCkpOwogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgICAg
ICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQoInY4LmNvbXBpbGUiLCBub2RlLCAiIik7
Ci0KLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4oInY4LnJ1biIsIG5v
ZGUsICIiKTsKKyAgICAgICAgVFJBQ0VfRVZFTlRfRU5EMCgidjgiLCAidjguY29tcGlsZSIpOwor
ICAgICAgICBUUkFDRV9FVkVOVDAoInY4IiwgInY4LnJ1biIpOwogI2VuZGlmCiAgICAgICAgIHJl
c3VsdCA9IHJ1blNjcmlwdChzY3JpcHQpOwogICAgIH0KLSNpZiBQTEFURk9STShDSFJPTUlVTSkK
LSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQoInY4LnJ1biIsIG5vZGUsICIiKTsK
LSNlbmRpZgogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlw
dChjb29raWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAppbmRleCAyNGUxM2E1ZmRiYTUzMDFi
Yjc1Mjk0Y2UzNDBiNWEwZmVhZDI0OWU2Li41MTVhYjM0ZDdhMDZkNGFjMjJiNTNmNGNmOGQ5Zjg0
YWYxYzVmNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKQEAgLTI5OSwxNiArMjk5LDE0IEBA
IHZvaWQgQ29uc29sZTo6dGltZShjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKHBhZ2UoKSwgdGl0bGUpOwogI2lm
IFBMQVRGT1JNKENIUk9NSVVNKQotICAgIGlmIChQbGF0Zm9ybVN1cHBvcnQ6OmlzVHJhY2VFdmVu
dEVuYWJsZWQoKSkKLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4odGl0
bGUudXRmOCgpLmRhdGEoKSwgMCwgMCk7CisgICAgVFJBQ0VfRVZFTlRfQ09QWV9CRUdJTjAoIndl
YmtpdCIsIHRpdGxlLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiB9CiAKIHZvaWQgQ29uc29sZTo6
dGltZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4s
IFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAjaWYgUExBVEZPUk0o
Q0hST01JVU0pCi0gICAgaWYgKFBsYXRmb3JtU3VwcG9ydDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgp
KQotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQodGl0bGUudXRmOCgpLmRh
dGEoKSwgMCwgMCk7CisgICAgVFJBQ0VfRVZFTlRfQ09QWV9FTkQwKCJ3ZWJraXQiLCB0aXRsZS51
dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3Rv
cENvbnNvbGVUaW1pbmcocGFnZSgpLCB0aXRsZSwgY2FsbFN0YWNrKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggYzhk
ZWQ2ZTI2YmE3ODRjNmUxNjM3NDFkNjYyOGU4NTkzOWMzNmE2ZS4uNDBjMjUzNjZmOGNiOWU4ZjNl
OWRkNjdiNzIxNTQ2NDJiNjUwYzZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTQxNiw5ICs0MTYsMTkgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICAvLyBUcmFjZSBFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHN0YXRpYyBib29sIGlzVHJhY2VF
dmVudEVuYWJsZWQoKTsKLSAgICBzdGF0aWMgdm9pZCB0cmFjZUV2ZW50QmVnaW4oY29uc3QgY2hh
ciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIqIGV4dHJhKTsKLSAgICBzdGF0aWMgdm9pZCB0cmFj
ZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqLCBjb25zdCBjaGFyKiBleHRyYSk7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxh
Zyhjb25zdCBjaGFyKiBjYXRlZ29yeU5hbWUpOworICAgIHN0YXRpYyBpbnQgYWRkVHJhY2VFdmVu
dChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWRGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1Bcmdz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiogYXJnTmFtZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFyZ1R5cGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcq
IGFyZ1ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRocmVzaG9sZEJl
Z2luSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpOworICAg
IHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgbWFuZ2xlUG9pbnRlckZvclRyYWNpbmcodm9pZCog
cG9pbnRlcik7CiAKICAgICAvLyBWaXNpdGVkIGxpbmtzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIHN0YXRpYyBMaW5rSGFzaCB2aXNp
dGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaAppbmRleCA2NTJmNTQwN2Nh
M2Y1NzUxNGNmYWEzZDZhOGJkZDA2ODI1N2I5Njk5Li5lMDU2MjIyN2EwMGU0MDA1Zjk4M2E4YmI2
MzZmZmMzM2VlM2Q1MzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9UcmFjZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
VHJhY2VFdmVudC5oCkBAIC0yMiw1MyArMjIsODQxIEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KKworLy8gVHJhY2UgZXZlbnRzIGFyZSBmb3IgdHJhY2tpbmcgYXBwbGlj
YXRpb24gcGVyZm9ybWFuY2UgYW5kIHJlc291cmNlIHVzYWdlLgorLy8gTWFjcm9zIGFyZSBwcm92
aWRlZCB0byB0cmFjazoKKy8vICAgIEJlZ2luIGFuZCBlbmQgb2YgZnVuY3Rpb24gY2FsbHMKKy8v
ICAgIENvdW50ZXJzCisvLworLy8gRXZlbnRzIGFyZSBpc3N1ZWQgYWdhaW5zdCBjYXRlZ29yaWVz
LiBXaGVyZWFzIExPRydzCisvLyBjYXRlZ29yaWVzIGFyZSBzdGF0aWNhbGx5IGRlZmluZWQsIFRS
QUNFIGNhdGVnb3JpZXMgYXJlIGNyZWF0ZWQKKy8vIGltcGxpY2l0bHkgd2l0aCBhIHN0cmluZy4g
Rm9yIGV4YW1wbGU6CisvLyAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJNWV9TVUJTWVNURU0iLCAi
U29tZUltcG9ydGFudEV2ZW50IikKKy8vCisvLyBFdmVudHMgY2FuIGJlIElOU1RBTlQsIG9yIGNh
biBiZSBwYWlycyBvZiBCRUdJTiBhbmQgRU5EIGluIHRoZSBzYW1lIHNjb3BlOgorLy8gICBUUkFD
RV9FVkVOVF9CRUdJTjAoIk1ZX1NVQlNZU1RFTSIsICJTb21ldGhpbmdDb3N0bHkiKQorLy8gICBk
b1NvbWV0aGluZ0Nvc3RseSgpCisvLyAgIFRSQUNFX0VWRU5UX0VORDAoIk1ZX1NVQlNZU1RFTSIs
ICJTb21ldGhpbmdDb3N0bHkiKQorLy8gTm90ZTogb3VyIHRvb2xzIGNhbid0IGFsd2F5cyBkZXRl
cm1pbmUgdGhlIGNvcnJlY3QgQkVHSU4vRU5EIHBhaXJzIHVubGVzcworLy8gdGhlc2UgYXJlIHVz
ZWQgaW4gdGhlIHNhbWUgc2NvcGUuIFVzZSBTVEFSVC9GSU5JU0ggbWFjcm9zIGlmIHlvdSBuZWVk
IHRoZW0KKy8vIHRvIGJlIGluIHNlcGFyYXRlIHNjb3Blcy4KKy8vCisvLyBBIGNvbW1vbiB1c2Ug
Y2FzZSBpcyB0byB0cmFjZSBlbnRpcmUgZnVuY3Rpb24gc2NvcGVzLiBUaGlzCisvLyBpc3N1ZXMg
YSB0cmFjZSBCRUdJTiBhbmQgRU5EIGF1dG9tYXRpY2FsbHk6CisvLyAgIHZvaWQgZG9Tb21ldGhp
bmdDb3N0bHkoKSB7CisvLyAgICAgVFJBQ0VfRVZFTlQwKCJNWV9TVUJTWVNURU0iLCAiZG9Tb21l
dGhpbmdDb3N0bHkiKTsKKy8vICAgICAuLi4KKy8vICAgfQorLy8KKy8vIEFkZGl0aW9uYWwgcGFy
YW1ldGVycyBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGV2ZW50OgorLy8gICB2b2lkIGRvU29t
ZXRoaW5nQ29zdGx5MihpbnQgaG93TXVjaCkgeworLy8gICAgIFRSQUNFX0VWRU5UMSgiTVlfU1VC
U1lTVEVNIiwgImRvU29tZXRoaW5nQ29zdGx5IiwKKy8vICAgICAgICAgImhvd011Y2giLCBob3dN
dWNoKTsKKy8vICAgICAuLi4KKy8vICAgfQorLy8KKy8vIFRoZSB0cmFjZSBzeXN0ZW0gd2lsbCBh
dXRvbWF0aWNhbGx5IGFkZCB0byB0aGlzIGluZm9ybWF0aW9uIHRoZQorLy8gY3VycmVudCBwcm9j
ZXNzIGlkLCB0aHJlYWQgaWQsIGFuZCBhIHRpbWVzdGFtcCBpbiBtaWNyb3NlY29uZHMuCisvLwor
Ly8gVG8gdHJhY2UgYW4gYXN5bmNocm9ub3VzIHByb2NlZHVyZSBzdWNoIGFzIGFuIElQQyBzZW5k
L3JlY2VpdmUsIHVzZSBTVEFSVCBhbmQKKy8vIEZJTklTSDoKKy8vICAgW3NpbmdsZSB0aHJlYWRl
ZCBzZW5kZXIgY29kZV0KKy8vICAgICBzdGF0aWMgaW50IHNlbmRfY291bnQgPSAwOworLy8gICAg
ICsrc2VuZF9jb3VudDsKKy8vICAgICBUUkFDRV9FVkVOVF9TVEFSVDAoImlwYyIsICJtZXNzYWdl
Iiwgc2VuZF9jb3VudCk7CisvLyAgICAgU2VuZChuZXcgTXlNZXNzYWdlKHNlbmRfY291bnQpKTsK
Ky8vICAgW3JlY2VpdmUgY29kZV0KKy8vICAgICB2b2lkIE9uTXlNZXNzYWdlKHNlbmRfY291bnQp
IHsKKy8vICAgICAgIFRSQUNFX0VWRU5UX0ZJTklTSDAoImlwYyIsICJtZXNzYWdlIiwgc2VuZF9j
b3VudCk7CisvLyAgICAgfQorLy8gVGhlIHRoaXJkIHBhcmFtZXRlciBpcyBhIHVuaXF1ZSBJRCB0
byBtYXRjaCBTVEFSVC9GSU5JU0ggcGFpcnMuCisvLyBTVEFSVCBhbmQgRklOSVNIIGNhbiBvY2N1
ciBvbiBhbnkgdGhyZWFkIG9mIGFueSB0cmFjZWQgcHJvY2Vzcy4gUG9pbnRlcnMgY2FuCisvLyBi
ZSB1c2VkIGZvciB0aGUgSUQgcGFyYW1ldGVyLCBhbmQgdGhleSB3aWxsIGJlIG1hbmdsZWQgaW50
ZXJuYWxseSBzbyB0aGF0CisvLyB0aGUgc2FtZSBwb2ludGVyIG9uIHR3byBkaWZmZXJlbnQgcHJv
Y2Vzc2VzIHdpbGwgbm90IG1hdGNoLiBGb3IgZXhhbXBsZToKKy8vICAgY2xhc3MgTXlUcmFjZWRD
bGFzcyB7CisvLyAgICBwdWJsaWM6CisvLyAgICAgTXlUcmFjZWRDbGFzcygpIHsKKy8vICAgICAg
IFRSQUNFX0VWRU5UX1NUQVJUMCgiY2F0ZWdvcnkiLCAiTXlUcmFjZWRDbGFzcyIsIHRoaXMpOwor
Ly8gICAgIH0KKy8vICAgICB+TXlUcmFjZWRDbGFzcygpIHsKKy8vICAgICAgIFRSQUNFX0VWRU5U
X0ZJTklTSDAoImNhdGVnb3J5IiwgIk15VHJhY2VkQ2xhc3MiLCB0aGlzKTsKKy8vICAgICB9Cisv
LyAgIH0KKy8vCisvLyBUcmFjZSBldmVudCBhbHNvIHN1cHBvcnRzIGNvdW50ZXJzLCB3aGljaCBp
cyBhIHdheSB0byB0cmFjayBhIHF1YW50aXR5CisvLyBhcyBpdCB2YXJpZXMgb3ZlciB0aW1lLiBD
b3VudGVycyBhcmUgY3JlYXRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgbWFjcm86CisvLyAgIFRSQUNF
X0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVyIiwgZ19teUNvdW50ZXJWYWx1ZSk7
CisvLworLy8gQ291bnRlcnMgYXJlIHByb2Nlc3Mtc3BlY2lmaWMuIFRoZSBtYWNybyBpdHNlbGYg
Y2FuIGJlIGlzc3VlZCBmcm9tIGFueQorLy8gdGhyZWFkLCBob3dldmVyLgorLy8KKy8vIFNvbWV0
aW1lcywgeW91IHdhbnQgdG8gdHJhY2sgdHdvIGNvdW50ZXJzIGF0IG9uY2UuIFlvdSBjYW4gZG8g
dGhpcyB3aXRoIHR3bworLy8gY291bnRlciBtYWNyb3M6CisvLyAgIFRSQUNFX0NPVU5URVIxKCJN
WV9TVUJTWVNURU0iLCAibXlDb3VudGVyMCIsIGdfbXlDb3VudGVyVmFsdWVbMF0pOworLy8gICBU
UkFDRV9DT1VOVEVSMSgiTVlfU1VCU1lTVEVNIiwgIm15Q291bnRlcjEiLCBnX215Q291bnRlclZh
bHVlWzFdKTsKKy8vIE9yIHlvdSBjYW4gZG8gaXQgd2l0aCBhIGNvbWJpbmVkIG1hY3JvOgorLy8g
ICBUUkFDRV9DT1VOVEVSMigiTVlfU1VCU1lTVEVNIiwgIm15Q291bnRlciIsCisvLyAgICAgICAi
Ynl0ZXNQaW5uZWQiLCBnX215Q291bnRlclZhbHVlWzBdLAorLy8gICAgICAgImJ5dGVzQWxsb2Nh
dGVkIiwgZ19teUNvdW50ZXJWYWx1ZVsxXSk7CisvLyBUaGlzIGluZGljYXRlcyB0byB0aGUgdHJh
Y2luZyBVSSB0aGF0IHRoZXNlIGNvdW50ZXJzIHNob3VsZCBiZSBkaXNwbGF5ZWQKKy8vIGluIGEg
c2luZ2xlIGdyYXBoLCBhcyBhIHN1bW1lZCBhcmVhIGNoYXJ0LgorLy8KKy8vIFNpbmNlIGNvdW50
ZXJzIGFyZSBpbiBhIGdsb2JhbCBuYW1lc3BhY2UsIHlvdSBtYXkgd2FudCB0byBkaXNlbWJpZ3Vh
dGUgd2l0aCBhCisvLyB1bmlxdWUgSUQsIGJ5IHVzaW5nIHRoZSBUUkFDRV9DT1VOVEVSX0lEKiB2
YXJpYXRpb25zLgorLy8KKy8vIEJ5IGRlZmF1bHQsIHRyYWNlIGNvbGxlY3Rpb24gaXMgY29tcGls
ZWQgaW4sIGJ1dCB0dXJuZWQgb2ZmIGF0IHJ1bnRpbWUuCisvLyBDb2xsZWN0aW5nIHRyYWNlIGRh
dGEgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBlbWJlZGRpbmcKKy8vIGFwcGxpY2F0aW9u
LiBJbiBDaHJvbWUncyBjYXNlLCBuYXZpZ2F0aW5nIHRvIGFib3V0OnRyYWNpbmcgd2lsbCB0dXJu
IG9uCisvLyB0cmFjaW5nIGFuZCBkaXNwbGF5IGRhdGEgY29sbGVjdGVkIGFjcm9zcyBhbGwgYWN0
aXZlIHByb2Nlc3Nlcy4KKy8vCisvLworLy8gTWVtb3J5IHNjb3Bpbmcgbm90ZToKKy8vIFRyYWNp
bmcgY29waWVzIHRoZSBwb2ludGVycywgbm90IHRoZSBzdHJpbmcgY29udGVudCwgb2YgdGhlIHN0
cmluZ3MgcGFzc2VkCisvLyBpbiBmb3IgY2F0ZWdvcnksIG5hbWUsIGFuZCBhcmdfbmFtZXMuIFRo
dXMsIHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsCisvLyBjYXVzZSBwcm9ibGVtczoKKy8vICAgICBj
aGFyKiBzdHIgPSBzdHJkdXAoImltcHBydGFudE5hbWUiKTsKKy8vICAgICBUUkFDRV9FVkVOVF9J
TlNUQU5UMCgiU1VCU1lTVEVNIiwgc3RyKTsgIC8vIEJBRCEKKy8vICAgICBmcmVlKHN0cik7ICAg
ICAgICAgICAgICAgICAgIC8vIFRyYWNlIHN5c3RlbSBub3cgaGFzIGRhbmdsaW5nIHBvaW50ZXIK
Ky8vCisvLyBUbyBhdm9pZCB0aGlzIGlzc3VlIHdpdGggdGhlIHxuYW1lfCBhbmQgfGFyZ19uYW1l
fCBwYXJhbWV0ZXJzLCB1c2UgdGhlCisvLyBUUkFDRV9FVkVOVF9DT1BZX1hYWCBvdmVybG9hZHMg
b2YgdGhlIG1hY3JvcyBhdCBhZGRpdGlvbmFsIHJ1bnRpbWUgb3ZlcmhlYWQuCisvLyBOb3Rlczog
VGhlIGNhdGVnb3J5IG11c3QgYWx3YXlzIGJlIGluIGEgbG9uZy1saXZlZCBjaGFyKiAoaS5lLiBz
dGF0aWMgY29uc3QpLgorLy8gICAgICAgIFRoZSB8YXJnX3ZhbHVlc3wsIHdoZW4gdXNlZCwgYXJl
IGFsd2F5cyBkZWVwIGNvcGllZCB3aXRoIHRoZSBfQ09QWQorLy8gICAgICAgIG1hY3Jvcy4KKy8v
CisvLyBXaGVuIGFyZSBzdHJpbmcgYXJndW1lbnQgdmFsdWVzIGNvcGllZDoKKy8vIGNvbnN0IGNo
YXIqIGFyZ192YWx1ZXMgYXJlIG9ubHkgcmVmZXJlbmNlZCBieSBkZWZhdWx0OgorLy8gICAgIFRS
QUNFX0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisvLyAgICAgICAgICAgICAgICAgICJhcmcx
IiwgImxpdGVyYWwgc3RyaW5nIGlzIG9ubHkgcmVmZXJlbmNlZCIpOworLy8gVXNlIFRSQUNFX1NU
Ul9DT1BZIHRvIGZvcmNlIGNvcHlpbmcgb2YgYSBjb25zdCBjaGFyKjoKKy8vICAgICBUUkFDRV9F
VkVOVDEoImNhdGVnb3J5IiwgIm5hbWUiLAorLy8gICAgICAgICAgICAgICAgICAiYXJnMSIsIFRS
QUNFX1NUUl9DT1BZKCJzdHJpbmcgd2lsbCBiZSBjb3BpZWQiKSk7CisvLyBzdGQ6OnN0cmluZyBh
cmdfdmFsdWVzIGFyZSBhbHdheXMgY29waWVkOgorLy8gICAgIFRSQUNFX0VWRU5UMSgiY2F0ZWdv
cnkiLCAibmFtZSIsCisvLyAgICAgICAgICAgICAgICAgICJhcmcxIiwgc3RkOjpzdHJpbmcoInN0
cmluZyB3aWxsIGJlIGNvcGllZCIpKTsKKy8vCisvLworLy8gVGhyZWFkIFNhZmV0eToKKy8vIEEg
dGhyZWFkIHNhZmUgc2luZ2xldG9uIGFuZCBtdXRleCBhcmUgdXNlZCBmb3IgdGhyZWFkIHNhZmV0
eS4gQ2F0ZWdvcnkKKy8vIGVuYWJsZWQgZmxhZ3MgYXJlIHVzZWQgdG8gbGltaXQgdGhlIHBlcmZv
cm1hbmNlIGltcGFjdCB3aGVuIHRoZSBzeXN0ZW0KKy8vIGlzIG5vdCBlbmFibGVkLgorLy8KKy8v
IFRSQUNFX0VWRU5UIG1hY3JvcyBmaXJzdCBjYWNoZSBhIHBvaW50ZXIgdG8gYSBjYXRlZ29yeS4g
VGhlIGNhdGVnb3JpZXMgYXJlCisvLyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgc2FmZSBhdCBh
bGwgdGltZXMsIGV2ZW4gYWZ0ZXIgZXhpdC4gRmV0Y2hpbmcgYQorLy8gY2F0ZWdvcnkgaXMgcHJv
dGVjdGVkIGJ5IHRoZSBUcmFjZUxvZzo6bG9ja18uIE11bHRpcGxlIHRocmVhZHMgaW5pdGlhbGl6
aW5nCisvLyB0aGUgc3RhdGljIHZhcmlhYmxlIGlzIHNhZmUsIGFzIHRoZXkgd2lsbCBiZSBzZXJp
YWxpemVkIGJ5IHRoZSBsb2NrIGFuZAorLy8gbXVsdGlwbGUgY2FsbHMgd2lsbCByZXR1cm4gdGhl
IHNhbWUgcG9pbnRlciB0byB0aGUgY2F0ZWdvcnkuCisvLworLy8gVGhlbiB0aGUgY2F0ZWdvcnlf
ZW5hYmxlZCBmbGFnIGlzIGNoZWNrZWQuIFRoaXMgaXMgYSB1bnNpZ25lZCBjaGFyLCBhbmQKKy8v
IG5vdCBpbnRlbmRlZCB0byBiZSBtdWx0aXRocmVhZCBzYWZlLiBJdCBvcHRpbWl6ZXMgYWNjZXNz
IHRvIGFkZFRyYWNlRXZlbnQKKy8vIHdoaWNoIGlzIHRocmVhZHNhZmUgaW50ZXJuYWxseSB2aWEg
VHJhY2VMb2c6OmxvY2tfLiBUaGUgZW5hYmxlZCBmbGFnIG1heQorLy8gY2F1c2Ugc29tZSB0aHJl
YWRzIHRvIGluY29ycmVjdGx5IGNhbGwgb3Igc2tpcCBjYWxsaW5nIGFkZFRyYWNlRXZlbnQgbmVh
cgorLy8gdGhlIHRpbWUgb2YgdGhlIHN5c3RlbSBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLiBU
aGlzIGlzIGFjY2VwdGFibGUgYXMKKy8vIHdlIHRvbGVyYXRlIHNvbWUgZGF0YSBsb3NzIHdoaWxl
IHRoZSBzeXN0ZW0gaXMgYmVpbmcgZW5hYmxlZC9kaXNhYmxlZCBhbmQKKy8vIGJlY2F1c2UgYWRk
VHJhY2VFdmVudCBpcyB0aHJlYWRzYWZlIGludGVybmFsbHkgYW5kIGNoZWNrcyB0aGUgZW5hYmxl
ZCBzdGF0ZQorLy8gYWdhaW4gdW5kZXIgbG9jay4KKy8vCisvLyBXaXRob3V0IHRoZSB1c2Ugb2Yg
dGhlc2Ugc3RhdGljIGNhdGVnb3J5IHBvaW50ZXJzIGFuZCBlbmFibGVkIGZsYWdzIGFsbAorLy8g
dHJhY2UgcG9pbnRzIHdvdWxkIGNhcnJ5IGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgY29zdCBv
ZiBhcXVpcmluZyBhIGxvY2sKKy8vIGFuZCByZXNvbHZpbmcgdGhlIGNhdGVnb3J5LgorCiAjaWZu
ZGVmIFRyYWNlRXZlbnRfaAogI2RlZmluZSBUcmFjZUV2ZW50X2gKIAorI2luY2x1ZGUgIkR5bmFt
aWNBbm5vdGF0aW9ucy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgotI2luY2x1ZGUg
PHd0Zi9Pd25BcnJheVB0ci5oPgorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisv
LyBJc3N1ZXMgYmVnaW4gdHJhY2UgZXZlbnQgaGVyZSBhbmQgZW5kIHRyYWNlIGV2ZW50IHdoZW4g
dGhlIGN1cnJlbnQgc2NvcGUgZW5kcy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlQobmFtZSwgaWQsIGV4
dHJhKSBUUkFDRV9FVkVOVDIoIndlYmtpdCIsIG5hbWUsICJpZCIsIGlkLCAiZXh0cmEiLCBleHRy
YSkKKworLy8gQnkgZGVmYXVsdCwgY29uc3QgY2hhciogYXJndW1lbnQgdmFsdWVzIGFyZSBhc3N1
bWVkIHRvIGhhdmUgbG9uZy1saXZlZCBzY29wZQorLy8gYW5kIHdpbGwgbm90IGJlIGNvcGllZC4g
VXNlIHRoaXMgbWFjcm8gdG8gZm9yY2UgYSBjb25zdCBjaGFyKiB0byBiZSBjb3BpZWQuCisjZGVm
aW5lIFRSQUNFX1NUUl9DT1BZKHN0cikgXAorICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNl
U3RyaW5nV2l0aENvcHkoc3RyKQorCisvLyBSZWNvcmRzIGEgcGFpciBvZiBiZWdpbiBhbmQgZW5k
IGV2ZW50cyBjYWxsZWQgIm5hbWUiIGZvciB0aGUgY3VycmVudAorLy8gc2NvcGUsIHdpdGggMCwg
MSBvciAyIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdvcnkgaXMgbm90CisvLyBl
bmFibGVkLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBz
dHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBs
aXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNFX0VW
RU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09Q
RUQoY2F0ZWdvcnksIG5hbWUpCisjZGVmaW5lIFRSQUNFX0VWRU5UMShjYXRlZ29yeSwgbmFtZSwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09Q
RUQoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VW
RU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcy
X3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoY2F0ZWdvcnksIG5h
bWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkK
KworLy8gUmVjb3JkcyBhIHNpbmdsZSBldmVudCBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LCB3
aXRoIDAsIDEgb3IgMgorLy8gYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBp
cyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzCisvLyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5
IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNz
IG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9J
TlNUQU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJnMV92
YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lOU1RBTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25h
bWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAorICAgICAg
ICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFf
dmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5U
X0NPUFlfSU5TVEFOVDAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0lOU1RB
TlQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9JTlNUQU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9u
YW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcx
X3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBSZWNvcmRzIGEgc2lu
Z2xlIEJFR0lOIGV2ZW50IGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHksIHdpdGggMCwgMSBvciAy
CisvLyBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhlIGNhdGVnb3J5IGlzIG5vdCBlbmFibGVk
LCB0aGVuIHRoaXMKKy8vIGRvZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3Ry
aW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0
ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVO
VF9CRUdJTjAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQo
VFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNF
X0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQkVHSU4xKGNhdGVnb3J5LCBu
YW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
KFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFD
RV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0JFR0lOMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAg
ICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRS
QUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9F
VkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1l
LCBhcmcyX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9CRUdJTjAoY2F0ZWdvcnksIG5h
bWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVH
SU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNk
ZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9CRUdJTjEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwg
YXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhB
U0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09Q
WSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9CRUdJTjIo
Y2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1l
LCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9Q
SEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19D
T1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwp
CisKKy8vIFJlY29yZHMgYSBzaW5nbGUgRU5EIGV2ZW50IGZvciAibmFtZSIgaW1tZWRpYXRlbHku
IElmIHRoZSBjYXRlZ29yeQorLy8gaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhp
bmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9u
IGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1
ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRU5EMChjYXRlZ29yeSwgbmFtZSkgXAor
ICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfRU5EMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcx
X3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRU5EMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1l
LCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBc
CisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlf
RU5EMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFD
RV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5U
X0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9FTkQxKGNhdGVnb3J5LCBuYW1l
LCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRS
QUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZF
TlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9D
T1BZX0VORDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAg
YXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFD
RV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5U
X0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFy
ZzJfdmFsKQorCisvLyBUaW1lIHRocmVzaG9sZCBldmVudDoKKy8vIE9ubHkgcmVjb3JkIHRoZSBl
dmVudCBpZiB0aGUgZHVyYXRpb24gaXMgZ3JlYXRlciB0aGFuIHRoZSBzcGVjaWZpZWQKKy8vIHRo
cmVzaG9sZF91cyAodGltZSBpbiBtaWNyb3NlY29uZHMpLgorLy8gUmVjb3JkcyBhIHBhaXIgb2Yg
YmVnaW4gYW5kIGVuZCBldmVudHMgY2FsbGVkICJuYW1lIiBmb3IgdGhlIGN1cnJlbnQKKy8vIHNj
b3BlLCB3aXRoIDAsIDEgb3IgMiBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhlIGNhdGVnb3J5
IGlzIG5vdAorLy8gZW5hYmxlZCwgdGhlbiB0aGlzIGRvZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdv
cnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRp
Y3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2Rl
ZmluZSBUUkFDRV9FVkVOVF9JRl9MT05HRVJfVEhBTjAodGhyZXNob2xkX3VzLCBjYXRlZ29yeSwg
bmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RI
QU4odGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSUZf
TE9OR0VSX1RIQU4xKCBcCisgICAgdGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9u
YW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZf
TE9OR0VSX1RIQU4oIFwKKyAgICAgICAgdGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSwgYXJn
MV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSUZfTE9OR0VSX1RIQU4yKCBc
CisgICAgdGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwg
YXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09Q
RURfSUZfTE9OR0VSX1RIQU4oIFwKKyAgICAgICAgdGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFt
ZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3Jk
cyB0aGUgdmFsdWUgb2YgYSBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHkuIFZhbHVl
CisvLyBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgYSAzMiBiaXQgaW50ZWdlci4KKy8vIC0gY2F0
ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0
YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgor
I2RlZmluZSBUUkFDRV9DT1VOVEVSMShjYXRlZ29yeSwgbmFtZSwgdmFsdWUpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAg
ICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgICJ2YWx1
ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUpKQorI2RlZmluZSBUUkFDRV9DT1BZX0NPVU5URVIx
KGNhdGVnb3J5LCBuYW1lLCB2YWx1ZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChU
UkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFD
RV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgInZhbHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2
YWx1ZSkpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlcyBvZiBhIG11bHRpLXBhcnRlZCBjb3VudGVy
IGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHkuCisvLyBUaGUgVUkgd2lsbCB0cmVhdCB2YWx1ZTEg
YW5kIHZhbHVlMiBhcyBwYXJ0cyBvZiBhIHdob2xlLCBkaXNwbGF5aW5nIHRoZWlyCisvLyB2YWx1
ZXMgYXMgYSBzdGFja2VkLWJhciBjaGFydC4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5n
cyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJh
bHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9DT1VOVEVS
MihjYXRlZ29yeSwgbmFtZSwgdmFsdWUxX25hbWUsIHZhbHVlMV92YWwsIFwKKyAgICAgICAgdmFs
dWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJB
Q0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0Vf
RVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgIHZhbHVlMV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+
KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZh
bHVlMl92YWwpKQorI2RlZmluZSBUUkFDRV9DT1BZX0NPVU5URVIyKGNhdGVnb3J5LCBuYW1lLCB2
YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3Zh
bCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9DT1VO
VEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwK
KyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwKKyAg
ICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisKKy8vIFJl
Y29yZHMgdGhlIHZhbHVlIG9mIGEgY291bnRlciBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LiBW
YWx1ZQorLy8gbXVzdCBiZSByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IGludGVnZXIuCisvLyAt
IGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1l
IChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFy
cy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRvIGRpc2FtYmlndWF0ZSBjb3VudGVycyB3aXRoIHRoZSBz
YW1lIG5hbWUuIEl0IG11c3QgZWl0aGVyCisvLyAgIGJlIGEgcG9pbnRlciBvciBhbiBpbnRlZ2Vy
IHZhbHVlIHVwIHRvIDY0IGJpdHMuIElmIGl0J3MgYSBwb2ludGVyLCB0aGUgYml0cworLy8gICB3
aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNoIG9mIHRoZSBwcm9jZXNzIElEIHNvIHRoYXQgdGhlIHNh
bWUgcG9pbnRlciBvbgorLy8gICB0d28gZGlmZmVyZW50IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xs
aWRlLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSX0lEMShjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVl
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhB
U0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZM
QUdfSEFTX0lELCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUpKQor
I2RlZmluZSBUUkFDRV9DT1BZX0NPVU5URVJfSUQxKGNhdGVnb3J5LCBuYW1lLCBpZCwgdmFsdWUp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFT
RV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxB
R19DT1BZIHwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQsIFwKKyAgICAgICAgInZhbHVlIiwgc3Rh
dGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlcyBvZiBhIG11bHRp
LXBhcnRlZCBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHkuCisvLyBUaGUgVUkgd2ls
bCB0cmVhdCB2YWx1ZTEgYW5kIHZhbHVlMiBhcyBwYXJ0cyBvZiBhIHdob2xlLCBkaXNwbGF5aW5n
IHRoZWlyCisvLyB2YWx1ZXMgYXMgYSBzdGFja2VkLWJhciBjaGFydC4KKy8vIC0gY2F0ZWdvcnkg
YW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mg
b3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorLy8gLSB8
aWR8IGlzIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGNvdW50ZXJzIHdpdGggdGhlIHNhbWUgbmFtZS4g
SXQgbXVzdCBlaXRoZXIKKy8vICAgYmUgYSBwb2ludGVyIG9yIGFuIGludGVnZXIgdmFsdWUgdXAg
dG8gNjQgYml0cy4gSWYgaXQncyBhIHBvaW50ZXIsIHRoZSBiaXRzCisvLyAgIHdpbGwgYmUgeG9y
ZWQgd2l0aCBhIGhhc2ggb2YgdGhlIHByb2Nlc3MgSUQgc28gdGhhdCB0aGUgc2FtZSBwb2ludGVy
IG9uCisvLyAgIHR3byBkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90IGNvbGxpZGUuCisjZGVm
aW5lIFRSQUNFX0NPVU5URVJfSUQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgdmFsdWUxX25hbWUsIHZh
bHVlMV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBc
CisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQsIFwK
KyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwKKyAg
ICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisjZGVmaW5l
IFRSQUNFX0NPUFlfQ09VTlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZTFfbmFtZSwg
dmFsdWUxX3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIs
IFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkgfCBU
UkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgXAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3RhdGljX2Nh
c3Q8aW50Pih2YWx1ZTFfdmFsKSwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGljX2Nhc3Q8
aW50Pih2YWx1ZTJfdmFsKSkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBTVEFSVCBldmVudCBjYWxs
ZWQgIm5hbWUiIGltbWVkaWF0ZWx5LCB3aXRoIDAsIDEgb3IgMgorLy8gYXNzb2NpYXRlZCBhcmd1
bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzCisvLyBkb2Vz
IG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxp
Y2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90
IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRvIG1hdGNoIHRoZSBTVEFSVCBl
dmVudCB3aXRoIHRoZSBGSU5JU0ggZXZlbnQuIEl0IG11c3QgZWl0aGVyCisvLyAgIGJlIGEgcG9p
bnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElmIGl0J3MgYSBwb2ludGVy
LCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNoIG9mIHRoZSBwcm9jZXNz
IElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28gZGlmZmVyZW50IHByb2Nl
c3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9FVkVOVF9TVEFSVDAoY2F0ZWdv
cnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJB
Q0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFD
RV9FVkVOVF9GTEFHX0hBU19JRCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfU1RBUlQxKGNhdGVnb3J5
LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVn
b3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQsIGFyZzFfbmFtZSwgYXJnMV92
YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NUQVJUMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFf
bmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBc
CisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQsIFwK
KyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfQ09QWV9TVEFSVDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwK
KyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCB8IFRS
QUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9TVEFSVDEoY2F0
ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwKKyAgICAgICAg
Y2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCB8IFRSQUNFX0VWRU5U
X0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9DT1BZX1NUQVJUMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNh
dGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgfCBUUkFDRV9FVkVOVF9G
TEFHX0NPUFksIFwKKyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcy
X3ZhbCkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBGSU5JU0ggZXZlbnQgZm9yICJuYW1lIiBpbW1l
ZGlhdGVseS4gSWYgdGhlIGNhdGVnb3J5CisvLyBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzIGRv
ZXMgbm90aGluZy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRklOSVNIMChjYXRlZ29yeSwgbmFtZSwg
aWQpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9Q
SEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9G
TEFHX0hBU19JRCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRklOSVNIMShjYXRlZ29yeSwgbmFtZSwg
aWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERf
V0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5h
bWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNk
ZWZpbmUgVFJBQ0VfRVZFTlRfRklOSVNIMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwg
YXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAg
ICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBcCisgICAg
ICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFRS
QUNFX0VWRU5UX0NPUFlfRklOSVNIMChjYXRlZ29yeSwgbmFtZSwgaWQpIFwKKyAgICBJTlRFUk5B
TF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCB8IFRSQUNF
X0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9GSU5JU0gxKGNhdGVn
b3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEIHwgVFJBQ0VfRVZFTlRf
RkxBR19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNF
X0VWRU5UX0NPUFlfRklOSVNIMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEIHwgVFJBQ0VfRVZFTlRf
RkxBR19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJn
Ml92YWwpCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEltcGxlbWVudGF0aW9uIHNw
ZWNpZmljIHRyYWNpbmcgQVBJIGRlZmluaXRpb25zLgorCisvLyBHZXQgYSBwb2ludGVyIHRvIHRo
ZSBlbmFibGVkIHN0YXRlIG9mIHRoZSBnaXZlbiB0cmFjZSBjYXRlZ29yeS4gT25seQorLy8gbG9u
Zy1saXZlZCBsaXRlcmFsIHN0cmluZ3Mgc2hvdWxkIGJlIGdpdmVuIGFzIHRoZSBjYXRlZ29yeSBu
YW1lLiBUaGUgcmV0dXJuZWQKKy8vIHBvaW50ZXIgY2FuIGJlIGhlbGQgcGVybWFuZW50bHkgaW4g
YSBsb2NhbCBzdGF0aWMgZm9yIGV4YW1wbGUuIElmIHRoZQorLy8gdW5zaWduZWQgY2hhciBpcyBu
b24temVybywgdHJhY2luZyBpcyBlbmFibGVkLiBJZiB0cmFjaW5nIGlzIGVuYWJsZWQsCisvLyBU
UkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UIGNhbiBiZSBjYWxsZWQuIEl0J3MgT0sgaWYg
dHJhY2luZyBpcyBkaXNhYmxlZAorLy8gYmV0d2VlbiB0aGUgbG9hZCBvZiB0aGUgdHJhY2luZyBz
dGF0ZSBhbmQgdGhlIGNhbGwgdG8KKy8vIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQs
IGJlY2F1c2UgdGhpcyBmbGFnIG9ubHkgcHJvdmlkZXMgYW4gZWFybHkgb3V0CisvLyBmb3IgYmVz
dCBwZXJmb3JtYW5jZSB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQuCisvLyBjb25zdCB1bnNpZ25l
ZCBjaGFyKgorLy8gICAgIFRSQUNFX0VWRU5UX0FQSV9HRVRfQ0FURUdPUllfRU5BQkxFRChjb25z
dCBjaGFyKiBjYXRlZ29yeV9uYW1lKQorI2RlZmluZSBUUkFDRV9FVkVOVF9BUElfR0VUX0NBVEVH
T1JZX0VOQUJMRUQgXAorICAgIFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6Z2V0VHJhY2VDYXRl
Z29yeUVuYWJsZWRGbGFnCisKKy8vIEFkZCBhIHRyYWNlIGV2ZW50IHRvIHRoZSBwbGF0Zm9ybSB0
cmFjaW5nIHN5c3RlbS4gUmV0dXJucyB0aHJlc2hvbGRCZWdpbklkCisvLyBmb3IgdXNlIGluIGEg
Y29ycmVzcG9uZGluZyBlbmQgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCBjYWxsLgor
Ly8gaW50IFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisvLyAgICAgICAgICAgICAg
ICAgICAgY2hhciBwaGFzZSwKKy8vICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBjYXRlZ29yeV9lbmFibGVkLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IG5hbWUsCisvLyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorLy8g
ICAgICAgICAgICAgICAgICAgIGludCBudW1fYXJncywKKy8vICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiogYXJnX25hbWVzLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGFyZ190eXBlcywKKy8vICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBsb25nIGxvbmcqIGFyZ192YWx1ZXMsCisvLyAgICAgICAgICAgICAgICAgICAgaW50IHRocmVz
aG9sZEJlZ2luSUQsCisvLyAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCwK
Ky8vICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UIFwKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVN1cHBv
cnQ6OmFkZFRyYWNlRXZlbnQKKworLy8gTWFuZ2xlIHBvaW50ZXIgd2l0aCBhIGhhc2ggc28gdGhh
dCBpZiBpdCBvY2N1cnMgb24gbW9yZSB0aGFuIG9uZSBwcm9jZXNzLAorLy8gaXQgd2lsbCBub3Qg
Y29sbGlkZSBpbiB0aGUgdHJhY2UgZGF0YS4gUGFzcyB0aGUgcmV0dXJuZWQgdmFsdWUgdG8KKy8v
IFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQgYXMgdGhlIGlkIHBhcmFtZXRlci4KKy8v
IHVuc2lnbmVkIGxvbmcgbG9uZyBUUkFDRV9FVkVOVF9BUElfR0VUX0lEX0ZST01fUE9JTlRFUih2
b2lkKiBwb2ludGVyKQorI2RlZmluZSBUUkFDRV9FVkVOVF9BUElfR0VUX0lEX0ZST01fUE9JTlRF
UiBcCisgICAgV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjptYW5nbGVQb2ludGVyRm9yVHJhY2lu
ZworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiAvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6
IHRyYWNlIGV2ZW50IG1hY3JvcyBjcmVhdGUgdGVtcG9yYXJ5IHZhcmlhYmxlcwogLy8gdG8ga2Vl
cCBpbnN0cnVtZW50YXRpb24gb3ZlcmhlYWQgbG93LiBUaGVzZSBtYWNyb3MgZ2l2ZSBlYWNoIHRl
bXBvcmFyeQogLy8gdmFyaWFibGUgYSB1bmlxdWUgbmFtZSBiYXNlZCBvbiB0aGUgbGluZSBudW1i
ZXIgdG8gcHJldmVudCBuYW1lIGNvbGxpc3Npb25zLgotI2RlZmluZSBUUkFDRV9FVkVOVF9NQUtF
X1VOSVFVRV9JREVOVElGSUVSMyhhLCBiKSBhIyNiCi0jZGVmaW5lIFRSQUNFX0VWRU5UX01BS0Vf
VU5JUVVFX0lERU5USUZJRVIyKGEsIGIpIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJ
RVIzKGEsIGIpCi0jZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIobmFt
ZV9wcmVmaXgpIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIyKG5hbWVfcHJlZml4
LCBfX0xJTkVfXykKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMyhhLCBiKSBcCisg
ICAgdHJhY2VfZXZlbnRfdW5pcXVlXyMjYSMjYgorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9VSUQyKGEsIGIpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQzKGEsIGIpCisjZGVm
aW5lIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChuYW1lX3ByZWZpeCkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX1VJRDIobmFtZV9wcmVmaXgsIF9fTElORV9fKQorCisvLyBJbXBsZW1lbnRhdGlv
biBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkuCisvLyAt
IFdURl9BTk5PVEFURV9CRU5JR05fUkFDRSwgc2VlIFRocmVhZCBTYWZldHkgYWJvdmUuCisjZGVm
aW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KSBcCisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIqIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRz
dGF0aWMpID0gMDsgXAorICAgIFdURl9BTk5PVEFURV9CRU5JR05fUkFDRSgmSU5URVJOQUxUUkFD
RUVWRU5UVUlEKGNhdHN0YXRpYyksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRy
YWNlX2V2ZW50IGNhdGVnb3J5Iik7IFwKKyAgICBpZiAoIUlOVEVSTkFMVFJBQ0VFVkVOVFVJRChj
YXRzdGF0aWMpKSBcCisgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSA9IFwK
KyAgICAgICAgICBUUkFDRV9FVkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJMRUQoY2F0ZWdvcnkp
OworCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBz
dGF0aWMgY2F0ZWdvcnkgYW5kIGFkZAorLy8gZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJs
ZWQuCisjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERChpZ25vcmUpICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREKHBoYXNlLCBjYXRlZ29yeSwgbmFtZSwgZmxhZ3MsIC4uLikgXAorICAgIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIGlm
ICgqSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAgICAgV2ViQ29yZTo6
VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAgICAgICAgIHBoYXNlLCBJTlRFUk5BTFRS
QUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgbmFtZSwgXAorICAgICAgICAgIFdlYkNvcmU6OlRyYWNl
RXZlbnQ6Om5vRXZlbnRJZCwgZmxhZ3MsICMjX19WQV9BUkdTX18pOyBcCisgICAgfQorI2VuZGlm
CisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0
YXRpYyBjYXRlZ29yeSBhbmQgYWRkIGJlZ2luCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMg
ZW5hYmxlZC4gQWxzbyBhZGRzIHRoZSBlbmQgZXZlbnQgd2hlbiB0aGUgc2NvcGUKKy8vIGVuZHMu
CisjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9TQ09QRUQoaWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUsIC4uLikgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIFdlYkNv
cmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlIFwKKyAgICAgICAgSU5URVJOQUxU
UkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVO
VFVJRChjYXRzdGF0aWMpKSB7IFwKKyAgICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OmFkZFRyYWNl
RXZlbnQoIFwKKyAgICAgICAgICBUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICAg
IElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgbmFtZSwgV2Vi
Q29yZTo6VHJhY2VFdmVudDo6bm9FdmVudElkLCBcCisgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxB
R19OT05FLCAjI19fVkFfQVJHU19fKTsgXAorICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHBy
b2ZpbGVTY29wZSkuaW5pdGlhbGl6ZSggXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJ
RChjYXRzdGF0aWMpLCBuYW1lKTsgXAorICAgIH0KKyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlv
biBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFk
ZCBiZWdpbgorLy8gZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuIEFsc28gYWRkcyB0
aGUgZW5kIGV2ZW50IHdoZW4gdGhlIHNjb3BlCisvLyBlbmRzLiBJZiB0aGUgZWxhcHNlZCB0aW1l
IGlzIDwgdGhyZXNob2xkIHRpbWUsIHRoZSBiZWdpbi9lbmQgcGFpciBpcyBlcmFzZWQuCisjaWYg
Q09NUElMRVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RF9TQ09QRURfSUZfTE9OR0VSX1RIQU4oaWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5l
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4odGhyZXNob2xk
LCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9HRVRfQ0FURUdPUllfSU5GTyhjYXRlZ29yeSk7IFwKKyAgICBXZWJDb3JlOjpUcmFjZUV2
ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCBcCisgICAgICAgIElOVEVSTkFMVFJB
Q0VFVkVOVFVJRChwcm9maWxlU2NvcGUpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZFTlRV
SUQoY2F0c3RhdGljKSkgeyBcCisgICAgICBpbnQgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGJlZ2lu
X2V2ZW50X2lkKSA9IFwKKyAgICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVu
dCggXAorICAgICAgICAgICAgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgICAg
IElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgICBuYW1lLCBX
ZWJDb3JlOjpUcmFjZUV2ZW50Ojpub0V2ZW50SWQsIFwKKyAgICAgICAgICAgIFRSQUNFX0VWRU5U
X0ZMQUdfTk9ORSwgIyNfX1ZBX0FSR1NfXyk7IFwKKyAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJ
RChwcm9maWxlU2NvcGUpLmluaXRpYWxpemUoIFwKKyAgICAgICAgICBJTlRFUk5BTFRSQUNFRVZF
TlRVSUQoY2F0c3RhdGljKSwgbmFtZSwgXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJ
RChiZWdpbl9ldmVudF9pZCksIHRocmVzaG9sZCk7IFwKKyAgICB9CisjZW5kaWYKKworLy8gSW1w
bGVtZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVn
b3J5IGFuZCBhZGQKKy8vIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLgorI2lmIENP
TVBJTEVSKE1TVkM3X09SX0xPV0VSKQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERf
V0lUSF9JRChpZ25vcmUpICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREX1dJVEhfSUQocGhhc2UsIGNhdGVnb3J5LCBuYW1lLCBpZCwgZmxhZ3MsIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpOyBcCisgICAgaWYgKCpJ
TlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkgeyBcCisgICAgICBXZWJDb3JlOjpUcmFj
ZUV2ZW50OjphZGRUcmFjZUV2ZW50KCBcCisgICAgICAgICAgcGhhc2UsIElOVEVSTkFMVFJBQ0VF
VkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgbmFtZSwgV2ViQ29yZTo6VHJhY2VFdmVu
dDo6VHJhY2VJRChpZCkuZGF0YSgpLCBmbGFncywgXAorICAgICAgICAgICMjX19WQV9BUkdTX18p
OyBcCisgICAgfQorI2VuZGlmCisKKy8vIE5vdGVzIHJlZ2FyZGluZyB0aGUgZm9sbG93aW5nIGRl
ZmluaXRpb25zOgorLy8gTmV3IHZhbHVlcyBjYW4gYmUgYWRkZWQgYW5kIHByb3BhZ2F0ZWQgdG8g
dGhpcmQgcGFydHkgbGlicmFyaWVzLCBidXQgZXhpc3RpbmcKKy8vIGRlZmluaXRpb25zIG11c3Qg
bmV2ZXIgYmUgY2hhbmdlZCwgYmVjYXVzZSB0aGlyZCBwYXJ0eSBsaWJyYXJpZXMgbWF5IHVzZSBv
bGQKKy8vIGRlZmluaXRpb25zLgorCisvLyBQaGFzZSBpbmRpY2F0ZXMgdGhlIG5hdHVyZSBvZiBh
biBldmVudCBlbnRyeS4gRS5nLiBwYXJ0IG9mIGEgYmVnaW4vZW5kIHBhaXIuCisjZGVmaW5lIFRS
QUNFX0VWRU5UX1BIQVNFX0JFR0lOICAgICgnQicpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNF
X0VORCAgICAgICgnRScpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQgICgnSScp
CisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJUICAgICgnUycpCisjZGVmaW5lIFRSQUNF
X0VWRU5UX1BIQVNFX0ZJTklTSCAgICgnRicpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX01F
VEFEQVRBICgnTScpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIgICgnQycpCisK
Ky8vIEZsYWdzIGZvciBjaGFuZ2luZyB0aGUgYmVoYXZpb3Igb2YgVFJBQ0VfRVZFTlRfQVBJX0FE
RF9UUkFDRV9FVkVOVC4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxBR19OT05FICAgICAgICAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMCkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZMQUdfQ09Q
WSAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEgPDwgMCkpCisjZGVmaW5lIFRS
QUNFX0VWRU5UX0ZMQUdfSEFTX0lEICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEg
PDwgMSkpCisKKy8vIFR5cGUgdmFsdWVzIGZvciBpZGVudGlmeWluZyB0eXBlcyBpbiB0aGUgVHJh
Y2VWYWx1ZSB1bmlvbi4KKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9CT09MICAgICAgICAgKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX1VJ
TlQgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMikpCisjZGVmaW5lIFRSQUNF
X1ZBTFVFX1RZUEVfSU5UICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigzKSkK
KyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9ET1VCTEUgICAgICAgKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KDQpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX1BPSU5URVIgICAgICAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNSkpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfU1RS
SU5HICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig2KSkKKyNkZWZpbmUgVFJBQ0Vf
VkFMVUVfVFlQRV9DT1BZX1NUUklORyAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDcpKQog
Ci0vLyBJc3N1ZXMgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4gYW5kIHRyYWNlRXZl
bnRFbmQgY2FsbHMgZm9yIHRoZSBlbmNsb3Npbmcgc2NvcGUKLSNkZWZpbmUgVFJBQ0VfRVZFTlQo
bmFtZSwgaWQsIGV4dHJhKSBXZWJDb3JlOjppbnRlcm5hbDo6U2NvcGVUcmFjZXIgVFJBQ0VfRVZF
TlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihfX3RyYWNlRXZlbnRTY29wZSkobmFtZSwgaWQsIGV4
dHJhKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgaW50ZXJuYWwgeworbmFt
ZXNwYWNlIFRyYWNlRXZlbnQgewogCi0vLyBVc2VkIGJ5IFRSQUNFX0VWRU5UIG1hY3JvLiBEbyBu
b3QgdXNlIGRpcmVjdGx5LgotY2xhc3MgU2NvcGVUcmFjZXIgeworLy8gU3BlY2lmeSB0aGVzZSB2
YWx1ZXMgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBvZiBhZGRUcmFjZUV2ZW50IGlz
IG5vdAorLy8gdXNlZC4KK2NvbnN0IGludCB6ZXJvTnVtQXJncyA9IDA7Citjb25zdCBpbnQgbm9U
aHJlc2hvbGRCZWdpbklkID0gLTE7Citjb25zdCBsb25nIGxvbmcgbm9UaHJlc2hvbGRWYWx1ZSA9
IDA7Citjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgbm9FdmVudElkID0gMDsKKworLy8gVHJhY2VJ
RCBlbmNhcHN1bGF0ZXMgYW4gSUQgdGhhdCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIgb3IgcG9p
bnRlci4gUG9pbnRlcnMKKy8vIGFyZSBtYW5nbGVkIHdpdGggdGhlIFByb2Nlc3MgSUQgc28gdGhh
dCB0aGV5IGFyZSB1bmxpa2VseSB0byBjb2xsaWRlIHdoZW4gdGhlCisvLyBzYW1lIHBvaW50ZXIg
aXMgdXNlZCBvbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorY2xhc3MgVHJhY2VJRCB7CiBwdWJsaWM6
Ci0gICAgU2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIqIGV4
dHJhKTsKLSAgICB+U2NvcGVUcmFjZXIoKTsKKyAgICBleHBsaWNpdCBUcmFjZUlEKHZvaWQqIHJo
cykgOgorICAgICAgICBtX2RhdGEoVFJBQ0VfRVZFTlRfQVBJX0dFVF9JRF9GUk9NX1BPSU5URVIo
cmhzKSkgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBsb25nIGxvbmcgcmhzKSA6
IG1fZGF0YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgbG9uZyByaHMp
IDogbV9kYXRhKHJocykgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBpbnQgcmhz
KSA6IG1fZGF0YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgc2hvcnQg
cmhzKSA6IG1fZGF0YShyaHMpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgY2hh
ciByaHMpIDogbV9kYXRhKHJocykgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChsb25nIGxvbmcg
cmhzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHJo
cykpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQobG9uZyByaHMpIDogbV9kYXRhKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ocmhzKSkgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChp
bnQgcmhzKSA6IG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHJocykpIHsg
fQorICAgIGV4cGxpY2l0IFRyYWNlSUQoc2hvcnQgcmhzKSA6IG1fZGF0YShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KHJocykpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQoc2lnbmVk
IGNoYXIgcmhzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxv
bmc+KHJocykpIHsgfQorCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9kYXRh
OworfTsKKworLy8gU2ltcGxlIHVuaW9uIHRvIHN0b3JlIHZhcmlvdXMgdHlwZXMgYXMgdW5zaWdu
ZWQgbG9uZyBsb25nLgordW5pb24gVHJhY2VWYWx1ZVVuaW9uIHsKKyAgICBib29sIG1fYm9vbDsK
KyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV91aW50OworICAgIGxvbmcgbG9uZyBtX2ludDsKKyAg
ICBkb3VibGUgbV9kb3VibGU7CisgICAgY29uc3Qgdm9pZCogbV9wb2ludGVyOworICAgIGNvbnN0
IGNoYXIqIG1fc3RyaW5nOworfTsKIAorLy8gU2ltcGxlIGNvbnRhaW5lciBmb3IgY29uc3QgY2hh
ciogdGhhdCBzaG91bGQgYmUgY29waWVkIGluc3RlYWQgb2YgcmV0YWluZWQuCitjbGFzcyBUcmFj
ZVN0cmluZ1dpdGhDb3B5IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBUcmFjZVN0cmluZ1dpdGhD
b3B5KGNvbnN0IGNoYXIqIHN0cikgOiBtX3N0cihzdHIpIHsgfQorICAgIG9wZXJhdG9yIGNvbnN0
IGNoYXIqICgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyOyB9CiBwcml2YXRlOgotICAgIGNvbnN0IGNo
YXIqIG1fbmFtZTsKLSAgICB2b2lkKiBtX2lkOwotICAgIE93bkFycmF5UHRyPGNoYXI+IG1fZXh0
cmE7CisgICAgY29uc3QgY2hhciogbV9zdHI7CiB9OwogCi1pbmxpbmUgU2NvcGVUcmFjZXI6OlNj
b3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkK
LSAgICA6IG1fbmFtZShuYW1lKQotICAgICwgbV9pZChpZCkKLXsKLSAgICBQbGF0Zm9ybVN1cHBv
cnQ6OnRyYWNlRXZlbnRCZWdpbihuYW1lLCBpZCwgZXh0cmEpOyBcCi0gICAgaWYgKGV4dHJhICYm
IFBsYXRmb3JtU3VwcG9ydDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgpKQotICAgICAgICBtX2V4dHJh
ID0gYWRvcHRBcnJheVB0cihzdHJkdXAoZXh0cmEpKTsKKy8vIERlZmluZSBzZXRUcmFjZVZhbHVl
IGZvciBlYWNoIGFsbG93ZWQgdHlwZS4gSXQgc3RvcmVzIHRoZSB0eXBlIGFuZAorLy8gdmFsdWUg
aW4gdGhlIHJldHVybiBhcmd1bWVudHMuIFRoaXMgYWxsb3dzIHRoaXMgQVBJIHRvIGF2b2lkIGRl
Y2xhcmluZyBhbnkKKy8vIHN0cnVjdHVyZXMgc28gdGhhdCBpdCBpcyBwb3J0YWJsZSB0byB0aGly
ZF9wYXJ0eSBsaWJyYXJpZXMuCisjZGVmaW5lIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZB
TFVFKGFjdHVhbF90eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuaW9uX21lbWJlciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZV90eXBlX2lkKSBcCisgICAgc3RhdGljIGlubGluZSB2b2lkIHNldFRyYWNlVmFs
dWUoYWN0dWFsX3R5cGUgYXJnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciogdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyogdmFsdWUpIHsgXAorICAgICAgICBUcmFjZVZhbHVl
VW5pb24gdHlwZVZhbHVlOyBcCisgICAgICAgIHR5cGVWYWx1ZS51bmlvbl9tZW1iZXIgPSBhcmc7
IFwKKyAgICAgICAgKnR5cGUgPSB2YWx1ZV90eXBlX2lkOyBcCisgICAgICAgICp2YWx1ZSA9IHR5
cGVWYWx1ZS5tX3VpbnQ7IFwKKyAgICB9CisvLyBTaW1wbGVyIGZvcm0gZm9yIGludCB0eXBlcyB0
aGF0IGNhbiBiZSBzYWZlbHkgY2FzdGVkLgorI2RlZmluZSBJTlRFUk5BTF9ERUNMQVJFX1NFVF9U
UkFDRV9WQUxVRV9JTlQoYWN0dWFsX3R5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGVfaWQpIFwKKyAgICBzdGF0aWMgaW5saW5lIHZv
aWQgc2V0VHJhY2VWYWx1ZShhY3R1YWxfdHlwZSBhcmcsIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0eXBlLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2YWx1ZSkgeyBcCisgICAg
ICAgICp0eXBlID0gdmFsdWVfdHlwZV9pZDsgXAorICAgICAgICAqdmFsdWUgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KGFyZyk7IFwKKyAgICB9CisKK0lOVEVSTkFMX0RFQ0xBUkVf
U0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBsb25nIGxvbmcsIFRSQUNFX1ZBTFVFX1RZUEVf
VUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBpbnQs
IFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVF
X0lOVCh1bnNpZ25lZCBzaG9ydCwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVD
TEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGNoYXIsIFRSQUNFX1ZBTFVFX1RZUEVf
VUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChsb25nIGxvbmcsIFRS
QUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5U
KGludCwgVFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9W
QUxVRV9JTlQoc2hvcnQsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9T
RVRfVFJBQ0VfVkFMVUVfSU5UKHNpZ25lZCBjaGFyLCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkKK0lO
VEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGJvb2wsIG1fYm9vbCwgVFJBQ0VfVkFMVUVf
VFlQRV9CT09MKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoZG91YmxlLCBtX2Rv
dWJsZSwgVFJBQ0VfVkFMVUVfVFlQRV9ET1VCTEUpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFD
RV9WQUxVRShjb25zdCB2b2lkKiwgbV9wb2ludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFJBQ0VfVkFMVUVfVFlQRV9QT0lOVEVSKQorSU5URVJOQUxfREVDTEFSRV9TRVRf
VFJBQ0VfVkFMVUUoY29uc3QgY2hhciosIG1fc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFJBQ0VfVkFMVUVfVFlQRV9TVFJJTkcpCitJTlRFUk5BTF9ERUNMQVJFX1NF
VF9UUkFDRV9WQUxVRShjb25zdCBUcmFjZVN0cmluZ1dpdGhDb3B5JiwgbV9zdHJpbmcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9UWVBFX0NPUFlfU1RSSU5H
KQorCisjdW5kZWYgSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUKKyN1bmRlZiBJTlRF
Uk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQKKworLy8gV1RGOjpTdHJpbmcgdmVyc2lv
biBvZiBzZXRUcmFjZVZhbHVlIHNvIHRoYXQgdHJhY2UgYXJndW1lbnRzIGNhbiBiZSBzdHJpbmdz
Lgorc3RhdGljIGlubGluZSB2b2lkIHNldFRyYWNlVmFsdWUoY29uc3QgV1RGOjpDU3RyaW5nJiBh
cmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2
YWx1ZSkgeworICAgIFRyYWNlVmFsdWVVbmlvbiB0eXBlVmFsdWU7CisgICAgdHlwZVZhbHVlLm1f
c3RyaW5nID0gYXJnLmRhdGEoKTsKKyAgICAqdHlwZSA9IFRSQUNFX1ZBTFVFX1RZUEVfQ09QWV9T
VFJJTkc7CisgICAgKnZhbHVlID0gdHlwZVZhbHVlLm1fdWludDsKK30KKworLy8gVGhlc2UgYWRk
VHJhY2VFdmVudCB0ZW1wbGF0ZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaGVyZSBpbnN0ZWFkIG9m
IGluIHRoZQorLy8gbWFjcm8sIGJlY2F1c2UgdGhlIGFyZyB2YWx1ZXMgY291bGQgYmUgdGVtcG9y
YXJ5IHN0cmluZyBvYmplY3RzLiBJbiBvcmRlciB0bworLy8gc3RvcmUgcG9pbnRlcnMgdG8gdGhl
IGludGVybmFsIGNfc3RyIGFuZCBwYXNzIHRocm91Z2ggdG8gdGhlIHRyYWNpbmcgQVBJLCB0aGUK
Ky8vIGFyZyB2YWx1ZXMgbXVzdCBsaXZlIHRocm91Z2hvdXQgdGhlc2UgcHJvY2VkdXJlcy4KKwor
c3RhdGljIGlubGluZSBpbnQgYWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncykgeworICAgIHJl
dHVybiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAgICBwaGFzZSwgY2F0
ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwKKyAgICAgICAgemVyb051bUFyZ3MsIDAsIDAsIDAsCisg
ICAgICAgIG5vVGhyZXNob2xkQmVnaW5JZCwgbm9UaHJlc2hvbGRWYWx1ZSwgZmxhZ3MpOwogfQog
Ci1pbmxpbmUgU2NvcGVUcmFjZXI6On5TY29wZVRyYWNlcigpCi17Ci0gICAgUGxhdGZvcm1TdXBw
b3J0Ojp0cmFjZUV2ZW50RW5kKG1fbmFtZSwgbV9pZCwgbV9leHRyYS5nZXQoKSk7Cit0ZW1wbGF0
ZTxjbGFzcyBBUkcxX1RZUEU+CitzdGF0aWMgaW5saW5lIGludCBhZGRUcmFjZUV2ZW50KGNoYXIg
cGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBh
cmcxTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVJHMV9UWVBF
JiBhcmcxVmFsKSB7CisgICAgY29uc3QgaW50IG51bUFyZ3MgPSAxOworICAgIHVuc2lnbmVkIGNo
YXIgYXJnVHlwZXNbMV07CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZ1ZhbHVlc1sxXTsKKyAg
ICBzZXRUcmFjZVZhbHVlKGFyZzFWYWwsICZhcmdUeXBlc1swXSwgJmFyZ1ZhbHVlc1swXSk7Cisg
ICAgcmV0dXJuIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAgIHBoYXNl
LCBjYXRlZ29yeUVuYWJsZWQsIG5hbWUsIGlkLAorICAgICAgICBudW1BcmdzLCAmYXJnMU5hbWUs
IGFyZ1R5cGVzLCBhcmdWYWx1ZXMsCisgICAgICAgIG5vVGhyZXNob2xkQmVnaW5JZCwgbm9UaHJl
c2hvbGRWYWx1ZSwgZmxhZ3MpOwogfQogCi19IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAordGVtcGxh
dGU8Y2xhc3MgQVJHMV9UWVBFLCBjbGFzcyBBUkcyX1RZUEU+CitzdGF0aWMgaW5saW5lIGludCBh
ZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBhcmcxTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQVJHMV9UWVBFJiBhcmcxVmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBhcmcyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQVJHMl9UWVBFJiBhcmcyVmFsKSB7CisgICAgY29uc3QgaW50IG51bUFyZ3MgPSAy
OworICAgIGNvbnN0IGNoYXIqIGFyZ05hbWVzWzJdID0geyBhcmcxTmFtZSwgYXJnMk5hbWUgfTsK
KyAgICB1bnNpZ25lZCBjaGFyIGFyZ1R5cGVzWzJdOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBh
cmdWYWx1ZXNbMl07CisgICAgc2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlwZXNbMF0sICZh
cmdWYWx1ZXNbMF0pOworICAgIHNldFRyYWNlVmFsdWUoYXJnMlZhbCwgJmFyZ1R5cGVzWzFdLCAm
YXJnVmFsdWVzWzFdKTsKKyAgICByZXR1cm4gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVO
VCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgbmFtZSwgaWQsCisgICAgICAgIG51
bUFyZ3MsIGFyZ05hbWVzLCBhcmdUeXBlcywgYXJnVmFsdWVzLAorICAgICAgICBub1RocmVzaG9s
ZEJlZ2luSWQsIG5vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKK30KKworLy8gVXNlZCBieSBUUkFD
RV9FVkVOVHggbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHkuCitjbGFzcyBUcmFjZUVuZE9uU2Nv
cGVDbG9zZSB7CitwdWJsaWM6CisgICAgLy8gTm90ZTogbWVtYmVycyBvZiBtX2RhdGEgaW50ZW50
aW9uYWxseSBsZWZ0IHVuaW5pdGlhbGl6ZWQuIFNlZSBpbml0aWFsaXplLgorICAgIFRyYWNlRW5k
T25TY29wZUNsb3NlKCkgOiBtX3BkYXRhKDApIHsgfQorICAgIH5UcmFjZUVuZE9uU2NvcGVDbG9z
ZSgpCisgICAgeworICAgICAgICBpZiAobV9wZGF0YSkKKyAgICAgICAgICAgIGFkZEV2ZW50SWZF
bmFibGVkKCk7CisgICAgfQorCisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFt
ZSkKKyAgICB7CisgICAgICAgIG1fZGF0YS5jYXRlZ29yeUVuYWJsZWQgPSBjYXRlZ29yeUVuYWJs
ZWQ7CisgICAgICAgIG1fZGF0YS5uYW1lID0gbmFtZTsKKyAgICAgICAgbV9wZGF0YSA9ICZtX2Rh
dGE7CisgICAgfQorCitwcml2YXRlOgorICAgIC8vIEFkZCB0aGUgZW5kIGV2ZW50IGlmIHRoZSBj
YXRlZ29yeSBpcyBzdGlsbCBlbmFibGVkLgorICAgIHZvaWQgYWRkRXZlbnRJZkVuYWJsZWQoKQor
ICAgIHsKKyAgICAgICAgLy8gT25seSBjYWxsZWQgd2hlbiBtX3BkYXRhIGlzIG5vbi1udWxsLgor
ICAgICAgICBpZiAoKm1fcGRhdGEtPmNhdGVnb3J5RW5hYmxlZCkgeworICAgICAgICAgICAgVFJB
Q0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgICAgICAgICBUUkFDRV9FVkVO
VF9QSEFTRV9FTkQsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+Y2F0ZWdvcnlFbmFibGVkLAor
ICAgICAgICAgICAgICAgIG1fcGRhdGEtPm5hbWUsIG5vRXZlbnRJZCwKKyAgICAgICAgICAgICAg
ICB6ZXJvTnVtQXJncywgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICBub1RocmVzaG9sZEJlZ2lu
SWQsIG5vVGhyZXNob2xkVmFsdWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBUaGlzIERhdGEgc3RydWN0IHdvcmthcm91bmQgaXMgdG8gYXZvaWQg
aW5pdGlhbGl6aW5nIGFsbCB0aGUgbWVtYmVycworICAgIC8vIGluIERhdGEgZHVyaW5nIGNvbnN0
cnVjdGlvbiBvZiB0aGlzIG9iamVjdCwgc2luY2UgdGhpcyBvYmplY3QgaXMgYWx3YXlzCisgICAg
Ly8gY29uc3RydWN0ZWQsIGV2ZW4gd2hlbiB0cmFjaW5nIGlzIGRpc2FibGVkLiBJZiB0aGUgbWVt
YmVycyBvZiBEYXRhIHdlcmUKKyAgICAvLyBtZW1iZXJzIG9mIHRoaXMgY2xhc3MgaW5zdGVhZCwg
Y29tcGlsZXIgd2FybmluZ3Mgb2NjdXIgYWJvdXQgcG90ZW50aWFsCisgICAgLy8gdW5pbml0aWFs
aXplZCBhY2Nlc3Nlcy4KKyAgICBzdHJ1Y3QgRGF0YSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGNhdGVnb3J5RW5hYmxlZDsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICB9
OworICAgIERhdGEqIG1fcGRhdGE7CisgICAgRGF0YSBtX2RhdGE7Cit9OworCisvLyBVc2VkIGJ5
IFRSQUNFX0VWRU5UeCBtYWNyby4gRG8gbm90IHVzZSBkaXJlY3RseS4KK2NsYXNzIFRyYWNlRW5k
T25TY29wZUNsb3NlVGhyZXNob2xkIHsKK3B1YmxpYzoKKyAgICAvLyBOb3RlOiBtZW1iZXJzIG9m
IG1fZGF0YSBpbnRlbnRpb25hbGx5IGxlZnQgdW5pbml0aWFsaXplZC4gU2VlIGluaXRpYWxpemUu
CisgICAgVHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQoKSA6IG1fcGRhdGEoMCkgeyB9Cisg
ICAgflRyYWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xkKCkKKyAgICB7CisgICAgICAgIGlmICht
X3BkYXRhKQorICAgICAgICAgICAgYWRkRXZlbnRJZkVuYWJsZWQoKTsKKyAgICB9CisKKyAgICAv
LyBDYWxsZWQgYnkgbWFjcm9zIG9ubHkgd2hlbiB0cmFjaW5nIGlzIGVuYWJsZWQgYXQgdGhlIHBv
aW50IHdoZW4gdGhlIGJlZ2luCisgICAgLy8gZXZlbnQgaXMgYWRkZWQuCisgICAgdm9pZCBpbml0
aWFsaXplKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgaW50IHRocmVz
aG9sZEJlZ2luSUQsCisgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQpCisg
ICAgeworICAgICAgICBtX2RhdGEuY2F0ZWdvcnlFbmFibGVkID0gY2F0ZWdvcnlFbmFibGVkOwor
ICAgICAgICBtX2RhdGEubmFtZSA9IG5hbWU7CisgICAgICAgIG1fZGF0YS50aHJlc2hvbGRCZWdp
bklEID0gdGhyZXNob2xkQmVnaW5JRDsKKyAgICAgICAgbV9kYXRhLnRocmVzaG9sZCA9IHRocmVz
aG9sZDsKKyAgICAgICAgbV9wZGF0YSA9ICZtX2RhdGE7CisgICAgfQorCitwcml2YXRlOgorICAg
IC8vIEFkZCB0aGUgZW5kIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBzdGlsbCBlbmFibGVkLgor
ICAgIHZvaWQgYWRkRXZlbnRJZkVuYWJsZWQoKQorICAgIHsKKyAgICAgICAgLy8gT25seSBjYWxs
ZWQgd2hlbiBtX3BkYXRhIGlzIG5vbi1udWxsLgorICAgICAgICBpZiAoKm1fcGRhdGEtPmNhdGVn
b3J5RW5hYmxlZCkgeworICAgICAgICAgICAgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVO
VCgKKyAgICAgICAgICAgICAgICBUUkFDRV9FVkVOVF9QSEFTRV9FTkQsCisgICAgICAgICAgICAg
ICAgbV9wZGF0YS0+Y2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgIG1fcGRhdGEtPm5h
bWUsIG5vRXZlbnRJZCwKKyAgICAgICAgICAgICAgICB6ZXJvTnVtQXJncywgMCwgMCwgMCwKKyAg
ICAgICAgICAgICAgICBtX3BkYXRhLT50aHJlc2hvbGRCZWdpbklELCBtX3BkYXRhLT50aHJlc2hv
bGQsCisgICAgICAgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIFRoaXMgRGF0YSBzdHJ1Y3Qgd29ya2Fyb3VuZCBpcyB0byBhdm9pZCBp
bml0aWFsaXppbmcgYWxsIHRoZSBtZW1iZXJzCisgICAgLy8gaW4gRGF0YSBkdXJpbmcgY29uc3Ry
dWN0aW9uIG9mIHRoaXMgb2JqZWN0LCBzaW5jZSB0aGlzIG9iamVjdCBpcyBhbHdheXMKKyAgICAv
LyBjb25zdHJ1Y3RlZCwgZXZlbiB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQuIElmIHRoZSBtZW1i
ZXJzIG9mIERhdGEgd2VyZQorICAgIC8vIG1lbWJlcnMgb2YgdGhpcyBjbGFzcyBpbnN0ZWFkLCBj
b21waWxlciB3YXJuaW5ncyBvY2N1ciBhYm91dCBwb3RlbnRpYWwKKyAgICAvLyB1bmluaXRpYWxp
emVkIGFjY2Vzc2VzLgorICAgIHN0cnVjdCBEYXRhIHsKKyAgICAgICAgbG9uZyBsb25nIHRocmVz
aG9sZDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkOworICAg
ICAgICBjb25zdCBjaGFyKiBuYW1lOworICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRDsKKyAg
ICB9OworICAgIERhdGEqIG1fcGRhdGE7CisgICAgRGF0YSBtX2RhdGE7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBUcmFjZUV2ZW50CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQuaAppbmRleCA2YzBlNzRmMTI5NzJjN2YzNzQ2MzQwYWZmNjliMzEyZGMy
NWNhMWU5Li5kNDJlNTczZWJiMzAwNWEwZjM3OTk3NzcwN2NhN2QxODkzYTAyYzAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9y
bVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaApAQCAtMjM3LDExICsyMzcsNTYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRTdGF0c0NvdW50ZXIoY29uc3QgY2hhciogbmFtZSkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFN0YXRzQ291bnRlcihjb25zdCBjaGFyKiBuYW1l
KSB7IH0KIAotICAgIC8vIEFuIGV2ZW50IGlzIGlkZW50aWZpZWQgYnkgdGhlIHBhaXIgKG5hbWUs
IGlkKS4gVGhlIGV4dHJhIHBhcmFtZXRlcgotICAgIC8vIHNwZWNpZmllcyBhZGRpdGlvbmFsIGRh
dGEgdG8gbG9nIHdpdGggdGhlIGV2ZW50LgotICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNlRXZlbnRF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2
ZW50QmVnaW4oY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lk
KiBpZCwgY29uc3QgY2hhciogZXh0cmEpIHsgfQorICAgIC8vIFRyYWNpbmcgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAg
Ly8gR2V0IGEgcG9pbnRlciB0byB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgZ2l2ZW4gdHJhY2Ug
Y2F0ZWdvcnkuIE9ubHkKKyAgICAvLyBsb25nLWxpdmVkIGxpdGVyYWwgc3RyaW5ncyBzaG91bGQg
YmUgZ2l2ZW4gYXMgdGhlIGNhdGVnb3J5IG5hbWUuIFRoZQorICAgIC8vIHJldHVybmVkIHBvaW50
ZXIgY2FuIGJlIGhlbGQgcGVybWFuZW50bHkgaW4gYSBsb2NhbCBzdGF0aWMgZm9yIGV4YW1wbGUu
CisgICAgLy8gSWYgdGhlIHVuc2lnbmVkIGNoYXIgaXMgbm9uLXplcm8sIHRyYWNpbmcgaXMgZW5h
YmxlZC4gSWYgdHJhY2luZyBpcworICAgIC8vIGVuYWJsZWQsIGFkZFRyYWNlRXZlbnQgY2FuIGJl
IGNhbGxlZC4gSXQncyBPSyBpZiB0cmFjaW5nIGlzIGRpc2FibGVkCisgICAgLy8gYmV0d2VlbiB0
aGUgbG9hZCBvZiB0aGUgdHJhY2luZyBzdGF0ZSBhbmQgdGhlIGNhbGwgdG8gYWRkVHJhY2VFdmVu
dCwKKyAgICAvLyBiZWNhdXNlIHRoaXMgZmxhZyBvbmx5IHByb3ZpZGVzIGFuIGVhcmx5IG91dCBm
b3IgYmVzdCBwZXJmb3JtYW5jZSB3aGVuCisgICAgLy8gdHJhY2luZyBpcyBkaXNhYmxlZC4KKyAg
ICB2aXJ0dWFsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxh
Zyhjb25zdCBjaGFyKiBjYXRlZ29yeU5hbWUpIHsgcmV0dXJuIDA7IH0KKyAgICAvLyBBZGQgYSB0
cmFjZSBldmVudCB0byB0aGUgcGxhdGZvcm0gdHJhY2luZyBzeXN0ZW0uCisgICAgLy8gUmV0dXJu
cyB0aHJlc2hvbGRCZWdpbklkIGZvciB1c2UgaW4gYSBjb3JyZXNwb25kaW5nIGVuZCBhZGRUcmFj
ZUV2ZW50IGNhbGwuCisgICAgLy8gLSBwaGFzZSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgZXZlbnQs
IHN1Y2ggYXMgYmVnaW4sIGVuZCwgaW5zdGFudCwgZXRjLgorICAgIC8vIC0gY2F0ZWdvcnlFbmFi
bGVkIGlzIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGdldENhdGVnb3J5RW5hYmxlZC4KKyAgICAv
LyAtIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGV2ZW50LgorICAgIC8vIC0gaWQgb3B0aW9uYWxs
eSBhbGxvd3MgZXZlbnRzIG9mIHRoZSBzYW1lIG5hbWUgdG8gYmUgZGlzdGluZ3Vpc2hlZC4KKyAg
ICAvLyAtIG51bUFyZ3Mgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYXJnTmFt
ZXMsIGFyZ1R5cGVzLCBhbmQKKyAgICAvLyAgIGFyZ1ZhbHVlcy4KKyAgICAvLyAtIGFyZ05hbWVz
IGlzIHRoZSBhcnJheSBvZiBhcmd1bWVudCBuYW1lcy4KKyAgICAvLyAtIGFyZ1R5cGVzIGlzIHRo
ZSBhcnJheSBvZiBhcmd1bWVudCB0eXBlczogYm9vbCwgdW5zaWduZWQgbG9uZyBsb25nLAorICAg
IC8vICAgbG9uZyBsb25nLCBkb3VibGUsIHZvaWQqLCBjaGFyKiAobG9uZy1saXZlZCBudWxsLXRl
cm1pbmF0ZWQgY2hhciogc3RyaW5nKSwKKyAgICAvLyAgIGNoYXIqICh0ZW1wb3JhcnkgbnVsbC10
ZXJtaW5hdGVkIGNoYXIqIHN0cmluZykuCisgICAgLy8gLSBhcmdWYWx1ZXMgaXMgdGhlIGFycmF5
IG9mIGFyZ3VtZW50IHZhbHVlcy4KKyAgICAvLyAtIHRocmVzaG9sZEJlZ2luSWQgb3B0aW9uYWxs
eSBzcGVjaWZpZXMgdGhlIHZhbHVlIHJldHVybmVkIGJ5IGEgcHJldmlvdXMKKyAgICAvLyAgIGNh
bGwgdG8gYWRkVHJhY2VFdmVudC4KKyAgICAvLyAtIHRocmVzaG9sZCBzcGVjaWZpZXMgdGhlIG1p
bmltdW0gbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyB0aGF0IG11c3QgaGF2ZQorICAgIC8vICAgcGFz
c2VkIHNpbmNlIHRoZSBldmVudCBpZGVudGlmaWVkIGJ5IHRocmVzaG9sZEJlZ2luSWQgZm9yIGJv
dGggZXZlbnRzIHRvCisgICAgLy8gICBiZSByZWNvcmRlZC4KKyAgICAvLyAtIGZsYWdzIGNhbiBi
ZSAwIG9yIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcsIE9SZWQgdG9nZXRoZXI6CisgICAg
Ly8gICAtIHRyZWF0IGFsbCBzdHJpbmdzIGFzIHRlbXBvcmFyeSBzbyB0aGF0IHRoZXkgd2lsbCBi
ZSBjb3BpZWQgYnkKKyAgICAvLyAgICAgYWRkVHJhY2VFdmVudCwgd2l0aCB0aGUgZXhjZXB0aW9u
IG9mIGNhdGVnb3J5IG5hbWUuCisgICAgLy8gICAtIHVzZSB0aGUgaWQgYXJndW1lbnQgdG8gdW5p
cXVlbHkgaWRlbnRpZnkgdGhlIGV2ZW50IGZvciBtYXRjaGluZworICAgIC8vICAgICB3aXRoIG90
aGVyIGV2ZW50cyBvZiB0aGUgc2FtZSBuYW1lLgorICAgIHZpcnR1YWwgaW50IGFkZFRyYWNlRXZl
bnQoCisgICAgICAgIGNoYXIgcGhhc2UsCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNh
dGVnb3J5RW5hYmxlZEZsYWcsCisgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgaW50IG51bUFyZ3MsCisgICAgICAgIGNvbnN0
IGNoYXIqKiBhcmdOYW1lcywKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnVHlwZXMs
CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnVmFsdWVzLAorICAgICAgICBp
bnQgdGhyZXNob2xkQmVnaW5JZCwKKyAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCwKKyAgICAg
ICAgdW5zaWduZWQgY2hhciBmbGFncykgeyByZXR1cm4gLTE7IH0KKyAgICAvLyBNYW5nbGUgcG9p
bnRlciB3aXRoIGEgaGFzaCBzbyB0aGF0IGlmIGl0IG9jY3VycyBvbiBtb3JlIHRoYW4gb25lIHBy
b2Nlc3MsCisgICAgLy8gaXQgd2lsbCBub3QgY29sbGlkZSBpbiB0aGUgdHJhY2UgZGF0YS4gUGFz
cyB0aGUgcmV0dXJuZWQgdmFsdWUgdG8KKyAgICAvLyBhZGRUcmFjZUV2ZW50IGFzIHRoZSBpZCBw
YXJhbWV0ZXIuCisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgbWFuZ2xlUG9pbnRlckZv
clRyYWNpbmcodm9pZCogcG9pbnRlcikgeyByZXR1cm4gMHU7IH0KIAogICAgIC8vIENhbGxiYWNr
cyBmb3IgcmVwb3J0aW5nIGhpc3RvZ3JhbSBkYXRhLgogICAgIC8vIEN1c3RvbUNvdW50cyBoaXN0
b2dyYW0gaGFzIGV4cG9uZW50aWFsIGJ1Y2tldCBzaXplcywgc28gdGhhdCBtaW49MSwgbWF4PTEw
MDAwMDAsIGJ1Y2tldENvdW50PTUwIHdvdWxkIGRvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggMjQ2ODFlYzk2MmQ3NGViZmViNWFiMzM1
NWMxOTAzYWZkOWU5ZWNkNi4uNjA0YzIwMGNmYTc1OGE4Y2ExZDMzYWRhZTgyZDNlM2Y4Y2FhMjlh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
CkBAIC05NDcsMTkgKzk0NywyOCBAQCB2b2lkIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBh
cnQoCiAKIC8vIFRyYWNlIEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6Omlz
VHJhY2VFdmVudEVuYWJsZWQoKQorY29uc3QgdW5zaWduZWQgY2hhciogUGxhdGZvcm1TdXBwb3J0
OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKQog
ewotICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+aXNUcmFjZUV2ZW50RW5hYmxl
ZCgpOworICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Z2V0VHJhY2VDYXRlZ29y
eUVuYWJsZWRGbGFnKGNhdGVnb3J5TmFtZSk7CiB9Ci0KLXZvaWQgUGxhdGZvcm1TdXBwb3J0Ojp0
cmFjZUV2ZW50QmVnaW4oY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4
dHJhKQoraW50IFBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRl
Z29yeUVuYWJsZWRGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBu
dW1BcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiog
YXJnTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGFyZ1R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1bnNpZ25lZCBsb25nIGxvbmcqIGFyZ1ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHRocmVzaG9sZEJlZ2luSWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpCiB7Ci0gICAgd2ViS2l0UGxhdGZv
cm1TdXBwb3J0KCktPnRyYWNlRXZlbnRCZWdpbihuYW1lLCBpZCwgZXh0cmEpOworICAgIHJldHVy
biB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+YWRkVHJhY2VFdmVudCgKKyAgICAgICAgcGhhc2Us
IGNhdGVnb3J5RW5hYmxlZEZsYWcsIG5hbWUsIGlkLCBudW1BcmdzLCBhcmdOYW1lcywgYXJnVHlw
ZXMsIGFyZ1ZhbHVlcywgIHRocmVzaG9sZEJlZ2luSWQsIHRocmVzaG9sZCwgZmxhZ3MpOwogfQot
Ci12b2lkIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2
b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpCit1bnNpZ25lZCBsb25nIGxvbmcgbWFuZ2xlUG9p
bnRlckZvclRyYWNpbmcodm9pZCogcG9pbnRlcikKIHsKLSAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBv
cnQoKS0+dHJhY2VFdmVudEVuZChuYW1lLCBpZCwgZXh0cmEpOworICAgIHJldHVybiB3ZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQoKS0+bWFuZ2xlUG9pbnRlckZvclRyYWNpbmcocG9pbnRlcik7CiB9CiAK
IC8vIFZpc2l0ZWQgTGlua3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>124025</attachid>
            <date>2012-01-25 15:42:11 -0800</date>
            <delta_ts>2012-01-25 15:42:11 -0800</delta_ts>
            <desc>Archive of layout-test-results from ec2-cr-linux-04</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>59772</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">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
Fwk4m/gpIenwD1BLAwQUAAIACAAsuzlAhYMBRYQCAACGBgAAUQAcAHRtcC9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2FuaW1hdGlvbnMvM2QvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5jdGlvbnMtY3Jhc2gt
bG9nLnR4dFVUCQADZI8gT2SPIE91eAsAAQToAwAABOgDAACVlE1z2jAQhs/Jr+gxuflDxhbHhNJk
mqQMMM2h08NKWoMGW3JlOYX++srYBjskob1Z0vvsarXr94JBieOxQFatxuOFBb5ZGuDY/766/vTD
20YMAh9/Xl40xBUorXa5rspPCnIsCye8bqlJlRcLuVKQ3YESGZo2AoQeoS6Ct41TP0yQppwH3uXF
M7JbbVzQ78nM6O1uPMYXyCqwbWqWxCnWqQ/CBTeysLdaWaMzl+CEGIlAkFPic4Y5KuvkW+SVxWa3
YWjCmAg/YAqDBZhXjKAj3mfulo8PjWJeKVXfzFSqj0AQYsA+RtrbdUBEffEamGhe1deagSkHWcqp
NjOoShRLg3hTyUx0DQAfRl54LhIHtYQNPuHWLvUG1ZFFdo4tXOf3kPxzTIqRGJ0DoShQiQNBPegT
E+RaoJiAhbfBm53FsqH9JAhDGExLxzxoEPsKdZ5LW0drEJ5yCNoX/ipdp6fGjXSjvs2kI+/zIus4
i6I+alBCfcK888mOhEsm4sF7zLHUleHYEUKKOXKUL3i8ogipNxzoR5Dqn8iARFH0//kS9Grqnf98
jr8qLG37uz5pK9NdG0Qco/gkBEbqYh+xLGHlUurCwZWbsHLTugIlsB/KgWSCKZpvxilnrr1SrfpA
5MzjBNDP2hwV8V7RWFWrm7nZ/JJJ5gZw70oT6YqxfN3Zm5+G9P2C6+iL/bOdcrE4mBoNEgohCfpr
DCAZrEnE372bq/hZ2nWX5OCdLAg9742HvFcWjXParvJR4r/13ofjxq6WrneLNWZuqH+DtPVyKpUs
19jNNRmxJBoqncVMZYb1TieKvLT+09xJbzdw/akbmrsJbTfivbEefB9jkWC9Jj4lhF7+BVBLAwQU
AAIACAAruzlAH7VTVIMCAACGBgAASgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FuaW1hdGlv
bnMvM2QvcmVwbGFjZS1maWxsaW5nLXRyYW5zZm9ybS1zdGRlcnIudHh0VVQJAANijyBPYo8gT3V4
CwABBOgDAAAE6AMAAJWUTXPaMBCGz8mv6DG52bIMNseE0mSapAwwzaHTw0pagwZbcmU5hf76yl9g
hyS0N0t6n12tdv1eMChwMhHIyvVksrTAtysDHPvfV9effni7kAHx8eflRUNcgdJqn+my+KQgwyJ3
wuuWmpZZvpRrBekdKJGiaSNA4NHYRfB24wQT4AERnHiXF8/IbrVxQb9Hc6N3+8kEXyAtwbapWeT0
VeqDcMmNzO2tVtbo1CU4IUaCCHpKfE4xQ2WdfIe8tNjsNkwcMSaCD5jcYA7mFSPiEe8zd6vHh0ax
KJWqbmZK1UeABEjYx0h7uw4IY1+8Bqaal9W15mCKQZZips0cygLFyiDelDIVXQPAh5EXnIvEQa1g
i0+4syu9RXVkkZ1jc9f5GpJ/jkkxFKNzIOQ5KnEgYg/6xBS5FiimYOFt8GZvsWhoPyJBAINp6ZgH
DaKuUGeZtFW0BuEJB9K+8FfpOj0zbqQb9W0qHXmf5WnHWRTVUYPS2KfMO5/sSLhkYjx4jwUWujQc
O0JIsUCO8gWPVxRB7A0H+hGk+ieS0DAM/z9fhF5FvfOfL/BXiYVtf9cnbWWyb4OIYxSfBsBoVewj
FgWsXUqdO7h0E1ZsW1eIKdRDOZBMMUHzzTjl3LVXqnUfCP0gOgH0szZHxbhWNFbV6uZuNr+kkrkB
rF1pKl0xlm86e/OTIH6/4Cr6sn62U24sDqbGPJ+zgJL+OiEQDdY05O/ezVX8LO2mS3LwTkYCz3vj
Ie+VReOctqt8FPlvvffhuLGrlevdcoOpG+rfIG21nEkliw12c01HLAqHSmcxM5litdOJQi+p/jR3
0tslrj9VQzM3oe3GuDbWg+/7kYiwWlM/pjS+/AtQSwMEFAACAAgALLs5QLbIRrqEAgAAhgYAAFAA
HAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hbmltYXRpb25zLzNkL3N0YXRlLWF0LWVuZC1ldmVu
dC10cmFuc2Zvcm0tY3Jhc2gtbG9nLnR4dFVUCQADY48gT2OPIE91eAsAAQToAwAABOgDAACVlE1T
2zAQhs/wK3qEmz9kx84R0hSmQDNJphw6PaykdaKJLbmyTJP++spfsU2AtDdLep9drXb9XlAocDrl
SMvNdLoywHZrDQyH31fXn344+4CC5+LPy4uGuAKp5CFTZfFJQoZFboXXLTUrs3wlNhLSO5A8Rd1G
AN8hsY3g7CeJC44XY8I85/LiGemt0jbo92ih1f4wneILpCWYNjWNJglWqY/CFdMiN7dKGq1Sm+CE
CLnHySnxOcUMpbHyPbLSYLPbMHFEKfc/YHKNOehXDI9DNmTu1o8PjWJZSlndTJdyiIDno0c/Rtrb
dUAQu/w1MFOsrK61AF2MshRzpRdQFsjXGvGmFCnvGgAuhI5/LhIDuYYdPuHerNUOZc8iPcfmtvM1
JP70STHg4TkQ8hwlPxKxA0Nihkxx5DMw8DZ4czBYNLQbeb4Po2npmAcFvK5QZZkwVbQGYQkDr33h
r8J2eq7tSDfq21RY8j7L044zyKujBiWxS6hzPllP2GR8MnqPJRaq1Aw7ggu+RIbiBfsrcj92xgP9
CEL+E+mRIAj+P1+ETkW9858v8VeJhWl/1ydlRHJog/A+ikt8oKQq9hGLAjY2pcotXNoJK3atK8QE
6qEcSWaYoP6mrXJh2yvkZggErh+dAOpZ6V4xqRWNVbW6hZ3NL6mgdgBrV5oJW4xh287e3MSP3y+4
ir6qn+2Um/De1MIo4j7xBuvY9SAarUnA3r2brfhZmG2X5Oid1PMd542HvJcGtXXarvIwct967+Nx
Y1dr27vVFlM71L9BmGo5F1IUW+zmmoQ0CsZKazFzkWK104kCJ6n+NHsy2PVsf6qGZnZC241JbaxH
3+fAI6zWxI0JiS//AlBLAwQUAAIACAAsuzlAhYMBRYQCAACGBgAATgAcAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2FuaW1hdGlvbnMvM2QvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5jdGlvbnMtc3Rk
ZXJyLnR4dFVUCQADZI8gT2SPIE91eAsAAQToAwAABOgDAACVlE1z2jAQhs/Jr+gxuflDxhbHhNJk
mqQMMM2h08NKWoMGW3JlOYX++srYBjskob1Z0vvsarXr94JBieOxQFatxuOFBb5ZGuDY/766/vTD
20YMAh9/Xl40xBUorXa5rspPCnIsCye8bqlJlRcLuVKQ3YESGZo2AoQeoS6Ct41TP0yQppwH3uXF
M7JbbVzQ78nM6O1uPMYXyCqwbWqWxCnWqQ/CBTeysLdaWaMzl+CEGIlAkFPic4Y5KuvkW+SVxWa3
YWjCmAg/YAqDBZhXjKAj3mfulo8PjWJeKVXfzFSqj0AQYsA+RtrbdUBEffEamGhe1deagSkHWcqp
NjOoShRLg3hTyUx0DQAfRl54LhIHtYQNPuHWLvUG1ZFFdo4tXOf3kPxzTIqRGJ0DoShQiQNBPegT
E+RaoJiAhbfBm53FsqH9JAhDGExLxzxoEPsKdZ5LW0drEJ5yCNoX/ipdp6fGjXSjvs2kI+/zIus4
i6I+alBCfcK888mOhEsm4sF7zLHUleHYEUKKOXKUL3i8ogipNxzoR5Dqn8iARFH0//kS9Grqnf98
jr8qLG37uz5pK9NdG0Qco/gkBEbqYh+xLGHlUurCwZWbsHLTugIlsB/KgWSCKZpvxilnrr1SrfpA
5MzjBNDP2hwV8V7RWFWrm7nZ/JJJ5gZw70oT6YqxfN3Zm5+G9P2C6+iL/bOdcrE4mBoNEgohCfpr
DCAZrEnE372bq/hZ2nWX5OCdLAg9742HvFcWjXParvJR4r/13ofjxq6WrneLNWZuqH+DtPVyKpUs
19jNNRmxJBoqncVMZYb1TieKvLT+09xJbzdw/akbmrsJbTfivbEefB9jkWC9Jj4lhF7+BVBLAwQU
AAIACAAruzlAH7VTVIMCAACGBgAATQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FuaW1hdGlv
bnMvM2QvcmVwbGFjZS1maWxsaW5nLXRyYW5zZm9ybS1jcmFzaC1sb2cudHh0VVQJAANijyBPYo8g
T3V4CwABBOgDAAAE6AMAAJWUTXPaMBCGz8mv6DG52bIMNseE0mSapAwwzaHTw0pagwZbcmU5hf76
yl9ghyS0N0t6n12tdv1eMChwMhHIyvVksrTAtysDHPvfV9effni7kAHx8eflRUNcgdJqn+my+KQg
wyJ3wuuWmpZZvpRrBekdKJGiaSNA4NHYRfB24wQT4AERnHiXF8/IbrVxQb9Hc6N3+8kEXyAtwbap
WeT0VeqDcMmNzO2tVtbo1CU4IUaCCHpKfE4xQ2WdfIe8tNjsNkwcMSaCD5jcYA7mFSPiEe8zd6vH
h0axKJWqbmZK1UeABEjYx0h7uw4IY1+8Bqaal9W15mCKQZZips0cygLFyiDelDIVXQPAh5EXnIvE
Qa1gi0+4syu9RXVkkZ1jc9f5GpJ/jkkxFKNzIOQ5KnEgYg/6xBS5FiimYOFt8GZvsWhoPyJBAINp
6ZgHDaKuUGeZtFW0BuEJB9K+8FfpOj0zbqQb9W0qHXmf5WnHWRTVUYPS2KfMO5/sSLhkYjx4jwUW
ujQcO0JIsUCO8gWPVxRB7A0H+hGk+ieS0DAM/z9fhF5FvfOfL/BXiYVtf9cnbWWyb4OIYxSfBsBo
VewjFgWsXUqdO7h0E1ZsW1eIKdRDOZBMMUHzzTjl3LVXqnUfCP0gOgH0szZHxbhWNFbV6uZuNr+k
krkBrF1pKl0xlm86e/OTIH6/4Cr6sn62U24sDqbGPJ+zgJL+OiEQDdY05O/ezVX8LO2mS3LwTkYC
z3vjIe+VReOctqt8FPlvvffhuLGrlevdcoOpG+rfIG21nEkliw12c01HLAqHSmcxM5litdOJQi+p
/jR30tslrj9VQzM3oe3GuDbWg+/7kYiwWlM/pjS+/AtQSwMEFAACAAgALLs5QLbIRrqEAgAAhgYA
AE0AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hbmltYXRpb25zLzNkL3N0YXRlLWF0LWVuZC1l
dmVudC10cmFuc2Zvcm0tc3RkZXJyLnR4dFVUCQADY48gT2OPIE91eAsAAQToAwAABOgDAACVlE1T
2zAQhs/wK3qEmz9kx84R0hSmQDNJphw6PaykdaKJLbmyTJP++spfsU2AtDdLep9drXb9XlAocDrl
SMvNdLoywHZrDQyH31fXn344+4CC5+LPy4uGuAKp5CFTZfFJQoZFboXXLTUrs3wlNhLSO5A8Rd1G
AN8hsY3g7CeJC44XY8I85/LiGemt0jbo92ih1f4wneILpCWYNjWNJglWqY/CFdMiN7dKGq1Sm+CE
CLnHySnxOcUMpbHyPbLSYLPbMHFEKfc/YHKNOehXDI9DNmTu1o8PjWJZSlndTJdyiIDno0c/Rtrb
dUAQu/w1MFOsrK61AF2MshRzpRdQFsjXGvGmFCnvGgAuhI5/LhIDuYYdPuHerNUOZc8iPcfmtvM1
JP70STHg4TkQ8hwlPxKxA0Nihkxx5DMw8DZ4czBYNLQbeb4Po2npmAcFvK5QZZkwVbQGYQkDr33h
r8J2eq7tSDfq21RY8j7L044zyKujBiWxS6hzPllP2GR8MnqPJRaq1Aw7ggu+RIbiBfsrcj92xgP9
CEL+E+mRIAj+P1+ETkW9858v8VeJhWl/1ydlRHJog/A+ikt8oKQq9hGLAjY2pcotXNoJK3atK8QE
6qEcSWaYoP6mrXJh2yvkZggErh+dAOpZ6V4xqRWNVbW6hZ3NL6mgdgBrV5oJW4xh287e3MSP3y+4
ir6qn+2Um/De1MIo4j7xBuvY9SAarUnA3r2brfhZmG2X5Oid1PMd542HvJcGtXXarvIwct967+Nx
Y1dr27vVFlM71L9BmGo5F1IUW+zmmoQ0CsZKazFzkWK104kCJ6n+NHsy2PVsf6qGZnZC241JbaxH
3+fAI6zWxI0JiS//AlBLAwQUAAIACAAsuzlAwh+IhkQCAABKBQAASwAcAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWRpcmVjdGlvbi1ub3JtYWwtY3Jhc2gtbG9n
LnR4dFVUCQADZI8gT2SPIE91eAsAAQToAwAABOgDAACdVMFy2jAQPcNX5JjcjC0b2bcWkiYzpGGA
lkOn05GlNWgwEpWtBP6+K2Q7UMJMpzft6r23u9pd9XJWQZYJyO0qy+Y145uFYRxOz7d3Nz+CfZyz
cAA/+z3PuGVKq8NW2+pGsS1UOwTeNayx3e7mcqVY+ciUKME0CiwKSIoKwX5YUBrSPCc8DPq9JeQj
bVD0O50avT9kGbyy0rK6CZ3TYQEudAeccyN39Uir2ugSA1wwEhEKcsm4L2ELqkb4HritwXs9J8V8
RHTKeVw8TzxiZpU6RvG0KSgh1crffVJiLLH+mq/vX1Hcq7GQ8JT/mxozFap9LjXfdKqtSkxE8v8q
VSdDKf1bZqy5da/hmE5I6VoWhwepZLUG0TKDIhWnzBHjeDuDSlvj5gQtvvl6pHqKIBAH6dnb29w0
+IlmwsUSUvhAzoHpNtSoSBLXgjfIN7L+tSot0lHn22zimU/bXYk5YONhj218USONHqhdRr8tVM27
DSKcrYSh0pU5bdDNuPn0r0iRKBXMJfUMVcVWWILeoYBVC1ZtmslOCQsuIGMowLwYRDbzckqIBxG9
IOilNu+I4RHh163BTXGzvpQyxwYeN6sdvHZFB0WUXi/aqc+PbbjkDcX7YnIWhxEJT+0kZPTMJjG/
mhtWvJT1ug3S7X8eRkHwwUM+YTcN/hZt5QkdJB/Auus0cYu1wBbN11DiPLwxWTvzfHYJSXIanyON
VQ+yhEXXXkLioHB/C96ceEPsj2volknVOIbHz6H7u9JCUHA2GaSEpP0/UEsDBBQAAgAIACy7OUDV
PshyhQIAAIYGAABKABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYW5pbWF0aW9ucy9hbmltYXRp
b24tY29udHJvbGxlci1kcnQtYXBpLXN0ZGVyci50eHRVVAkAA2OPIE9jjyBPdXgLAAEE6AMAAATo
AwAAlZRNU9swEIbP8Ct6hJs/5K8cIU1hCjSTZMqh08NKWiea2JIryzTpr68c27FNgLQ3S36fXa12
9V5QKHEy4Uir9WSyNMC2Kw0Mh99X159+OLuAgufiz8uLhrgCqeQ+V1X5SUKOZWGF1y01rfJiKdYS
sjuQPEPdRgDfIYmN4OyiNEwSF52Aec7lxTPSW6Vt0O/xXKvdfjLBF8gqMG1qGkcp1qmPwiXTojC3
ShqtMpvghAi5x8kp8TnDHKWx8h2yymCz2zBJTCn3P2AKjQXoVwxPQjZk7laPD41iUUlZn0xXcoiA
56NHP0ba03VAkLj8NTBVrKqPNQddjrKUM6XnUJXIVxrxphIZ7xoALoSOfy4SA7mCLT7hzqzUFmXP
Ij3HFrbzB0j86ZNiwMNzIBQFSn4kEgeGxBSZ4sinYOBt8GZvsGxoN/Z8H0bT0jEPCvihQpXnwtTR
GoSlDLz2hr8K2+mZtiPdqG8zYcn7vMg6ziCvfzUoSVxCnfPJesIm49HoPhZYqkoz7Agu+AIZihfs
j8j9xBkP9CMI+U+kR4Ig+P98sX2dlnrnnS/wV4WlaZ/rkzIi3bdBeB/FJT5QUhf7iGUJa5tSFRau
7ISV29YVEgKHoRxJppii/qatcm7bK+R6CASuH58A6lnpXhEdFI1Vtbq5nc0vmaB2AA+uNBW2GMM2
nb25qZ+8X3AdfXm4tlMu4r2pBQx8n3jDdeRBPFqTgL17NlvxszCbLsnRO6nnO84bF3kvDWrrtF3l
Yey+dd/H341drWzvlhvM7FD/BmHq5UxIUW6wm2sS0jgYK63FzESG9U4nCpy0fmn2z2DXs/2pG5rb
CW03ooOxdr7PU4fHWK+JmxCSXP4FUEsDBBQAAgAIACy7OUCwzTRWRgIAAEoFAABJABwAdG1wL2xh
eW91dC10ZXN0LXJlc3VsdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tY3NzLXJ1bGUtdHlwZXMtY3Jh
c2gtbG9nLnR4dFVUCQADY48gT2OPIE91eAsAAQToAwAABOgDAACdVE1z2jAQPcOvyDG5+UM2NrcW
kiYzpGECbQ6dTmclrUGDkahsJfDvs8LGhRJmOr1pV++93dXuqsehwuFQIneL4XBWg1jNLQg8Pl/f
XP0ItgmHKMSf/V7DuAZt9G5tXHWlYY3VhoA3LWvs1puZWmgo70HLEm2rAHHAclIItoNCZGEBvBBR
0O+9IB8ZS6Lfs6k1291wiK9QOqjb0DwbFOhDd8CZsGpTj4yurSkpwBkjlZFk54zbEteoa4JvUbga
G2/DyTPOZXzMuZ8/ThrEs9N6H6WhTVFLpRfN3Sctx4rqr8Xy9pXEGzWImMjFv6mBrUjtc2nEqlM9
qCRMpv+vUnUyWZb9LTM2wvnX8EwvpE2tit2d0qpaojwwgyKXx8wRCLp9xso46+eELLH6uqc2FMkw
CfKTt3fctviJAeljSSWbQN5B6bbUuEhT34I35CtV/1qUjuik8+150jAf1puScqDG45ba+KRHhjxY
+4x+O6zadwtjzlkKpHRhTlt0O25N+hekWJxL8Ek9YlXBgkowGxJweg7Vqp3snEFwBhljgfbJErKd
l2NCEsbZGcG8GPsHMdgjmnVrcVParC+l4tTA/WYdBu+womER55eL9uqzfRvOeQPZLWYU54mMWXRk
p2EE2YnNEnExN6r4RdXLQ5Bu/3kUB8EHD/lA3bT0WxwqT7Mw/QDWXeepX6w5tWi2xJLm4Q1U7c3T
2WUs5VlyirRO36kS5117GUuCwv8tdHPkjag/vqFrULp1DPafQ/d3AcgMvc3CnLG8/w5QSwMEFAAC
AAgALLs5QNU+yHKFAgAAhgYAAE0AHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hbmltYXRpb25z
L2FuaW1hdGlvbi1jb250cm9sbGVyLWRydC1hcGktY3Jhc2gtbG9nLnR4dFVUCQADY48gT2OPIE91
eAsAAQToAwAABOgDAACVlE1T2zAQhs/wK3qEmz/krxwhTWEKNJNkyqHTw0paJ5rYkivLNOmvrxzb
sU2AtDdLfp9drXb1XlAocTLhSKv1ZLI0wLYrDQyH31fXn344u4CC5+LPy4uGuAKp5D5XVflJQo5l
YYXXLTWt8mIp1hKyO5A8Q91GAN8hiY3g7KI0TBIXnYB5zuXFM9JbpW3Q7/Fcq91+MsEXyCowbWoa
RynWqY/CJdOiMLdKGq0ym+CECLnHySnxOcMcpbHyHbLKYLPbMElMKfc/YAqNBehXDE9CNmTuVo8P
jWJRSVmfTFdyiIDno0c/RtrTdUCQuPw1MFWsqo81B12OspQzpedQlchXGvGmEhnvGgAuhI5/LhID
uYItPuHOrNQWZc8iPccWtvMHSPzpk2LAw3MgFAVKfiQSB4bEFJniyKdg4G3wZm+wbGg39nwfRtPS
MQ8K+KFClefC1NEahKUMvPaGvwrb6Zm2I92obzNhyfu8yDrOIK9/NShJXEKd88l6wibj0eg+Fliq
SjPsCC74AhmKF+yPyP3EGQ/0Iwj5T6RHgiD4/3yxfZ2WeuedL/BXhaVpn+uTMiLdt0F4H8UlPlBS
F/uIZQlrm1IVFq7shJXb1hUSAoehHEmmmKL+pq1ybtsr5HoIBK4fnwDqWeleER0UjVW1urmdzS+Z
oHYAD640FbYYwzadvbmpn7xfcB19ebi2Uy7ivakFDHyfeMN15EE8WpOAvXs2W/GzMJsuydE7qec7
zhsXeS8Nauu0XeVh7L5138ffjV2tbO+WG8zsUP8GYerlTEhRbrCbaxLSOBgrrcXMRIb1TicKnLR+
afbPYNez/akbmtsJbTeig7F2vs9Th8dYr4mbEJJc/gVQSwMEFAACAAgAK7s5QLOFgYJFAgAASgUA
AEsAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hbmltYXRpb25zL2FkZGl0aXZlLXRyYW5zZm9y
bS1hbmltYXRpb25zLXN0ZGVyci50eHRVVAkAA2GPIE9hjyBPdXgLAAEE6AMAAAToAwAAnVRLbxox
ED7Dr8gxue3Du3i5tZA0kUiDgJZDVVV+zILFYlPvOoF/3zH7CJQgVb15PN/3zYxnxj3OShgOJXC3
Gg7nFRObhWUCTs+3dzc/gn3CWRTCz36vZtwybfRha1x5o9kWyh0C7xrW2G13c7XSrHhkWhZgGwUW
ByRDhWA/yFke8EGWiijo95bAR8ai6Hc6tWZ/GA7hlRWOVU1oTgc5+NAdcC6s2lUjoytrCgxwwUhl
JMkl476ALegK4XsQroL6tuZklHMZn3IeF8+TGjFzWh+j1LQpaKn0qvZ90nKssP5KrO9fUbxWYxER
mfg3NWZLVPtcGLHpVFuVhMj0/1XKToZS+rfM2AjnX8MzvZA2lcoPD0qrcg2yZQZ5Jk+ZIybQO4PS
OOvnBC2x+Xqk1hRJIAmys7d33Db4iWHSx5JK1oH8BabbUOM8TX0L3oBvVPVrVTiko8632aRmPm13
BeaAjYc9tvFFjwzeQOUz+u2gbN4tjDknKUOlK3PaoJtxq9O/IkXiTDKf1DOUJVthCWaHAk4vWLlp
JjsjLLiAjCEH+2IR2czLKSEJY3pBMEtj3xGDI6JetwY3xc36UiiODTxuVjt47YqGeZxdL9qrz49t
uOQN5Pti5mlMYhKd2jRi9MwmibiaG1a8VNW6DdLtP4/iIPjgIZ+wmxZ/i7bylIbpB7DOjd8GuhfY
ovkaCpyHN6Yqb57PLiEpp8k50jr9oApYdO0lJAly/7eg5+Q2wv74hm6Z0s3F4Pg5dH8XDSUFb5Mw
IyTr/wFQSwMEFAACAAgALLs5QMIfiIZEAgAASgUAAEgAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9hbmltYXRpb25zL2FuaW1hdGlvbi1kaXJlY3Rpb24tbm9ybWFsLXN0ZGVyci50eHRVVAkAA2SP
IE9kjyBPdXgLAAEE6AMAAAToAwAAnVTBctowED3DV+SY3IwtG9m3FpImM6RhgJZDp9ORpTVoMBKV
rQT+vitkO1DCTKc37eq9t7vaXfVyVkGWCcjtKsvmNeObhWEcTs+3dzc/gn2cs3AAP/s9z7hlSqvD
VtvqRrEtVDsE3jWssd3u5nKlWPnIlCjBNAosCkiKCsF+WFAa0jwnPAz6vSXkI21Q9DudGr0/ZBm8
stKyugmd02EBLnQHnHMjd/VIq9roEgNcMBIRCnLJuC9hC6pG+B64rcF7PSfFfER0ynlcPE88YmaV
OkbxtCkoIdXK331SYiyx/pqv719R3KuxkPCU/5saMxWqfS4133SqrUpMRPL/KlUnQyn9W2asuXWv
4ZhOSOlaFocHqWS1BtEygyIVp8wR43g7g0pb4+YELb75eqR6iiAQB+nZ29vcNPiJZsLFElL4QM6B
6TbUqEgS14I3yDey/rUqLdJR59ts4plP212JOWDjYY9tfFEjjR6oXUa/LVTNuw0inK2EodKVOW3Q
zbj59K9IkSgVzCX1DFXFVliC3qGAVQtWbZrJTgkLLiBjKMC8GEQ283JKiAcRvSDopTbviOER4det
wU1xs76UMscGHjerHbx2RQdFlF4v2qnPj2245A3F+2JyFocRCU/tJGT0zCYxv5obVryU9boN0u1/
HkZB8MFDPmE3Df4WbeUJHSQfwLrrNHGLtcAWzddQ4jy8MVk783x2CUlyGp8jjVUPsoRF115C4qBw
fwvenHhD7I9r6JZJ1TiGx8+h+7vSQlBwNhmkhKT9P1BLAwQUAAIACAAruzlA9CpeGYQCAACGBgAA
TQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWFkZC1ldmVu
dHMtaW4taGFuZGxlci1zdGRlcnIudHh0VVQJAANijyBPYo8gT3V4CwABBOgDAAAE6AMAAJWUwXKb
MBCGz8lT9JjcAAkMPiaum0yT1GN7mkOnh5W02BqDRIVI7T59hQEb4iRub0j6v12tdvkvGJQ4Hgtk
1Wo8Xljgm6UBjv3vq+tPP7xtyCDw8eflRUNcgdJql+uq/KQgx7JwwuuWmlR5sZArBdkdKJGhaSMA
8WjiInjbUYokTaOY8sC7vHhGdquNC/o9nhm93Y3H+AJZBbZNzWKnr1MfhAtuZGFvtbJGZy7BCRGJ
QNBT4nOGOSrr5FvklcVmt2GSmDFBPmAKgwWYV4xIIt5n7paPD41iXilV38xUqo9AQDBgHyPt7Tog
THzxGphoXtXXmoEpB1nKqTYzqEoUS4N4U8lMdA0AHyKPnIvEQS1hg0+4tUu9QXVkkZ1jC9f5PST/
HJNiKKJzIBQFKnEgEg/6xAS5FigmYOFt8GZnsWxoPw4IgcG0dMyDBrGvUOe5tHW0BuEph6B94a/S
dXpq3Eg36ttMOvI+L7KOsyjqowaliU+Zdz7ZkXDJxGjwHnMsdWU4doSQYo4c5QseryhI4g0H+hGk
+icyoGEY/n++GL2aeuc/n+OvCkvb/q5P2sp01wYRxyg+JcBoXewjliWsXEpdOLhyE1ZuWldIKOyH
ciCZYIrmm3HKmWuvVKs+EPokPgH0szZHxWivaKyq1c3cbH7JJHMDuHeliXTFWL7u7M1PSfJ+wXX0
xf7ZTrmR6EyNeiQMAkKD/joKIB6sacjfvZur+FnadZfk4J0sIJ73xkPeK4vGOW1XeRT7b7334bix
q6Xr3WKNmRvq3yBtvZxKJcs1dnNNIxaHQ6WzmKnMsN7pRKGX1n+aO+ntBq4/dUNzN6HtxmhvrAff
j1IRY72mfkJpcvkXUEsDBBQAAgAIACy7OUBc3VhYZAAAANYAAAAmABwAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvdGVzdHNfcnVuMC50eHRVVAkAA2SPIE9gjyBPdXgLAAEE6AMAAAToAwAAfctRDoNA
CITh994F90wjEiHdbgigxtu3ja/G1/m/0SpvJVnZ4M5glQZmyaTdQCGLhXBNrv7SO7uVTlqffls5
kEqHyqCB3VaUjZVw4KT6jzP4/fSWRUYZOm3RH9wZ1rvxT9mlvlBLAwQUAAIACAAsuzlABYGDeoEA
AAAdAQAAJgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjEudHh0VVQJAANjjyBP
YY8gT3V4CwABBOgDAAAE6AMAAIWOSw7CMAxE99zFcCbHcRWT1JZsR6K351NYVEKwG43efJCII6TI
kNwuWK9IrAlkmqITU0wDCGcwYAT704AFZUznc8t1nPDYoNTMYYh2roBquq02A8ow6kCO0b7HPqCz
VvY3L3p4sh+JHzUuCNSYerHbLrj+B+OxGaCWsgi9lvbMHVBLAwQUAAIACAAsuzlA+QP/SW0AAADy
AAAAJgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjMudHh0VVQJAANkjyBPYY8g
T3V4CwABBOgDAAAE6AMAAH2OQQrDMAwE7/2LmkNeJBzZEdjrICuh/X1NC3UKobc9zCzD0MKuFW2a
lymsjCTkxmixWiEFCRaSQ+D31Uu+8Y/Qp+njJPhzE/oyV4rJljkIRc1ZkYZ7BTdn738+Kv7zI6Sa
pl5/NIo7whv4CC9QSwMECgAAAAAALLs5QAAAAAAAAAAAAAAAACYAHAB0bXAvbGF5b3V0LXRlc3Qt
cmVzdWx0cy9hY2Nlc3NpYmlsaXR5L1VUCQADY48gT2iPIE91eAsAAQToAwAABOgDAABQSwMEFAAC
AAgALLs5QNQOs8YbAgAArgQAAEkAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hY2Nlc3NpYmls
aXR5L2FyaWEtY2hlY2tib3gtY2hlY2tlZC1jcmFzaC1sb2cudHh0VVQJAANjjyBPY48gT3V4CwAB
BOgDAAAE6AMAAJ2UTXPaMBCGz/Arckxu/pCN7VsLSZMZ0jBAm0On09HHGjTYEpWtBP59Vli4UJKZ
Tm9o9b7Prle7DBhtoCgEMLsqikVL+WZpKIfT39c3Vz+CXcJoFMLP4aBzXFOl1b7WtrlStIZmi8Ib
75rYeruQK0Wre6pEBcYTaByQHAnBblSyjIYJTXkUDAfPwMbaIPR7NjN6ty8KeKGVpa1PzbJRCS51
L1xwI7ftWKvW6AoTXDhSEQly6bitoAbVonwH3LbQRTtPnjEm4lPP/fJx2inmVqlDls42AyWkWnV3
n5SYSPz+lq9vXxDe0WhEeM7/jUZNg7TPleabnnqkJESk/09pekyWZX9jJppb1w3ndCClW1nu76SS
zRrE0RmUuTh1jinH2zk02ho3J3jim68Ha2cRBJIgP+u9Zcbrp5oKl0tI0SVyASzXW+MyTd0TvALb
yPbXqrJoR863+bRzPtTbCmvAh4cdPuOTGmuMQOsq+m2h8X0LY8ZISpH0wZx6tR+3rvwPUCTOBXVF
PULT0BV+gt4iwKolbTZ+snNCgwvJBEowTwaVfl5ODUkYZxcG/azNH8XooOjWzetmuFlfKskO+Z9l
uz5OXr9jLIrD5J1iH7BjBjfySE+zMH1H1l/nqRveJbZhsYYKe/5KZeuO5/NBSMqy5FxprLqTFSz7
FhKSBKXbX7w5iUbYA9e0mkrlA6PDAvb/D3koMnBnEuaE5MM3UEsDBBQAAgAIACu7OUAwmcJugwIA
AIYGAABfABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYWNjZXNzaWJpbGl0eS9hZGphY2VudC1j
b250aW51YXRpb25zLWNhdXNlLWFzc2VydGlvbi1mYWlsdXJlLXN0ZGVyci50eHRVVAkAA2GPIE9h
jyBPdXgLAAEE6AMAAAToAwAAlZRNU9swEIbP8Ct6hJs/5K8cIU1hCjSTZMqh08NKWiea2JIryzTp
r68c27FNgLQ3S3qfXa12/V5QKHEy4Uir9WSyNMC2Kw0Mh99X159+OLuAgufiz8uLhrgCqeQ+V1X5
SUKOZWGF1y01rfJiKdYSsjuQPEPdRgDfIYmN4Oyi1A/DMMGEec7lxTPSW6Vt0O/xXKvdfjLBF8gq
MG1qGkcp1qmPwiXTojC3ShqtMpvghAi5x8kp8TnDHKWx8h2yymCz2zBJTCn3P2AKjQXoVwxPQjZk
7laPD41iUUlZ30xXcoiA56NHP0ba23VAkLj8NTBVrKqvNQddjrKUM6XnUJXIVxrxphIZ7xoALoSO
fy4SA7mCLT7hzqzUFmXPIj3HFrbzB0j86ZNiwMNzIBQFSn4kEgeGxBSZ4sinYOBt8GZvsGxoN/Z8
H0bT0jEPCvihQpXnwtTRGoSlDLz2hb8K2+mZtiPdqG8zYcn7vMg6ziCvjxqUJC6hzvlkPWGT8Wj0
HgssVaUZdgQXfIEMxQv2V+R+4owH+hGE/CfSI0EQ/H++GJ2aeuc/X+CvCkvT/q5Pyoh03wbhfRSX
+EBJXewjliWsbUpVWLiyE1ZuW1dICByGciSZYor6m7bKuW2vkOshELh+fAKoZ6V7RXRQNFbV6uZ2
Nr9kgtoBPLjSVNhiDNt09uamfvJ+wXX05eHZTrmI96YGcRz5xBuuqQfxaE0C9u7dbMXPwmy6JEfv
pJ7vOG885L00qK3TdpWHsfvWex+PG7ta2d4tN5jZof4NwtTLmZCi3GA31ySkcTBWWouZiQzrnU4U
OGn9p9mTwa5n+1M3NLcT2m5EB2M9+j4nPMZ6TdyEkOTyL1BLAwQUAAIACAAsuzlAmFxCl0UCAABK
BQAAUQAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2Jv
eC1zZW5kcy1ub3RpZmljYXRpb24tc3RkZXJyLnR4dFVUCQADY48gT2OPIE91eAsAAQToAwAABOgD
AACdVE1z2jAQPcOvyDG5GVs2MrcWkiYzpGGAlkOn09HHGjQYicpWAv++K9s4poSZTm/a1Xtvd7W7
6nFWwGgkgbv1aLQomdguLRPQPd/e3fwIDjFn4QB+9ns145Zpo48744obzXZQ7BF417AmbrdfqLVm
+SPTMgfbKLAoICkqBIdhxgPJglSKMOj3VsDHxqLodzqz5nAcjeCV5Y6VTWhOhxn40C1wIazal2Oj
S2tyDHDBSGQoySXjPocd6BLhBxCuhNpbc1LKuYy6nMfl87RGzJ3WVZSaNgMtlV7Xd5+0nCisvxSb
+1cUr9VYSEQq/k2N2QLVPudGbFvVk0pMZPL/KkUrQyn9W2ZihPOv4ZleSJtSZccHpVWxAXliBlkq
u8wxE3g7h8I46+cELbH9WlFriiQQB+nZ2ztuG/zUMOljSSXrQN6B6TbUKEsS34I34FtV/lrnDumo
820+rZlPu32OOWDj4YBtfNFjgx4ofUa/HRTNuw0izknCUOnKnDboZtzq9K9IkSiVzCf1DEXB1liC
2aOA00tWbJvJTgkLLiATyMC+WEQ289IlxIOIXhDMyth3xLBC1OvW4Ga4WV9yxbGB1WadBu+0ooMs
Sq8X7dUXVRsueUP5vpgyi3hEwq6dhYye2SQWV3PDileq3JyCtPvPwygIPnjIJ+ymxd/iVHlCB8kH
sPY6TfxiLbFFiw3kOA9vTJXePJ9dQhJO43OkdfpB5bBs20tIHGT+b8GbjjfE/viG7pjSjWNYfQ7t
30WppOBtMkgJSft/AFBLAwQUAAIACAAsuzlA1A6zxhsCAACuBAAARgAcAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2FjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1jaGVja2VkLXN0ZGVyci50eHRV
VAkAA2OPIE9jjyBPdXgLAAEE6AMAAAToAwAAnZRNc9owEIbP8CtyTG7+kI3tWwtJkxnSMECbQ6fT
0ccaNNgSla0E/n1WWLhQkplOb2j1vs+uV7sMGG2gKAQwuyqKRUv5Zmkoh9Pf1zdXP4JdwmgUws/h
oHNcU6XVvta2uVK0hmaLwhvvmth6u5ArRat7qkQFxhNoHJAcCcFuVLKMhglNeRQMB8/Axtog9Hs2
M3q3Lwp4oZWlrU/NslEJLnUvXHAjt+1Yq9boChNcOFIRCXLpuK2gBtWifAfcttBFO0+eMSbiU8/9
8nHaKeZWqUOWzjYDJaRadXeflJhI/P6Wr29fEN7RaER4zv+NRk2DtM+V5pueeqQkRKT/T2l6TJZl
f2MmmlvXDed0IKVbWe7vpJLNGsTRGZS5OHWOKcfbOTTaGjcneOKbrwdrZxEEkiA/671lxuunmgqX
S0jRJXIBLNdb4zJN3RO8AtvI9teqsmhHzrf5tHM+1NsKa8CHhx0+45Maa4xA6yr6baHxfQtjxkhK
kfTBnHq1H7eu/A9QJM4FdUU9QtPQFX6C3iLAqiVtNn6yc0KDC8kESjBPBpV+Xk4NSRhnFwb9rM0f
xeig6NbN62a4WV8qyQ75n2W7Pk5ev2MsisPknWIfsGMGN/JIT7MwfUfWX+epG94ltmGxhgp7/kpl
647n80FIyrLkXGmsupMVLPsWEpIEpdtfvDmJRtgD17SaSuUDo8MC9v8PeSgycGcS5oTkwzdQSwME
FAACAAgAK7s5QNA9D0VEAgAASgUAAGcAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hY2Nlc3Np
YmlsaXR5L2Fub255bW91cy1yZW5kZXItYmxvY2staW4tY29udGludWF0aW9uLWNhdXNlcy1jcmFz
aC1jcmFzaC1sb2cudHh0VVQJAANijyBPYo8gT3V4CwABBOgDAAAE6AMAAJ1UTXPaMBA9w6/IMbkZ
W7Zlbi0kTWZIwwAth06no481aLAlKlsJ/PuusHGghJlOb9rVe293tbvqcVbBcCiBu9VwOK+Z2Cws
E3B6vr27+RHsYs7CAfzs9xrGLdNG70vjqhvNSqi2CLxrWWNXbudqpVnxyLQswLYKLApIhgrBLs05
I1RKKcKg31sCHxmLot/p1JrdfjiEV1Y4VrehOU1z8KE74FxYta1HRtfWFBjggpHIUJJLxn0BJega
4TsQrobG23AyyrmMTjmPi+dJg5g5rQ9RGtoUtFR61dx90nKssP5arO9fUbxRYyERmfg3NWYrVPtc
GLHpVI8qMZHJ/6tUnQyl9G+ZsRHOv4ZneiFtapXvH5RW1RrkkRnkmTxljpjA2xlUxlk/J2iJzdcD
taFIAnGQnb2947bFTwyTPpZUsgnkHZhuS43yJPEteAO+UfWvVeGQjjrfZpOG+VRuC8wBGw87bOOL
Hhn0QO0z+u2gat9tEHFOEoZKV+a0Rbfj1qR/RYpEmWQ+qWeoKrbCEswWBZxesGrTTnZGWHABGUMO
9sUisp2XU0I8iOgFwSyNfUekB0Szbi1uipv1pVAcG3jYrOPgHVd0kEfZ9aK9+vzQhkteKt8XU4iU
RyQ8tfOQ0TObxOJqbljxUtXrY5Bu/3kYBcEHD/mE3bT4WxwrT+gg+QDWXWeJX6wFtmi+hgLn4Y2p
2pvns0tIwml8jrROP6gCFl17CYmD3P8teHPiDbE/vqElU7p1pIfPofu7BJUUvE0GGSFZ/w9QSwME
FAACAAgAK7s5QDCZwm6DAgAAhgYAAGIAHAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hY2Nlc3Np
YmlsaXR5L2FkamFjZW50LWNvbnRpbnVhdGlvbnMtY2F1c2UtYXNzZXJ0aW9uLWZhaWx1cmUtY3Jh
c2gtbG9nLnR4dFVUCQADYY8gT2GPIE91eAsAAQToAwAABOgDAACVlE1T2zAQhs/wK3qEmz/krxwh
TWEKNJNkyqHTw0paJ5rYkivLNOmvrxzbsU2AtDdLep9drXb9XlAocTLhSKv1ZLI0wLYrDQyH31fX
n344u4CC5+LPy4uGuAKp5D5XVflJQo5lYYXXLTWt8mIp1hKyO5A8Q91GAN8hiY3g7KLUD8MwwYR5
zuXFM9JbpW3Q7/Fcq91+MsEXyCowbWoaRynWqY/CJdOiMLdKGq0ym+CECLnHySnxOcMcpbHyHbLK
YLPbMElMKfc/YAqNBehXDE9CNmTuVo8PjWJRSVnfTFdyiIDno0c/RtrbdUCQuPw1MFWsqq81B12O
spQzpedQlchXGvGmEhnvGgAuhI5/LhIDuYItPuHOrNQWZc8iPccWtvMHSPzpk2LAw3MgFAVKfiQS
B4bEFJniyKdg4G3wZm+wbGg39nwfRtPSMQ8K+KFClefC1NEahKUMvPaFvwrb6Zm2I92obzNhyfu8
yDrOIK+PGpQkLqHO+WQ9YZPxaPQeCyxVpRl2BBd8gQzFC/ZX5H7ijAf6EYT8J9IjQRD8f74YnZp6
5z9f4K8KS9P+rk/KiHTfBuF9FJf4QEld7COWJaxtSlVYuLITVm5bV0gIHIZyJJliivqbtsq5ba+Q
6yEQuH58AqhnpXtFdFA0VtXq5nY2v2SC2gE8uNJU2GIM23T25qZ+8n7BdfTl4dlOuYj3pgZxHPnE
G66pB/FoTQL27t1sxc/CbLokR++knu84bzzkvTSordN2lYex+9Z7H48bu1rZ3i03mNmh/g3C1MuZ
kKLcYDfXJKRxMFZai5mJDOudThQ4af2n2ZPBrmf7Uzc0txPabkQHYz36Pic8xnpN3ISQ5PIvUEsD
BBQAAgAIACy7OUCYXEKXRQIAAEoFAABUABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYWNjZXNz
aWJpbGl0eS9hcmlhLWNoZWNrYm94LXNlbmRzLW5vdGlmaWNhdGlvbi1jcmFzaC1sb2cudHh0VVQJ
AANjjyBPY48gT3V4CwABBOgDAAAE6AMAAJ1UTXPaMBA9w6/IMbkZWzYytxaSJjOkYYCWQ6fT0cca
NBiJylYC/74r2zimhJlOb9rVe293tbvqcVbAaCSBu/VotCiZ2C4tE9A9397d/AgOMWfhAH72ezXj
lmmjjzvjihvNdlDsEXjXsCZut1+otWb5I9MyB9sosCggKSoEh2HGA8mCVIow6PdWwMfGouh3OrPm
cByN4JXljpVNaE6HGfjQLXAhrNqXY6NLa3IMcMFIZCjJJeM+hx3oEuEHEK6E2ltzUsq5jLqcx+Xz
tEbMndZVlJo2Ay2VXtd3n7ScKKy/FJv7VxSv1VhIRCr+TY3ZAtU+50ZsW9WTSkxk8v8qRStDKf1b
ZmKE86/hmV5Im1JlxwelVbEBeWIGWSq7zDETeDuHwjjr5wQtsf1aUWuKJBAH6dnbO24b/NQw6WNJ
JetA3oHpNtQoSxLfgjfgW1X+WucO6ajzbT6tmU+7fY45YOPhgG180WODHih9Rr8dFM27DSLOScJQ
6cqcNuhm3Or0r0iRKJXMJ/UMRcHWWILZo4DTS1Zsm8lOCQsuIBPIwL5YRDbz0iXEg4heEMzK2HfE
sELU69bgZrhZX3LFsYHVZp0G77SigyxKrxft1RdVGy55Q/m+mDKLeETCrp2FjJ7ZJBZXc8OKV6rc
nIK0+8/DKAg+eMgn7KbF3+JUeUIHyQew9jpN/GItsUWLDeQ4D29Mld48n11CEk7jc6R1+kHlsGzb
S0gcZP5vwZuON8T++IbumNKNY1h9Du3fRamk4G0ySAlJ+38AUEsDBBQAAgAIACu7OUDQPQ9FRAIA
AEoFAABkABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYWNjZXNzaWJpbGl0eS9hbm9ueW1vdXMt
cmVuZGVyLWJsb2NrLWluLWNvbnRpbnVhdGlvbi1jYXVzZXMtY3Jhc2gtc3RkZXJyLnR4dFVUCQAD
Yo8gT2KPIE91eAsAAQToAwAABOgDAACdVE1z2jAQPcOvyDG5GVu2ZW4tJE1mSMMALYdOp6OPNWiw
JSpbCfz7rrBxoISZTm/a1Xtvd7W76nFWwXAogbvVcDivmdgsLBNwer69u/kR7GLOwgH87Pcaxi3T
Ru9L46obzUqotgi8a1ljV27naqVZ8ci0LMC2CiwKSIYKwS7NOSNUSinCoN9bAh8Zi6Lf6dSa3X44
hFdWOFa3oTlNc/ChO+BcWLWtR0bX1hQY4IKRyFCSS8Z9ASXoGuE7EK6GxttwMsq5jE45j4vnSYOY
Oa0PURraFLRUetXcfdJyrLD+WqzvX1G8UWMhEZn4NzVmK1T7XBix6VSPKjGRyf+rVJ0MpfRvmbER
zr+GZ3ohbWqV7x+UVtUa5JEZ5Jk8ZY6YwNsZVMZZPydoic3XA7WhSAJxkJ29veO2xU8Mkz6WVLIJ
5B2YbkuN8iTxLXgDvlH1r1XhkI4632aThvlUbgvMARsPO2zjix4Z9EDtM/rtoGrfbRBxThKGSlfm
tEW349akf0WKRJlkPqlnqCq2whLMFgWcXrBq0052RlhwARlDDvbFIrKdl1NCPIjoBcEsjX1HpAdE
s24tboqb9aVQHBt42Kzj4B1XdJBH2fWivfr80IZLXirfF1OIlEckPLXzkNEzm8Tiam5Y8VLV62OQ
bv95GAXBBw/5hN20+FscK0/oIPkA1l1niV+sBbZovoYC5+GNqdqb57NLSMJpfI60Tj+oAhZdewmJ
g9z/LXhz4g2xP76hJVO6daSHz6H7uwSVFLxNBhkhWf8PUEsDBBQAAgAIACu7OUDJNH4mkAIAADwG
AABXABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYWNjZXNzaWJpbGl0eS9hbmNob3ItbGlua2Vk
LWFub255bW91cy1ibG9jay1jcmFzaC1jcmFzaC1sb2cudHh0VVQJAANijyBPYo8gT3V4CwABBOgD
AAAE6AMAAIWUTVPbMBCGz/ArOMLNluXPY0lTmOEjQ9Lm0Ol0VtY60cSRXFkqob++8ldwCIGbJb/P
rla7es8Y1JhlHJldZdncQL5ZaMhx/H15dfHT24UMiI+/zs864hKkki9bZesLCVusKye86qmJ3VZz
sZJQ3oDkJeo+AgQeTV0EbxcXfk6Q8Tgn3vnZEtm10i7oj2Sm1e4ly/AvlBZMn5olcYFN6r1wnmtR
mWsljValS3BERJxwekx8LXGL0jj5DnNrsNvtmDRhjAcfMJXGCvQbhqdRPmZuFvd3neLJStmcTFs5
RoAESNjHSH+6AQhTn78FJiq3zbFmoOuDLPVU6RnYGvlCI36xouRDA8CHyAs+i5SDXMAGH3BnFmqD
8pVF9hlbuc63kPj3mhRDHn0GQlWh5Hsi9WBMTDBXHPkEDLwFi9LW647zExLE/kHXB/VSC9NerOS3
xYMydwq4kKt7EPIJa2X1MOXcCxM/HoeYajfejb7NJqSo18h7vmd8GvADZhx3QLng05Y+ZAmNSNOS
Z2QbYX6vSut4F+j7011H3m6rMsuaUXcNybJHea3cDhrkT/jHYt2PlR8wRqPm1k68zF7dPzB3B6J4
ORGKBimH5lD3WNewciWoygWwbi7qTf+WUwrekWSCBepH7ZQzd9OuyDEQ+kFyBKil0q+KuFV0BtPr
Zm6ivpWCubFpvWQiXEEmXw+m5BdBerroJvq8bcMxF/O9FQUE4jCgZLxOCSQHaxrmJ8/mKl4Ksx6S
7B2PkcDz3rnIW9dN7fxxqDxK/Ogd2f53ZzIL16L5Gks3D88gTLOc9gPZKSmNWBIeKp0xTEWJi317
KQ29onFT92e0S1x/moZu3ez2G3Frh3u3zglPsFlTP6U0Pf8PUEsDBBQAAgAIACu7OUDJNH4mkAIA
ADwGAABUABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYWNjZXNzaWJpbGl0eS9hbmNob3ItbGlu
a2VkLWFub255bW91cy1ibG9jay1jcmFzaC1zdGRlcnIudHh0VVQJAANijyBPYo8gT3V4CwABBOgD
AAAE6AMAAIWUTVPbMBCGz/ArOMLNluXPY0lTmOEjQ9Lm0Ol0VtY60cSRXFkqob++8ldwCIGbJb/P
rla7es8Y1JhlHJldZdncQL5ZaMhx/H15dfHT24UMiI+/zs864hKkki9bZesLCVusKye86qmJ3VZz
sZJQ3oDkJeo+AgQeTV0EbxcXfk6Q8Tgn3vnZEtm10i7oj2Sm1e4ly/AvlBZMn5olcYFN6r1wnmtR
mWsljValS3BERJxwekx8LXGL0jj5DnNrsNvtmDRhjAcfMJXGCvQbhqdRPmZuFvd3neLJStmcTFs5
RoAESNjHSH+6AQhTn78FJiq3zbFmoOuDLPVU6RnYGvlCI36xouRDA8CHyAs+i5SDXMAGH3BnFmqD
8pVF9hlbuc63kPj3mhRDHn0GQlWh5Hsi9WBMTDBXHPkEDLwFi9LW647zExLE/kHXB/VSC9NerOS3
xYMydwq4kKt7EPIJa2X1MOXcCxM/HoeYajfejb7NJqSo18h7vmd8GvADZhx3QLng05Y+ZAmNSNOS
Z2QbYX6vSut4F+j7011H3m6rMsuaUXcNybJHea3cDhrkT/jHYt2PlR8wRqPm1k68zF7dPzB3B6J4
ORGKBimH5lD3WNewciWoygWwbi7qTf+WUwrekWSCBepH7ZQzd9OuyDEQ+kFyBKil0q+KuFV0BtPr
Zm6ivpWCubFpvWQiXEEmXw+m5BdBerroJvq8bcMxF/O9FQUE4jCgZLxOCSQHaxrmJ8/mKl4Ksx6S
7B2PkcDz3rnIW9dN7fxxqDxK/Ogd2f53ZzIL16L5Gks3D88gTLOc9gPZKSmNWBIeKp0xTEWJi317
KQ29onFT92e0S1x/moZu3ez2G3Frh3u3zglPsFlTP6U0Pf8PUEsDBAoAAAAAACu7OUAAAAAAAAAA
AAAAAAAdABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC9VVAkAA2KPIE9ojyBPdXgLAAEE
6AMAAAToAwAAUEsDBAoAAAAAACu7OUAAAAAAAAAAAAAAAAAjABwAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvaHR0cC90ZXN0cy9VVAkAA2KPIE9ojyBPdXgLAAEE6AMAAAToAwAAUEsDBAoAAAAAACy7
OUAAAAAAAAAAAAAAAAAsABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9hcHBj
YWNoZS9VVAkAA2SPIE9ojyBPdXgLAAEE6AMAAAToAwAAUEsDBBQAAgAIACy7OUAm5H1rjwIAADwG
AABeABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9jcmFzaC13
aGVuLW5hdmlnYXRpbmctYXdheS10aGVuLWJhY2stY3Jhc2gtbG9nLnR4dFVUCQADY48gT2OPIE91
eAsAAQToAwAABOgDAACFlMly2zAMhs/JU+SY3LRQ67Fx3WQmi8dW60On0wFFyOZYJlVKapw+faHN
luM4uYnU/wEEfxAXHEqMY4G8XsXxooJ0kxhIcfx9fXP109p5HBwbf11edMQ1KK1et7ourxRssSxI
eNNTk3pbLORKQX4HSuRo+gjgWiyiCNYuyLjrMUekqWNdXiyR32pDQX+EM6N3r3GMfyGvoepT8zDI
sEm9Fy5SI4vqVqvK6JwSnBC+cAQ7Jb7muEVVkXyHaV1ht9sxUci5cD9gCoMFmDeMiPx0zNwljw+d
Yl4r1ZzM1GqMgOOiwz9G+tMNgBfZ4i0w0WndHGsGpjzKUk61mUFdokgM4pda5mIwAGzwLfezSCmo
BDb4hLsq0RtUBxb5Z2xBzreQ/HdIip7wPwOhKFCJPRFZMCYmmGqBYgIVvAWzvC7XHWeHjhvYR64P
6qWRVXuxStxnT7p60CCkWj2CVHMsdW2GLheWF9rBOMTUUHs3+jabVLJco+j5nrGZK46YcdwBFVJM
W/qYdZjvNJa8IN/I6vcqr4mnQN/nDx15vy3yOG5anQyJ42d1q2kHKxRz/FNj2beV7XLO/ObWzrzM
Xt0/MLoDmb2eCcXcSEBzqEcsS1hRCbqgADX1Rbnp33LEwDqRTDBD82xIOaObpiLHgGe74Qmgl9oc
FEGr6AZMr5tRR33LJae2aWfJRFJBVboehpKdudH5opvoi9aGUy4Qh1FEnoPLnPEaHQiP1sxLz56N
Kl7Kaj0k2U887riW9c5F3pObhubjULkf2v47sv3vbsgkZNFijTn1wwvIqllO+4bslIz5PPSOlTQY
pjLHZG8vY56VNdOU/ox2HfKnMXRLvdtvBO043E/rNBAhNmtmR4xFl/8BUEsDBBQAAgAIACy7OUAm
5H1rjwIAADwGAABbABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9jcmFzaC13aGVuLW5hdmlnYXRpbmctYXdheS10aGVuLWJhY2stc3RkZXJyLnR4dFVUCQADY48g
T2OPIE91eAsAAQToAwAABOgDAACFlMly2zAMhs/JU+SY3LRQ67Fx3WQmi8dW60On0wFFyOZYJlVK
apw+faHNluM4uYnU/wEEfxAXHEqMY4G8XsXxooJ0kxhIcfx9fXP109p5HBwbf11edMQ1KK1et7ou
rxRssSxIeNNTk3pbLORKQX4HSuRo+gjgWiyiCNYuyLjrMUekqWNdXiyR32pDQX+EM6N3r3GMfyGv
oepT8zDIsEm9Fy5SI4vqVqvK6JwSnBC+cAQ7Jb7muEVVkXyHaV1ht9sxUci5cD9gCoMFmDeMiPx0
zNwljw+dYl4r1ZzM1GqMgOOiwz9G+tMNgBfZ4i0w0WndHGsGpjzKUk61mUFdokgM4pda5mIwAGzw
LfezSCmoBDb4hLsq0RtUBxb5Z2xBzreQ/HdIip7wPwOhKFCJPRFZMCYmmGqBYgIVvAWzvC7XHWeH
jhvYR64P6qWRVXuxStxnT7p60CCkWj2CVHMsdW2GLheWF9rBOMTUUHs3+jabVLJco+j5nrGZK46Y
cdwBFVJMW/qYdZjvNJa8IN/I6vcqr4mnQN/nDx15vy3yOG5anQyJ42d1q2kHKxRz/FNj2beV7XLO
/ObWzrzMXt0/MLoDmb2eCcXcSEBzqEcsS1hRCbqgADX1Rbnp33LEwDqRTDBD82xIOaObpiLHgGe7
4Qmgl9ocFEGr6AZMr5tRR33LJae2aWfJRFJBVboehpKdudH5opvoi9aGUy4Qh1FEnoPLnPEaHQiP
1sxLz56NKl7Kaj0k2U887riW9c5F3pObhubjULkf2v47sv3vbsgkZNFijTn1wwvIqllO+4bslIz5
PPSOlTQYpjLHZG8vY56VNdOU/ox2HfKnMXRLvdtvBO043E/rNBAhNmtmR4xFl/8BUEsDBBQAAgAI
ACy7OUAaGcLtkAIAADwGAABIABwAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9jcmVkZW50aWFsLXVybC1jcmFzaC1sb2cudHh0VVQJAANjjyBPY48gT3V4CwABBOgD
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
BmUAAADfAAAAJgAcAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL3Rlc3RzX3J1bjIudHh0VVQJAANk
jyBPYY8gT3V4CwABBOgDAAAE6AMAAH3OQQrDQAiF4X3v8tozSbREcJygNtDbd2hIyGp2D/yEn1wb
lXbPFzFr6S6oIM93jwa6rs+1mj3ops+J8QfZxSuhjpWcTWLil+4V3QYCR4E2neFMxMdG1HeTWQVr
yPJfPsrJDvoDUEsDBAoAAAAAACq7OUAAAAAAAAAAAAAAAABDABwAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvcHl3ZWJzb2NrZXQud3MubG9nLTI1SmFuMjAxMi0yMzI1MTktZXJyLnR4dFVUCQADX48g
T1+PIE91eAsAAQToAwAABOgDAABQSwMEFAACAAgALrs5QLIzumpqAgAAlwgAACkAHAB0bXAvbGF5
b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvblVUCQADZ48gT2iPIE91eAsAAQToAwAA
BOgDAACtVcFu2zAM/ZVBpw2ImrbpCiw7FWuBDeiwoUmB3QxFpm3OsmxIlBOj6L+PkpemO3To5uQS
hSEfyadH6ur6Oru7Wd3frldvHwSBJy+WD6Ii6uL3k0F1nVa6gnjWg0NjUMvg8KSixkQj7DrQBLlY
iu9Xq5WYCaUpKP5PfLq7Wn1mQ6V85ikH58SSXIDH6KPBe9mjkg5ydAxx0lXd/wNqp3wltxVYaVWP
pSK0pVRbNUiKxo3S9dSaA1UTITQ3C5ZQGebQTALjz55G3KBBGtJ12dYOTRs802rZW25Mq2uJVuqW
89rAvLT8QwUPXibSXqrizfrL15tv9+vXspP/VJp7+yORHzNJ5T24lLlQaIKDqVdhddU6adDWkMtD
02O3f23rtRkcS5N1r+tNu5OeyfTStoQF6tTZUeHTAfJpeoisYDPSnqSQ50jYgySnrC9a18iDw2T+
fwOl23atMSy13JFUHR4NmhuQ0LOkfNRvpWzOWY6GPi6deLJMjTIvj8HNj/W/08LLzQXD5A8dTGV7
kcdYB53hCZNF3MG8256udSK6J0U8oSRZ4yPfR4NmMhzungkwsnFQ4dRlypIon8ubVfLUw0TsA2jr
sGTg3ssiWD19eNLe9jV2XYy7uLyYCRuazEHp4ipPw3t+OhNoiYNCl+Bj5OjXIDvZUizZxaihDZSl
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
dWx0cy9hbmltYXRpb25zL1VUBQADZI8gT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACy7OUCw
zTRWRgIAAEoFAABGABgAAAAAAAEAAACkga8AAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hbmlt
YXRpb25zL2FuaW1hdGlvbi1jc3MtcnVsZS10eXBlcy1zdGRlcnIudHh0VVQFAANjjyBPdXgLAAEE
6AMAAAToAwAAUEsBAh4DFAACAAgAK7s5QLOFgYJFAgAASgUAAE4AGAAAAAAAAQAAAKSBdQMAAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FuaW1hdGlvbnMvYWRkaXRpdmUtdHJhbnNmb3JtLWFuaW1h
dGlvbnMtY3Jhc2gtbG9nLnR4dFVUBQADYY8gT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACu7
OUD0Kl4ZhAIAAIYGAABQABgAAAAAAAEAAACkgUIGAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9h
bmltYXRpb25zL2FuaW1hdGlvbi1hZGQtZXZlbnRzLWluLWhhbmRsZXItY3Jhc2gtbG9nLnR4dFVU
BQADYo8gT3V4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAACy7OUAAAAAAAAAAAAAAAAAmABgAAAAA
AAAAEADtQVAJAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hbmltYXRpb25zLzNkL1VUBQADZI8g
T3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACu7OUC7YbcggwIAAIYGAABOABgAAAAAAAEAAACk
gbAJAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hbmltYXRpb25zLzNkL2NoYW5nZS10cmFuc2Zv
cm0taW4tZW5kLWV2ZW50LXN0ZGVyci50eHRVVAUAA2GPIE91eAsAAQToAwAABOgDAABQSwECHgMU
AAIACAAruzlAu2G3IIMCAACGBgAAUQAYAAAAAAABAAAApIG7DAAAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvYW5pbWF0aW9ucy8zZC9jaGFuZ2UtdHJhbnNmb3JtLWluLWVuZC1ldmVudC1jcmFzaC1s
b2cudHh0VVQFAANhjyBPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAK7s5QKS/M4lFAgAASgUA
AFMAGAAAAAAAAQAAAKSByQ8AAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FuaW1hdGlvbnMvM2Qv
bWF0cml4LXRyYW5zZm9ybS10eXBlLWFuaW1hdGlvbi1jcmFzaC1sb2cudHh0VVQFAANijyBPdXgL
AAEE6AMAAAToAwAAUEsBAh4DFAACAAgAK7s5QKS/M4lFAgAASgUAAFAAGAAAAAAAAQAAAKSBmxIA
AHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FuaW1hdGlvbnMvM2QvbWF0cml4LXRyYW5zZm9ybS10
eXBlLWFuaW1hdGlvbi1zdGRlcnIudHh0VVQFAANijyBPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAC
AAgALLs5QIWDAUWEAgAAhgYAAFEAGAAAAAAAAQAAAKSBahUAAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2FuaW1hdGlvbnMvM2QvdHJhbnNmb3JtLW9yaWdpbi12cy1mdW5jdGlvbnMtY3Jhc2gtbG9n
LnR4dFVUBQADZI8gT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACu7OUAftVNUgwIAAIYGAABK
ABgAAAAAAAEAAACkgXkYAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hbmltYXRpb25zLzNkL3Jl
cGxhY2UtZmlsbGluZy10cmFuc2Zvcm0tc3RkZXJyLnR4dFVUBQADYo8gT3V4CwABBOgDAAAE6AMA
AFBLAQIeAxQAAgAIACy7OUC2yEa6hAIAAIYGAABQABgAAAAAAAEAAACkgYAbAAB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9hbmltYXRpb25zLzNkL3N0YXRlLWF0LWVuZC1ldmVudC10cmFuc2Zvcm0t
Y3Jhc2gtbG9nLnR4dFVUBQADY48gT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACy7OUCFgwFF
hAIAAIYGAABOABgAAAAAAAEAAACkgY4eAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hbmltYXRp
b25zLzNkL3RyYW5zZm9ybS1vcmlnaW4tdnMtZnVuY3Rpb25zLXN0ZGVyci50eHRVVAUAA2SPIE91
eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAruzlAH7VTVIMCAACGBgAATQAYAAAAAAABAAAApIGa
IQAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYW5pbWF0aW9ucy8zZC9yZXBsYWNlLWZpbGxpbmct
dHJhbnNmb3JtLWNyYXNoLWxvZy50eHRVVAUAA2KPIE91eAsAAQToAwAABOgDAABQSwECHgMUAAIA
CAAsuzlAtshGuoQCAACGBgAATQAYAAAAAAABAAAApIGkJAAAdG1wL2xheW91dC10ZXN0LXJlc3Vs
dHMvYW5pbWF0aW9ucy8zZC9zdGF0ZS1hdC1lbmQtZXZlbnQtdHJhbnNmb3JtLXN0ZGVyci50eHRV
VAUAA2OPIE91eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAsuzlAwh+IhkQCAABKBQAASwAYAAAA
AAABAAAApIGvJwAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYW5pbWF0aW9ucy9hbmltYXRpb24t
ZGlyZWN0aW9uLW5vcm1hbC1jcmFzaC1sb2cudHh0VVQFAANkjyBPdXgLAAEE6AMAAAToAwAAUEsB
Ah4DFAACAAgALLs5QNU+yHKFAgAAhgYAAEoAGAAAAAAAAQAAAKSBeCoAAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWNvbnRyb2xsZXItZHJ0LWFwaS1zdGRlcnIu
dHh0VVQFAANjjyBPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgALLs5QLDNNFZGAgAASgUAAEkA
GAAAAAAAAQAAAKSBgS0AAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FuaW1hdGlvbnMvYW5pbWF0
aW9uLWNzcy1ydWxlLXR5cGVzLWNyYXNoLWxvZy50eHRVVAUAA2OPIE91eAsAAQToAwAABOgDAABQ
SwECHgMUAAIACAAsuzlA1T7IcoUCAACGBgAATQAYAAAAAAABAAAApIFKMAAAdG1wL2xheW91dC10
ZXN0LXJlc3VsdHMvYW5pbWF0aW9ucy9hbmltYXRpb24tY29udHJvbGxlci1kcnQtYXBpLWNyYXNo
LWxvZy50eHRVVAUAA2OPIE91eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAruzlAs4WBgkUCAABK
BQAASwAYAAAAAAABAAAApIFWMwAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYW5pbWF0aW9ucy9h
ZGRpdGl2ZS10cmFuc2Zvcm0tYW5pbWF0aW9ucy1zdGRlcnIudHh0VVQFAANhjyBPdXgLAAEE6AMA
AAToAwAAUEsBAh4DFAACAAgALLs5QMIfiIZEAgAASgUAAEgAGAAAAAAAAQAAAKSBIDYAAHRtcC9s
YXlvdXQtdGVzdC1yZXN1bHRzL2FuaW1hdGlvbnMvYW5pbWF0aW9uLWRpcmVjdGlvbi1ub3JtYWwt
c3RkZXJyLnR4dFVUBQADZI8gT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACu7OUD0Kl4ZhAIA
AIYGAABNABgAAAAAAAEAAACkgeY4AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9hbmltYXRpb25z
L2FuaW1hdGlvbi1hZGQtZXZlbnRzLWluLWhhbmRsZXItc3RkZXJyLnR4dFVUBQADYo8gT3V4CwAB
BOgDAAAE6AMAAFBLAQIeAxQAAgAIACy7OUBc3VhYZAAAANYAAAAmABgAAAAAAAEAAACkgfE7AAB0
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4wLnR4dFVUBQADZI8gT3V4CwABBOgDAAAE
6AMAAFBLAQIeAxQAAgAIACy7OUAFgYN6gQAAAB0BAAAmABgAAAAAAAEAAACkgbU8AAB0bXAvbGF5
b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4xLnR4dFVUBQADY48gT3V4CwABBOgDAAAE6AMAAFBL
AQIeAxQAAgAIACy7OUD5A/9JbQAAAPIAAAAmABgAAAAAAAEAAACkgZY9AAB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy90ZXN0c19ydW4zLnR4dFVUBQADZI8gT3V4CwABBOgDAAAE6AMAAFBLAQIeAwoA
AAAAACy7OUAAAAAAAAAAAAAAAAAmABgAAAAAAAAAEADtQWM+AAB0bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9hY2Nlc3NpYmlsaXR5L1VUBQADY48gT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACy7
OUDUDrPGGwIAAK4EAABJABgAAAAAAAEAAACkgcM+AAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtY2hlY2tlZC1jcmFzaC1sb2cudHh0VVQFAANjjyBP
dXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAK7s5QDCZwm6DAgAAhgYAAF8AGAAAAAAAAQAAAKSB
YUEAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FjY2Vzc2liaWxpdHkvYWRqYWNlbnQtY29udGlu
dWF0aW9ucy1jYXVzZS1hc3NlcnRpb24tZmFpbHVyZS1zdGRlcnIudHh0VVQFAANhjyBPdXgLAAEE
6AMAAAToAwAAUEsBAh4DFAACAAgALLs5QJhcQpdFAgAASgUAAFEAGAAAAAAAAQAAAKSBfUQAAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1zZW5kcy1u
b3RpZmljYXRpb24tc3RkZXJyLnR4dFVUBQADY48gT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAI
ACy7OUDUDrPGGwIAAK4EAABGABgAAAAAAAEAAACkgU1HAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0
cy9hY2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtY2hlY2tlZC1zdGRlcnIudHh0VVQFAANjjyBP
dXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAK7s5QNA9D0VEAgAASgUAAGcAGAAAAAAAAQAAAKSB
6EkAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FjY2Vzc2liaWxpdHkvYW5vbnltb3VzLXJlbmRl
ci1ibG9jay1pbi1jb250aW51YXRpb24tY2F1c2VzLWNyYXNoLWNyYXNoLWxvZy50eHRVVAUAA2KP
IE91eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAruzlAMJnCboMCAACGBgAAYgAYAAAAAAABAAAA
pIHNTAAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYWNjZXNzaWJpbGl0eS9hZGphY2VudC1jb250
aW51YXRpb25zLWNhdXNlLWFzc2VydGlvbi1mYWlsdXJlLWNyYXNoLWxvZy50eHRVVAUAA2GPIE91
eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAsuzlAmFxCl0UCAABKBQAAVAAYAAAAAAABAAAApIHs
TwAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWNoZWNrYm94LXNl
bmRzLW5vdGlmaWNhdGlvbi1jcmFzaC1sb2cudHh0VVQFAANjjyBPdXgLAAEE6AMAAAToAwAAUEsB
Ah4DFAACAAgAK7s5QNA9D0VEAgAASgUAAGQAGAAAAAAAAQAAAKSBv1IAAHRtcC9sYXlvdXQtdGVz
dC1yZXN1bHRzL2FjY2Vzc2liaWxpdHkvYW5vbnltb3VzLXJlbmRlci1ibG9jay1pbi1jb250aW51
YXRpb24tY2F1c2VzLWNyYXNoLXN0ZGVyci50eHRVVAUAA2KPIE91eAsAAQToAwAABOgDAABQSwEC
HgMUAAIACAAruzlAyTR+JpACAAA8BgAAVwAYAAAAAAABAAAApIGhVQAAdG1wL2xheW91dC10ZXN0
LXJlc3VsdHMvYWNjZXNzaWJpbGl0eS9hbmNob3ItbGlua2VkLWFub255bW91cy1ibG9jay1jcmFz
aC1jcmFzaC1sb2cudHh0VVQFAANijyBPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAK7s5QMk0
fiaQAgAAPAYAAFQAGAAAAAAAAQAAAKSBwlgAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2FjY2Vz
c2liaWxpdHkvYW5jaG9yLWxpbmtlZC1hbm9ueW1vdXMtYmxvY2stY3Jhc2gtc3RkZXJyLnR4dFVU
BQADYo8gT3V4CwABBOgDAAAE6AMAAFBLAQIeAwoAAAAAACu7OUAAAAAAAAAAAAAAAAAdABgAAAAA
AAAAEADtQeBbAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL1VUBQADYo8gT3V4CwABBOgD
AAAE6AMAAFBLAQIeAwoAAAAAACu7OUAAAAAAAAAAAAAAAAAjABgAAAAAAAAAEADtQTdcAAB0bXAv
bGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3RzL1VUBQADYo8gT3V4CwABBOgDAAAE6AMAAFBL
AQIeAwoAAAAAACy7OUAAAAAAAAAAAAAAAAAsABgAAAAAAAAAEADtQZRcAAB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL1VUBQADZI8gT3V4CwABBOgDAAAE6AMAAFBL
AQIeAxQAAgAIACy7OUAm5H1rjwIAADwGAABeABgAAAAAAAEAAACkgfpcAAB0bXAvbGF5b3V0LXRl
c3QtcmVzdWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2NyYXNoLXdoZW4tbmF2aWdhdGluZy1hd2F5
LXRoZW4tYmFjay1jcmFzaC1sb2cudHh0VVQFAANjjyBPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAC
AAgALLs5QCbkfWuPAgAAPAYAAFsAGAAAAAAAAQAAAKSBIWAAAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvY3Jhc2gtd2hlbi1uYXZpZ2F0aW5nLWF3YXktdGhlbi1i
YWNrLXN0ZGVyci50eHRVVAUAA2OPIE91eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAsuzlAGhnC
7ZACAAA8BgAASAAYAAAAAAABAAAApIFFYwAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9jcmVkZW50aWFsLXVybC1jcmFzaC1sb2cudHh0VVQFAANjjyBPdXgLAAEE
6AMAAAToAwAAUEsBAh4DFAACAAgALLs5QBoZwu2QAgAAPAYAAEUAGAAAAAAAAQAAAKSBV2YAAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvY3JlZGVudGlhbC11cmwt
c3RkZXJyLnR4dFVUBQADY48gT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACu7OUBG1ZlbjwIA
ADwGAAA7ABgAAAAAAAEAAACkgWZpAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9odHRwL3Rlc3Rz
L2FwcGNhY2hlL2F1dGgtc3RkZXJyLnR4dFVUBQADYo8gT3V4CwABBOgDAAAE6AMAAFBLAQIeAxQA
AgAIACy7OUBAxlVNWgIAAOoFAABDABgAAAAAAAEAAACkgWpsAAB0bXAvbGF5b3V0LXRlc3QtcmVz
dWx0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2N5cmlsbGljLXVyaS1zdGRlcnIudHh0VVQFAANkjyBP
dXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAK7s5QMKpG1RaAgAA6gUAAE0AGAAAAAAAAQAAAKSB
QW8AAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWNjZXNzLXZp
YS1yZWRpcmVjdC1jcmFzaC1sb2cudHh0VVQFAANijyBPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAAC
AAgAK7s5QEbVmVuPAgAAPAYAAD4AGAAAAAAAAQAAAKSBInIAAHRtcC9sYXlvdXQtdGVzdC1yZXN1
bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYXV0aC1jcmFzaC1sb2cudHh0VVQFAANijyBPdXgLAAEE
6AMAAAToAwAAUEsBAh4DFAACAAgAK7s5QMKpG1RaAgAA6gUAAEoAGAAAAAAAAQAAAKSBKXUAAHRt
cC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAvdGVzdHMvYXBwY2FjaGUvYWNjZXNzLXZpYS1yZWRp
cmVjdC1zdGRlcnIudHh0VVQFAANijyBPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgALLs5QEDG
VU1aAgAA6gUAAEYAGAAAAAAAAQAAAKSBB3gAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvY3lyaWxsaWMtdXJpLWNyYXNoLWxvZy50eHRVVAUAA2SPIE91eAsAAQTo
AwAABOgDAABQSwECHgMUAAIACAAsuzlAQ/xWntkAAABMAQAAJQAYAAAAAAABAAAApIHhegAAdG1w
L2xheW91dC10ZXN0LXJlc3VsdHMvZXJyb3JfbG9nLnR4dFVUBQADZI8gT3V4CwABBOgDAAAE6AMA
AFBLAQIeAxQAAgAIAC67OUAAMYvMSyMAAOWWAAAkABgAAAAAAAEAAACkgRl8AAB0bXAvbGF5b3V0
LXRlc3QtcmVzdWx0cy9yZXN1bHRzLmh0bWxVVAUAA2ePIE91eAsAAQToAwAABOgDAABQSwECHgMK
AAAAAAAquzlAAAAAAAAAAAAAAAAAQwAYAAAAAAAAAAAApIHCnwAAdG1wL2xheW91dC10ZXN0LXJl
c3VsdHMvcHl3ZWJzb2NrZXQud3MubG9nLTI1SmFuMjAxMi0yMzI1MTktb3V0LnR4dFVUBQADX48g
T3V4CwABBOgDAAAE6AMAAFBLAQIeAxQAAgAIACy7OUClUBYGZQAAAN8AAAAmABgAAAAAAAEAAACk
gT+gAAB0bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy90ZXN0c19ydW4yLnR4dFVUBQADZI8gT3V4CwAB
BOgDAAAE6AMAAFBLAQIeAwoAAAAAACq7OUAAAAAAAAAAAAAAAABDABgAAAAAAAAAAACkgQShAAB0
bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9weXdlYnNvY2tldC53cy5sb2ctMjVKYW4yMDEyLTIzMjUx
OS1lcnIudHh0VVQFAANfjyBPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgALrs5QLIzumpqAgAA
lwgAACkAGAAAAAAAAQAAAKSBgaEAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0
cy5qc29uVVQFAANnjyBPdXgLAAEE6AMAAAToAwAAUEsBAh4DFAACAAgAKbs5QJHsZoEaJAAAb2EA
ACIAGAAAAAAAAQAAAKSBTqQAAHRtcC9sYXlvdXQtdGVzdC1yZXN1bHRzL2h0dHBkLmNvbmZVVAUA
A16PIE91eAsAAQToAwAABOgDAABQSwECHgMUAAIACAAsuzlA1GouW00BAACyBwAAJgAYAAAAAAAB
AAAApIHEyAAAdG1wL2xheW91dC10ZXN0LXJlc3VsdHMvYWNjZXNzX2xvZy50eHRVVAUAA2SPIE91
eAsAAQToAwAABOgDAABQSwUGAAAAADoAOgD1HgAAccoAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124170</attachid>
            <date>2012-01-26 13:28:49 -0800</date>
            <delta_ts>2012-01-26 17:21:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120126132848.patch</filename>
            <type>text/plain</type>
            <size>54647</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYyZTljYThiODg0NWU5
NDkwZGRjOTdlYzMzY2EzZWNlN2ExZGZlMy4uNmEyOGVkMDA5YWRhMmE4OGM1ZjY0YjIzZWRlMDI0
ZmFhZWViMzk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmV2YWx1YXRlKTogUmVwbGFj
ZSBvbGQgdHJhY2luZyBBUEkuCisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6OnRpbWUpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnNvbGU6OnRpbWVFbmQpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZUlEOjpUcmFjZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6
OlRyYWNlSUQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VTdHJp
bmdXaXRoQ29weTo6VHJhY2VTdHJpbmdXaXRoQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZVN0cmluZ1dpdGhDb3B5OjpvcGVyYXRvciBjb25zdCBjaGFyKiApOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6c2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNl
RXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpUcmFjZUVuZE9uU2NvcGVDbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5k
T25TY29wZUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25T
Y29wZUNsb3NlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRy
YWNlRW5kT25TY29wZUNsb3NlOjphZGRFdmVudElmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6VHJhY2VFbmRPblNj
b3BlQ2xvc2VUaHJlc2hvbGQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VF
bmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6On5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVz
aG9sZDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVu
ZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6YWRkRXZlbnRJZkVuYWJsZWQpOgorCiAyMDEyLTAxLTI1
ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bm5lY2Vzc2FyeSBtZW1iZXIgdmFyaWFibGUgZnJvbSBQbHVnaW5WaWV3LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2ZGMwMGNkOWIzYjM4MDg5ZGM1MTU5M2VmNjU2NzQ5
ZTRiY2E4MTQ0Li5jNWVjNzZmODMxNzM3MzRmOTBmMGNkOTA2N2E1ZTRlY2UwOThjY2U3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRm
b3JtU3VwcG9ydDo6Z2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0OjptYW5nbGVQb2ludGVyRm9yVHJhY2luZyk6CisgICAg
ICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVN1cHBvcnQ6OmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVN1cHBvcnQ6OmFkZFRyYWNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWFu
Z2xlUG9pbnRlckZvclRyYWNpbmcpOgorCiAyMDEyLTAxLTI0ICBWc2V2b2xvZCBWbGFzb3YgIDx2
c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gdGVzdCBm
aXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IDQ3ZGIxNWM1YTE0
ZDFkOWE5ZmE4ZDExYWQ5NjVkNTM1ZTFlYTY3ZmEuLjhmM2JhZTI2NTc0YzMxMTFiZGM3YzQzMjNk
NTc0ODcxY2QxODdhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCkBA
IC03MSw2ICs3MSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisjaW5jbHVk
ZSAiVHJhY2VFdmVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IFY4RXh0ZW5zaW9ucyYgc3RhdGljRXh0ZW5zaW9uc0xpc3QoKQpAQCAtMzM1LDcgKzMzOSw3IEBA
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4UHJveHk6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIHNvdXJjZSwgTm9kZSogbm9kCiAgICAgICAgIC8vIENvbXBpbGUgdGhlIHNjcmlwdC4K
ICAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IGNvZGUgPSB2OEV4dGVybmFsU3RyaW5nKHNv
dXJjZS5zb3VyY2UoKSk7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgICAgIFBsYXRmb3Jt
U3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKCJ2OC5jb21waWxlIiwgbm9kZSwgIiIpOworICAgICAg
ICBUUkFDRV9FVkVOVF9CRUdJTjEoInY4IiwgInY4LmNvbXBpbGUiLCAidXJsIiwgc291cmNlLnVy
bCgpLnN0cmluZygpLmFzY2lpKCkpOwogI2VuZGlmCiAgICAgICAgIE93blB0cjx2ODo6U2NyaXB0
RGF0YT4gc2NyaXB0RGF0YSA9IHByZWNvbXBpbGVTY3JpcHQoY29kZSwgc291cmNlLmNhY2hlZFNj
cmlwdCgpKTsKIApAQCAtMzQzLDE1ICszNDcsMTEgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQ
cm94eTo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlLCBOb2RlKiBub2QK
ICAgICAgICAgLy8gMSwgd2hlcmVhcyB2OCBzdGFydHMgYXQgMC4KICAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSBjb21waWxlU2NyaXB0KGNvZGUsIHNvdXJjZS51cmwoKSwg
c291cmNlLnN0YXJ0UG9zaXRpb24oKSwgc2NyaXB0RGF0YS5nZXQoKSk7CiAjaWYgUExBVEZPUk0o
Q0hST01JVU0pCi0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVuZCgidjguY29t
cGlsZSIsIG5vZGUsICIiKTsKLQotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRC
ZWdpbigidjgucnVuIiwgbm9kZSwgIiIpOworICAgICAgICBUUkFDRV9FVkVOVF9FTkQwKCJ2OCIs
ICJ2OC5jb21waWxlIik7CisgICAgICAgIFRSQUNFX0VWRU5UMCgidjgiLCAidjgucnVuIik7CiAj
ZW5kaWYKICAgICAgICAgcmVzdWx0ID0gcnVuU2NyaXB0KHNjcmlwdCk7CiAgICAgfQotI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQotICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVuZCgidjgu
cnVuIiwgbm9kZSwgIiIpOwotI2VuZGlmCiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEV2YWx1YXRlU2NyaXB0KGNvb2tpZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29uc29sZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCmluZGV4
IDI0ZTEzYTVmZGJhNTMwMWJiNzUyOTRjZTM0MGI1YTBmZWFkMjQ5ZTYuLjUxNWFiMzRkN2EwNmQ0
YWMyMmI1M2Y0Y2Y4ZDlmODRhZjFjNWY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAt
Mjk5LDE2ICsyOTksMTQgQEAgdm9pZCBDb25zb2xlOjp0aW1lKGNvbnN0IFN0cmluZyYgdGl0bGUp
CiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcocGFn
ZSgpLCB0aXRsZSk7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgaWYgKFBsYXRmb3JtU3Vw
cG9ydDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgpKQotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRy
YWNlRXZlbnRCZWdpbih0aXRsZS51dGY4KCkuZGF0YSgpLCAwLCAwKTsKKyAgICBUUkFDRV9FVkVO
VF9DT1BZX0JFR0lOMCgid2Via2l0IiwgdGl0bGUudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIH0K
IAogdm9pZCBDb25zb2xlOjp0aW1lRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8
U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykK
IHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICBpZiAoUGxhdGZvcm1TdXBwb3J0Ojppc1Ry
YWNlRXZlbnRFbmFibGVkKCkpCi0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVu
ZCh0aXRsZS51dGY4KCkuZGF0YSgpLCAwLCAwKTsKKyAgICBUUkFDRV9FVkVOVF9DT1BZX0VORDAo
IndlYmtpdCIsIHRpdGxlLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhwYWdlKCksIHRpdGxlLCBjYWxsU3RhY2sp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1
cHBvcnQuaAppbmRleCBjOGRlZDZlMjZiYTc4NGM2ZTE2Mzc0MWQ2NjI4ZTg1OTM5YzM2YTZlLi40
MGMyNTM2NmY4Y2I5ZThmM2U5ZGQ2N2I3MjE1NDY0MmI2NTBjNmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApAQCAtNDE2LDkg
KzQxNiwxOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFRyYWNlIEV2ZW50IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgc3Rh
dGljIGJvb2wgaXNUcmFjZUV2ZW50RW5hYmxlZCgpOwotICAgIHN0YXRpYyB2b2lkIHRyYWNlRXZl
bnRCZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiwgY29uc3QgY2hhciogZXh0cmEpOwotICAg
IHN0YXRpYyB2b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0
IGNoYXIqIGV4dHJhKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciogZ2V0VHJhY2VD
YXRlZ29yeUVuYWJsZWRGbGFnKGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZSk7CisgICAgc3RhdGlj
IGludCBhZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZEZsYWcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG51bUFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqKiBhcmdOYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciogYXJnVHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGxvbmcgbG9uZyogYXJnVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgdGhyZXNob2xkQmVnaW5JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9u
ZyBsb25nIHRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBmbGFncyk7CisgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyBtYW5nbGVQb2ludGVy
Rm9yVHJhY2luZyh2b2lkKiBwb2ludGVyKTsKIAogICAgIC8vIFZpc2l0ZWQgbGlua3MgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgc3Rh
dGljIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciogdXJsLCB1bnNpZ25lZCBs
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJh
Y2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5o
CmluZGV4IDY1MmY1NDA3Y2EzZjU3NTE0Y2ZhYTNkNmE4YmRkMDY4MjU3Yjk2OTkuLmUwNTYyMjI3
YTAwZTQwMDVmOTgzYThiYjYzNmZmYzMzZWUzZDUzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmgKQEAgLTIyLDUzICsyMiw4NDEgQEAKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLworCisvLyBUcmFjZSBldmVudHMgYXJlIGZv
ciB0cmFja2luZyBhcHBsaWNhdGlvbiBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXNhZ2UuCisv
LyBNYWNyb3MgYXJlIHByb3ZpZGVkIHRvIHRyYWNrOgorLy8gICAgQmVnaW4gYW5kIGVuZCBvZiBm
dW5jdGlvbiBjYWxscworLy8gICAgQ291bnRlcnMKKy8vCisvLyBFdmVudHMgYXJlIGlzc3VlZCBh
Z2FpbnN0IGNhdGVnb3JpZXMuIFdoZXJlYXMgTE9HJ3MKKy8vIGNhdGVnb3JpZXMgYXJlIHN0YXRp
Y2FsbHkgZGVmaW5lZCwgVFJBQ0UgY2F0ZWdvcmllcyBhcmUgY3JlYXRlZAorLy8gaW1wbGljaXRs
eSB3aXRoIGEgc3RyaW5nLiBGb3IgZXhhbXBsZToKKy8vICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAo
Ik1ZX1NVQlNZU1RFTSIsICJTb21lSW1wb3J0YW50RXZlbnQiKQorLy8KKy8vIEV2ZW50cyBjYW4g
YmUgSU5TVEFOVCwgb3IgY2FuIGJlIHBhaXJzIG9mIEJFR0lOIGFuZCBFTkQgaW4gdGhlIHNhbWUg
c2NvcGU6CisvLyAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiTVlfU1VCU1lTVEVNIiwgIlNvbWV0aGlu
Z0Nvc3RseSIpCisvLyAgIGRvU29tZXRoaW5nQ29zdGx5KCkKKy8vICAgVFJBQ0VfRVZFTlRfRU5E
MCgiTVlfU1VCU1lTVEVNIiwgIlNvbWV0aGluZ0Nvc3RseSIpCisvLyBOb3RlOiBvdXIgdG9vbHMg
Y2FuJ3QgYWx3YXlzIGRldGVybWluZSB0aGUgY29ycmVjdCBCRUdJTi9FTkQgcGFpcnMgdW5sZXNz
CisvLyB0aGVzZSBhcmUgdXNlZCBpbiB0aGUgc2FtZSBzY29wZS4gVXNlIFNUQVJUL0ZJTklTSCBt
YWNyb3MgaWYgeW91IG5lZWQgdGhlbQorLy8gdG8gYmUgaW4gc2VwYXJhdGUgc2NvcGVzLgorLy8K
Ky8vIEEgY29tbW9uIHVzZSBjYXNlIGlzIHRvIHRyYWNlIGVudGlyZSBmdW5jdGlvbiBzY29wZXMu
IFRoaXMKKy8vIGlzc3VlcyBhIHRyYWNlIEJFR0lOIGFuZCBFTkQgYXV0b21hdGljYWxseToKKy8v
ICAgdm9pZCBkb1NvbWV0aGluZ0Nvc3RseSgpIHsKKy8vICAgICBUUkFDRV9FVkVOVDAoIk1ZX1NV
QlNZU1RFTSIsICJkb1NvbWV0aGluZ0Nvc3RseSIpOworLy8gICAgIC4uLgorLy8gICB9CisvLwor
Ly8gQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYW4gZXZlbnQ6
CisvLyAgIHZvaWQgZG9Tb21ldGhpbmdDb3N0bHkyKGludCBob3dNdWNoKSB7CisvLyAgICAgVFJB
Q0VfRVZFTlQxKCJNWV9TVUJTWVNURU0iLCAiZG9Tb21ldGhpbmdDb3N0bHkiLAorLy8gICAgICAg
ICAiaG93TXVjaCIsIGhvd011Y2gpOworLy8gICAgIC4uLgorLy8gICB9CisvLworLy8gVGhlIHRy
YWNlIHN5c3RlbSB3aWxsIGF1dG9tYXRpY2FsbHkgYWRkIHRvIHRoaXMgaW5mb3JtYXRpb24gdGhl
CisvLyBjdXJyZW50IHByb2Nlc3MgaWQsIHRocmVhZCBpZCwgYW5kIGEgdGltZXN0YW1wIGluIG1p
Y3Jvc2Vjb25kcy4KKy8vCisvLyBUbyB0cmFjZSBhbiBhc3luY2hyb25vdXMgcHJvY2VkdXJlIHN1
Y2ggYXMgYW4gSVBDIHNlbmQvcmVjZWl2ZSwgdXNlIFNUQVJUIGFuZAorLy8gRklOSVNIOgorLy8g
ICBbc2luZ2xlIHRocmVhZGVkIHNlbmRlciBjb2RlXQorLy8gICAgIHN0YXRpYyBpbnQgc2VuZF9j
b3VudCA9IDA7CisvLyAgICAgKytzZW5kX2NvdW50OworLy8gICAgIFRSQUNFX0VWRU5UX1NUQVJU
MCgiaXBjIiwgIm1lc3NhZ2UiLCBzZW5kX2NvdW50KTsKKy8vICAgICBTZW5kKG5ldyBNeU1lc3Nh
Z2Uoc2VuZF9jb3VudCkpOworLy8gICBbcmVjZWl2ZSBjb2RlXQorLy8gICAgIHZvaWQgT25NeU1l
c3NhZ2Uoc2VuZF9jb3VudCkgeworLy8gICAgICAgVFJBQ0VfRVZFTlRfRklOSVNIMCgiaXBjIiwg
Im1lc3NhZ2UiLCBzZW5kX2NvdW50KTsKKy8vICAgICB9CisvLyBUaGUgdGhpcmQgcGFyYW1ldGVy
IGlzIGEgdW5pcXVlIElEIHRvIG1hdGNoIFNUQVJUL0ZJTklTSCBwYWlycy4KKy8vIFNUQVJUIGFu
ZCBGSU5JU0ggY2FuIG9jY3VyIG9uIGFueSB0aHJlYWQgb2YgYW55IHRyYWNlZCBwcm9jZXNzLiBQ
b2ludGVycyBjYW4KKy8vIGJlIHVzZWQgZm9yIHRoZSBJRCBwYXJhbWV0ZXIsIGFuZCB0aGV5IHdp
bGwgYmUgbWFuZ2xlZCBpbnRlcm5hbGx5IHNvIHRoYXQKKy8vIHRoZSBzYW1lIHBvaW50ZXIgb24g
dHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgbWF0Y2guIEZvciBleGFtcGxlOgorLy8g
ICBjbGFzcyBNeVRyYWNlZENsYXNzIHsKKy8vICAgIHB1YmxpYzoKKy8vICAgICBNeVRyYWNlZENs
YXNzKCkgeworLy8gICAgICAgVFJBQ0VfRVZFTlRfU1RBUlQwKCJjYXRlZ29yeSIsICJNeVRyYWNl
ZENsYXNzIiwgdGhpcyk7CisvLyAgICAgfQorLy8gICAgIH5NeVRyYWNlZENsYXNzKCkgeworLy8g
ICAgICAgVFJBQ0VfRVZFTlRfRklOSVNIMCgiY2F0ZWdvcnkiLCAiTXlUcmFjZWRDbGFzcyIsIHRo
aXMpOworLy8gICAgIH0KKy8vICAgfQorLy8KKy8vIFRyYWNlIGV2ZW50IGFsc28gc3VwcG9ydHMg
Y291bnRlcnMsIHdoaWNoIGlzIGEgd2F5IHRvIHRyYWNrIGEgcXVhbnRpdHkKKy8vIGFzIGl0IHZh
cmllcyBvdmVyIHRpbWUuIENvdW50ZXJzIGFyZSBjcmVhdGVkIHdpdGggdGhlIGZvbGxvd2luZyBt
YWNybzoKKy8vICAgVFJBQ0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIiLCBn
X215Q291bnRlclZhbHVlKTsKKy8vCisvLyBDb3VudGVycyBhcmUgcHJvY2Vzcy1zcGVjaWZpYy4g
VGhlIG1hY3JvIGl0c2VsZiBjYW4gYmUgaXNzdWVkIGZyb20gYW55CisvLyB0aHJlYWQsIGhvd2V2
ZXIuCisvLworLy8gU29tZXRpbWVzLCB5b3Ugd2FudCB0byB0cmFjayB0d28gY291bnRlcnMgYXQg
b25jZS4gWW91IGNhbiBkbyB0aGlzIHdpdGggdHdvCisvLyBjb3VudGVyIG1hY3JvczoKKy8vICAg
VFJBQ0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIwIiwgZ19teUNvdW50ZXJW
YWx1ZVswXSk7CisvLyAgIFRSQUNFX0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVy
MSIsIGdfbXlDb3VudGVyVmFsdWVbMV0pOworLy8gT3IgeW91IGNhbiBkbyBpdCB3aXRoIGEgY29t
YmluZWQgbWFjcm86CisvLyAgIFRSQUNFX0NPVU5URVIyKCJNWV9TVUJTWVNURU0iLCAibXlDb3Vu
dGVyIiwKKy8vICAgICAgICJieXRlc1Bpbm5lZCIsIGdfbXlDb3VudGVyVmFsdWVbMF0sCisvLyAg
ICAgICAiYnl0ZXNBbGxvY2F0ZWQiLCBnX215Q291bnRlclZhbHVlWzFdKTsKKy8vIFRoaXMgaW5k
aWNhdGVzIHRvIHRoZSB0cmFjaW5nIFVJIHRoYXQgdGhlc2UgY291bnRlcnMgc2hvdWxkIGJlIGRp
c3BsYXllZAorLy8gaW4gYSBzaW5nbGUgZ3JhcGgsIGFzIGEgc3VtbWVkIGFyZWEgY2hhcnQuCisv
LworLy8gU2luY2UgY291bnRlcnMgYXJlIGluIGEgZ2xvYmFsIG5hbWVzcGFjZSwgeW91IG1heSB3
YW50IHRvIGRpc2VtYmlndWF0ZSB3aXRoIGEKKy8vIHVuaXF1ZSBJRCwgYnkgdXNpbmcgdGhlIFRS
QUNFX0NPVU5URVJfSUQqIHZhcmlhdGlvbnMuCisvLworLy8gQnkgZGVmYXVsdCwgdHJhY2UgY29s
bGVjdGlvbiBpcyBjb21waWxlZCBpbiwgYnV0IHR1cm5lZCBvZmYgYXQgcnVudGltZS4KKy8vIENv
bGxlY3RpbmcgdHJhY2UgZGF0YSBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGVtYmVkZGlu
ZworLy8gYXBwbGljYXRpb24uIEluIENocm9tZSdzIGNhc2UsIG5hdmlnYXRpbmcgdG8gYWJvdXQ6
dHJhY2luZyB3aWxsIHR1cm4gb24KKy8vIHRyYWNpbmcgYW5kIGRpc3BsYXkgZGF0YSBjb2xsZWN0
ZWQgYWNyb3NzIGFsbCBhY3RpdmUgcHJvY2Vzc2VzLgorLy8KKy8vCisvLyBNZW1vcnkgc2NvcGlu
ZyBub3RlOgorLy8gVHJhY2luZyBjb3BpZXMgdGhlIHBvaW50ZXJzLCBub3QgdGhlIHN0cmluZyBj
b250ZW50LCBvZiB0aGUgc3RyaW5ncyBwYXNzZWQKKy8vIGluIGZvciBjYXRlZ29yeSwgbmFtZSwg
YW5kIGFyZ19uYW1lcy4gVGh1cywgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwKKy8vIGNhdXNlIHBy
b2JsZW1zOgorLy8gICAgIGNoYXIqIHN0ciA9IHN0cmR1cCgiaW1wcHJ0YW50TmFtZSIpOworLy8g
ICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJTVUJTWVNURU0iLCBzdHIpOyAgLy8gQkFEIQorLy8g
ICAgIGZyZWUoc3RyKTsgICAgICAgICAgICAgICAgICAgLy8gVHJhY2Ugc3lzdGVtIG5vdyBoYXMg
ZGFuZ2xpbmcgcG9pbnRlcgorLy8KKy8vIFRvIGF2b2lkIHRoaXMgaXNzdWUgd2l0aCB0aGUgfG5h
bWV8IGFuZCB8YXJnX25hbWV8IHBhcmFtZXRlcnMsIHVzZSB0aGUKKy8vIFRSQUNFX0VWRU5UX0NP
UFlfWFhYIG92ZXJsb2FkcyBvZiB0aGUgbWFjcm9zIGF0IGFkZGl0aW9uYWwgcnVudGltZSBvdmVy
aGVhZC4KKy8vIE5vdGVzOiBUaGUgY2F0ZWdvcnkgbXVzdCBhbHdheXMgYmUgaW4gYSBsb25nLWxp
dmVkIGNoYXIqIChpLmUuIHN0YXRpYyBjb25zdCkuCisvLyAgICAgICAgVGhlIHxhcmdfdmFsdWVz
fCwgd2hlbiB1c2VkLCBhcmUgYWx3YXlzIGRlZXAgY29waWVkIHdpdGggdGhlIF9DT1BZCisvLyAg
ICAgICAgbWFjcm9zLgorLy8KKy8vIFdoZW4gYXJlIHN0cmluZyBhcmd1bWVudCB2YWx1ZXMgY29w
aWVkOgorLy8gY29uc3QgY2hhciogYXJnX3ZhbHVlcyBhcmUgb25seSByZWZlcmVuY2VkIGJ5IGRl
ZmF1bHQ6CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAg
ICAgICAgICAgICAgImFyZzEiLCAibGl0ZXJhbCBzdHJpbmcgaXMgb25seSByZWZlcmVuY2VkIik7
CisvLyBVc2UgVFJBQ0VfU1RSX0NPUFkgdG8gZm9yY2UgY29weWluZyBvZiBhIGNvbnN0IGNoYXIq
OgorLy8gICAgIFRSQUNFX0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisvLyAgICAgICAgICAg
ICAgICAgICJhcmcxIiwgVFJBQ0VfU1RSX0NPUFkoInN0cmluZyB3aWxsIGJlIGNvcGllZCIpKTsK
Ky8vIHN0ZDo6c3RyaW5nIGFyZ192YWx1ZXMgYXJlIGFsd2F5cyBjb3BpZWQ6CisvLyAgICAgVFJB
Q0VfRVZFTlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAgImFyZzEi
LCBzdGQ6OnN0cmluZygic3RyaW5nIHdpbGwgYmUgY29waWVkIikpOworLy8KKy8vCisvLyBUaHJl
YWQgU2FmZXR5OgorLy8gQSB0aHJlYWQgc2FmZSBzaW5nbGV0b24gYW5kIG11dGV4IGFyZSB1c2Vk
IGZvciB0aHJlYWQgc2FmZXR5LiBDYXRlZ29yeQorLy8gZW5hYmxlZCBmbGFncyBhcmUgdXNlZCB0
byBsaW1pdCB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gdGhlIHN5c3RlbQorLy8gaXMgbm90
IGVuYWJsZWQuCisvLworLy8gVFJBQ0VfRVZFTlQgbWFjcm9zIGZpcnN0IGNhY2hlIGEgcG9pbnRl
ciB0byBhIGNhdGVnb3J5LiBUaGUgY2F0ZWdvcmllcyBhcmUKKy8vIHN0YXRpY2FsbHkgYWxsb2Nh
dGVkIGFuZCBzYWZlIGF0IGFsbCB0aW1lcywgZXZlbiBhZnRlciBleGl0LiBGZXRjaGluZyBhCisv
LyBjYXRlZ29yeSBpcyBwcm90ZWN0ZWQgYnkgdGhlIFRyYWNlTG9nOjpsb2NrXy4gTXVsdGlwbGUg
dGhyZWFkcyBpbml0aWFsaXppbmcKKy8vIHRoZSBzdGF0aWMgdmFyaWFibGUgaXMgc2FmZSwgYXMg
dGhleSB3aWxsIGJlIHNlcmlhbGl6ZWQgYnkgdGhlIGxvY2sgYW5kCisvLyBtdWx0aXBsZSBjYWxs
cyB3aWxsIHJldHVybiB0aGUgc2FtZSBwb2ludGVyIHRvIHRoZSBjYXRlZ29yeS4KKy8vCisvLyBU
aGVuIHRoZSBjYXRlZ29yeV9lbmFibGVkIGZsYWcgaXMgY2hlY2tlZC4gVGhpcyBpcyBhIHVuc2ln
bmVkIGNoYXIsIGFuZAorLy8gbm90IGludGVuZGVkIHRvIGJlIG11bHRpdGhyZWFkIHNhZmUuIEl0
IG9wdGltaXplcyBhY2Nlc3MgdG8gYWRkVHJhY2VFdmVudAorLy8gd2hpY2ggaXMgdGhyZWFkc2Fm
ZSBpbnRlcm5hbGx5IHZpYSBUcmFjZUxvZzo6bG9ja18uIFRoZSBlbmFibGVkIGZsYWcgbWF5Cisv
LyBjYXVzZSBzb21lIHRocmVhZHMgdG8gaW5jb3JyZWN0bHkgY2FsbCBvciBza2lwIGNhbGxpbmcg
YWRkVHJhY2VFdmVudCBuZWFyCisvLyB0aGUgdGltZSBvZiB0aGUgc3lzdGVtIGJlaW5nIGVuYWJs
ZWQgb3IgZGlzYWJsZWQuIFRoaXMgaXMgYWNjZXB0YWJsZSBhcworLy8gd2UgdG9sZXJhdGUgc29t
ZSBkYXRhIGxvc3Mgd2hpbGUgdGhlIHN5c3RlbSBpcyBiZWluZyBlbmFibGVkL2Rpc2FibGVkIGFu
ZAorLy8gYmVjYXVzZSBhZGRUcmFjZUV2ZW50IGlzIHRocmVhZHNhZmUgaW50ZXJuYWxseSBhbmQg
Y2hlY2tzIHRoZSBlbmFibGVkIHN0YXRlCisvLyBhZ2FpbiB1bmRlciBsb2NrLgorLy8KKy8vIFdp
dGhvdXQgdGhlIHVzZSBvZiB0aGVzZSBzdGF0aWMgY2F0ZWdvcnkgcG9pbnRlcnMgYW5kIGVuYWJs
ZWQgZmxhZ3MgYWxsCisvLyB0cmFjZSBwb2ludHMgd291bGQgY2FycnkgYSBzaWduaWZpY2FudCBw
ZXJmb3JtYW5jZSBjb3N0IG9mIGFxdWlyaW5nIGEgbG9jaworLy8gYW5kIHJlc29sdmluZyB0aGUg
Y2F0ZWdvcnkuCisKICNpZm5kZWYgVHJhY2VFdmVudF9oCiAjZGVmaW5lIFRyYWNlRXZlbnRfaAog
CisjaW5jbHVkZSAiRHluYW1pY0Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBw
b3J0LmgiCi0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKKy8vIElzc3VlcyBiZWdpbiB0cmFjZSBldmVudCBoZXJlIGFuZCBlbmQg
dHJhY2UgZXZlbnQgd2hlbiB0aGUgY3VycmVudCBzY29wZSBlbmRzLgorI2RlZmluZSBUUkFDRV9F
VkVOVChuYW1lLCBpZCwgZXh0cmEpIFRSQUNFX0VWRU5UMigid2Via2l0IiwgbmFtZSwgImlkIiwg
aWQsICJleHRyYSIsIGV4dHJhKQorCisvLyBCeSBkZWZhdWx0LCBjb25zdCBjaGFyKiBhcmd1bWVu
dCB2YWx1ZXMgYXJlIGFzc3VtZWQgdG8gaGF2ZSBsb25nLWxpdmVkIHNjb3BlCisvLyBhbmQgd2ls
bCBub3QgYmUgY29waWVkLiBVc2UgdGhpcyBtYWNybyB0byBmb3JjZSBhIGNvbnN0IGNoYXIqIHRv
IGJlIGNvcGllZC4KKyNkZWZpbmUgVFJBQ0VfU1RSX0NPUFkoc3RyKSBcCisgICAgV2ViQ29yZTo6
VHJhY2VFdmVudDo6VHJhY2VTdHJpbmdXaXRoQ29weShzdHIpCisKKy8vIFJlY29yZHMgYSBwYWly
IG9mIGJlZ2luIGFuZCBlbmQgZXZlbnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50Cisv
LyBzY29wZSwgd2l0aCAwLCAxIG9yIDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRl
Z29yeSBpcyBub3QKKy8vIGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNh
dGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChz
dGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4K
KyNkZWZpbmUgVFJBQ0VfRVZFTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlQx
KGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkK
KyNkZWZpbmUgVFJBQ0VfRVZFTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFs
LCBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1ND
T1BFRChjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcy
X25hbWUsIGFyZzJfdmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIGV2ZW50IGNhbGxlZCAibmFt
ZSIgaW1tZWRpYXRlbHksIHdpdGggMCwgMSBvciAyCisvLyBhc3NvY2lhdGVkIGFyZ3VtZW50cy4g
SWYgdGhlIGNhdGVnb3J5IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMKKy8vIGRvZXMgbm90aGlu
Zy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24g
bGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVk
ZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5U
LCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVm
aW5lIFRSQUNFX0VWRU5UX0lOU1RBTlQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFf
dmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lO
U1RBTlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoY2F0ZWdv
cnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcy
X3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9J
TlNUQU5ULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUs
IGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNk
ZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAg
ICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVmaW5lIFRSQUNF
X0VWRU5UX0NPUFlfSU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFO
VCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcx
X25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQyKGNhdGVn
b3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJn
Ml92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0Vf
SU5TVEFOVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZ
LCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisK
Ky8vIFJlY29yZHMgYSBzaW5nbGUgQkVHSU4gZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVs
eSwgd2l0aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdv
cnkgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBjYXRl
Z29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3Rh
dGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0JFR0lOMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9C
RUdJTjEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5B
TF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfQkVHSU4yKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFy
ZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdv
cnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAor
ICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0JF
R0lOMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFD
RV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZF
TlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0JFR0lOMShjYXRlZ29yeSwg
bmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RChUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJB
Q0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9F
VkVOVF9DT1BZX0JFR0lOMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAor
ICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
QUREKFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBU
UkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJn
Ml9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBFTkQgZXZlbnQgZm9yICJu
YW1lIiBpbW1lZGlhdGVseS4gSWYgdGhlIGNhdGVnb3J5CisvLyBpcyBub3QgZW5hYmxlZCwgdGhl
biB0aGlzIGRvZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0
IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBU
aGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9FTkQwKGNh
dGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5U
X1BIQVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19O
T05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9FTkQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUs
IGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BI
QVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05F
LCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9FTkQyKGNhdGVnb3J5
LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92
YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5E
LCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFf
bmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfQ09QWV9FTkQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwg
bmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0VO
RDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVm
aW5lIFRSQUNFX0VWRU5UX0NPUFlfRU5EMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcx
X3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwg
bmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAg
ICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFRpbWUgdGhyZXNob2xkIGV2ZW50OgorLy8g
T25seSByZWNvcmQgdGhlIGV2ZW50IGlmIHRoZSBkdXJhdGlvbiBpcyBncmVhdGVyIHRoYW4gdGhl
IHNwZWNpZmllZAorLy8gdGhyZXNob2xkX3VzICh0aW1lIGluIG1pY3Jvc2Vjb25kcykuCisvLyBS
ZWNvcmRzIGEgcGFpciBvZiBiZWdpbiBhbmQgZW5kIGV2ZW50cyBjYWxsZWQgIm5hbWUiIGZvciB0
aGUgY3VycmVudAorLy8gc2NvcGUsIHdpdGggMCwgMSBvciAyIGFzc29jaWF0ZWQgYXJndW1lbnRz
LiBJZiB0aGUgY2F0ZWdvcnkgaXMgbm90CisvLyBlbmFibGVkLCB0aGVuIHRoaXMgZG9lcyBub3Ro
aW5nLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlv
biBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNs
dWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lGX0xPTkdFUl9USEFOMCh0aHJlc2hv
bGRfdXMsIGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1ND
T1BFRF9JRl9MT05HRVJfVEhBTih0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lKQorI2RlZmlu
ZSBUUkFDRV9FVkVOVF9JRl9MT05HRVJfVEhBTjEoIFwKKyAgICB0aHJlc2hvbGRfdXMsIGNhdGVn
b3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZF
TlRfQUREX1NDT1BFRF9JRl9MT05HRVJfVEhBTiggXAorICAgICAgICB0aHJlc2hvbGRfdXMsIGNh
dGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9J
Rl9MT05HRVJfVEhBTjIoIFwKKyAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lLCBhcmcx
X25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREX1NDT1BFRF9JRl9MT05HRVJfVEhBTiggXAorICAgICAgICB0aHJlc2hvbGRf
dXMsIGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJf
dmFsKQorCisvLyBSZWNvcmRzIHRoZSB2YWx1ZSBvZiBhIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBp
bW1lZGlhdGVseS4gVmFsdWUKKy8vIG11c3QgYmUgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCBp
bnRlZ2VyLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNh
dGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBp
bmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNFX0NPVU5URVIxKGNhdGVnb3J5LCBuYW1lLCB2
YWx1ZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9D
T1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUs
IFwKKyAgICAgICAgInZhbHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisjZGVmaW5lIFRS
QUNFX0NPUFlfQ09VTlRFUjEoY2F0ZWdvcnksIG5hbWUsIHZhbHVlKSBcCisgICAgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICAidmFsdWUiLCBz
dGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWVzIG9mIGEgbXVs
dGktcGFydGVkIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4KKy8vIFRoZSBVSSB3
aWxsIHRyZWF0IHZhbHVlMSBhbmQgdmFsdWUyIGFzIHBhcnRzIG9mIGEgd2hvbGUsIGRpc3BsYXlp
bmcgdGhlaXIKKy8vIHZhbHVlcyBhcyBhIHN0YWNrZWQtYmFyIGNoYXJ0LgorLy8gLSBjYXRlZ29y
eSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGlj
cyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVm
aW5lIFRSQUNFX0NPVU5URVIyKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3Zh
bCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVn
b3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIFwKKyAgICAgICAgdmFsdWUxX25hbWUs
IHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0
YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisjZGVmaW5lIFRSQUNFX0NPUFlfQ09VTlRFUjIo
Y2F0ZWdvcnksIG5hbWUsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZhbHVl
Ml9uYW1lLCB2YWx1ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNF
X0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VW
RU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2
YWx1ZTFfdmFsKSwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1
ZTJfdmFsKSkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWUgb2YgYSBjb3VudGVyIGNhbGxlZCAibmFt
ZSIgaW1tZWRpYXRlbHkuIFZhbHVlCisvLyBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgYSAzMiBi
aXQgaW50ZWdlci4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBw
bGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBu
b3QgaW5jbHVkZSAiIGNoYXJzLgorLy8gLSB8aWR8IGlzIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGNv
dW50ZXJzIHdpdGggdGhlIHNhbWUgbmFtZS4gSXQgbXVzdCBlaXRoZXIKKy8vICAgYmUgYSBwb2lu
dGVyIG9yIGFuIGludGVnZXIgdmFsdWUgdXAgdG8gNjQgYml0cy4gSWYgaXQncyBhIHBvaW50ZXIs
IHRoZSBiaXRzCisvLyAgIHdpbGwgYmUgeG9yZWQgd2l0aCBhIGhhc2ggb2YgdGhlIHByb2Nlc3Mg
SUQgc28gdGhhdCB0aGUgc2FtZSBwb2ludGVyIG9uCisvLyAgIHR3byBkaWZmZXJlbnQgcHJvY2Vz
c2VzIHdpbGwgbm90IGNvbGxpZGUuCisjZGVmaW5lIFRSQUNFX0NPVU5URVJfSUQxKGNhdGVnb3J5
LCBuYW1lLCBpZCwgdmFsdWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9J
RChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBp
ZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQsIFwKKyAgICAgICAgInZhbHVlIiwgc3RhdGljX2Nh
c3Q8aW50Pih2YWx1ZSkpCisjZGVmaW5lIFRSQUNFX0NPUFlfQ09VTlRFUl9JRDEoY2F0ZWdvcnks
IG5hbWUsIGlkLCB2YWx1ZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lE
KFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlk
LCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkgfCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCwgXAorICAg
ICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKworLy8gUmVjb3JkcyB0aGUg
dmFsdWVzIG9mIGEgbXVsdGktcGFydGVkIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVs
eS4KKy8vIFRoZSBVSSB3aWxsIHRyZWF0IHZhbHVlMSBhbmQgdmFsdWUyIGFzIHBhcnRzIG9mIGEg
d2hvbGUsIGRpc3BsYXlpbmcgdGhlaXIKKy8vIHZhbHVlcyBhcyBhIHN0YWNrZWQtYmFyIGNoYXJ0
LgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBs
aWZldGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRl
ICIgY2hhcnMuCisvLyAtIHxpZHwgaXMgdXNlZCB0byBkaXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0
aCB0aGUgc2FtZSBuYW1lLiBJdCBtdXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4g
aW50ZWdlciB2YWx1ZSB1cCB0byA2NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMK
Ky8vICAgd2lsbCBiZSB4b3JlZCB3aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0
IHRoZSBzYW1lIHBvaW50ZXIgb24KKy8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBu
b3QgY29sbGlkZS4KKyNkZWZpbmUgVFJBQ0VfQ09VTlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlk
LCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUy
X3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5U
X1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVO
VF9GTEFHX0hBU19JRCwgXAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2
YWx1ZTFfdmFsKSwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1
ZTJfdmFsKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSX0lEMihjYXRlZ29yeSwgbmFtZSwg
aWQsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCB2YWx1
ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZF
TlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VW
RU5UX0ZMQUdfQ09QWSB8IFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBcCisgICAgICAgIHZhbHVl
MV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9u
YW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorCisvLyBSZWNvcmRzIGEgc2luZ2xl
IFNUQVJUIGV2ZW50IGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHksIHdpdGggMCwgMSBvciAyCisv
LyBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhlIGNhdGVnb3J5IGlzIG5vdCBlbmFibGVkLCB0
aGVuIHRoaXMKKy8vIGRvZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5n
cyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJh
bHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorLy8gLSB8aWR8IGlzIHVzZWQgdG8g
bWF0Y2ggdGhlIFNUQVJUIGV2ZW50IHdpdGggdGhlIEZJTklTSCBldmVudC4gSXQgbXVzdCBlaXRo
ZXIKKy8vICAgYmUgYSBwb2ludGVyIG9yIGFuIGludGVnZXIgdmFsdWUgdXAgdG8gNjQgYml0cy4g
SWYgaXQncyBhIHBvaW50ZXIsIHRoZSBiaXRzCisvLyAgIHdpbGwgYmUgeG9yZWQgd2l0aCBhIGhh
c2ggb2YgdGhlIHByb2Nlc3MgSUQgc28gdGhhdCB0aGUgc2FtZSBwb2ludGVyIG9uCisvLyAgIHR3
byBkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90IGNvbGxpZGUuCisjZGVmaW5lIFRSQUNFX0VW
RU5UX1NUQVJUMChjYXRlZ29yeSwgbmFtZSwgaWQpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9TVEFSVDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQs
IFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfU1RBUlQyKGNhdGVnb3J5
LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFy
ZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZF
TlRfUEhBU0VfU1RBUlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVO
VF9GTEFHX0hBU19JRCwgXAorICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUs
IGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX1NUQVJUMChjYXRlZ29yeSwgbmFt
ZSwgaWQpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVO
VF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5U
X0ZMQUdfSEFTX0lEIHwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9DT1BZX1NUQVJUMShjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9T
VEFSVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFT
X0lEIHwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92
YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfU1RBUlQyKGNhdGVnb3J5LCBuYW1lLCBpZCwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisg
ICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RB
UlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0hBU19J
RCB8IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFs
LCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIEZJTklTSCBldmVu
dCBmb3IgIm5hbWUiIGltbWVkaWF0ZWx5LiBJZiB0aGUgY2F0ZWdvcnkKKy8vIGlzIG5vdCBlbmFi
bGVkLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nLgorI2RlZmluZSBUUkFDRV9FVkVOVF9GSU5JU0gw
KGNhdGVnb3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRI
X0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwg
aWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GSU5JU0gx
KGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAg
ICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lELCBhcmcxX25h
bWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GSU5JU0gyKGNhdGVnb3J5LCBuYW1l
LCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFs
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhB
U0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxB
R19IQVNfSUQsIFwKKyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcy
X3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9GSU5JU0gwKGNhdGVnb3J5LCBuYW1lLCBp
ZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BI
QVNFX0ZJTklTSCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZM
QUdfSEFTX0lEIHwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9D
T1BZX0ZJTklTSDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisg
ICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklO
SVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNf
SUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3Zh
bCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9GSU5JU0gyKGNhdGVnb3J5LCBuYW1lLCBpZCwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisg
ICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklO
SVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19IQVNf
SUQgfCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3Zh
bCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8g
SW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdHJhY2luZyBBUEkgZGVmaW5pdGlvbnMuCisKKy8vIEdl
dCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGdpdmVuIHRyYWNlIGNhdGVn
b3J5LiBPbmx5CisvLyBsb25nLWxpdmVkIGxpdGVyYWwgc3RyaW5ncyBzaG91bGQgYmUgZ2l2ZW4g
YXMgdGhlIGNhdGVnb3J5IG5hbWUuIFRoZSByZXR1cm5lZAorLy8gcG9pbnRlciBjYW4gYmUgaGVs
ZCBwZXJtYW5lbnRseSBpbiBhIGxvY2FsIHN0YXRpYyBmb3IgZXhhbXBsZS4gSWYgdGhlCisvLyB1
bnNpZ25lZCBjaGFyIGlzIG5vbi16ZXJvLCB0cmFjaW5nIGlzIGVuYWJsZWQuIElmIHRyYWNpbmcg
aXMgZW5hYmxlZCwKKy8vIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQgY2FuIGJlIGNh
bGxlZC4gSXQncyBPSyBpZiB0cmFjaW5nIGlzIGRpc2FibGVkCisvLyBiZXR3ZWVuIHRoZSBsb2Fk
IG9mIHRoZSB0cmFjaW5nIHN0YXRlIGFuZCB0aGUgY2FsbCB0bworLy8gVFJBQ0VfRVZFTlRfQVBJ
X0FERF9UUkFDRV9FVkVOVCwgYmVjYXVzZSB0aGlzIGZsYWcgb25seSBwcm92aWRlcyBhbiBlYXJs
eSBvdXQKKy8vIGZvciBiZXN0IHBlcmZvcm1hbmNlIHdoZW4gdHJhY2luZyBpcyBkaXNhYmxlZC4K
Ky8vIGNvbnN0IHVuc2lnbmVkIGNoYXIqCisvLyAgICAgVFJBQ0VfRVZFTlRfQVBJX0dFVF9DQVRF
R09SWV9FTkFCTEVEKGNvbnN0IGNoYXIqIGNhdGVnb3J5X25hbWUpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0FQSV9HRVRfQ0FURUdPUllfRU5BQkxFRCBcCisgICAgV2ViQ29yZTo6UGxhdGZvcm1TdXBw
b3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcKKworLy8gQWRkIGEgdHJhY2UgZXZlbnQg
dG8gdGhlIHBsYXRmb3JtIHRyYWNpbmcgc3lzdGVtLiBSZXR1cm5zIHRocmVzaG9sZEJlZ2luSWQK
Ky8vIGZvciB1c2UgaW4gYSBjb3JyZXNwb25kaW5nIGVuZCBUUkFDRV9FVkVOVF9BUElfQUREX1RS
QUNFX0VWRU5UIGNhbGwuCisvLyBpbnQgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgK
Ky8vICAgICAgICAgICAgICAgICAgICBjaGFyIHBoYXNlLAorLy8gICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5X2VuYWJsZWQsCisvLyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogbmFtZSwKKy8vICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgaWQsCisvLyAgICAgICAgICAgICAgICAgICAgaW50IG51bV9hcmdzLAorLy8gICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdfbmFtZXMsCisvLyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnX3R5cGVzLAorLy8gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnX3ZhbHVlcywKKy8vICAgICAgICAgICAg
ICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKy8vICAgICAgICAgICAgICAgICAgICBsb25n
IGxvbmcgdGhyZXNob2xkLAorLy8gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxh
Z3MpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQgXAorICAgIFdlYkNv
cmU6OlBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVudAorCisvLyBNYW5nbGUgcG9pbnRlciB3
aXRoIGEgaGFzaCBzbyB0aGF0IGlmIGl0IG9jY3VycyBvbiBtb3JlIHRoYW4gb25lIHByb2Nlc3Ms
CisvLyBpdCB3aWxsIG5vdCBjb2xsaWRlIGluIHRoZSB0cmFjZSBkYXRhLiBQYXNzIHRoZSByZXR1
cm5lZCB2YWx1ZSB0bworLy8gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCBhcyB0aGUg
aWQgcGFyYW1ldGVyLgorLy8gdW5zaWduZWQgbG9uZyBsb25nIFRSQUNFX0VWRU5UX0FQSV9HRVRf
SURfRlJPTV9QT0lOVEVSKHZvaWQqIHBvaW50ZXIpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9H
RVRfSURfRlJPTV9QT0lOVEVSIFwKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6Om1hbmds
ZVBvaW50ZXJGb3JUcmFjaW5nCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIC8vIEltcGxl
bWVudGF0aW9uIGRldGFpbDogdHJhY2UgZXZlbnQgbWFjcm9zIGNyZWF0ZSB0ZW1wb3JhcnkgdmFy
aWFibGVzCiAvLyB0byBrZWVwIGluc3RydW1lbnRhdGlvbiBvdmVyaGVhZCBsb3cuIFRoZXNlIG1h
Y3JvcyBnaXZlIGVhY2ggdGVtcG9yYXJ5CiAvLyB2YXJpYWJsZSBhIHVuaXF1ZSBuYW1lIGJhc2Vk
IG9uIHRoZSBsaW5lIG51bWJlciB0byBwcmV2ZW50IG5hbWUgY29sbGlzc2lvbnMuCi0jZGVmaW5l
IFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIzKGEsIGIpIGEjI2IKLSNkZWZpbmUg
VFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUjIoYSwgYikgVFJBQ0VfRVZFTlRfTUFL
RV9VTklRVUVfSURFTlRJRklFUjMoYSwgYikKLSNkZWZpbmUgVFJBQ0VfRVZFTlRfTUFLRV9VTklR
VUVfSURFTlRJRklFUihuYW1lX3ByZWZpeCkgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJ
RklFUjIobmFtZV9wcmVmaXgsIF9fTElORV9fKQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9VSUQzKGEsIGIpIFwKKyAgICB0cmFjZV9ldmVudF91bmlxdWVfIyNhIyNiCisjZGVmaW5lIElO
VEVSTkFMX1RSQUNFX0VWRU5UX1VJRDIoYSwgYikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X1VJRDMoYSwgYikKKyNkZWZpbmUgSU5URVJOQUxUUkFDRUVWRU5UVUlEKG5hbWVfcHJlZml4KSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMihuYW1lX3ByZWZpeCwgX19MSU5FX18pCisK
Ky8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRp
YyBjYXRlZ29yeS4KKy8vIC0gV1RGX0FOTk9UQVRFX0JFTklHTl9SQUNFLCBzZWUgVGhyZWFkIFNh
ZmV0eSBhYm92ZS4KKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lO
Rk8oY2F0ZWdvcnkpIFwKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciogSU5URVJOQUxU
UkFDRUVWRU5UVUlEKGNhdHN0YXRpYykgPSAwOyBcCisgICAgV1RGX0FOTk9UQVRFX0JFTklHTl9S
QUNFKCZJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAidHJhY2VfZXZlbnQgY2F0ZWdvcnkiKTsgXAorICAgIGlmICghSU5URVJO
QUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIFwKKyAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJ
RChjYXRzdGF0aWMpID0gXAorICAgICAgICAgIFRSQUNFX0VWRU5UX0FQSV9HRVRfQ0FURUdPUllf
RU5BQkxFRChjYXRlZ29yeSk7CisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJuYWwg
bWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeSBhbmQgYWRkCisvLyBldmVudCBpZiB0aGUg
Y2F0ZWdvcnkgaXMgZW5hYmxlZC4KKyNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikKKyNkZWZp
bmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKGlnbm9yZSkgKCh2b2lkKTApCisjZWxzZQorI2Rl
ZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQocGhhc2UsIGNhdGVnb3J5LCBuYW1lLCBmbGFn
cywgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0
ZWdvcnkpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkgeyBc
CisgICAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KCBcCisgICAgICAgICAg
cGhhc2UsIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBuYW1lLCBcCisgICAgICAg
ICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6bm9FdmVudElkLCBmbGFncywgIyNfX1ZBX0FSR1NfXyk7
IFwKKyAgICB9CisjZW5kaWYKKworLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBt
YWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5IGFuZCBhZGQgYmVnaW4KKy8vIGV2ZW50IGlm
IHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLiBBbHNvIGFkZHMgdGhlIGVuZCBldmVudCB3aGVuIHRo
ZSBzY29wZQorLy8gZW5kcy4KKyNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikKKyNkZWZpbmUg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChpZ25vcmUpICgodm9pZCkwKQorI2Vsc2UK
KyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChjYXRlZ29yeSwgbmFtZSwg
Li4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdv
cnkpOyBcCisgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xvc2UgXAor
ICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQocHJvZmlsZVNjb3BlKTsgXAorICAgIGlmICgq
SU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAgICAgV2ViQ29yZTo6VHJh
Y2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAgICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0JF
R0lOLCBcCisgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIFwKKyAg
ICAgICAgICBuYW1lLCBXZWJDb3JlOjpUcmFjZUV2ZW50Ojpub0V2ZW50SWQsIFwKKyAgICAgICAg
ICBUUkFDRV9FVkVOVF9GTEFHX05PTkUsICMjX19WQV9BUkdTX18pOyBcCisgICAgICBJTlRFUk5B
TFRSQUNFRVZFTlRVSUQocHJvZmlsZVNjb3BlKS5pbml0aWFsaXplKCBcCisgICAgICAgICAgSU5U
RVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIG5hbWUpOyBcCisgICAgfQorI2VuZGlmCisK
Ky8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRp
YyBjYXRlZ29yeSBhbmQgYWRkIGJlZ2luCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgZW5h
YmxlZC4gQWxzbyBhZGRzIHRoZSBlbmQgZXZlbnQgd2hlbiB0aGUgc2NvcGUKKy8vIGVuZHMuIElm
IHRoZSBlbGFwc2VkIHRpbWUgaXMgPCB0aHJlc2hvbGQgdGltZSwgdGhlIGJlZ2luL2VuZCBwYWly
IGlzIGVyYXNlZC4KKyNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikKKyNkZWZpbmUgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9JRl9MT05HRVJfVEhBTihpZ25vcmUpICgodm9pZCkw
KQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9JRl9MT05H
RVJfVEhBTih0aHJlc2hvbGQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIC4uLikgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAg
IFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xkIFwKKyAg
ICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSk7IFwKKyAgICBpZiAoKklO
VEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7IFwKKyAgICAgIGludCBJTlRFUk5BTFRS
QUNFRVZFTlRVSUQoYmVnaW5fZXZlbnRfaWQpID0gXAorICAgICAgICBXZWJDb3JlOjpUcmFjZUV2
ZW50OjphZGRUcmFjZUV2ZW50KCBcCisgICAgICAgICAgICBUUkFDRV9FVkVOVF9QSEFTRV9CRUdJ
TiwgXAorICAgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIFwKKyAg
ICAgICAgICAgIG5hbWUsIFdlYkNvcmU6OlRyYWNlRXZlbnQ6Om5vRXZlbnRJZCwgXAorICAgICAg
ICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCAjI19fVkFfQVJHU19fKTsgXAorICAgICAgSU5U
RVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSkuaW5pdGlhbGl6ZSggXAorICAgICAgICAg
IElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBuYW1lLCBcCisgICAgICAgICAgSU5U
RVJOQUxUUkFDRUVWRU5UVUlEKGJlZ2luX2V2ZW50X2lkKSwgdGhyZXNob2xkKTsgXAorICAgIH0K
KyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNy
ZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZAorLy8gZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlz
IGVuYWJsZWQuCisjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKGlnbm9yZSkgKCh2b2lkKTApCisjZWxzZQorI2RlZmlu
ZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChwaGFzZSwgY2F0ZWdvcnksIG5hbWUs
IGlkLCBmbGFncywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu
Li4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdPUllfSU5GTyhjYXRlZ29y
eSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7IFwKKyAg
ICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OmFkZFRyYWNlRXZlbnQoIFwKKyAgICAgICAgICBwaGFz
ZSwgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIFwKKyAgICAgICAgICBuYW1lLCBX
ZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUlEKGlkKS5kYXRhKCksIGZsYWdzLCBcCisgICAgICAg
ICAgIyNfX1ZBX0FSR1NfXyk7IFwKKyAgICB9CisjZW5kaWYKKworLy8gTm90ZXMgcmVnYXJkaW5n
IHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnM6CisvLyBOZXcgdmFsdWVzIGNhbiBiZSBhZGRlZCBh
bmQgcHJvcGFnYXRlZCB0byB0aGlyZCBwYXJ0eSBsaWJyYXJpZXMsIGJ1dCBleGlzdGluZworLy8g
ZGVmaW5pdGlvbnMgbXVzdCBuZXZlciBiZSBjaGFuZ2VkLCBiZWNhdXNlIHRoaXJkIHBhcnR5IGxp
YnJhcmllcyBtYXkgdXNlIG9sZAorLy8gZGVmaW5pdGlvbnMuCisKKy8vIFBoYXNlIGluZGljYXRl
cyB0aGUgbmF0dXJlIG9mIGFuIGV2ZW50IGVudHJ5LiBFLmcuIHBhcnQgb2YgYSBiZWdpbi9lbmQg
cGFpci4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4gICAgKCdCJykKKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfUEhBU0VfRU5EICAgICAgKCdFJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhB
U0VfSU5TVEFOVCAgKCdJJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQgICAgKCdT
JykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNIICAgKCdGJykKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfUEhBU0VfTUVUQURBVEEgKCdNJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0Vf
Q09VTlRFUiAgKCdDJykKKworLy8gRmxhZ3MgZm9yIGNoYW5naW5nIHRoZSBiZWhhdmlvciBvZiBU
UkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5ULgorI2RlZmluZSBUUkFDRV9FVkVOVF9GTEFH
X05PTkUgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwKSkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfRkxBR19DT1BZICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSA8
PCAwKSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgICAgICAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oMSA8PCAxKSkKKworLy8gVHlwZSB2YWx1ZXMgZm9yIGlkZW50aWZ5aW5n
IHR5cGVzIGluIHRoZSBUcmFjZVZhbHVlIHVuaW9uLgorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBF
X0JPT0wgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSkpCisjZGVmaW5lIFRS
QUNFX1ZBTFVFX1RZUEVfVUlOVCAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigy
KSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9JTlQgICAgICAgICAgKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KDMpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX0RPVUJMRSAgICAgICAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNCkpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVf
UE9JTlRFUiAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig1KSkKKyNkZWZpbmUgVFJB
Q0VfVkFMVUVfVFlQRV9TVFJJTkcgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDYp
KQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX0NPUFlfU1RSSU5HICAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oNykpCiAKLS8vIElzc3VlcyBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRC
ZWdpbiBhbmQgdHJhY2VFdmVudEVuZCBjYWxscyBmb3IgdGhlIGVuY2xvc2luZyBzY29wZQotI2Rl
ZmluZSBUUkFDRV9FVkVOVChuYW1lLCBpZCwgZXh0cmEpIFdlYkNvcmU6OmludGVybmFsOjpTY29w
ZVRyYWNlciBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElGSUVSKF9fdHJhY2VFdmVudFNj
b3BlKShuYW1lLCBpZCwgZXh0cmEpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFj
ZSBpbnRlcm5hbCB7CituYW1lc3BhY2UgVHJhY2VFdmVudCB7CiAKLS8vIFVzZWQgYnkgVFJBQ0Vf
RVZFTlQgbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHkuCi1jbGFzcyBTY29wZVRyYWNlciB7Cisv
LyBTcGVjaWZ5IHRoZXNlIHZhbHVlcyB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IG9m
IGFkZFRyYWNlRXZlbnQgaXMgbm90CisvLyB1c2VkLgorY29uc3QgaW50IHplcm9OdW1BcmdzID0g
MDsKK2NvbnN0IGludCBub1RocmVzaG9sZEJlZ2luSWQgPSAtMTsKK2NvbnN0IGxvbmcgbG9uZyBu
b1RocmVzaG9sZFZhbHVlID0gMDsKK2NvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBub0V2ZW50SWQg
PSAwOworCisvLyBUcmFjZUlEIGVuY2Fwc3VsYXRlcyBhbiBJRCB0aGF0IGNhbiBlaXRoZXIgYmUg
YW4gaW50ZWdlciBvciBwb2ludGVyLiBQb2ludGVycworLy8gYXJlIG1hbmdsZWQgd2l0aCB0aGUg
UHJvY2VzcyBJRCBzbyB0aGF0IHRoZXkgYXJlIHVubGlrZWx5IHRvIGNvbGxpZGUgd2hlbiB0aGUK
Ky8vIHNhbWUgcG9pbnRlciBpcyB1c2VkIG9uIGRpZmZlcmVudCBwcm9jZXNzZXMuCitjbGFzcyBU
cmFjZUlEIHsKIHB1YmxpYzoKLSAgICBTY29wZVRyYWNlcihjb25zdCBjaGFyKiBuYW1lLCB2b2lk
KiwgY29uc3QgY2hhciogZXh0cmEpOwotICAgIH5TY29wZVRyYWNlcigpOworICAgIGV4cGxpY2l0
IFRyYWNlSUQodm9pZCogcmhzKSA6CisgICAgICAgIG1fZGF0YShUUkFDRV9FVkVOVF9BUElfR0VU
X0lEX0ZST01fUE9JTlRFUihyaHMpKSB7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHVuc2lnbmVk
IGxvbmcgbG9uZyByaHMpIDogbV9kYXRhKHJocykgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1
bnNpZ25lZCBsb25nIHJocykgOiBtX2RhdGEocmhzKSB7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlE
KHVuc2lnbmVkIGludCByaHMpIDogbV9kYXRhKHJocykgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJ
RCh1bnNpZ25lZCBzaG9ydCByaHMpIDogbV9kYXRhKHJocykgeyB9CisgICAgZXhwbGljaXQgVHJh
Y2VJRCh1bnNpZ25lZCBjaGFyIHJocykgOiBtX2RhdGEocmhzKSB7IH0KKyAgICBleHBsaWNpdCBU
cmFjZUlEKGxvbmcgbG9uZyByaHMpIDoKKyAgICAgICAgbV9kYXRhKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmcgbG9uZz4ocmhzKSkgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChsb25nIHJocykg
OiBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihyaHMpKSB7IH0KKyAgICBl
eHBsaWNpdCBUcmFjZUlEKGludCByaHMpIDogbV9kYXRhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4ocmhzKSkgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChzaG9ydCByaHMpIDogbV9k
YXRhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ocmhzKSkgeyB9CisgICAgZXhwbGlj
aXQgVHJhY2VJRChzaWduZWQgY2hhciByaHMpIDoKKyAgICAgICAgbV9kYXRhKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4ocmhzKSkgeyB9CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBtX2RhdGE7Cit9OworCisvLyBTaW1wbGUgdW5pb24gdG8gc3RvcmUgdmFyaW91
cyB0eXBlcyBhcyB1bnNpZ25lZCBsb25nIGxvbmcuCit1bmlvbiBUcmFjZVZhbHVlVW5pb24gewor
ICAgIGJvb2wgbV9ib29sOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3VpbnQ7CisgICAgbG9u
ZyBsb25nIG1faW50OworICAgIGRvdWJsZSBtX2RvdWJsZTsKKyAgICBjb25zdCB2b2lkKiBtX3Bv
aW50ZXI7CisgICAgY29uc3QgY2hhciogbV9zdHJpbmc7Cit9OwogCisvLyBTaW1wbGUgY29udGFp
bmVyIGZvciBjb25zdCBjaGFyKiB0aGF0IHNob3VsZCBiZSBjb3BpZWQgaW5zdGVhZCBvZiByZXRh
aW5lZC4KK2NsYXNzIFRyYWNlU3RyaW5nV2l0aENvcHkgeworcHVibGljOgorICAgIGV4cGxpY2l0
IFRyYWNlU3RyaW5nV2l0aENvcHkoY29uc3QgY2hhciogc3RyKSA6IG1fc3RyKHN0cikgeyB9Cisg
ICAgb3BlcmF0b3IgY29uc3QgY2hhciogKCkgY29uc3QgeyByZXR1cm4gbV9zdHI7IH0KIHByaXZh
dGU6Ci0gICAgY29uc3QgY2hhciogbV9uYW1lOwotICAgIHZvaWQqIG1faWQ7Ci0gICAgT3duQXJy
YXlQdHI8Y2hhcj4gbV9leHRyYTsKKyAgICBjb25zdCBjaGFyKiBtX3N0cjsKIH07CiAKLWlubGlu
ZSBTY29wZVRyYWNlcjo6U2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNv
bnN0IGNoYXIqIGV4dHJhKQotICAgIDogbV9uYW1lKG5hbWUpCi0gICAgLCBtX2lkKGlkKQotewot
ICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlkLCBleHRyYSk7IFwK
LSAgICBpZiAoZXh0cmEgJiYgUGxhdGZvcm1TdXBwb3J0Ojppc1RyYWNlRXZlbnRFbmFibGVkKCkp
Ci0gICAgICAgIG1fZXh0cmEgPSBhZG9wdEFycmF5UHRyKHN0cmR1cChleHRyYSkpOworLy8gRGVm
aW5lIHNldFRyYWNlVmFsdWUgZm9yIGVhY2ggYWxsb3dlZCB0eXBlLiBJdCBzdG9yZXMgdGhlIHR5
cGUgYW5kCisvLyB2YWx1ZSBpbiB0aGUgcmV0dXJuIGFyZ3VtZW50cy4gVGhpcyBhbGxvd3MgdGhp
cyBBUEkgdG8gYXZvaWQgZGVjbGFyaW5nIGFueQorLy8gc3RydWN0dXJlcyBzbyB0aGF0IGl0IGlz
IHBvcnRhYmxlIHRvIHRoaXJkX3BhcnR5IGxpYnJhcmllcy4KKyNkZWZpbmUgSU5URVJOQUxfREVD
TEFSRV9TRVRfVFJBQ0VfVkFMVUUoYWN0dWFsX3R5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5pb25fbWVtYmVyLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGVfaWQpIFwKKyAgICBzdGF0aWMgaW5saW5l
IHZvaWQgc2V0VHJhY2VWYWx1ZShhY3R1YWxfdHlwZSBhcmcsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0eXBlLCBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2YWx1ZSkgeyBcCisg
ICAgICAgIFRyYWNlVmFsdWVVbmlvbiB0eXBlVmFsdWU7IFwKKyAgICAgICAgdHlwZVZhbHVlLnVu
aW9uX21lbWJlciA9IGFyZzsgXAorICAgICAgICAqdHlwZSA9IHZhbHVlX3R5cGVfaWQ7IFwKKyAg
ICAgICAgKnZhbHVlID0gdHlwZVZhbHVlLm1fdWludDsgXAorICAgIH0KKy8vIFNpbXBsZXIgZm9y
bSBmb3IgaW50IHR5cGVzIHRoYXQgY2FuIGJlIHNhZmVseSBjYXN0ZWQuCisjZGVmaW5lIElOVEVS
TkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChhY3R1YWxfdHlwZSwgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZV9pZCkgXAorICAg
IHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRUcmFjZVZhbHVlKGFjdHVhbF90eXBlIGFyZywgXAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHR5cGUsIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcq
IHZhbHVlKSB7IFwKKyAgICAgICAgKnR5cGUgPSB2YWx1ZV90eXBlX2lkOyBcCisgICAgICAgICp2
YWx1ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oYXJnKTsgXAorICAgIH0KKwor
SU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGxvbmcgbG9uZywg
VFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVf
SU5UKHVuc2lnbmVkIGludCwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVDTEFS
RV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIHNob3J0LCBUUkFDRV9WQUxVRV9UWVBFX1VJ
TlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQodW5zaWduZWQgY2hhciwg
VFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVf
SU5UKGxvbmcgbG9uZywgVFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NF
VF9UUkFDRV9WQUxVRV9JTlQoaW50LCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkKK0lOVEVSTkFMX0RF
Q0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChzaG9ydCwgVFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJ
TlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQoc2lnbmVkIGNoYXIsIFRSQUNFX1ZB
TFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoYm9vbCwgbV9i
b29sLCBUUkFDRV9WQUxVRV9UWVBFX0JPT0wpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9W
QUxVRShkb3VibGUsIG1fZG91YmxlLCBUUkFDRV9WQUxVRV9UWVBFX0RPVUJMRSkKK0lOVEVSTkFM
X0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0IHZvaWQqLCBtX3BvaW50ZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9UWVBFX1BPSU5URVIpCitJTlRF
Uk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShjb25zdCBjaGFyKiwgbV9zdHJpbmcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9UWVBFX1NUUklORykKK0lO
VEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0IFRyYWNlU3RyaW5nV2l0aENvcHkm
LCBtX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSQUNFX1ZBTFVF
X1RZUEVfQ09QWV9TVFJJTkcpCisKKyN1bmRlZiBJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9W
QUxVRQorI3VuZGVmIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVAorCisvLyBX
VEY6OlN0cmluZyB2ZXJzaW9uIG9mIHNldFRyYWNlVmFsdWUgc28gdGhhdCB0cmFjZSBhcmd1bWVu
dHMgY2FuIGJlIHN0cmluZ3MuCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0VHJhY2VWYWx1ZShjb25z
dCBXVEY6OkNTdHJpbmcmIGFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIqIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIGxvbmcqIHZhbHVlKSB7CisgICAgVHJhY2VWYWx1ZVVuaW9uIHR5cGVWYWx1ZTsK
KyAgICB0eXBlVmFsdWUubV9zdHJpbmcgPSBhcmcuZGF0YSgpOworICAgICp0eXBlID0gVFJBQ0Vf
VkFMVUVfVFlQRV9DT1BZX1NUUklORzsKKyAgICAqdmFsdWUgPSB0eXBlVmFsdWUubV91aW50Owor
fQorCisvLyBUaGVzZSBhZGRUcmFjZUV2ZW50IHRlbXBsYXRlIGZ1bmN0aW9ucyBhcmUgZGVmaW5l
ZCBoZXJlIGluc3RlYWQgb2YgaW4gdGhlCisvLyBtYWNybywgYmVjYXVzZSB0aGUgYXJnIHZhbHVl
cyBjb3VsZCBiZSB0ZW1wb3Jhcnkgc3RyaW5nIG9iamVjdHMuIEluIG9yZGVyIHRvCisvLyBzdG9y
ZSBwb2ludGVycyB0byB0aGUgaW50ZXJuYWwgY19zdHIgYW5kIHBhc3MgdGhyb3VnaCB0byB0aGUg
dHJhY2luZyBBUEksIHRoZQorLy8gYXJnIHZhbHVlcyBtdXN0IGxpdmUgdGhyb3VnaG91dCB0aGVz
ZSBwcm9jZWR1cmVzLgorCitzdGF0aWMgaW5saW5lIGludCBhZGRUcmFjZUV2ZW50KGNoYXIgcGhh
c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IGZsYWdzKSB7CisgICAgcmV0dXJuIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisg
ICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQsIG5hbWUsIGlkLAorICAgICAgICB6ZXJvTnVt
QXJncywgMCwgMCwgMCwKKyAgICAgICAgbm9UaHJlc2hvbGRCZWdpbklkLCBub1RocmVzaG9sZFZh
bHVlLCBmbGFncyk7CiB9CiAKLWlubGluZSBTY29wZVRyYWNlcjo6flNjb3BlVHJhY2VyKCkKLXsK
LSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQobV9uYW1lLCBtX2lkLCBtX2V4dHJh
LmdldCgpKTsKK3RlbXBsYXRlPGNsYXNzIEFSRzFfVFlQRT4KK3N0YXRpYyBpbmxpbmUgaW50IGFk
ZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGFyZzFOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBBUkcxX1RZUEUmIGFyZzFWYWwpIHsKKyAgICBjb25zdCBpbnQgbnVtQXJncyA9IDE7
CisgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1sxXTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcg
YXJnVmFsdWVzWzFdOworICAgIHNldFRyYWNlVmFsdWUoYXJnMVZhbCwgJmFyZ1R5cGVzWzBdLCAm
YXJnVmFsdWVzWzBdKTsKKyAgICByZXR1cm4gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVO
VCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgbmFtZSwgaWQsCisgICAgICAgIG51
bUFyZ3MsICZhcmcxTmFtZSwgYXJnVHlwZXMsIGFyZ1ZhbHVlcywKKyAgICAgICAgbm9UaHJlc2hv
bGRCZWdpbklkLCBub1RocmVzaG9sZFZhbHVlLCBmbGFncyk7CiB9CiAKLX0gLy8gbmFtZXNwYWNl
IGludGVybmFsCit0ZW1wbGF0ZTxjbGFzcyBBUkcxX1RZUEUsIGNsYXNzIEFSRzJfVFlQRT4KK3N0
YXRpYyBpbmxpbmUgaW50IGFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFyZzFOYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcxX1RZUEUmIGFyZzFWYWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFyZzJOYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcyX1RZUEUmIGFyZzJWYWwpIHsKKyAgICBjb25z
dCBpbnQgbnVtQXJncyA9IDI7CisgICAgY29uc3QgY2hhciogYXJnTmFtZXNbMl0gPSB7IGFyZzFO
YW1lLCBhcmcyTmFtZSB9OworICAgIHVuc2lnbmVkIGNoYXIgYXJnVHlwZXNbMl07CisgICAgdW5z
aWduZWQgbG9uZyBsb25nIGFyZ1ZhbHVlc1syXTsKKyAgICBzZXRUcmFjZVZhbHVlKGFyZzFWYWws
ICZhcmdUeXBlc1swXSwgJmFyZ1ZhbHVlc1swXSk7CisgICAgc2V0VHJhY2VWYWx1ZShhcmcyVmFs
LCAmYXJnVHlwZXNbMV0sICZhcmdWYWx1ZXNbMV0pOworICAgIHJldHVybiBUUkFDRV9FVkVOVF9B
UElfQUREX1RSQUNFX0VWRU5UKAorICAgICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1l
LCBpZCwKKyAgICAgICAgbnVtQXJncywgYXJnTmFtZXMsIGFyZ1R5cGVzLCBhcmdWYWx1ZXMsCisg
ICAgICAgIG5vVGhyZXNob2xkQmVnaW5JZCwgbm9UaHJlc2hvbGRWYWx1ZSwgZmxhZ3MpOworfQor
CisvLyBVc2VkIGJ5IFRSQUNFX0VWRU5UeCBtYWNyby4gRG8gbm90IHVzZSBkaXJlY3RseS4KK2Ns
YXNzIFRyYWNlRW5kT25TY29wZUNsb3NlIHsKK3B1YmxpYzoKKyAgICAvLyBOb3RlOiBtZW1iZXJz
IG9mIG1fZGF0YSBpbnRlbnRpb25hbGx5IGxlZnQgdW5pbml0aWFsaXplZC4gU2VlIGluaXRpYWxp
emUuCisgICAgVHJhY2VFbmRPblNjb3BlQ2xvc2UoKSA6IG1fcGRhdGEoMCkgeyB9CisgICAgflRy
YWNlRW5kT25TY29wZUNsb3NlKCkKKyAgICB7CisgICAgICAgIGlmIChtX3BkYXRhKQorICAgICAg
ICAgICAgYWRkRXZlbnRJZkVuYWJsZWQoKTsKKyAgICB9CisKKyAgICB2b2lkIGluaXRpYWxpemUo
Y29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBuYW1lKQorICAgIHsKKyAgICAgICAgbV9kYXRhLmNhdGVnb3J5RW5hYmxl
ZCA9IGNhdGVnb3J5RW5hYmxlZDsKKyAgICAgICAgbV9kYXRhLm5hbWUgPSBuYW1lOworICAgICAg
ICBtX3BkYXRhID0gJm1fZGF0YTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8gQWRkIHRoZSBl
bmQgZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIHN0aWxsIGVuYWJsZWQuCisgICAgdm9pZCBhZGRF
dmVudElmRW5hYmxlZCgpCisgICAgeworICAgICAgICAvLyBPbmx5IGNhbGxlZCB3aGVuIG1fcGRh
dGEgaXMgbm9uLW51bGwuCisgICAgICAgIGlmICgqbV9wZGF0YS0+Y2F0ZWdvcnlFbmFibGVkKSB7
CisgICAgICAgICAgICBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAgICAg
ICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0VORCwKKyAgICAgICAgICAgICAgICBtX3BkYXRhLT5j
YXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+bmFtZSwgbm9FdmVudElk
LAorICAgICAgICAgICAgICAgIHplcm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICAgICAgICAg
IG5vVGhyZXNob2xkQmVnaW5JZCwgbm9UaHJlc2hvbGRWYWx1ZSwgVFJBQ0VfRVZFTlRfRkxBR19O
T05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMgRGF0YSBzdHJ1Y3Qgd29ya2Fy
b3VuZCBpcyB0byBhdm9pZCBpbml0aWFsaXppbmcgYWxsIHRoZSBtZW1iZXJzCisgICAgLy8gaW4g
RGF0YSBkdXJpbmcgY29uc3RydWN0aW9uIG9mIHRoaXMgb2JqZWN0LCBzaW5jZSB0aGlzIG9iamVj
dCBpcyBhbHdheXMKKyAgICAvLyBjb25zdHJ1Y3RlZCwgZXZlbiB3aGVuIHRyYWNpbmcgaXMgZGlz
YWJsZWQuIElmIHRoZSBtZW1iZXJzIG9mIERhdGEgd2VyZQorICAgIC8vIG1lbWJlcnMgb2YgdGhp
cyBjbGFzcyBpbnN0ZWFkLCBjb21waWxlciB3YXJuaW5ncyBvY2N1ciBhYm91dCBwb3RlbnRpYWwK
KyAgICAvLyB1bmluaXRpYWxpemVkIGFjY2Vzc2VzLgorICAgIHN0cnVjdCBEYXRhIHsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkOworICAgICAgICBjb25zdCBj
aGFyKiBuYW1lOworICAgIH07CisgICAgRGF0YSogbV9wZGF0YTsKKyAgICBEYXRhIG1fZGF0YTsK
K307CisKKy8vIFVzZWQgYnkgVFJBQ0VfRVZFTlR4IG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5
LgorY2xhc3MgVHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQgeworcHVibGljOgorICAgIC8v
IE5vdGU6IG1lbWJlcnMgb2YgbV9kYXRhIGludGVudGlvbmFsbHkgbGVmdCB1bmluaXRpYWxpemVk
LiBTZWUgaW5pdGlhbGl6ZS4KKyAgICBUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCgpIDog
bV9wZGF0YSgwKSB7IH0KKyAgICB+VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQoKQorICAg
IHsKKyAgICAgICAgaWYgKG1fcGRhdGEpCisgICAgICAgICAgICBhZGRFdmVudElmRW5hYmxlZCgp
OworICAgIH0KKworICAgIC8vIENhbGxlZCBieSBtYWNyb3Mgb25seSB3aGVuIHRyYWNpbmcgaXMg
ZW5hYmxlZCBhdCB0aGUgcG9pbnQgd2hlbiB0aGUgYmVnaW4KKyAgICAvLyBldmVudCBpcyBhZGRl
ZC4KKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFi
bGVkLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKyAgICAgICAgICAgICAgICAgICAgbG9uZyBs
b25nIHRocmVzaG9sZCkKKyAgICB7CisgICAgICAgIG1fZGF0YS5jYXRlZ29yeUVuYWJsZWQgPSBj
YXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIG1fZGF0YS5uYW1lID0gbmFtZTsKKyAgICAgICAgbV9k
YXRhLnRocmVzaG9sZEJlZ2luSUQgPSB0aHJlc2hvbGRCZWdpbklEOworICAgICAgICBtX2RhdGEu
dGhyZXNob2xkID0gdGhyZXNob2xkOworICAgICAgICBtX3BkYXRhID0gJm1fZGF0YTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgLy8gQWRkIHRoZSBlbmQgZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlz
IHN0aWxsIGVuYWJsZWQuCisgICAgdm9pZCBhZGRFdmVudElmRW5hYmxlZCgpCisgICAgeworICAg
ICAgICAvLyBPbmx5IGNhbGxlZCB3aGVuIG1fcGRhdGEgaXMgbm9uLW51bGwuCisgICAgICAgIGlm
ICgqbV9wZGF0YS0+Y2F0ZWdvcnlFbmFibGVkKSB7CisgICAgICAgICAgICBUUkFDRV9FVkVOVF9B
UElfQUREX1RSQUNFX0VWRU5UKAorICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0VO
RCwKKyAgICAgICAgICAgICAgICBtX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAg
ICAgICAgbV9wZGF0YS0+bmFtZSwgbm9FdmVudElkLAorICAgICAgICAgICAgICAgIHplcm9OdW1B
cmdzLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgIG1fcGRhdGEtPnRocmVzaG9sZEJlZ2luSUQs
IG1fcGRhdGEtPnRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICBUUkFDRV9FVkVOVF9GTEFHX05P
TkUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhpcyBEYXRhIHN0cnVjdCB3b3JrYXJv
dW5kIGlzIHRvIGF2b2lkIGluaXRpYWxpemluZyBhbGwgdGhlIG1lbWJlcnMKKyAgICAvLyBpbiBE
YXRhIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgdGhpcyBvYmplY3QsIHNpbmNlIHRoaXMgb2JqZWN0
IGlzIGFsd2F5cworICAgIC8vIGNvbnN0cnVjdGVkLCBldmVuIHdoZW4gdHJhY2luZyBpcyBkaXNh
YmxlZC4gSWYgdGhlIG1lbWJlcnMgb2YgRGF0YSB3ZXJlCisgICAgLy8gbWVtYmVycyBvZiB0aGlz
IGNsYXNzIGluc3RlYWQsIGNvbXBpbGVyIHdhcm5pbmdzIG9jY3VyIGFib3V0IHBvdGVudGlhbAor
ICAgIC8vIHVuaW5pdGlhbGl6ZWQgYWNjZXNzZXMuCisgICAgc3RydWN0IERhdGEgeworICAgICAg
ICBsb25nIGxvbmcgdGhyZXNob2xkOworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRl
Z29yeUVuYWJsZWQ7CisgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgICAgIGludCB0aHJl
c2hvbGRCZWdpbklEOworICAgIH07CisgICAgRGF0YSogbV9wZGF0YTsKKyAgICBEYXRhIG1fZGF0
YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFRyYWNlRXZlbnQKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCmluZGV4IDZjMGU3NGYxMjk3MmM3ZjM3
NDYzNDBhZmY2OWIzMTJkYzI1Y2ExZTkuLmQ0MmU1NzNlYmIzMDA1YTBmMzc5OTc3NzA3Y2E3ZDE4
OTNhMDJjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCkBAIC0yMzcsMTEgKzIzNyw1
NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudFN0YXRzQ291bnRlcihjb25z
dCBjaGFyKiBuYW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50U3RhdHNDb3VudGVy
KGNvbnN0IGNoYXIqIG5hbWUpIHsgfQogCi0gICAgLy8gQW4gZXZlbnQgaXMgaWRlbnRpZmllZCBi
eSB0aGUgcGFpciAobmFtZSwgaWQpLiBUaGUgZXh0cmEgcGFyYW1ldGVyCi0gICAgLy8gc3BlY2lm
aWVzIGFkZGl0aW9uYWwgZGF0YSB0byBsb2cgd2l0aCB0aGUgZXZlbnQuCi0gICAgdmlydHVhbCBi
b29sIGlzVHJhY2VFdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29u
c3QgY2hhciogZXh0cmEpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50RW5kKGNvbnN0
IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkgeyB9CisgICAgLy8gVHJh
Y2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyAgICAvLyBHZXQgYSBwb2ludGVyIHRvIHRoZSBlbmFibGVkIHN0YXRlIG9m
IHRoZSBnaXZlbiB0cmFjZSBjYXRlZ29yeS4gT25seQorICAgIC8vIGxvbmctbGl2ZWQgbGl0ZXJh
bCBzdHJpbmdzIHNob3VsZCBiZSBnaXZlbiBhcyB0aGUgY2F0ZWdvcnkgbmFtZS4gVGhlCisgICAg
Ly8gcmV0dXJuZWQgcG9pbnRlciBjYW4gYmUgaGVsZCBwZXJtYW5lbnRseSBpbiBhIGxvY2FsIHN0
YXRpYyBmb3IgZXhhbXBsZS4KKyAgICAvLyBJZiB0aGUgdW5zaWduZWQgY2hhciBpcyBub24temVy
bywgdHJhY2luZyBpcyBlbmFibGVkLiBJZiB0cmFjaW5nIGlzCisgICAgLy8gZW5hYmxlZCwgYWRk
VHJhY2VFdmVudCBjYW4gYmUgY2FsbGVkLiBJdCdzIE9LIGlmIHRyYWNpbmcgaXMgZGlzYWJsZWQK
KyAgICAvLyBiZXR3ZWVuIHRoZSBsb2FkIG9mIHRoZSB0cmFjaW5nIHN0YXRlIGFuZCB0aGUgY2Fs
bCB0byBhZGRUcmFjZUV2ZW50LAorICAgIC8vIGJlY2F1c2UgdGhpcyBmbGFnIG9ubHkgcHJvdmlk
ZXMgYW4gZWFybHkgb3V0IGZvciBiZXN0IHBlcmZvcm1hbmNlIHdoZW4KKyAgICAvLyB0cmFjaW5n
IGlzIGRpc2FibGVkLgorICAgIHZpcnR1YWwgY29uc3QgdW5zaWduZWQgY2hhciogZ2V0VHJhY2VD
YXRlZ29yeUVuYWJsZWRGbGFnKGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZSkgeyByZXR1cm4gMDsg
fQorICAgIC8vIEFkZCBhIHRyYWNlIGV2ZW50IHRvIHRoZSBwbGF0Zm9ybSB0cmFjaW5nIHN5c3Rl
bS4KKyAgICAvLyBSZXR1cm5zIHRocmVzaG9sZEJlZ2luSWQgZm9yIHVzZSBpbiBhIGNvcnJlc3Bv
bmRpbmcgZW5kIGFkZFRyYWNlRXZlbnQgY2FsbC4KKyAgICAvLyAtIHBoYXNlIHNwZWNpZmllcyB0
aGUgdHlwZSBvZiBldmVudCwgc3VjaCBhcyBiZWdpbiwgZW5kLCBpbnN0YW50LCBldGMuCisgICAg
Ly8gLSBjYXRlZ29yeUVuYWJsZWQgaXMgdGhlIHBvaW50ZXIgcmV0dXJuZWQgYnkgZ2V0Q2F0ZWdv
cnlFbmFibGVkLgorICAgIC8vIC0gbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgZXZlbnQuCisgICAg
Ly8gLSBpZCBvcHRpb25hbGx5IGFsbG93cyBldmVudHMgb2YgdGhlIHNhbWUgbmFtZSB0byBiZSBk
aXN0aW5ndWlzaGVkLgorICAgIC8vIC0gbnVtQXJncyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBl
bGVtZW50cyBpbiBhcmdOYW1lcywgYXJnVHlwZXMsIGFuZAorICAgIC8vICAgYXJnVmFsdWVzLgor
ICAgIC8vIC0gYXJnTmFtZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50IG5hbWVzLgorICAgIC8v
IC0gYXJnVHlwZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50IHR5cGVzOiBib29sLCB1bnNpZ25l
ZCBsb25nIGxvbmcsCisgICAgLy8gICBsb25nIGxvbmcsIGRvdWJsZSwgdm9pZCosIGNoYXIqIChs
b25nLWxpdmVkIG51bGwtdGVybWluYXRlZCBjaGFyKiBzdHJpbmcpLAorICAgIC8vICAgY2hhciog
KHRlbXBvcmFyeSBudWxsLXRlcm1pbmF0ZWQgY2hhciogc3RyaW5nKS4KKyAgICAvLyAtIGFyZ1Zh
bHVlcyBpcyB0aGUgYXJyYXkgb2YgYXJndW1lbnQgdmFsdWVzLgorICAgIC8vIC0gdGhyZXNob2xk
QmVnaW5JZCBvcHRpb25hbGx5IHNwZWNpZmllcyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYSBwcmV2
aW91cworICAgIC8vICAgY2FsbCB0byBhZGRUcmFjZUV2ZW50LgorICAgIC8vIC0gdGhyZXNob2xk
IHNwZWNpZmllcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWljcm9zZWNvbmRzIHRoYXQgbXVzdCBo
YXZlCisgICAgLy8gICBwYXNzZWQgc2luY2UgdGhlIGV2ZW50IGlkZW50aWZpZWQgYnkgdGhyZXNo
b2xkQmVnaW5JZCBmb3IgYm90aCBldmVudHMgdG8KKyAgICAvLyAgIGJlIHJlY29yZGVkLgorICAg
IC8vIC0gZmxhZ3MgY2FuIGJlIDAgb3Igb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZywgT1Jl
ZCB0b2dldGhlcjoKKyAgICAvLyAgIC0gdHJlYXQgYWxsIHN0cmluZ3MgYXMgdGVtcG9yYXJ5IHNv
IHRoYXQgdGhleSB3aWxsIGJlIGNvcGllZCBieQorICAgIC8vICAgICBhZGRUcmFjZUV2ZW50LCB3
aXRoIHRoZSBleGNlcHRpb24gb2YgY2F0ZWdvcnkgbmFtZS4KKyAgICAvLyAgIC0gdXNlIHRoZSBp
ZCBhcmd1bWVudCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgZXZlbnQgZm9yIG1hdGNoaW5nCisg
ICAgLy8gICAgIHdpdGggb3RoZXIgZXZlbnRzIG9mIHRoZSBzYW1lIG5hbWUuCisgICAgdmlydHVh
bCBpbnQgYWRkVHJhY2VFdmVudCgKKyAgICAgICAgY2hhciBwaGFzZSwKKyAgICAgICAgY29uc3Qg
dW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkRmxhZywKKyAgICAgICAgY29uc3QgY2hhciog
bmFtZSwKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICBpbnQgbnVtQXJn
cywKKyAgICAgICAgY29uc3QgY2hhcioqIGFyZ05hbWVzLAorICAgICAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyKiBhcmdUeXBlcywKKyAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nKiBhcmdW
YWx1ZXMsCisgICAgICAgIGludCB0aHJlc2hvbGRCZWdpbklkLAorICAgICAgICBsb25nIGxvbmcg
dGhyZXNob2xkLAorICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKSB7IHJldHVybiAtMTsgfQor
ICAgIC8vIE1hbmdsZSBwb2ludGVyIHdpdGggYSBoYXNoIHNvIHRoYXQgaWYgaXQgb2NjdXJzIG9u
IG1vcmUgdGhhbiBvbmUgcHJvY2VzcywKKyAgICAvLyBpdCB3aWxsIG5vdCBjb2xsaWRlIGluIHRo
ZSB0cmFjZSBkYXRhLiBQYXNzIHRoZSByZXR1cm5lZCB2YWx1ZSB0bworICAgIC8vIGFkZFRyYWNl
RXZlbnQgYXMgdGhlIGlkIHBhcmFtZXRlci4KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBtYW5nbGVQb2ludGVyRm9yVHJhY2luZyh2b2lkKiBwb2ludGVyKSB7IHJldHVybiAwdTsgfQog
CiAgICAgLy8gQ2FsbGJhY2tzIGZvciByZXBvcnRpbmcgaGlzdG9ncmFtIGRhdGEuCiAgICAgLy8g
Q3VzdG9tQ291bnRzIGhpc3RvZ3JhbSBoYXMgZXhwb25lbnRpYWwgYnVja2V0IHNpemVzLCBzbyB0
aGF0IG1pbj0xLCBtYXg9MTAwMDAwMCwgYnVja2V0Q291bnQ9NTAgd291bGQgZG8uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCAyNDY4MWVj
OTYyZDc0ZWJmZWI1YWIzMzU1YzE5MDNhZmQ5ZTllY2Q2Li42MDRjMjAwY2ZhNzU4YThjYTFkMzNh
ZGFlODJkM2UzZjhjYWEyOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9QbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Bs
YXRmb3JtU3VwcG9ydC5jcHAKQEAgLTk0NywxOSArOTQ3LDI4IEBAIHZvaWQgUGxhdGZvcm1TdXBw
b3J0OjpwYWludFRoZW1lUGFydCgKIAogLy8gVHJhY2UgRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1ib29sIFBs
YXRmb3JtU3VwcG9ydDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgpCitjb25zdCB1bnNpZ25lZCBjaGFy
KiBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhjb25zdCBjaGFy
KiBjYXRlZ29yeU5hbWUpCiB7Ci0gICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5p
c1RyYWNlRXZlbnRFbmFibGVkKCk7CisgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgp
LT5nZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY2F0ZWdvcnlOYW1lKTsKIH0KLQotdm9pZCBQ
bGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBp
ZCwgY29uc3QgY2hhciogZXh0cmEpCitpbnQgUGxhdGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50
KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZEZsYWcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IG51bUFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnVHlwZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnVmFsdWVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncykKIHsK
LSAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlkLCBl
eHRyYSk7CisgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5hZGRUcmFjZUV2ZW50
KAorICAgICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkRmxhZywgbmFtZSwgaWQsIG51bUFyZ3Ms
IGFyZ05hbWVzLCBhcmdUeXBlcywgYXJnVmFsdWVzLCAgdGhyZXNob2xkQmVnaW5JZCwgdGhyZXNo
b2xkLCBmbGFncyk7CiB9Ci0KLXZvaWQgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKGNv
bnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkKK3Vuc2lnbmVkIGxv
bmcgbG9uZyBtYW5nbGVQb2ludGVyRm9yVHJhY2luZyh2b2lkKiBwb2ludGVyKQogewotICAgIHdl
YktpdFBsYXRmb3JtU3VwcG9ydCgpLT50cmFjZUV2ZW50RW5kKG5hbWUsIGlkLCBleHRyYSk7Cisg
ICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5tYW5nbGVQb2ludGVyRm9yVHJhY2lu
Zyhwb2ludGVyKTsKIH0KIAogLy8gVmlzaXRlZCBMaW5rcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124221</attachid>
            <date>2012-01-26 17:21:22 -0800</date>
            <delta_ts>2012-01-26 17:35:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120126172121.patch</filename>
            <type>text/plain</type>
            <size>54025</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYyZTljYThiODg0NWU5
NDkwZGRjOTdlYzMzY2EzZWNlN2ExZGZlMy4uNmEyOGVkMDA5YWRhMmE4OGM1ZjY0YjIzZWRlMDI0
ZmFhZWViMzk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmV2YWx1YXRlKTogUmVwbGFj
ZSBvbGQgdHJhY2luZyBBUEkuCisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6OnRpbWUpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnNvbGU6OnRpbWVFbmQpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZUlEOjpUcmFjZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6
OlRyYWNlSUQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VTdHJp
bmdXaXRoQ29weTo6VHJhY2VTdHJpbmdXaXRoQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZVN0cmluZ1dpdGhDb3B5OjpvcGVyYXRvciBjb25zdCBjaGFyKiApOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6c2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNl
RXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpUcmFjZUVuZE9uU2NvcGVDbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5k
T25TY29wZUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25T
Y29wZUNsb3NlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRy
YWNlRW5kT25TY29wZUNsb3NlOjphZGRFdmVudElmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6VHJhY2VFbmRPblNj
b3BlQ2xvc2VUaHJlc2hvbGQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VF
bmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6On5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVz
aG9sZDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVu
ZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6YWRkRXZlbnRJZkVuYWJsZWQpOgorCiAyMDEyLTAxLTI1
ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bm5lY2Vzc2FyeSBtZW1iZXIgdmFyaWFibGUgZnJvbSBQbHVnaW5WaWV3LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2ZGMwMGNkOWIzYjM4MDg5ZGM1MTU5M2VmNjU2NzQ5
ZTRiY2E4MTQ0Li43MGRiNTBhMWJiMmM3MmIwMmU5MzA5M2QyNGE1Mjc3NWZiZjgzOWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRm
b3JtU3VwcG9ydDo6Z2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKiBzcmMv
UGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6
Z2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3VwcG9ydDo6YWRkVHJhY2VFdmVudCk6CisKIDIwMTItMDEtMjQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjaHJvbWl1bSB0ZXN0
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggNDdkYjE1YzVh
MTRkMWQ5YTlmYThkMTFhZDk2NWQ1MzVlMWVhNjdmYS4uOGYzYmFlMjY1NzRjMzExMWJkYzdjNDMy
M2Q1NzQ4NzFjZDE4N2FiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAK
QEAgLTcxLDYgKzcxLDEwIEBACiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNs
dWRlICJUcmFjZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgVjhFeHRlbnNpb25zJiBzdGF0aWNFeHRlbnNpb25zTGlzdCgpCkBAIC0zMzUsNyArMzM5LDcg
QEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlLCBOb2RlKiBub2QKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgc2NyaXB0
LgogICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gY29kZSA9IHY4RXh0ZXJuYWxTdHJpbmco
c291cmNlLnNvdXJjZSgpKTsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICAgICAgUGxhdGZv
cm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4oInY4LmNvbXBpbGUiLCBub2RlLCAiIik7CisgICAg
ICAgIFRSQUNFX0VWRU5UX0JFR0lOMSgidjgiLCAidjguY29tcGlsZSIsICJ1cmwiLCBzb3VyY2Uu
dXJsKCkuc3RyaW5nKCkuYXNjaWkoKSk7CiAjZW5kaWYKICAgICAgICAgT3duUHRyPHY4OjpTY3Jp
cHREYXRhPiBzY3JpcHREYXRhID0gcHJlY29tcGlsZVNjcmlwdChjb2RlLCBzb3VyY2UuY2FjaGVk
U2NyaXB0KCkpOwogCkBAIC0zNDMsMTUgKzM0NywxMSBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBW
OFByb3h5OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2UsIE5vZGUqIG5v
ZAogICAgICAgICAvLyAxLCB3aGVyZWFzIHY4IHN0YXJ0cyBhdCAwLgogICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IGNvbXBpbGVTY3JpcHQoY29kZSwgc291cmNlLnVybCgp
LCBzb3VyY2Uuc3RhcnRQb3NpdGlvbigpLCBzY3JpcHREYXRhLmdldCgpKTsKICNpZiBQTEFURk9S
TShDSFJPTUlVTSkKLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKCJ2OC5j
b21waWxlIiwgbm9kZSwgIiIpOwotCi0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVu
dEJlZ2luKCJ2OC5ydW4iLCBub2RlLCAiIik7CisgICAgICAgIFRSQUNFX0VWRU5UX0VORDAoInY4
IiwgInY4LmNvbXBpbGUiKTsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJ2OCIsICJ2OC5ydW4iKTsK
ICNlbmRpZgogICAgICAgICByZXN1bHQgPSBydW5TY3JpcHQoc2NyaXB0KTsKICAgICB9Ci0jaWYg
UExBVEZPUk0oQ0hST01JVU0pCi0gICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKCJ2
OC5ydW4iLCBub2RlLCAiIik7Ci0jZW5kaWYKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29va2llKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5k
ZXggMjRlMTNhNWZkYmE1MzAxYmI3NTI5NGNlMzQwYjVhMGZlYWQyNDllNi4uNTE1YWIzNGQ3YTA2
ZDRhYzIyYjUzZjRjZjhkOWY4NGFmMWM1Zjc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBA
IC0yOTksMTYgKzI5OSwxNCBAQCB2b2lkIENvbnNvbGU6OnRpbWUoY29uc3QgU3RyaW5nJiB0aXRs
ZSkKIHsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyhw
YWdlKCksIHRpdGxlKTsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICBpZiAoUGxhdGZvcm1T
dXBwb3J0Ojppc1RyYWNlRXZlbnRFbmFibGVkKCkpCi0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6
dHJhY2VFdmVudEJlZ2luKHRpdGxlLnV0ZjgoKS5kYXRhKCksIDAsIDApOworICAgIFRSQUNFX0VW
RU5UX0NPUFlfQkVHSU4wKCJ3ZWJraXQiLCB0aXRsZS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgog
fQogCiB2b2lkIENvbnNvbGU6OnRpbWVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0
cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KQogewogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgIGlmIChQbGF0Zm9ybVN1cHBvcnQ6Omlz
VHJhY2VFdmVudEVuYWJsZWQoKSkKLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50
RW5kKHRpdGxlLnV0ZjgoKS5kYXRhKCksIDAsIDApOworICAgIFRSQUNFX0VWRU5UX0NPUFlfRU5E
MCgid2Via2l0IiwgdGl0bGUudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKHBhZ2UoKSwgdGl0bGUsIGNhbGxTdGFj
ayk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oCmluZGV4IGM4ZGVkNmUyNmJhNzg0YzZlMTYzNzQxZDY2MjhlODU5MzljMzZhNmUu
LmFlZDY3YzcxZTY1NTU5YzE4ZTVjZWVjODZmYmUxZThiMmY1NWM0YWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC00MTYs
OSArNDE2LDE4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gVHJhY2UgRXZlbnQgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBz
dGF0aWMgYm9vbCBpc1RyYWNlRXZlbnRFbmFibGVkKCk7Ci0gICAgc3RhdGljIHZvaWQgdHJhY2VF
dmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqLCBjb25zdCBjaGFyKiBleHRyYSk7Ci0g
ICAgc3RhdGljIHZvaWQgdHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiwgY29u
c3QgY2hhciogZXh0cmEpOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyKiBnZXRUcmFj
ZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKTsKKyAgICBzdGF0
aWMgaW50IGFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkRmxhZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbnVtQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhcioqIGFyZ05hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBhcmdUeXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBsb25nKiBhcmdWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCB0aHJlc2hvbGRCZWdpbklkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b25nIGxvbmcgdGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIGZsYWdzKTsKIAogICAgIC8vIFZpc2l0ZWQgbGlua3MgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgc3RhdGljIExpbmtIYXNo
IHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciogdXJsLCB1bnNpZ25lZCBsZW5ndGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCmluZGV4IDY1MmY1
NDA3Y2EzZjU3NTE0Y2ZhYTNkNmE4YmRkMDY4MjU3Yjk2OTkuLmYyYTJjYzE2ZWVjM2M4ZDFmYWYy
MzViZDFlZTVlZTczOGYxMTcxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1RyYWNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9UcmFjZUV2ZW50LmgKQEAgLTIyLDUzICsyMiw4NDMgQEAKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLworCisvLyBUcmFjZSBldmVudHMgYXJlIGZvciB0cmFja2luZyBh
cHBsaWNhdGlvbiBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXNhZ2UuCisvLyBNYWNyb3MgYXJl
IHByb3ZpZGVkIHRvIHRyYWNrOgorLy8gICAgQmVnaW4gYW5kIGVuZCBvZiBmdW5jdGlvbiBjYWxs
cworLy8gICAgQ291bnRlcnMKKy8vCisvLyBFdmVudHMgYXJlIGlzc3VlZCBhZ2FpbnN0IGNhdGVn
b3JpZXMuIFdoZXJlYXMgTE9HJ3MKKy8vIGNhdGVnb3JpZXMgYXJlIHN0YXRpY2FsbHkgZGVmaW5l
ZCwgVFJBQ0UgY2F0ZWdvcmllcyBhcmUgY3JlYXRlZAorLy8gaW1wbGljaXRseSB3aXRoIGEgc3Ry
aW5nLiBGb3IgZXhhbXBsZToKKy8vICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIk1ZX1NVQlNZU1RF
TSIsICJTb21lSW1wb3J0YW50RXZlbnQiKQorLy8KKy8vIEV2ZW50cyBjYW4gYmUgSU5TVEFOVCwg
b3IgY2FuIGJlIHBhaXJzIG9mIEJFR0lOIGFuZCBFTkQgaW4gdGhlIHNhbWUgc2NvcGU6CisvLyAg
IFRSQUNFX0VWRU5UX0JFR0lOMCgiTVlfU1VCU1lTVEVNIiwgIlNvbWV0aGluZ0Nvc3RseSIpCisv
LyAgIGRvU29tZXRoaW5nQ29zdGx5KCkKKy8vICAgVFJBQ0VfRVZFTlRfRU5EMCgiTVlfU1VCU1lT
VEVNIiwgIlNvbWV0aGluZ0Nvc3RseSIpCisvLyBOb3RlOiBvdXIgdG9vbHMgY2FuJ3QgYWx3YXlz
IGRldGVybWluZSB0aGUgY29ycmVjdCBCRUdJTi9FTkQgcGFpcnMgdW5sZXNzCisvLyB0aGVzZSBh
cmUgdXNlZCBpbiB0aGUgc2FtZSBzY29wZS4gVXNlIFNUQVJUL0ZJTklTSCBtYWNyb3MgaWYgeW91
IG5lZWQgdGhlbQorLy8gdG8gYmUgaW4gc2VwYXJhdGUgc2NvcGVzLgorLy8KKy8vIEEgY29tbW9u
IHVzZSBjYXNlIGlzIHRvIHRyYWNlIGVudGlyZSBmdW5jdGlvbiBzY29wZXMuIFRoaXMKKy8vIGlz
c3VlcyBhIHRyYWNlIEJFR0lOIGFuZCBFTkQgYXV0b21hdGljYWxseToKKy8vICAgdm9pZCBkb1Nv
bWV0aGluZ0Nvc3RseSgpIHsKKy8vICAgICBUUkFDRV9FVkVOVDAoIk1ZX1NVQlNZU1RFTSIsICJk
b1NvbWV0aGluZ0Nvc3RseSIpOworLy8gICAgIC4uLgorLy8gICB9CisvLworLy8gQWRkaXRpb25h
bCBwYXJhbWV0ZXJzIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYW4gZXZlbnQ6CisvLyAgIHZvaWQg
ZG9Tb21ldGhpbmdDb3N0bHkyKGludCBob3dNdWNoKSB7CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJN
WV9TVUJTWVNURU0iLCAiZG9Tb21ldGhpbmdDb3N0bHkiLAorLy8gICAgICAgICAiaG93TXVjaCIs
IGhvd011Y2gpOworLy8gICAgIC4uLgorLy8gICB9CisvLworLy8gVGhlIHRyYWNlIHN5c3RlbSB3
aWxsIGF1dG9tYXRpY2FsbHkgYWRkIHRvIHRoaXMgaW5mb3JtYXRpb24gdGhlCisvLyBjdXJyZW50
IHByb2Nlc3MgaWQsIHRocmVhZCBpZCwgYW5kIGEgdGltZXN0YW1wIGluIG1pY3Jvc2Vjb25kcy4K
Ky8vCisvLyBUbyB0cmFjZSBhbiBhc3luY2hyb25vdXMgcHJvY2VkdXJlIHN1Y2ggYXMgYW4gSVBD
IHNlbmQvcmVjZWl2ZSwgdXNlIFNUQVJUIGFuZAorLy8gRklOSVNIOgorLy8gICBbc2luZ2xlIHRo
cmVhZGVkIHNlbmRlciBjb2RlXQorLy8gICAgIHN0YXRpYyBpbnQgc2VuZF9jb3VudCA9IDA7Cisv
LyAgICAgKytzZW5kX2NvdW50OworLy8gICAgIFRSQUNFX0VWRU5UX1NUQVJUMCgiaXBjIiwgIm1l
c3NhZ2UiLCBzZW5kX2NvdW50KTsKKy8vICAgICBTZW5kKG5ldyBNeU1lc3NhZ2Uoc2VuZF9jb3Vu
dCkpOworLy8gICBbcmVjZWl2ZSBjb2RlXQorLy8gICAgIHZvaWQgT25NeU1lc3NhZ2Uoc2VuZF9j
b3VudCkgeworLy8gICAgICAgVFJBQ0VfRVZFTlRfRklOSVNIMCgiaXBjIiwgIm1lc3NhZ2UiLCBz
ZW5kX2NvdW50KTsKKy8vICAgICB9CisvLyBUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIGEgdW5pcXVl
IElEIHRvIG1hdGNoIFNUQVJUL0ZJTklTSCBwYWlycy4KKy8vIFNUQVJUIGFuZCBGSU5JU0ggY2Fu
IG9jY3VyIG9uIGFueSB0aHJlYWQgb2YgYW55IHRyYWNlZCBwcm9jZXNzLiBQb2ludGVycyBjYW4K
Ky8vIGJlIHVzZWQgZm9yIHRoZSBJRCBwYXJhbWV0ZXIsIGFuZCB0aGV5IHdpbGwgYmUgbWFuZ2xl
ZCBpbnRlcm5hbGx5IHNvIHRoYXQKKy8vIHRoZSBzYW1lIHBvaW50ZXIgb24gdHdvIGRpZmZlcmVu
dCBwcm9jZXNzZXMgd2lsbCBub3QgbWF0Y2guIEZvciBleGFtcGxlOgorLy8gICBjbGFzcyBNeVRy
YWNlZENsYXNzIHsKKy8vICAgIHB1YmxpYzoKKy8vICAgICBNeVRyYWNlZENsYXNzKCkgeworLy8g
ICAgICAgVFJBQ0VfRVZFTlRfU1RBUlQwKCJjYXRlZ29yeSIsICJNeVRyYWNlZENsYXNzIiwgdGhp
cyk7CisvLyAgICAgfQorLy8gICAgIH5NeVRyYWNlZENsYXNzKCkgeworLy8gICAgICAgVFJBQ0Vf
RVZFTlRfRklOSVNIMCgiY2F0ZWdvcnkiLCAiTXlUcmFjZWRDbGFzcyIsIHRoaXMpOworLy8gICAg
IH0KKy8vICAgfQorLy8KKy8vIFRyYWNlIGV2ZW50IGFsc28gc3VwcG9ydHMgY291bnRlcnMsIHdo
aWNoIGlzIGEgd2F5IHRvIHRyYWNrIGEgcXVhbnRpdHkKKy8vIGFzIGl0IHZhcmllcyBvdmVyIHRp
bWUuIENvdW50ZXJzIGFyZSBjcmVhdGVkIHdpdGggdGhlIGZvbGxvd2luZyBtYWNybzoKKy8vICAg
VFJBQ0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIiLCBnX215Q291bnRlclZh
bHVlKTsKKy8vCisvLyBDb3VudGVycyBhcmUgcHJvY2Vzcy1zcGVjaWZpYy4gVGhlIG1hY3JvIGl0
c2VsZiBjYW4gYmUgaXNzdWVkIGZyb20gYW55CisvLyB0aHJlYWQsIGhvd2V2ZXIuCisvLworLy8g
U29tZXRpbWVzLCB5b3Ugd2FudCB0byB0cmFjayB0d28gY291bnRlcnMgYXQgb25jZS4gWW91IGNh
biBkbyB0aGlzIHdpdGggdHdvCisvLyBjb3VudGVyIG1hY3JvczoKKy8vICAgVFJBQ0VfQ09VTlRF
UjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIwIiwgZ19teUNvdW50ZXJWYWx1ZVswXSk7Cisv
LyAgIFRSQUNFX0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVyMSIsIGdfbXlDb3Vu
dGVyVmFsdWVbMV0pOworLy8gT3IgeW91IGNhbiBkbyBpdCB3aXRoIGEgY29tYmluZWQgbWFjcm86
CisvLyAgIFRSQUNFX0NPVU5URVIyKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVyIiwKKy8vICAg
ICAgICJieXRlc1Bpbm5lZCIsIGdfbXlDb3VudGVyVmFsdWVbMF0sCisvLyAgICAgICAiYnl0ZXNB
bGxvY2F0ZWQiLCBnX215Q291bnRlclZhbHVlWzFdKTsKKy8vIFRoaXMgaW5kaWNhdGVzIHRvIHRo
ZSB0cmFjaW5nIFVJIHRoYXQgdGhlc2UgY291bnRlcnMgc2hvdWxkIGJlIGRpc3BsYXllZAorLy8g
aW4gYSBzaW5nbGUgZ3JhcGgsIGFzIGEgc3VtbWVkIGFyZWEgY2hhcnQuCisvLworLy8gU2luY2Ug
Y291bnRlcnMgYXJlIGluIGEgZ2xvYmFsIG5hbWVzcGFjZSwgeW91IG1heSB3YW50IHRvIGRpc2Vt
YmlndWF0ZSB3aXRoIGEKKy8vIHVuaXF1ZSBJRCwgYnkgdXNpbmcgdGhlIFRSQUNFX0NPVU5URVJf
SUQqIHZhcmlhdGlvbnMuCisvLworLy8gQnkgZGVmYXVsdCwgdHJhY2UgY29sbGVjdGlvbiBpcyBj
b21waWxlZCBpbiwgYnV0IHR1cm5lZCBvZmYgYXQgcnVudGltZS4KKy8vIENvbGxlY3RpbmcgdHJh
Y2UgZGF0YSBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGVtYmVkZGluZworLy8gYXBwbGlj
YXRpb24uIEluIENocm9tZSdzIGNhc2UsIG5hdmlnYXRpbmcgdG8gYWJvdXQ6dHJhY2luZyB3aWxs
IHR1cm4gb24KKy8vIHRyYWNpbmcgYW5kIGRpc3BsYXkgZGF0YSBjb2xsZWN0ZWQgYWNyb3NzIGFs
bCBhY3RpdmUgcHJvY2Vzc2VzLgorLy8KKy8vCisvLyBNZW1vcnkgc2NvcGluZyBub3RlOgorLy8g
VHJhY2luZyBjb3BpZXMgdGhlIHBvaW50ZXJzLCBub3QgdGhlIHN0cmluZyBjb250ZW50LCBvZiB0
aGUgc3RyaW5ncyBwYXNzZWQKKy8vIGluIGZvciBjYXRlZ29yeSwgbmFtZSwgYW5kIGFyZ19uYW1l
cy4gVGh1cywgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwKKy8vIGNhdXNlIHByb2JsZW1zOgorLy8g
ICAgIGNoYXIqIHN0ciA9IHN0cmR1cCgiaW1wcHJ0YW50TmFtZSIpOworLy8gICAgIFRSQUNFX0VW
RU5UX0lOU1RBTlQwKCJTVUJTWVNURU0iLCBzdHIpOyAgLy8gQkFEIQorLy8gICAgIGZyZWUoc3Ry
KTsgICAgICAgICAgICAgICAgICAgLy8gVHJhY2Ugc3lzdGVtIG5vdyBoYXMgZGFuZ2xpbmcgcG9p
bnRlcgorLy8KKy8vIFRvIGF2b2lkIHRoaXMgaXNzdWUgd2l0aCB0aGUgfG5hbWV8IGFuZCB8YXJn
X25hbWV8IHBhcmFtZXRlcnMsIHVzZSB0aGUKKy8vIFRSQUNFX0VWRU5UX0NPUFlfWFhYIG92ZXJs
b2FkcyBvZiB0aGUgbWFjcm9zIGF0IGFkZGl0aW9uYWwgcnVudGltZSBvdmVyaGVhZC4KKy8vIE5v
dGVzOiBUaGUgY2F0ZWdvcnkgbXVzdCBhbHdheXMgYmUgaW4gYSBsb25nLWxpdmVkIGNoYXIqIChp
LmUuIHN0YXRpYyBjb25zdCkuCisvLyAgICAgICAgVGhlIHxhcmdfdmFsdWVzfCwgd2hlbiB1c2Vk
LCBhcmUgYWx3YXlzIGRlZXAgY29waWVkIHdpdGggdGhlIF9DT1BZCisvLyAgICAgICAgbWFjcm9z
LgorLy8KKy8vIFdoZW4gYXJlIHN0cmluZyBhcmd1bWVudCB2YWx1ZXMgY29waWVkOgorLy8gY29u
c3QgY2hhciogYXJnX3ZhbHVlcyBhcmUgb25seSByZWZlcmVuY2VkIGJ5IGRlZmF1bHQ6CisvLyAg
ICAgVFJBQ0VfRVZFTlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAg
ImFyZzEiLCAibGl0ZXJhbCBzdHJpbmcgaXMgb25seSByZWZlcmVuY2VkIik7CisvLyBVc2UgVFJB
Q0VfU1RSX0NPUFkgdG8gZm9yY2UgY29weWluZyBvZiBhIGNvbnN0IGNoYXIqOgorLy8gICAgIFRS
QUNFX0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisvLyAgICAgICAgICAgICAgICAgICJhcmcx
IiwgVFJBQ0VfU1RSX0NPUFkoInN0cmluZyB3aWxsIGJlIGNvcGllZCIpKTsKKy8vIHN0ZDo6c3Ry
aW5nIGFyZ192YWx1ZXMgYXJlIGFsd2F5cyBjb3BpZWQ6CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJj
YXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAgImFyZzEiLCBzdGQ6OnN0cmlu
Zygic3RyaW5nIHdpbGwgYmUgY29waWVkIikpOworLy8KKy8vCisvLyBUaHJlYWQgU2FmZXR5Ogor
Ly8gQSB0aHJlYWQgc2FmZSBzaW5nbGV0b24gYW5kIG11dGV4IGFyZSB1c2VkIGZvciB0aHJlYWQg
c2FmZXR5LiBDYXRlZ29yeQorLy8gZW5hYmxlZCBmbGFncyBhcmUgdXNlZCB0byBsaW1pdCB0aGUg
cGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gdGhlIHN5c3RlbQorLy8gaXMgbm90IGVuYWJsZWQuCisv
LworLy8gVFJBQ0VfRVZFTlQgbWFjcm9zIGZpcnN0IGNhY2hlIGEgcG9pbnRlciB0byBhIGNhdGVn
b3J5LiBUaGUgY2F0ZWdvcmllcyBhcmUKKy8vIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGFuZCBzYWZl
IGF0IGFsbCB0aW1lcywgZXZlbiBhZnRlciBleGl0LiBGZXRjaGluZyBhCisvLyBjYXRlZ29yeSBp
cyBwcm90ZWN0ZWQgYnkgdGhlIFRyYWNlTG9nOjpsb2NrXy4gTXVsdGlwbGUgdGhyZWFkcyBpbml0
aWFsaXppbmcKKy8vIHRoZSBzdGF0aWMgdmFyaWFibGUgaXMgc2FmZSwgYXMgdGhleSB3aWxsIGJl
IHNlcmlhbGl6ZWQgYnkgdGhlIGxvY2sgYW5kCisvLyBtdWx0aXBsZSBjYWxscyB3aWxsIHJldHVy
biB0aGUgc2FtZSBwb2ludGVyIHRvIHRoZSBjYXRlZ29yeS4KKy8vCisvLyBUaGVuIHRoZSBjYXRl
Z29yeV9lbmFibGVkIGZsYWcgaXMgY2hlY2tlZC4gVGhpcyBpcyBhIHVuc2lnbmVkIGNoYXIsIGFu
ZAorLy8gbm90IGludGVuZGVkIHRvIGJlIG11bHRpdGhyZWFkIHNhZmUuIEl0IG9wdGltaXplcyBh
Y2Nlc3MgdG8gYWRkVHJhY2VFdmVudAorLy8gd2hpY2ggaXMgdGhyZWFkc2FmZSBpbnRlcm5hbGx5
IHZpYSBUcmFjZUxvZzo6bG9ja18uIFRoZSBlbmFibGVkIGZsYWcgbWF5CisvLyBjYXVzZSBzb21l
IHRocmVhZHMgdG8gaW5jb3JyZWN0bHkgY2FsbCBvciBza2lwIGNhbGxpbmcgYWRkVHJhY2VFdmVu
dCBuZWFyCisvLyB0aGUgdGltZSBvZiB0aGUgc3lzdGVtIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJs
ZWQuIFRoaXMgaXMgYWNjZXB0YWJsZSBhcworLy8gd2UgdG9sZXJhdGUgc29tZSBkYXRhIGxvc3Mg
d2hpbGUgdGhlIHN5c3RlbSBpcyBiZWluZyBlbmFibGVkL2Rpc2FibGVkIGFuZAorLy8gYmVjYXVz
ZSBhZGRUcmFjZUV2ZW50IGlzIHRocmVhZHNhZmUgaW50ZXJuYWxseSBhbmQgY2hlY2tzIHRoZSBl
bmFibGVkIHN0YXRlCisvLyBhZ2FpbiB1bmRlciBsb2NrLgorLy8KKy8vIFdpdGhvdXQgdGhlIHVz
ZSBvZiB0aGVzZSBzdGF0aWMgY2F0ZWdvcnkgcG9pbnRlcnMgYW5kIGVuYWJsZWQgZmxhZ3MgYWxs
CisvLyB0cmFjZSBwb2ludHMgd291bGQgY2FycnkgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBj
b3N0IG9mIGFxdWlyaW5nIGEgbG9jaworLy8gYW5kIHJlc29sdmluZyB0aGUgY2F0ZWdvcnkuCisK
ICNpZm5kZWYgVHJhY2VFdmVudF9oCiAjZGVmaW5lIFRyYWNlRXZlbnRfaAogCisjaW5jbHVkZSAi
RHluYW1pY0Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCi0jaW5j
bHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisKKy8vIElzc3VlcyBiZWdpbiB0cmFjZSBldmVudCBoZXJlIGFuZCBlbmQgdHJhY2UgZXZlbnQg
d2hlbiB0aGUgY3VycmVudCBzY29wZSBlbmRzLgorI2RlZmluZSBUUkFDRV9FVkVOVChuYW1lLCBp
ZCwgZXh0cmEpIFRSQUNFX0VWRU5UMigid2Via2l0IiwgbmFtZSwgImlkIiwgaWQsICJleHRyYSIs
IGV4dHJhKQorCisvLyBCeSBkZWZhdWx0LCBjb25zdCBjaGFyKiBhcmd1bWVudCB2YWx1ZXMgYXJl
IGFzc3VtZWQgdG8gaGF2ZSBsb25nLWxpdmVkIHNjb3BlCisvLyBhbmQgd2lsbCBub3QgYmUgY29w
aWVkLiBVc2UgdGhpcyBtYWNybyB0byBmb3JjZSBhIGNvbnN0IGNoYXIqIHRvIGJlIGNvcGllZC4K
KyNkZWZpbmUgVFJBQ0VfU1RSX0NPUFkoc3RyKSBcCisgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6
VHJhY2VTdHJpbmdXaXRoQ29weShzdHIpCisKKy8vIFJlY29yZHMgYSBwYWlyIG9mIGJlZ2luIGFu
ZCBlbmQgZXZlbnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50CisvLyBzY29wZSwgd2l0
aCAwLCAxIG9yIDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QK
Ky8vIGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBu
YW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisv
LyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJB
Q0VfRVZFTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1NDT1BFRChjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlQxKGNhdGVnb3J5LCBu
YW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUs
IGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChjYXRlZ29y
eSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJf
dmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIGV2ZW50IGNhbGxlZCAibmFtZSIgaW1tZWRpYXRl
bHksIHdpdGggMCwgMSBvciAyCisvLyBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhlIGNhdGVn
b3J5IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMKKy8vIGRvZXMgbm90aGluZy4KKy8vIC0gY2F0
ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0
YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgor
I2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0lOU1RBTlQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBh
cmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoY2F0ZWdvcnksIG5hbWUsIGFy
ZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisg
ICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwg
YXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfQ09QWV9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlf
SU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAorICAgICAg
ICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFf
dmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQyKGNhdGVnb3J5LCBuYW1lLCBh
cmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAg
ICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAor
ICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUs
IGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMg
YSBzaW5nbGUgQkVHSU4gZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseSwgd2l0aCAwLCAx
IG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdvcnkgaXMgbm90IGVu
YWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFt
ZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8g
ICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNF
X0VWRU5UX0JFR0lOMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERChUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwg
VFJBQ0VfRVZFTlRfRkxBR19OT05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9CRUdJTjEoY2F0ZWdv
cnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfQkVHSU4yKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisg
ICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9B
REQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRS
QUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcy
X25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0JFR0lOMChjYXRlZ29y
eSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFT
RV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZ
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0JFR0lOMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9u
YW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVO
VF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxB
R19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0JF
R0lOMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcy
X25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VW
RU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9G
TEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcy
X3ZhbCkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBFTkQgZXZlbnQgZm9yICJuYW1lIiBpbW1lZGlh
dGVseS4gSWYgdGhlIGNhdGVnb3J5CisvLyBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzIGRvZXMg
bm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGlj
YXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3Qg
aW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9FTkQwKGNhdGVnb3J5LCBuYW1l
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FKQorI2RlZmlu
ZSBUUkFDRV9FVkVOVF9FTkQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAor
ICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUs
IGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9FTkQyKGNhdGVnb3J5LCBuYW1lLCBhcmcx
X25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
Q09QWV9FTkQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
KFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0Vf
RVZFTlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0VORDEoY2F0ZWdvcnks
IG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9B
REQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFD
RV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0NPUFlfRU5EMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAg
ICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
KFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0Vf
RVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFt
ZSwgYXJnMl92YWwpCisKKy8vIFRpbWUgdGhyZXNob2xkIGV2ZW50OgorLy8gT25seSByZWNvcmQg
dGhlIGV2ZW50IGlmIHRoZSBkdXJhdGlvbiBpcyBncmVhdGVyIHRoYW4gdGhlIHNwZWNpZmllZAor
Ly8gdGhyZXNob2xkX3VzICh0aW1lIGluIG1pY3Jvc2Vjb25kcykuCisvLyBSZWNvcmRzIGEgcGFp
ciBvZiBiZWdpbiBhbmQgZW5kIGV2ZW50cyBjYWxsZWQgIm5hbWUiIGZvciB0aGUgY3VycmVudAor
Ly8gc2NvcGUsIHdpdGggMCwgMSBvciAyIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0
ZWdvcnkgaXMgbm90CisvLyBlbmFibGVkLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nLgorLy8gLSBj
YXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAo
c3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMu
CisjZGVmaW5lIFRSQUNFX0VWRU5UX0lGX0xPTkdFUl9USEFOMCh0aHJlc2hvbGRfdXMsIGNhdGVn
b3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9JRl9MT05H
RVJfVEhBTih0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9JRl9MT05HRVJfVEhBTjEoIFwKKyAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lLCBh
cmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BF
RF9JRl9MT05HRVJfVEhBTiggXAorICAgICAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1l
LCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9JRl9MT05HRVJfVEhB
TjIoIFwKKyAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFf
dmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1NDT1BFRF9JRl9MT05HRVJfVEhBTiggXAorICAgICAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5
LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBS
ZWNvcmRzIHRoZSB2YWx1ZSBvZiBhIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4g
VmFsdWUKKy8vIG11c3QgYmUgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCBpbnRlZ2VyLgorLy8g
LSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGlt
ZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hh
cnMuCisjZGVmaW5lIFRSQUNFX0NPVU5URVIxKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZSkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisg
ICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIFwKKyAgICAgICAg
InZhbHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisjZGVmaW5lIFRSQUNFX0NPUFlfQ09V
TlRFUjEoY2F0ZWdvcnksIG5hbWUsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
QUREKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxp
bnQ+KHZhbHVlKSkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWVzIG9mIGEgbXVsdGktcGFydGVkIGNv
dW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4KKy8vIFRoZSBVSSB3aWxsIHRyZWF0IHZh
bHVlMSBhbmQgdmFsdWUyIGFzIHBhcnRzIG9mIGEgd2hvbGUsIGRpc3BsYXlpbmcgdGhlaXIKKy8v
IHZhbHVlcyBhcyBhIHN0YWNrZWQtYmFyIGNoYXJ0LgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBz
dHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBs
aXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNFX0NP
VU5URVIyKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAorICAgICAg
ICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBU
UkFDRV9FVkVOVF9GTEFHX05PTkUsIFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0
PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGlu
dD4odmFsdWUyX3ZhbCkpCisjZGVmaW5lIFRSQUNFX0NPUFlfQ09VTlRFUjIoY2F0ZWdvcnksIG5h
bWUsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCB2YWx1
ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNF
X0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09Q
WSwgXAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwg
XAorICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKwor
Ly8gUmVjb3JkcyB0aGUgdmFsdWUgb2YgYSBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1tZWRpYXRl
bHkuIFZhbHVlCisvLyBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgYSAzMiBiaXQgaW50ZWdlci4K
Ky8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlm
ZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAi
IGNoYXJzLgorLy8gLSB8aWR8IGlzIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGNvdW50ZXJzIHdpdGgg
dGhlIHNhbWUgbmFtZS4gSXQgbXVzdCBlaXRoZXIKKy8vICAgYmUgYSBwb2ludGVyIG9yIGFuIGlu
dGVnZXIgdmFsdWUgdXAgdG8gNjQgYml0cy4gSWYgaXQncyBhIHBvaW50ZXIsIHRoZSBiaXRzCisv
LyAgIHdpbGwgYmUgeG9yZWQgd2l0aCBhIGhhc2ggb2YgdGhlIHByb2Nlc3MgSUQgc28gdGhhdCB0
aGUgc2FtZSBwb2ludGVyIG9uCisvLyAgIHR3byBkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90
IGNvbGxpZGUuCisjZGVmaW5lIFRSQUNFX0NPVU5URVJfSUQxKGNhdGVnb3J5LCBuYW1lLCBpZCwg
dmFsdWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVO
VF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZF
TlRfRkxBR19OT05FLCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUp
KQorI2RlZmluZSBUUkFDRV9DT1BZX0NPVU5URVJfSUQxKGNhdGVnb3J5LCBuYW1lLCBpZCwgdmFs
dWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9Q
SEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRf
RkxBR19DT1BZLCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUpKQor
CisvLyBSZWNvcmRzIHRoZSB2YWx1ZXMgb2YgYSBtdWx0aS1wYXJ0ZWQgY291bnRlciBjYWxsZWQg
Im5hbWUiIGltbWVkaWF0ZWx5LgorLy8gVGhlIFVJIHdpbGwgdHJlYXQgdmFsdWUxIGFuZCB2YWx1
ZTIgYXMgcGFydHMgb2YgYSB3aG9sZSwgZGlzcGxheWluZyB0aGVpcgorLy8gdmFsdWVzIGFzIGEg
c3RhY2tlZC1iYXIgY2hhcnQuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBo
YXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhl
eSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRvIGRpc2FtYmln
dWF0ZSBjb3VudGVycyB3aXRoIHRoZSBzYW1lIG5hbWUuIEl0IG11c3QgZWl0aGVyCisvLyAgIGJl
IGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElmIGl0J3MgYSBw
b2ludGVyLCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNoIG9mIHRoZSBw
cm9jZXNzIElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28gZGlmZmVyZW50
IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSX0lEMihj
YXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZh
bHVlMl9uYW1lLCB2YWx1ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJ
VEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3Rh
dGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGlj
X2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSX0lEMihj
YXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZh
bHVlMl9uYW1lLCB2YWx1ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJ
VEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3Rh
dGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGlj
X2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBTVEFSVCBldmVu
dCBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LCB3aXRoIDAsIDEgb3IgMgorLy8gYXNzb2NpYXRl
ZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzCisv
LyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZl
IGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBt
YXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRvIG1hdGNoIHRoZSBT
VEFSVCBldmVudCB3aXRoIHRoZSBGSU5JU0ggZXZlbnQuIEl0IG11c3QgZWl0aGVyCisvLyAgIGJl
IGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElmIGl0J3MgYSBw
b2ludGVyLCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNoIG9mIHRoZSBw
cm9jZXNzIElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28gZGlmZmVyZW50
IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9FVkVOVF9TVEFSVDAo
Y2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhf
SUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlk
LCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NUQVJUMShjYXRl
Z29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFD
RV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcx
X3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfU1RBUlQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJn
MV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQs
IFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIFwK
KyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfQ09QWV9TVEFSVDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwK
KyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVm
aW5lIFRSQUNFX0VWRU5UX0NPUFlfU1RBUlQxKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1l
LCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNF
X0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0Vf
RVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5l
IFRSQUNFX0VWRU5UX0NPUFlfU1RBUlQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBh
cmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAg
YXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyBh
IHNpbmdsZSBGSU5JU0ggZXZlbnQgZm9yICJuYW1lIiBpbW1lZGlhdGVseS4gSWYgdGhlIGNhdGVn
b3J5CisvLyBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzIGRvZXMgbm90aGluZy4KKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfRklOSVNIMChjYXRlZ29yeSwgbmFtZSwgaWQpIFwKKyAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVmaW5lIFRS
QUNFX0VWRU5UX0ZJTklTSDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFs
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhB
U0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxB
R19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GSU5JU0gy
KGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcy
X25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQo
VFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwg
VFJBQ0VfRVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFy
ZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRklOSVNIMChjYXRl
Z29yeSwgbmFtZSwgaWQpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChU
UkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBU
UkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRklOSVNIMShj
YXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9GSU5JU0gyKGNh
dGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25h
bWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJB
Q0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJB
Q0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJf
bmFtZSwgYXJnMl92YWwpCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBJbXBsZW1lbnRh
dGlvbiBzcGVjaWZpYyB0cmFjaW5nIEFQSSBkZWZpbml0aW9ucy4KKworLy8gR2V0IGEgcG9pbnRl
ciB0byB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgZ2l2ZW4gdHJhY2UgY2F0ZWdvcnkuIE9ubHkK
Ky8vIGxvbmctbGl2ZWQgbGl0ZXJhbCBzdHJpbmdzIHNob3VsZCBiZSBnaXZlbiBhcyB0aGUgY2F0
ZWdvcnkgbmFtZS4gVGhlIHJldHVybmVkCisvLyBwb2ludGVyIGNhbiBiZSBoZWxkIHBlcm1hbmVu
dGx5IGluIGEgbG9jYWwgc3RhdGljIGZvciBleGFtcGxlLiBJZiB0aGUKKy8vIHVuc2lnbmVkIGNo
YXIgaXMgbm9uLXplcm8sIHRyYWNpbmcgaXMgZW5hYmxlZC4gSWYgdHJhY2luZyBpcyBlbmFibGVk
LAorLy8gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCBjYW4gYmUgY2FsbGVkLiBJdCdz
IE9LIGlmIHRyYWNpbmcgaXMgZGlzYWJsZWQKKy8vIGJldHdlZW4gdGhlIGxvYWQgb2YgdGhlIHRy
YWNpbmcgc3RhdGUgYW5kIHRoZSBjYWxsIHRvCisvLyBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNF
X0VWRU5ULCBiZWNhdXNlIHRoaXMgZmxhZyBvbmx5IHByb3ZpZGVzIGFuIGVhcmx5IG91dAorLy8g
Zm9yIGJlc3QgcGVyZm9ybWFuY2Ugd2hlbiB0cmFjaW5nIGlzIGRpc2FibGVkLgorLy8gY29uc3Qg
dW5zaWduZWQgY2hhcioKKy8vICAgICBUUkFDRV9FVkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJM
RUQoY29uc3QgY2hhciogY2F0ZWdvcnlfbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVBJX0dF
VF9DQVRFR09SWV9FTkFCTEVEIFwKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OmdldFRy
YWNlQ2F0ZWdvcnlFbmFibGVkRmxhZworCisvLyBBZGQgYSB0cmFjZSBldmVudCB0byB0aGUgcGxh
dGZvcm0gdHJhY2luZyBzeXN0ZW0uIFJldHVybnMgdGhyZXNob2xkQmVnaW5JZAorLy8gZm9yIHVz
ZSBpbiBhIGNvcnJlc3BvbmRpbmcgZW5kIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQg
Y2FsbC4KKy8vIGludCBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorLy8gICAgICAg
ICAgICAgICAgICAgIGNoYXIgcGhhc2UsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z
aWduZWQgY2hhciogY2F0ZWdvcnlfZW5hYmxlZCwKKy8vICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBuYW1lLAorLy8gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBp
ZCwKKy8vICAgICAgICAgICAgICAgICAgICBpbnQgbnVtX2FyZ3MsCisvLyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhcioqIGFyZ19uYW1lcywKKy8vICAgICAgICAgICAgICAgICAgICBjb25z
dCB1bnNpZ25lZCBjaGFyKiBhcmdfdHlwZXMsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBsb25nKiBhcmdfdmFsdWVzLAorLy8gICAgICAgICAgICAgICAgICAgIGlu
dCB0aHJlc2hvbGRCZWdpbklELAorLy8gICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aHJl
c2hvbGQsCisvLyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncykKKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCBcCisgICAgV2ViQ29yZTo6UGxhdGZv
cm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIC8v
IEltcGxlbWVudGF0aW9uIGRldGFpbDogdHJhY2UgZXZlbnQgbWFjcm9zIGNyZWF0ZSB0ZW1wb3Jh
cnkgdmFyaWFibGVzCiAvLyB0byBrZWVwIGluc3RydW1lbnRhdGlvbiBvdmVyaGVhZCBsb3cuIFRo
ZXNlIG1hY3JvcyBnaXZlIGVhY2ggdGVtcG9yYXJ5CiAvLyB2YXJpYWJsZSBhIHVuaXF1ZSBuYW1l
IGJhc2VkIG9uIHRoZSBsaW5lIG51bWJlciB0byBwcmV2ZW50IG5hbWUgY29sbGlzc2lvbnMuCi0j
ZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIzKGEsIGIpIGEjI2IKLSNk
ZWZpbmUgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUjIoYSwgYikgVFJBQ0VfRVZF
TlRfTUFLRV9VTklRVUVfSURFTlRJRklFUjMoYSwgYikKLSNkZWZpbmUgVFJBQ0VfRVZFTlRfTUFL
RV9VTklRVUVfSURFTlRJRklFUihuYW1lX3ByZWZpeCkgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVf
SURFTlRJRklFUjIobmFtZV9wcmVmaXgsIF9fTElORV9fKQorI2RlZmluZSBJTlRFUk5BTF9UUkFD
RV9FVkVOVF9VSUQzKGEsIGIpIFwKKyAgICB0cmFjZV9ldmVudF91bmlxdWVfIyNhIyNiCisjZGVm
aW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJRDIoYSwgYikgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX1VJRDMoYSwgYikKKyNkZWZpbmUgSU5URVJOQUxUUkFDRUVWRU5UVUlEKG5hbWVfcHJl
Zml4KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMihuYW1lX3ByZWZpeCwgX19MSU5F
X18pCisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRl
IHN0YXRpYyBjYXRlZ29yeS4KKy8vIC0gV1RGX0FOTk9UQVRFX0JFTklHTl9SQUNFLCBzZWUgVGhy
ZWFkIFNhZmV0eSBhYm92ZS4KKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVH
T1JZX0lORk8oY2F0ZWdvcnkpIFwKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciogSU5U
RVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykgPSAwOyBcCisgICAgV1RGX0FOTk9UQVRFX0JF
TklHTl9SQUNFKCZJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidHJhY2VfZXZlbnQgY2F0ZWdvcnkiKTsgXAorICAgIGlmICgh
SU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIFwKKyAgICAgIElOVEVSTkFMVFJBQ0VF
VkVOVFVJRChjYXRzdGF0aWMpID0gXAorICAgICAgICAgIFRSQUNFX0VWRU5UX0FQSV9HRVRfQ0FU
RUdPUllfRU5BQkxFRChjYXRlZ29yeSk7CisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50
ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeSBhbmQgYWRkCisvLyBldmVudCBp
ZiB0aGUgY2F0ZWdvcnkgaXMgZW5hYmxlZC4KKyNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikK
KyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKGlnbm9yZSkgKCh2b2lkKTApCisjZWxz
ZQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQocGhhc2UsIGNhdGVnb3J5LCBuYW1l
LCBmbGFncywgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lO
Rk8oY2F0ZWdvcnkpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGlj
KSkgeyBcCisgICAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KCBcCisgICAg
ICAgICAgcGhhc2UsIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBuYW1lLCBcCisg
ICAgICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6bm9FdmVudElkLCBmbGFncywgIyNfX1ZBX0FS
R1NfXyk7IFwKKyAgICB9CisjZW5kaWYKKworLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBpbnRl
cm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5IGFuZCBhZGQgYmVnaW4KKy8vIGV2
ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLiBBbHNvIGFkZHMgdGhlIGVuZCBldmVudCB3
aGVuIHRoZSBzY29wZQorLy8gZW5kcy4KKyNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikKKyNk
ZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChpZ25vcmUpICgodm9pZCkwKQor
I2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChjYXRlZ29yeSwg
bmFtZSwgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8o
Y2F0ZWdvcnkpOyBcCisgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xv
c2UgXAorICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQocHJvZmlsZVNjb3BlKTsgXAorICAg
IGlmICgqSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAgICAgV2ViQ29y
ZTo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAgICAgICAgIFRSQUNFX0VWRU5UX1BI
QVNFX0JFR0lOLCBcCisgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyks
IFwKKyAgICAgICAgICBuYW1lLCBXZWJDb3JlOjpUcmFjZUV2ZW50Ojpub0V2ZW50SWQsIFwKKyAg
ICAgICAgICBUUkFDRV9FVkVOVF9GTEFHX05PTkUsICMjX19WQV9BUkdTX18pOyBcCisgICAgICBJ
TlRFUk5BTFRSQUNFRVZFTlRVSUQocHJvZmlsZVNjb3BlKS5pbml0aWFsaXplKCBcCisgICAgICAg
ICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIG5hbWUpOyBcCisgICAgfQorI2Vu
ZGlmCisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRl
IHN0YXRpYyBjYXRlZ29yeSBhbmQgYWRkIGJlZ2luCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkg
aXMgZW5hYmxlZC4gQWxzbyBhZGRzIHRoZSBlbmQgZXZlbnQgd2hlbiB0aGUgc2NvcGUKKy8vIGVu
ZHMuIElmIHRoZSBlbGFwc2VkIHRpbWUgaXMgPCB0aHJlc2hvbGQgdGltZSwgdGhlIGJlZ2luL2Vu
ZCBwYWlyIGlzIGVyYXNlZC4KKyNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikKKyNkZWZpbmUg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9JRl9MT05HRVJfVEhBTihpZ25vcmUpICgo
dm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9J
Rl9MT05HRVJfVEhBTih0aHJlc2hvbGQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIC4uLikg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsg
XAorICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xk
IFwKKyAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSk7IFwKKyAgICBp
ZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7IFwKKyAgICAgIGludCBJTlRF
Uk5BTFRSQUNFRVZFTlRVSUQoYmVnaW5fZXZlbnRfaWQpID0gXAorICAgICAgICBXZWJDb3JlOjpU
cmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KCBcCisgICAgICAgICAgICBUUkFDRV9FVkVOVF9QSEFT
RV9CRUdJTiwgXAorICAgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyks
IFwKKyAgICAgICAgICAgIG5hbWUsIFdlYkNvcmU6OlRyYWNlRXZlbnQ6Om5vRXZlbnRJZCwgXAor
ICAgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCAjI19fVkFfQVJHU19fKTsgXAorICAg
ICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSkuaW5pdGlhbGl6ZSggXAorICAg
ICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBuYW1lLCBcCisgICAgICAg
ICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGJlZ2luX2V2ZW50X2lkKSwgdGhyZXNob2xkKTsgXAor
ICAgIH0KKyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1hY3Jv
IHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZAorLy8gZXZlbnQgaWYgdGhlIGNhdGVn
b3J5IGlzIGVuYWJsZWQuCisjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKGlnbm9yZSkgKCh2b2lkKTApCisjZWxzZQor
I2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChwaGFzZSwgY2F0ZWdvcnks
IG5hbWUsIGlkLCBmbGFncywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdPUllfSU5GTyhj
YXRlZ29yeSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7
IFwKKyAgICAgIHVuc2lnbmVkIGNoYXIgdHJhY2VFdmVudEZsYWdzID0gZmxhZ3MgfCBUUkFDRV9F
VkVOVF9GTEFHX0hBU19JRDsgXAorICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VJRCB0
cmFjZUV2ZW50VHJhY2VJRCggXAorICAgICAgICAgIGlkLCAmdHJhY2VFdmVudEZsYWdzKTsgXAor
ICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAgICAgICAgIHBo
YXNlLCBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgXAorICAgICAgICAgIG5hbWUs
IHRyYWNlRXZlbnRUcmFjZUlELmRhdGEoKSwgdHJhY2VFdmVudEZsYWdzLCBcCisgICAgICAgICAg
IyNfX1ZBX0FSR1NfXyk7IFwKKyAgICB9CisjZW5kaWYKKworLy8gTm90ZXMgcmVnYXJkaW5nIHRo
ZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnM6CisvLyBOZXcgdmFsdWVzIGNhbiBiZSBhZGRlZCBhbmQg
cHJvcGFnYXRlZCB0byB0aGlyZCBwYXJ0eSBsaWJyYXJpZXMsIGJ1dCBleGlzdGluZworLy8gZGVm
aW5pdGlvbnMgbXVzdCBuZXZlciBiZSBjaGFuZ2VkLCBiZWNhdXNlIHRoaXJkIHBhcnR5IGxpYnJh
cmllcyBtYXkgdXNlIG9sZAorLy8gZGVmaW5pdGlvbnMuCisKKy8vIFBoYXNlIGluZGljYXRlcyB0
aGUgbmF0dXJlIG9mIGFuIGV2ZW50IGVudHJ5LiBFLmcuIHBhcnQgb2YgYSBiZWdpbi9lbmQgcGFp
ci4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4gICAgKCdCJykKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfUEhBU0VfRU5EICAgICAgKCdFJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0Vf
SU5TVEFOVCAgKCdJJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQgICAgKCdTJykK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNIICAgKCdGJykKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfUEhBU0VfTUVUQURBVEEgKCdNJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfQ09V
TlRFUiAgKCdDJykKKworLy8gRmxhZ3MgZm9yIGNoYW5naW5nIHRoZSBiZWhhdmlvciBvZiBUUkFD
RV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5ULgorI2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX05P
TkUgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwKSkKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfRkxBR19DT1BZICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSA8PCAw
KSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgICAgICAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oMSA8PCAxKSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxBR19NQU5HTEVfSUQg
ICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSA8PCAyKSkKKworLy8gVHlwZSB2YWx1ZXMg
Zm9yIGlkZW50aWZ5aW5nIHR5cGVzIGluIHRoZSBUcmFjZVZhbHVlIHVuaW9uLgorI2RlZmluZSBU
UkFDRV9WQUxVRV9UWVBFX0JPT0wgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
MSkpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCAgICAgICAgIChzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPigyKSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9JTlQgICAgICAgICAg
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDMpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBF
X0RPVUJMRSAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNCkpCisjZGVmaW5lIFRS
QUNFX1ZBTFVFX1RZUEVfUE9JTlRFUiAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig1
KSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9TVFJJTkcgICAgICAgKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KDYpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX0NPUFlfU1RSSU5HICAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNykpCiAKLS8vIElzc3VlcyBQbGF0Zm9ybVN1cHBv
cnQ6OnRyYWNlRXZlbnRCZWdpbiBhbmQgdHJhY2VFdmVudEVuZCBjYWxscyBmb3IgdGhlIGVuY2xv
c2luZyBzY29wZQotI2RlZmluZSBUUkFDRV9FVkVOVChuYW1lLCBpZCwgZXh0cmEpIFdlYkNvcmU6
OmludGVybmFsOjpTY29wZVRyYWNlciBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElGSUVS
KF9fdHJhY2VFdmVudFNjb3BlKShuYW1lLCBpZCwgZXh0cmEpOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7CituYW1lc3BhY2UgVHJhY2VFdmVudCB7CisKKy8v
IFNwZWNpZnkgdGhlc2UgdmFsdWVzIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgb2Yg
YWRkVHJhY2VFdmVudCBpcyBub3QKKy8vIHVzZWQuCitjb25zdCBpbnQgemVyb051bUFyZ3MgPSAw
OworY29uc3QgaW50IG5vVGhyZXNob2xkQmVnaW5JZCA9IC0xOworY29uc3QgbG9uZyBsb25nIG5v
VGhyZXNob2xkVmFsdWUgPSAwOworY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIG5vRXZlbnRJZCA9
IDA7CiAKLS8vIFVzZWQgYnkgVFJBQ0VfRVZFTlQgbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHku
Ci1jbGFzcyBTY29wZVRyYWNlciB7CisvLyBUcmFjZUlEIGVuY2Fwc3VsYXRlcyBhbiBJRCB0aGF0
IGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciBvciBwb2ludGVyLiBQb2ludGVycworLy8gYXJlIG1h
bmdsZWQgd2l0aCB0aGUgUHJvY2VzcyBJRCBzbyB0aGF0IHRoZXkgYXJlIHVubGlrZWx5IHRvIGNv
bGxpZGUgd2hlbiB0aGUKKy8vIHNhbWUgcG9pbnRlciBpcyB1c2VkIG9uIGRpZmZlcmVudCBwcm9j
ZXNzZXMuCitjbGFzcyBUcmFjZUlEIHsKIHB1YmxpYzoKLSAgICBTY29wZVRyYWNlcihjb25zdCBj
aGFyKiBuYW1lLCB2b2lkKiwgY29uc3QgY2hhciogZXh0cmEpOwotICAgIH5TY29wZVRyYWNlcigp
OworICAgIGV4cGxpY2l0IFRyYWNlSUQoY29uc3Qgdm9pZCogaWQsIHVuc2lnbmVkIGNoYXIqIGZs
YWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgbG9uZz4oaWQpKSkKKyAgICB7CisgICAgICAgICpmbGFn
cyB8PSBUUkFDRV9FVkVOVF9GTEFHX01BTkdMRV9JRDsKKyAgICB9CisgICAgZXhwbGljaXQgVHJh
Y2VJRCh1bnNpZ25lZCBsb25nIGxvbmcgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0
YShpZCkgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBsb25nIGlkLCB1bnNpZ25l
ZCBjaGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5z
aWduZWQgaW50IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgfQorICAg
IGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgc2hvcnQgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdz
KSA6IG1fZGF0YShpZCkgeyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBjaGFyIGlk
LCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgfQorICAgIGV4cGxpY2l0IFRy
YWNlSUQobG9uZyBsb25nIGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBtX2Rh
dGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsgfQorICAgIGV4cGxpY2l0
IFRyYWNlSUQobG9uZyBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDoKKyAgICAgICAgbV9kYXRh
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oaWQpKSB7IH0KKyAgICBleHBsaWNpdCBU
cmFjZUlEKGludCBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDoKKyAgICAgICAgbV9kYXRhKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oaWQpKSB7IH0KKyAgICBleHBsaWNpdCBUcmFj
ZUlEKHNob3J0IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsgfQorICAgIGV4cGxpY2l0IFRyYWNl
SUQoc2lnbmVkIGNoYXIgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0
YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGlkKSkgeyB9CisKKyAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCitwcml2YXRlOgor
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX2RhdGE7Cit9OworCisvLyBTaW1wbGUgdW5pb24gdG8g
c3RvcmUgdmFyaW91cyB0eXBlcyBhcyB1bnNpZ25lZCBsb25nIGxvbmcuCit1bmlvbiBUcmFjZVZh
bHVlVW5pb24geworICAgIGJvb2wgbV9ib29sOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3Vp
bnQ7CisgICAgbG9uZyBsb25nIG1faW50OworICAgIGRvdWJsZSBtX2RvdWJsZTsKKyAgICBjb25z
dCB2b2lkKiBtX3BvaW50ZXI7CisgICAgY29uc3QgY2hhciogbV9zdHJpbmc7Cit9OwogCisvLyBT
aW1wbGUgY29udGFpbmVyIGZvciBjb25zdCBjaGFyKiB0aGF0IHNob3VsZCBiZSBjb3BpZWQgaW5z
dGVhZCBvZiByZXRhaW5lZC4KK2NsYXNzIFRyYWNlU3RyaW5nV2l0aENvcHkgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IFRyYWNlU3RyaW5nV2l0aENvcHkoY29uc3QgY2hhciogc3RyKSA6IG1fc3Ry
KHN0cikgeyB9CisgICAgb3BlcmF0b3IgY29uc3QgY2hhciogKCkgY29uc3QgeyByZXR1cm4gbV9z
dHI7IH0KIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogbV9uYW1lOwotICAgIHZvaWQqIG1faWQ7
Ci0gICAgT3duQXJyYXlQdHI8Y2hhcj4gbV9leHRyYTsKKyAgICBjb25zdCBjaGFyKiBtX3N0cjsK
IH07CiAKLWlubGluZSBTY29wZVRyYWNlcjo6U2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwg
dm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKQotICAgIDogbV9uYW1lKG5hbWUpCi0gICAgLCBt
X2lkKGlkKQotewotICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlk
LCBleHRyYSk7IFwKLSAgICBpZiAoZXh0cmEgJiYgUGxhdGZvcm1TdXBwb3J0Ojppc1RyYWNlRXZl
bnRFbmFibGVkKCkpCi0gICAgICAgIG1fZXh0cmEgPSBhZG9wdEFycmF5UHRyKHN0cmR1cChleHRy
YSkpOworLy8gRGVmaW5lIHNldFRyYWNlVmFsdWUgZm9yIGVhY2ggYWxsb3dlZCB0eXBlLiBJdCBz
dG9yZXMgdGhlIHR5cGUgYW5kCisvLyB2YWx1ZSBpbiB0aGUgcmV0dXJuIGFyZ3VtZW50cy4gVGhp
cyBhbGxvd3MgdGhpcyBBUEkgdG8gYXZvaWQgZGVjbGFyaW5nIGFueQorLy8gc3RydWN0dXJlcyBz
byB0aGF0IGl0IGlzIHBvcnRhYmxlIHRvIHRoaXJkX3BhcnR5IGxpYnJhcmllcy4KKyNkZWZpbmUg
SU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoYWN0dWFsX3R5cGUsIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25fbWVtYmVyLCBcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGVfaWQpIFwKKyAgICBz
dGF0aWMgaW5saW5lIHZvaWQgc2V0VHJhY2VWYWx1ZShhY3R1YWxfdHlwZSBhcmcsIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0eXBlLCBcCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2
YWx1ZSkgeyBcCisgICAgICAgIFRyYWNlVmFsdWVVbmlvbiB0eXBlVmFsdWU7IFwKKyAgICAgICAg
dHlwZVZhbHVlLnVuaW9uX21lbWJlciA9IGFyZzsgXAorICAgICAgICAqdHlwZSA9IHZhbHVlX3R5
cGVfaWQ7IFwKKyAgICAgICAgKnZhbHVlID0gdHlwZVZhbHVlLm1fdWludDsgXAorICAgIH0KKy8v
IFNpbXBsZXIgZm9ybSBmb3IgaW50IHR5cGVzIHRoYXQgY2FuIGJlIHNhZmVseSBjYXN0ZWQuCisj
ZGVmaW5lIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChhY3R1YWxfdHlwZSwg
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlw
ZV9pZCkgXAorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRUcmFjZVZhbHVlKGFjdHVhbF90eXBl
IGFyZywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIqIHR5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGxvbmcqIHZhbHVlKSB7IFwKKyAgICAgICAgKnR5cGUgPSB2YWx1ZV90eXBlX2lkOyBc
CisgICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oYXJnKTsg
XAorICAgIH0KKworSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVk
IGxvbmcgbG9uZywgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRf
VFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGludCwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5U
RVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIHNob3J0LCBUUkFDRV9W
QUxVRV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQodW5z
aWduZWQgY2hhciwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRf
VFJBQ0VfVkFMVUVfSU5UKGxvbmcgbG9uZywgVFJBQ0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5B
TF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQoaW50LCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkK
K0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChzaG9ydCwgVFJBQ0VfVkFMVUVf
VFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQoc2lnbmVkIGNo
YXIsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFM
VUUoYm9vbCwgbV9ib29sLCBUUkFDRV9WQUxVRV9UWVBFX0JPT0wpCitJTlRFUk5BTF9ERUNMQVJF
X1NFVF9UUkFDRV9WQUxVRShkb3VibGUsIG1fZG91YmxlLCBUUkFDRV9WQUxVRV9UWVBFX0RPVUJM
RSkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0IHZvaWQqLCBtX3BvaW50
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9UWVBFX1BP
SU5URVIpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShjb25zdCBjaGFyKiwgbV9z
dHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9UWVBF
X1NUUklORykKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0IFRyYWNlU3Ry
aW5nV2l0aENvcHkmLCBtX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRSQUNFX1ZBTFVFX1RZUEVfQ09QWV9TVFJJTkcpCisKKyN1bmRlZiBJTlRFUk5BTF9ERUNMQVJF
X1NFVF9UUkFDRV9WQUxVRQorI3VuZGVmIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVF
X0lOVAorCisvLyBXVEY6OlN0cmluZyB2ZXJzaW9uIG9mIHNldFRyYWNlVmFsdWUgc28gdGhhdCB0
cmFjZSBhcmd1bWVudHMgY2FuIGJlIHN0cmluZ3MuCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0VHJh
Y2VWYWx1ZShjb25zdCBXVEY6OkNTdHJpbmcmIGFyZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcqIHZhbHVlKSB7CisgICAgVHJhY2VWYWx1ZVVuaW9u
IHR5cGVWYWx1ZTsKKyAgICB0eXBlVmFsdWUubV9zdHJpbmcgPSBhcmcuZGF0YSgpOworICAgICp0
eXBlID0gVFJBQ0VfVkFMVUVfVFlQRV9DT1BZX1NUUklORzsKKyAgICAqdmFsdWUgPSB0eXBlVmFs
dWUubV91aW50OwogfQogCi1pbmxpbmUgU2NvcGVUcmFjZXI6On5TY29wZVRyYWNlcigpCi17Ci0g
ICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKG1fbmFtZSwgbV9pZCwgbV9leHRyYS5n
ZXQoKSk7CisvLyBUaGVzZSBhZGRUcmFjZUV2ZW50IHRlbXBsYXRlIGZ1bmN0aW9ucyBhcmUgZGVm
aW5lZCBoZXJlIGluc3RlYWQgb2YgaW4gdGhlCisvLyBtYWNybywgYmVjYXVzZSB0aGUgYXJnIHZh
bHVlcyBjb3VsZCBiZSB0ZW1wb3Jhcnkgc3RyaW5nIG9iamVjdHMuIEluIG9yZGVyIHRvCisvLyBz
dG9yZSBwb2ludGVycyB0byB0aGUgaW50ZXJuYWwgY19zdHIgYW5kIHBhc3MgdGhyb3VnaCB0byB0
aGUgdHJhY2luZyBBUEksIHRoZQorLy8gYXJnIHZhbHVlcyBtdXN0IGxpdmUgdGhyb3VnaG91dCB0
aGVzZSBwcm9jZWR1cmVzLgorCitzdGF0aWMgaW5saW5lIGludCBhZGRUcmFjZUV2ZW50KGNoYXIg
cGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIGZsYWdzKSB7CisgICAgcmV0dXJuIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQo
CisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQsIG5hbWUsIGlkLAorICAgICAgICB6ZXJv
TnVtQXJncywgMCwgMCwgMCwKKyAgICAgICAgbm9UaHJlc2hvbGRCZWdpbklkLCBub1RocmVzaG9s
ZFZhbHVlLCBmbGFncyk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEFSRzFfVFlQRT4KK3N0YXRpYyBp
bmxpbmUgaW50IGFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFyZzFOYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBBUkcxX1RZUEUmIGFyZzFWYWwpIHsKKyAgICBjb25zdCBpbnQg
bnVtQXJncyA9IDE7CisgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1sxXTsKKyAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgYXJnVmFsdWVzWzFdOworICAgIHNldFRyYWNlVmFsdWUoYXJnMVZhbCwgJmFy
Z1R5cGVzWzBdLCAmYXJnVmFsdWVzWzBdKTsKKyAgICByZXR1cm4gVFJBQ0VfRVZFTlRfQVBJX0FE
RF9UUkFDRV9FVkVOVCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgbmFtZSwgaWQs
CisgICAgICAgIG51bUFyZ3MsICZhcmcxTmFtZSwgYXJnVHlwZXMsIGFyZ1ZhbHVlcywKKyAgICAg
ICAgbm9UaHJlc2hvbGRCZWdpbklkLCBub1RocmVzaG9sZFZhbHVlLCBmbGFncyk7CiB9CiAKLX0g
Ly8gbmFtZXNwYWNlIGludGVybmFsCit0ZW1wbGF0ZTxjbGFzcyBBUkcxX1RZUEUsIGNsYXNzIEFS
RzJfVFlQRT4KK3N0YXRpYyBpbmxpbmUgaW50IGFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdv
cnlFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFyZzFOYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcxX1RZUEUmIGFyZzFWYWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFyZzJOYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcyX1RZUEUmIGFyZzJWYWwp
IHsKKyAgICBjb25zdCBpbnQgbnVtQXJncyA9IDI7CisgICAgY29uc3QgY2hhciogYXJnTmFtZXNb
Ml0gPSB7IGFyZzFOYW1lLCBhcmcyTmFtZSB9OworICAgIHVuc2lnbmVkIGNoYXIgYXJnVHlwZXNb
Ml07CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZ1ZhbHVlc1syXTsKKyAgICBzZXRUcmFjZVZh
bHVlKGFyZzFWYWwsICZhcmdUeXBlc1swXSwgJmFyZ1ZhbHVlc1swXSk7CisgICAgc2V0VHJhY2VW
YWx1ZShhcmcyVmFsLCAmYXJnVHlwZXNbMV0sICZhcmdWYWx1ZXNbMV0pOworICAgIHJldHVybiBU
UkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAgICBwaGFzZSwgY2F0ZWdvcnlF
bmFibGVkLCBuYW1lLCBpZCwKKyAgICAgICAgbnVtQXJncywgYXJnTmFtZXMsIGFyZ1R5cGVzLCBh
cmdWYWx1ZXMsCisgICAgICAgIG5vVGhyZXNob2xkQmVnaW5JZCwgbm9UaHJlc2hvbGRWYWx1ZSwg
ZmxhZ3MpOworfQorCisvLyBVc2VkIGJ5IFRSQUNFX0VWRU5UeCBtYWNyby4gRG8gbm90IHVzZSBk
aXJlY3RseS4KK2NsYXNzIFRyYWNlRW5kT25TY29wZUNsb3NlIHsKK3B1YmxpYzoKKyAgICAvLyBO
b3RlOiBtZW1iZXJzIG9mIG1fZGF0YSBpbnRlbnRpb25hbGx5IGxlZnQgdW5pbml0aWFsaXplZC4g
U2VlIGluaXRpYWxpemUuCisgICAgVHJhY2VFbmRPblNjb3BlQ2xvc2UoKSA6IG1fcGRhdGEoMCkg
eyB9CisgICAgflRyYWNlRW5kT25TY29wZUNsb3NlKCkKKyAgICB7CisgICAgICAgIGlmIChtX3Bk
YXRhKQorICAgICAgICAgICAgYWRkRXZlbnRJZkVuYWJsZWQoKTsKKyAgICB9CisKKyAgICB2b2lk
IGluaXRpYWxpemUoY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lKQorICAgIHsKKyAgICAgICAgbV9kYXRhLmNh
dGVnb3J5RW5hYmxlZCA9IGNhdGVnb3J5RW5hYmxlZDsKKyAgICAgICAgbV9kYXRhLm5hbWUgPSBu
YW1lOworICAgICAgICBtX3BkYXRhID0gJm1fZGF0YTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Ly8gQWRkIHRoZSBlbmQgZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIHN0aWxsIGVuYWJsZWQuCisg
ICAgdm9pZCBhZGRFdmVudElmRW5hYmxlZCgpCisgICAgeworICAgICAgICAvLyBPbmx5IGNhbGxl
ZCB3aGVuIG1fcGRhdGEgaXMgbm9uLW51bGwuCisgICAgICAgIGlmICgqbV9wZGF0YS0+Y2F0ZWdv
cnlFbmFibGVkKSB7CisgICAgICAgICAgICBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5U
KAorICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0VORCwKKyAgICAgICAgICAgICAg
ICBtX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+bmFt
ZSwgbm9FdmVudElkLAorICAgICAgICAgICAgICAgIHplcm9OdW1BcmdzLCAwLCAwLCAwLAorICAg
ICAgICAgICAgICAgIG5vVGhyZXNob2xkQmVnaW5JZCwgbm9UaHJlc2hvbGRWYWx1ZSwgVFJBQ0Vf
RVZFTlRfRkxBR19OT05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMgRGF0YSBz
dHJ1Y3Qgd29ya2Fyb3VuZCBpcyB0byBhdm9pZCBpbml0aWFsaXppbmcgYWxsIHRoZSBtZW1iZXJz
CisgICAgLy8gaW4gRGF0YSBkdXJpbmcgY29uc3RydWN0aW9uIG9mIHRoaXMgb2JqZWN0LCBzaW5j
ZSB0aGlzIG9iamVjdCBpcyBhbHdheXMKKyAgICAvLyBjb25zdHJ1Y3RlZCwgZXZlbiB3aGVuIHRy
YWNpbmcgaXMgZGlzYWJsZWQuIElmIHRoZSBtZW1iZXJzIG9mIERhdGEgd2VyZQorICAgIC8vIG1l
bWJlcnMgb2YgdGhpcyBjbGFzcyBpbnN0ZWFkLCBjb21waWxlciB3YXJuaW5ncyBvY2N1ciBhYm91
dCBwb3RlbnRpYWwKKyAgICAvLyB1bmluaXRpYWxpemVkIGFjY2Vzc2VzLgorICAgIHN0cnVjdCBE
YXRhIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkOworICAg
ICAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIH07CisgICAgRGF0YSogbV9wZGF0YTsKKyAgICBE
YXRhIG1fZGF0YTsKK307CisKKy8vIFVzZWQgYnkgVFJBQ0VfRVZFTlR4IG1hY3JvLiBEbyBub3Qg
dXNlIGRpcmVjdGx5LgorY2xhc3MgVHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQgeworcHVi
bGljOgorICAgIC8vIE5vdGU6IG1lbWJlcnMgb2YgbV9kYXRhIGludGVudGlvbmFsbHkgbGVmdCB1
bmluaXRpYWxpemVkLiBTZWUgaW5pdGlhbGl6ZS4KKyAgICBUcmFjZUVuZE9uU2NvcGVDbG9zZVRo
cmVzaG9sZCgpIDogbV9wZGF0YSgwKSB7IH0KKyAgICB+VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJl
c2hvbGQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGRhdGEpCisgICAgICAgICAgICBhZGRFdmVu
dElmRW5hYmxlZCgpOworICAgIH0KKworICAgIC8vIENhbGxlZCBieSBtYWNyb3Mgb25seSB3aGVu
IHRyYWNpbmcgaXMgZW5hYmxlZCBhdCB0aGUgcG9pbnQgd2hlbiB0aGUgYmVnaW4KKyAgICAvLyBl
dmVudCBpcyBhZGRlZC4KKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdW5zaWduZWQgY2hhciog
Y2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAor
ICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKyAgICAgICAgICAgICAg
ICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCkKKyAgICB7CisgICAgICAgIG1fZGF0YS5jYXRlZ29y
eUVuYWJsZWQgPSBjYXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIG1fZGF0YS5uYW1lID0gbmFtZTsK
KyAgICAgICAgbV9kYXRhLnRocmVzaG9sZEJlZ2luSUQgPSB0aHJlc2hvbGRCZWdpbklEOworICAg
ICAgICBtX2RhdGEudGhyZXNob2xkID0gdGhyZXNob2xkOworICAgICAgICBtX3BkYXRhID0gJm1f
ZGF0YTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8gQWRkIHRoZSBlbmQgZXZlbnQgaWYgdGhl
IGNhdGVnb3J5IGlzIHN0aWxsIGVuYWJsZWQuCisgICAgdm9pZCBhZGRFdmVudElmRW5hYmxlZCgp
CisgICAgeworICAgICAgICAvLyBPbmx5IGNhbGxlZCB3aGVuIG1fcGRhdGEgaXMgbm9uLW51bGwu
CisgICAgICAgIGlmICgqbV9wZGF0YS0+Y2F0ZWdvcnlFbmFibGVkKSB7CisgICAgICAgICAgICBU
UkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAgICAgICAgICAgIFRSQUNFX0VW
RU5UX1BIQVNFX0VORCwKKyAgICAgICAgICAgICAgICBtX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQs
CisgICAgICAgICAgICAgICAgbV9wZGF0YS0+bmFtZSwgbm9FdmVudElkLAorICAgICAgICAgICAg
ICAgIHplcm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgIG1fcGRhdGEtPnRocmVz
aG9sZEJlZ2luSUQsIG1fcGRhdGEtPnRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICBUUkFDRV9F
VkVOVF9GTEFHX05PTkUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhpcyBEYXRhIHN0
cnVjdCB3b3JrYXJvdW5kIGlzIHRvIGF2b2lkIGluaXRpYWxpemluZyBhbGwgdGhlIG1lbWJlcnMK
KyAgICAvLyBpbiBEYXRhIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgdGhpcyBvYmplY3QsIHNpbmNl
IHRoaXMgb2JqZWN0IGlzIGFsd2F5cworICAgIC8vIGNvbnN0cnVjdGVkLCBldmVuIHdoZW4gdHJh
Y2luZyBpcyBkaXNhYmxlZC4gSWYgdGhlIG1lbWJlcnMgb2YgRGF0YSB3ZXJlCisgICAgLy8gbWVt
YmVycyBvZiB0aGlzIGNsYXNzIGluc3RlYWQsIGNvbXBpbGVyIHdhcm5pbmdzIG9jY3VyIGFib3V0
IHBvdGVudGlhbAorICAgIC8vIHVuaW5pdGlhbGl6ZWQgYWNjZXNzZXMuCisgICAgc3RydWN0IERh
dGEgeworICAgICAgICBsb25nIGxvbmcgdGhyZXNob2xkOworICAgICAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAg
ICAgIGludCB0aHJlc2hvbGRCZWdpbklEOworICAgIH07CisgICAgRGF0YSogbV9wZGF0YTsKKyAg
ICBEYXRhIG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFRyYWNlRXZlbnQKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCmluZGV4IDZjMGU3
NGYxMjk3MmM3ZjM3NDYzNDBhZmY2OWIzMTJkYzI1Y2ExZTkuLjAwODQxMDhiMjFmMDNlNzRjNDM0
MmM2OWIxODhjMzI3OTU4N2UyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCkBAIC0y
MzcsMTEgKzIzNyw1MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudFN0YXRz
Q291bnRlcihjb25zdCBjaGFyKiBuYW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50
U3RhdHNDb3VudGVyKGNvbnN0IGNoYXIqIG5hbWUpIHsgfQogCi0gICAgLy8gQW4gZXZlbnQgaXMg
aWRlbnRpZmllZCBieSB0aGUgcGFpciAobmFtZSwgaWQpLiBUaGUgZXh0cmEgcGFyYW1ldGVyCi0g
ICAgLy8gc3BlY2lmaWVzIGFkZGl0aW9uYWwgZGF0YSB0byBsb2cgd2l0aCB0aGUgZXZlbnQuCi0g
ICAgdmlydHVhbCBib29sIGlzVHJhY2VFdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2
b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2
ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkgeyB9
CisgICAgLy8gVHJhY2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBHZXQgYSBwb2ludGVyIHRvIHRoZSBlbmFi
bGVkIHN0YXRlIG9mIHRoZSBnaXZlbiB0cmFjZSBjYXRlZ29yeS4gT25seQorICAgIC8vIGxvbmct
bGl2ZWQgbGl0ZXJhbCBzdHJpbmdzIHNob3VsZCBiZSBnaXZlbiBhcyB0aGUgY2F0ZWdvcnkgbmFt
ZS4gVGhlCisgICAgLy8gcmV0dXJuZWQgcG9pbnRlciBjYW4gYmUgaGVsZCBwZXJtYW5lbnRseSBp
biBhIGxvY2FsIHN0YXRpYyBmb3IgZXhhbXBsZS4KKyAgICAvLyBJZiB0aGUgdW5zaWduZWQgY2hh
ciBpcyBub24temVybywgdHJhY2luZyBpcyBlbmFibGVkLiBJZiB0cmFjaW5nIGlzCisgICAgLy8g
ZW5hYmxlZCwgYWRkVHJhY2VFdmVudCBjYW4gYmUgY2FsbGVkLiBJdCdzIE9LIGlmIHRyYWNpbmcg
aXMgZGlzYWJsZWQKKyAgICAvLyBiZXR3ZWVuIHRoZSBsb2FkIG9mIHRoZSB0cmFjaW5nIHN0YXRl
IGFuZCB0aGUgY2FsbCB0byBhZGRUcmFjZUV2ZW50LAorICAgIC8vIGJlY2F1c2UgdGhpcyBmbGFn
IG9ubHkgcHJvdmlkZXMgYW4gZWFybHkgb3V0IGZvciBiZXN0IHBlcmZvcm1hbmNlIHdoZW4KKyAg
ICAvLyB0cmFjaW5nIGlzIGRpc2FibGVkLgorICAgIHZpcnR1YWwgY29uc3QgdW5zaWduZWQgY2hh
ciogZ2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZSkg
eyByZXR1cm4gMDsgfQorICAgIC8vIEFkZCBhIHRyYWNlIGV2ZW50IHRvIHRoZSBwbGF0Zm9ybSB0
cmFjaW5nIHN5c3RlbS4KKyAgICAvLyBSZXR1cm5zIHRocmVzaG9sZEJlZ2luSWQgZm9yIHVzZSBp
biBhIGNvcnJlc3BvbmRpbmcgZW5kIGFkZFRyYWNlRXZlbnQgY2FsbC4KKyAgICAvLyAtIHBoYXNl
IHNwZWNpZmllcyB0aGUgdHlwZSBvZiBldmVudCwgc3VjaCBhcyBiZWdpbiwgZW5kLCBpbnN0YW50
LCBldGMuCisgICAgLy8gLSBjYXRlZ29yeUVuYWJsZWQgaXMgdGhlIHBvaW50ZXIgcmV0dXJuZWQg
YnkgZ2V0Q2F0ZWdvcnlFbmFibGVkLgorICAgIC8vIC0gbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUg
ZXZlbnQuCisgICAgLy8gLSBpZCBvcHRpb25hbGx5IGFsbG93cyBldmVudHMgb2YgdGhlIHNhbWUg
bmFtZSB0byBiZSBkaXN0aW5ndWlzaGVkLgorICAgIC8vIC0gbnVtQXJncyBzcGVjaWZpZXMgdGhl
IG51bWJlciBvZiBlbGVtZW50cyBpbiBhcmdOYW1lcywgYXJnVHlwZXMsIGFuZAorICAgIC8vICAg
YXJnVmFsdWVzLgorICAgIC8vIC0gYXJnTmFtZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50IG5h
bWVzLgorICAgIC8vIC0gYXJnVHlwZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50IHR5cGVzOiBi
b29sLCB1bnNpZ25lZCBsb25nIGxvbmcsCisgICAgLy8gICBsb25nIGxvbmcsIGRvdWJsZSwgdm9p
ZCosIGNoYXIqIChsb25nLWxpdmVkIG51bGwtdGVybWluYXRlZCBjaGFyKiBzdHJpbmcpLAorICAg
IC8vICAgY2hhciogKHRlbXBvcmFyeSBudWxsLXRlcm1pbmF0ZWQgY2hhciogc3RyaW5nKS4KKyAg
ICAvLyAtIGFyZ1ZhbHVlcyBpcyB0aGUgYXJyYXkgb2YgYXJndW1lbnQgdmFsdWVzLgorICAgIC8v
IC0gdGhyZXNob2xkQmVnaW5JZCBvcHRpb25hbGx5IHNwZWNpZmllcyB0aGUgdmFsdWUgcmV0dXJu
ZWQgYnkgYSBwcmV2aW91cworICAgIC8vICAgY2FsbCB0byBhZGRUcmFjZUV2ZW50LgorICAgIC8v
IC0gdGhyZXNob2xkIHNwZWNpZmllcyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWljcm9zZWNvbmRz
IHRoYXQgbXVzdCBoYXZlCisgICAgLy8gICBwYXNzZWQgc2luY2UgdGhlIGV2ZW50IGlkZW50aWZp
ZWQgYnkgdGhyZXNob2xkQmVnaW5JZCBmb3IgYm90aCBldmVudHMgdG8KKyAgICAvLyAgIGJlIHJl
Y29yZGVkLgorICAgIC8vIC0gZmxhZ3MgY2FuIGJlIDAgb3Igb25lIG9yIG1vcmUgb2YgdGhlIGZv
bGxvd2luZywgT1JlZCB0b2dldGhlcjoKKyAgICAvLyAgIC0gdHJlYXQgYWxsIHN0cmluZ3MgYXMg
dGVtcG9yYXJ5IHNvIHRoYXQgdGhleSB3aWxsIGJlIGNvcGllZCBieQorICAgIC8vICAgICBhZGRU
cmFjZUV2ZW50LCB3aXRoIHRoZSBleGNlcHRpb24gb2YgY2F0ZWdvcnkgbmFtZS4KKyAgICAvLyAg
IC0gdXNlIHRoZSBpZCBhcmd1bWVudCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgZXZlbnQgZm9y
IG1hdGNoaW5nCisgICAgLy8gICAgIHdpdGggb3RoZXIgZXZlbnRzIG9mIHRoZSBzYW1lIG5hbWUu
CisgICAgdmlydHVhbCBpbnQgYWRkVHJhY2VFdmVudCgKKyAgICAgICAgY2hhciBwaGFzZSwKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkRmxhZywKKyAgICAgICAg
Y29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAg
ICBpbnQgbnVtQXJncywKKyAgICAgICAgY29uc3QgY2hhcioqIGFyZ05hbWVzLAorICAgICAgICBj
b25zdCB1bnNpZ25lZCBjaGFyKiBhcmdUeXBlcywKKyAgICAgICAgY29uc3QgdW5zaWduZWQgbG9u
ZyBsb25nKiBhcmdWYWx1ZXMsCisgICAgICAgIGludCB0aHJlc2hvbGRCZWdpbklkLAorICAgICAg
ICBsb25nIGxvbmcgdGhyZXNob2xkLAorICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKSB7IHJl
dHVybiAtMTsgfQogCiAgICAgLy8gQ2FsbGJhY2tzIGZvciByZXBvcnRpbmcgaGlzdG9ncmFtIGRh
dGEuCiAgICAgLy8gQ3VzdG9tQ291bnRzIGhpc3RvZ3JhbSBoYXMgZXhwb25lbnRpYWwgYnVja2V0
IHNpemVzLCBzbyB0aGF0IG1pbj0xLCBtYXg9MTAwMDAwMCwgYnVja2V0Q291bnQ9NTAgd291bGQg
ZG8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBv
cnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcApp
bmRleCAyNDY4MWVjOTYyZDc0ZWJmZWI1YWIzMzU1YzE5MDNhZmQ5ZTllY2Q2Li45ZjBlM2E4MTI0
NGY3MmIxMjAxMzM3NjU2OTFjZDMzMGViMTIyMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKQEAgLTk0NywxOSArOTQ3LDI0IEBAIHZvaWQg
UGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydCgKIAogLy8gVHJhY2UgRXZlbnQgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1ib29sIFBsYXRmb3JtU3VwcG9ydDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgpCi17Ci0gICAg
cmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5pc1RyYWNlRXZlbnRFbmFibGVkKCk7Ci19
Ci0KLXZvaWQgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4oY29uc3QgY2hhciogbmFt
ZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKQotewotICAgIHdlYktpdFBsYXRmb3JtU3Vw
cG9ydCgpLT50cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJhKTsKLX0KLQotdm9pZCBQbGF0
Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNv
bnN0IGNoYXIqIGV4dHJhKQotewotICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT50cmFjZUV2
ZW50RW5kKG5hbWUsIGlkLCBleHRyYSk7Citjb25zdCB1bnNpZ25lZCBjaGFyKiBQbGF0Zm9ybVN1
cHBvcnQ6OmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhjb25zdCBjaGFyKiBjYXRlZ29yeU5h
bWUpCit7CisgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5nZXRUcmFjZUNhdGVn
b3J5RW5hYmxlZEZsYWcoY2F0ZWdvcnlOYW1lKTsKK30KK2ludCBQbGF0Zm9ybVN1cHBvcnQ6OmFk
ZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkRmxhZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtQXJncywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhcioqIGFyZ05hbWVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBhcmdUeXBlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nKiBhcmdW
YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aHJlc2hvbGRC
ZWdpbklkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGhy
ZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IGZsYWdzKQoreworICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+YWRkVHJhY2VF
dmVudCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZEZsYWcsIG5hbWUsIGlkLCBudW1B
cmdzLCBhcmdOYW1lcywgYXJnVHlwZXMsIGFyZ1ZhbHVlcywgIHRocmVzaG9sZEJlZ2luSWQsIHRo
cmVzaG9sZCwgZmxhZ3MpOwogfQogCiAvLyBWaXNpdGVkIExpbmtzIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124224</attachid>
            <date>2012-01-26 17:35:29 -0800</date>
            <delta_ts>2012-01-27 12:42:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120126173528.patch</filename>
            <type>text/plain</type>
            <size>54155</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYyZTljYThiODg0NWU5
NDkwZGRjOTdlYzMzY2EzZWNlN2ExZGZlMy4uNmEyOGVkMDA5YWRhMmE4OGM1ZjY0YjIzZWRlMDI0
ZmFhZWViMzk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmV2YWx1YXRlKTogUmVwbGFj
ZSBvbGQgdHJhY2luZyBBUEkuCisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6OnRpbWUpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnNvbGU6OnRpbWVFbmQpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZUlEOjpUcmFjZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6
OlRyYWNlSUQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VTdHJp
bmdXaXRoQ29weTo6VHJhY2VTdHJpbmdXaXRoQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZVN0cmluZ1dpdGhDb3B5OjpvcGVyYXRvciBjb25zdCBjaGFyKiApOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6c2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNl
RXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpUcmFjZUVuZE9uU2NvcGVDbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5k
T25TY29wZUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25T
Y29wZUNsb3NlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRy
YWNlRW5kT25TY29wZUNsb3NlOjphZGRFdmVudElmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6VHJhY2VFbmRPblNj
b3BlQ2xvc2VUaHJlc2hvbGQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VF
bmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6On5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVz
aG9sZDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVu
ZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6YWRkRXZlbnRJZkVuYWJsZWQpOgorCiAyMDEyLTAxLTI1
ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bm5lY2Vzc2FyeSBtZW1iZXIgdmFyaWFibGUgZnJvbSBQbHVnaW5WaWV3LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2ZGMwMGNkOWIzYjM4MDg5ZGM1MTU5M2VmNjU2NzQ5
ZTRiY2E4MTQ0Li43MGRiNTBhMWJiMmM3MmIwMmU5MzA5M2QyNGE1Mjc3NWZiZjgzOWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRm
b3JtU3VwcG9ydDo6Z2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKiBzcmMv
UGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6
Z2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3VwcG9ydDo6YWRkVHJhY2VFdmVudCk6CisKIDIwMTItMDEtMjQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjaHJvbWl1bSB0ZXN0
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggNDdkYjE1YzVh
MTRkMWQ5YTlmYThkMTFhZDk2NWQ1MzVlMWVhNjdmYS4uOGYzYmFlMjY1NzRjMzExMWJkYzdjNDMy
M2Q1NzQ4NzFjZDE4N2FiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAK
QEAgLTcxLDYgKzcxLDEwIEBACiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNs
dWRlICJUcmFjZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgVjhFeHRlbnNpb25zJiBzdGF0aWNFeHRlbnNpb25zTGlzdCgpCkBAIC0zMzUsNyArMzM5LDcg
QEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlLCBOb2RlKiBub2QKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgc2NyaXB0
LgogICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gY29kZSA9IHY4RXh0ZXJuYWxTdHJpbmco
c291cmNlLnNvdXJjZSgpKTsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICAgICAgUGxhdGZv
cm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4oInY4LmNvbXBpbGUiLCBub2RlLCAiIik7CisgICAg
ICAgIFRSQUNFX0VWRU5UX0JFR0lOMSgidjgiLCAidjguY29tcGlsZSIsICJ1cmwiLCBzb3VyY2Uu
dXJsKCkuc3RyaW5nKCkuYXNjaWkoKSk7CiAjZW5kaWYKICAgICAgICAgT3duUHRyPHY4OjpTY3Jp
cHREYXRhPiBzY3JpcHREYXRhID0gcHJlY29tcGlsZVNjcmlwdChjb2RlLCBzb3VyY2UuY2FjaGVk
U2NyaXB0KCkpOwogCkBAIC0zNDMsMTUgKzM0NywxMSBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBW
OFByb3h5OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2UsIE5vZGUqIG5v
ZAogICAgICAgICAvLyAxLCB3aGVyZWFzIHY4IHN0YXJ0cyBhdCAwLgogICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IGNvbXBpbGVTY3JpcHQoY29kZSwgc291cmNlLnVybCgp
LCBzb3VyY2Uuc3RhcnRQb3NpdGlvbigpLCBzY3JpcHREYXRhLmdldCgpKTsKICNpZiBQTEFURk9S
TShDSFJPTUlVTSkKLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKCJ2OC5j
b21waWxlIiwgbm9kZSwgIiIpOwotCi0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVu
dEJlZ2luKCJ2OC5ydW4iLCBub2RlLCAiIik7CisgICAgICAgIFRSQUNFX0VWRU5UX0VORDAoInY4
IiwgInY4LmNvbXBpbGUiKTsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJ2OCIsICJ2OC5ydW4iKTsK
ICNlbmRpZgogICAgICAgICByZXN1bHQgPSBydW5TY3JpcHQoc2NyaXB0KTsKICAgICB9Ci0jaWYg
UExBVEZPUk0oQ0hST01JVU0pCi0gICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKCJ2
OC5ydW4iLCBub2RlLCAiIik7Ci0jZW5kaWYKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29va2llKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKaW5k
ZXggMjRlMTNhNWZkYmE1MzAxYmI3NTI5NGNlMzQwYjVhMGZlYWQyNDllNi4uNTE1YWIzNGQ3YTA2
ZDRhYzIyYjUzZjRjZjhkOWY4NGFmMWM1Zjc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBA
IC0yOTksMTYgKzI5OSwxNCBAQCB2b2lkIENvbnNvbGU6OnRpbWUoY29uc3QgU3RyaW5nJiB0aXRs
ZSkKIHsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZyhw
YWdlKCksIHRpdGxlKTsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICBpZiAoUGxhdGZvcm1T
dXBwb3J0Ojppc1RyYWNlRXZlbnRFbmFibGVkKCkpCi0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6
dHJhY2VFdmVudEJlZ2luKHRpdGxlLnV0ZjgoKS5kYXRhKCksIDAsIDApOworICAgIFRSQUNFX0VW
RU5UX0NPUFlfQkVHSU4wKCJ3ZWJraXQiLCB0aXRsZS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgog
fQogCiB2b2lkIENvbnNvbGU6OnRpbWVFbmQoY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzc1JlZlB0
cjxTY3JpcHRBcmd1bWVudHM+LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
KQogewogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgIGlmIChQbGF0Zm9ybVN1cHBvcnQ6Omlz
VHJhY2VFdmVudEVuYWJsZWQoKSkKLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50
RW5kKHRpdGxlLnV0ZjgoKS5kYXRhKCksIDAsIDApOworICAgIFRSQUNFX0VWRU5UX0NPUFlfRU5E
MCgid2Via2l0IiwgdGl0bGUudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKHBhZ2UoKSwgdGl0bGUsIGNhbGxTdGFj
ayk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oCmluZGV4IGM4ZGVkNmUyNmJhNzg0YzZlMTYzNzQxZDY2MjhlODU5MzljMzZhNmUu
LmFlZDY3YzcxZTY1NTU5YzE4ZTVjZWVjODZmYmUxZThiMmY1NWM0YWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCkBAIC00MTYs
OSArNDE2LDE4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gVHJhY2UgRXZlbnQgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBz
dGF0aWMgYm9vbCBpc1RyYWNlRXZlbnRFbmFibGVkKCk7Ci0gICAgc3RhdGljIHZvaWQgdHJhY2VF
dmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqLCBjb25zdCBjaGFyKiBleHRyYSk7Ci0g
ICAgc3RhdGljIHZvaWQgdHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiwgY29u
c3QgY2hhciogZXh0cmEpOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyKiBnZXRUcmFj
ZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKTsKKyAgICBzdGF0
aWMgaW50IGFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkRmxhZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgbnVtQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhcioqIGFyZ05hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBhcmdUeXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBsb25nKiBhcmdWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCB0aHJlc2hvbGRCZWdpbklkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b25nIGxvbmcgdGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIGZsYWdzKTsKIAogICAgIC8vIFZpc2l0ZWQgbGlua3MgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgc3RhdGljIExpbmtIYXNo
IHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciogdXJsLCB1bnNpZ25lZCBsZW5ndGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCmluZGV4IDY1MmY1
NDA3Y2EzZjU3NTE0Y2ZhYTNkNmE4YmRkMDY4MjU3Yjk2OTkuLjViYjYwMGZiMzg2N2RkYTc2OTll
MjlhMDk4YjliNjc5MzNiNzg4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1RyYWNlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9UcmFjZUV2ZW50LmgKQEAgLTIyLDUzICsyMiw4NDMgQEAKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLworCisvLyBUcmFjZSBldmVudHMgYXJlIGZvciB0cmFja2luZyBh
cHBsaWNhdGlvbiBwZXJmb3JtYW5jZSBhbmQgcmVzb3VyY2UgdXNhZ2UuCisvLyBNYWNyb3MgYXJl
IHByb3ZpZGVkIHRvIHRyYWNrOgorLy8gICAgQmVnaW4gYW5kIGVuZCBvZiBmdW5jdGlvbiBjYWxs
cworLy8gICAgQ291bnRlcnMKKy8vCisvLyBFdmVudHMgYXJlIGlzc3VlZCBhZ2FpbnN0IGNhdGVn
b3JpZXMuIFdoZXJlYXMgTE9HJ3MKKy8vIGNhdGVnb3JpZXMgYXJlIHN0YXRpY2FsbHkgZGVmaW5l
ZCwgVFJBQ0UgY2F0ZWdvcmllcyBhcmUgY3JlYXRlZAorLy8gaW1wbGljaXRseSB3aXRoIGEgc3Ry
aW5nLiBGb3IgZXhhbXBsZToKKy8vICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoIk1ZX1NVQlNZU1RF
TSIsICJTb21lSW1wb3J0YW50RXZlbnQiKQorLy8KKy8vIEV2ZW50cyBjYW4gYmUgSU5TVEFOVCwg
b3IgY2FuIGJlIHBhaXJzIG9mIEJFR0lOIGFuZCBFTkQgaW4gdGhlIHNhbWUgc2NvcGU6CisvLyAg
IFRSQUNFX0VWRU5UX0JFR0lOMCgiTVlfU1VCU1lTVEVNIiwgIlNvbWV0aGluZ0Nvc3RseSIpCisv
LyAgIGRvU29tZXRoaW5nQ29zdGx5KCkKKy8vICAgVFJBQ0VfRVZFTlRfRU5EMCgiTVlfU1VCU1lT
VEVNIiwgIlNvbWV0aGluZ0Nvc3RseSIpCisvLyBOb3RlOiBvdXIgdG9vbHMgY2FuJ3QgYWx3YXlz
IGRldGVybWluZSB0aGUgY29ycmVjdCBCRUdJTi9FTkQgcGFpcnMgdW5sZXNzCisvLyB0aGVzZSBh
cmUgdXNlZCBpbiB0aGUgc2FtZSBzY29wZS4gVXNlIFNUQVJUL0ZJTklTSCBtYWNyb3MgaWYgeW91
IG5lZWQgdGhlbQorLy8gdG8gYmUgaW4gc2VwYXJhdGUgc2NvcGVzLgorLy8KKy8vIEEgY29tbW9u
IHVzZSBjYXNlIGlzIHRvIHRyYWNlIGVudGlyZSBmdW5jdGlvbiBzY29wZXMuIFRoaXMKKy8vIGlz
c3VlcyBhIHRyYWNlIEJFR0lOIGFuZCBFTkQgYXV0b21hdGljYWxseToKKy8vICAgdm9pZCBkb1Nv
bWV0aGluZ0Nvc3RseSgpIHsKKy8vICAgICBUUkFDRV9FVkVOVDAoIk1ZX1NVQlNZU1RFTSIsICJk
b1NvbWV0aGluZ0Nvc3RseSIpOworLy8gICAgIC4uLgorLy8gICB9CisvLworLy8gQWRkaXRpb25h
bCBwYXJhbWV0ZXJzIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYW4gZXZlbnQ6CisvLyAgIHZvaWQg
ZG9Tb21ldGhpbmdDb3N0bHkyKGludCBob3dNdWNoKSB7CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJN
WV9TVUJTWVNURU0iLCAiZG9Tb21ldGhpbmdDb3N0bHkiLAorLy8gICAgICAgICAiaG93TXVjaCIs
IGhvd011Y2gpOworLy8gICAgIC4uLgorLy8gICB9CisvLworLy8gVGhlIHRyYWNlIHN5c3RlbSB3
aWxsIGF1dG9tYXRpY2FsbHkgYWRkIHRvIHRoaXMgaW5mb3JtYXRpb24gdGhlCisvLyBjdXJyZW50
IHByb2Nlc3MgaWQsIHRocmVhZCBpZCwgYW5kIGEgdGltZXN0YW1wIGluIG1pY3Jvc2Vjb25kcy4K
Ky8vCisvLyBUbyB0cmFjZSBhbiBhc3luY2hyb25vdXMgcHJvY2VkdXJlIHN1Y2ggYXMgYW4gSVBD
IHNlbmQvcmVjZWl2ZSwgdXNlIFNUQVJUIGFuZAorLy8gRklOSVNIOgorLy8gICBbc2luZ2xlIHRo
cmVhZGVkIHNlbmRlciBjb2RlXQorLy8gICAgIHN0YXRpYyBpbnQgc2VuZF9jb3VudCA9IDA7Cisv
LyAgICAgKytzZW5kX2NvdW50OworLy8gICAgIFRSQUNFX0VWRU5UX1NUQVJUMCgiaXBjIiwgIm1l
c3NhZ2UiLCBzZW5kX2NvdW50KTsKKy8vICAgICBTZW5kKG5ldyBNeU1lc3NhZ2Uoc2VuZF9jb3Vu
dCkpOworLy8gICBbcmVjZWl2ZSBjb2RlXQorLy8gICAgIHZvaWQgT25NeU1lc3NhZ2Uoc2VuZF9j
b3VudCkgeworLy8gICAgICAgVFJBQ0VfRVZFTlRfRklOSVNIMCgiaXBjIiwgIm1lc3NhZ2UiLCBz
ZW5kX2NvdW50KTsKKy8vICAgICB9CisvLyBUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIGEgdW5pcXVl
IElEIHRvIG1hdGNoIFNUQVJUL0ZJTklTSCBwYWlycy4KKy8vIFNUQVJUIGFuZCBGSU5JU0ggY2Fu
IG9jY3VyIG9uIGFueSB0aHJlYWQgb2YgYW55IHRyYWNlZCBwcm9jZXNzLiBQb2ludGVycyBjYW4K
Ky8vIGJlIHVzZWQgZm9yIHRoZSBJRCBwYXJhbWV0ZXIsIGFuZCB0aGV5IHdpbGwgYmUgbWFuZ2xl
ZCBpbnRlcm5hbGx5IHNvIHRoYXQKKy8vIHRoZSBzYW1lIHBvaW50ZXIgb24gdHdvIGRpZmZlcmVu
dCBwcm9jZXNzZXMgd2lsbCBub3QgbWF0Y2guIEZvciBleGFtcGxlOgorLy8gICBjbGFzcyBNeVRy
YWNlZENsYXNzIHsKKy8vICAgIHB1YmxpYzoKKy8vICAgICBNeVRyYWNlZENsYXNzKCkgeworLy8g
ICAgICAgVFJBQ0VfRVZFTlRfU1RBUlQwKCJjYXRlZ29yeSIsICJNeVRyYWNlZENsYXNzIiwgdGhp
cyk7CisvLyAgICAgfQorLy8gICAgIH5NeVRyYWNlZENsYXNzKCkgeworLy8gICAgICAgVFJBQ0Vf
RVZFTlRfRklOSVNIMCgiY2F0ZWdvcnkiLCAiTXlUcmFjZWRDbGFzcyIsIHRoaXMpOworLy8gICAg
IH0KKy8vICAgfQorLy8KKy8vIFRyYWNlIGV2ZW50IGFsc28gc3VwcG9ydHMgY291bnRlcnMsIHdo
aWNoIGlzIGEgd2F5IHRvIHRyYWNrIGEgcXVhbnRpdHkKKy8vIGFzIGl0IHZhcmllcyBvdmVyIHRp
bWUuIENvdW50ZXJzIGFyZSBjcmVhdGVkIHdpdGggdGhlIGZvbGxvd2luZyBtYWNybzoKKy8vICAg
VFJBQ0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIiLCBnX215Q291bnRlclZh
bHVlKTsKKy8vCisvLyBDb3VudGVycyBhcmUgcHJvY2Vzcy1zcGVjaWZpYy4gVGhlIG1hY3JvIGl0
c2VsZiBjYW4gYmUgaXNzdWVkIGZyb20gYW55CisvLyB0aHJlYWQsIGhvd2V2ZXIuCisvLworLy8g
U29tZXRpbWVzLCB5b3Ugd2FudCB0byB0cmFjayB0d28gY291bnRlcnMgYXQgb25jZS4gWW91IGNh
biBkbyB0aGlzIHdpdGggdHdvCisvLyBjb3VudGVyIG1hY3JvczoKKy8vICAgVFJBQ0VfQ09VTlRF
UjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIwIiwgZ19teUNvdW50ZXJWYWx1ZVswXSk7Cisv
LyAgIFRSQUNFX0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVyMSIsIGdfbXlDb3Vu
dGVyVmFsdWVbMV0pOworLy8gT3IgeW91IGNhbiBkbyBpdCB3aXRoIGEgY29tYmluZWQgbWFjcm86
CisvLyAgIFRSQUNFX0NPVU5URVIyKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVyIiwKKy8vICAg
ICAgICJieXRlc1Bpbm5lZCIsIGdfbXlDb3VudGVyVmFsdWVbMF0sCisvLyAgICAgICAiYnl0ZXNB
bGxvY2F0ZWQiLCBnX215Q291bnRlclZhbHVlWzFdKTsKKy8vIFRoaXMgaW5kaWNhdGVzIHRvIHRo
ZSB0cmFjaW5nIFVJIHRoYXQgdGhlc2UgY291bnRlcnMgc2hvdWxkIGJlIGRpc3BsYXllZAorLy8g
aW4gYSBzaW5nbGUgZ3JhcGgsIGFzIGEgc3VtbWVkIGFyZWEgY2hhcnQuCisvLworLy8gU2luY2Ug
Y291bnRlcnMgYXJlIGluIGEgZ2xvYmFsIG5hbWVzcGFjZSwgeW91IG1heSB3YW50IHRvIGRpc2Vt
YmlndWF0ZSB3aXRoIGEKKy8vIHVuaXF1ZSBJRCwgYnkgdXNpbmcgdGhlIFRSQUNFX0NPVU5URVJf
SUQqIHZhcmlhdGlvbnMuCisvLworLy8gQnkgZGVmYXVsdCwgdHJhY2UgY29sbGVjdGlvbiBpcyBj
b21waWxlZCBpbiwgYnV0IHR1cm5lZCBvZmYgYXQgcnVudGltZS4KKy8vIENvbGxlY3RpbmcgdHJh
Y2UgZGF0YSBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGVtYmVkZGluZworLy8gYXBwbGlj
YXRpb24uIEluIENocm9tZSdzIGNhc2UsIG5hdmlnYXRpbmcgdG8gYWJvdXQ6dHJhY2luZyB3aWxs
IHR1cm4gb24KKy8vIHRyYWNpbmcgYW5kIGRpc3BsYXkgZGF0YSBjb2xsZWN0ZWQgYWNyb3NzIGFs
bCBhY3RpdmUgcHJvY2Vzc2VzLgorLy8KKy8vCisvLyBNZW1vcnkgc2NvcGluZyBub3RlOgorLy8g
VHJhY2luZyBjb3BpZXMgdGhlIHBvaW50ZXJzLCBub3QgdGhlIHN0cmluZyBjb250ZW50LCBvZiB0
aGUgc3RyaW5ncyBwYXNzZWQKKy8vIGluIGZvciBjYXRlZ29yeSwgbmFtZSwgYW5kIGFyZ19uYW1l
cy4gVGh1cywgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwKKy8vIGNhdXNlIHByb2JsZW1zOgorLy8g
ICAgIGNoYXIqIHN0ciA9IHN0cmR1cCgiaW1wcHJ0YW50TmFtZSIpOworLy8gICAgIFRSQUNFX0VW
RU5UX0lOU1RBTlQwKCJTVUJTWVNURU0iLCBzdHIpOyAgLy8gQkFEIQorLy8gICAgIGZyZWUoc3Ry
KTsgICAgICAgICAgICAgICAgICAgLy8gVHJhY2Ugc3lzdGVtIG5vdyBoYXMgZGFuZ2xpbmcgcG9p
bnRlcgorLy8KKy8vIFRvIGF2b2lkIHRoaXMgaXNzdWUgd2l0aCB0aGUgfG5hbWV8IGFuZCB8YXJn
X25hbWV8IHBhcmFtZXRlcnMsIHVzZSB0aGUKKy8vIFRSQUNFX0VWRU5UX0NPUFlfWFhYIG92ZXJs
b2FkcyBvZiB0aGUgbWFjcm9zIGF0IGFkZGl0aW9uYWwgcnVudGltZSBvdmVyaGVhZC4KKy8vIE5v
dGVzOiBUaGUgY2F0ZWdvcnkgbXVzdCBhbHdheXMgYmUgaW4gYSBsb25nLWxpdmVkIGNoYXIqIChp
LmUuIHN0YXRpYyBjb25zdCkuCisvLyAgICAgICAgVGhlIHxhcmdfdmFsdWVzfCwgd2hlbiB1c2Vk
LCBhcmUgYWx3YXlzIGRlZXAgY29waWVkIHdpdGggdGhlIF9DT1BZCisvLyAgICAgICAgbWFjcm9z
LgorLy8KKy8vIFdoZW4gYXJlIHN0cmluZyBhcmd1bWVudCB2YWx1ZXMgY29waWVkOgorLy8gY29u
c3QgY2hhciogYXJnX3ZhbHVlcyBhcmUgb25seSByZWZlcmVuY2VkIGJ5IGRlZmF1bHQ6CisvLyAg
ICAgVFJBQ0VfRVZFTlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAg
ImFyZzEiLCAibGl0ZXJhbCBzdHJpbmcgaXMgb25seSByZWZlcmVuY2VkIik7CisvLyBVc2UgVFJB
Q0VfU1RSX0NPUFkgdG8gZm9yY2UgY29weWluZyBvZiBhIGNvbnN0IGNoYXIqOgorLy8gICAgIFRS
QUNFX0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisvLyAgICAgICAgICAgICAgICAgICJhcmcx
IiwgVFJBQ0VfU1RSX0NPUFkoInN0cmluZyB3aWxsIGJlIGNvcGllZCIpKTsKKy8vIHN0ZDo6c3Ry
aW5nIGFyZ192YWx1ZXMgYXJlIGFsd2F5cyBjb3BpZWQ6CisvLyAgICAgVFJBQ0VfRVZFTlQxKCJj
YXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAgImFyZzEiLCBzdGQ6OnN0cmlu
Zygic3RyaW5nIHdpbGwgYmUgY29waWVkIikpOworLy8KKy8vCisvLyBUaHJlYWQgU2FmZXR5Ogor
Ly8gQSB0aHJlYWQgc2FmZSBzaW5nbGV0b24gYW5kIG11dGV4IGFyZSB1c2VkIGZvciB0aHJlYWQg
c2FmZXR5LiBDYXRlZ29yeQorLy8gZW5hYmxlZCBmbGFncyBhcmUgdXNlZCB0byBsaW1pdCB0aGUg
cGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gdGhlIHN5c3RlbQorLy8gaXMgbm90IGVuYWJsZWQuCisv
LworLy8gVFJBQ0VfRVZFTlQgbWFjcm9zIGZpcnN0IGNhY2hlIGEgcG9pbnRlciB0byBhIGNhdGVn
b3J5LiBUaGUgY2F0ZWdvcmllcyBhcmUKKy8vIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGFuZCBzYWZl
IGF0IGFsbCB0aW1lcywgZXZlbiBhZnRlciBleGl0LiBGZXRjaGluZyBhCisvLyBjYXRlZ29yeSBp
cyBwcm90ZWN0ZWQgYnkgdGhlIFRyYWNlTG9nOjpsb2NrXy4gTXVsdGlwbGUgdGhyZWFkcyBpbml0
aWFsaXppbmcKKy8vIHRoZSBzdGF0aWMgdmFyaWFibGUgaXMgc2FmZSwgYXMgdGhleSB3aWxsIGJl
IHNlcmlhbGl6ZWQgYnkgdGhlIGxvY2sgYW5kCisvLyBtdWx0aXBsZSBjYWxscyB3aWxsIHJldHVy
biB0aGUgc2FtZSBwb2ludGVyIHRvIHRoZSBjYXRlZ29yeS4KKy8vCisvLyBUaGVuIHRoZSBjYXRl
Z29yeV9lbmFibGVkIGZsYWcgaXMgY2hlY2tlZC4gVGhpcyBpcyBhIHVuc2lnbmVkIGNoYXIsIGFu
ZAorLy8gbm90IGludGVuZGVkIHRvIGJlIG11bHRpdGhyZWFkIHNhZmUuIEl0IG9wdGltaXplcyBh
Y2Nlc3MgdG8gYWRkVHJhY2VFdmVudAorLy8gd2hpY2ggaXMgdGhyZWFkc2FmZSBpbnRlcm5hbGx5
IHZpYSBUcmFjZUxvZzo6bG9ja18uIFRoZSBlbmFibGVkIGZsYWcgbWF5CisvLyBjYXVzZSBzb21l
IHRocmVhZHMgdG8gaW5jb3JyZWN0bHkgY2FsbCBvciBza2lwIGNhbGxpbmcgYWRkVHJhY2VFdmVu
dCBuZWFyCisvLyB0aGUgdGltZSBvZiB0aGUgc3lzdGVtIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJs
ZWQuIFRoaXMgaXMgYWNjZXB0YWJsZSBhcworLy8gd2UgdG9sZXJhdGUgc29tZSBkYXRhIGxvc3Mg
d2hpbGUgdGhlIHN5c3RlbSBpcyBiZWluZyBlbmFibGVkL2Rpc2FibGVkIGFuZAorLy8gYmVjYXVz
ZSBhZGRUcmFjZUV2ZW50IGlzIHRocmVhZHNhZmUgaW50ZXJuYWxseSBhbmQgY2hlY2tzIHRoZSBl
bmFibGVkIHN0YXRlCisvLyBhZ2FpbiB1bmRlciBsb2NrLgorLy8KKy8vIFdpdGhvdXQgdGhlIHVz
ZSBvZiB0aGVzZSBzdGF0aWMgY2F0ZWdvcnkgcG9pbnRlcnMgYW5kIGVuYWJsZWQgZmxhZ3MgYWxs
CisvLyB0cmFjZSBwb2ludHMgd291bGQgY2FycnkgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBj
b3N0IG9mIGFxdWlyaW5nIGEgbG9jaworLy8gYW5kIHJlc29sdmluZyB0aGUgY2F0ZWdvcnkuCisK
ICNpZm5kZWYgVHJhY2VFdmVudF9oCiAjZGVmaW5lIFRyYWNlRXZlbnRfaAogCisjaW5jbHVkZSAi
RHluYW1pY0Fubm90YXRpb25zLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCi0jaW5j
bHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisKKy8vIElzc3VlcyBiZWdpbiB0cmFjZSBldmVudCBoZXJlIGFuZCBlbmQgdHJhY2UgZXZlbnQg
d2hlbiB0aGUgY3VycmVudCBzY29wZSBlbmRzLgorI2RlZmluZSBUUkFDRV9FVkVOVChuYW1lLCBp
ZCwgZXh0cmEpIFRSQUNFX0VWRU5UMigid2Via2l0IiwgbmFtZSwgImlkIiwgaWQsICJleHRyYSIs
IGV4dHJhKQorCisvLyBCeSBkZWZhdWx0LCBjb25zdCBjaGFyKiBhcmd1bWVudCB2YWx1ZXMgYXJl
IGFzc3VtZWQgdG8gaGF2ZSBsb25nLWxpdmVkIHNjb3BlCisvLyBhbmQgd2lsbCBub3QgYmUgY29w
aWVkLiBVc2UgdGhpcyBtYWNybyB0byBmb3JjZSBhIGNvbnN0IGNoYXIqIHRvIGJlIGNvcGllZC4K
KyNkZWZpbmUgVFJBQ0VfU1RSX0NPUFkoc3RyKSBcCisgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6
VHJhY2VTdHJpbmdXaXRoQ29weShzdHIpCisKKy8vIFJlY29yZHMgYSBwYWlyIG9mIGJlZ2luIGFu
ZCBlbmQgZXZlbnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50CisvLyBzY29wZSwgd2l0
aCAwLCAxIG9yIDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QK
Ky8vIGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBu
YW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisv
LyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJB
Q0VfRVZFTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1NDT1BFRChjYXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlQxKGNhdGVnb3J5LCBu
YW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1NDT1BFRChjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUs
IGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChjYXRlZ29y
eSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJf
dmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIGV2ZW50IGNhbGxlZCAibmFtZSIgaW1tZWRpYXRl
bHksIHdpdGggMCwgMSBvciAyCisvLyBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhlIGNhdGVn
b3J5IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMKKy8vIGRvZXMgbm90aGluZy4KKy8vIC0gY2F0
ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0
YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgor
I2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0lOU1RBTlQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBh
cmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSU5TVEFOVDIoY2F0ZWdvcnksIG5hbWUsIGFy
ZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisg
ICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwg
YXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfQ09QWV9JTlNUQU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlf
SU5TVEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAorICAgICAg
ICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFf
dmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQyKGNhdGVnb3J5LCBuYW1lLCBh
cmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAg
ICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAor
ICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUs
IGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMg
YSBzaW5nbGUgQkVHSU4gZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseSwgd2l0aCAwLCAx
IG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdvcnkgaXMgbm90IGVu
YWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFt
ZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8g
ICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNF
X0VWRU5UX0JFR0lOMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERChUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwg
VFJBQ0VfRVZFTlRfRkxBR19OT05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9CRUdJTjEoY2F0ZWdv
cnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfQkVHSU4yKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisg
ICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9B
REQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRS
QUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcy
X25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0JFR0lOMChjYXRlZ29y
eSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFT
RV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZ
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0JFR0lOMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9u
YW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVO
VF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxB
R19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0JF
R0lOMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcy
X25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VW
RU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9G
TEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcy
X3ZhbCkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBFTkQgZXZlbnQgZm9yICJuYW1lIiBpbW1lZGlh
dGVseS4gSWYgdGhlIGNhdGVnb3J5CisvLyBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzIGRvZXMg
bm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGlj
YXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3Qg
aW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9FTkQwKGNhdGVnb3J5LCBuYW1l
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FKQorI2RlZmlu
ZSBUUkFDRV9FVkVOVF9FTkQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAor
ICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUs
IGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9FTkQyKGNhdGVnb3J5LCBuYW1lLCBhcmcx
X25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
Q09QWV9FTkQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
KFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0Vf
RVZFTlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0VORDEoY2F0ZWdvcnks
IG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9B
REQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFD
RV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0NPUFlfRU5EMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAg
ICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
KFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0Vf
RVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFt
ZSwgYXJnMl92YWwpCisKKy8vIFRpbWUgdGhyZXNob2xkIGV2ZW50OgorLy8gT25seSByZWNvcmQg
dGhlIGV2ZW50IGlmIHRoZSBkdXJhdGlvbiBpcyBncmVhdGVyIHRoYW4gdGhlIHNwZWNpZmllZAor
Ly8gdGhyZXNob2xkX3VzICh0aW1lIGluIG1pY3Jvc2Vjb25kcykuCisvLyBSZWNvcmRzIGEgcGFp
ciBvZiBiZWdpbiBhbmQgZW5kIGV2ZW50cyBjYWxsZWQgIm5hbWUiIGZvciB0aGUgY3VycmVudAor
Ly8gc2NvcGUsIHdpdGggMCwgMSBvciAyIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0
ZWdvcnkgaXMgbm90CisvLyBlbmFibGVkLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nLgorLy8gLSBj
YXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAo
c3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMu
CisjZGVmaW5lIFRSQUNFX0VWRU5UX0lGX0xPTkdFUl9USEFOMCh0aHJlc2hvbGRfdXMsIGNhdGVn
b3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9JRl9MT05H
RVJfVEhBTih0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9JRl9MT05HRVJfVEhBTjEoIFwKKyAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lLCBh
cmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BF
RF9JRl9MT05HRVJfVEhBTiggXAorICAgICAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1l
LCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9JRl9MT05HRVJfVEhB
TjIoIFwKKyAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFf
dmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1NDT1BFRF9JRl9MT05HRVJfVEhBTiggXAorICAgICAgICB0aHJlc2hvbGRfdXMsIGNhdGVnb3J5
LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBS
ZWNvcmRzIHRoZSB2YWx1ZSBvZiBhIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4g
VmFsdWUKKy8vIG11c3QgYmUgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCBpbnRlZ2VyLgorLy8g
LSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGlt
ZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hh
cnMuCisjZGVmaW5lIFRSQUNFX0NPVU5URVIxKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZSkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisg
ICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIFwKKyAgICAgICAg
InZhbHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisjZGVmaW5lIFRSQUNFX0NPUFlfQ09V
TlRFUjEoY2F0ZWdvcnksIG5hbWUsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
QUREKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNfY2FzdDxp
bnQ+KHZhbHVlKSkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWVzIG9mIGEgbXVsdGktcGFydGVkIGNv
dW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4KKy8vIFRoZSBVSSB3aWxsIHRyZWF0IHZh
bHVlMSBhbmQgdmFsdWUyIGFzIHBhcnRzIG9mIGEgd2hvbGUsIGRpc3BsYXlpbmcgdGhlaXIKKy8v
IHZhbHVlcyBhcyBhIHN0YWNrZWQtYmFyIGNoYXJ0LgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBz
dHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBs
aXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNFX0NP
VU5URVIyKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAorICAgICAg
ICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBU
UkFDRV9FVkVOVF9GTEFHX05PTkUsIFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0
PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGlu
dD4odmFsdWUyX3ZhbCkpCisjZGVmaW5lIFRSQUNFX0NPUFlfQ09VTlRFUjIoY2F0ZWdvcnksIG5h
bWUsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCB2YWx1
ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNF
X0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09Q
WSwgXAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwg
XAorICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKwor
Ly8gUmVjb3JkcyB0aGUgdmFsdWUgb2YgYSBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1tZWRpYXRl
bHkuIFZhbHVlCisvLyBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgYSAzMiBiaXQgaW50ZWdlci4K
Ky8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlm
ZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAi
IGNoYXJzLgorLy8gLSB8aWR8IGlzIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGNvdW50ZXJzIHdpdGgg
dGhlIHNhbWUgbmFtZS4gSXQgbXVzdCBlaXRoZXIKKy8vICAgYmUgYSBwb2ludGVyIG9yIGFuIGlu
dGVnZXIgdmFsdWUgdXAgdG8gNjQgYml0cy4gSWYgaXQncyBhIHBvaW50ZXIsIHRoZSBiaXRzCisv
LyAgIHdpbGwgYmUgeG9yZWQgd2l0aCBhIGhhc2ggb2YgdGhlIHByb2Nlc3MgSUQgc28gdGhhdCB0
aGUgc2FtZSBwb2ludGVyIG9uCisvLyAgIHR3byBkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90
IGNvbGxpZGUuCisjZGVmaW5lIFRSQUNFX0NPVU5URVJfSUQxKGNhdGVnb3J5LCBuYW1lLCBpZCwg
dmFsdWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVO
VF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZF
TlRfRkxBR19OT05FLCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUp
KQorI2RlZmluZSBUUkFDRV9DT1BZX0NPVU5URVJfSUQxKGNhdGVnb3J5LCBuYW1lLCBpZCwgdmFs
dWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9Q
SEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRf
RkxBR19DT1BZLCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUpKQor
CisvLyBSZWNvcmRzIHRoZSB2YWx1ZXMgb2YgYSBtdWx0aS1wYXJ0ZWQgY291bnRlciBjYWxsZWQg
Im5hbWUiIGltbWVkaWF0ZWx5LgorLy8gVGhlIFVJIHdpbGwgdHJlYXQgdmFsdWUxIGFuZCB2YWx1
ZTIgYXMgcGFydHMgb2YgYSB3aG9sZSwgZGlzcGxheWluZyB0aGVpcgorLy8gdmFsdWVzIGFzIGEg
c3RhY2tlZC1iYXIgY2hhcnQuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBo
YXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhl
eSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRvIGRpc2FtYmln
dWF0ZSBjb3VudGVycyB3aXRoIHRoZSBzYW1lIG5hbWUuIEl0IG11c3QgZWl0aGVyCisvLyAgIGJl
IGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElmIGl0J3MgYSBw
b2ludGVyLCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNoIG9mIHRoZSBw
cm9jZXNzIElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28gZGlmZmVyZW50
IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSX0lEMihj
YXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZh
bHVlMl9uYW1lLCB2YWx1ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJ
VEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3Rh
dGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGlj
X2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSX0lEMihj
YXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZh
bHVlMl9uYW1lLCB2YWx1ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJ
VEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3Rh
dGljX2Nhc3Q8aW50Pih2YWx1ZTFfdmFsKSwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGlj
X2Nhc3Q8aW50Pih2YWx1ZTJfdmFsKSkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBTVEFSVCBldmVu
dCBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LCB3aXRoIDAsIDEgb3IgMgorLy8gYXNzb2NpYXRl
ZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzCisv
LyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZl
IGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBt
YXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRvIG1hdGNoIHRoZSBT
VEFSVCBldmVudCB3aXRoIHRoZSBGSU5JU0ggZXZlbnQuIEl0IG11c3QgZWl0aGVyCisvLyAgIGJl
IGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElmIGl0J3MgYSBw
b2ludGVyLCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNoIG9mIHRoZSBw
cm9jZXNzIElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28gZGlmZmVyZW50
IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9FVkVOVF9TVEFSVDAo
Y2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhf
SUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlk
LCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NUQVJUMShjYXRl
Z29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFD
RV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcx
X3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfU1RBUlQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJn
MV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQs
IFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIFwK
KyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfQ09QWV9TVEFSVDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwK
KyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVm
aW5lIFRSQUNFX0VWRU5UX0NPUFlfU1RBUlQxKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1l
LCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNF
X0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0Vf
RVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5l
IFRSQUNFX0VWRU5UX0NPUFlfU1RBUlQyKGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBh
cmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAg
YXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyBh
IHNpbmdsZSBGSU5JU0ggZXZlbnQgZm9yICJuYW1lIiBpbW1lZGlhdGVseS4gSWYgdGhlIGNhdGVn
b3J5CisvLyBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzIGRvZXMgbm90aGluZy4KKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfRklOSVNIMChjYXRlZ29yeSwgbmFtZSwgaWQpIFwKKyAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVmaW5lIFRS
QUNFX0VWRU5UX0ZJTklTSDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFs
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhB
U0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxB
R19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GSU5JU0gy
KGNhdGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcy
X25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQo
VFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwg
VFJBQ0VfRVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFy
ZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRklOSVNIMChjYXRl
Z29yeSwgbmFtZSwgaWQpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChU
UkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBU
UkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRklOSVNIMShj
YXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9GSU5JU0gyKGNh
dGVnb3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25h
bWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJB
Q0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJB
Q0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJf
bmFtZSwgYXJnMl92YWwpCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBJbXBsZW1lbnRh
dGlvbiBzcGVjaWZpYyB0cmFjaW5nIEFQSSBkZWZpbml0aW9ucy4KKworLy8gR2V0IGEgcG9pbnRl
ciB0byB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgZ2l2ZW4gdHJhY2UgY2F0ZWdvcnkuIE9ubHkK
Ky8vIGxvbmctbGl2ZWQgbGl0ZXJhbCBzdHJpbmdzIHNob3VsZCBiZSBnaXZlbiBhcyB0aGUgY2F0
ZWdvcnkgbmFtZS4gVGhlIHJldHVybmVkCisvLyBwb2ludGVyIGNhbiBiZSBoZWxkIHBlcm1hbmVu
dGx5IGluIGEgbG9jYWwgc3RhdGljIGZvciBleGFtcGxlLiBJZiB0aGUKKy8vIHVuc2lnbmVkIGNo
YXIgaXMgbm9uLXplcm8sIHRyYWNpbmcgaXMgZW5hYmxlZC4gSWYgdHJhY2luZyBpcyBlbmFibGVk
LAorLy8gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCBjYW4gYmUgY2FsbGVkLiBJdCdz
IE9LIGlmIHRyYWNpbmcgaXMgZGlzYWJsZWQKKy8vIGJldHdlZW4gdGhlIGxvYWQgb2YgdGhlIHRy
YWNpbmcgc3RhdGUgYW5kIHRoZSBjYWxsIHRvCisvLyBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNF
X0VWRU5ULCBiZWNhdXNlIHRoaXMgZmxhZyBvbmx5IHByb3ZpZGVzIGFuIGVhcmx5IG91dAorLy8g
Zm9yIGJlc3QgcGVyZm9ybWFuY2Ugd2hlbiB0cmFjaW5nIGlzIGRpc2FibGVkLgorLy8gY29uc3Qg
dW5zaWduZWQgY2hhcioKKy8vICAgICBUUkFDRV9FVkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJM
RUQoY29uc3QgY2hhciogY2F0ZWdvcnlfbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQVBJX0dF
VF9DQVRFR09SWV9FTkFCTEVEIFwKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OmdldFRy
YWNlQ2F0ZWdvcnlFbmFibGVkRmxhZworCisvLyBBZGQgYSB0cmFjZSBldmVudCB0byB0aGUgcGxh
dGZvcm0gdHJhY2luZyBzeXN0ZW0uIFJldHVybnMgdGhyZXNob2xkQmVnaW5JZAorLy8gZm9yIHVz
ZSBpbiBhIGNvcnJlc3BvbmRpbmcgZW5kIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQg
Y2FsbC4KKy8vIGludCBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorLy8gICAgICAg
ICAgICAgICAgICAgIGNoYXIgcGhhc2UsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z
aWduZWQgY2hhciogY2F0ZWdvcnlfZW5hYmxlZCwKKy8vICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBuYW1lLAorLy8gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBp
ZCwKKy8vICAgICAgICAgICAgICAgICAgICBpbnQgbnVtX2FyZ3MsCisvLyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhcioqIGFyZ19uYW1lcywKKy8vICAgICAgICAgICAgICAgICAgICBjb25z
dCB1bnNpZ25lZCBjaGFyKiBhcmdfdHlwZXMsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBsb25nKiBhcmdfdmFsdWVzLAorLy8gICAgICAgICAgICAgICAgICAgIGlu
dCB0aHJlc2hvbGRCZWdpbklELAorLy8gICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aHJl
c2hvbGQsCisvLyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncykKKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCBcCisgICAgV2ViQ29yZTo6UGxhdGZv
cm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIC8v
IEltcGxlbWVudGF0aW9uIGRldGFpbDogdHJhY2UgZXZlbnQgbWFjcm9zIGNyZWF0ZSB0ZW1wb3Jh
cnkgdmFyaWFibGVzCiAvLyB0byBrZWVwIGluc3RydW1lbnRhdGlvbiBvdmVyaGVhZCBsb3cuIFRo
ZXNlIG1hY3JvcyBnaXZlIGVhY2ggdGVtcG9yYXJ5CiAvLyB2YXJpYWJsZSBhIHVuaXF1ZSBuYW1l
IGJhc2VkIG9uIHRoZSBsaW5lIG51bWJlciB0byBwcmV2ZW50IG5hbWUgY29sbGlzc2lvbnMuCi0j
ZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIzKGEsIGIpIGEjI2IKLSNk
ZWZpbmUgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUjIoYSwgYikgVFJBQ0VfRVZF
TlRfTUFLRV9VTklRVUVfSURFTlRJRklFUjMoYSwgYikKLSNkZWZpbmUgVFJBQ0VfRVZFTlRfTUFL
RV9VTklRVUVfSURFTlRJRklFUihuYW1lX3ByZWZpeCkgVFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVf
SURFTlRJRklFUjIobmFtZV9wcmVmaXgsIF9fTElORV9fKQorI2RlZmluZSBJTlRFUk5BTF9UUkFD
RV9FVkVOVF9VSUQzKGEsIGIpIFwKKyAgICB0cmFjZV9ldmVudF91bmlxdWVfIyNhIyNiCisjZGVm
aW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJRDIoYSwgYikgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX1VJRDMoYSwgYikKKyNkZWZpbmUgSU5URVJOQUxUUkFDRUVWRU5UVUlEKG5hbWVfcHJl
Zml4KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMihuYW1lX3ByZWZpeCwgX19MSU5F
X18pCisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRl
IHN0YXRpYyBjYXRlZ29yeS4KKy8vIC0gV1RGX0FOTk9UQVRFX0JFTklHTl9SQUNFLCBzZWUgVGhy
ZWFkIFNhZmV0eSBhYm92ZS4KKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVH
T1JZX0lORk8oY2F0ZWdvcnkpIFwKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciogSU5U
RVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykgPSAwOyBcCisgICAgV1RGX0FOTk9UQVRFX0JF
TklHTl9SQUNFKCZJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidHJhY2VfZXZlbnQgY2F0ZWdvcnkiKTsgXAorICAgIGlmICgh
SU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIFwKKyAgICAgIElOVEVSTkFMVFJBQ0VF
VkVOVFVJRChjYXRzdGF0aWMpID0gXAorICAgICAgICAgIFRSQUNFX0VWRU5UX0FQSV9HRVRfQ0FU
RUdPUllfRU5BQkxFRChjYXRlZ29yeSk7CisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50
ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeSBhbmQgYWRkCisvLyBldmVudCBp
ZiB0aGUgY2F0ZWdvcnkgaXMgZW5hYmxlZC4KKyNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikK
KyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKGlnbm9yZSkgKCh2b2lkKTApCisjZWxz
ZQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQocGhhc2UsIGNhdGVnb3J5LCBuYW1l
LCBmbGFncywgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lO
Rk8oY2F0ZWdvcnkpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGlj
KSkgeyBcCisgICAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KCBcCisgICAg
ICAgICAgcGhhc2UsIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBuYW1lLCBcCisg
ICAgICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6bm9FdmVudElkLCBmbGFncywgIyNfX1ZBX0FS
R1NfXyk7IFwKKyAgICB9CisjZW5kaWYKKworLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBpbnRl
cm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5IGFuZCBhZGQgYmVnaW4KKy8vIGV2
ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLiBBbHNvIGFkZHMgdGhlIGVuZCBldmVudCB3
aGVuIHRoZSBzY29wZQorLy8gZW5kcy4KKyNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikKKyNk
ZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChpZ25vcmUpICgodm9pZCkwKQor
I2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRChjYXRlZ29yeSwg
bmFtZSwgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8o
Y2F0ZWdvcnkpOyBcCisgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xv
c2UgXAorICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQocHJvZmlsZVNjb3BlKTsgXAorICAg
IGlmICgqSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAgICAgV2ViQ29y
ZTo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAgICAgICAgIFRSQUNFX0VWRU5UX1BI
QVNFX0JFR0lOLCBcCisgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyks
IFwKKyAgICAgICAgICBuYW1lLCBXZWJDb3JlOjpUcmFjZUV2ZW50Ojpub0V2ZW50SWQsIFwKKyAg
ICAgICAgICBUUkFDRV9FVkVOVF9GTEFHX05PTkUsICMjX19WQV9BUkdTX18pOyBcCisgICAgICBJ
TlRFUk5BTFRSQUNFRVZFTlRVSUQocHJvZmlsZVNjb3BlKS5pbml0aWFsaXplKCBcCisgICAgICAg
ICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIG5hbWUpOyBcCisgICAgfQorI2Vu
ZGlmCisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRl
IHN0YXRpYyBjYXRlZ29yeSBhbmQgYWRkIGJlZ2luCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkg
aXMgZW5hYmxlZC4gQWxzbyBhZGRzIHRoZSBlbmQgZXZlbnQgd2hlbiB0aGUgc2NvcGUKKy8vIGVu
ZHMuIElmIHRoZSBlbGFwc2VkIHRpbWUgaXMgPCB0aHJlc2hvbGQgdGltZSwgdGhlIGJlZ2luL2Vu
ZCBwYWlyIGlzIGVyYXNlZC4KKyNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikKKyNkZWZpbmUg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9JRl9MT05HRVJfVEhBTihpZ25vcmUpICgo
dm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1NDT1BFRF9J
Rl9MT05HRVJfVEhBTih0aHJlc2hvbGQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIC4uLikg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsg
XAorICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xk
IFwKKyAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSk7IFwKKyAgICBp
ZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7IFwKKyAgICAgIGludCBJTlRF
Uk5BTFRSQUNFRVZFTlRVSUQoYmVnaW5fZXZlbnRfaWQpID0gXAorICAgICAgICBXZWJDb3JlOjpU
cmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KCBcCisgICAgICAgICAgICBUUkFDRV9FVkVOVF9QSEFT
RV9CRUdJTiwgXAorICAgICAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyks
IFwKKyAgICAgICAgICAgIG5hbWUsIFdlYkNvcmU6OlRyYWNlRXZlbnQ6Om5vRXZlbnRJZCwgXAor
ICAgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCAjI19fVkFfQVJHU19fKTsgXAorICAg
ICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSkuaW5pdGlhbGl6ZSggXAorICAg
ICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBuYW1lLCBcCisgICAgICAg
ICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGJlZ2luX2V2ZW50X2lkKSwgdGhyZXNob2xkKTsgXAor
ICAgIH0KKyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1hY3Jv
IHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZAorLy8gZXZlbnQgaWYgdGhlIGNhdGVn
b3J5IGlzIGVuYWJsZWQuCisjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKGlnbm9yZSkgKCh2b2lkKTApCisjZWxzZQor
I2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChwaGFzZSwgY2F0ZWdvcnks
IG5hbWUsIGlkLCBmbGFncywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdPUllfSU5GTyhj
YXRlZ29yeSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7
IFwKKyAgICAgIHVuc2lnbmVkIGNoYXIgdHJhY2VFdmVudEZsYWdzID0gZmxhZ3MgfCBUUkFDRV9F
VkVOVF9GTEFHX0hBU19JRDsgXAorICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VJRCB0
cmFjZUV2ZW50VHJhY2VJRCggXAorICAgICAgICAgIGlkLCAmdHJhY2VFdmVudEZsYWdzKTsgXAor
ICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAgICAgICAgIHBo
YXNlLCBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgXAorICAgICAgICAgIG5hbWUs
IHRyYWNlRXZlbnRUcmFjZUlELmRhdGEoKSwgdHJhY2VFdmVudEZsYWdzLCBcCisgICAgICAgICAg
IyNfX1ZBX0FSR1NfXyk7IFwKKyAgICB9CisjZW5kaWYKKworLy8gTm90ZXMgcmVnYXJkaW5nIHRo
ZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnM6CisvLyBOZXcgdmFsdWVzIGNhbiBiZSBhZGRlZCBhbmQg
cHJvcGFnYXRlZCB0byB0aGlyZCBwYXJ0eSBsaWJyYXJpZXMsIGJ1dCBleGlzdGluZworLy8gZGVm
aW5pdGlvbnMgbXVzdCBuZXZlciBiZSBjaGFuZ2VkLCBiZWNhdXNlIHRoaXJkIHBhcnR5IGxpYnJh
cmllcyBtYXkgdXNlIG9sZAorLy8gZGVmaW5pdGlvbnMuCisKKy8vIFBoYXNlIGluZGljYXRlcyB0
aGUgbmF0dXJlIG9mIGFuIGV2ZW50IGVudHJ5LiBFLmcuIHBhcnQgb2YgYSBiZWdpbi9lbmQgcGFp
ci4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4gICAgKCdCJykKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfUEhBU0VfRU5EICAgICAgKCdFJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0Vf
SU5TVEFOVCAgKCdJJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfU1RBUlQgICAgKCdTJykK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNIICAgKCdGJykKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfUEhBU0VfTUVUQURBVEEgKCdNJykKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfUEhBU0VfQ09V
TlRFUiAgKCdDJykKKworLy8gRmxhZ3MgZm9yIGNoYW5naW5nIHRoZSBiZWhhdmlvciBvZiBUUkFD
RV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5ULgorI2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX05P
TkUgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwKSkKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfRkxBR19DT1BZICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSA8PCAw
KSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQgICAgICAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4oMSA8PCAxKSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxBR19NQU5HTEVfSUQg
ICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMSA8PCAyKSkKKworLy8gVHlwZSB2YWx1ZXMg
Zm9yIGlkZW50aWZ5aW5nIHR5cGVzIGluIHRoZSBUcmFjZVZhbHVlIHVuaW9uLgorI2RlZmluZSBU
UkFDRV9WQUxVRV9UWVBFX0JPT0wgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
MSkpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCAgICAgICAgIChzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPigyKSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9JTlQgICAgICAgICAg
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDMpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBF
X0RPVUJMRSAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNCkpCisjZGVmaW5lIFRS
QUNFX1ZBTFVFX1RZUEVfUE9JTlRFUiAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig1
KSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9TVFJJTkcgICAgICAgKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KDYpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX0NPUFlfU1RSSU5HICAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNykpCiAKLS8vIElzc3VlcyBQbGF0Zm9ybVN1cHBv
cnQ6OnRyYWNlRXZlbnRCZWdpbiBhbmQgdHJhY2VFdmVudEVuZCBjYWxscyBmb3IgdGhlIGVuY2xv
c2luZyBzY29wZQotI2RlZmluZSBUUkFDRV9FVkVOVChuYW1lLCBpZCwgZXh0cmEpIFdlYkNvcmU6
OmludGVybmFsOjpTY29wZVRyYWNlciBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElGSUVS
KF9fdHJhY2VFdmVudFNjb3BlKShuYW1lLCBpZCwgZXh0cmEpOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLW5hbWVzcGFjZSBpbnRlcm5hbCB7CituYW1lc3BhY2UgVHJhY2VFdmVudCB7CisKKy8v
IFNwZWNpZnkgdGhlc2UgdmFsdWVzIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgb2Yg
YWRkVHJhY2VFdmVudCBpcyBub3QKKy8vIHVzZWQuCitjb25zdCBpbnQgemVyb051bUFyZ3MgPSAw
OworY29uc3QgaW50IG5vVGhyZXNob2xkQmVnaW5JZCA9IC0xOworY29uc3QgbG9uZyBsb25nIG5v
VGhyZXNob2xkVmFsdWUgPSAwOworY29uc3QgdW5zaWduZWQgbG9uZyBsb25nIG5vRXZlbnRJZCA9
IDA7CiAKLS8vIFVzZWQgYnkgVFJBQ0VfRVZFTlQgbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHku
Ci1jbGFzcyBTY29wZVRyYWNlciB7CisvLyBUcmFjZUlEIGVuY2Fwc3VsYXRlcyBhbiBJRCB0aGF0
IGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciBvciBwb2ludGVyLiBQb2ludGVycworLy8gYXJlIG1h
bmdsZWQgd2l0aCB0aGUgUHJvY2VzcyBJRCBzbyB0aGF0IHRoZXkgYXJlIHVubGlrZWx5IHRvIGNv
bGxpZGUgd2hlbiB0aGUKKy8vIHNhbWUgcG9pbnRlciBpcyB1c2VkIG9uIGRpZmZlcmVudCBwcm9j
ZXNzZXMuCitjbGFzcyBUcmFjZUlEIHsKIHB1YmxpYzoKLSAgICBTY29wZVRyYWNlcihjb25zdCBj
aGFyKiBuYW1lLCB2b2lkKiwgY29uc3QgY2hhciogZXh0cmEpOwotICAgIH5TY29wZVRyYWNlcigp
OworICAgIGV4cGxpY2l0IFRyYWNlSUQoY29uc3Qgdm9pZCogaWQsIHVuc2lnbmVkIGNoYXIqIGZs
YWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgbG9uZz4oaWQpKSkKKyAgICB7CisgICAgICAgICpmbGFn
cyB8PSBUUkFDRV9FVkVOVF9GTEFHX01BTkdMRV9JRDsKKyAgICB9CisgICAgZXhwbGljaXQgVHJh
Y2VJRCh1bnNpZ25lZCBsb25nIGxvbmcgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0
YShpZCkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgbG9u
ZyBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDogbV9kYXRhKGlkKSB7ICh2b2lkKWZsYWdzOyB9
CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGNoYXIqIGZs
YWdzKSA6IG1fZGF0YShpZCkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQo
dW5zaWduZWQgc2hvcnQgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0YShpZCkgeyAo
dm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgY2hhciBpZCwgdW5z
aWduZWQgY2hhciogZmxhZ3MpIDogbV9kYXRhKGlkKSB7ICh2b2lkKWZsYWdzOyB9CisgICAgZXhw
bGljaXQgVHJhY2VJRChsb25nIGxvbmcgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAg
ICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGlkKSkgeyAodm9pZClm
bGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQobG9uZyBpZCwgdW5zaWduZWQgY2hhciogZmxh
Z3MpIDoKKyAgICAgICAgbV9kYXRhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oaWQp
KSB7ICh2b2lkKWZsYWdzOyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChpbnQgaWQsIHVuc2lnbmVk
IGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
IGxvbmc+KGlkKSkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQoc2hvcnQg
aWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KGlkKSkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRy
YWNlSUQoc2lnbmVkIGNoYXIgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1f
ZGF0YShzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGlkKSkgeyAodm9pZClmbGFnczsg
fQorCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7
IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9kYXRhOworfTsKKworLy8g
U2ltcGxlIHVuaW9uIHRvIHN0b3JlIHZhcmlvdXMgdHlwZXMgYXMgdW5zaWduZWQgbG9uZyBsb25n
LgordW5pb24gVHJhY2VWYWx1ZVVuaW9uIHsKKyAgICBib29sIG1fYm9vbDsKKyAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgbV91aW50OworICAgIGxvbmcgbG9uZyBtX2ludDsKKyAgICBkb3VibGUgbV9k
b3VibGU7CisgICAgY29uc3Qgdm9pZCogbV9wb2ludGVyOworICAgIGNvbnN0IGNoYXIqIG1fc3Ry
aW5nOworfTsKIAorLy8gU2ltcGxlIGNvbnRhaW5lciBmb3IgY29uc3QgY2hhciogdGhhdCBzaG91
bGQgYmUgY29waWVkIGluc3RlYWQgb2YgcmV0YWluZWQuCitjbGFzcyBUcmFjZVN0cmluZ1dpdGhD
b3B5IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBUcmFjZVN0cmluZ1dpdGhDb3B5KGNvbnN0IGNo
YXIqIHN0cikgOiBtX3N0cihzdHIpIHsgfQorICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqICgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RyOyB9CiBwcml2YXRlOgotICAgIGNvbnN0IGNoYXIqIG1fbmFtZTsK
LSAgICB2b2lkKiBtX2lkOwotICAgIE93bkFycmF5UHRyPGNoYXI+IG1fZXh0cmE7CisgICAgY29u
c3QgY2hhciogbV9zdHI7CiB9OwogCi1pbmxpbmUgU2NvcGVUcmFjZXI6OlNjb3BlVHJhY2VyKGNv
bnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkKLSAgICA6IG1fbmFt
ZShuYW1lKQotICAgICwgbV9pZChpZCkKLXsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZl
bnRCZWdpbihuYW1lLCBpZCwgZXh0cmEpOyBcCi0gICAgaWYgKGV4dHJhICYmIFBsYXRmb3JtU3Vw
cG9ydDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgpKQotICAgICAgICBtX2V4dHJhID0gYWRvcHRBcnJh
eVB0cihzdHJkdXAoZXh0cmEpKTsKKy8vIERlZmluZSBzZXRUcmFjZVZhbHVlIGZvciBlYWNoIGFs
bG93ZWQgdHlwZS4gSXQgc3RvcmVzIHRoZSB0eXBlIGFuZAorLy8gdmFsdWUgaW4gdGhlIHJldHVy
biBhcmd1bWVudHMuIFRoaXMgYWxsb3dzIHRoaXMgQVBJIHRvIGF2b2lkIGRlY2xhcmluZyBhbnkK
Ky8vIHN0cnVjdHVyZXMgc28gdGhhdCBpdCBpcyBwb3J0YWJsZSB0byB0aGlyZF9wYXJ0eSBsaWJy
YXJpZXMuCisjZGVmaW5lIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGFjdHVhbF90
eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uX21l
bWJlciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90
eXBlX2lkKSBcCisgICAgc3RhdGljIGlubGluZSB2b2lkIHNldFRyYWNlVmFsdWUoYWN0dWFsX3R5
cGUgYXJnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciogdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyogdmFsdWUpIHsgXAorICAgICAgICBUcmFjZVZhbHVlVW5pb24gdHlwZVZh
bHVlOyBcCisgICAgICAgIHR5cGVWYWx1ZS51bmlvbl9tZW1iZXIgPSBhcmc7IFwKKyAgICAgICAg
KnR5cGUgPSB2YWx1ZV90eXBlX2lkOyBcCisgICAgICAgICp2YWx1ZSA9IHR5cGVWYWx1ZS5tX3Vp
bnQ7IFwKKyAgICB9CisvLyBTaW1wbGVyIGZvcm0gZm9yIGludCB0eXBlcyB0aGF0IGNhbiBiZSBz
YWZlbHkgY2FzdGVkLgorI2RlZmluZSBJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9J
TlQoYWN0dWFsX3R5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlX3R5cGVfaWQpIFwKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgc2V0VHJhY2VW
YWx1ZShhY3R1YWxfdHlwZSBhcmcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyKiB0eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2YWx1ZSkgeyBcCisgICAgICAgICp0eXBlID0g
dmFsdWVfdHlwZV9pZDsgXAorICAgICAgICAqdmFsdWUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KGFyZyk7IFwKKyAgICB9CisKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZB
TFVFX0lOVCh1bnNpZ25lZCBsb25nIGxvbmcsIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCkKK0lOVEVS
TkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBpbnQsIFRSQUNFX1ZBTFVF
X1RZUEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25l
ZCBzaG9ydCwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJB
Q0VfVkFMVUVfSU5UKHVuc2lnbmVkIGNoYXIsIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCkKK0lOVEVS
TkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChsb25nIGxvbmcsIFRSQUNFX1ZBTFVFX1RZ
UEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKGludCwgVFJBQ0Vf
VkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQoc2hv
cnQsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFM
VUVfSU5UKHNpZ25lZCBjaGFyLCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkKK0lOVEVSTkFMX0RFQ0xB
UkVfU0VUX1RSQUNFX1ZBTFVFKGJvb2wsIG1fYm9vbCwgVFJBQ0VfVkFMVUVfVFlQRV9CT09MKQor
SU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoZG91YmxlLCBtX2RvdWJsZSwgVFJBQ0Vf
VkFMVUVfVFlQRV9ET1VCTEUpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShjb25z
dCB2b2lkKiwgbV9wb2ludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJB
Q0VfVkFMVUVfVFlQRV9QT0lOVEVSKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUo
Y29uc3QgY2hhciosIG1fc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFJBQ0VfVkFMVUVfVFlQRV9TVFJJTkcpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxV
RShjb25zdCBUcmFjZVN0cmluZ1dpdGhDb3B5JiwgbV9zdHJpbmcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUkFDRV9WQUxVRV9UWVBFX0NPUFlfU1RSSU5HKQorCisjdW5kZWYg
SU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUKKyN1bmRlZiBJTlRFUk5BTF9ERUNMQVJF
X1NFVF9UUkFDRV9WQUxVRV9JTlQKKworLy8gV1RGOjpTdHJpbmcgdmVyc2lvbiBvZiBzZXRUcmFj
ZVZhbHVlIHNvIHRoYXQgdHJhY2UgYXJndW1lbnRzIGNhbiBiZSBzdHJpbmdzLgorc3RhdGljIGlu
bGluZSB2b2lkIHNldFRyYWNlVmFsdWUoY29uc3QgV1RGOjpDU3RyaW5nJiBhcmcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nKiB2YWx1ZSkgeworICAg
IFRyYWNlVmFsdWVVbmlvbiB0eXBlVmFsdWU7CisgICAgdHlwZVZhbHVlLm1fc3RyaW5nID0gYXJn
LmRhdGEoKTsKKyAgICAqdHlwZSA9IFRSQUNFX1ZBTFVFX1RZUEVfQ09QWV9TVFJJTkc7CisgICAg
KnZhbHVlID0gdHlwZVZhbHVlLm1fdWludDsKIH0KIAotaW5saW5lIFNjb3BlVHJhY2VyOjp+U2Nv
cGVUcmFjZXIoKQotewotICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVuZChtX25hbWUs
IG1faWQsIG1fZXh0cmEuZ2V0KCkpOworLy8gVGhlc2UgYWRkVHJhY2VFdmVudCB0ZW1wbGF0ZSBm
dW5jdGlvbnMgYXJlIGRlZmluZWQgaGVyZSBpbnN0ZWFkIG9mIGluIHRoZQorLy8gbWFjcm8sIGJl
Y2F1c2UgdGhlIGFyZyB2YWx1ZXMgY291bGQgYmUgdGVtcG9yYXJ5IHN0cmluZyBvYmplY3RzLiBJ
biBvcmRlciB0bworLy8gc3RvcmUgcG9pbnRlcnMgdG8gdGhlIGludGVybmFsIGNfc3RyIGFuZCBw
YXNzIHRocm91Z2ggdG8gdGhlIHRyYWNpbmcgQVBJLCB0aGUKKy8vIGFyZyB2YWx1ZXMgbXVzdCBs
aXZlIHRocm91Z2hvdXQgdGhlc2UgcHJvY2VkdXJlcy4KKworc3RhdGljIGlubGluZSBpbnQgYWRk
VHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBmbGFncykgeworICAgIHJldHVybiBUUkFDRV9FVkVOVF9BUElf
QUREX1RSQUNFX0VWRU5UKAorICAgICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBp
ZCwKKyAgICAgICAgemVyb051bUFyZ3MsIDAsIDAsIDAsCisgICAgICAgIG5vVGhyZXNob2xkQmVn
aW5JZCwgbm9UaHJlc2hvbGRWYWx1ZSwgZmxhZ3MpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBBUkcx
X1RZUEU+CitzdGF0aWMgaW5saW5lIGludCBhZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5
RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBhcmcxTmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVJHMV9UWVBFJiBhcmcxVmFsKSB7
CisgICAgY29uc3QgaW50IG51bUFyZ3MgPSAxOworICAgIHVuc2lnbmVkIGNoYXIgYXJnVHlwZXNb
MV07CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZ1ZhbHVlc1sxXTsKKyAgICBzZXRUcmFjZVZh
bHVlKGFyZzFWYWwsICZhcmdUeXBlc1swXSwgJmFyZ1ZhbHVlc1swXSk7CisgICAgcmV0dXJuIFRS
QUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVu
YWJsZWQsIG5hbWUsIGlkLAorICAgICAgICBudW1BcmdzLCAmYXJnMU5hbWUsIGFyZ1R5cGVzLCBh
cmdWYWx1ZXMsCisgICAgICAgIG5vVGhyZXNob2xkQmVnaW5JZCwgbm9UaHJlc2hvbGRWYWx1ZSwg
ZmxhZ3MpOwogfQogCi19IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAordGVtcGxhdGU8Y2xhc3MgQVJH
MV9UWVBFLCBjbGFzcyBBUkcyX1RZUEU+CitzdGF0aWMgaW5saW5lIGludCBhZGRUcmFjZUV2ZW50
KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhcmcxTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVJH
MV9UWVBFJiBhcmcxVmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBhcmcyTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVJH
Ml9UWVBFJiBhcmcyVmFsKSB7CisgICAgY29uc3QgaW50IG51bUFyZ3MgPSAyOworICAgIGNvbnN0
IGNoYXIqIGFyZ05hbWVzWzJdID0geyBhcmcxTmFtZSwgYXJnMk5hbWUgfTsKKyAgICB1bnNpZ25l
ZCBjaGFyIGFyZ1R5cGVzWzJdOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmdWYWx1ZXNbMl07
CisgICAgc2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlwZXNbMF0sICZhcmdWYWx1ZXNbMF0p
OworICAgIHNldFRyYWNlVmFsdWUoYXJnMlZhbCwgJmFyZ1R5cGVzWzFdLCAmYXJnVmFsdWVzWzFd
KTsKKyAgICByZXR1cm4gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAg
cGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgbmFtZSwgaWQsCisgICAgICAgIG51bUFyZ3MsIGFyZ05h
bWVzLCBhcmdUeXBlcywgYXJnVmFsdWVzLAorICAgICAgICBub1RocmVzaG9sZEJlZ2luSWQsIG5v
VGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKK30KKworLy8gVXNlZCBieSBUUkFDRV9FVkVOVHggbWFj
cm8uIERvIG5vdCB1c2UgZGlyZWN0bHkuCitjbGFzcyBUcmFjZUVuZE9uU2NvcGVDbG9zZSB7Citw
dWJsaWM6CisgICAgLy8gTm90ZTogbWVtYmVycyBvZiBtX2RhdGEgaW50ZW50aW9uYWxseSBsZWZ0
IHVuaW5pdGlhbGl6ZWQuIFNlZSBpbml0aWFsaXplLgorICAgIFRyYWNlRW5kT25TY29wZUNsb3Nl
KCkgOiBtX3BkYXRhKDApIHsgfQorICAgIH5UcmFjZUVuZE9uU2NvcGVDbG9zZSgpCisgICAgewor
ICAgICAgICBpZiAobV9wZGF0YSkKKyAgICAgICAgICAgIGFkZEV2ZW50SWZFbmFibGVkKCk7Cisg
ICAgfQorCisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5
RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSkKKyAgICB7Cisg
ICAgICAgIG1fZGF0YS5jYXRlZ29yeUVuYWJsZWQgPSBjYXRlZ29yeUVuYWJsZWQ7CisgICAgICAg
IG1fZGF0YS5uYW1lID0gbmFtZTsKKyAgICAgICAgbV9wZGF0YSA9ICZtX2RhdGE7CisgICAgfQor
Citwcml2YXRlOgorICAgIC8vIEFkZCB0aGUgZW5kIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBz
dGlsbCBlbmFibGVkLgorICAgIHZvaWQgYWRkRXZlbnRJZkVuYWJsZWQoKQorICAgIHsKKyAgICAg
ICAgLy8gT25seSBjYWxsZWQgd2hlbiBtX3BkYXRhIGlzIG5vbi1udWxsLgorICAgICAgICBpZiAo
Km1fcGRhdGEtPmNhdGVnb3J5RW5hYmxlZCkgeworICAgICAgICAgICAgVFJBQ0VfRVZFTlRfQVBJ
X0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgICAgICAgICBUUkFDRV9FVkVOVF9QSEFTRV9FTkQs
CisgICAgICAgICAgICAgICAgbV9wZGF0YS0+Y2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAg
ICAgIG1fcGRhdGEtPm5hbWUsIG5vRXZlbnRJZCwKKyAgICAgICAgICAgICAgICB6ZXJvTnVtQXJn
cywgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICBub1RocmVzaG9sZEJlZ2luSWQsIG5vVGhyZXNo
b2xkVmFsdWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBUaGlzIERhdGEgc3RydWN0IHdvcmthcm91bmQgaXMgdG8gYXZvaWQgaW5pdGlhbGl6aW5n
IGFsbCB0aGUgbWVtYmVycworICAgIC8vIGluIERhdGEgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0
aGlzIG9iamVjdCwgc2luY2UgdGhpcyBvYmplY3QgaXMgYWx3YXlzCisgICAgLy8gY29uc3RydWN0
ZWQsIGV2ZW4gd2hlbiB0cmFjaW5nIGlzIGRpc2FibGVkLiBJZiB0aGUgbWVtYmVycyBvZiBEYXRh
IHdlcmUKKyAgICAvLyBtZW1iZXJzIG9mIHRoaXMgY2xhc3MgaW5zdGVhZCwgY29tcGlsZXIgd2Fy
bmluZ3Mgb2NjdXIgYWJvdXQgcG90ZW50aWFsCisgICAgLy8gdW5pbml0aWFsaXplZCBhY2Nlc3Nl
cy4KKyAgICBzdHJ1Y3QgRGF0YSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVn
b3J5RW5hYmxlZDsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICB9OworICAgIERhdGEq
IG1fcGRhdGE7CisgICAgRGF0YSBtX2RhdGE7Cit9OworCisvLyBVc2VkIGJ5IFRSQUNFX0VWRU5U
eCBtYWNyby4gRG8gbm90IHVzZSBkaXJlY3RseS4KK2NsYXNzIFRyYWNlRW5kT25TY29wZUNsb3Nl
VGhyZXNob2xkIHsKK3B1YmxpYzoKKyAgICAvLyBOb3RlOiBtZW1iZXJzIG9mIG1fZGF0YSBpbnRl
bnRpb25hbGx5IGxlZnQgdW5pbml0aWFsaXplZC4gU2VlIGluaXRpYWxpemUuCisgICAgVHJhY2VF
bmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQoKSA6IG1fcGRhdGEoMCkgeyB9CisgICAgflRyYWNlRW5k
T25TY29wZUNsb3NlVGhyZXNob2xkKCkKKyAgICB7CisgICAgICAgIGlmIChtX3BkYXRhKQorICAg
ICAgICAgICAgYWRkRXZlbnRJZkVuYWJsZWQoKTsKKyAgICB9CisKKyAgICAvLyBDYWxsZWQgYnkg
bWFjcm9zIG9ubHkgd2hlbiB0cmFjaW5nIGlzIGVuYWJsZWQgYXQgdGhlIHBvaW50IHdoZW4gdGhl
IGJlZ2luCisgICAgLy8gZXZlbnQgaXMgYWRkZWQuCisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgaW50IHRocmVzaG9sZEJlZ2luSUQs
CisgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQpCisgICAgeworICAgICAg
ICBtX2RhdGEuY2F0ZWdvcnlFbmFibGVkID0gY2F0ZWdvcnlFbmFibGVkOworICAgICAgICBtX2Rh
dGEubmFtZSA9IG5hbWU7CisgICAgICAgIG1fZGF0YS50aHJlc2hvbGRCZWdpbklEID0gdGhyZXNo
b2xkQmVnaW5JRDsKKyAgICAgICAgbV9kYXRhLnRocmVzaG9sZCA9IHRocmVzaG9sZDsKKyAgICAg
ICAgbV9wZGF0YSA9ICZtX2RhdGE7CisgICAgfQorCitwcml2YXRlOgorICAgIC8vIEFkZCB0aGUg
ZW5kIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBzdGlsbCBlbmFibGVkLgorICAgIHZvaWQgYWRk
RXZlbnRJZkVuYWJsZWQoKQorICAgIHsKKyAgICAgICAgLy8gT25seSBjYWxsZWQgd2hlbiBtX3Bk
YXRhIGlzIG5vbi1udWxsLgorICAgICAgICBpZiAoKm1fcGRhdGEtPmNhdGVnb3J5RW5hYmxlZCkg
eworICAgICAgICAgICAgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAg
ICAgICAgICBUUkFDRV9FVkVOVF9QSEFTRV9FTkQsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+
Y2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgIG1fcGRhdGEtPm5hbWUsIG5vRXZlbnRJ
ZCwKKyAgICAgICAgICAgICAgICB6ZXJvTnVtQXJncywgMCwgMCwgMCwKKyAgICAgICAgICAgICAg
ICBtX3BkYXRhLT50aHJlc2hvbGRCZWdpbklELCBtX3BkYXRhLT50aHJlc2hvbGQsCisgICAgICAg
ICAgICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIFRoaXMgRGF0YSBzdHJ1Y3Qgd29ya2Fyb3VuZCBpcyB0byBhdm9pZCBpbml0aWFsaXppbmcg
YWxsIHRoZSBtZW1iZXJzCisgICAgLy8gaW4gRGF0YSBkdXJpbmcgY29uc3RydWN0aW9uIG9mIHRo
aXMgb2JqZWN0LCBzaW5jZSB0aGlzIG9iamVjdCBpcyBhbHdheXMKKyAgICAvLyBjb25zdHJ1Y3Rl
ZCwgZXZlbiB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQuIElmIHRoZSBtZW1iZXJzIG9mIERhdGEg
d2VyZQorICAgIC8vIG1lbWJlcnMgb2YgdGhpcyBjbGFzcyBpbnN0ZWFkLCBjb21waWxlciB3YXJu
aW5ncyBvY2N1ciBhYm91dCBwb3RlbnRpYWwKKyAgICAvLyB1bmluaXRpYWxpemVkIGFjY2Vzc2Vz
LgorICAgIHN0cnVjdCBEYXRhIHsKKyAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZDsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkOworICAgICAgICBjb25zdCBj
aGFyKiBuYW1lOworICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRDsKKyAgICB9OworICAgIERh
dGEqIG1fcGRhdGE7CisgICAgRGF0YSBtX2RhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUcmFj
ZUV2ZW50CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuaAppbmRleCA2YzBlNzRmMTI5NzJjN2YzNzQ2MzQwYWZmNjliMzEyZGMyNWNhMWU5Li4wMDg0
MTA4YjIxZjAzZTc0YzQzNDJjNjliMTg4YzMyNzk1ODdlMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9y
bVN1cHBvcnQuaApAQCAtMjM3LDExICsyMzcsNTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkZWNyZW1lbnRTdGF0c0NvdW50ZXIoY29uc3QgY2hhciogbmFtZSkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGluY3JlbWVudFN0YXRzQ291bnRlcihjb25zdCBjaGFyKiBuYW1lKSB7IH0KIAotICAg
IC8vIEFuIGV2ZW50IGlzIGlkZW50aWZpZWQgYnkgdGhlIHBhaXIgKG5hbWUsIGlkKS4gVGhlIGV4
dHJhIHBhcmFtZXRlcgotICAgIC8vIHNwZWNpZmllcyBhZGRpdGlvbmFsIGRhdGEgdG8gbG9nIHdp
dGggdGhlIGV2ZW50LgotICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNlRXZlbnRFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCB0cmFjZUV2ZW50QmVnaW4oY29u
c3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgdHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3Qg
Y2hhciogZXh0cmEpIHsgfQorICAgIC8vIFRyYWNpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gR2V0IGEgcG9p
bnRlciB0byB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgZ2l2ZW4gdHJhY2UgY2F0ZWdvcnkuIE9u
bHkKKyAgICAvLyBsb25nLWxpdmVkIGxpdGVyYWwgc3RyaW5ncyBzaG91bGQgYmUgZ2l2ZW4gYXMg
dGhlIGNhdGVnb3J5IG5hbWUuIFRoZQorICAgIC8vIHJldHVybmVkIHBvaW50ZXIgY2FuIGJlIGhl
bGQgcGVybWFuZW50bHkgaW4gYSBsb2NhbCBzdGF0aWMgZm9yIGV4YW1wbGUuCisgICAgLy8gSWYg
dGhlIHVuc2lnbmVkIGNoYXIgaXMgbm9uLXplcm8sIHRyYWNpbmcgaXMgZW5hYmxlZC4gSWYgdHJh
Y2luZyBpcworICAgIC8vIGVuYWJsZWQsIGFkZFRyYWNlRXZlbnQgY2FuIGJlIGNhbGxlZC4gSXQn
cyBPSyBpZiB0cmFjaW5nIGlzIGRpc2FibGVkCisgICAgLy8gYmV0d2VlbiB0aGUgbG9hZCBvZiB0
aGUgdHJhY2luZyBzdGF0ZSBhbmQgdGhlIGNhbGwgdG8gYWRkVHJhY2VFdmVudCwKKyAgICAvLyBi
ZWNhdXNlIHRoaXMgZmxhZyBvbmx5IHByb3ZpZGVzIGFuIGVhcmx5IG91dCBmb3IgYmVzdCBwZXJm
b3JtYW5jZSB3aGVuCisgICAgLy8gdHJhY2luZyBpcyBkaXNhYmxlZC4KKyAgICB2aXJ0dWFsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhjb25zdCBjaGFy
KiBjYXRlZ29yeU5hbWUpIHsgcmV0dXJuIDA7IH0KKyAgICAvLyBBZGQgYSB0cmFjZSBldmVudCB0
byB0aGUgcGxhdGZvcm0gdHJhY2luZyBzeXN0ZW0uCisgICAgLy8gUmV0dXJucyB0aHJlc2hvbGRC
ZWdpbklkIGZvciB1c2UgaW4gYSBjb3JyZXNwb25kaW5nIGVuZCBhZGRUcmFjZUV2ZW50IGNhbGwu
CisgICAgLy8gLSBwaGFzZSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgZXZlbnQsIHN1Y2ggYXMgYmVn
aW4sIGVuZCwgaW5zdGFudCwgZXRjLgorICAgIC8vIC0gY2F0ZWdvcnlFbmFibGVkIGlzIHRoZSBw
b2ludGVyIHJldHVybmVkIGJ5IGdldENhdGVnb3J5RW5hYmxlZC4KKyAgICAvLyAtIG5hbWUgaXMg
dGhlIG5hbWUgb2YgdGhlIGV2ZW50LgorICAgIC8vIC0gaWQgb3B0aW9uYWxseSBhbGxvd3MgZXZl
bnRzIG9mIHRoZSBzYW1lIG5hbWUgdG8gYmUgZGlzdGluZ3Vpc2hlZC4KKyAgICAvLyAtIG51bUFy
Z3Mgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYXJnTmFtZXMsIGFyZ1R5cGVz
LCBhbmQKKyAgICAvLyAgIGFyZ1ZhbHVlcy4KKyAgICAvLyAtIGFyZ05hbWVzIGlzIHRoZSBhcnJh
eSBvZiBhcmd1bWVudCBuYW1lcy4KKyAgICAvLyAtIGFyZ1R5cGVzIGlzIHRoZSBhcnJheSBvZiBh
cmd1bWVudCB0eXBlczogYm9vbCwgdW5zaWduZWQgbG9uZyBsb25nLAorICAgIC8vICAgbG9uZyBs
b25nLCBkb3VibGUsIHZvaWQqLCBjaGFyKiAobG9uZy1saXZlZCBudWxsLXRlcm1pbmF0ZWQgY2hh
ciogc3RyaW5nKSwKKyAgICAvLyAgIGNoYXIqICh0ZW1wb3JhcnkgbnVsbC10ZXJtaW5hdGVkIGNo
YXIqIHN0cmluZykuCisgICAgLy8gLSBhcmdWYWx1ZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50
IHZhbHVlcy4KKyAgICAvLyAtIHRocmVzaG9sZEJlZ2luSWQgb3B0aW9uYWxseSBzcGVjaWZpZXMg
dGhlIHZhbHVlIHJldHVybmVkIGJ5IGEgcHJldmlvdXMKKyAgICAvLyAgIGNhbGwgdG8gYWRkVHJh
Y2VFdmVudC4KKyAgICAvLyAtIHRocmVzaG9sZCBzcGVjaWZpZXMgdGhlIG1pbmltdW0gbnVtYmVy
IG9mIG1pY3Jvc2Vjb25kcyB0aGF0IG11c3QgaGF2ZQorICAgIC8vICAgcGFzc2VkIHNpbmNlIHRo
ZSBldmVudCBpZGVudGlmaWVkIGJ5IHRocmVzaG9sZEJlZ2luSWQgZm9yIGJvdGggZXZlbnRzIHRv
CisgICAgLy8gICBiZSByZWNvcmRlZC4KKyAgICAvLyAtIGZsYWdzIGNhbiBiZSAwIG9yIG9uZSBv
ciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcsIE9SZWQgdG9nZXRoZXI6CisgICAgLy8gICAtIHRyZWF0
IGFsbCBzdHJpbmdzIGFzIHRlbXBvcmFyeSBzbyB0aGF0IHRoZXkgd2lsbCBiZSBjb3BpZWQgYnkK
KyAgICAvLyAgICAgYWRkVHJhY2VFdmVudCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGNhdGVnb3J5
IG5hbWUuCisgICAgLy8gICAtIHVzZSB0aGUgaWQgYXJndW1lbnQgdG8gdW5pcXVlbHkgaWRlbnRp
ZnkgdGhlIGV2ZW50IGZvciBtYXRjaGluZworICAgIC8vICAgICB3aXRoIG90aGVyIGV2ZW50cyBv
ZiB0aGUgc2FtZSBuYW1lLgorICAgIHZpcnR1YWwgaW50IGFkZFRyYWNlRXZlbnQoCisgICAgICAg
IGNoYXIgcGhhc2UsCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxl
ZEZsYWcsCisgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBpZCwKKyAgICAgICAgaW50IG51bUFyZ3MsCisgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdO
YW1lcywKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnVHlwZXMsCisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnVmFsdWVzLAorICAgICAgICBpbnQgdGhyZXNob2xk
QmVnaW5JZCwKKyAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCwKKyAgICAgICAgdW5zaWduZWQg
Y2hhciBmbGFncykgeyByZXR1cm4gLTE7IH0KIAogICAgIC8vIENhbGxiYWNrcyBmb3IgcmVwb3J0
aW5nIGhpc3RvZ3JhbSBkYXRhLgogICAgIC8vIEN1c3RvbUNvdW50cyBoaXN0b2dyYW0gaGFzIGV4
cG9uZW50aWFsIGJ1Y2tldCBzaXplcywgc28gdGhhdCBtaW49MSwgbWF4PTEwMDAwMDAsIGJ1Y2tl
dENvdW50PTUwIHdvdWxkIGRvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRm
b3JtU3VwcG9ydC5jcHAKaW5kZXggMjQ2ODFlYzk2MmQ3NGViZmViNWFiMzM1NWMxOTAzYWZkOWU5
ZWNkNi4uOWYwZTNhODEyNDRmNzJiMTIwMTMzNzY1NjkxY2QzMzBlYjEyMjBhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC05NDcsMTkg
Kzk0NywyNCBAQCB2b2lkIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQoCiAKIC8vIFRy
YWNlIEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmlzVHJhY2VFdmVudEVu
YWJsZWQoKQotewotICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+aXNUcmFjZUV2
ZW50RW5hYmxlZCgpOwotfQotCi12b2lkIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2lu
KGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkKLXsKLSAgICB3
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+dHJhY2VFdmVudEJlZ2luKG5hbWUsIGlkLCBleHRyYSk7
Ci19Ci0KLXZvaWQgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5h
bWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBleHRyYSkKLXsKLSAgICB3ZWJLaXRQbGF0Zm9ybVN1
cHBvcnQoKS0+dHJhY2VFdmVudEVuZChuYW1lLCBpZCwgZXh0cmEpOworY29uc3QgdW5zaWduZWQg
Y2hhciogUGxhdGZvcm1TdXBwb3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3Qg
Y2hhciogY2F0ZWdvcnlOYW1lKQoreworICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQo
KS0+Z2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKGNhdGVnb3J5TmFtZSk7Cit9CitpbnQgUGxh
dGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZEZs
YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBp
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJn
VHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGxvbmcgbG9uZyogYXJnVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgdGhyZXNob2xkQmVnaW5JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9uZyBsb25nIHRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBmbGFncykKK3sKKyAgICByZXR1cm4gd2ViS2l0UGxhdGZvcm1TdXBw
b3J0KCktPmFkZFRyYWNlRXZlbnQoCisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWRGbGFn
LCBuYW1lLCBpZCwgbnVtQXJncywgYXJnTmFtZXMsIGFyZ1R5cGVzLCBhcmdWYWx1ZXMsICB0aHJl
c2hvbGRCZWdpbklkLCB0aHJlc2hvbGQsIGZsYWdzKTsKIH0KIAogLy8gVmlzaXRlZCBMaW5rcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124353</attachid>
            <date>2012-01-27 12:43:04 -0800</date>
            <delta_ts>2012-01-30 14:22:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120127124303.patch</filename>
            <type>text/plain</type>
            <size>54117</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYyZTljYThiODg0NWU5
NDkwZGRjOTdlYzMzY2EzZWNlN2ExZGZlMy4uNmEyOGVkMDA5YWRhMmE4OGM1ZjY0YjIzZWRlMDI0
ZmFhZWViMzk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmV2YWx1YXRlKTogUmVwbGFj
ZSBvbGQgdHJhY2luZyBBUEkuCisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6OnRpbWUpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnNvbGU6OnRpbWVFbmQpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZUlEOjpUcmFjZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6
OlRyYWNlSUQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VTdHJp
bmdXaXRoQ29weTo6VHJhY2VTdHJpbmdXaXRoQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZVN0cmluZ1dpdGhDb3B5OjpvcGVyYXRvciBjb25zdCBjaGFyKiApOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6c2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNl
RXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpUcmFjZUVuZE9uU2NvcGVDbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5k
T25TY29wZUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25T
Y29wZUNsb3NlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRy
YWNlRW5kT25TY29wZUNsb3NlOjphZGRFdmVudElmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6VHJhY2VFbmRPblNj
b3BlQ2xvc2VUaHJlc2hvbGQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VF
bmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6On5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVz
aG9sZDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVu
ZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6YWRkRXZlbnRJZkVuYWJsZWQpOgorCiAyMDEyLTAxLTI1
ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bm5lY2Vzc2FyeSBtZW1iZXIgdmFyaWFibGUgZnJvbSBQbHVnaW5WaWV3LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2ZGMwMGNkOWIzYjM4MDg5ZGM1MTU5M2VmNjU2NzQ5
ZTRiY2E4MTQ0Li43MGRiNTBhMWJiMmM3MmIwMmU5MzA5M2QyNGE1Mjc3NWZiZjgzOWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRm
b3JtU3VwcG9ydDo6Z2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKiBzcmMv
UGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6
Z2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3VwcG9ydDo6YWRkVHJhY2VFdmVudCk6CisKIDIwMTItMDEtMjQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjaHJvbWl1bSB0ZXN0
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggNDdkYjE1YzVh
MTRkMWQ5YTlmYThkMTFhZDk2NWQ1MzVlMWVhNjdmYS4uNGE3YzZlN2NjNDM0YTM4NmE3OGY4YzZi
MzYzNjM0NGI5YThjNWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAK
QEAgLTcxLDYgKzcxLDEwIEBACiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNs
dWRlICJUcmFjZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgVjhFeHRlbnNpb25zJiBzdGF0aWNFeHRlbnNpb25zTGlzdCgpCkBAIC0zMzUsNyArMzM5LDcg
QEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlLCBOb2RlKiBub2QKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgc2NyaXB0
LgogICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gY29kZSA9IHY4RXh0ZXJuYWxTdHJpbmco
c291cmNlLnNvdXJjZSgpKTsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICAgICAgUGxhdGZv
cm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4oInY4LmNvbXBpbGUiLCBub2RlLCAiIik7CisgICAg
ICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgidjgiLCAidjguY29tcGlsZSIpOwogI2VuZGlmCiAgICAg
ICAgIE93blB0cjx2ODo6U2NyaXB0RGF0YT4gc2NyaXB0RGF0YSA9IHByZWNvbXBpbGVTY3JpcHQo
Y29kZSwgc291cmNlLmNhY2hlZFNjcmlwdCgpKTsKIApAQCAtMzQzLDE1ICszNDcsMTEgQEAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlLCBOb2RlKiBub2QKICAgICAgICAgLy8gMSwgd2hlcmVhcyB2OCBzdGFydHMgYXQg
MC4KICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSBjb21waWxlU2NyaXB0
KGNvZGUsIHNvdXJjZS51cmwoKSwgc291cmNlLnN0YXJ0UG9zaXRpb24oKSwgc2NyaXB0RGF0YS5n
ZXQoKSk7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6
dHJhY2VFdmVudEVuZCgidjguY29tcGlsZSIsIG5vZGUsICIiKTsKLQotICAgICAgICBQbGF0Zm9y
bVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbigidjgucnVuIiwgbm9kZSwgIiIpOworICAgICAgICBU
UkFDRV9FVkVOVF9FTkQwKCJ2OCIsICJ2OC5jb21waWxlIik7CisgICAgICAgIFRSQUNFX0VWRU5U
MCgidjgiLCAidjgucnVuIik7CiAjZW5kaWYKICAgICAgICAgcmVzdWx0ID0gcnVuU2NyaXB0KHNj
cmlwdCk7CiAgICAgfQotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgIFBsYXRmb3JtU3VwcG9y
dDo6dHJhY2VFdmVudEVuZCgidjgucnVuIiwgbm9kZSwgIiIpOwotI2VuZGlmCiAKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KGNvb2tpZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnNvbGUuY3BwCmluZGV4IDI0ZTEzYTVmZGJhNTMwMWJiNzUyOTRjZTM0MGI1YTBmZWFk
MjQ5ZTYuLjUxNWFiMzRkN2EwNmQ0YWMyMmI1M2Y0Y2Y4ZDlmODRhZjFjNWY3NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmNwcApAQCAtMjk5LDE2ICsyOTksMTQgQEAgdm9pZCBDb25zb2xlOjp0aW1l
KGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
dGFydENvbnNvbGVUaW1pbmcocGFnZSgpLCB0aXRsZSk7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0p
Ci0gICAgaWYgKFBsYXRmb3JtU3VwcG9ydDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgpKQotICAgICAg
ICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbih0aXRsZS51dGY4KCkuZGF0YSgpLCAw
LCAwKTsKKyAgICBUUkFDRV9FVkVOVF9DT1BZX0JFR0lOMCgid2Via2l0IiwgdGl0bGUudXRmOCgp
LmRhdGEoKSk7CiAjZW5kaWYKIH0KIAogdm9pZCBDb25zb2xlOjp0aW1lRW5kKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICBpZiAo
UGxhdGZvcm1TdXBwb3J0Ojppc1RyYWNlRXZlbnRFbmFibGVkKCkpCi0gICAgICAgIFBsYXRmb3Jt
U3VwcG9ydDo6dHJhY2VFdmVudEVuZCh0aXRsZS51dGY4KCkuZGF0YSgpLCAwLCAwKTsKKyAgICBU
UkFDRV9FVkVOVF9DT1BZX0VORDAoIndlYmtpdCIsIHRpdGxlLnV0ZjgoKS5kYXRhKCkpOwogI2Vu
ZGlmCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhwYWdl
KCksIHRpdGxlLCBjYWxsU3RhY2spOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBjOGRlZDZlMjZiYTc4NGM2ZTE2Mzc0
MWQ2NjI4ZTg1OTM5YzM2YTZlLi5hZWQ2N2M3MWU2NTU1OWMxOGU1Y2VlYzg2ZmJlMWU4YjJmNTVj
NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVN1cHBvcnQuaApAQCAtNDE2LDkgKzQxNiwxOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8v
IFRyYWNlIEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0gICAgc3RhdGljIGJvb2wgaXNUcmFjZUV2ZW50RW5hYmxlZCgpOwotICAg
IHN0YXRpYyB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiwgY29u
c3QgY2hhciogZXh0cmEpOwotICAgIHN0YXRpYyB2b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hh
ciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIqIGV4dHJhKTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgY2hhciogZ2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKGNvbnN0IGNoYXIqIGNhdGVn
b3J5TmFtZSk7CisgICAgc3RhdGljIGludCBhZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5h
YmxlZEZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnVHlwZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnVmFsdWVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncyk7CiAKICAgICAvLyBWaXNpdGVkIGxpbmtz
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
ICAgIHN0YXRpYyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5z
aWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1RyYWNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RyYWNl
RXZlbnQuaAppbmRleCA2NTJmNTQwN2NhM2Y1NzUxNGNmYWEzZDZhOGJkZDA2ODI1N2I5Njk5Li41
YmI2MDBmYjM4NjdkZGE3Njk5ZTI5YTA5OGI5YjY3OTMzYjc4ODNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCkBAIC0yMiw1MyArMjIsODQzIEBA
CiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KKworLy8gVHJhY2UgZXZlbnRz
IGFyZSBmb3IgdHJhY2tpbmcgYXBwbGljYXRpb24gcGVyZm9ybWFuY2UgYW5kIHJlc291cmNlIHVz
YWdlLgorLy8gTWFjcm9zIGFyZSBwcm92aWRlZCB0byB0cmFjazoKKy8vICAgIEJlZ2luIGFuZCBl
bmQgb2YgZnVuY3Rpb24gY2FsbHMKKy8vICAgIENvdW50ZXJzCisvLworLy8gRXZlbnRzIGFyZSBp
c3N1ZWQgYWdhaW5zdCBjYXRlZ29yaWVzLiBXaGVyZWFzIExPRydzCisvLyBjYXRlZ29yaWVzIGFy
ZSBzdGF0aWNhbGx5IGRlZmluZWQsIFRSQUNFIGNhdGVnb3JpZXMgYXJlIGNyZWF0ZWQKKy8vIGlt
cGxpY2l0bHkgd2l0aCBhIHN0cmluZy4gRm9yIGV4YW1wbGU6CisvLyAgIFRSQUNFX0VWRU5UX0lO
U1RBTlQwKCJNWV9TVUJTWVNURU0iLCAiU29tZUltcG9ydGFudEV2ZW50IikKKy8vCisvLyBFdmVu
dHMgY2FuIGJlIElOU1RBTlQsIG9yIGNhbiBiZSBwYWlycyBvZiBCRUdJTiBhbmQgRU5EIGluIHRo
ZSBzYW1lIHNjb3BlOgorLy8gICBUUkFDRV9FVkVOVF9CRUdJTjAoIk1ZX1NVQlNZU1RFTSIsICJT
b21ldGhpbmdDb3N0bHkiKQorLy8gICBkb1NvbWV0aGluZ0Nvc3RseSgpCisvLyAgIFRSQUNFX0VW
RU5UX0VORDAoIk1ZX1NVQlNZU1RFTSIsICJTb21ldGhpbmdDb3N0bHkiKQorLy8gTm90ZTogb3Vy
IHRvb2xzIGNhbid0IGFsd2F5cyBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgQkVHSU4vRU5EIHBhaXJz
IHVubGVzcworLy8gdGhlc2UgYXJlIHVzZWQgaW4gdGhlIHNhbWUgc2NvcGUuIFVzZSBTVEFSVC9G
SU5JU0ggbWFjcm9zIGlmIHlvdSBuZWVkIHRoZW0KKy8vIHRvIGJlIGluIHNlcGFyYXRlIHNjb3Bl
cy4KKy8vCisvLyBBIGNvbW1vbiB1c2UgY2FzZSBpcyB0byB0cmFjZSBlbnRpcmUgZnVuY3Rpb24g
c2NvcGVzLiBUaGlzCisvLyBpc3N1ZXMgYSB0cmFjZSBCRUdJTiBhbmQgRU5EIGF1dG9tYXRpY2Fs
bHk6CisvLyAgIHZvaWQgZG9Tb21ldGhpbmdDb3N0bHkoKSB7CisvLyAgICAgVFJBQ0VfRVZFTlQw
KCJNWV9TVUJTWVNURU0iLCAiZG9Tb21ldGhpbmdDb3N0bHkiKTsKKy8vICAgICAuLi4KKy8vICAg
fQorLy8KKy8vIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGFu
IGV2ZW50OgorLy8gICB2b2lkIGRvU29tZXRoaW5nQ29zdGx5MihpbnQgaG93TXVjaCkgeworLy8g
ICAgIFRSQUNFX0VWRU5UMSgiTVlfU1VCU1lTVEVNIiwgImRvU29tZXRoaW5nQ29zdGx5IiwKKy8v
ICAgICAgICAgImhvd011Y2giLCBob3dNdWNoKTsKKy8vICAgICAuLi4KKy8vICAgfQorLy8KKy8v
IFRoZSB0cmFjZSBzeXN0ZW0gd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCB0byB0aGlzIGluZm9ybWF0
aW9uIHRoZQorLy8gY3VycmVudCBwcm9jZXNzIGlkLCB0aHJlYWQgaWQsIGFuZCBhIHRpbWVzdGFt
cCBpbiBtaWNyb3NlY29uZHMuCisvLworLy8gVG8gdHJhY2UgYW4gYXN5bmNocm9ub3VzIHByb2Nl
ZHVyZSBzdWNoIGFzIGFuIElQQyBzZW5kL3JlY2VpdmUsIHVzZSBTVEFSVCBhbmQKKy8vIEZJTklT
SDoKKy8vICAgW3NpbmdsZSB0aHJlYWRlZCBzZW5kZXIgY29kZV0KKy8vICAgICBzdGF0aWMgaW50
IHNlbmRfY291bnQgPSAwOworLy8gICAgICsrc2VuZF9jb3VudDsKKy8vICAgICBUUkFDRV9FVkVO
VF9TVEFSVDAoImlwYyIsICJtZXNzYWdlIiwgc2VuZF9jb3VudCk7CisvLyAgICAgU2VuZChuZXcg
TXlNZXNzYWdlKHNlbmRfY291bnQpKTsKKy8vICAgW3JlY2VpdmUgY29kZV0KKy8vICAgICB2b2lk
IE9uTXlNZXNzYWdlKHNlbmRfY291bnQpIHsKKy8vICAgICAgIFRSQUNFX0VWRU5UX0ZJTklTSDAo
ImlwYyIsICJtZXNzYWdlIiwgc2VuZF9jb3VudCk7CisvLyAgICAgfQorLy8gVGhlIHRoaXJkIHBh
cmFtZXRlciBpcyBhIHVuaXF1ZSBJRCB0byBtYXRjaCBTVEFSVC9GSU5JU0ggcGFpcnMuCisvLyBT
VEFSVCBhbmQgRklOSVNIIGNhbiBvY2N1ciBvbiBhbnkgdGhyZWFkIG9mIGFueSB0cmFjZWQgcHJv
Y2Vzcy4gUG9pbnRlcnMgY2FuCisvLyBiZSB1c2VkIGZvciB0aGUgSUQgcGFyYW1ldGVyLCBhbmQg
dGhleSB3aWxsIGJlIG1hbmdsZWQgaW50ZXJuYWxseSBzbyB0aGF0CisvLyB0aGUgc2FtZSBwb2lu
dGVyIG9uIHR3byBkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90IG1hdGNoLiBGb3IgZXhhbXBs
ZToKKy8vICAgY2xhc3MgTXlUcmFjZWRDbGFzcyB7CisvLyAgICBwdWJsaWM6CisvLyAgICAgTXlU
cmFjZWRDbGFzcygpIHsKKy8vICAgICAgIFRSQUNFX0VWRU5UX1NUQVJUMCgiY2F0ZWdvcnkiLCAi
TXlUcmFjZWRDbGFzcyIsIHRoaXMpOworLy8gICAgIH0KKy8vICAgICB+TXlUcmFjZWRDbGFzcygp
IHsKKy8vICAgICAgIFRSQUNFX0VWRU5UX0ZJTklTSDAoImNhdGVnb3J5IiwgIk15VHJhY2VkQ2xh
c3MiLCB0aGlzKTsKKy8vICAgICB9CisvLyAgIH0KKy8vCisvLyBUcmFjZSBldmVudCBhbHNvIHN1
cHBvcnRzIGNvdW50ZXJzLCB3aGljaCBpcyBhIHdheSB0byB0cmFjayBhIHF1YW50aXR5CisvLyBh
cyBpdCB2YXJpZXMgb3ZlciB0aW1lLiBDb3VudGVycyBhcmUgY3JlYXRlZCB3aXRoIHRoZSBmb2xs
b3dpbmcgbWFjcm86CisvLyAgIFRSQUNFX0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlDb3Vu
dGVyIiwgZ19teUNvdW50ZXJWYWx1ZSk7CisvLworLy8gQ291bnRlcnMgYXJlIHByb2Nlc3Mtc3Bl
Y2lmaWMuIFRoZSBtYWNybyBpdHNlbGYgY2FuIGJlIGlzc3VlZCBmcm9tIGFueQorLy8gdGhyZWFk
LCBob3dldmVyLgorLy8KKy8vIFNvbWV0aW1lcywgeW91IHdhbnQgdG8gdHJhY2sgdHdvIGNvdW50
ZXJzIGF0IG9uY2UuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHR3bworLy8gY291bnRlciBtYWNyb3M6
CisvLyAgIFRSQUNFX0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVyMCIsIGdfbXlD
b3VudGVyVmFsdWVbMF0pOworLy8gICBUUkFDRV9DT1VOVEVSMSgiTVlfU1VCU1lTVEVNIiwgIm15
Q291bnRlcjEiLCBnX215Q291bnRlclZhbHVlWzFdKTsKKy8vIE9yIHlvdSBjYW4gZG8gaXQgd2l0
aCBhIGNvbWJpbmVkIG1hY3JvOgorLy8gICBUUkFDRV9DT1VOVEVSMigiTVlfU1VCU1lTVEVNIiwg
Im15Q291bnRlciIsCisvLyAgICAgICAiYnl0ZXNQaW5uZWQiLCBnX215Q291bnRlclZhbHVlWzBd
LAorLy8gICAgICAgImJ5dGVzQWxsb2NhdGVkIiwgZ19teUNvdW50ZXJWYWx1ZVsxXSk7CisvLyBU
aGlzIGluZGljYXRlcyB0byB0aGUgdHJhY2luZyBVSSB0aGF0IHRoZXNlIGNvdW50ZXJzIHNob3Vs
ZCBiZSBkaXNwbGF5ZWQKKy8vIGluIGEgc2luZ2xlIGdyYXBoLCBhcyBhIHN1bW1lZCBhcmVhIGNo
YXJ0LgorLy8KKy8vIFNpbmNlIGNvdW50ZXJzIGFyZSBpbiBhIGdsb2JhbCBuYW1lc3BhY2UsIHlv
dSBtYXkgd2FudCB0byBkaXNlbWJpZ3VhdGUgd2l0aCBhCisvLyB1bmlxdWUgSUQsIGJ5IHVzaW5n
IHRoZSBUUkFDRV9DT1VOVEVSX0lEKiB2YXJpYXRpb25zLgorLy8KKy8vIEJ5IGRlZmF1bHQsIHRy
YWNlIGNvbGxlY3Rpb24gaXMgY29tcGlsZWQgaW4sIGJ1dCB0dXJuZWQgb2ZmIGF0IHJ1bnRpbWUu
CisvLyBDb2xsZWN0aW5nIHRyYWNlIGRhdGEgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBl
bWJlZGRpbmcKKy8vIGFwcGxpY2F0aW9uLiBJbiBDaHJvbWUncyBjYXNlLCBuYXZpZ2F0aW5nIHRv
IGFib3V0OnRyYWNpbmcgd2lsbCB0dXJuIG9uCisvLyB0cmFjaW5nIGFuZCBkaXNwbGF5IGRhdGEg
Y29sbGVjdGVkIGFjcm9zcyBhbGwgYWN0aXZlIHByb2Nlc3Nlcy4KKy8vCisvLworLy8gTWVtb3J5
IHNjb3Bpbmcgbm90ZToKKy8vIFRyYWNpbmcgY29waWVzIHRoZSBwb2ludGVycywgbm90IHRoZSBz
dHJpbmcgY29udGVudCwgb2YgdGhlIHN0cmluZ3MgcGFzc2VkCisvLyBpbiBmb3IgY2F0ZWdvcnks
IG5hbWUsIGFuZCBhcmdfbmFtZXMuIFRodXMsIHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsCisvLyBj
YXVzZSBwcm9ibGVtczoKKy8vICAgICBjaGFyKiBzdHIgPSBzdHJkdXAoImltcHBydGFudE5hbWUi
KTsKKy8vICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiU1VCU1lTVEVNIiwgc3RyKTsgIC8vIEJB
RCEKKy8vICAgICBmcmVlKHN0cik7ICAgICAgICAgICAgICAgICAgIC8vIFRyYWNlIHN5c3RlbSBu
b3cgaGFzIGRhbmdsaW5nIHBvaW50ZXIKKy8vCisvLyBUbyBhdm9pZCB0aGlzIGlzc3VlIHdpdGgg
dGhlIHxuYW1lfCBhbmQgfGFyZ19uYW1lfCBwYXJhbWV0ZXJzLCB1c2UgdGhlCisvLyBUUkFDRV9F
VkVOVF9DT1BZX1hYWCBvdmVybG9hZHMgb2YgdGhlIG1hY3JvcyBhdCBhZGRpdGlvbmFsIHJ1bnRp
bWUgb3ZlcmhlYWQuCisvLyBOb3RlczogVGhlIGNhdGVnb3J5IG11c3QgYWx3YXlzIGJlIGluIGEg
bG9uZy1saXZlZCBjaGFyKiAoaS5lLiBzdGF0aWMgY29uc3QpLgorLy8gICAgICAgIFRoZSB8YXJn
X3ZhbHVlc3wsIHdoZW4gdXNlZCwgYXJlIGFsd2F5cyBkZWVwIGNvcGllZCB3aXRoIHRoZSBfQ09Q
WQorLy8gICAgICAgIG1hY3Jvcy4KKy8vCisvLyBXaGVuIGFyZSBzdHJpbmcgYXJndW1lbnQgdmFs
dWVzIGNvcGllZDoKKy8vIGNvbnN0IGNoYXIqIGFyZ192YWx1ZXMgYXJlIG9ubHkgcmVmZXJlbmNl
ZCBieSBkZWZhdWx0OgorLy8gICAgIFRSQUNFX0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisv
LyAgICAgICAgICAgICAgICAgICJhcmcxIiwgImxpdGVyYWwgc3RyaW5nIGlzIG9ubHkgcmVmZXJl
bmNlZCIpOworLy8gVXNlIFRSQUNFX1NUUl9DT1BZIHRvIGZvcmNlIGNvcHlpbmcgb2YgYSBjb25z
dCBjaGFyKjoKKy8vICAgICBUUkFDRV9FVkVOVDEoImNhdGVnb3J5IiwgIm5hbWUiLAorLy8gICAg
ICAgICAgICAgICAgICAiYXJnMSIsIFRSQUNFX1NUUl9DT1BZKCJzdHJpbmcgd2lsbCBiZSBjb3Bp
ZWQiKSk7CisvLyBzdGQ6OnN0cmluZyBhcmdfdmFsdWVzIGFyZSBhbHdheXMgY29waWVkOgorLy8g
ICAgIFRSQUNFX0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisvLyAgICAgICAgICAgICAgICAg
ICJhcmcxIiwgc3RkOjpzdHJpbmcoInN0cmluZyB3aWxsIGJlIGNvcGllZCIpKTsKKy8vCisvLwor
Ly8gVGhyZWFkIFNhZmV0eToKKy8vIEEgdGhyZWFkIHNhZmUgc2luZ2xldG9uIGFuZCBtdXRleCBh
cmUgdXNlZCBmb3IgdGhyZWFkIHNhZmV0eS4gQ2F0ZWdvcnkKKy8vIGVuYWJsZWQgZmxhZ3MgYXJl
IHVzZWQgdG8gbGltaXQgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCB3aGVuIHRoZSBzeXN0ZW0KKy8v
IGlzIG5vdCBlbmFibGVkLgorLy8KKy8vIFRSQUNFX0VWRU5UIG1hY3JvcyBmaXJzdCBjYWNoZSBh
IHBvaW50ZXIgdG8gYSBjYXRlZ29yeS4gVGhlIGNhdGVnb3JpZXMgYXJlCisvLyBzdGF0aWNhbGx5
IGFsbG9jYXRlZCBhbmQgc2FmZSBhdCBhbGwgdGltZXMsIGV2ZW4gYWZ0ZXIgZXhpdC4gRmV0Y2hp
bmcgYQorLy8gY2F0ZWdvcnkgaXMgcHJvdGVjdGVkIGJ5IHRoZSBUcmFjZUxvZzo6bG9ja18uIE11
bHRpcGxlIHRocmVhZHMgaW5pdGlhbGl6aW5nCisvLyB0aGUgc3RhdGljIHZhcmlhYmxlIGlzIHNh
ZmUsIGFzIHRoZXkgd2lsbCBiZSBzZXJpYWxpemVkIGJ5IHRoZSBsb2NrIGFuZAorLy8gbXVsdGlw
bGUgY2FsbHMgd2lsbCByZXR1cm4gdGhlIHNhbWUgcG9pbnRlciB0byB0aGUgY2F0ZWdvcnkuCisv
LworLy8gVGhlbiB0aGUgY2F0ZWdvcnlfZW5hYmxlZCBmbGFnIGlzIGNoZWNrZWQuIFRoaXMgaXMg
YSB1bnNpZ25lZCBjaGFyLCBhbmQKKy8vIG5vdCBpbnRlbmRlZCB0byBiZSBtdWx0aXRocmVhZCBz
YWZlLiBJdCBvcHRpbWl6ZXMgYWNjZXNzIHRvIGFkZFRyYWNlRXZlbnQKKy8vIHdoaWNoIGlzIHRo
cmVhZHNhZmUgaW50ZXJuYWxseSB2aWEgVHJhY2VMb2c6OmxvY2tfLiBUaGUgZW5hYmxlZCBmbGFn
IG1heQorLy8gY2F1c2Ugc29tZSB0aHJlYWRzIHRvIGluY29ycmVjdGx5IGNhbGwgb3Igc2tpcCBj
YWxsaW5nIGFkZFRyYWNlRXZlbnQgbmVhcgorLy8gdGhlIHRpbWUgb2YgdGhlIHN5c3RlbSBiZWlu
ZyBlbmFibGVkIG9yIGRpc2FibGVkLiBUaGlzIGlzIGFjY2VwdGFibGUgYXMKKy8vIHdlIHRvbGVy
YXRlIHNvbWUgZGF0YSBsb3NzIHdoaWxlIHRoZSBzeXN0ZW0gaXMgYmVpbmcgZW5hYmxlZC9kaXNh
YmxlZCBhbmQKKy8vIGJlY2F1c2UgYWRkVHJhY2VFdmVudCBpcyB0aHJlYWRzYWZlIGludGVybmFs
bHkgYW5kIGNoZWNrcyB0aGUgZW5hYmxlZCBzdGF0ZQorLy8gYWdhaW4gdW5kZXIgbG9jay4KKy8v
CisvLyBXaXRob3V0IHRoZSB1c2Ugb2YgdGhlc2Ugc3RhdGljIGNhdGVnb3J5IHBvaW50ZXJzIGFu
ZCBlbmFibGVkIGZsYWdzIGFsbAorLy8gdHJhY2UgcG9pbnRzIHdvdWxkIGNhcnJ5IGEgc2lnbmlm
aWNhbnQgcGVyZm9ybWFuY2UgY29zdCBvZiBhcXVpcmluZyBhIGxvY2sKKy8vIGFuZCByZXNvbHZp
bmcgdGhlIGNhdGVnb3J5LgorCiAjaWZuZGVmIFRyYWNlRXZlbnRfaAogI2RlZmluZSBUcmFjZUV2
ZW50X2gKIAorI2luY2x1ZGUgIkR5bmFtaWNBbm5vdGF0aW9ucy5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3VwcG9ydC5oIgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorCisvLyBJc3N1ZXMgYmVnaW4gdHJhY2UgZXZlbnQgaGVyZSBh
bmQgZW5kIHRyYWNlIGV2ZW50IHdoZW4gdGhlIGN1cnJlbnQgc2NvcGUgZW5kcy4KKyNkZWZpbmUg
VFJBQ0VfRVZFTlQobmFtZSwgaWQsIGV4dHJhKSBUUkFDRV9FVkVOVDIoIndlYmtpdCIsIG5hbWUs
ICJpZCIsIGlkLCAiZXh0cmEiLCBleHRyYSkKKworLy8gQnkgZGVmYXVsdCwgY29uc3QgY2hhciog
YXJndW1lbnQgdmFsdWVzIGFyZSBhc3N1bWVkIHRvIGhhdmUgbG9uZy1saXZlZCBzY29wZQorLy8g
YW5kIHdpbGwgbm90IGJlIGNvcGllZC4gVXNlIHRoaXMgbWFjcm8gdG8gZm9yY2UgYSBjb25zdCBj
aGFyKiB0byBiZSBjb3BpZWQuCisjZGVmaW5lIFRSQUNFX1NUUl9DT1BZKHN0cikgXAorICAgIFdl
YkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlU3RyaW5nV2l0aENvcHkoc3RyKQorCisvLyBSZWNvcmRz
IGEgcGFpciBvZiBiZWdpbiBhbmQgZW5kIGV2ZW50cyBjYWxsZWQgIm5hbWUiIGZvciB0aGUgY3Vy
cmVudAorLy8gc2NvcGUsIHdpdGggMCwgMSBvciAyIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0
aGUgY2F0ZWdvcnkgaXMgbm90CisvLyBlbmFibGVkLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nLgor
Ly8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZl
dGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIg
Y2hhcnMuCisjZGVmaW5lIFRSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUpCisjZGVmaW5lIFRSQUNF
X0VWRU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJn
MV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBh
cmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAg
ICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBldmVudCBjYWxs
ZWQgIm5hbWUiIGltbWVkaWF0ZWx5LCB3aXRoIDAsIDEgb3IgMgorLy8gYXNzb2NpYXRlZCBhcmd1
bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzCisvLyBkb2Vz
IG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxp
Y2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90
IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoY2F0ZWdvcnks
IG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0Vf
SU5TVEFOVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05F
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1l
LCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9Q
SEFTRV9JTlNUQU5ULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFH
X05PTkUsIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lOU1RBTlQy
KGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFt
ZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRf
UEhBU0VfSU5TVEFOVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxB
R19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92
YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfSU5TVEFOVDAoY2F0ZWdvcnksIG5hbWUpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZKQorI2RlZmlu
ZSBUUkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFy
ZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNF
X0lOU1RBTlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09Q
WSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9JTlNUQU5U
MihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25h
bWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5U
X1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZM
QUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJf
dmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIEJFR0lOIGV2ZW50IGNhbGxlZCAibmFtZSIgaW1t
ZWRpYXRlbHksIHdpdGggMCwgMSBvciAyCisvLyBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhl
IGNhdGVnb3J5IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMKKy8vIGRvZXMgbm90aGluZy4KKy8v
IC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRp
bWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNo
YXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9CRUdJTjAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfQkVHSU4xKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAg
ICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJn
MV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0JFR0lOMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9u
YW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
Q09QWV9CRUdJTjAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9B
REQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRS
QUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9CRUdJTjEoY2F0
ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5h
bWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfQ09QWV9CRUdJTjIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwg
bmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAg
ICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMgYSBzaW5nbGUgRU5EIGV2ZW50
IGZvciAibmFtZSIgaW1tZWRpYXRlbHkuIElmIHRoZSBjYXRlZ29yeQorLy8gaXMgbm90IGVuYWJs
ZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmlu
Z3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVy
YWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
RU5EMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFD
RV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5U
X0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRU5EMShjYXRlZ29yeSwgbmFtZSwgYXJn
MV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9F
VkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZM
QUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRU5EMihj
YXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUs
IGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BI
QVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05F
LCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRU5EMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
Q09QWV9FTkQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFs
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0VORDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFt
ZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwg
XAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBUaW1lIHRocmVzaG9sZCBldmVu
dDoKKy8vIE9ubHkgcmVjb3JkIHRoZSBldmVudCBpZiB0aGUgZHVyYXRpb24gaXMgZ3JlYXRlciB0
aGFuIHRoZSBzcGVjaWZpZWQKKy8vIHRocmVzaG9sZF91cyAodGltZSBpbiBtaWNyb3NlY29uZHMp
LgorLy8gUmVjb3JkcyBhIHBhaXIgb2YgYmVnaW4gYW5kIGVuZCBldmVudHMgY2FsbGVkICJuYW1l
IiBmb3IgdGhlIGN1cnJlbnQKKy8vIHNjb3BlLCB3aXRoIDAsIDEgb3IgMiBhc3NvY2lhdGVkIGFy
Z3VtZW50cy4gSWYgdGhlIGNhdGVnb3J5IGlzIG5vdAorLy8gZW5hYmxlZCwgdGhlbiB0aGlzIGRv
ZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBw
bGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBu
b3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9JRl9MT05HRVJfVEhBTjAo
dGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4odGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSkK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfSUZfTE9OR0VSX1RIQU4xKCBcCisgICAgdGhyZXNob2xkX3Vz
LCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4oIFwKKyAgICAgICAgdGhyZXNob2xk
X3VzLCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfSUZfTE9OR0VSX1RIQU4yKCBcCisgICAgdGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFt
ZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4oIFwKKyAgICAgICAgdGhy
ZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1l
LCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWUgb2YgYSBjb3VudGVyIGNhbGxlZCAi
bmFtZSIgaW1tZWRpYXRlbHkuIFZhbHVlCisvLyBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgYSAz
MiBiaXQgaW50ZWdlci4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUg
YXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1h
eSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSMShjYXRlZ29yeSwg
bmFtZSwgdmFsdWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRf
UEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxB
R19OT05FLCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUpKQorI2Rl
ZmluZSBUUkFDRV9DT1BZX0NPVU5URVIxKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZSkgXAorICAgIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAg
ICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgInZh
bHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlcyBv
ZiBhIG11bHRpLXBhcnRlZCBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHkuCisvLyBU
aGUgVUkgd2lsbCB0cmVhdCB2YWx1ZTEgYW5kIHZhbHVlMiBhcyBwYXJ0cyBvZiBhIHdob2xlLCBk
aXNwbGF5aW5nIHRoZWlyCisvLyB2YWx1ZXMgYXMgYSBzdGFja2VkLWJhciBjaGFydC4KKy8vIC0g
Y2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUg
KHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJz
LgorI2RlZmluZSBUUkFDRV9DT1VOVEVSMihjYXRlZ29yeSwgbmFtZSwgdmFsdWUxX25hbWUsIHZh
bHVlMV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAg
ICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgIHZhbHVl
MV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9u
YW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorI2RlZmluZSBUUkFDRV9DT1BZX0NP
VU5URVIyKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAorICAgICAg
ICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBU
UkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0
PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGlu
dD4odmFsdWUyX3ZhbCkpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlIG9mIGEgY291bnRlciBjYWxs
ZWQgIm5hbWUiIGltbWVkaWF0ZWx5LiBWYWx1ZQorLy8gbXVzdCBiZSByZXByZXNlbnRhYmxlIGFz
IGEgMzIgYml0IGludGVnZXIuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBo
YXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhl
eSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRvIGRpc2FtYmln
dWF0ZSBjb3VudGVycyB3aXRoIHRoZSBzYW1lIG5hbWUuIEl0IG11c3QgZWl0aGVyCisvLyAgIGJl
IGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElmIGl0J3MgYSBw
b2ludGVyLCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNoIG9mIHRoZSBw
cm9jZXNzIElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28gZGlmZmVyZW50
IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSX0lEMShj
YXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwg
bmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0
aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSX0lEMShjYXRl
Z29yeSwgbmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJ
VEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNf
Y2FzdDxpbnQ+KHZhbHVlKSkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWVzIG9mIGEgbXVsdGktcGFy
dGVkIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4KKy8vIFRoZSBVSSB3aWxsIHRy
ZWF0IHZhbHVlMSBhbmQgdmFsdWUyIGFzIHBhcnRzIG9mIGEgd2hvbGUsIGRpc3BsYXlpbmcgdGhl
aXIKKy8vIHZhbHVlcyBhcyBhIHN0YWNrZWQtYmFyIGNoYXJ0LgorLy8gLSBjYXRlZ29yeSBhbmQg
bmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgor
Ly8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisvLyAtIHxpZHwg
aXMgdXNlZCB0byBkaXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBuYW1lLiBJdCBt
dXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2YWx1ZSB1cCB0byA2
NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2lsbCBiZSB4b3JlZCB3
aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1lIHBvaW50ZXIgb24K
Ky8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlkZS4KKyNkZWZpbmUg
VFJBQ0VfQ09VTlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZTFfbmFtZSwgdmFsdWUx
X3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIFwKKyAgICAg
ICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAg
dmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisjZGVmaW5lIFRSQUNF
X0NPUFlfQ09VTlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZTFfbmFtZSwgdmFsdWUx
X3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAg
ICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAg
dmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisKKy8vIFJlY29yZHMg
YSBzaW5nbGUgU1RBUlQgZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseSwgd2l0aCAwLCAx
IG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdvcnkgaXMgbm90IGVu
YWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFt
ZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8g
ICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisvLyAtIHxpZHwgaXMg
dXNlZCB0byBtYXRjaCB0aGUgU1RBUlQgZXZlbnQgd2l0aCB0aGUgRklOSVNIIGV2ZW50LiBJdCBt
dXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2YWx1ZSB1cCB0byA2
NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2lsbCBiZSB4b3JlZCB3
aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1lIHBvaW50ZXIgb24K
Ky8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlkZS4KKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfU1RBUlQwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19OT05FKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9TVEFSVDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0Vf
U1RBUlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05P
TkUsIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NUQVJUMihjYXRl
Z29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1l
LCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNF
X0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0Vf
RVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFt
ZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfU1RBUlQwKGNhdGVnb3J5LCBu
YW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VW
RU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZF
TlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX1NUQVJUMShjYXRlZ29yeSwg
bmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25hbWUs
IGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX1NUQVJUMihjYXRlZ29yeSwgbmFt
ZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3Zh
bCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BI
QVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxB
R19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92
YWwpCisKKy8vIFJlY29yZHMgYSBzaW5nbGUgRklOSVNIIGV2ZW50IGZvciAibmFtZSIgaW1tZWRp
YXRlbHkuIElmIHRoZSBjYXRlZ29yeQorLy8gaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcyBkb2Vz
IG5vdGhpbmcuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZJTklTSDAoY2F0ZWdvcnksIG5hbWUsIGlk
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhB
U0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxB
R19OT05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GSU5JU0gxKGNhdGVnb3J5LCBuYW1lLCBpZCwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRI
X0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwg
aWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfRklOSVNIMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICBhcmcx
X25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9DT1BZX0ZJTklTSDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNh
dGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9F
VkVOVF9DT1BZX0ZJTklTSDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFs
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhB
U0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxB
R19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0NPUFlfRklOSVNIMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWws
IFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25h
bWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworLy8gSW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdHJhY2luZyBBUEkgZGVmaW5pdGlvbnMu
CisKKy8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGdpdmVuIHRy
YWNlIGNhdGVnb3J5LiBPbmx5CisvLyBsb25nLWxpdmVkIGxpdGVyYWwgc3RyaW5ncyBzaG91bGQg
YmUgZ2l2ZW4gYXMgdGhlIGNhdGVnb3J5IG5hbWUuIFRoZSByZXR1cm5lZAorLy8gcG9pbnRlciBj
YW4gYmUgaGVsZCBwZXJtYW5lbnRseSBpbiBhIGxvY2FsIHN0YXRpYyBmb3IgZXhhbXBsZS4gSWYg
dGhlCisvLyB1bnNpZ25lZCBjaGFyIGlzIG5vbi16ZXJvLCB0cmFjaW5nIGlzIGVuYWJsZWQuIElm
IHRyYWNpbmcgaXMgZW5hYmxlZCwKKy8vIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQg
Y2FuIGJlIGNhbGxlZC4gSXQncyBPSyBpZiB0cmFjaW5nIGlzIGRpc2FibGVkCisvLyBiZXR3ZWVu
IHRoZSBsb2FkIG9mIHRoZSB0cmFjaW5nIHN0YXRlIGFuZCB0aGUgY2FsbCB0bworLy8gVFJBQ0Vf
RVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCwgYmVjYXVzZSB0aGlzIGZsYWcgb25seSBwcm92aWRl
cyBhbiBlYXJseSBvdXQKKy8vIGZvciBiZXN0IHBlcmZvcm1hbmNlIHdoZW4gdHJhY2luZyBpcyBk
aXNhYmxlZC4KKy8vIGNvbnN0IHVuc2lnbmVkIGNoYXIqCisvLyAgICAgVFJBQ0VfRVZFTlRfQVBJ
X0dFVF9DQVRFR09SWV9FTkFCTEVEKGNvbnN0IGNoYXIqIGNhdGVnb3J5X25hbWUpCisjZGVmaW5l
IFRSQUNFX0VWRU5UX0FQSV9HRVRfQ0FURUdPUllfRU5BQkxFRCBcCisgICAgV2ViQ29yZTo6UGxh
dGZvcm1TdXBwb3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcKKworLy8gQWRkIGEgdHJh
Y2UgZXZlbnQgdG8gdGhlIHBsYXRmb3JtIHRyYWNpbmcgc3lzdGVtLiBSZXR1cm5zIHRocmVzaG9s
ZEJlZ2luSWQKKy8vIGZvciB1c2UgaW4gYSBjb3JyZXNwb25kaW5nIGVuZCBUUkFDRV9FVkVOVF9B
UElfQUREX1RSQUNFX0VWRU5UIGNhbGwuCisvLyBpbnQgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFD
RV9FVkVOVCgKKy8vICAgICAgICAgICAgICAgICAgICBjaGFyIHBoYXNlLAorLy8gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5X2VuYWJsZWQsCisvLyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKy8vICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgaWQsCisvLyAgICAgICAgICAgICAgICAgICAgaW50IG51bV9hcmdz
LAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdfbmFtZXMsCisvLyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnX3R5cGVzLAorLy8gICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnX3ZhbHVlcywKKy8vICAg
ICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKy8vICAgICAgICAgICAgICAg
ICAgICBsb25nIGxvbmcgdGhyZXNob2xkLAorLy8gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgZmxhZ3MpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQgXAor
ICAgIFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVudAorCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogCiAvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IHRyYWNlIGV2ZW50IG1h
Y3JvcyBjcmVhdGUgdGVtcG9yYXJ5IHZhcmlhYmxlcwogLy8gdG8ga2VlcCBpbnN0cnVtZW50YXRp
b24gb3ZlcmhlYWQgbG93LiBUaGVzZSBtYWNyb3MgZ2l2ZSBlYWNoIHRlbXBvcmFyeQogLy8gdmFy
aWFibGUgYSB1bmlxdWUgbmFtZSBiYXNlZCBvbiB0aGUgbGluZSBudW1iZXIgdG8gcHJldmVudCBu
YW1lIGNvbGxpc3Npb25zLgotI2RlZmluZSBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElG
SUVSMyhhLCBiKSBhIyNiCi0jZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJ
RVIyKGEsIGIpIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIzKGEsIGIpCi0jZGVm
aW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIobmFtZV9wcmVmaXgpIFRSQUNF
X0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIyKG5hbWVfcHJlZml4LCBfX0xJTkVfXykKKyNk
ZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMyhhLCBiKSBcCisgICAgdHJhY2VfZXZlbnRf
dW5pcXVlXyMjYSMjYgorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQyKGEsIGIpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQzKGEsIGIpCisjZGVmaW5lIElOVEVSTkFMVFJB
Q0VFVkVOVFVJRChuYW1lX3ByZWZpeCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJRDIo
bmFtZV9wcmVmaXgsIF9fTElORV9fKQorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVy
bmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkuCisvLyAtIFdURl9BTk5PVEFURV9C
RU5JR05fUkFDRSwgc2VlIFRocmVhZCBTYWZldHkgYWJvdmUuCisjZGVmaW5lIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KSBcCisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpID0gMDsgXAor
ICAgIFdURl9BTk5PVEFURV9CRU5JR05fUkFDRSgmSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0
YXRpYyksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNlX2V2ZW50IGNhdGVn
b3J5Iik7IFwKKyAgICBpZiAoIUlOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSBcCisg
ICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSA9IFwKKyAgICAgICAgICBUUkFD
RV9FVkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJMRUQoY2F0ZWdvcnkpOworCisvLyBJbXBsZW1l
bnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkg
YW5kIGFkZAorLy8gZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuCisjaWYgQ09NUElM
RVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChpZ25v
cmUpICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKHBo
YXNlLCBjYXRlZ29yeSwgbmFtZSwgZmxhZ3MsIC4uLikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIGlmICgqSU5URVJOQUxUUkFD
RUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6YWRk
VHJhY2VFdmVudCggXAorICAgICAgICAgIHBoYXNlLCBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0
c3RhdGljKSwgbmFtZSwgXAorICAgICAgICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6Om5vRXZlbnRJ
ZCwgZmxhZ3MsICMjX19WQV9BUkdTX18pOyBcCisgICAgfQorI2VuZGlmCisKKy8vIEltcGxlbWVu
dGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeSBh
bmQgYWRkIGJlZ2luCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgZW5hYmxlZC4gQWxzbyBh
ZGRzIHRoZSBlbmQgZXZlbnQgd2hlbiB0aGUgc2NvcGUKKy8vIGVuZHMuCisjaWYgQ09NUElMRVIo
TVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQo
aWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUsIC4uLikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6
OlRyYWNlRW5kT25TY29wZUNsb3NlIFwKKyAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHBy
b2ZpbGVTY29wZSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMp
KSB7IFwKKyAgICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OmFkZFRyYWNlRXZlbnQoIFwKKyAgICAg
ICAgICBUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VF
VkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgbmFtZSwgV2ViQ29yZTo6VHJhY2VFdmVu
dDo6bm9FdmVudElkLCBcCisgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCAjI19fVkFf
QVJHU19fKTsgXAorICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSkuaW5p
dGlhbGl6ZSggXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBu
YW1lKTsgXAorICAgIH0KKyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVy
bmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZCBiZWdpbgorLy8gZXZl
bnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuIEFsc28gYWRkcyB0aGUgZW5kIGV2ZW50IHdo
ZW4gdGhlIHNjb3BlCisvLyBlbmRzLiBJZiB0aGUgZWxhcHNlZCB0aW1lIGlzIDwgdGhyZXNob2xk
IHRpbWUsIHRoZSBiZWdpbi9lbmQgcGFpciBpcyBlcmFzZWQuCisjaWYgQ09NUElMRVIoTVNWQzdf
T1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9O
R0VSX1RIQU4oaWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4odGhyZXNob2xkLCBcCisgICAgICAgIGNh
dGVnb3J5LCBuYW1lLCAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdP
UllfSU5GTyhjYXRlZ29yeSk7IFwKKyAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9u
U2NvcGVDbG9zZVRocmVzaG9sZCBcCisgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChwcm9m
aWxlU2NvcGUpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkg
eyBcCisgICAgICBpbnQgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGJlZ2luX2V2ZW50X2lkKSA9IFwK
KyAgICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAgICAgICAg
ICAgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgICAgIElOVEVSTkFMVFJBQ0VF
VkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgICBuYW1lLCBXZWJDb3JlOjpUcmFjZUV2
ZW50Ojpub0V2ZW50SWQsIFwKKyAgICAgICAgICAgIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgIyNf
X1ZBX0FSR1NfXyk7IFwKKyAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChwcm9maWxlU2NvcGUp
LmluaXRpYWxpemUoIFwKKyAgICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGlj
KSwgbmFtZSwgXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChiZWdpbl9ldmVudF9p
ZCksIHRocmVzaG9sZCk7IFwKKyAgICB9CisjZW5kaWYKKworLy8gSW1wbGVtZW50YXRpb24gZGV0
YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5IGFuZCBhZGQKKy8v
IGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLgorI2lmIENPTVBJTEVSKE1TVkM3X09S
X0xPV0VSKQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChpZ25vcmUp
ICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhf
SUQocGhhc2UsIGNhdGVnb3J5LCBuYW1lLCBpZCwgZmxhZ3MsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
R0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZF
TlRVSUQoY2F0c3RhdGljKSkgeyBcCisgICAgICB1bnNpZ25lZCBjaGFyIHRyYWNlRXZlbnRGbGFn
cyA9IGZsYWdzIHwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQ7IFwKKyAgICAgIFdlYkNvcmU6OlRy
YWNlRXZlbnQ6OlRyYWNlSUQgdHJhY2VFdmVudFRyYWNlSUQoIFwKKyAgICAgICAgICBpZCwgJnRy
YWNlRXZlbnRGbGFncyk7IFwKKyAgICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OmFkZFRyYWNlRXZl
bnQoIFwKKyAgICAgICAgICBwaGFzZSwgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyks
IFwKKyAgICAgICAgICBuYW1lLCB0cmFjZUV2ZW50VHJhY2VJRC5kYXRhKCksIHRyYWNlRXZlbnRG
bGFncywgXAorICAgICAgICAgICMjX19WQV9BUkdTX18pOyBcCisgICAgfQorI2VuZGlmCisKKy8v
IE5vdGVzIHJlZ2FyZGluZyB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zOgorLy8gTmV3IHZhbHVl
cyBjYW4gYmUgYWRkZWQgYW5kIHByb3BhZ2F0ZWQgdG8gdGhpcmQgcGFydHkgbGlicmFyaWVzLCBi
dXQgZXhpc3RpbmcKKy8vIGRlZmluaXRpb25zIG11c3QgbmV2ZXIgYmUgY2hhbmdlZCwgYmVjYXVz
ZSB0aGlyZCBwYXJ0eSBsaWJyYXJpZXMgbWF5IHVzZSBvbGQKKy8vIGRlZmluaXRpb25zLgorCisv
LyBQaGFzZSBpbmRpY2F0ZXMgdGhlIG5hdHVyZSBvZiBhbiBldmVudCBlbnRyeS4gRS5nLiBwYXJ0
IG9mIGEgYmVnaW4vZW5kIHBhaXIuCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOICAg
ICgnQicpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0VORCAgICAgICgnRScpCisjZGVmaW5l
IFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQgICgnSScpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BI
QVNFX1NUQVJUICAgICgnUycpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCAgICgn
RicpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX01FVEFEQVRBICgnTScpCisjZGVmaW5lIFRS
QUNFX0VWRU5UX1BIQVNFX0NPVU5URVIgICgnQycpCisKKy8vIEZsYWdzIGZvciBjaGFuZ2luZyB0
aGUgYmVoYXZpb3Igb2YgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVC4KKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfRkxBR19OT05FICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
MCkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSAgICAgICAgKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KDEgPDwgMCkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEICAg
ICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEgPDwgMSkpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0ZMQUdfTUFOR0xFX0lEICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEgPDwgMikp
CisKKy8vIFR5cGUgdmFsdWVzIGZvciBpZGVudGlmeWluZyB0eXBlcyBpbiB0aGUgVHJhY2VWYWx1
ZSB1bmlvbi4KKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9CT09MICAgICAgICAgKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KDEpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX1VJTlQgICAg
ICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMikpCisjZGVmaW5lIFRSQUNFX1ZBTFVF
X1RZUEVfSU5UICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigzKSkKKyNkZWZp
bmUgVFJBQ0VfVkFMVUVfVFlQRV9ET1VCTEUgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KDQpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX1BPSU5URVIgICAgICAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oNSkpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfU1RSSU5HICAg
ICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig2KSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVf
VFlQRV9DT1BZX1NUUklORyAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDcpKQogCi0vLyBJ
c3N1ZXMgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4gYW5kIHRyYWNlRXZlbnRFbmQg
Y2FsbHMgZm9yIHRoZSBlbmNsb3Npbmcgc2NvcGUKLSNkZWZpbmUgVFJBQ0VfRVZFTlQobmFtZSwg
aWQsIGV4dHJhKSBXZWJDb3JlOjppbnRlcm5hbDo6U2NvcGVUcmFjZXIgVFJBQ0VfRVZFTlRfTUFL
RV9VTklRVUVfSURFTlRJRklFUihfX3RyYWNlRXZlbnRTY29wZSkobmFtZSwgaWQsIGV4dHJhKTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgaW50ZXJuYWwgeworbmFtZXNwYWNl
IFRyYWNlRXZlbnQgeworCisvLyBTcGVjaWZ5IHRoZXNlIHZhbHVlcyB3aGVuIHRoZSBjb3JyZXNw
b25kaW5nIGFyZ3VtZW50IG9mIGFkZFRyYWNlRXZlbnQgaXMgbm90CisvLyB1c2VkLgorY29uc3Qg
aW50IHplcm9OdW1BcmdzID0gMDsKK2NvbnN0IGludCBub1RocmVzaG9sZEJlZ2luSWQgPSAtMTsK
K2NvbnN0IGxvbmcgbG9uZyBub1RocmVzaG9sZFZhbHVlID0gMDsKK2NvbnN0IHVuc2lnbmVkIGxv
bmcgbG9uZyBub0V2ZW50SWQgPSAwOwogCi0vLyBVc2VkIGJ5IFRSQUNFX0VWRU5UIG1hY3JvLiBE
byBub3QgdXNlIGRpcmVjdGx5LgotY2xhc3MgU2NvcGVUcmFjZXIgeworLy8gVHJhY2VJRCBlbmNh
cHN1bGF0ZXMgYW4gSUQgdGhhdCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIgb3IgcG9pbnRlci4g
UG9pbnRlcnMKKy8vIGFyZSBtYW5nbGVkIHdpdGggdGhlIFByb2Nlc3MgSUQgc28gdGhhdCB0aGV5
IGFyZSB1bmxpa2VseSB0byBjb2xsaWRlIHdoZW4gdGhlCisvLyBzYW1lIHBvaW50ZXIgaXMgdXNl
ZCBvbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorY2xhc3MgVHJhY2VJRCB7CiBwdWJsaWM6Ci0gICAg
U2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIqIGV4dHJhKTsK
LSAgICB+U2NvcGVUcmFjZXIoKTsKKyAgICBleHBsaWNpdCBUcmFjZUlEKGNvbnN0IHZvaWQqIGlk
LCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPihyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGxvbmc+KGlkKSkpCisg
ICAgeworICAgICAgICAqZmxhZ3MgfD0gVFJBQ0VfRVZFTlRfRkxBR19NQU5HTEVfSUQ7CisgICAg
fQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgbG9uZyBsb25nIGlkLCB1bnNpZ25lZCBj
aGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBU
cmFjZUlEKHVuc2lnbmVkIGxvbmcgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0YShp
ZCkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgaW50IGlk
LCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgKHZvaWQpZmxhZ3M7IH0KKyAg
ICBleHBsaWNpdCBUcmFjZUlEKHVuc2lnbmVkIHNob3J0IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFn
cykgOiBtX2RhdGEoaWQpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHVu
c2lnbmVkIGNoYXIgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0YShpZCkgeyAodm9p
ZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQobG9uZyBsb25nIGlkLCB1bnNpZ25lZCBj
aGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihpZCkpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKGxvbmcgaWQs
IHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGlkKSkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNl
SUQoaW50IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBs
aWNpdCBUcmFjZUlEKHNob3J0IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBt
X2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsgKHZvaWQpZmxhZ3M7
IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHNpZ25lZCBjaGFyIGlkLCB1bnNpZ25lZCBjaGFyKiBm
bGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihp
ZCkpIHsgKHZvaWQpZmxhZ3M7IH0KKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbG9uZyBsb25n
IG1fZGF0YTsKK307CisKKy8vIFNpbXBsZSB1bmlvbiB0byBzdG9yZSB2YXJpb3VzIHR5cGVzIGFz
IHVuc2lnbmVkIGxvbmcgbG9uZy4KK3VuaW9uIFRyYWNlVmFsdWVVbmlvbiB7CisgICAgYm9vbCBt
X2Jvb2w7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fdWludDsKKyAgICBsb25nIGxvbmcgbV9p
bnQ7CisgICAgZG91YmxlIG1fZG91YmxlOworICAgIGNvbnN0IHZvaWQqIG1fcG9pbnRlcjsKKyAg
ICBjb25zdCBjaGFyKiBtX3N0cmluZzsKK307CiAKKy8vIFNpbXBsZSBjb250YWluZXIgZm9yIGNv
bnN0IGNoYXIqIHRoYXQgc2hvdWxkIGJlIGNvcGllZCBpbnN0ZWFkIG9mIHJldGFpbmVkLgorY2xh
c3MgVHJhY2VTdHJpbmdXaXRoQ29weSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVHJhY2VTdHJp
bmdXaXRoQ29weShjb25zdCBjaGFyKiBzdHIpIDogbV9zdHIoc3RyKSB7IH0KKyAgICBvcGVyYXRv
ciBjb25zdCBjaGFyKiAoKSBjb25zdCB7IHJldHVybiBtX3N0cjsgfQogcHJpdmF0ZToKLSAgICBj
b25zdCBjaGFyKiBtX25hbWU7Ci0gICAgdm9pZCogbV9pZDsKLSAgICBPd25BcnJheVB0cjxjaGFy
PiBtX2V4dHJhOworICAgIGNvbnN0IGNoYXIqIG1fc3RyOwogfTsKIAotaW5saW5lIFNjb3BlVHJh
Y2VyOjpTY29wZVRyYWNlcihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciog
ZXh0cmEpCi0gICAgOiBtX25hbWUobmFtZSkKLSAgICAsIG1faWQoaWQpCi17Ci0gICAgUGxhdGZv
cm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJhKTsgXAotICAgIGlmIChl
eHRyYSAmJiBQbGF0Zm9ybVN1cHBvcnQ6OmlzVHJhY2VFdmVudEVuYWJsZWQoKSkKLSAgICAgICAg
bV9leHRyYSA9IGFkb3B0QXJyYXlQdHIoc3RyZHVwKGV4dHJhKSk7CisvLyBEZWZpbmUgc2V0VHJh
Y2VWYWx1ZSBmb3IgZWFjaCBhbGxvd2VkIHR5cGUuIEl0IHN0b3JlcyB0aGUgdHlwZSBhbmQKKy8v
IHZhbHVlIGluIHRoZSByZXR1cm4gYXJndW1lbnRzLiBUaGlzIGFsbG93cyB0aGlzIEFQSSB0byBh
dm9pZCBkZWNsYXJpbmcgYW55CisvLyBzdHJ1Y3R1cmVzIHNvIHRoYXQgaXQgaXMgcG9ydGFibGUg
dG8gdGhpcmRfcGFydHkgbGlicmFyaWVzLgorI2RlZmluZSBJTlRFUk5BTF9ERUNMQVJFX1NFVF9U
UkFDRV9WQUxVRShhY3R1YWxfdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmlvbl9tZW1iZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWVfdHlwZV9pZCkgXAorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRU
cmFjZVZhbHVlKGFjdHVhbF90eXBlIGFyZywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHR5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcqIHZhbHVlKSB7IFwKKyAgICAgICAgVHJh
Y2VWYWx1ZVVuaW9uIHR5cGVWYWx1ZTsgXAorICAgICAgICB0eXBlVmFsdWUudW5pb25fbWVtYmVy
ID0gYXJnOyBcCisgICAgICAgICp0eXBlID0gdmFsdWVfdHlwZV9pZDsgXAorICAgICAgICAqdmFs
dWUgPSB0eXBlVmFsdWUubV91aW50OyBcCisgICAgfQorLy8gU2ltcGxlciBmb3JtIGZvciBpbnQg
dHlwZXMgdGhhdCBjYW4gYmUgc2FmZWx5IGNhc3RlZC4KKyNkZWZpbmUgSU5URVJOQUxfREVDTEFS
RV9TRVRfVFJBQ0VfVkFMVUVfSU5UKGFjdHVhbF90eXBlLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlX2lkKSBcCisgICAgc3RhdGljIGlu
bGluZSB2b2lkIHNldFRyYWNlVmFsdWUoYWN0dWFsX3R5cGUgYXJnLCBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogdHlwZSwgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyogdmFsdWUpIHsg
XAorICAgICAgICAqdHlwZSA9IHZhbHVlX3R5cGVfaWQ7IFwKKyAgICAgICAgKnZhbHVlID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihhcmcpOyBcCisgICAgfQorCitJTlRFUk5BTF9E
RUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQodW5zaWduZWQgbG9uZyBsb25nLCBUUkFDRV9WQUxV
RV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQodW5zaWdu
ZWQgaW50LCBUUkFDRV9WQUxVRV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFD
RV9WQUxVRV9JTlQodW5zaWduZWQgc2hvcnQsIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCkKK0lOVEVS
TkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBjaGFyLCBUUkFDRV9WQUxV
RV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQobG9uZyBs
b25nLCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZB
TFVFX0lOVChpbnQsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRf
VFJBQ0VfVkFMVUVfSU5UKHNob3J0LCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkKK0lOVEVSTkFMX0RF
Q0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChzaWduZWQgY2hhciwgVFJBQ0VfVkFMVUVfVFlQRV9J
TlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShib29sLCBtX2Jvb2wsIFRSQUNF
X1ZBTFVFX1RZUEVfQk9PTCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGRvdWJs
ZSwgbV9kb3VibGUsIFRSQUNFX1ZBTFVFX1RZUEVfRE9VQkxFKQorSU5URVJOQUxfREVDTEFSRV9T
RVRfVFJBQ0VfVkFMVUUoY29uc3Qgdm9pZCosIG1fcG9pbnRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSQUNFX1ZBTFVFX1RZUEVfUE9JTlRFUikKK0lOVEVSTkFMX0RFQ0xB
UkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0IGNoYXIqLCBtX3N0cmluZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRSQUNFX1ZBTFVFX1RZUEVfU1RSSU5HKQorSU5URVJOQUxfREVD
TEFSRV9TRVRfVFJBQ0VfVkFMVUUoY29uc3QgVHJhY2VTdHJpbmdXaXRoQ29weSYsIG1fc3RyaW5n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJBQ0VfVkFMVUVfVFlQRV9DT1BZ
X1NUUklORykKKworI3VuZGVmIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFCisjdW5k
ZWYgSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UCisKKy8vIFdURjo6U3RyaW5n
IHZlcnNpb24gb2Ygc2V0VHJhY2VWYWx1ZSBzbyB0aGF0IHRyYWNlIGFyZ3VtZW50cyBjYW4gYmUg
c3RyaW5ncy4KK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRUcmFjZVZhbHVlKGNvbnN0IFdURjo6Q1N0
cmluZyYgYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciogdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyogdmFsdWUpIHsKKyAgICBUcmFjZVZhbHVlVW5pb24gdHlwZVZhbHVlOworICAgIHR5cGVW
YWx1ZS5tX3N0cmluZyA9IGFyZy5kYXRhKCk7CisgICAgKnR5cGUgPSBUUkFDRV9WQUxVRV9UWVBF
X0NPUFlfU1RSSU5HOworICAgICp2YWx1ZSA9IHR5cGVWYWx1ZS5tX3VpbnQ7CiB9CiAKLWlubGlu
ZSBTY29wZVRyYWNlcjo6flNjb3BlVHJhY2VyKCkKLXsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRy
YWNlRXZlbnRFbmQobV9uYW1lLCBtX2lkLCBtX2V4dHJhLmdldCgpKTsKKy8vIFRoZXNlIGFkZFRy
YWNlRXZlbnQgdGVtcGxhdGUgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGhlcmUgaW5zdGVhZCBvZiBp
biB0aGUKKy8vIG1hY3JvLCBiZWNhdXNlIHRoZSBhcmcgdmFsdWVzIGNvdWxkIGJlIHRlbXBvcmFy
eSBzdHJpbmcgb2JqZWN0cy4gSW4gb3JkZXIgdG8KKy8vIHN0b3JlIHBvaW50ZXJzIHRvIHRoZSBp
bnRlcm5hbCBjX3N0ciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSB0cmFjaW5nIEFQSSwgdGhlCisv
LyBhcmcgdmFsdWVzIG11c3QgbGl2ZSB0aHJvdWdob3V0IHRoZXNlIHByb2NlZHVyZXMuCisKK3N0
YXRpYyBpbmxpbmUgaW50IGFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpIHsKKyAgICByZXR1
cm4gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgcGhhc2UsIGNhdGVn
b3J5RW5hYmxlZCwgbmFtZSwgaWQsCisgICAgICAgIHplcm9OdW1BcmdzLCAwLCAwLCAwLAorICAg
ICAgICBub1RocmVzaG9sZEJlZ2luSWQsIG5vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgQVJHMV9UWVBFPgorc3RhdGljIGlubGluZSBpbnQgYWRkVHJhY2VFdmVu
dChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYXJnMU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFS
RzFfVFlQRSYgYXJnMVZhbCkgeworICAgIGNvbnN0IGludCBudW1BcmdzID0gMTsKKyAgICB1bnNp
Z25lZCBjaGFyIGFyZ1R5cGVzWzFdOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmdWYWx1ZXNb
MV07CisgICAgc2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlwZXNbMF0sICZhcmdWYWx1ZXNb
MF0pOworICAgIHJldHVybiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAg
ICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwKKyAgICAgICAgbnVtQXJncywgJmFy
ZzFOYW1lLCBhcmdUeXBlcywgYXJnVmFsdWVzLAorICAgICAgICBub1RocmVzaG9sZEJlZ2luSWQs
IG5vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK
K3RlbXBsYXRlPGNsYXNzIEFSRzFfVFlQRSwgY2xhc3MgQVJHMl9UWVBFPgorc3RhdGljIGlubGlu
ZSBpbnQgYWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogYXJnMU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEFSRzFfVFlQRSYgYXJnMVZhbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogYXJnMk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEFSRzJfVFlQRSYgYXJnMlZhbCkgeworICAgIGNvbnN0IGludCBudW1B
cmdzID0gMjsKKyAgICBjb25zdCBjaGFyKiBhcmdOYW1lc1syXSA9IHsgYXJnMU5hbWUsIGFyZzJO
YW1lIH07CisgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1syXTsKKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgYXJnVmFsdWVzWzJdOworICAgIHNldFRyYWNlVmFsdWUoYXJnMVZhbCwgJmFyZ1R5cGVz
WzBdLCAmYXJnVmFsdWVzWzBdKTsKKyAgICBzZXRUcmFjZVZhbHVlKGFyZzJWYWwsICZhcmdUeXBl
c1sxXSwgJmFyZ1ZhbHVlc1sxXSk7CisgICAgcmV0dXJuIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJB
Q0VfRVZFTlQoCisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQsIG5hbWUsIGlkLAorICAg
ICAgICBudW1BcmdzLCBhcmdOYW1lcywgYXJnVHlwZXMsIGFyZ1ZhbHVlcywKKyAgICAgICAgbm9U
aHJlc2hvbGRCZWdpbklkLCBub1RocmVzaG9sZFZhbHVlLCBmbGFncyk7Cit9CisKKy8vIFVzZWQg
YnkgVFJBQ0VfRVZFTlR4IG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5LgorY2xhc3MgVHJhY2VF
bmRPblNjb3BlQ2xvc2UgeworcHVibGljOgorICAgIC8vIE5vdGU6IG1lbWJlcnMgb2YgbV9kYXRh
IGludGVudGlvbmFsbHkgbGVmdCB1bmluaXRpYWxpemVkLiBTZWUgaW5pdGlhbGl6ZS4KKyAgICBU
cmFjZUVuZE9uU2NvcGVDbG9zZSgpIDogbV9wZGF0YSgwKSB7IH0KKyAgICB+VHJhY2VFbmRPblNj
b3BlQ2xvc2UoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGRhdGEpCisgICAgICAgICAgICBhZGRF
dmVudElmRW5hYmxlZCgpOworICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCB1bnNp
Z25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIG5hbWUpCisgICAgeworICAgICAgICBtX2RhdGEuY2F0ZWdvcnlFbmFibGVkID0gY2F0ZWdv
cnlFbmFibGVkOworICAgICAgICBtX2RhdGEubmFtZSA9IG5hbWU7CisgICAgICAgIG1fcGRhdGEg
PSAmbV9kYXRhOworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBBZGQgdGhlIGVuZCBldmVudCBp
ZiB0aGUgY2F0ZWdvcnkgaXMgc3RpbGwgZW5hYmxlZC4KKyAgICB2b2lkIGFkZEV2ZW50SWZFbmFi
bGVkKCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkgY2FsbGVkIHdoZW4gbV9wZGF0YSBpcyBub24t
bnVsbC4KKyAgICAgICAgaWYgKCptX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQpIHsKKyAgICAgICAg
ICAgIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAgICAgICAgICAgVFJB
Q0VfRVZFTlRfUEhBU0VfRU5ELAorICAgICAgICAgICAgICAgIG1fcGRhdGEtPmNhdGVnb3J5RW5h
YmxlZCwKKyAgICAgICAgICAgICAgICBtX3BkYXRhLT5uYW1lLCBub0V2ZW50SWQsCisgICAgICAg
ICAgICAgICAgemVyb051bUFyZ3MsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgbm9UaHJlc2hv
bGRCZWdpbklkLCBub1RocmVzaG9sZFZhbHVlLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gVGhpcyBEYXRhIHN0cnVjdCB3b3JrYXJvdW5kIGlzIHRv
IGF2b2lkIGluaXRpYWxpemluZyBhbGwgdGhlIG1lbWJlcnMKKyAgICAvLyBpbiBEYXRhIGR1cmlu
ZyBjb25zdHJ1Y3Rpb24gb2YgdGhpcyBvYmplY3QsIHNpbmNlIHRoaXMgb2JqZWN0IGlzIGFsd2F5
cworICAgIC8vIGNvbnN0cnVjdGVkLCBldmVuIHdoZW4gdHJhY2luZyBpcyBkaXNhYmxlZC4gSWYg
dGhlIG1lbWJlcnMgb2YgRGF0YSB3ZXJlCisgICAgLy8gbWVtYmVycyBvZiB0aGlzIGNsYXNzIGlu
c3RlYWQsIGNvbXBpbGVyIHdhcm5pbmdzIG9jY3VyIGFib3V0IHBvdGVudGlhbAorICAgIC8vIHVu
aW5pdGlhbGl6ZWQgYWNjZXNzZXMuCisgICAgc3RydWN0IERhdGEgeworICAgICAgICBjb25zdCB1
bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7
CisgICAgfTsKKyAgICBEYXRhKiBtX3BkYXRhOworICAgIERhdGEgbV9kYXRhOworfTsKKworLy8g
VXNlZCBieSBUUkFDRV9FVkVOVHggbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHkuCitjbGFzcyBU
cmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCB7CitwdWJsaWM6CisgICAgLy8gTm90ZTogbWVt
YmVycyBvZiBtX2RhdGEgaW50ZW50aW9uYWxseSBsZWZ0IHVuaW5pdGlhbGl6ZWQuIFNlZSBpbml0
aWFsaXplLgorICAgIFRyYWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xkKCkgOiBtX3BkYXRhKDAp
IHsgfQorICAgIH5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCgpCisgICAgeworICAgICAg
ICBpZiAobV9wZGF0YSkKKyAgICAgICAgICAgIGFkZEV2ZW50SWZFbmFibGVkKCk7CisgICAgfQor
CisgICAgLy8gQ2FsbGVkIGJ5IG1hY3JvcyBvbmx5IHdoZW4gdHJhY2luZyBpcyBlbmFibGVkIGF0
IHRoZSBwb2ludCB3aGVuIHRoZSBiZWdpbgorICAgIC8vIGV2ZW50IGlzIGFkZGVkLgorICAgIHZv
aWQgaW5pdGlhbGl6ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgIGlu
dCB0aHJlc2hvbGRCZWdpbklELAorICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGhyZXNo
b2xkKQorICAgIHsKKyAgICAgICAgbV9kYXRhLmNhdGVnb3J5RW5hYmxlZCA9IGNhdGVnb3J5RW5h
YmxlZDsKKyAgICAgICAgbV9kYXRhLm5hbWUgPSBuYW1lOworICAgICAgICBtX2RhdGEudGhyZXNo
b2xkQmVnaW5JRCA9IHRocmVzaG9sZEJlZ2luSUQ7CisgICAgICAgIG1fZGF0YS50aHJlc2hvbGQg
PSB0aHJlc2hvbGQ7CisgICAgICAgIG1fcGRhdGEgPSAmbV9kYXRhOworICAgIH0KKworcHJpdmF0
ZToKKyAgICAvLyBBZGQgdGhlIGVuZCBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgc3RpbGwgZW5h
YmxlZC4KKyAgICB2b2lkIGFkZEV2ZW50SWZFbmFibGVkKCkKKyAgICB7CisgICAgICAgIC8vIE9u
bHkgY2FsbGVkIHdoZW4gbV9wZGF0YSBpcyBub24tbnVsbC4KKyAgICAgICAgaWYgKCptX3BkYXRh
LT5jYXRlZ29yeUVuYWJsZWQpIHsKKyAgICAgICAgICAgIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJB
Q0VfRVZFTlQoCisgICAgICAgICAgICAgICAgVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELAorICAgICAg
ICAgICAgICAgIG1fcGRhdGEtPmNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICBtX3Bk
YXRhLT5uYW1lLCBub0V2ZW50SWQsCisgICAgICAgICAgICAgICAgemVyb051bUFyZ3MsIDAsIDAs
IDAsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+dGhyZXNob2xkQmVnaW5JRCwgbV9wZGF0YS0+
dGhyZXNob2xkLAorICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGlzIERhdGEgc3RydWN0IHdvcmthcm91bmQgaXMgdG8g
YXZvaWQgaW5pdGlhbGl6aW5nIGFsbCB0aGUgbWVtYmVycworICAgIC8vIGluIERhdGEgZHVyaW5n
IGNvbnN0cnVjdGlvbiBvZiB0aGlzIG9iamVjdCwgc2luY2UgdGhpcyBvYmplY3QgaXMgYWx3YXlz
CisgICAgLy8gY29uc3RydWN0ZWQsIGV2ZW4gd2hlbiB0cmFjaW5nIGlzIGRpc2FibGVkLiBJZiB0
aGUgbWVtYmVycyBvZiBEYXRhIHdlcmUKKyAgICAvLyBtZW1iZXJzIG9mIHRoaXMgY2xhc3MgaW5z
dGVhZCwgY29tcGlsZXIgd2FybmluZ3Mgb2NjdXIgYWJvdXQgcG90ZW50aWFsCisgICAgLy8gdW5p
bml0aWFsaXplZCBhY2Nlc3Nlcy4KKyAgICBzdHJ1Y3QgRGF0YSB7CisgICAgICAgIGxvbmcgbG9u
ZyB0aHJlc2hvbGQ7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxl
ZDsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICAgICAgaW50IHRocmVzaG9sZEJlZ2lu
SUQ7CisgICAgfTsKKyAgICBEYXRhKiBtX3BkYXRhOworICAgIERhdGEgbV9kYXRhOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgVHJhY2VFdmVudAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBs
YXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNmMwZTc0ZjEyOTcyYzdmMzc0NjM0MGFmZjY5
YjMxMmRjMjVjYTFlOS4uMDA4NDEwOGIyMWYwM2U3NGM0MzQyYzY5YjE4OGMzMjc5NTg3ZTI2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0
UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAgLTIzNywxMSArMjM3LDUyIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50U3RhdHNDb3VudGVyKGNvbnN0IGNoYXIqIG5h
bWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRTdGF0c0NvdW50ZXIoY29uc3QgY2hh
ciogbmFtZSkgeyB9CiAKLSAgICAvLyBBbiBldmVudCBpcyBpZGVudGlmaWVkIGJ5IHRoZSBwYWly
IChuYW1lLCBpZCkuIFRoZSBleHRyYSBwYXJhbWV0ZXIKLSAgICAvLyBzcGVjaWZpZXMgYWRkaXRp
b25hbCBkYXRhIHRvIGxvZyB3aXRoIHRoZSBldmVudC4KLSAgICB2aXJ0dWFsIGJvb2wgaXNUcmFj
ZUV2ZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
dHJhY2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBl
eHRyYSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFt
ZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKSB7IH0KKyAgICAvLyBUcmFjaW5nIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworICAgIC8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGdpdmVu
IHRyYWNlIGNhdGVnb3J5LiBPbmx5CisgICAgLy8gbG9uZy1saXZlZCBsaXRlcmFsIHN0cmluZ3Mg
c2hvdWxkIGJlIGdpdmVuIGFzIHRoZSBjYXRlZ29yeSBuYW1lLiBUaGUKKyAgICAvLyByZXR1cm5l
ZCBwb2ludGVyIGNhbiBiZSBoZWxkIHBlcm1hbmVudGx5IGluIGEgbG9jYWwgc3RhdGljIGZvciBl
eGFtcGxlLgorICAgIC8vIElmIHRoZSB1bnNpZ25lZCBjaGFyIGlzIG5vbi16ZXJvLCB0cmFjaW5n
IGlzIGVuYWJsZWQuIElmIHRyYWNpbmcgaXMKKyAgICAvLyBlbmFibGVkLCBhZGRUcmFjZUV2ZW50
IGNhbiBiZSBjYWxsZWQuIEl0J3MgT0sgaWYgdHJhY2luZyBpcyBkaXNhYmxlZAorICAgIC8vIGJl
dHdlZW4gdGhlIGxvYWQgb2YgdGhlIHRyYWNpbmcgc3RhdGUgYW5kIHRoZSBjYWxsIHRvIGFkZFRy
YWNlRXZlbnQsCisgICAgLy8gYmVjYXVzZSB0aGlzIGZsYWcgb25seSBwcm92aWRlcyBhbiBlYXJs
eSBvdXQgZm9yIGJlc3QgcGVyZm9ybWFuY2Ugd2hlbgorICAgIC8vIHRyYWNpbmcgaXMgZGlzYWJs
ZWQuCisgICAgdmlydHVhbCBjb25zdCB1bnNpZ25lZCBjaGFyKiBnZXRUcmFjZUNhdGVnb3J5RW5h
YmxlZEZsYWcoY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKSB7IHJldHVybiAwOyB9CisgICAgLy8g
QWRkIGEgdHJhY2UgZXZlbnQgdG8gdGhlIHBsYXRmb3JtIHRyYWNpbmcgc3lzdGVtLgorICAgIC8v
IFJldHVybnMgdGhyZXNob2xkQmVnaW5JZCBmb3IgdXNlIGluIGEgY29ycmVzcG9uZGluZyBlbmQg
YWRkVHJhY2VFdmVudCBjYWxsLgorICAgIC8vIC0gcGhhc2Ugc3BlY2lmaWVzIHRoZSB0eXBlIG9m
IGV2ZW50LCBzdWNoIGFzIGJlZ2luLCBlbmQsIGluc3RhbnQsIGV0Yy4KKyAgICAvLyAtIGNhdGVn
b3J5RW5hYmxlZCBpcyB0aGUgcG9pbnRlciByZXR1cm5lZCBieSBnZXRDYXRlZ29yeUVuYWJsZWQu
CisgICAgLy8gLSBuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBldmVudC4KKyAgICAvLyAtIGlkIG9w
dGlvbmFsbHkgYWxsb3dzIGV2ZW50cyBvZiB0aGUgc2FtZSBuYW1lIHRvIGJlIGRpc3Rpbmd1aXNo
ZWQuCisgICAgLy8gLSBudW1BcmdzIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGlu
IGFyZ05hbWVzLCBhcmdUeXBlcywgYW5kCisgICAgLy8gICBhcmdWYWx1ZXMuCisgICAgLy8gLSBh
cmdOYW1lcyBpcyB0aGUgYXJyYXkgb2YgYXJndW1lbnQgbmFtZXMuCisgICAgLy8gLSBhcmdUeXBl
cyBpcyB0aGUgYXJyYXkgb2YgYXJndW1lbnQgdHlwZXM6IGJvb2wsIHVuc2lnbmVkIGxvbmcgbG9u
ZywKKyAgICAvLyAgIGxvbmcgbG9uZywgZG91YmxlLCB2b2lkKiwgY2hhciogKGxvbmctbGl2ZWQg
bnVsbC10ZXJtaW5hdGVkIGNoYXIqIHN0cmluZyksCisgICAgLy8gICBjaGFyKiAodGVtcG9yYXJ5
IG51bGwtdGVybWluYXRlZCBjaGFyKiBzdHJpbmcpLgorICAgIC8vIC0gYXJnVmFsdWVzIGlzIHRo
ZSBhcnJheSBvZiBhcmd1bWVudCB2YWx1ZXMuCisgICAgLy8gLSB0aHJlc2hvbGRCZWdpbklkIG9w
dGlvbmFsbHkgc3BlY2lmaWVzIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBhIHByZXZpb3VzCisgICAg
Ly8gICBjYWxsIHRvIGFkZFRyYWNlRXZlbnQuCisgICAgLy8gLSB0aHJlc2hvbGQgc3BlY2lmaWVz
IHRoZSBtaW5pbXVtIG51bWJlciBvZiBtaWNyb3NlY29uZHMgdGhhdCBtdXN0IGhhdmUKKyAgICAv
LyAgIHBhc3NlZCBzaW5jZSB0aGUgZXZlbnQgaWRlbnRpZmllZCBieSB0aHJlc2hvbGRCZWdpbklk
IGZvciBib3RoIGV2ZW50cyB0bworICAgIC8vICAgYmUgcmVjb3JkZWQuCisgICAgLy8gLSBmbGFn
cyBjYW4gYmUgMCBvciBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nLCBPUmVkIHRvZ2V0aGVy
OgorICAgIC8vICAgLSB0cmVhdCBhbGwgc3RyaW5ncyBhcyB0ZW1wb3Jhcnkgc28gdGhhdCB0aGV5
IHdpbGwgYmUgY29waWVkIGJ5CisgICAgLy8gICAgIGFkZFRyYWNlRXZlbnQsIHdpdGggdGhlIGV4
Y2VwdGlvbiBvZiBjYXRlZ29yeSBuYW1lLgorICAgIC8vICAgLSB1c2UgdGhlIGlkIGFyZ3VtZW50
IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBldmVudCBmb3IgbWF0Y2hpbmcKKyAgICAvLyAgICAg
d2l0aCBvdGhlciBldmVudHMgb2YgdGhlIHNhbWUgbmFtZS4KKyAgICB2aXJ0dWFsIGludCBhZGRU
cmFjZUV2ZW50KAorICAgICAgICBjaGFyIHBoYXNlLAorICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBjYXRlZ29yeUVuYWJsZWRGbGFnLAorICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAg
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAgIGludCBudW1BcmdzLAorICAgICAg
ICBjb25zdCBjaGFyKiogYXJnTmFtZXMsCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFy
Z1R5cGVzLAorICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcqIGFyZ1ZhbHVlcywKKyAg
ICAgICAgaW50IHRocmVzaG9sZEJlZ2luSWQsCisgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQs
CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpIHsgcmV0dXJuIC0xOyB9CiAKICAgICAvLyBD
YWxsYmFja3MgZm9yIHJlcG9ydGluZyBoaXN0b2dyYW0gZGF0YS4KICAgICAvLyBDdXN0b21Db3Vu
dHMgaGlzdG9ncmFtIGhhcyBleHBvbmVudGlhbCBidWNrZXQgc2l6ZXMsIHNvIHRoYXQgbWluPTEs
IG1heD0xMDAwMDAwLCBidWNrZXRDb3VudD01MCB3b3VsZCBkby4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCmluZGV4IDI0NjgxZWM5NjJkNzRlYmZl
YjVhYjMzNTVjMTkwM2FmZDllOWVjZDYuLjlmMGUzYTgxMjQ0ZjcyYjEyMDEzMzc2NTY5MWNkMzMw
ZWIxMjIwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3Jt
U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBw
b3J0LmNwcApAQCAtOTQ3LDE5ICs5NDcsMjQgQEAgdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50
VGhlbWVQYXJ0KAogCiAvLyBUcmFjZSBFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWJvb2wgUGxhdGZvcm1TdXBw
b3J0Ojppc1RyYWNlRXZlbnRFbmFibGVkKCkKLXsKLSAgICByZXR1cm4gd2ViS2l0UGxhdGZvcm1T
dXBwb3J0KCktPmlzVHJhY2VFdmVudEVuYWJsZWQoKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVN1cHBv
cnQ6OnRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hh
ciogZXh0cmEpCi17Ci0gICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPnRyYWNlRXZlbnRCZWdp
bihuYW1lLCBpZCwgZXh0cmEpOwotfQotCi12b2lkIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVu
dEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpCi17Ci0g
ICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPnRyYWNlRXZlbnRFbmQobmFtZSwgaWQsIGV4dHJh
KTsKK2NvbnN0IHVuc2lnbmVkIGNoYXIqIFBsYXRmb3JtU3VwcG9ydDo6Z2V0VHJhY2VDYXRlZ29y
eUVuYWJsZWRGbGFnKGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZSkKK3sKKyAgICByZXR1cm4gd2Vi
S2l0UGxhdGZvcm1TdXBwb3J0KCktPmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhjYXRlZ29y
eU5hbWUpOworfQoraW50IFBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVudChjaGFyIHBoYXNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy
KiBjYXRlZ29yeUVuYWJsZWRGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBudW1BcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiogYXJnTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGFyZ1R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcqIGFyZ1ZhbHVlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHRocmVzaG9sZEJlZ2luSWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpCit7CisgICAgcmV0dXJu
IHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5hZGRUcmFjZUV2ZW50KAorICAgICAgICBwaGFzZSwg
Y2F0ZWdvcnlFbmFibGVkRmxhZywgbmFtZSwgaWQsIG51bUFyZ3MsIGFyZ05hbWVzLCBhcmdUeXBl
cywgYXJnVmFsdWVzLCAgdGhyZXNob2xkQmVnaW5JZCwgdGhyZXNob2xkLCBmbGFncyk7CiB9CiAK
IC8vIFZpc2l0ZWQgTGlua3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124599</attachid>
            <date>2012-01-30 14:22:54 -0800</date>
            <delta_ts>2012-02-09 11:36:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120130142253.patch</filename>
            <type>text/plain</type>
            <size>55614</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYyZTljYThiODg0NWU5
NDkwZGRjOTdlYzMzY2EzZWNlN2ExZGZlMy4uNmEyOGVkMDA5YWRhMmE4OGM1ZjY0YjIzZWRlMDI0
ZmFhZWViMzk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmV2YWx1YXRlKTogUmVwbGFj
ZSBvbGQgdHJhY2luZyBBUEkuCisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6OnRpbWUpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnNvbGU6OnRpbWVFbmQpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZUlEOjpUcmFjZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6
OlRyYWNlSUQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VTdHJp
bmdXaXRoQ29weTo6VHJhY2VTdHJpbmdXaXRoQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZVN0cmluZ1dpdGhDb3B5OjpvcGVyYXRvciBjb25zdCBjaGFyKiApOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6c2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNl
RXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpUcmFjZUVuZE9uU2NvcGVDbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5k
T25TY29wZUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25T
Y29wZUNsb3NlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRy
YWNlRW5kT25TY29wZUNsb3NlOjphZGRFdmVudElmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6VHJhY2VFbmRPblNj
b3BlQ2xvc2VUaHJlc2hvbGQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VF
bmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6On5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVz
aG9sZDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVu
ZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6YWRkRXZlbnRJZkVuYWJsZWQpOgorCiAyMDEyLTAxLTI1
ICBLYXVzdHViaCBBdHJhd2Fsa2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bm5lY2Vzc2FyeSBtZW1iZXIgdmFyaWFibGUgZnJvbSBQbHVnaW5WaWV3LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2ZGMwMGNkOWIzYjM4MDg5ZGM1MTU5M2VmNjU2NzQ5
ZTRiY2E4MTQ0Li43MGRiNTBhMWJiMmM3MmIwMmU5MzA5M2QyNGE1Mjc3NWZiZjgzOWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYktpdFBsYXRm
b3JtU3VwcG9ydDo6Z2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0UGxhdGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKiBzcmMv
UGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6
Z2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3VwcG9ydDo6YWRkVHJhY2VFdmVudCk6CisKIDIwMTItMDEtMjQgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjaHJvbWl1bSB0ZXN0
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggNDdkYjE1YzVh
MTRkMWQ5YTlmYThkMTFhZDk2NWQ1MzVlMWVhNjdmYS4uNGE3YzZlN2NjNDM0YTM4NmE3OGY4YzZi
MzYzNjM0NGI5YThjNWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAK
QEAgLTcxLDYgKzcxLDEwIEBACiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNs
dWRlICJUcmFjZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0
aWMgVjhFeHRlbnNpb25zJiBzdGF0aWNFeHRlbnNpb25zTGlzdCgpCkBAIC0zMzUsNyArMzM5LDcg
QEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlLCBOb2RlKiBub2QKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgc2NyaXB0
LgogICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gY29kZSA9IHY4RXh0ZXJuYWxTdHJpbmco
c291cmNlLnNvdXJjZSgpKTsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICAgICAgUGxhdGZv
cm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4oInY4LmNvbXBpbGUiLCBub2RlLCAiIik7CisgICAg
ICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgidjgiLCAidjguY29tcGlsZSIpOwogI2VuZGlmCiAgICAg
ICAgIE93blB0cjx2ODo6U2NyaXB0RGF0YT4gc2NyaXB0RGF0YSA9IHByZWNvbXBpbGVTY3JpcHQo
Y29kZSwgc291cmNlLmNhY2hlZFNjcmlwdCgpKTsKIApAQCAtMzQzLDE1ICszNDcsMTEgQEAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlLCBOb2RlKiBub2QKICAgICAgICAgLy8gMSwgd2hlcmVhcyB2OCBzdGFydHMgYXQg
MC4KICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQgPSBjb21waWxlU2NyaXB0
KGNvZGUsIHNvdXJjZS51cmwoKSwgc291cmNlLnN0YXJ0UG9zaXRpb24oKSwgc2NyaXB0RGF0YS5n
ZXQoKSk7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6
dHJhY2VFdmVudEVuZCgidjguY29tcGlsZSIsIG5vZGUsICIiKTsKLQotICAgICAgICBQbGF0Zm9y
bVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbigidjgucnVuIiwgbm9kZSwgIiIpOworICAgICAgICBU
UkFDRV9FVkVOVF9FTkQwKCJ2OCIsICJ2OC5jb21waWxlIik7CisgICAgICAgIFRSQUNFX0VWRU5U
MCgidjgiLCAidjgucnVuIik7CiAjZW5kaWYKICAgICAgICAgcmVzdWx0ID0gcnVuU2NyaXB0KHNj
cmlwdCk7CiAgICAgfQotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgIFBsYXRmb3JtU3VwcG9y
dDo6dHJhY2VFdmVudEVuZCgidjgucnVuIiwgbm9kZSwgIiIpOwotI2VuZGlmCiAKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KGNvb2tpZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnNvbGUuY3BwCmluZGV4IDI0ZTEzYTVmZGJhNTMwMWJiNzUyOTRjZTM0MGI1YTBmZWFk
MjQ5ZTYuLjUxNWFiMzRkN2EwNmQ0YWMyMmI1M2Y0Y2Y4ZDlmODRhZjFjNWY3NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmNwcApAQCAtMjk5LDE2ICsyOTksMTQgQEAgdm9pZCBDb25zb2xlOjp0aW1l
KGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
dGFydENvbnNvbGVUaW1pbmcocGFnZSgpLCB0aXRsZSk7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0p
Ci0gICAgaWYgKFBsYXRmb3JtU3VwcG9ydDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgpKQotICAgICAg
ICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbih0aXRsZS51dGY4KCkuZGF0YSgpLCAw
LCAwKTsKKyAgICBUUkFDRV9FVkVOVF9DT1BZX0JFR0lOMCgid2Via2l0IiwgdGl0bGUudXRmOCgp
LmRhdGEoKSk7CiAjZW5kaWYKIH0KIAogdm9pZCBDb25zb2xlOjp0aW1lRW5kKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFzc1JlZlB0cjxTY3JpcHRD
YWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICNpZiBQTEFURk9STShDSFJPTUlVTSkKLSAgICBpZiAo
UGxhdGZvcm1TdXBwb3J0Ojppc1RyYWNlRXZlbnRFbmFibGVkKCkpCi0gICAgICAgIFBsYXRmb3Jt
U3VwcG9ydDo6dHJhY2VFdmVudEVuZCh0aXRsZS51dGY4KCkuZGF0YSgpLCAwLCAwKTsKKyAgICBU
UkFDRV9FVkVOVF9DT1BZX0VORDAoIndlYmtpdCIsIHRpdGxlLnV0ZjgoKS5kYXRhKCkpOwogI2Vu
ZGlmCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhwYWdl
KCksIHRpdGxlLCBjYWxsU3RhY2spOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCBjOGRlZDZlMjZiYTc4NGM2ZTE2Mzc0
MWQ2NjI4ZTg1OTM5YzM2YTZlLi5hZWQ2N2M3MWU2NTU1OWMxOGU1Y2VlYzg2ZmJlMWU4YjJmNTVj
NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVN1cHBvcnQuaApAQCAtNDE2LDkgKzQxNiwxOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8v
IFRyYWNlIEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0gICAgc3RhdGljIGJvb2wgaXNUcmFjZUV2ZW50RW5hYmxlZCgpOwotICAg
IHN0YXRpYyB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiwgY29u
c3QgY2hhciogZXh0cmEpOwotICAgIHN0YXRpYyB2b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hh
ciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIqIGV4dHJhKTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgY2hhciogZ2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKGNvbnN0IGNoYXIqIGNhdGVn
b3J5TmFtZSk7CisgICAgc3RhdGljIGludCBhZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5h
YmxlZEZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnVHlwZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnVmFsdWVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncyk7CiAKICAgICAvLyBWaXNpdGVkIGxpbmtz
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
ICAgIHN0YXRpYyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5z
aWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1RyYWNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RyYWNl
RXZlbnQuaAppbmRleCA2NTJmNTQwN2NhM2Y1NzUxNGNmYWEzZDZhOGJkZDA2ODI1N2I5Njk5Li41
YmI2MDBmYjM4NjdkZGE3Njk5ZTI5YTA5OGI5YjY3OTMzYjc4ODNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCkBAIC0yMiw1MyArMjIsODQzIEBA
CiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KKworLy8gVHJhY2UgZXZlbnRz
IGFyZSBmb3IgdHJhY2tpbmcgYXBwbGljYXRpb24gcGVyZm9ybWFuY2UgYW5kIHJlc291cmNlIHVz
YWdlLgorLy8gTWFjcm9zIGFyZSBwcm92aWRlZCB0byB0cmFjazoKKy8vICAgIEJlZ2luIGFuZCBl
bmQgb2YgZnVuY3Rpb24gY2FsbHMKKy8vICAgIENvdW50ZXJzCisvLworLy8gRXZlbnRzIGFyZSBp
c3N1ZWQgYWdhaW5zdCBjYXRlZ29yaWVzLiBXaGVyZWFzIExPRydzCisvLyBjYXRlZ29yaWVzIGFy
ZSBzdGF0aWNhbGx5IGRlZmluZWQsIFRSQUNFIGNhdGVnb3JpZXMgYXJlIGNyZWF0ZWQKKy8vIGlt
cGxpY2l0bHkgd2l0aCBhIHN0cmluZy4gRm9yIGV4YW1wbGU6CisvLyAgIFRSQUNFX0VWRU5UX0lO
U1RBTlQwKCJNWV9TVUJTWVNURU0iLCAiU29tZUltcG9ydGFudEV2ZW50IikKKy8vCisvLyBFdmVu
dHMgY2FuIGJlIElOU1RBTlQsIG9yIGNhbiBiZSBwYWlycyBvZiBCRUdJTiBhbmQgRU5EIGluIHRo
ZSBzYW1lIHNjb3BlOgorLy8gICBUUkFDRV9FVkVOVF9CRUdJTjAoIk1ZX1NVQlNZU1RFTSIsICJT
b21ldGhpbmdDb3N0bHkiKQorLy8gICBkb1NvbWV0aGluZ0Nvc3RseSgpCisvLyAgIFRSQUNFX0VW
RU5UX0VORDAoIk1ZX1NVQlNZU1RFTSIsICJTb21ldGhpbmdDb3N0bHkiKQorLy8gTm90ZTogb3Vy
IHRvb2xzIGNhbid0IGFsd2F5cyBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgQkVHSU4vRU5EIHBhaXJz
IHVubGVzcworLy8gdGhlc2UgYXJlIHVzZWQgaW4gdGhlIHNhbWUgc2NvcGUuIFVzZSBTVEFSVC9G
SU5JU0ggbWFjcm9zIGlmIHlvdSBuZWVkIHRoZW0KKy8vIHRvIGJlIGluIHNlcGFyYXRlIHNjb3Bl
cy4KKy8vCisvLyBBIGNvbW1vbiB1c2UgY2FzZSBpcyB0byB0cmFjZSBlbnRpcmUgZnVuY3Rpb24g
c2NvcGVzLiBUaGlzCisvLyBpc3N1ZXMgYSB0cmFjZSBCRUdJTiBhbmQgRU5EIGF1dG9tYXRpY2Fs
bHk6CisvLyAgIHZvaWQgZG9Tb21ldGhpbmdDb3N0bHkoKSB7CisvLyAgICAgVFJBQ0VfRVZFTlQw
KCJNWV9TVUJTWVNURU0iLCAiZG9Tb21ldGhpbmdDb3N0bHkiKTsKKy8vICAgICAuLi4KKy8vICAg
fQorLy8KKy8vIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGFu
IGV2ZW50OgorLy8gICB2b2lkIGRvU29tZXRoaW5nQ29zdGx5MihpbnQgaG93TXVjaCkgeworLy8g
ICAgIFRSQUNFX0VWRU5UMSgiTVlfU1VCU1lTVEVNIiwgImRvU29tZXRoaW5nQ29zdGx5IiwKKy8v
ICAgICAgICAgImhvd011Y2giLCBob3dNdWNoKTsKKy8vICAgICAuLi4KKy8vICAgfQorLy8KKy8v
IFRoZSB0cmFjZSBzeXN0ZW0gd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCB0byB0aGlzIGluZm9ybWF0
aW9uIHRoZQorLy8gY3VycmVudCBwcm9jZXNzIGlkLCB0aHJlYWQgaWQsIGFuZCBhIHRpbWVzdGFt
cCBpbiBtaWNyb3NlY29uZHMuCisvLworLy8gVG8gdHJhY2UgYW4gYXN5bmNocm9ub3VzIHByb2Nl
ZHVyZSBzdWNoIGFzIGFuIElQQyBzZW5kL3JlY2VpdmUsIHVzZSBTVEFSVCBhbmQKKy8vIEZJTklT
SDoKKy8vICAgW3NpbmdsZSB0aHJlYWRlZCBzZW5kZXIgY29kZV0KKy8vICAgICBzdGF0aWMgaW50
IHNlbmRfY291bnQgPSAwOworLy8gICAgICsrc2VuZF9jb3VudDsKKy8vICAgICBUUkFDRV9FVkVO
VF9TVEFSVDAoImlwYyIsICJtZXNzYWdlIiwgc2VuZF9jb3VudCk7CisvLyAgICAgU2VuZChuZXcg
TXlNZXNzYWdlKHNlbmRfY291bnQpKTsKKy8vICAgW3JlY2VpdmUgY29kZV0KKy8vICAgICB2b2lk
IE9uTXlNZXNzYWdlKHNlbmRfY291bnQpIHsKKy8vICAgICAgIFRSQUNFX0VWRU5UX0ZJTklTSDAo
ImlwYyIsICJtZXNzYWdlIiwgc2VuZF9jb3VudCk7CisvLyAgICAgfQorLy8gVGhlIHRoaXJkIHBh
cmFtZXRlciBpcyBhIHVuaXF1ZSBJRCB0byBtYXRjaCBTVEFSVC9GSU5JU0ggcGFpcnMuCisvLyBT
VEFSVCBhbmQgRklOSVNIIGNhbiBvY2N1ciBvbiBhbnkgdGhyZWFkIG9mIGFueSB0cmFjZWQgcHJv
Y2Vzcy4gUG9pbnRlcnMgY2FuCisvLyBiZSB1c2VkIGZvciB0aGUgSUQgcGFyYW1ldGVyLCBhbmQg
dGhleSB3aWxsIGJlIG1hbmdsZWQgaW50ZXJuYWxseSBzbyB0aGF0CisvLyB0aGUgc2FtZSBwb2lu
dGVyIG9uIHR3byBkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90IG1hdGNoLiBGb3IgZXhhbXBs
ZToKKy8vICAgY2xhc3MgTXlUcmFjZWRDbGFzcyB7CisvLyAgICBwdWJsaWM6CisvLyAgICAgTXlU
cmFjZWRDbGFzcygpIHsKKy8vICAgICAgIFRSQUNFX0VWRU5UX1NUQVJUMCgiY2F0ZWdvcnkiLCAi
TXlUcmFjZWRDbGFzcyIsIHRoaXMpOworLy8gICAgIH0KKy8vICAgICB+TXlUcmFjZWRDbGFzcygp
IHsKKy8vICAgICAgIFRSQUNFX0VWRU5UX0ZJTklTSDAoImNhdGVnb3J5IiwgIk15VHJhY2VkQ2xh
c3MiLCB0aGlzKTsKKy8vICAgICB9CisvLyAgIH0KKy8vCisvLyBUcmFjZSBldmVudCBhbHNvIHN1
cHBvcnRzIGNvdW50ZXJzLCB3aGljaCBpcyBhIHdheSB0byB0cmFjayBhIHF1YW50aXR5CisvLyBh
cyBpdCB2YXJpZXMgb3ZlciB0aW1lLiBDb3VudGVycyBhcmUgY3JlYXRlZCB3aXRoIHRoZSBmb2xs
b3dpbmcgbWFjcm86CisvLyAgIFRSQUNFX0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlDb3Vu
dGVyIiwgZ19teUNvdW50ZXJWYWx1ZSk7CisvLworLy8gQ291bnRlcnMgYXJlIHByb2Nlc3Mtc3Bl
Y2lmaWMuIFRoZSBtYWNybyBpdHNlbGYgY2FuIGJlIGlzc3VlZCBmcm9tIGFueQorLy8gdGhyZWFk
LCBob3dldmVyLgorLy8KKy8vIFNvbWV0aW1lcywgeW91IHdhbnQgdG8gdHJhY2sgdHdvIGNvdW50
ZXJzIGF0IG9uY2UuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHR3bworLy8gY291bnRlciBtYWNyb3M6
CisvLyAgIFRSQUNFX0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlDb3VudGVyMCIsIGdfbXlD
b3VudGVyVmFsdWVbMF0pOworLy8gICBUUkFDRV9DT1VOVEVSMSgiTVlfU1VCU1lTVEVNIiwgIm15
Q291bnRlcjEiLCBnX215Q291bnRlclZhbHVlWzFdKTsKKy8vIE9yIHlvdSBjYW4gZG8gaXQgd2l0
aCBhIGNvbWJpbmVkIG1hY3JvOgorLy8gICBUUkFDRV9DT1VOVEVSMigiTVlfU1VCU1lTVEVNIiwg
Im15Q291bnRlciIsCisvLyAgICAgICAiYnl0ZXNQaW5uZWQiLCBnX215Q291bnRlclZhbHVlWzBd
LAorLy8gICAgICAgImJ5dGVzQWxsb2NhdGVkIiwgZ19teUNvdW50ZXJWYWx1ZVsxXSk7CisvLyBU
aGlzIGluZGljYXRlcyB0byB0aGUgdHJhY2luZyBVSSB0aGF0IHRoZXNlIGNvdW50ZXJzIHNob3Vs
ZCBiZSBkaXNwbGF5ZWQKKy8vIGluIGEgc2luZ2xlIGdyYXBoLCBhcyBhIHN1bW1lZCBhcmVhIGNo
YXJ0LgorLy8KKy8vIFNpbmNlIGNvdW50ZXJzIGFyZSBpbiBhIGdsb2JhbCBuYW1lc3BhY2UsIHlv
dSBtYXkgd2FudCB0byBkaXNlbWJpZ3VhdGUgd2l0aCBhCisvLyB1bmlxdWUgSUQsIGJ5IHVzaW5n
IHRoZSBUUkFDRV9DT1VOVEVSX0lEKiB2YXJpYXRpb25zLgorLy8KKy8vIEJ5IGRlZmF1bHQsIHRy
YWNlIGNvbGxlY3Rpb24gaXMgY29tcGlsZWQgaW4sIGJ1dCB0dXJuZWQgb2ZmIGF0IHJ1bnRpbWUu
CisvLyBDb2xsZWN0aW5nIHRyYWNlIGRhdGEgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBl
bWJlZGRpbmcKKy8vIGFwcGxpY2F0aW9uLiBJbiBDaHJvbWUncyBjYXNlLCBuYXZpZ2F0aW5nIHRv
IGFib3V0OnRyYWNpbmcgd2lsbCB0dXJuIG9uCisvLyB0cmFjaW5nIGFuZCBkaXNwbGF5IGRhdGEg
Y29sbGVjdGVkIGFjcm9zcyBhbGwgYWN0aXZlIHByb2Nlc3Nlcy4KKy8vCisvLworLy8gTWVtb3J5
IHNjb3Bpbmcgbm90ZToKKy8vIFRyYWNpbmcgY29waWVzIHRoZSBwb2ludGVycywgbm90IHRoZSBz
dHJpbmcgY29udGVudCwgb2YgdGhlIHN0cmluZ3MgcGFzc2VkCisvLyBpbiBmb3IgY2F0ZWdvcnks
IG5hbWUsIGFuZCBhcmdfbmFtZXMuIFRodXMsIHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsCisvLyBj
YXVzZSBwcm9ibGVtczoKKy8vICAgICBjaGFyKiBzdHIgPSBzdHJkdXAoImltcHBydGFudE5hbWUi
KTsKKy8vICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiU1VCU1lTVEVNIiwgc3RyKTsgIC8vIEJB
RCEKKy8vICAgICBmcmVlKHN0cik7ICAgICAgICAgICAgICAgICAgIC8vIFRyYWNlIHN5c3RlbSBu
b3cgaGFzIGRhbmdsaW5nIHBvaW50ZXIKKy8vCisvLyBUbyBhdm9pZCB0aGlzIGlzc3VlIHdpdGgg
dGhlIHxuYW1lfCBhbmQgfGFyZ19uYW1lfCBwYXJhbWV0ZXJzLCB1c2UgdGhlCisvLyBUUkFDRV9F
VkVOVF9DT1BZX1hYWCBvdmVybG9hZHMgb2YgdGhlIG1hY3JvcyBhdCBhZGRpdGlvbmFsIHJ1bnRp
bWUgb3ZlcmhlYWQuCisvLyBOb3RlczogVGhlIGNhdGVnb3J5IG11c3QgYWx3YXlzIGJlIGluIGEg
bG9uZy1saXZlZCBjaGFyKiAoaS5lLiBzdGF0aWMgY29uc3QpLgorLy8gICAgICAgIFRoZSB8YXJn
X3ZhbHVlc3wsIHdoZW4gdXNlZCwgYXJlIGFsd2F5cyBkZWVwIGNvcGllZCB3aXRoIHRoZSBfQ09Q
WQorLy8gICAgICAgIG1hY3Jvcy4KKy8vCisvLyBXaGVuIGFyZSBzdHJpbmcgYXJndW1lbnQgdmFs
dWVzIGNvcGllZDoKKy8vIGNvbnN0IGNoYXIqIGFyZ192YWx1ZXMgYXJlIG9ubHkgcmVmZXJlbmNl
ZCBieSBkZWZhdWx0OgorLy8gICAgIFRSQUNFX0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisv
LyAgICAgICAgICAgICAgICAgICJhcmcxIiwgImxpdGVyYWwgc3RyaW5nIGlzIG9ubHkgcmVmZXJl
bmNlZCIpOworLy8gVXNlIFRSQUNFX1NUUl9DT1BZIHRvIGZvcmNlIGNvcHlpbmcgb2YgYSBjb25z
dCBjaGFyKjoKKy8vICAgICBUUkFDRV9FVkVOVDEoImNhdGVnb3J5IiwgIm5hbWUiLAorLy8gICAg
ICAgICAgICAgICAgICAiYXJnMSIsIFRSQUNFX1NUUl9DT1BZKCJzdHJpbmcgd2lsbCBiZSBjb3Bp
ZWQiKSk7CisvLyBzdGQ6OnN0cmluZyBhcmdfdmFsdWVzIGFyZSBhbHdheXMgY29waWVkOgorLy8g
ICAgIFRSQUNFX0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisvLyAgICAgICAgICAgICAgICAg
ICJhcmcxIiwgc3RkOjpzdHJpbmcoInN0cmluZyB3aWxsIGJlIGNvcGllZCIpKTsKKy8vCisvLwor
Ly8gVGhyZWFkIFNhZmV0eToKKy8vIEEgdGhyZWFkIHNhZmUgc2luZ2xldG9uIGFuZCBtdXRleCBh
cmUgdXNlZCBmb3IgdGhyZWFkIHNhZmV0eS4gQ2F0ZWdvcnkKKy8vIGVuYWJsZWQgZmxhZ3MgYXJl
IHVzZWQgdG8gbGltaXQgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCB3aGVuIHRoZSBzeXN0ZW0KKy8v
IGlzIG5vdCBlbmFibGVkLgorLy8KKy8vIFRSQUNFX0VWRU5UIG1hY3JvcyBmaXJzdCBjYWNoZSBh
IHBvaW50ZXIgdG8gYSBjYXRlZ29yeS4gVGhlIGNhdGVnb3JpZXMgYXJlCisvLyBzdGF0aWNhbGx5
IGFsbG9jYXRlZCBhbmQgc2FmZSBhdCBhbGwgdGltZXMsIGV2ZW4gYWZ0ZXIgZXhpdC4gRmV0Y2hp
bmcgYQorLy8gY2F0ZWdvcnkgaXMgcHJvdGVjdGVkIGJ5IHRoZSBUcmFjZUxvZzo6bG9ja18uIE11
bHRpcGxlIHRocmVhZHMgaW5pdGlhbGl6aW5nCisvLyB0aGUgc3RhdGljIHZhcmlhYmxlIGlzIHNh
ZmUsIGFzIHRoZXkgd2lsbCBiZSBzZXJpYWxpemVkIGJ5IHRoZSBsb2NrIGFuZAorLy8gbXVsdGlw
bGUgY2FsbHMgd2lsbCByZXR1cm4gdGhlIHNhbWUgcG9pbnRlciB0byB0aGUgY2F0ZWdvcnkuCisv
LworLy8gVGhlbiB0aGUgY2F0ZWdvcnlfZW5hYmxlZCBmbGFnIGlzIGNoZWNrZWQuIFRoaXMgaXMg
YSB1bnNpZ25lZCBjaGFyLCBhbmQKKy8vIG5vdCBpbnRlbmRlZCB0byBiZSBtdWx0aXRocmVhZCBz
YWZlLiBJdCBvcHRpbWl6ZXMgYWNjZXNzIHRvIGFkZFRyYWNlRXZlbnQKKy8vIHdoaWNoIGlzIHRo
cmVhZHNhZmUgaW50ZXJuYWxseSB2aWEgVHJhY2VMb2c6OmxvY2tfLiBUaGUgZW5hYmxlZCBmbGFn
IG1heQorLy8gY2F1c2Ugc29tZSB0aHJlYWRzIHRvIGluY29ycmVjdGx5IGNhbGwgb3Igc2tpcCBj
YWxsaW5nIGFkZFRyYWNlRXZlbnQgbmVhcgorLy8gdGhlIHRpbWUgb2YgdGhlIHN5c3RlbSBiZWlu
ZyBlbmFibGVkIG9yIGRpc2FibGVkLiBUaGlzIGlzIGFjY2VwdGFibGUgYXMKKy8vIHdlIHRvbGVy
YXRlIHNvbWUgZGF0YSBsb3NzIHdoaWxlIHRoZSBzeXN0ZW0gaXMgYmVpbmcgZW5hYmxlZC9kaXNh
YmxlZCBhbmQKKy8vIGJlY2F1c2UgYWRkVHJhY2VFdmVudCBpcyB0aHJlYWRzYWZlIGludGVybmFs
bHkgYW5kIGNoZWNrcyB0aGUgZW5hYmxlZCBzdGF0ZQorLy8gYWdhaW4gdW5kZXIgbG9jay4KKy8v
CisvLyBXaXRob3V0IHRoZSB1c2Ugb2YgdGhlc2Ugc3RhdGljIGNhdGVnb3J5IHBvaW50ZXJzIGFu
ZCBlbmFibGVkIGZsYWdzIGFsbAorLy8gdHJhY2UgcG9pbnRzIHdvdWxkIGNhcnJ5IGEgc2lnbmlm
aWNhbnQgcGVyZm9ybWFuY2UgY29zdCBvZiBhcXVpcmluZyBhIGxvY2sKKy8vIGFuZCByZXNvbHZp
bmcgdGhlIGNhdGVnb3J5LgorCiAjaWZuZGVmIFRyYWNlRXZlbnRfaAogI2RlZmluZSBUcmFjZUV2
ZW50X2gKIAorI2luY2x1ZGUgIkR5bmFtaWNBbm5vdGF0aW9ucy5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3VwcG9ydC5oIgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorCisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorCisvLyBJc3N1ZXMgYmVnaW4gdHJhY2UgZXZlbnQgaGVyZSBh
bmQgZW5kIHRyYWNlIGV2ZW50IHdoZW4gdGhlIGN1cnJlbnQgc2NvcGUgZW5kcy4KKyNkZWZpbmUg
VFJBQ0VfRVZFTlQobmFtZSwgaWQsIGV4dHJhKSBUUkFDRV9FVkVOVDIoIndlYmtpdCIsIG5hbWUs
ICJpZCIsIGlkLCAiZXh0cmEiLCBleHRyYSkKKworLy8gQnkgZGVmYXVsdCwgY29uc3QgY2hhciog
YXJndW1lbnQgdmFsdWVzIGFyZSBhc3N1bWVkIHRvIGhhdmUgbG9uZy1saXZlZCBzY29wZQorLy8g
YW5kIHdpbGwgbm90IGJlIGNvcGllZC4gVXNlIHRoaXMgbWFjcm8gdG8gZm9yY2UgYSBjb25zdCBj
aGFyKiB0byBiZSBjb3BpZWQuCisjZGVmaW5lIFRSQUNFX1NUUl9DT1BZKHN0cikgXAorICAgIFdl
YkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlU3RyaW5nV2l0aENvcHkoc3RyKQorCisvLyBSZWNvcmRz
IGEgcGFpciBvZiBiZWdpbiBhbmQgZW5kIGV2ZW50cyBjYWxsZWQgIm5hbWUiIGZvciB0aGUgY3Vy
cmVudAorLy8gc2NvcGUsIHdpdGggMCwgMSBvciAyIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0
aGUgY2F0ZWdvcnkgaXMgbm90CisvLyBlbmFibGVkLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nLgor
Ly8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZl
dGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIg
Y2hhcnMuCisjZGVmaW5lIFRSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUpCisjZGVmaW5lIFRSQUNF
X0VWRU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJn
MV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBh
cmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAg
ICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyBhIHNpbmdsZSBldmVudCBjYWxs
ZWQgIm5hbWUiIGltbWVkaWF0ZWx5LCB3aXRoIDAsIDEgb3IgMgorLy8gYXNzb2NpYXRlZCBhcmd1
bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QgZW5hYmxlZCwgdGhlbiB0aGlzCisvLyBkb2Vz
IG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxp
Y2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90
IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoY2F0ZWdvcnks
IG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0Vf
SU5TVEFOVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05F
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1l
LCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9Q
SEFTRV9JTlNUQU5ULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFH
X05PTkUsIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lOU1RBTlQy
KGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFt
ZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRf
UEhBU0VfSU5TVEFOVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxB
R19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92
YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfSU5TVEFOVDAoY2F0ZWdvcnksIG5hbWUpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZKQorI2RlZmlu
ZSBUUkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFy
ZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNF
X0lOU1RBTlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09Q
WSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9JTlNUQU5U
MihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25h
bWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5U
X1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZM
QUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJf
dmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIEJFR0lOIGV2ZW50IGNhbGxlZCAibmFtZSIgaW1t
ZWRpYXRlbHksIHdpdGggMCwgMSBvciAyCisvLyBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhl
IGNhdGVnb3J5IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMKKy8vIGRvZXMgbm90aGluZy4KKy8v
IC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRp
bWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNo
YXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9CRUdJTjAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfQkVHSU4xKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAg
ICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJn
MV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0JFR0lOMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9u
YW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
Q09QWV9CRUdJTjAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9B
REQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRS
QUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9CRUdJTjEoY2F0
ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5h
bWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfQ09QWV9CRUdJTjIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwg
bmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAg
ICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMgYSBzaW5nbGUgRU5EIGV2ZW50
IGZvciAibmFtZSIgaW1tZWRpYXRlbHkuIElmIHRoZSBjYXRlZ29yeQorLy8gaXMgbm90IGVuYWJs
ZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmlu
Z3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVy
YWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
RU5EMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFD
RV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5U
X0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRU5EMShjYXRlZ29yeSwgbmFtZSwgYXJn
MV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9F
VkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZM
QUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRU5EMihj
YXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUs
IGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BI
QVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05F
LCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRU5EMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
Q09QWV9FTkQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFyZzFfdmFs
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0VORDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFt
ZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwg
XAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBUaW1lIHRocmVzaG9sZCBldmVu
dDoKKy8vIE9ubHkgcmVjb3JkIHRoZSBldmVudCBpZiB0aGUgZHVyYXRpb24gaXMgZ3JlYXRlciB0
aGFuIHRoZSBzcGVjaWZpZWQKKy8vIHRocmVzaG9sZF91cyAodGltZSBpbiBtaWNyb3NlY29uZHMp
LgorLy8gUmVjb3JkcyBhIHBhaXIgb2YgYmVnaW4gYW5kIGVuZCBldmVudHMgY2FsbGVkICJuYW1l
IiBmb3IgdGhlIGN1cnJlbnQKKy8vIHNjb3BlLCB3aXRoIDAsIDEgb3IgMiBhc3NvY2lhdGVkIGFy
Z3VtZW50cy4gSWYgdGhlIGNhdGVnb3J5IGlzIG5vdAorLy8gZW5hYmxlZCwgdGhlbiB0aGlzIGRv
ZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBw
bGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBu
b3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9JRl9MT05HRVJfVEhBTjAo
dGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4odGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSkK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfSUZfTE9OR0VSX1RIQU4xKCBcCisgICAgdGhyZXNob2xkX3Vz
LCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4oIFwKKyAgICAgICAgdGhyZXNob2xk
X3VzLCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfSUZfTE9OR0VSX1RIQU4yKCBcCisgICAgdGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFt
ZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4oIFwKKyAgICAgICAgdGhy
ZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1l
LCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWUgb2YgYSBjb3VudGVyIGNhbGxlZCAi
bmFtZSIgaW1tZWRpYXRlbHkuIFZhbHVlCisvLyBtdXN0IGJlIHJlcHJlc2VudGFibGUgYXMgYSAz
MiBiaXQgaW50ZWdlci4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUg
YXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1h
eSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSMShjYXRlZ29yeSwg
bmFtZSwgdmFsdWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRf
UEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxB
R19OT05FLCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFsdWUpKQorI2Rl
ZmluZSBUUkFDRV9DT1BZX0NPVU5URVIxKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZSkgXAorICAgIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAg
ICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgInZh
bHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlcyBv
ZiBhIG11bHRpLXBhcnRlZCBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHkuCisvLyBU
aGUgVUkgd2lsbCB0cmVhdCB2YWx1ZTEgYW5kIHZhbHVlMiBhcyBwYXJ0cyBvZiBhIHdob2xlLCBk
aXNwbGF5aW5nIHRoZWlyCisvLyB2YWx1ZXMgYXMgYSBzdGFja2VkLWJhciBjaGFydC4KKy8vIC0g
Y2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUg
KHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJz
LgorI2RlZmluZSBUUkFDRV9DT1VOVEVSMihjYXRlZ29yeSwgbmFtZSwgdmFsdWUxX25hbWUsIHZh
bHVlMV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAg
ICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgIHZhbHVl
MV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9u
YW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorI2RlZmluZSBUUkFDRV9DT1BZX0NP
VU5URVIyKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAorICAgICAg
ICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBU
UkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0
PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGlu
dD4odmFsdWUyX3ZhbCkpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlIG9mIGEgY291bnRlciBjYWxs
ZWQgIm5hbWUiIGltbWVkaWF0ZWx5LiBWYWx1ZQorLy8gbXVzdCBiZSByZXByZXNlbnRhYmxlIGFz
IGEgMzIgYml0IGludGVnZXIuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBo
YXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhl
eSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1c2VkIHRvIGRpc2FtYmln
dWF0ZSBjb3VudGVycyB3aXRoIHRoZSBzYW1lIG5hbWUuIEl0IG11c3QgZWl0aGVyCisvLyAgIGJl
IGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJpdHMuIElmIGl0J3MgYSBw
b2ludGVyLCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGggYSBoYXNoIG9mIHRoZSBw
cm9jZXNzIElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8gICB0d28gZGlmZmVyZW50
IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSX0lEMShj
YXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
X1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwg
bmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0
aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSX0lEMShjYXRl
Z29yeSwgbmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJ
VEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFt
ZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICAidmFsdWUiLCBzdGF0aWNf
Y2FzdDxpbnQ+KHZhbHVlKSkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWVzIG9mIGEgbXVsdGktcGFy
dGVkIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4KKy8vIFRoZSBVSSB3aWxsIHRy
ZWF0IHZhbHVlMSBhbmQgdmFsdWUyIGFzIHBhcnRzIG9mIGEgd2hvbGUsIGRpc3BsYXlpbmcgdGhl
aXIKKy8vIHZhbHVlcyBhcyBhIHN0YWNrZWQtYmFyIGNoYXJ0LgorLy8gLSBjYXRlZ29yeSBhbmQg
bmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgor
Ly8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisvLyAtIHxpZHwg
aXMgdXNlZCB0byBkaXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBuYW1lLiBJdCBt
dXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2YWx1ZSB1cCB0byA2
NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2lsbCBiZSB4b3JlZCB3
aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1lIHBvaW50ZXIgb24K
Ky8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlkZS4KKyNkZWZpbmUg
VFJBQ0VfQ09VTlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZTFfbmFtZSwgdmFsdWUx
X3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIFwKKyAgICAg
ICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAg
dmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisjZGVmaW5lIFRSQUNF
X0NPUFlfQ09VTlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZTFfbmFtZSwgdmFsdWUx
X3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAg
ICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAg
ICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAg
dmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisKKy8vIFJlY29yZHMg
YSBzaW5nbGUgU1RBUlQgZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseSwgd2l0aCAwLCAx
IG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdvcnkgaXMgbm90IGVu
YWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFt
ZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8g
ICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisvLyAtIHxpZHwgaXMg
dXNlZCB0byBtYXRjaCB0aGUgU1RBUlQgZXZlbnQgd2l0aCB0aGUgRklOSVNIIGV2ZW50LiBJdCBt
dXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2YWx1ZSB1cCB0byA2
NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2lsbCBiZSB4b3JlZCB3
aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1lIHBvaW50ZXIgb24K
Ky8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlkZS4KKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfU1RBUlQwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19OT05FKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9TVEFSVDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsKSBc
CisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0Vf
U1RBUlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05P
TkUsIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NUQVJUMihjYXRl
Z29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1l
LCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNF
X0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0Vf
RVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFt
ZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfU1RBUlQwKGNhdGVnb3J5LCBu
YW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VW
RU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZF
TlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX1NUQVJUMShjYXRlZ29yeSwg
bmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29y
eSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25hbWUs
IGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX1NUQVJUMihjYXRlZ29yeSwgbmFt
ZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3Zh
bCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BI
QVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxB
R19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92
YWwpCisKKy8vIFJlY29yZHMgYSBzaW5nbGUgRklOSVNIIGV2ZW50IGZvciAibmFtZSIgaW1tZWRp
YXRlbHkuIElmIHRoZSBjYXRlZ29yeQorLy8gaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcyBkb2Vz
IG5vdGhpbmcuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZJTklTSDAoY2F0ZWdvcnksIG5hbWUsIGlk
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhB
U0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxB
R19OT05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GSU5JU0gxKGNhdGVnb3J5LCBuYW1lLCBpZCwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRI
X0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwg
aWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfRklOSVNIMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICBhcmcx
X25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9DT1BZX0ZJTklTSDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNh
dGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9F
VkVOVF9DT1BZX0ZJTklTSDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFs
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhB
U0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxB
R19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0NPUFlfRklOSVNIMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWws
IFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25h
bWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworLy8gSW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdHJhY2luZyBBUEkgZGVmaW5pdGlvbnMu
CisKKy8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGdpdmVuIHRy
YWNlIGNhdGVnb3J5LiBPbmx5CisvLyBsb25nLWxpdmVkIGxpdGVyYWwgc3RyaW5ncyBzaG91bGQg
YmUgZ2l2ZW4gYXMgdGhlIGNhdGVnb3J5IG5hbWUuIFRoZSByZXR1cm5lZAorLy8gcG9pbnRlciBj
YW4gYmUgaGVsZCBwZXJtYW5lbnRseSBpbiBhIGxvY2FsIHN0YXRpYyBmb3IgZXhhbXBsZS4gSWYg
dGhlCisvLyB1bnNpZ25lZCBjaGFyIGlzIG5vbi16ZXJvLCB0cmFjaW5nIGlzIGVuYWJsZWQuIElm
IHRyYWNpbmcgaXMgZW5hYmxlZCwKKy8vIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQg
Y2FuIGJlIGNhbGxlZC4gSXQncyBPSyBpZiB0cmFjaW5nIGlzIGRpc2FibGVkCisvLyBiZXR3ZWVu
IHRoZSBsb2FkIG9mIHRoZSB0cmFjaW5nIHN0YXRlIGFuZCB0aGUgY2FsbCB0bworLy8gVFJBQ0Vf
RVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCwgYmVjYXVzZSB0aGlzIGZsYWcgb25seSBwcm92aWRl
cyBhbiBlYXJseSBvdXQKKy8vIGZvciBiZXN0IHBlcmZvcm1hbmNlIHdoZW4gdHJhY2luZyBpcyBk
aXNhYmxlZC4KKy8vIGNvbnN0IHVuc2lnbmVkIGNoYXIqCisvLyAgICAgVFJBQ0VfRVZFTlRfQVBJ
X0dFVF9DQVRFR09SWV9FTkFCTEVEKGNvbnN0IGNoYXIqIGNhdGVnb3J5X25hbWUpCisjZGVmaW5l
IFRSQUNFX0VWRU5UX0FQSV9HRVRfQ0FURUdPUllfRU5BQkxFRCBcCisgICAgV2ViQ29yZTo6UGxh
dGZvcm1TdXBwb3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcKKworLy8gQWRkIGEgdHJh
Y2UgZXZlbnQgdG8gdGhlIHBsYXRmb3JtIHRyYWNpbmcgc3lzdGVtLiBSZXR1cm5zIHRocmVzaG9s
ZEJlZ2luSWQKKy8vIGZvciB1c2UgaW4gYSBjb3JyZXNwb25kaW5nIGVuZCBUUkFDRV9FVkVOVF9B
UElfQUREX1RSQUNFX0VWRU5UIGNhbGwuCisvLyBpbnQgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFD
RV9FVkVOVCgKKy8vICAgICAgICAgICAgICAgICAgICBjaGFyIHBoYXNlLAorLy8gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5X2VuYWJsZWQsCisvLyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKy8vICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgaWQsCisvLyAgICAgICAgICAgICAgICAgICAgaW50IG51bV9hcmdz
LAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdfbmFtZXMsCisvLyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnX3R5cGVzLAorLy8gICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnX3ZhbHVlcywKKy8vICAg
ICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKy8vICAgICAgICAgICAgICAg
ICAgICBsb25nIGxvbmcgdGhyZXNob2xkLAorLy8gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgZmxhZ3MpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQgXAor
ICAgIFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVudAorCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogCiAvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IHRyYWNlIGV2ZW50IG1h
Y3JvcyBjcmVhdGUgdGVtcG9yYXJ5IHZhcmlhYmxlcwogLy8gdG8ga2VlcCBpbnN0cnVtZW50YXRp
b24gb3ZlcmhlYWQgbG93LiBUaGVzZSBtYWNyb3MgZ2l2ZSBlYWNoIHRlbXBvcmFyeQogLy8gdmFy
aWFibGUgYSB1bmlxdWUgbmFtZSBiYXNlZCBvbiB0aGUgbGluZSBudW1iZXIgdG8gcHJldmVudCBu
YW1lIGNvbGxpc3Npb25zLgotI2RlZmluZSBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElG
SUVSMyhhLCBiKSBhIyNiCi0jZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJ
RVIyKGEsIGIpIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIzKGEsIGIpCi0jZGVm
aW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIobmFtZV9wcmVmaXgpIFRSQUNF
X0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIyKG5hbWVfcHJlZml4LCBfX0xJTkVfXykKKyNk
ZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMyhhLCBiKSBcCisgICAgdHJhY2VfZXZlbnRf
dW5pcXVlXyMjYSMjYgorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQyKGEsIGIpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQzKGEsIGIpCisjZGVmaW5lIElOVEVSTkFMVFJB
Q0VFVkVOVFVJRChuYW1lX3ByZWZpeCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX1VJRDIo
bmFtZV9wcmVmaXgsIF9fTElORV9fKQorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVy
bmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkuCisvLyAtIFdURl9BTk5PVEFURV9C
RU5JR05fUkFDRSwgc2VlIFRocmVhZCBTYWZldHkgYWJvdmUuCisjZGVmaW5lIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KSBcCisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpID0gMDsgXAor
ICAgIFdURl9BTk5PVEFURV9CRU5JR05fUkFDRSgmSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0
YXRpYyksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNlX2V2ZW50IGNhdGVn
b3J5Iik7IFwKKyAgICBpZiAoIUlOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSBcCisg
ICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSA9IFwKKyAgICAgICAgICBUUkFD
RV9FVkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJMRUQoY2F0ZWdvcnkpOworCisvLyBJbXBsZW1l
bnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkg
YW5kIGFkZAorLy8gZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuCisjaWYgQ09NUElM
RVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChpZ25v
cmUpICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKHBo
YXNlLCBjYXRlZ29yeSwgbmFtZSwgZmxhZ3MsIC4uLikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIGlmICgqSU5URVJOQUxUUkFD
RUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6YWRk
VHJhY2VFdmVudCggXAorICAgICAgICAgIHBoYXNlLCBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0
c3RhdGljKSwgbmFtZSwgXAorICAgICAgICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6Om5vRXZlbnRJ
ZCwgZmxhZ3MsICMjX19WQV9BUkdTX18pOyBcCisgICAgfQorI2VuZGlmCisKKy8vIEltcGxlbWVu
dGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0YXRpYyBjYXRlZ29yeSBh
bmQgYWRkIGJlZ2luCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgZW5hYmxlZC4gQWxzbyBh
ZGRzIHRoZSBlbmQgZXZlbnQgd2hlbiB0aGUgc2NvcGUKKy8vIGVuZHMuCisjaWYgQ09NUElMRVIo
TVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQo
aWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUsIC4uLikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6
OlRyYWNlRW5kT25TY29wZUNsb3NlIFwKKyAgICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHBy
b2ZpbGVTY29wZSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMp
KSB7IFwKKyAgICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OmFkZFRyYWNlRXZlbnQoIFwKKyAgICAg
ICAgICBUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VF
VkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgbmFtZSwgV2ViQ29yZTo6VHJhY2VFdmVu
dDo6bm9FdmVudElkLCBcCisgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCAjI19fVkFf
QVJHU19fKTsgXAorICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSkuaW5p
dGlhbGl6ZSggXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBu
YW1lKTsgXAorICAgIH0KKyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVy
bmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZCBiZWdpbgorLy8gZXZl
bnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuIEFsc28gYWRkcyB0aGUgZW5kIGV2ZW50IHdo
ZW4gdGhlIHNjb3BlCisvLyBlbmRzLiBJZiB0aGUgZWxhcHNlZCB0aW1lIGlzIDwgdGhyZXNob2xk
IHRpbWUsIHRoZSBiZWdpbi9lbmQgcGFpciBpcyBlcmFzZWQuCisjaWYgQ09NUElMRVIoTVNWQzdf
T1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9O
R0VSX1RIQU4oaWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4odGhyZXNob2xkLCBcCisgICAgICAgIGNh
dGVnb3J5LCBuYW1lLCAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdP
UllfSU5GTyhjYXRlZ29yeSk7IFwKKyAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9u
U2NvcGVDbG9zZVRocmVzaG9sZCBcCisgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChwcm9m
aWxlU2NvcGUpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkg
eyBcCisgICAgICBpbnQgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGJlZ2luX2V2ZW50X2lkKSA9IFwK
KyAgICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAgICAgICAg
ICAgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgICAgIElOVEVSTkFMVFJBQ0VF
VkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgICBuYW1lLCBXZWJDb3JlOjpUcmFjZUV2
ZW50Ojpub0V2ZW50SWQsIFwKKyAgICAgICAgICAgIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgIyNf
X1ZBX0FSR1NfXyk7IFwKKyAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChwcm9maWxlU2NvcGUp
LmluaXRpYWxpemUoIFwKKyAgICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGlj
KSwgbmFtZSwgXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChiZWdpbl9ldmVudF9p
ZCksIHRocmVzaG9sZCk7IFwKKyAgICB9CisjZW5kaWYKKworLy8gSW1wbGVtZW50YXRpb24gZGV0
YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5IGFuZCBhZGQKKy8v
IGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLgorI2lmIENPTVBJTEVSKE1TVkM3X09S
X0xPV0VSKQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChpZ25vcmUp
ICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhf
SUQocGhhc2UsIGNhdGVnb3J5LCBuYW1lLCBpZCwgZmxhZ3MsIFwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
R0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZF
TlRVSUQoY2F0c3RhdGljKSkgeyBcCisgICAgICB1bnNpZ25lZCBjaGFyIHRyYWNlRXZlbnRGbGFn
cyA9IGZsYWdzIHwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQ7IFwKKyAgICAgIFdlYkNvcmU6OlRy
YWNlRXZlbnQ6OlRyYWNlSUQgdHJhY2VFdmVudFRyYWNlSUQoIFwKKyAgICAgICAgICBpZCwgJnRy
YWNlRXZlbnRGbGFncyk7IFwKKyAgICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OmFkZFRyYWNlRXZl
bnQoIFwKKyAgICAgICAgICBwaGFzZSwgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyks
IFwKKyAgICAgICAgICBuYW1lLCB0cmFjZUV2ZW50VHJhY2VJRC5kYXRhKCksIHRyYWNlRXZlbnRG
bGFncywgXAorICAgICAgICAgICMjX19WQV9BUkdTX18pOyBcCisgICAgfQorI2VuZGlmCisKKy8v
IE5vdGVzIHJlZ2FyZGluZyB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zOgorLy8gTmV3IHZhbHVl
cyBjYW4gYmUgYWRkZWQgYW5kIHByb3BhZ2F0ZWQgdG8gdGhpcmQgcGFydHkgbGlicmFyaWVzLCBi
dXQgZXhpc3RpbmcKKy8vIGRlZmluaXRpb25zIG11c3QgbmV2ZXIgYmUgY2hhbmdlZCwgYmVjYXVz
ZSB0aGlyZCBwYXJ0eSBsaWJyYXJpZXMgbWF5IHVzZSBvbGQKKy8vIGRlZmluaXRpb25zLgorCisv
LyBQaGFzZSBpbmRpY2F0ZXMgdGhlIG5hdHVyZSBvZiBhbiBldmVudCBlbnRyeS4gRS5nLiBwYXJ0
IG9mIGEgYmVnaW4vZW5kIHBhaXIuCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lOICAg
ICgnQicpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0VORCAgICAgICgnRScpCisjZGVmaW5l
IFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQgICgnSScpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BI
QVNFX1NUQVJUICAgICgnUycpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCAgICgn
RicpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX01FVEFEQVRBICgnTScpCisjZGVmaW5lIFRS
QUNFX0VWRU5UX1BIQVNFX0NPVU5URVIgICgnQycpCisKKy8vIEZsYWdzIGZvciBjaGFuZ2luZyB0
aGUgYmVoYXZpb3Igb2YgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVC4KKyNkZWZpbmUg
VFJBQ0VfRVZFTlRfRkxBR19OT05FICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
MCkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSAgICAgICAgKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KDEgPDwgMCkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZMQUdfSEFTX0lEICAg
ICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEgPDwgMSkpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX0ZMQUdfTUFOR0xFX0lEICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEgPDwgMikp
CisKKy8vIFR5cGUgdmFsdWVzIGZvciBpZGVudGlmeWluZyB0eXBlcyBpbiB0aGUgVHJhY2VWYWx1
ZSB1bmlvbi4KKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9CT09MICAgICAgICAgKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KDEpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX1VJTlQgICAg
ICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMikpCisjZGVmaW5lIFRSQUNFX1ZBTFVF
X1RZUEVfSU5UICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigzKSkKKyNkZWZp
bmUgVFJBQ0VfVkFMVUVfVFlQRV9ET1VCTEUgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KDQpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX1BPSU5URVIgICAgICAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oNSkpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfU1RSSU5HICAg
ICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig2KSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVf
VFlQRV9DT1BZX1NUUklORyAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDcpKQogCi0vLyBJ
c3N1ZXMgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4gYW5kIHRyYWNlRXZlbnRFbmQg
Y2FsbHMgZm9yIHRoZSBlbmNsb3Npbmcgc2NvcGUKLSNkZWZpbmUgVFJBQ0VfRVZFTlQobmFtZSwg
aWQsIGV4dHJhKSBXZWJDb3JlOjppbnRlcm5hbDo6U2NvcGVUcmFjZXIgVFJBQ0VfRVZFTlRfTUFL
RV9VTklRVUVfSURFTlRJRklFUihfX3RyYWNlRXZlbnRTY29wZSkobmFtZSwgaWQsIGV4dHJhKTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgaW50ZXJuYWwgeworbmFtZXNwYWNl
IFRyYWNlRXZlbnQgeworCisvLyBTcGVjaWZ5IHRoZXNlIHZhbHVlcyB3aGVuIHRoZSBjb3JyZXNw
b25kaW5nIGFyZ3VtZW50IG9mIGFkZFRyYWNlRXZlbnQgaXMgbm90CisvLyB1c2VkLgorY29uc3Qg
aW50IHplcm9OdW1BcmdzID0gMDsKK2NvbnN0IGludCBub1RocmVzaG9sZEJlZ2luSWQgPSAtMTsK
K2NvbnN0IGxvbmcgbG9uZyBub1RocmVzaG9sZFZhbHVlID0gMDsKK2NvbnN0IHVuc2lnbmVkIGxv
bmcgbG9uZyBub0V2ZW50SWQgPSAwOwogCi0vLyBVc2VkIGJ5IFRSQUNFX0VWRU5UIG1hY3JvLiBE
byBub3QgdXNlIGRpcmVjdGx5LgotY2xhc3MgU2NvcGVUcmFjZXIgeworLy8gVHJhY2VJRCBlbmNh
cHN1bGF0ZXMgYW4gSUQgdGhhdCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIgb3IgcG9pbnRlci4g
UG9pbnRlcnMKKy8vIGFyZSBtYW5nbGVkIHdpdGggdGhlIFByb2Nlc3MgSUQgc28gdGhhdCB0aGV5
IGFyZSB1bmxpa2VseSB0byBjb2xsaWRlIHdoZW4gdGhlCisvLyBzYW1lIHBvaW50ZXIgaXMgdXNl
ZCBvbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorY2xhc3MgVHJhY2VJRCB7CiBwdWJsaWM6Ci0gICAg
U2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIqIGV4dHJhKTsK
LSAgICB+U2NvcGVUcmFjZXIoKTsKKyAgICBleHBsaWNpdCBUcmFjZUlEKGNvbnN0IHZvaWQqIGlk
LCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPihyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGxvbmc+KGlkKSkpCisg
ICAgeworICAgICAgICAqZmxhZ3MgfD0gVFJBQ0VfRVZFTlRfRkxBR19NQU5HTEVfSUQ7CisgICAg
fQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgbG9uZyBsb25nIGlkLCB1bnNpZ25lZCBj
aGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBU
cmFjZUlEKHVuc2lnbmVkIGxvbmcgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0YShp
ZCkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgaW50IGlk
LCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgKHZvaWQpZmxhZ3M7IH0KKyAg
ICBleHBsaWNpdCBUcmFjZUlEKHVuc2lnbmVkIHNob3J0IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFn
cykgOiBtX2RhdGEoaWQpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHVu
c2lnbmVkIGNoYXIgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1fZGF0YShpZCkgeyAodm9p
ZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQobG9uZyBsb25nIGlkLCB1bnNpZ25lZCBj
aGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihpZCkpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKGxvbmcgaWQs
IHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGlkKSkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNl
SUQoaW50IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBs
aWNpdCBUcmFjZUlEKHNob3J0IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBt
X2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsgKHZvaWQpZmxhZ3M7
IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHNpZ25lZCBjaGFyIGlkLCB1bnNpZ25lZCBjaGFyKiBm
bGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihp
ZCkpIHsgKHZvaWQpZmxhZ3M7IH0KKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbG9uZyBsb25n
IG1fZGF0YTsKK307CisKKy8vIFNpbXBsZSB1bmlvbiB0byBzdG9yZSB2YXJpb3VzIHR5cGVzIGFz
IHVuc2lnbmVkIGxvbmcgbG9uZy4KK3VuaW9uIFRyYWNlVmFsdWVVbmlvbiB7CisgICAgYm9vbCBt
X2Jvb2w7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fdWludDsKKyAgICBsb25nIGxvbmcgbV9p
bnQ7CisgICAgZG91YmxlIG1fZG91YmxlOworICAgIGNvbnN0IHZvaWQqIG1fcG9pbnRlcjsKKyAg
ICBjb25zdCBjaGFyKiBtX3N0cmluZzsKK307CiAKKy8vIFNpbXBsZSBjb250YWluZXIgZm9yIGNv
bnN0IGNoYXIqIHRoYXQgc2hvdWxkIGJlIGNvcGllZCBpbnN0ZWFkIG9mIHJldGFpbmVkLgorY2xh
c3MgVHJhY2VTdHJpbmdXaXRoQ29weSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVHJhY2VTdHJp
bmdXaXRoQ29weShjb25zdCBjaGFyKiBzdHIpIDogbV9zdHIoc3RyKSB7IH0KKyAgICBvcGVyYXRv
ciBjb25zdCBjaGFyKiAoKSBjb25zdCB7IHJldHVybiBtX3N0cjsgfQogcHJpdmF0ZToKLSAgICBj
b25zdCBjaGFyKiBtX25hbWU7Ci0gICAgdm9pZCogbV9pZDsKLSAgICBPd25BcnJheVB0cjxjaGFy
PiBtX2V4dHJhOworICAgIGNvbnN0IGNoYXIqIG1fc3RyOwogfTsKIAotaW5saW5lIFNjb3BlVHJh
Y2VyOjpTY29wZVRyYWNlcihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciog
ZXh0cmEpCi0gICAgOiBtX25hbWUobmFtZSkKLSAgICAsIG1faWQoaWQpCi17Ci0gICAgUGxhdGZv
cm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJhKTsgXAotICAgIGlmIChl
eHRyYSAmJiBQbGF0Zm9ybVN1cHBvcnQ6OmlzVHJhY2VFdmVudEVuYWJsZWQoKSkKLSAgICAgICAg
bV9leHRyYSA9IGFkb3B0QXJyYXlQdHIoc3RyZHVwKGV4dHJhKSk7CisvLyBEZWZpbmUgc2V0VHJh
Y2VWYWx1ZSBmb3IgZWFjaCBhbGxvd2VkIHR5cGUuIEl0IHN0b3JlcyB0aGUgdHlwZSBhbmQKKy8v
IHZhbHVlIGluIHRoZSByZXR1cm4gYXJndW1lbnRzLiBUaGlzIGFsbG93cyB0aGlzIEFQSSB0byBh
dm9pZCBkZWNsYXJpbmcgYW55CisvLyBzdHJ1Y3R1cmVzIHNvIHRoYXQgaXQgaXMgcG9ydGFibGUg
dG8gdGhpcmRfcGFydHkgbGlicmFyaWVzLgorI2RlZmluZSBJTlRFUk5BTF9ERUNMQVJFX1NFVF9U
UkFDRV9WQUxVRShhY3R1YWxfdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmlvbl9tZW1iZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWVfdHlwZV9pZCkgXAorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRU
cmFjZVZhbHVlKGFjdHVhbF90eXBlIGFyZywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHR5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcqIHZhbHVlKSB7IFwKKyAgICAgICAgVHJh
Y2VWYWx1ZVVuaW9uIHR5cGVWYWx1ZTsgXAorICAgICAgICB0eXBlVmFsdWUudW5pb25fbWVtYmVy
ID0gYXJnOyBcCisgICAgICAgICp0eXBlID0gdmFsdWVfdHlwZV9pZDsgXAorICAgICAgICAqdmFs
dWUgPSB0eXBlVmFsdWUubV91aW50OyBcCisgICAgfQorLy8gU2ltcGxlciBmb3JtIGZvciBpbnQg
dHlwZXMgdGhhdCBjYW4gYmUgc2FmZWx5IGNhc3RlZC4KKyNkZWZpbmUgSU5URVJOQUxfREVDTEFS
RV9TRVRfVFJBQ0VfVkFMVUVfSU5UKGFjdHVhbF90eXBlLCBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlX2lkKSBcCisgICAgc3RhdGljIGlu
bGluZSB2b2lkIHNldFRyYWNlVmFsdWUoYWN0dWFsX3R5cGUgYXJnLCBcCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogdHlwZSwgXAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyogdmFsdWUpIHsg
XAorICAgICAgICAqdHlwZSA9IHZhbHVlX3R5cGVfaWQ7IFwKKyAgICAgICAgKnZhbHVlID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihhcmcpOyBcCisgICAgfQorCitJTlRFUk5BTF9E
RUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQodW5zaWduZWQgbG9uZyBsb25nLCBUUkFDRV9WQUxV
RV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQodW5zaWdu
ZWQgaW50LCBUUkFDRV9WQUxVRV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFD
RV9WQUxVRV9JTlQodW5zaWduZWQgc2hvcnQsIFRSQUNFX1ZBTFVFX1RZUEVfVUlOVCkKK0lOVEVS
TkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBjaGFyLCBUUkFDRV9WQUxV
RV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQobG9uZyBs
b25nLCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZB
TFVFX0lOVChpbnQsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRf
VFJBQ0VfVkFMVUVfSU5UKHNob3J0LCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkKK0lOVEVSTkFMX0RF
Q0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChzaWduZWQgY2hhciwgVFJBQ0VfVkFMVUVfVFlQRV9J
TlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShib29sLCBtX2Jvb2wsIFRSQUNF
X1ZBTFVFX1RZUEVfQk9PTCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGRvdWJs
ZSwgbV9kb3VibGUsIFRSQUNFX1ZBTFVFX1RZUEVfRE9VQkxFKQorSU5URVJOQUxfREVDTEFSRV9T
RVRfVFJBQ0VfVkFMVUUoY29uc3Qgdm9pZCosIG1fcG9pbnRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRSQUNFX1ZBTFVFX1RZUEVfUE9JTlRFUikKK0lOVEVSTkFMX0RFQ0xB
UkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0IGNoYXIqLCBtX3N0cmluZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRSQUNFX1ZBTFVFX1RZUEVfU1RSSU5HKQorSU5URVJOQUxfREVD
TEFSRV9TRVRfVFJBQ0VfVkFMVUUoY29uc3QgVHJhY2VTdHJpbmdXaXRoQ29weSYsIG1fc3RyaW5n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJBQ0VfVkFMVUVfVFlQRV9DT1BZ
X1NUUklORykKKworI3VuZGVmIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFCisjdW5k
ZWYgSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UCisKKy8vIFdURjo6U3RyaW5n
IHZlcnNpb24gb2Ygc2V0VHJhY2VWYWx1ZSBzbyB0aGF0IHRyYWNlIGFyZ3VtZW50cyBjYW4gYmUg
c3RyaW5ncy4KK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRUcmFjZVZhbHVlKGNvbnN0IFdURjo6Q1N0
cmluZyYgYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciogdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyogdmFsdWUpIHsKKyAgICBUcmFjZVZhbHVlVW5pb24gdHlwZVZhbHVlOworICAgIHR5cGVW
YWx1ZS5tX3N0cmluZyA9IGFyZy5kYXRhKCk7CisgICAgKnR5cGUgPSBUUkFDRV9WQUxVRV9UWVBF
X0NPUFlfU1RSSU5HOworICAgICp2YWx1ZSA9IHR5cGVWYWx1ZS5tX3VpbnQ7CiB9CiAKLWlubGlu
ZSBTY29wZVRyYWNlcjo6flNjb3BlVHJhY2VyKCkKLXsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRy
YWNlRXZlbnRFbmQobV9uYW1lLCBtX2lkLCBtX2V4dHJhLmdldCgpKTsKKy8vIFRoZXNlIGFkZFRy
YWNlRXZlbnQgdGVtcGxhdGUgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGhlcmUgaW5zdGVhZCBvZiBp
biB0aGUKKy8vIG1hY3JvLCBiZWNhdXNlIHRoZSBhcmcgdmFsdWVzIGNvdWxkIGJlIHRlbXBvcmFy
eSBzdHJpbmcgb2JqZWN0cy4gSW4gb3JkZXIgdG8KKy8vIHN0b3JlIHBvaW50ZXJzIHRvIHRoZSBp
bnRlcm5hbCBjX3N0ciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSB0cmFjaW5nIEFQSSwgdGhlCisv
LyBhcmcgdmFsdWVzIG11c3QgbGl2ZSB0aHJvdWdob3V0IHRoZXNlIHByb2NlZHVyZXMuCisKK3N0
YXRpYyBpbmxpbmUgaW50IGFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpIHsKKyAgICByZXR1
cm4gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgcGhhc2UsIGNhdGVn
b3J5RW5hYmxlZCwgbmFtZSwgaWQsCisgICAgICAgIHplcm9OdW1BcmdzLCAwLCAwLCAwLAorICAg
ICAgICBub1RocmVzaG9sZEJlZ2luSWQsIG5vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgQVJHMV9UWVBFPgorc3RhdGljIGlubGluZSBpbnQgYWRkVHJhY2VFdmVu
dChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogYXJnMU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFS
RzFfVFlQRSYgYXJnMVZhbCkgeworICAgIGNvbnN0IGludCBudW1BcmdzID0gMTsKKyAgICB1bnNp
Z25lZCBjaGFyIGFyZ1R5cGVzWzFdOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmdWYWx1ZXNb
MV07CisgICAgc2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlwZXNbMF0sICZhcmdWYWx1ZXNb
MF0pOworICAgIHJldHVybiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAg
ICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwKKyAgICAgICAgbnVtQXJncywgJmFy
ZzFOYW1lLCBhcmdUeXBlcywgYXJnVmFsdWVzLAorICAgICAgICBub1RocmVzaG9sZEJlZ2luSWQs
IG5vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK
K3RlbXBsYXRlPGNsYXNzIEFSRzFfVFlQRSwgY2xhc3MgQVJHMl9UWVBFPgorc3RhdGljIGlubGlu
ZSBpbnQgYWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogYXJnMU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEFSRzFfVFlQRSYgYXJnMVZhbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogYXJnMk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEFSRzJfVFlQRSYgYXJnMlZhbCkgeworICAgIGNvbnN0IGludCBudW1B
cmdzID0gMjsKKyAgICBjb25zdCBjaGFyKiBhcmdOYW1lc1syXSA9IHsgYXJnMU5hbWUsIGFyZzJO
YW1lIH07CisgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1syXTsKKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgYXJnVmFsdWVzWzJdOworICAgIHNldFRyYWNlVmFsdWUoYXJnMVZhbCwgJmFyZ1R5cGVz
WzBdLCAmYXJnVmFsdWVzWzBdKTsKKyAgICBzZXRUcmFjZVZhbHVlKGFyZzJWYWwsICZhcmdUeXBl
c1sxXSwgJmFyZ1ZhbHVlc1sxXSk7CisgICAgcmV0dXJuIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJB
Q0VfRVZFTlQoCisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQsIG5hbWUsIGlkLAorICAg
ICAgICBudW1BcmdzLCBhcmdOYW1lcywgYXJnVHlwZXMsIGFyZ1ZhbHVlcywKKyAgICAgICAgbm9U
aHJlc2hvbGRCZWdpbklkLCBub1RocmVzaG9sZFZhbHVlLCBmbGFncyk7Cit9CisKKy8vIFVzZWQg
YnkgVFJBQ0VfRVZFTlR4IG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5LgorY2xhc3MgVHJhY2VF
bmRPblNjb3BlQ2xvc2UgeworcHVibGljOgorICAgIC8vIE5vdGU6IG1lbWJlcnMgb2YgbV9kYXRh
IGludGVudGlvbmFsbHkgbGVmdCB1bmluaXRpYWxpemVkLiBTZWUgaW5pdGlhbGl6ZS4KKyAgICBU
cmFjZUVuZE9uU2NvcGVDbG9zZSgpIDogbV9wZGF0YSgwKSB7IH0KKyAgICB+VHJhY2VFbmRPblNj
b3BlQ2xvc2UoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGRhdGEpCisgICAgICAgICAgICBhZGRF
dmVudElmRW5hYmxlZCgpOworICAgIH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCB1bnNp
Z25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIG5hbWUpCisgICAgeworICAgICAgICBtX2RhdGEuY2F0ZWdvcnlFbmFibGVkID0gY2F0ZWdv
cnlFbmFibGVkOworICAgICAgICBtX2RhdGEubmFtZSA9IG5hbWU7CisgICAgICAgIG1fcGRhdGEg
PSAmbV9kYXRhOworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBBZGQgdGhlIGVuZCBldmVudCBp
ZiB0aGUgY2F0ZWdvcnkgaXMgc3RpbGwgZW5hYmxlZC4KKyAgICB2b2lkIGFkZEV2ZW50SWZFbmFi
bGVkKCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkgY2FsbGVkIHdoZW4gbV9wZGF0YSBpcyBub24t
bnVsbC4KKyAgICAgICAgaWYgKCptX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQpIHsKKyAgICAgICAg
ICAgIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAgICAgICAgICAgVFJB
Q0VfRVZFTlRfUEhBU0VfRU5ELAorICAgICAgICAgICAgICAgIG1fcGRhdGEtPmNhdGVnb3J5RW5h
YmxlZCwKKyAgICAgICAgICAgICAgICBtX3BkYXRhLT5uYW1lLCBub0V2ZW50SWQsCisgICAgICAg
ICAgICAgICAgemVyb051bUFyZ3MsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgbm9UaHJlc2hv
bGRCZWdpbklkLCBub1RocmVzaG9sZFZhbHVlLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gVGhpcyBEYXRhIHN0cnVjdCB3b3JrYXJvdW5kIGlzIHRv
IGF2b2lkIGluaXRpYWxpemluZyBhbGwgdGhlIG1lbWJlcnMKKyAgICAvLyBpbiBEYXRhIGR1cmlu
ZyBjb25zdHJ1Y3Rpb24gb2YgdGhpcyBvYmplY3QsIHNpbmNlIHRoaXMgb2JqZWN0IGlzIGFsd2F5
cworICAgIC8vIGNvbnN0cnVjdGVkLCBldmVuIHdoZW4gdHJhY2luZyBpcyBkaXNhYmxlZC4gSWYg
dGhlIG1lbWJlcnMgb2YgRGF0YSB3ZXJlCisgICAgLy8gbWVtYmVycyBvZiB0aGlzIGNsYXNzIGlu
c3RlYWQsIGNvbXBpbGVyIHdhcm5pbmdzIG9jY3VyIGFib3V0IHBvdGVudGlhbAorICAgIC8vIHVu
aW5pdGlhbGl6ZWQgYWNjZXNzZXMuCisgICAgc3RydWN0IERhdGEgeworICAgICAgICBjb25zdCB1
bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIGNvbnN0IGNoYXIqIG5hbWU7
CisgICAgfTsKKyAgICBEYXRhKiBtX3BkYXRhOworICAgIERhdGEgbV9kYXRhOworfTsKKworLy8g
VXNlZCBieSBUUkFDRV9FVkVOVHggbWFjcm8uIERvIG5vdCB1c2UgZGlyZWN0bHkuCitjbGFzcyBU
cmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCB7CitwdWJsaWM6CisgICAgLy8gTm90ZTogbWVt
YmVycyBvZiBtX2RhdGEgaW50ZW50aW9uYWxseSBsZWZ0IHVuaW5pdGlhbGl6ZWQuIFNlZSBpbml0
aWFsaXplLgorICAgIFRyYWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xkKCkgOiBtX3BkYXRhKDAp
IHsgfQorICAgIH5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCgpCisgICAgeworICAgICAg
ICBpZiAobV9wZGF0YSkKKyAgICAgICAgICAgIGFkZEV2ZW50SWZFbmFibGVkKCk7CisgICAgfQor
CisgICAgLy8gQ2FsbGVkIGJ5IG1hY3JvcyBvbmx5IHdoZW4gdHJhY2luZyBpcyBlbmFibGVkIGF0
IHRoZSBwb2ludCB3aGVuIHRoZSBiZWdpbgorICAgIC8vIGV2ZW50IGlzIGFkZGVkLgorICAgIHZv
aWQgaW5pdGlhbGl6ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgIGlu
dCB0aHJlc2hvbGRCZWdpbklELAorICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGhyZXNo
b2xkKQorICAgIHsKKyAgICAgICAgbV9kYXRhLmNhdGVnb3J5RW5hYmxlZCA9IGNhdGVnb3J5RW5h
YmxlZDsKKyAgICAgICAgbV9kYXRhLm5hbWUgPSBuYW1lOworICAgICAgICBtX2RhdGEudGhyZXNo
b2xkQmVnaW5JRCA9IHRocmVzaG9sZEJlZ2luSUQ7CisgICAgICAgIG1fZGF0YS50aHJlc2hvbGQg
PSB0aHJlc2hvbGQ7CisgICAgICAgIG1fcGRhdGEgPSAmbV9kYXRhOworICAgIH0KKworcHJpdmF0
ZToKKyAgICAvLyBBZGQgdGhlIGVuZCBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgc3RpbGwgZW5h
YmxlZC4KKyAgICB2b2lkIGFkZEV2ZW50SWZFbmFibGVkKCkKKyAgICB7CisgICAgICAgIC8vIE9u
bHkgY2FsbGVkIHdoZW4gbV9wZGF0YSBpcyBub24tbnVsbC4KKyAgICAgICAgaWYgKCptX3BkYXRh
LT5jYXRlZ29yeUVuYWJsZWQpIHsKKyAgICAgICAgICAgIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJB
Q0VfRVZFTlQoCisgICAgICAgICAgICAgICAgVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELAorICAgICAg
ICAgICAgICAgIG1fcGRhdGEtPmNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICBtX3Bk
YXRhLT5uYW1lLCBub0V2ZW50SWQsCisgICAgICAgICAgICAgICAgemVyb051bUFyZ3MsIDAsIDAs
IDAsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+dGhyZXNob2xkQmVnaW5JRCwgbV9wZGF0YS0+
dGhyZXNob2xkLAorICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGlzIERhdGEgc3RydWN0IHdvcmthcm91bmQgaXMgdG8g
YXZvaWQgaW5pdGlhbGl6aW5nIGFsbCB0aGUgbWVtYmVycworICAgIC8vIGluIERhdGEgZHVyaW5n
IGNvbnN0cnVjdGlvbiBvZiB0aGlzIG9iamVjdCwgc2luY2UgdGhpcyBvYmplY3QgaXMgYWx3YXlz
CisgICAgLy8gY29uc3RydWN0ZWQsIGV2ZW4gd2hlbiB0cmFjaW5nIGlzIGRpc2FibGVkLiBJZiB0
aGUgbWVtYmVycyBvZiBEYXRhIHdlcmUKKyAgICAvLyBtZW1iZXJzIG9mIHRoaXMgY2xhc3MgaW5z
dGVhZCwgY29tcGlsZXIgd2FybmluZ3Mgb2NjdXIgYWJvdXQgcG90ZW50aWFsCisgICAgLy8gdW5p
bml0aWFsaXplZCBhY2Nlc3Nlcy4KKyAgICBzdHJ1Y3QgRGF0YSB7CisgICAgICAgIGxvbmcgbG9u
ZyB0aHJlc2hvbGQ7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxl
ZDsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICAgICAgaW50IHRocmVzaG9sZEJlZ2lu
SUQ7CisgICAgfTsKKyAgICBEYXRhKiBtX3BkYXRhOworICAgIERhdGEgbV9kYXRhOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgVHJhY2VFdmVudAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBs
YXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNmMwZTc0ZjEyOTcyYzdmMzc0NjM0MGFmZjY5
YjMxMmRjMjVjYTFlOS4uMWRhMGVkNjhjMjdkNjcwMGUyMDMzMWZkYTg2MTZiMDJkMTUyNTJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0
UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAgLTIzNywxMSArMjM3LDc2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50U3RhdHNDb3VudGVyKGNvbnN0IGNoYXIqIG5h
bWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRTdGF0c0NvdW50ZXIoY29uc3QgY2hh
ciogbmFtZSkgeyB9CiAKLSAgICAvLyBBbiBldmVudCBpcyBpZGVudGlmaWVkIGJ5IHRoZSBwYWly
IChuYW1lLCBpZCkuIFRoZSBleHRyYSBwYXJhbWV0ZXIKLSAgICAvLyBzcGVjaWZpZXMgYWRkaXRp
b25hbCBkYXRhIHRvIGxvZyB3aXRoIHRoZSBldmVudC4KLSAgICB2aXJ0dWFsIGJvb2wgaXNUcmFj
ZUV2ZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
dHJhY2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBl
eHRyYSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFt
ZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKSB7IH0KKyAgICAvLyBUcmFjaW5nIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworICAgIC8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGdpdmVu
IHRyYWNlIGNhdGVnb3J5LiBUaGUKKyAgICAvLyBlbWJlZGRlciBjYW4gZHluYW1pY2FsbHkgY2hh
bmdlIHRoZSBlbmFibGVkIHN0YXRlIGFzIHRyYWNlIGV2ZW50CisgICAgLy8gcmVjb3JkaW5nIGlz
IHN0YXJ0ZWQgYW5kIHN0b3BwZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBPbmx5IGxvbmctbGl2ZWQK
KyAgICAvLyBsaXRlcmFsIHN0cmluZ3Mgc2hvdWxkIGJlIGdpdmVuIGFzIHRoZSBjYXRlZ29yeSBu
YW1lLiBUaGUgaW1wbGVtZW50YXRpb24KKyAgICAvLyBleHBlY3RzIHRoZSByZXR1cm5lZCBwb2lu
dGVyIHRvIGJlIGhlbGQgcGVybWFuZW50bHkgaW4gYSBsb2NhbCBzdGF0aWMuIElmCisgICAgLy8g
dGhlIHVuc2lnbmVkIGNoYXIgaXMgbm9uLXplcm8sIHRyYWNpbmcgaXMgZW5hYmxlZC4gSWYgdHJh
Y2luZyBpcyBlbmFibGVkLAorICAgIC8vIGFkZFRyYWNlRXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUg
Y2FsbGVkIGJ5IHRoZSB0cmFjZSBldmVudCBtYWNyb3MuCisgICAgdmlydHVhbCBjb25zdCB1bnNp
Z25lZCBjaGFyKiBnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3QgY2hhciogY2F0ZWdv
cnlOYW1lKSB7IHJldHVybiAwOyB9CisgICAgLy8gQWRkIGEgdHJhY2UgZXZlbnQgdG8gdGhlIHBs
YXRmb3JtIHRyYWNpbmcgc3lzdGVtLiBEZXBlbmRpbmcgb24gdGhlIGFjdHVhbAorICAgIC8vIGVu
YWJsZWQgc3RhdGUsIHRoaXMgZXZlbnQgbWF5IGJlIHJlY29yZGVkIG9yIGRyb3BwZWQuIFJldHVy
bnMKKyAgICAvLyB0aHJlc2hvbGRCZWdpbklkIGZvciB1c2UgaW4gYSBjb3JyZXNwb25kaW5nIGVu
ZCBhZGRUcmFjZUV2ZW50IGNhbGwuCisgICAgLy8gLSBwaGFzZSBzcGVjaWZpZXMgdGhlIHR5cGUg
b2YgZXZlbnQ6CisgICAgLy8gICAtIEJFR0lOICgnQicpOiBNYXJrcyB0aGUgYmVnaW5uaW5nIG9m
IGEgc2NvcGVkIGV2ZW50LgorICAgIC8vICAgLSBFTkQgKCdFJyk6IE1hcmtzIHRoZSBlbmQgb2Yg
YSBzY29wZWQgZXZlbnQuCisgICAgLy8gICAtIElOU1RBTlQgKCdJJyk6IFN0YW5kYWxvbmUsIGlu
c3RhbnRhbmVvdXMgZXZlbnQuCisgICAgLy8gICAtIFNUQVJUICgnUycpOiBNYXJrcyB0aGUgYmVn
aW5uaW5nIG9mIGFuIGFzeW5jaHJvbm91cyBldmVudCAodGhlIGVuZAorICAgIC8vICAgICBldmVu
dCBjYW4gb2NjdXIgaW4gYSBkaWZmZXJlbnQgc2NvcGUgb3IgdGhyZWFkKS4gVGhlIGlkIHBhcmFt
ZXRlciBpcworICAgIC8vICAgICB1c2VkIHRvIG1hdGNoIFNUQVJUL0ZJTklTSCBwYWlycy4KKyAg
ICAvLyAgIC0gRklOSVNIICgnRicpOiBNYXJrcyB0aGUgZW5kIG9mIGFuIGFzeW5jaHJvbm91cyBl
dmVudC4KKyAgICAvLyAgIC0gQ09VTlRFUiAoJ0MnKTogVXNlZCB0byB0cmFjZSBpbnRlZ2VyIHF1
YW50aXRpZXMgdGhhdCBjaGFuZ2Ugb3ZlcgorICAgIC8vICAgICB0aW1lLiBUaGUgYXJndW1lbnQg
dmFsdWVzIGFyZSBleHBlY3RlZCB0byBiZSBvZiB0eXBlIGludC4KKyAgICAvLyAgIC0gTUVUQURB
VEEgKCdNJyk6IFJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UuCisgICAgLy8gLSBjYXRlZ29yeUVu
YWJsZWQgaXMgdGhlIHBvaW50ZXIgcmV0dXJuZWQgYnkgZ2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRG
bGFnLgorICAgIC8vIC0gbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgZXZlbnQuIEFsc28gdXNlZCB0
byBtYXRjaCBCRUdJTi9FTkQgYW5kCisgICAgLy8gICBTVEFSVC9GSU5JU0ggcGFpcnMuCisgICAg
Ly8gLSBpZCBvcHRpb25hbGx5IGFsbG93cyBldmVudHMgb2YgdGhlIHNhbWUgbmFtZSB0byBiZSBk
aXN0aW5ndWlzaGVkIGZyb20KKyAgICAvLyAgIGVhY2ggb3RoZXIuIEZvciBleGFtcGxlLCB0byB0
cmFjZSB0aGUgY29uc3V0cnVjdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2YKKyAgICAvLyAgIG9iamVj
dHMsIHNwZWNpZnkgdGhlIHBvaW50ZXIgYXMgdGhlIGlkIHBhcmFtZXRlci4KKyAgICAvLyAtIG51
bUFyZ3Mgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYXJnTmFtZXMsIGFyZ1R5
cGVzLCBhbmQKKyAgICAvLyAgIGFyZ1ZhbHVlcy4KKyAgICAvLyAtIGFyZ05hbWVzIGlzIHRoZSBh
cnJheSBvZiBhcmd1bWVudCBuYW1lcy4gVXNlIGxvbmctbGl2ZWQgbGl0ZXJhbCBzdHJpbmdzCisg
ICAgLy8gICBvciBzcGVjaWZ5IHRoZSBDT1BZIGZsYWcuCisgICAgLy8gLSBhcmdUeXBlcyBpcyB0
aGUgYXJyYXkgb2YgYXJndW1lbnQgdHlwZXM6CisgICAgLy8gICAtIEJPT0wgKDEpOiBib29sCisg
ICAgLy8gICAtIFVJTlQgKDIpOiB1bnNpZ25lZCBsb25nIGxvbmcKKyAgICAvLyAgIC0gSU5UICgz
KTogbG9uZyBsb25nCisgICAgLy8gICAtIERPVUJMRSAoNCk6IGRvdWJsZQorICAgIC8vICAgLSBQ
T0lOVEVSICg1KTogdm9pZCoKKyAgICAvLyAgIC0gU1RSSU5HICg2KTogY2hhciogKGxvbmctbGl2
ZWQgbnVsbC10ZXJtaW5hdGVkIGNoYXIqIHN0cmluZykKKyAgICAvLyAgIC0gQ09QWV9TVFJJTkcg
KDcpOiBjaGFyKiAodGVtcG9yYXJ5IG51bGwtdGVybWluYXRlZCBjaGFyKiBzdHJpbmcpCisgICAg
Ly8gLSBhcmdWYWx1ZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50IHZhbHVlcy4gRWFjaCB2YWx1
ZSBpcyB0aGUgdW5zaWduZWQKKyAgICAvLyAgIGxvbmcgbG9uZyBtZW1iZXIgb2YgYSB1bmlvbiBv
ZiBhbGwgc3VwcG9ydGVkIHR5cGVzLgorICAgIC8vIC0gdGhyZXNob2xkQmVnaW5JZCBvcHRpb25h
bGx5IHNwZWNpZmllcyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYSBwcmV2aW91cworICAgIC8vICAg
Y2FsbCB0byBhZGRUcmFjZUV2ZW50IHdpdGggYSBCRUdJTiBwaGFzZS4KKyAgICAvLyAtIHRocmVz
aG9sZCBpcyB1c2VkIG9uIGFuIEVORCBwaGFzZSBldmVudCBpbiBjb25qdW5jdGlvbiB3aXRoIHRo
ZQorICAgIC8vICAgdGhyZXNob2xkQmVnaW5JZCBvZiBhIHByaW9yIEJFR0lOIGV2ZW50LiBUaGUg
dGhyZXNob2xkIGlzIHRoZSBtaW5pbXVtCisgICAgLy8gICBudW1iZXIgb2YgbWljcm9zZWNvbmRz
IHRoYXQgbXVzdCBoYXZlIHBhc3NlZCBzaW5jZSB0aGUgQkVHSU4gZXZlbnQuIElmCisgICAgLy8g
ICBsZXNzIHRoYW4gdGhyZXNob2xkIG1pY3Jvc2Vjb25kcyBoYXMgcGFzc2VkLCB0aGUgQkVHSU4v
RU5EIHBhaXIgaXMKKyAgICAvLyAgIGRyb3BwZWQuCisgICAgLy8gLSBmbGFncyBjYW4gYmUgMCBv
ciBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nLCBPUmVkIHRvZ2V0aGVyOgorICAgIC8vICAg
LSBDT1BZICgweDEpOiB0cmVhdCBhbGwgc3RyaW5ncyAobmFtZSwgYXJnTmFtZXMgYW5kIGFyZ1Zh
bHVlcyBvZiB0eXBlCisgICAgLy8gICAgIHN0cmluZykgYXMgdGVtcG9yYXJ5IHNvIHRoYXQgdGhl
eSB3aWxsIGJlIGNvcGllZCBieSBhZGRUcmFjZUV2ZW50LgorICAgIC8vICAgLSBIQVNfSUQgKDB4
Mik6IHVzZSB0aGUgaWQgYXJndW1lbnQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGV2ZW50IGZv
cgorICAgIC8vICAgICBtYXRjaGluZyB3aXRoIG90aGVyIGV2ZW50cyBvZiB0aGUgc2FtZSBuYW1l
LgorICAgIC8vICAgLSBNQU5HTEVfSUQgKDB4NCk6IHNwZWNpZnkgdGhpcyBmbGFnIGlmIHRoZSBp
ZCBwYXJhbWV0ZXIgaXMgdGhlIHZhbHVlCisgICAgLy8gICAgIG9mIGEgcG9pbnRlci4KKyAgICB2
aXJ0dWFsIGludCBhZGRUcmFjZUV2ZW50KAorICAgICAgICBjaGFyIHBoYXNlLAorICAgICAgICBj
b25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWRGbGFnLAorICAgICAgICBjb25zdCBj
aGFyKiBuYW1lLAorICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAgIGludCBu
dW1BcmdzLAorICAgICAgICBjb25zdCBjaGFyKiogYXJnTmFtZXMsCisgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGFyZ1R5cGVzLAorICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcq
IGFyZ1ZhbHVlcywKKyAgICAgICAgaW50IHRocmVzaG9sZEJlZ2luSWQsCisgICAgICAgIGxvbmcg
bG9uZyB0aHJlc2hvbGQsCisgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpIHsgcmV0dXJuIC0x
OyB9CiAKICAgICAvLyBDYWxsYmFja3MgZm9yIHJlcG9ydGluZyBoaXN0b2dyYW0gZGF0YS4KICAg
ICAvLyBDdXN0b21Db3VudHMgaGlzdG9ncmFtIGhhcyBleHBvbmVudGlhbCBidWNrZXQgc2l6ZXMs
IHNvIHRoYXQgbWluPTEsIG1heD0xMDAwMDAwLCBidWNrZXRDb3VudD01MCB3b3VsZCBkby4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCmluZGV4IDI0
NjgxZWM5NjJkNzRlYmZlYjVhYjMzNTVjMTkwM2FmZDllOWVjZDYuLjlmMGUzYTgxMjQ0ZjcyYjEy
MDEzMzc2NTY5MWNkMzMwZWIxMjIwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtOTQ3LDE5ICs5NDcsMjQgQEAgdm9pZCBQbGF0Zm9y
bVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KAogCiAvLyBUcmFjZSBFdmVudCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWJv
b2wgUGxhdGZvcm1TdXBwb3J0Ojppc1RyYWNlRXZlbnRFbmFibGVkKCkKLXsKLSAgICByZXR1cm4g
d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmlzVHJhY2VFdmVudEVuYWJsZWQoKTsKLX0KLQotdm9p
ZCBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBuYW1lLCB2b2lk
KiBpZCwgY29uc3QgY2hhciogZXh0cmEpCi17Ci0gICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCkt
PnRyYWNlRXZlbnRCZWdpbihuYW1lLCBpZCwgZXh0cmEpOwotfQotCi12b2lkIFBsYXRmb3JtU3Vw
cG9ydDo6dHJhY2VFdmVudEVuZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hh
ciogZXh0cmEpCi17Ci0gICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPnRyYWNlRXZlbnRFbmQo
bmFtZSwgaWQsIGV4dHJhKTsKK2NvbnN0IHVuc2lnbmVkIGNoYXIqIFBsYXRmb3JtU3VwcG9ydDo6
Z2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZSkKK3sK
KyAgICByZXR1cm4gd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmdldFRyYWNlQ2F0ZWdvcnlFbmFi
bGVkRmxhZyhjYXRlZ29yeU5hbWUpOworfQoraW50IFBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VF
dmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWRGbGFnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBudW1BcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiogYXJnTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFyZ1R5cGVzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcqIGFyZ1ZhbHVlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRocmVzaG9sZEJlZ2luSWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3Mp
Cit7CisgICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5hZGRUcmFjZUV2ZW50KAor
ICAgICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkRmxhZywgbmFtZSwgaWQsIG51bUFyZ3MsIGFy
Z05hbWVzLCBhcmdUeXBlcywgYXJnVmFsdWVzLCAgdGhyZXNob2xkQmVnaW5JZCwgdGhyZXNob2xk
LCBmbGFncyk7CiB9CiAKIC8vIFZpc2l0ZWQgTGlua3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125429</attachid>
            <date>2012-02-03 15:08:13 -0800</date>
            <delta_ts>2012-02-03 16:24:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120203150812.patch</filename>
            <type>text/plain</type>
            <size>55783</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5ODEzZTYzNjhlYmJk
YjVmMmIyZWY5NjNjYzVjYzI1NmNlNmYxZi4uN2Q3MDUwNzkyZTFlM2FjMTRiZjdjNDBlN2Q5MWIw
ZmZjYzU2Mjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgY29kZSBlbmFibGVzIFdlYktpdCB0cmFjZSBldmVudHMg
dG8gcGFzcyB0aHJvdWdoIG1vcmUgZGF0YSB0byB0aGUKKyAgICAgICAgY2hyb21pdW0gcGxhdGZv
cm0gdHJhY2luZyBBUEkgYW5kIGdlbmVyYWxseSB0byB1c2UgdGhlIGZ1bGwgdHJhY2luZworICAg
ICAgICBBUEkgcHJvdmlkZWQgYnkgY2hyb21pdW0uCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmV2YWx1YXRlKTogUmVwbGFj
ZSBvbGQgdHJhY2luZyBBUEkuCisgICAgICAgICogcGFnZS9Db25zb2xlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6OnRpbWUpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnNvbGU6OnRpbWVFbmQpOiBSZXBsYWNlIG9sZCB0cmFjaW5nIEFQSS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZUlEOjpUcmFjZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6
OlRyYWNlSUQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VTdHJp
bmdXaXRoQ29weTo6VHJhY2VTdHJpbmdXaXRoQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFj
ZUV2ZW50OjpUcmFjZVN0cmluZ1dpdGhDb3B5OjpvcGVyYXRvciBjb25zdCBjaGFyKiApOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6c2V0VHJhY2VWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNl
RXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlOjpUcmFjZUVuZE9uU2NvcGVDbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6flRyYWNlRW5k
T25TY29wZUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25T
Y29wZUNsb3NlOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRy
YWNlRW5kT25TY29wZUNsb3NlOjphZGRFdmVudElmRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6VHJhY2VFbmRPblNj
b3BlQ2xvc2VUaHJlc2hvbGQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VF
bmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6On5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVz
aG9sZDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVu
ZE9uU2NvcGVDbG9zZVRocmVzaG9sZDo6YWRkRXZlbnRJZkVuYWJsZWQpOgorCiAyMDEyLTAxLTMx
ICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBGaXggY29t
cGlsYXRpb24gZXJyb3JzIG9uIGJ1aWxkLXdlYmtpdCAtLWRlYnVnIC0tbm8td29ya2VycyBvbiBt
YWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDAyMGFhYjZiNzliNjgyZGM3MTc3ZjNm
OWFiZjIwMzYyNzczYzVlOTQuLjQ5MjUxN2JhYzk3NGNmMGRkYzE0MjMzMTNmMDJjZDU3ZDA2OTg4
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDEt
MjUgIEpvaG4gQmF0ZXMgIDxqYmF0ZXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbQ2hyb21pdW1d
IEFkZCBjaHJvbWl1bS1zdHlsZSB0cmFjaW5nIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjb2RlIGVuYWJsZXMgV2ViS2l0IHRyYWNl
IGV2ZW50cyB0byBwYXNzIHRocm91Z2ggbW9yZSBkYXRhIHRvIHRoZQorICAgICAgICBjaHJvbWl1
bSBwbGF0Zm9ybSB0cmFjaW5nIEFQSSBhbmQgZ2VuZXJhbGx5IHRvIHVzZSB0aGUgZnVsbCB0cmFj
aW5nCisgICAgICAgIEFQSSBwcm92aWRlZCBieSBjaHJvbWl1bS4KKworICAgICAgICAqIHB1Ymxp
Yy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
S2l0UGxhdGZvcm1TdXBwb3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmFkZFRyYWNlRXZlbnQpOgorICAgICAg
ICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1T
dXBwb3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1TdXBwb3J0OjphZGRUcmFjZUV2ZW50KToKKwogMjAxMi0wMS0zMCAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjEwNjMyNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAK
aW5kZXggNDdkYjE1YzVhMTRkMWQ5YTlmYThkMTFhZDk2NWQ1MzVlMWVhNjdmYS4uNGE3YzZlN2Nj
NDM0YTM4NmE3OGY4YzZiMzYzNjM0NGI5YThjNWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQcm94eS5jcHAKQEAgLTcxLDYgKzcxLDEwIEBACiAjaW5jbHVkZSA8d3RmL1VudXNlZFBh
cmFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShD
SFJPTUlVTSkKKyNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgVjhFeHRlbnNpb25zJiBzdGF0aWNFeHRlbnNpb25zTGlzdCgpCkBA
IC0zMzUsNyArMzM5LDcgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6ZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlLCBOb2RlKiBub2QKICAgICAgICAgLy8gQ29t
cGlsZSB0aGUgc2NyaXB0LgogICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gY29kZSA9IHY4
RXh0ZXJuYWxTdHJpbmcoc291cmNlLnNvdXJjZSgpKTsKICNpZiBQTEFURk9STShDSFJPTUlVTSkK
LSAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4oInY4LmNvbXBpbGUiLCBu
b2RlLCAiIik7CisgICAgICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgidjgiLCAidjguY29tcGlsZSIp
OwogI2VuZGlmCiAgICAgICAgIE93blB0cjx2ODo6U2NyaXB0RGF0YT4gc2NyaXB0RGF0YSA9IHBy
ZWNvbXBpbGVTY3JpcHQoY29kZSwgc291cmNlLmNhY2hlZFNjcmlwdCgpKTsKIApAQCAtMzQzLDE1
ICszNDcsMTEgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6ZXZhbHVhdGUoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYgc291cmNlLCBOb2RlKiBub2QKICAgICAgICAgLy8gMSwgd2hlcmVh
cyB2OCBzdGFydHMgYXQgMC4KICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U2NyaXB0PiBzY3JpcHQg
PSBjb21waWxlU2NyaXB0KGNvZGUsIHNvdXJjZS51cmwoKSwgc291cmNlLnN0YXJ0UG9zaXRpb24o
KSwgc2NyaXB0RGF0YS5nZXQoKSk7CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgICAgIFBs
YXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVuZCgidjguY29tcGlsZSIsIG5vZGUsICIiKTsKLQot
ICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbigidjgucnVuIiwgbm9kZSwg
IiIpOworICAgICAgICBUUkFDRV9FVkVOVF9FTkQwKCJ2OCIsICJ2OC5jb21waWxlIik7CisgICAg
ICAgIFRSQUNFX0VWRU5UMCgidjgiLCAidjgucnVuIik7CiAjZW5kaWYKICAgICAgICAgcmVzdWx0
ID0gcnVuU2NyaXB0KHNjcmlwdCk7CiAgICAgfQotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAg
IFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVuZCgidjgucnVuIiwgbm9kZSwgIiIpOwotI2Vu
ZGlmCiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KGNv
b2tpZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCmluZGV4IDI0ZTEzYTVmZGJhNTMwMWJiNzUy
OTRjZTM0MGI1YTBmZWFkMjQ5ZTYuLjUxNWFiMzRkN2EwNmQ0YWMyMmI1M2Y0Y2Y4ZDlmODRhZjFj
NWY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcApAQCAtMjk5LDE2ICsyOTksMTQgQEAgdm9p
ZCBDb25zb2xlOjp0aW1lKGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcocGFnZSgpLCB0aXRsZSk7CiAjaWYgUExB
VEZPUk0oQ0hST01JVU0pCi0gICAgaWYgKFBsYXRmb3JtU3VwcG9ydDo6aXNUcmFjZUV2ZW50RW5h
YmxlZCgpKQotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRCZWdpbih0aXRsZS51
dGY4KCkuZGF0YSgpLCAwLCAwKTsKKyAgICBUUkFDRV9FVkVOVF9DT1BZX0JFR0lOMCgid2Via2l0
IiwgdGl0bGUudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIH0KIAogdm9pZCBDb25zb2xlOjp0aW1l
RW5kKGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiwgUGFz
c1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjaykKIHsKICNpZiBQTEFURk9STShDSFJP
TUlVTSkKLSAgICBpZiAoUGxhdGZvcm1TdXBwb3J0Ojppc1RyYWNlRXZlbnRFbmFibGVkKCkpCi0g
ICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEVuZCh0aXRsZS51dGY4KCkuZGF0YSgp
LCAwLCAwKTsKKyAgICBUUkFDRV9FVkVOVF9DT1BZX0VORDAoIndlYmtpdCIsIHRpdGxlLnV0Zjgo
KS5kYXRhKCkpOwogI2VuZGlmCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29u
c29sZVRpbWluZyhwYWdlKCksIHRpdGxlLCBjYWxsU3RhY2spOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAppbmRleCAxZjM5NmM1
ZDM2OTE5MGZkOTViMWM5NjkzMDEwZDcxOGZmMjZiZmQ1Li5lNjljYjEyNmQ4ZjRlY2M3ZDRlMjVl
NDk2ZjhkZTU5NjI5YmFjMDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaApAQCAtNDE2LDkgKzQxNiwxOCBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogICAgIC8vIFRyYWNlIEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgc3RhdGljIGJvb2wgaXNUcmFjZUV2ZW50
RW5hYmxlZCgpOwotICAgIHN0YXRpYyB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFyKiBu
YW1lLCB2b2lkKiwgY29uc3QgY2hhciogZXh0cmEpOwotICAgIHN0YXRpYyB2b2lkIHRyYWNlRXZl
bnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIqIGV4dHJhKTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciogZ2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKGNv
bnN0IGNoYXIqIGNhdGVnb3J5TmFtZSk7CisgICAgc3RhdGljIGludCBhZGRUcmFjZUV2ZW50KGNo
YXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGNhdGVnb3J5RW5hYmxlZEZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnVHlwZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJn
VmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5J
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncyk7CiAKICAgICAv
LyBWaXNpdGVkIGxpbmtzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogICAgIHN0YXRpYyBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3Qg
VUNoYXIqIHVybCwgdW5zaWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1RyYWNlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1RyYWNlRXZlbnQuaAppbmRleCA2NTJmNTQwN2NhM2Y1NzUxNGNmYWEzZDZhOGJk
ZDA2ODI1N2I5Njk5Li41YmI2MDBmYjM4NjdkZGE3Njk5ZTI5YTA5OGI5YjY3OTMzYjc4ODNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oCkBAIC0y
Miw1MyArMjIsODQzIEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KKwor
Ly8gVHJhY2UgZXZlbnRzIGFyZSBmb3IgdHJhY2tpbmcgYXBwbGljYXRpb24gcGVyZm9ybWFuY2Ug
YW5kIHJlc291cmNlIHVzYWdlLgorLy8gTWFjcm9zIGFyZSBwcm92aWRlZCB0byB0cmFjazoKKy8v
ICAgIEJlZ2luIGFuZCBlbmQgb2YgZnVuY3Rpb24gY2FsbHMKKy8vICAgIENvdW50ZXJzCisvLwor
Ly8gRXZlbnRzIGFyZSBpc3N1ZWQgYWdhaW5zdCBjYXRlZ29yaWVzLiBXaGVyZWFzIExPRydzCisv
LyBjYXRlZ29yaWVzIGFyZSBzdGF0aWNhbGx5IGRlZmluZWQsIFRSQUNFIGNhdGVnb3JpZXMgYXJl
IGNyZWF0ZWQKKy8vIGltcGxpY2l0bHkgd2l0aCBhIHN0cmluZy4gRm9yIGV4YW1wbGU6CisvLyAg
IFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJNWV9TVUJTWVNURU0iLCAiU29tZUltcG9ydGFudEV2ZW50
IikKKy8vCisvLyBFdmVudHMgY2FuIGJlIElOU1RBTlQsIG9yIGNhbiBiZSBwYWlycyBvZiBCRUdJ
TiBhbmQgRU5EIGluIHRoZSBzYW1lIHNjb3BlOgorLy8gICBUUkFDRV9FVkVOVF9CRUdJTjAoIk1Z
X1NVQlNZU1RFTSIsICJTb21ldGhpbmdDb3N0bHkiKQorLy8gICBkb1NvbWV0aGluZ0Nvc3RseSgp
CisvLyAgIFRSQUNFX0VWRU5UX0VORDAoIk1ZX1NVQlNZU1RFTSIsICJTb21ldGhpbmdDb3N0bHki
KQorLy8gTm90ZTogb3VyIHRvb2xzIGNhbid0IGFsd2F5cyBkZXRlcm1pbmUgdGhlIGNvcnJlY3Qg
QkVHSU4vRU5EIHBhaXJzIHVubGVzcworLy8gdGhlc2UgYXJlIHVzZWQgaW4gdGhlIHNhbWUgc2Nv
cGUuIFVzZSBTVEFSVC9GSU5JU0ggbWFjcm9zIGlmIHlvdSBuZWVkIHRoZW0KKy8vIHRvIGJlIGlu
IHNlcGFyYXRlIHNjb3Blcy4KKy8vCisvLyBBIGNvbW1vbiB1c2UgY2FzZSBpcyB0byB0cmFjZSBl
bnRpcmUgZnVuY3Rpb24gc2NvcGVzLiBUaGlzCisvLyBpc3N1ZXMgYSB0cmFjZSBCRUdJTiBhbmQg
RU5EIGF1dG9tYXRpY2FsbHk6CisvLyAgIHZvaWQgZG9Tb21ldGhpbmdDb3N0bHkoKSB7CisvLyAg
ICAgVFJBQ0VfRVZFTlQwKCJNWV9TVUJTWVNURU0iLCAiZG9Tb21ldGhpbmdDb3N0bHkiKTsKKy8v
ICAgICAuLi4KKy8vICAgfQorLy8KKy8vIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBjYW4gYmUgYXNz
b2NpYXRlZCB3aXRoIGFuIGV2ZW50OgorLy8gICB2b2lkIGRvU29tZXRoaW5nQ29zdGx5MihpbnQg
aG93TXVjaCkgeworLy8gICAgIFRSQUNFX0VWRU5UMSgiTVlfU1VCU1lTVEVNIiwgImRvU29tZXRo
aW5nQ29zdGx5IiwKKy8vICAgICAgICAgImhvd011Y2giLCBob3dNdWNoKTsKKy8vICAgICAuLi4K
Ky8vICAgfQorLy8KKy8vIFRoZSB0cmFjZSBzeXN0ZW0gd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCB0
byB0aGlzIGluZm9ybWF0aW9uIHRoZQorLy8gY3VycmVudCBwcm9jZXNzIGlkLCB0aHJlYWQgaWQs
IGFuZCBhIHRpbWVzdGFtcCBpbiBtaWNyb3NlY29uZHMuCisvLworLy8gVG8gdHJhY2UgYW4gYXN5
bmNocm9ub3VzIHByb2NlZHVyZSBzdWNoIGFzIGFuIElQQyBzZW5kL3JlY2VpdmUsIHVzZSBTVEFS
VCBhbmQKKy8vIEZJTklTSDoKKy8vICAgW3NpbmdsZSB0aHJlYWRlZCBzZW5kZXIgY29kZV0KKy8v
ICAgICBzdGF0aWMgaW50IHNlbmRfY291bnQgPSAwOworLy8gICAgICsrc2VuZF9jb3VudDsKKy8v
ICAgICBUUkFDRV9FVkVOVF9TVEFSVDAoImlwYyIsICJtZXNzYWdlIiwgc2VuZF9jb3VudCk7Cisv
LyAgICAgU2VuZChuZXcgTXlNZXNzYWdlKHNlbmRfY291bnQpKTsKKy8vICAgW3JlY2VpdmUgY29k
ZV0KKy8vICAgICB2b2lkIE9uTXlNZXNzYWdlKHNlbmRfY291bnQpIHsKKy8vICAgICAgIFRSQUNF
X0VWRU5UX0ZJTklTSDAoImlwYyIsICJtZXNzYWdlIiwgc2VuZF9jb3VudCk7CisvLyAgICAgfQor
Ly8gVGhlIHRoaXJkIHBhcmFtZXRlciBpcyBhIHVuaXF1ZSBJRCB0byBtYXRjaCBTVEFSVC9GSU5J
U0ggcGFpcnMuCisvLyBTVEFSVCBhbmQgRklOSVNIIGNhbiBvY2N1ciBvbiBhbnkgdGhyZWFkIG9m
IGFueSB0cmFjZWQgcHJvY2Vzcy4gUG9pbnRlcnMgY2FuCisvLyBiZSB1c2VkIGZvciB0aGUgSUQg
cGFyYW1ldGVyLCBhbmQgdGhleSB3aWxsIGJlIG1hbmdsZWQgaW50ZXJuYWxseSBzbyB0aGF0Cisv
LyB0aGUgc2FtZSBwb2ludGVyIG9uIHR3byBkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpbGwgbm90IG1h
dGNoLiBGb3IgZXhhbXBsZToKKy8vICAgY2xhc3MgTXlUcmFjZWRDbGFzcyB7CisvLyAgICBwdWJs
aWM6CisvLyAgICAgTXlUcmFjZWRDbGFzcygpIHsKKy8vICAgICAgIFRSQUNFX0VWRU5UX1NUQVJU
MCgiY2F0ZWdvcnkiLCAiTXlUcmFjZWRDbGFzcyIsIHRoaXMpOworLy8gICAgIH0KKy8vICAgICB+
TXlUcmFjZWRDbGFzcygpIHsKKy8vICAgICAgIFRSQUNFX0VWRU5UX0ZJTklTSDAoImNhdGVnb3J5
IiwgIk15VHJhY2VkQ2xhc3MiLCB0aGlzKTsKKy8vICAgICB9CisvLyAgIH0KKy8vCisvLyBUcmFj
ZSBldmVudCBhbHNvIHN1cHBvcnRzIGNvdW50ZXJzLCB3aGljaCBpcyBhIHdheSB0byB0cmFjayBh
IHF1YW50aXR5CisvLyBhcyBpdCB2YXJpZXMgb3ZlciB0aW1lLiBDb3VudGVycyBhcmUgY3JlYXRl
ZCB3aXRoIHRoZSBmb2xsb3dpbmcgbWFjcm86CisvLyAgIFRSQUNFX0NPVU5URVIxKCJNWV9TVUJT
WVNURU0iLCAibXlDb3VudGVyIiwgZ19teUNvdW50ZXJWYWx1ZSk7CisvLworLy8gQ291bnRlcnMg
YXJlIHByb2Nlc3Mtc3BlY2lmaWMuIFRoZSBtYWNybyBpdHNlbGYgY2FuIGJlIGlzc3VlZCBmcm9t
IGFueQorLy8gdGhyZWFkLCBob3dldmVyLgorLy8KKy8vIFNvbWV0aW1lcywgeW91IHdhbnQgdG8g
dHJhY2sgdHdvIGNvdW50ZXJzIGF0IG9uY2UuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHR3bworLy8g
Y291bnRlciBtYWNyb3M6CisvLyAgIFRSQUNFX0NPVU5URVIxKCJNWV9TVUJTWVNURU0iLCAibXlD
b3VudGVyMCIsIGdfbXlDb3VudGVyVmFsdWVbMF0pOworLy8gICBUUkFDRV9DT1VOVEVSMSgiTVlf
U1VCU1lTVEVNIiwgIm15Q291bnRlcjEiLCBnX215Q291bnRlclZhbHVlWzFdKTsKKy8vIE9yIHlv
dSBjYW4gZG8gaXQgd2l0aCBhIGNvbWJpbmVkIG1hY3JvOgorLy8gICBUUkFDRV9DT1VOVEVSMigi
TVlfU1VCU1lTVEVNIiwgIm15Q291bnRlciIsCisvLyAgICAgICAiYnl0ZXNQaW5uZWQiLCBnX215
Q291bnRlclZhbHVlWzBdLAorLy8gICAgICAgImJ5dGVzQWxsb2NhdGVkIiwgZ19teUNvdW50ZXJW
YWx1ZVsxXSk7CisvLyBUaGlzIGluZGljYXRlcyB0byB0aGUgdHJhY2luZyBVSSB0aGF0IHRoZXNl
IGNvdW50ZXJzIHNob3VsZCBiZSBkaXNwbGF5ZWQKKy8vIGluIGEgc2luZ2xlIGdyYXBoLCBhcyBh
IHN1bW1lZCBhcmVhIGNoYXJ0LgorLy8KKy8vIFNpbmNlIGNvdW50ZXJzIGFyZSBpbiBhIGdsb2Jh
bCBuYW1lc3BhY2UsIHlvdSBtYXkgd2FudCB0byBkaXNlbWJpZ3VhdGUgd2l0aCBhCisvLyB1bmlx
dWUgSUQsIGJ5IHVzaW5nIHRoZSBUUkFDRV9DT1VOVEVSX0lEKiB2YXJpYXRpb25zLgorLy8KKy8v
IEJ5IGRlZmF1bHQsIHRyYWNlIGNvbGxlY3Rpb24gaXMgY29tcGlsZWQgaW4sIGJ1dCB0dXJuZWQg
b2ZmIGF0IHJ1bnRpbWUuCisvLyBDb2xsZWN0aW5nIHRyYWNlIGRhdGEgaXMgdGhlIHJlc3BvbnNp
YmlsaXR5IG9mIHRoZSBlbWJlZGRpbmcKKy8vIGFwcGxpY2F0aW9uLiBJbiBDaHJvbWUncyBjYXNl
LCBuYXZpZ2F0aW5nIHRvIGFib3V0OnRyYWNpbmcgd2lsbCB0dXJuIG9uCisvLyB0cmFjaW5nIGFu
ZCBkaXNwbGF5IGRhdGEgY29sbGVjdGVkIGFjcm9zcyBhbGwgYWN0aXZlIHByb2Nlc3Nlcy4KKy8v
CisvLworLy8gTWVtb3J5IHNjb3Bpbmcgbm90ZToKKy8vIFRyYWNpbmcgY29waWVzIHRoZSBwb2lu
dGVycywgbm90IHRoZSBzdHJpbmcgY29udGVudCwgb2YgdGhlIHN0cmluZ3MgcGFzc2VkCisvLyBp
biBmb3IgY2F0ZWdvcnksIG5hbWUsIGFuZCBhcmdfbmFtZXMuIFRodXMsIHRoZSBmb2xsb3dpbmcg
Y29kZSB3aWxsCisvLyBjYXVzZSBwcm9ibGVtczoKKy8vICAgICBjaGFyKiBzdHIgPSBzdHJkdXAo
ImltcHBydGFudE5hbWUiKTsKKy8vICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiU1VCU1lTVEVN
Iiwgc3RyKTsgIC8vIEJBRCEKKy8vICAgICBmcmVlKHN0cik7ICAgICAgICAgICAgICAgICAgIC8v
IFRyYWNlIHN5c3RlbSBub3cgaGFzIGRhbmdsaW5nIHBvaW50ZXIKKy8vCisvLyBUbyBhdm9pZCB0
aGlzIGlzc3VlIHdpdGggdGhlIHxuYW1lfCBhbmQgfGFyZ19uYW1lfCBwYXJhbWV0ZXJzLCB1c2Ug
dGhlCisvLyBUUkFDRV9FVkVOVF9DT1BZX1hYWCBvdmVybG9hZHMgb2YgdGhlIG1hY3JvcyBhdCBh
ZGRpdGlvbmFsIHJ1bnRpbWUgb3ZlcmhlYWQuCisvLyBOb3RlczogVGhlIGNhdGVnb3J5IG11c3Qg
YWx3YXlzIGJlIGluIGEgbG9uZy1saXZlZCBjaGFyKiAoaS5lLiBzdGF0aWMgY29uc3QpLgorLy8g
ICAgICAgIFRoZSB8YXJnX3ZhbHVlc3wsIHdoZW4gdXNlZCwgYXJlIGFsd2F5cyBkZWVwIGNvcGll
ZCB3aXRoIHRoZSBfQ09QWQorLy8gICAgICAgIG1hY3Jvcy4KKy8vCisvLyBXaGVuIGFyZSBzdHJp
bmcgYXJndW1lbnQgdmFsdWVzIGNvcGllZDoKKy8vIGNvbnN0IGNoYXIqIGFyZ192YWx1ZXMgYXJl
IG9ubHkgcmVmZXJlbmNlZCBieSBkZWZhdWx0OgorLy8gICAgIFRSQUNFX0VWRU5UMSgiY2F0ZWdv
cnkiLCAibmFtZSIsCisvLyAgICAgICAgICAgICAgICAgICJhcmcxIiwgImxpdGVyYWwgc3RyaW5n
IGlzIG9ubHkgcmVmZXJlbmNlZCIpOworLy8gVXNlIFRSQUNFX1NUUl9DT1BZIHRvIGZvcmNlIGNv
cHlpbmcgb2YgYSBjb25zdCBjaGFyKjoKKy8vICAgICBUUkFDRV9FVkVOVDEoImNhdGVnb3J5Iiwg
Im5hbWUiLAorLy8gICAgICAgICAgICAgICAgICAiYXJnMSIsIFRSQUNFX1NUUl9DT1BZKCJzdHJp
bmcgd2lsbCBiZSBjb3BpZWQiKSk7CisvLyBzdGQ6OnN0cmluZyBhcmdfdmFsdWVzIGFyZSBhbHdh
eXMgY29waWVkOgorLy8gICAgIFRSQUNFX0VWRU5UMSgiY2F0ZWdvcnkiLCAibmFtZSIsCisvLyAg
ICAgICAgICAgICAgICAgICJhcmcxIiwgc3RkOjpzdHJpbmcoInN0cmluZyB3aWxsIGJlIGNvcGll
ZCIpKTsKKy8vCisvLworLy8gVGhyZWFkIFNhZmV0eToKKy8vIEEgdGhyZWFkIHNhZmUgc2luZ2xl
dG9uIGFuZCBtdXRleCBhcmUgdXNlZCBmb3IgdGhyZWFkIHNhZmV0eS4gQ2F0ZWdvcnkKKy8vIGVu
YWJsZWQgZmxhZ3MgYXJlIHVzZWQgdG8gbGltaXQgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCB3aGVu
IHRoZSBzeXN0ZW0KKy8vIGlzIG5vdCBlbmFibGVkLgorLy8KKy8vIFRSQUNFX0VWRU5UIG1hY3Jv
cyBmaXJzdCBjYWNoZSBhIHBvaW50ZXIgdG8gYSBjYXRlZ29yeS4gVGhlIGNhdGVnb3JpZXMgYXJl
CisvLyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhbmQgc2FmZSBhdCBhbGwgdGltZXMsIGV2ZW4gYWZ0
ZXIgZXhpdC4gRmV0Y2hpbmcgYQorLy8gY2F0ZWdvcnkgaXMgcHJvdGVjdGVkIGJ5IHRoZSBUcmFj
ZUxvZzo6bG9ja18uIE11bHRpcGxlIHRocmVhZHMgaW5pdGlhbGl6aW5nCisvLyB0aGUgc3RhdGlj
IHZhcmlhYmxlIGlzIHNhZmUsIGFzIHRoZXkgd2lsbCBiZSBzZXJpYWxpemVkIGJ5IHRoZSBsb2Nr
IGFuZAorLy8gbXVsdGlwbGUgY2FsbHMgd2lsbCByZXR1cm4gdGhlIHNhbWUgcG9pbnRlciB0byB0
aGUgY2F0ZWdvcnkuCisvLworLy8gVGhlbiB0aGUgY2F0ZWdvcnlfZW5hYmxlZCBmbGFnIGlzIGNo
ZWNrZWQuIFRoaXMgaXMgYSB1bnNpZ25lZCBjaGFyLCBhbmQKKy8vIG5vdCBpbnRlbmRlZCB0byBi
ZSBtdWx0aXRocmVhZCBzYWZlLiBJdCBvcHRpbWl6ZXMgYWNjZXNzIHRvIGFkZFRyYWNlRXZlbnQK
Ky8vIHdoaWNoIGlzIHRocmVhZHNhZmUgaW50ZXJuYWxseSB2aWEgVHJhY2VMb2c6OmxvY2tfLiBU
aGUgZW5hYmxlZCBmbGFnIG1heQorLy8gY2F1c2Ugc29tZSB0aHJlYWRzIHRvIGluY29ycmVjdGx5
IGNhbGwgb3Igc2tpcCBjYWxsaW5nIGFkZFRyYWNlRXZlbnQgbmVhcgorLy8gdGhlIHRpbWUgb2Yg
dGhlIHN5c3RlbSBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLiBUaGlzIGlzIGFjY2VwdGFibGUg
YXMKKy8vIHdlIHRvbGVyYXRlIHNvbWUgZGF0YSBsb3NzIHdoaWxlIHRoZSBzeXN0ZW0gaXMgYmVp
bmcgZW5hYmxlZC9kaXNhYmxlZCBhbmQKKy8vIGJlY2F1c2UgYWRkVHJhY2VFdmVudCBpcyB0aHJl
YWRzYWZlIGludGVybmFsbHkgYW5kIGNoZWNrcyB0aGUgZW5hYmxlZCBzdGF0ZQorLy8gYWdhaW4g
dW5kZXIgbG9jay4KKy8vCisvLyBXaXRob3V0IHRoZSB1c2Ugb2YgdGhlc2Ugc3RhdGljIGNhdGVn
b3J5IHBvaW50ZXJzIGFuZCBlbmFibGVkIGZsYWdzIGFsbAorLy8gdHJhY2UgcG9pbnRzIHdvdWxk
IGNhcnJ5IGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgY29zdCBvZiBhcXVpcmluZyBhIGxvY2sK
Ky8vIGFuZCByZXNvbHZpbmcgdGhlIGNhdGVnb3J5LgorCiAjaWZuZGVmIFRyYWNlRXZlbnRfaAog
I2RlZmluZSBUcmFjZUV2ZW50X2gKIAorI2luY2x1ZGUgIkR5bmFtaWNBbm5vdGF0aW9ucy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgotI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5o
PgorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCisvLyBJc3N1ZXMgYmVnaW4gdHJh
Y2UgZXZlbnQgaGVyZSBhbmQgZW5kIHRyYWNlIGV2ZW50IHdoZW4gdGhlIGN1cnJlbnQgc2NvcGUg
ZW5kcy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlQobmFtZSwgaWQsIGV4dHJhKSBUUkFDRV9FVkVOVDIo
IndlYmtpdCIsIG5hbWUsICJpZCIsIGlkLCAiZXh0cmEiLCBleHRyYSkKKworLy8gQnkgZGVmYXVs
dCwgY29uc3QgY2hhciogYXJndW1lbnQgdmFsdWVzIGFyZSBhc3N1bWVkIHRvIGhhdmUgbG9uZy1s
aXZlZCBzY29wZQorLy8gYW5kIHdpbGwgbm90IGJlIGNvcGllZC4gVXNlIHRoaXMgbWFjcm8gdG8g
Zm9yY2UgYSBjb25zdCBjaGFyKiB0byBiZSBjb3BpZWQuCisjZGVmaW5lIFRSQUNFX1NUUl9DT1BZ
KHN0cikgXAorICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlU3RyaW5nV2l0aENvcHkoc3Ry
KQorCisvLyBSZWNvcmRzIGEgcGFpciBvZiBiZWdpbiBhbmQgZW5kIGV2ZW50cyBjYWxsZWQgIm5h
bWUiIGZvciB0aGUgY3VycmVudAorLy8gc2NvcGUsIHdpdGggMCwgMSBvciAyIGFzc29jaWF0ZWQg
YXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdvcnkgaXMgbm90CisvLyBlbmFibGVkLCB0aGVuIHRoaXMg
ZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBh
cHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5
IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5lIFRSQUNFX0VWRU5UMChjYXRlZ29yeSwgbmFt
ZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUp
CisjZGVmaW5lIFRSQUNFX0VWRU5UMShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3Zh
bCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUs
IGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UMihjYXRlZ29yeSwgbmFt
ZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJn
MV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyBhIHNp
bmdsZSBldmVudCBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LCB3aXRoIDAsIDEgb3IgMgorLy8g
YXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QgZW5hYmxlZCwgdGhl
biB0aGlzCisvLyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3Mg
bXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxz
KS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSU5T
VEFOVDAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJB
Q0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0Vf
RVZFTlRfRkxBR19OT05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMShjYXRlZ29yeSwg
bmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBU
UkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNF
X0VWRU5UX0lOU1RBTlQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisg
ICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9B
REQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwg
VFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFy
ZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfSU5TVEFOVDAoY2F0
ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRf
UEhBU0VfSU5TVEFOVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxB
R19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0lOU1RBTlQxKGNhdGVnb3J5LCBuYW1l
LCBhcmcxX25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRS
QUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNF
X0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZF
TlRfQ09QWV9JTlNUQU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAor
ICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
QUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBh
cmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIEJFR0lOIGV2ZW50IGNh
bGxlZCAibmFtZSIgaW1tZWRpYXRlbHksIHdpdGggMCwgMSBvciAyCisvLyBhc3NvY2lhdGVkIGFy
Z3VtZW50cy4gSWYgdGhlIGNhdGVnb3J5IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMKKy8vIGRv
ZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBw
bGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBu
b3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9CRUdJTjAoY2F0ZWdvcnks
IG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0Vf
QkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfQkVHSU4xKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFy
ZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNF
X0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUs
IGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0JFR0lOMihjYXRlZ29y
eSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJf
dmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0JF
R0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFy
ZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfQ09QWV9CRUdJTjAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5B
TF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgY2F0
ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
Q09QWV9CRUdJTjEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAg
ICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcx
X3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9CRUdJTjIoY2F0ZWdvcnksIG5hbWUsIGFy
ZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAg
ICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcxX25hbWUsIGFy
ZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMgYSBz
aW5nbGUgRU5EIGV2ZW50IGZvciAibmFtZSIgaW1tZWRpYXRlbHkuIElmIHRoZSBjYXRlZ29yeQor
Ly8gaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5
IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNz
IG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfRU5EMChjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5h
bWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRU5EMShjYXRl
Z29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfRU5EMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAg
ICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQURE
KFRSQUNFX0VWRU5UX1BIQVNFX0VORCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0Vf
RVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFt
ZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRU5EMChjYXRlZ29yeSwgbmFt
ZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQs
IFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfQ09QWV9FTkQxKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFf
dmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0VO
RCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBhcmcx
X25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0VORDIoY2F0ZWdvcnks
IG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3Zh
bCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQs
IFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgYXJnMV9u
YW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBUaW1l
IHRocmVzaG9sZCBldmVudDoKKy8vIE9ubHkgcmVjb3JkIHRoZSBldmVudCBpZiB0aGUgZHVyYXRp
b24gaXMgZ3JlYXRlciB0aGFuIHRoZSBzcGVjaWZpZWQKKy8vIHRocmVzaG9sZF91cyAodGltZSBp
biBtaWNyb3NlY29uZHMpLgorLy8gUmVjb3JkcyBhIHBhaXIgb2YgYmVnaW4gYW5kIGVuZCBldmVu
dHMgY2FsbGVkICJuYW1lIiBmb3IgdGhlIGN1cnJlbnQKKy8vIHNjb3BlLCB3aXRoIDAsIDEgb3Ig
MiBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhlIGNhdGVnb3J5IGlzIG5vdAorLy8gZW5hYmxl
ZCwgdGhlbiB0aGlzIGRvZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5n
cyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJh
bHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVOVF9J
Rl9MT05HRVJfVEhBTjAodGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4odGhyZXNob2xkX3VzLCBj
YXRlZ29yeSwgbmFtZSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSUZfTE9OR0VSX1RIQU4xKCBcCisg
ICAgdGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAor
ICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4oIFwKKyAg
ICAgICAgdGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkK
KyNkZWZpbmUgVFJBQ0VfRVZFTlRfSUZfTE9OR0VSX1RIQU4yKCBcCisgICAgdGhyZXNob2xkX3Vz
LCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3Zh
bCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4o
IFwKKyAgICAgICAgdGhyZXNob2xkX3VzLCBjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcx
X3ZhbCwgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWUgb2YgYSBj
b3VudGVyIGNhbGxlZCAibmFtZSIgaW1tZWRpYXRlbHkuIFZhbHVlCisvLyBtdXN0IGJlIHJlcHJl
c2VudGFibGUgYXMgYSAzMiBiaXQgaW50ZWdlci4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3Ry
aW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0
ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9DT1VO
VEVSMShjYXRlZ29yeSwgbmFtZSwgdmFsdWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9B
REQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwg
VFJBQ0VfRVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGlu
dD4odmFsdWUpKQorI2RlZmluZSBUUkFDRV9DT1BZX0NPVU5URVIxKGNhdGVnb3J5LCBuYW1lLCB2
YWx1ZSkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9D
T1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFks
IFwKKyAgICAgICAgInZhbHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisKKy8vIFJlY29y
ZHMgdGhlIHZhbHVlcyBvZiBhIG11bHRpLXBhcnRlZCBjb3VudGVyIGNhbGxlZCAibmFtZSIgaW1t
ZWRpYXRlbHkuCisvLyBUaGUgVUkgd2lsbCB0cmVhdCB2YWx1ZTEgYW5kIHZhbHVlMiBhcyBwYXJ0
cyBvZiBhIHdob2xlLCBkaXNwbGF5aW5nIHRoZWlyCisvLyB2YWx1ZXMgYXMgYSBzdGFja2VkLWJh
ciBjaGFydC4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGlj
YXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3Qg
aW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9DT1VOVEVSMihjYXRlZ29yeSwgbmFtZSwg
dmFsdWUxX25hbWUsIHZhbHVlMV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92
YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09V
TlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBc
CisgICAgICAgIHZhbHVlMV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisg
ICAgICAgIHZhbHVlMl9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorI2RlZmlu
ZSBUUkFDRV9DT1BZX0NPVU5URVIyKGNhdGVnb3J5LCBuYW1lLCB2YWx1ZTFfbmFtZSwgdmFsdWUx
X3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNh
dGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIFwKKyAgICAgICAgdmFsdWUxX25h
bWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3ZhbCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUs
IHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkpCisKKy8vIFJlY29yZHMgdGhlIHZhbHVlIG9m
IGEgY291bnRlciBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LiBWYWx1ZQorLy8gbXVzdCBiZSBy
ZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IGludGVnZXIuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1l
IHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAg
IGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKy8vIC0gfGlkfCBpcyB1
c2VkIHRvIGRpc2FtYmlndWF0ZSBjb3VudGVycyB3aXRoIHRoZSBzYW1lIG5hbWUuIEl0IG11c3Qg
ZWl0aGVyCisvLyAgIGJlIGEgcG9pbnRlciBvciBhbiBpbnRlZ2VyIHZhbHVlIHVwIHRvIDY0IGJp
dHMuIElmIGl0J3MgYSBwb2ludGVyLCB0aGUgYml0cworLy8gICB3aWxsIGJlIHhvcmVkIHdpdGgg
YSBoYXNoIG9mIHRoZSBwcm9jZXNzIElEIHNvIHRoYXQgdGhlIHNhbWUgcG9pbnRlciBvbgorLy8g
ICB0d28gZGlmZmVyZW50IHByb2Nlc3NlcyB3aWxsIG5vdCBjb2xsaWRlLgorI2RlZmluZSBUUkFD
RV9DT1VOVEVSX0lEMShjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAg
ICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAg
ICAidmFsdWUiLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9D
T1VOVEVSX0lEMShjYXRlZ29yeSwgbmFtZSwgaWQsIHZhbHVlKSBcCisgICAgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAg
ICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICAi
dmFsdWUiLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKworLy8gUmVjb3JkcyB0aGUgdmFsdWVz
IG9mIGEgbXVsdGktcGFydGVkIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4KKy8v
IFRoZSBVSSB3aWxsIHRyZWF0IHZhbHVlMSBhbmQgdmFsdWUyIGFzIHBhcnRzIG9mIGEgd2hvbGUs
IGRpc3BsYXlpbmcgdGhlaXIKKy8vIHZhbHVlcyBhcyBhIHN0YWNrZWQtYmFyIGNoYXJ0LgorLy8g
LSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGlt
ZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hh
cnMuCisvLyAtIHxpZHwgaXMgdXNlZCB0byBkaXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0aCB0aGUg
c2FtZSBuYW1lLiBJdCBtdXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdl
ciB2YWx1ZSB1cCB0byA2NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAg
d2lsbCBiZSB4b3JlZCB3aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBz
YW1lIHBvaW50ZXIgb24KKy8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29s
bGlkZS4KKyNkZWZpbmUgVFJBQ0VfQ09VTlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1
ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNF
X0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFH
X05PTkUsIFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3Zh
bCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkp
CisjZGVmaW5lIFRSQUNFX0NPUFlfQ09VTlRFUl9JRDIoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1
ZTFfbmFtZSwgdmFsdWUxX3ZhbCwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgdmFsdWUyX3ZhbCkg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNF
X0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFH
X0NPUFksIFwKKyAgICAgICAgdmFsdWUxX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUxX3Zh
bCksIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHN0YXRpY19jYXN0PGludD4odmFsdWUyX3ZhbCkp
CisKKy8vIFJlY29yZHMgYSBzaW5nbGUgU1RBUlQgZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlh
dGVseSwgd2l0aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0
ZWdvcnkgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBj
YXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAo
c3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMu
CisvLyAtIHxpZHwgaXMgdXNlZCB0byBtYXRjaCB0aGUgU1RBUlQgZXZlbnQgd2l0aCB0aGUgRklO
SVNIIGV2ZW50LiBJdCBtdXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdl
ciB2YWx1ZSB1cCB0byA2NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAg
d2lsbCBiZSB4b3JlZCB3aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBz
YW1lIHBvaW50ZXIgb24KKy8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29s
bGlkZS4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfU1RBUlQwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAor
ICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NU
QVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19OT05F
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9TVEFSVDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25h
bWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJB
Q0VfRVZFTlRfUEhBU0VfU1RBUlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFD
RV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VW
RU5UX1NUQVJUMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAg
ICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBu
YW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJn
MV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfU1RB
UlQwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9X
SVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1l
LCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX1NU
QVJUMShjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRF
Uk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAor
ICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAg
ICAgICBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX1NUQVJU
MihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJn
Ml9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lE
KFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwg
VFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFy
ZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMgYSBzaW5nbGUgRklOSVNIIGV2ZW50IGZv
ciAibmFtZSIgaW1tZWRpYXRlbHkuIElmIHRoZSBjYXRlZ29yeQorLy8gaXMgbm90IGVuYWJsZWQs
IHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZJTklTSDAoY2F0
ZWdvcnksIG5hbWUsIGlkKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQo
VFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwg
VFJBQ0VfRVZFTlRfRkxBR19OT05FKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GSU5JU0gxKGNhdGVn
b3J5LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcx
X3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRklOSVNIMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFy
ZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAg
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklT
SCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwg
XAorICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2Rl
ZmluZSBUUkFDRV9FVkVOVF9DT1BZX0ZJTklTSDAoY2F0ZWdvcnksIG5hbWUsIGlkKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNI
LCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZKQor
I2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0ZJTklTSDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcx
X25hbWUsIGFyZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQo
VFJBQ0VfRVZFTlRfUEhBU0VfRklOSVNILCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwg
VFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIGFyZzFfbmFtZSwgYXJnMV92YWwpCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRklOSVNIMihjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFf
bmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwg
XAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAor
ICAgICAgICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8gSW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdHJhY2luZyBB
UEkgZGVmaW5pdGlvbnMuCisKKy8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJsZWQgc3RhdGUg
b2YgdGhlIGdpdmVuIHRyYWNlIGNhdGVnb3J5LiBPbmx5CisvLyBsb25nLWxpdmVkIGxpdGVyYWwg
c3RyaW5ncyBzaG91bGQgYmUgZ2l2ZW4gYXMgdGhlIGNhdGVnb3J5IG5hbWUuIFRoZSByZXR1cm5l
ZAorLy8gcG9pbnRlciBjYW4gYmUgaGVsZCBwZXJtYW5lbnRseSBpbiBhIGxvY2FsIHN0YXRpYyBm
b3IgZXhhbXBsZS4gSWYgdGhlCisvLyB1bnNpZ25lZCBjaGFyIGlzIG5vbi16ZXJvLCB0cmFjaW5n
IGlzIGVuYWJsZWQuIElmIHRyYWNpbmcgaXMgZW5hYmxlZCwKKy8vIFRSQUNFX0VWRU5UX0FQSV9B
RERfVFJBQ0VfRVZFTlQgY2FuIGJlIGNhbGxlZC4gSXQncyBPSyBpZiB0cmFjaW5nIGlzIGRpc2Fi
bGVkCisvLyBiZXR3ZWVuIHRoZSBsb2FkIG9mIHRoZSB0cmFjaW5nIHN0YXRlIGFuZCB0aGUgY2Fs
bCB0bworLy8gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCwgYmVjYXVzZSB0aGlzIGZs
YWcgb25seSBwcm92aWRlcyBhbiBlYXJseSBvdXQKKy8vIGZvciBiZXN0IHBlcmZvcm1hbmNlIHdo
ZW4gdHJhY2luZyBpcyBkaXNhYmxlZC4KKy8vIGNvbnN0IHVuc2lnbmVkIGNoYXIqCisvLyAgICAg
VFJBQ0VfRVZFTlRfQVBJX0dFVF9DQVRFR09SWV9FTkFCTEVEKGNvbnN0IGNoYXIqIGNhdGVnb3J5
X25hbWUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9HRVRfQ0FURUdPUllfRU5BQkxFRCBcCisg
ICAgV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0OjpnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcK
KworLy8gQWRkIGEgdHJhY2UgZXZlbnQgdG8gdGhlIHBsYXRmb3JtIHRyYWNpbmcgc3lzdGVtLiBS
ZXR1cm5zIHRocmVzaG9sZEJlZ2luSWQKKy8vIGZvciB1c2UgaW4gYSBjb3JyZXNwb25kaW5nIGVu
ZCBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UIGNhbGwuCisvLyBpbnQgVFJBQ0VfRVZF
TlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKy8vICAgICAgICAgICAgICAgICAgICBjaGFyIHBoYXNl
LAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5X2Vu
YWJsZWQsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKy8vICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisvLyAgICAgICAgICAgICAgICAg
ICAgaW50IG51bV9hcmdzLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBhcmdf
bmFtZXMsCisvLyAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYXJnX3R5
cGVzLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJn
X3ZhbHVlcywKKy8vICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKy8v
ICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGhyZXNob2xkLAorLy8gICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0FQSV9BRERf
VFJBQ0VfRVZFTlQgXAorICAgIFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVu
dAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiAvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6
IHRyYWNlIGV2ZW50IG1hY3JvcyBjcmVhdGUgdGVtcG9yYXJ5IHZhcmlhYmxlcwogLy8gdG8ga2Vl
cCBpbnN0cnVtZW50YXRpb24gb3ZlcmhlYWQgbG93LiBUaGVzZSBtYWNyb3MgZ2l2ZSBlYWNoIHRl
bXBvcmFyeQogLy8gdmFyaWFibGUgYSB1bmlxdWUgbmFtZSBiYXNlZCBvbiB0aGUgbGluZSBudW1i
ZXIgdG8gcHJldmVudCBuYW1lIGNvbGxpc3Npb25zLgotI2RlZmluZSBUUkFDRV9FVkVOVF9NQUtF
X1VOSVFVRV9JREVOVElGSUVSMyhhLCBiKSBhIyNiCi0jZGVmaW5lIFRSQUNFX0VWRU5UX01BS0Vf
VU5JUVVFX0lERU5USUZJRVIyKGEsIGIpIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJ
RVIzKGEsIGIpCi0jZGVmaW5lIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIobmFt
ZV9wcmVmaXgpIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIyKG5hbWVfcHJlZml4
LCBfX0xJTkVfXykKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0VfRVZFTlRfVUlEMyhhLCBiKSBcCisg
ICAgdHJhY2VfZXZlbnRfdW5pcXVlXyMjYSMjYgorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVO
VF9VSUQyKGEsIGIpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQzKGEsIGIpCisjZGVm
aW5lIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChuYW1lX3ByZWZpeCkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX1VJRDIobmFtZV9wcmVmaXgsIF9fTElORV9fKQorCisvLyBJbXBsZW1lbnRhdGlv
biBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkuCisvLyAt
IFdURl9BTk5PVEFURV9CRU5JR05fUkFDRSwgc2VlIFRocmVhZCBTYWZldHkgYWJvdmUuCisjZGVm
aW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KSBcCisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIqIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRz
dGF0aWMpID0gMDsgXAorICAgIFdURl9BTk5PVEFURV9CRU5JR05fUkFDRSgmSU5URVJOQUxUUkFD
RUVWRU5UVUlEKGNhdHN0YXRpYyksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRy
YWNlX2V2ZW50IGNhdGVnb3J5Iik7IFwKKyAgICBpZiAoIUlOVEVSTkFMVFJBQ0VFVkVOVFVJRChj
YXRzdGF0aWMpKSBcCisgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSA9IFwK
KyAgICAgICAgICBUUkFDRV9FVkVOVF9BUElfR0VUX0NBVEVHT1JZX0VOQUJMRUQoY2F0ZWdvcnkp
OworCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBz
dGF0aWMgY2F0ZWdvcnkgYW5kIGFkZAorLy8gZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJs
ZWQuCisjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNF
X0VWRU5UX0FERChpZ25vcmUpICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREKHBoYXNlLCBjYXRlZ29yeSwgbmFtZSwgZmxhZ3MsIC4uLikgXAorICAgIElO
VEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIGlm
ICgqSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAgICAgV2ViQ29yZTo6
VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCggXAorICAgICAgICAgIHBoYXNlLCBJTlRFUk5BTFRS
QUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgbmFtZSwgXAorICAgICAgICAgIFdlYkNvcmU6OlRyYWNl
RXZlbnQ6Om5vRXZlbnRJZCwgZmxhZ3MsICMjX19WQV9BUkdTX18pOyBcCisgICAgfQorI2VuZGlm
CisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3JlYXRlIHN0
YXRpYyBjYXRlZ29yeSBhbmQgYWRkIGJlZ2luCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMg
ZW5hYmxlZC4gQWxzbyBhZGRzIHRoZSBlbmQgZXZlbnQgd2hlbiB0aGUgc2NvcGUKKy8vIGVuZHMu
CisjaWYgQ09NUElMRVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9TQ09QRUQoaWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5lIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERF9TQ09QRUQoY2F0ZWdvcnksIG5hbWUsIC4uLikgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5KTsgXAorICAgIFdlYkNv
cmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5kT25TY29wZUNsb3NlIFwKKyAgICAgICAgSU5URVJOQUxU
UkFDRUVWRU5UVUlEKHByb2ZpbGVTY29wZSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVO
VFVJRChjYXRzdGF0aWMpKSB7IFwKKyAgICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OmFkZFRyYWNl
RXZlbnQoIFwKKyAgICAgICAgICBUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICAg
IElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgbmFtZSwgV2Vi
Q29yZTo6VHJhY2VFdmVudDo6bm9FdmVudElkLCBcCisgICAgICAgICAgVFJBQ0VfRVZFTlRfRkxB
R19OT05FLCAjI19fVkFfQVJHU19fKTsgXAorICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlEKHBy
b2ZpbGVTY29wZSkuaW5pdGlhbGl6ZSggXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJ
RChjYXRzdGF0aWMpLCBuYW1lKTsgXAorICAgIH0KKyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlv
biBkZXRhaWw6IGludGVybmFsIG1hY3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFk
ZCBiZWdpbgorLy8gZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuIEFsc28gYWRkcyB0
aGUgZW5kIGV2ZW50IHdoZW4gdGhlIHNjb3BlCisvLyBlbmRzLiBJZiB0aGUgZWxhcHNlZCB0aW1l
IGlzIDwgdGhyZXNob2xkIHRpbWUsIHRoZSBiZWdpbi9lbmQgcGFpciBpcyBlcmFzZWQuCisjaWYg
Q09NUElMRVIoTVNWQzdfT1JfTE9XRVIpCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FE
RF9TQ09QRURfSUZfTE9OR0VSX1RIQU4oaWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5l
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9TQ09QRURfSUZfTE9OR0VSX1RIQU4odGhyZXNob2xk
LCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9HRVRfQ0FURUdPUllfSU5GTyhjYXRlZ29yeSk7IFwKKyAgICBXZWJDb3JlOjpUcmFjZUV2
ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCBcCisgICAgICAgIElOVEVSTkFMVFJB
Q0VFVkVOVFVJRChwcm9maWxlU2NvcGUpOyBcCisgICAgaWYgKCpJTlRFUk5BTFRSQUNFRVZFTlRV
SUQoY2F0c3RhdGljKSkgeyBcCisgICAgICBpbnQgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGJlZ2lu
X2V2ZW50X2lkKSA9IFwKKyAgICAgICAgV2ViQ29yZTo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVu
dCggXAorICAgICAgICAgICAgVFJBQ0VfRVZFTlRfUEhBU0VfQkVHSU4sIFwKKyAgICAgICAgICAg
IElOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgICBuYW1lLCBX
ZWJDb3JlOjpUcmFjZUV2ZW50Ojpub0V2ZW50SWQsIFwKKyAgICAgICAgICAgIFRSQUNFX0VWRU5U
X0ZMQUdfTk9ORSwgIyNfX1ZBX0FSR1NfXyk7IFwKKyAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJ
RChwcm9maWxlU2NvcGUpLmluaXRpYWxpemUoIFwKKyAgICAgICAgICBJTlRFUk5BTFRSQUNFRVZF
TlRVSUQoY2F0c3RhdGljKSwgbmFtZSwgXAorICAgICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJ
RChiZWdpbl9ldmVudF9pZCksIHRocmVzaG9sZCk7IFwKKyAgICB9CisjZW5kaWYKKworLy8gSW1w
bGVtZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVn
b3J5IGFuZCBhZGQKKy8vIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFibGVkLgorI2lmIENP
TVBJTEVSKE1TVkM3X09SX0xPV0VSKQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERf
V0lUSF9JRChpZ25vcmUpICgodm9pZCkwKQorI2Vsc2UKKyNkZWZpbmUgSU5URVJOQUxfVFJBQ0Vf
RVZFTlRfQUREX1dJVEhfSUQocGhhc2UsIGNhdGVnb3J5LCBuYW1lLCBpZCwgZmxhZ3MsIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpOyBcCisgICAgaWYgKCpJ
TlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkgeyBcCisgICAgICB1bnNpZ25lZCBjaGFy
IHRyYWNlRXZlbnRGbGFncyA9IGZsYWdzIHwgVFJBQ0VfRVZFTlRfRkxBR19IQVNfSUQ7IFwKKyAg
ICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlSUQgdHJhY2VFdmVudFRyYWNlSUQoIFwKKyAg
ICAgICAgICBpZCwgJnRyYWNlRXZlbnRGbGFncyk7IFwKKyAgICAgIFdlYkNvcmU6OlRyYWNlRXZl
bnQ6OmFkZFRyYWNlRXZlbnQoIFwKKyAgICAgICAgICBwaGFzZSwgSU5URVJOQUxUUkFDRUVWRU5U
VUlEKGNhdHN0YXRpYyksIFwKKyAgICAgICAgICBuYW1lLCB0cmFjZUV2ZW50VHJhY2VJRC5kYXRh
KCksIHRyYWNlRXZlbnRGbGFncywgXAorICAgICAgICAgICMjX19WQV9BUkdTX18pOyBcCisgICAg
fQorI2VuZGlmCisKKy8vIE5vdGVzIHJlZ2FyZGluZyB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25z
OgorLy8gTmV3IHZhbHVlcyBjYW4gYmUgYWRkZWQgYW5kIHByb3BhZ2F0ZWQgdG8gdGhpcmQgcGFy
dHkgbGlicmFyaWVzLCBidXQgZXhpc3RpbmcKKy8vIGRlZmluaXRpb25zIG11c3QgbmV2ZXIgYmUg
Y2hhbmdlZCwgYmVjYXVzZSB0aGlyZCBwYXJ0eSBsaWJyYXJpZXMgbWF5IHVzZSBvbGQKKy8vIGRl
ZmluaXRpb25zLgorCisvLyBQaGFzZSBpbmRpY2F0ZXMgdGhlIG5hdHVyZSBvZiBhbiBldmVudCBl
bnRyeS4gRS5nLiBwYXJ0IG9mIGEgYmVnaW4vZW5kIHBhaXIuCisjZGVmaW5lIFRSQUNFX0VWRU5U
X1BIQVNFX0JFR0lOICAgICgnQicpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0VORCAgICAg
ICgnRScpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQgICgnSScpCisjZGVmaW5l
IFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJUICAgICgnUycpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BI
QVNFX0ZJTklTSCAgICgnRicpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX01FVEFEQVRBICgn
TScpCisjZGVmaW5lIFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIgICgnQycpCisKKy8vIEZsYWdz
IGZvciBjaGFuZ2luZyB0aGUgYmVoYXZpb3Igb2YgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9F
VkVOVC4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRfRkxBR19OT05FICAgICAgICAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oMCkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSAgICAgICAg
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEgPDwgMCkpCisjZGVmaW5lIFRSQUNFX0VWRU5U
X0ZMQUdfSEFTX0lEICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEgPDwgMSkpCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0ZMQUdfTUFOR0xFX0lEICAgKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KDEgPDwgMikpCisKKy8vIFR5cGUgdmFsdWVzIGZvciBpZGVudGlmeWluZyB0eXBlcyBp
biB0aGUgVHJhY2VWYWx1ZSB1bmlvbi4KKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9CT09MICAg
ICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEpKQorI2RlZmluZSBUUkFDRV9WQUxV
RV9UWVBFX1VJTlQgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMikpCisjZGVm
aW5lIFRSQUNFX1ZBTFVFX1RZUEVfSU5UICAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPigzKSkKKyNkZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9ET1VCTEUgICAgICAgKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KDQpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX1BPSU5URVIg
ICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oNSkpCisjZGVmaW5lIFRSQUNFX1ZBTFVF
X1RZUEVfU1RSSU5HICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig2KSkKKyNkZWZp
bmUgVFJBQ0VfVkFMVUVfVFlQRV9DT1BZX1NUUklORyAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KDcpKQogCi0vLyBJc3N1ZXMgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4gYW5k
IHRyYWNlRXZlbnRFbmQgY2FsbHMgZm9yIHRoZSBlbmNsb3Npbmcgc2NvcGUKLSNkZWZpbmUgVFJB
Q0VfRVZFTlQobmFtZSwgaWQsIGV4dHJhKSBXZWJDb3JlOjppbnRlcm5hbDo6U2NvcGVUcmFjZXIg
VFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUihfX3RyYWNlRXZlbnRTY29wZSkobmFt
ZSwgaWQsIGV4dHJhKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgaW50ZXJu
YWwgeworbmFtZXNwYWNlIFRyYWNlRXZlbnQgeworCisvLyBTcGVjaWZ5IHRoZXNlIHZhbHVlcyB3
aGVuIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IG9mIGFkZFRyYWNlRXZlbnQgaXMgbm90Cisv
LyB1c2VkLgorY29uc3QgaW50IHplcm9OdW1BcmdzID0gMDsKK2NvbnN0IGludCBub1RocmVzaG9s
ZEJlZ2luSWQgPSAtMTsKK2NvbnN0IGxvbmcgbG9uZyBub1RocmVzaG9sZFZhbHVlID0gMDsKK2Nv
bnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBub0V2ZW50SWQgPSAwOwogCi0vLyBVc2VkIGJ5IFRSQUNF
X0VWRU5UIG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5LgotY2xhc3MgU2NvcGVUcmFjZXIgewor
Ly8gVHJhY2VJRCBlbmNhcHN1bGF0ZXMgYW4gSUQgdGhhdCBjYW4gZWl0aGVyIGJlIGFuIGludGVn
ZXIgb3IgcG9pbnRlci4gUG9pbnRlcnMKKy8vIGFyZSBtYW5nbGVkIHdpdGggdGhlIFByb2Nlc3Mg
SUQgc28gdGhhdCB0aGV5IGFyZSB1bmxpa2VseSB0byBjb2xsaWRlIHdoZW4gdGhlCisvLyBzYW1l
IHBvaW50ZXIgaXMgdXNlZCBvbiBkaWZmZXJlbnQgcHJvY2Vzc2VzLgorY2xhc3MgVHJhY2VJRCB7
CiBwdWJsaWM6Ci0gICAgU2NvcGVUcmFjZXIoY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0
IGNoYXIqIGV4dHJhKTsKLSAgICB+U2NvcGVUcmFjZXIoKTsKKyAgICBleHBsaWNpdCBUcmFjZUlE
KGNvbnN0IHZvaWQqIGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihyZWludGVycHJldF9jYXN0PHVuc2lnbmVk
IGxvbmc+KGlkKSkpCisgICAgeworICAgICAgICAqZmxhZ3MgfD0gVFJBQ0VfRVZFTlRfRkxBR19N
QU5HTEVfSUQ7CisgICAgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQodW5zaWduZWQgbG9uZyBsb25n
IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgKHZvaWQpZmxhZ3M7IH0K
KyAgICBleHBsaWNpdCBUcmFjZUlEKHVuc2lnbmVkIGxvbmcgaWQsIHVuc2lnbmVkIGNoYXIqIGZs
YWdzKSA6IG1fZGF0YShpZCkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQo
dW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgKHZv
aWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHVuc2lnbmVkIHNob3J0IGlkLCB1bnNp
Z25lZCBjaGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBs
aWNpdCBUcmFjZUlEKHVuc2lnbmVkIGNoYXIgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6IG1f
ZGF0YShpZCkgeyAodm9pZClmbGFnczsgfQorICAgIGV4cGxpY2l0IFRyYWNlSUQobG9uZyBsb25n
IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBU
cmFjZUlEKGxvbmcgaWQsIHVuc2lnbmVkIGNoYXIqIGZsYWdzKSA6CisgICAgICAgIG1fZGF0YShz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGlkKSkgeyAodm9pZClmbGFnczsgfQorICAg
IGV4cGxpY2l0IFRyYWNlSUQoaW50IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAg
ICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsgKHZvaWQpZmxh
Z3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHNob3J0IGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFn
cykgOgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkp
IHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHNpZ25lZCBjaGFyIGlkLCB1
bnNpZ25lZCBjaGFyKiBmbGFncykgOgorICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihpZCkpIHsgKHZvaWQpZmxhZ3M7IH0KKworICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKK3ByaXZhdGU6CisgICAgdW5z
aWduZWQgbG9uZyBsb25nIG1fZGF0YTsKK307CisKKy8vIFNpbXBsZSB1bmlvbiB0byBzdG9yZSB2
YXJpb3VzIHR5cGVzIGFzIHVuc2lnbmVkIGxvbmcgbG9uZy4KK3VuaW9uIFRyYWNlVmFsdWVVbmlv
biB7CisgICAgYm9vbCBtX2Jvb2w7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fdWludDsKKyAg
ICBsb25nIGxvbmcgbV9pbnQ7CisgICAgZG91YmxlIG1fZG91YmxlOworICAgIGNvbnN0IHZvaWQq
IG1fcG9pbnRlcjsKKyAgICBjb25zdCBjaGFyKiBtX3N0cmluZzsKK307CiAKKy8vIFNpbXBsZSBj
b250YWluZXIgZm9yIGNvbnN0IGNoYXIqIHRoYXQgc2hvdWxkIGJlIGNvcGllZCBpbnN0ZWFkIG9m
IHJldGFpbmVkLgorY2xhc3MgVHJhY2VTdHJpbmdXaXRoQ29weSB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgVHJhY2VTdHJpbmdXaXRoQ29weShjb25zdCBjaGFyKiBzdHIpIDogbV9zdHIoc3RyKSB7
IH0KKyAgICBvcGVyYXRvciBjb25zdCBjaGFyKiAoKSBjb25zdCB7IHJldHVybiBtX3N0cjsgfQog
cHJpdmF0ZToKLSAgICBjb25zdCBjaGFyKiBtX25hbWU7Ci0gICAgdm9pZCogbV9pZDsKLSAgICBP
d25BcnJheVB0cjxjaGFyPiBtX2V4dHJhOworICAgIGNvbnN0IGNoYXIqIG1fc3RyOwogfTsKIAot
aW5saW5lIFNjb3BlVHJhY2VyOjpTY29wZVRyYWNlcihjb25zdCBjaGFyKiBuYW1lLCB2b2lkKiBp
ZCwgY29uc3QgY2hhciogZXh0cmEpCi0gICAgOiBtX25hbWUobmFtZSkKLSAgICAsIG1faWQoaWQp
Ci17Ci0gICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJh
KTsgXAotICAgIGlmIChleHRyYSAmJiBQbGF0Zm9ybVN1cHBvcnQ6OmlzVHJhY2VFdmVudEVuYWJs
ZWQoKSkKLSAgICAgICAgbV9leHRyYSA9IGFkb3B0QXJyYXlQdHIoc3RyZHVwKGV4dHJhKSk7Cisv
LyBEZWZpbmUgc2V0VHJhY2VWYWx1ZSBmb3IgZWFjaCBhbGxvd2VkIHR5cGUuIEl0IHN0b3JlcyB0
aGUgdHlwZSBhbmQKKy8vIHZhbHVlIGluIHRoZSByZXR1cm4gYXJndW1lbnRzLiBUaGlzIGFsbG93
cyB0aGlzIEFQSSB0byBhdm9pZCBkZWNsYXJpbmcgYW55CisvLyBzdHJ1Y3R1cmVzIHNvIHRoYXQg
aXQgaXMgcG9ydGFibGUgdG8gdGhpcmRfcGFydHkgbGlicmFyaWVzLgorI2RlZmluZSBJTlRFUk5B
TF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShhY3R1YWxfdHlwZSwgXAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbl9tZW1iZXIsIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZV9pZCkgXAorICAgIHN0YXRpYyBp
bmxpbmUgdm9pZCBzZXRUcmFjZVZhbHVlKGFjdHVhbF90eXBlIGFyZywgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHR5cGUsIFwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcqIHZhbHVlKSB7
IFwKKyAgICAgICAgVHJhY2VWYWx1ZVVuaW9uIHR5cGVWYWx1ZTsgXAorICAgICAgICB0eXBlVmFs
dWUudW5pb25fbWVtYmVyID0gYXJnOyBcCisgICAgICAgICp0eXBlID0gdmFsdWVfdHlwZV9pZDsg
XAorICAgICAgICAqdmFsdWUgPSB0eXBlVmFsdWUubV91aW50OyBcCisgICAgfQorLy8gU2ltcGxl
ciBmb3JtIGZvciBpbnQgdHlwZXMgdGhhdCBjYW4gYmUgc2FmZWx5IGNhc3RlZC4KKyNkZWZpbmUg
SU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKGFjdHVhbF90eXBlLCBcCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlX2lkKSBc
CisgICAgc3RhdGljIGlubGluZSB2b2lkIHNldFRyYWNlVmFsdWUoYWN0dWFsX3R5cGUgYXJnLCBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciogdHlw
ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyogdmFsdWUpIHsgXAorICAgICAgICAqdHlwZSA9IHZhbHVlX3R5cGVfaWQ7IFwKKyAgICAg
ICAgKnZhbHVlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihhcmcpOyBcCisgICAg
fQorCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQodW5zaWduZWQgbG9uZyBs
b25nLCBUUkFDRV9WQUxVRV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9W
QUxVRV9JTlQodW5zaWduZWQgaW50LCBUUkFDRV9WQUxVRV9UWVBFX1VJTlQpCitJTlRFUk5BTF9E
RUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQodW5zaWduZWQgc2hvcnQsIFRSQUNFX1ZBTFVFX1RZ
UEVfVUlOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVCh1bnNpZ25lZCBj
aGFyLCBUUkFDRV9WQUxVRV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9W
QUxVRV9JTlQobG9uZyBsb25nLCBUUkFDRV9WQUxVRV9UWVBFX0lOVCkKK0lOVEVSTkFMX0RFQ0xB
UkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChpbnQsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJO
QUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHNob3J0LCBUUkFDRV9WQUxVRV9UWVBFX0lO
VCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChzaWduZWQgY2hhciwgVFJB
Q0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShib29s
LCBtX2Jvb2wsIFRSQUNFX1ZBTFVFX1RZUEVfQk9PTCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RS
QUNFX1ZBTFVFKGRvdWJsZSwgbV9kb3VibGUsIFRSQUNFX1ZBTFVFX1RZUEVfRE9VQkxFKQorSU5U
RVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoY29uc3Qgdm9pZCosIG1fcG9pbnRlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSQUNFX1ZBTFVFX1RZUEVfUE9JTlRFUikK
K0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0IGNoYXIqLCBtX3N0cmluZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSQUNFX1ZBTFVFX1RZUEVfU1RSSU5H
KQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoY29uc3QgVHJhY2VTdHJpbmdXaXRo
Q29weSYsIG1fc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJBQ0Vf
VkFMVUVfVFlQRV9DT1BZX1NUUklORykKKworI3VuZGVmIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RS
QUNFX1ZBTFVFCisjdW5kZWYgSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UCisK
Ky8vIFdURjo6U3RyaW5nIHZlcnNpb24gb2Ygc2V0VHJhY2VWYWx1ZSBzbyB0aGF0IHRyYWNlIGFy
Z3VtZW50cyBjYW4gYmUgc3RyaW5ncy4KK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRUcmFjZVZhbHVl
KGNvbnN0IFdURjo6Q1N0cmluZyYgYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciogdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyogdmFsdWUpIHsKKyAgICBUcmFjZVZhbHVlVW5pb24gdHlwZVZh
bHVlOworICAgIHR5cGVWYWx1ZS5tX3N0cmluZyA9IGFyZy5kYXRhKCk7CisgICAgKnR5cGUgPSBU
UkFDRV9WQUxVRV9UWVBFX0NPUFlfU1RSSU5HOworICAgICp2YWx1ZSA9IHR5cGVWYWx1ZS5tX3Vp
bnQ7CiB9CiAKLWlubGluZSBTY29wZVRyYWNlcjo6flNjb3BlVHJhY2VyKCkKLXsKLSAgICBQbGF0
Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQobV9uYW1lLCBtX2lkLCBtX2V4dHJhLmdldCgpKTsK
Ky8vIFRoZXNlIGFkZFRyYWNlRXZlbnQgdGVtcGxhdGUgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGhl
cmUgaW5zdGVhZCBvZiBpbiB0aGUKKy8vIG1hY3JvLCBiZWNhdXNlIHRoZSBhcmcgdmFsdWVzIGNv
dWxkIGJlIHRlbXBvcmFyeSBzdHJpbmcgb2JqZWN0cy4gSW4gb3JkZXIgdG8KKy8vIHN0b3JlIHBv
aW50ZXJzIHRvIHRoZSBpbnRlcm5hbCBjX3N0ciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSB0cmFj
aW5nIEFQSSwgdGhlCisvLyBhcmcgdmFsdWVzIG11c3QgbGl2ZSB0aHJvdWdob3V0IHRoZXNlIHBy
b2NlZHVyZXMuCisKK3N0YXRpYyBpbmxpbmUgaW50IGFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0
ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxv
bmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxh
Z3MpIHsKKyAgICByZXR1cm4gVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAg
ICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwgbmFtZSwgaWQsCisgICAgICAgIHplcm9OdW1Bcmdz
LCAwLCAwLCAwLAorICAgICAgICBub1RocmVzaG9sZEJlZ2luSWQsIG5vVGhyZXNob2xkVmFsdWUs
IGZsYWdzKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgQVJHMV9UWVBFPgorc3RhdGljIGlubGluZSBp
bnQgYWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogYXJnMU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEFSRzFfVFlQRSYgYXJnMVZhbCkgeworICAgIGNvbnN0IGludCBudW1Bcmdz
ID0gMTsKKyAgICB1bnNpZ25lZCBjaGFyIGFyZ1R5cGVzWzFdOworICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBhcmdWYWx1ZXNbMV07CisgICAgc2V0VHJhY2VWYWx1ZShhcmcxVmFsLCAmYXJnVHlwZXNb
MF0sICZhcmdWYWx1ZXNbMF0pOworICAgIHJldHVybiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNF
X0VWRU5UKAorICAgICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwKKyAgICAg
ICAgbnVtQXJncywgJmFyZzFOYW1lLCBhcmdUeXBlcywgYXJnVmFsdWVzLAorICAgICAgICBub1Ro
cmVzaG9sZEJlZ2luSWQsIG5vVGhyZXNob2xkVmFsdWUsIGZsYWdzKTsKIH0KIAotfSAvLyBuYW1l
c3BhY2UgaW50ZXJuYWwKK3RlbXBsYXRlPGNsYXNzIEFSRzFfVFlQRSwgY2xhc3MgQVJHMl9UWVBF
Pgorc3RhdGljIGlubGluZSBpbnQgYWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJs
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYXJnMU5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFSRzFfVFlQRSYgYXJnMVZhbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYXJnMk5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFSRzJfVFlQRSYgYXJnMlZhbCkgeworICAg
IGNvbnN0IGludCBudW1BcmdzID0gMjsKKyAgICBjb25zdCBjaGFyKiBhcmdOYW1lc1syXSA9IHsg
YXJnMU5hbWUsIGFyZzJOYW1lIH07CisgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1syXTsKKyAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgYXJnVmFsdWVzWzJdOworICAgIHNldFRyYWNlVmFsdWUoYXJn
MVZhbCwgJmFyZ1R5cGVzWzBdLCAmYXJnVmFsdWVzWzBdKTsKKyAgICBzZXRUcmFjZVZhbHVlKGFy
ZzJWYWwsICZhcmdUeXBlc1sxXSwgJmFyZ1ZhbHVlc1sxXSk7CisgICAgcmV0dXJuIFRSQUNFX0VW
RU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQs
IG5hbWUsIGlkLAorICAgICAgICBudW1BcmdzLCBhcmdOYW1lcywgYXJnVHlwZXMsIGFyZ1ZhbHVl
cywKKyAgICAgICAgbm9UaHJlc2hvbGRCZWdpbklkLCBub1RocmVzaG9sZFZhbHVlLCBmbGFncyk7
Cit9CisKKy8vIFVzZWQgYnkgVFJBQ0VfRVZFTlR4IG1hY3JvLiBEbyBub3QgdXNlIGRpcmVjdGx5
LgorY2xhc3MgVHJhY2VFbmRPblNjb3BlQ2xvc2UgeworcHVibGljOgorICAgIC8vIE5vdGU6IG1l
bWJlcnMgb2YgbV9kYXRhIGludGVudGlvbmFsbHkgbGVmdCB1bmluaXRpYWxpemVkLiBTZWUgaW5p
dGlhbGl6ZS4KKyAgICBUcmFjZUVuZE9uU2NvcGVDbG9zZSgpIDogbV9wZGF0YSgwKSB7IH0KKyAg
ICB+VHJhY2VFbmRPblNjb3BlQ2xvc2UoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGRhdGEpCisg
ICAgICAgICAgICBhZGRFdmVudElmRW5hYmxlZCgpOworICAgIH0KKworICAgIHZvaWQgaW5pdGlh
bGl6ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIG5hbWUpCisgICAgeworICAgICAgICBtX2RhdGEuY2F0ZWdvcnlF
bmFibGVkID0gY2F0ZWdvcnlFbmFibGVkOworICAgICAgICBtX2RhdGEubmFtZSA9IG5hbWU7Cisg
ICAgICAgIG1fcGRhdGEgPSAmbV9kYXRhOworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBBZGQg
dGhlIGVuZCBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMgc3RpbGwgZW5hYmxlZC4KKyAgICB2b2lk
IGFkZEV2ZW50SWZFbmFibGVkKCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkgY2FsbGVkIHdoZW4g
bV9wZGF0YSBpcyBub24tbnVsbC4KKyAgICAgICAgaWYgKCptX3BkYXRhLT5jYXRlZ29yeUVuYWJs
ZWQpIHsKKyAgICAgICAgICAgIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAg
ICAgICAgICAgICAgVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELAorICAgICAgICAgICAgICAgIG1fcGRh
dGEtPmNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICBtX3BkYXRhLT5uYW1lLCBub0V2
ZW50SWQsCisgICAgICAgICAgICAgICAgemVyb051bUFyZ3MsIDAsIDAsIDAsCisgICAgICAgICAg
ICAgICAgbm9UaHJlc2hvbGRCZWdpbklkLCBub1RocmVzaG9sZFZhbHVlLCBUUkFDRV9FVkVOVF9G
TEFHX05PTkUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhpcyBEYXRhIHN0cnVjdCB3
b3JrYXJvdW5kIGlzIHRvIGF2b2lkIGluaXRpYWxpemluZyBhbGwgdGhlIG1lbWJlcnMKKyAgICAv
LyBpbiBEYXRhIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgdGhpcyBvYmplY3QsIHNpbmNlIHRoaXMg
b2JqZWN0IGlzIGFsd2F5cworICAgIC8vIGNvbnN0cnVjdGVkLCBldmVuIHdoZW4gdHJhY2luZyBp
cyBkaXNhYmxlZC4gSWYgdGhlIG1lbWJlcnMgb2YgRGF0YSB3ZXJlCisgICAgLy8gbWVtYmVycyBv
ZiB0aGlzIGNsYXNzIGluc3RlYWQsIGNvbXBpbGVyIHdhcm5pbmdzIG9jY3VyIGFib3V0IHBvdGVu
dGlhbAorICAgIC8vIHVuaW5pdGlhbGl6ZWQgYWNjZXNzZXMuCisgICAgc3RydWN0IERhdGEgewor
ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIGNv
bnN0IGNoYXIqIG5hbWU7CisgICAgfTsKKyAgICBEYXRhKiBtX3BkYXRhOworICAgIERhdGEgbV9k
YXRhOworfTsKKworLy8gVXNlZCBieSBUUkFDRV9FVkVOVHggbWFjcm8uIERvIG5vdCB1c2UgZGly
ZWN0bHkuCitjbGFzcyBUcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCB7CitwdWJsaWM6Cisg
ICAgLy8gTm90ZTogbWVtYmVycyBvZiBtX2RhdGEgaW50ZW50aW9uYWxseSBsZWZ0IHVuaW5pdGlh
bGl6ZWQuIFNlZSBpbml0aWFsaXplLgorICAgIFRyYWNlRW5kT25TY29wZUNsb3NlVGhyZXNob2xk
KCkgOiBtX3BkYXRhKDApIHsgfQorICAgIH5UcmFjZUVuZE9uU2NvcGVDbG9zZVRocmVzaG9sZCgp
CisgICAgeworICAgICAgICBpZiAobV9wZGF0YSkKKyAgICAgICAgICAgIGFkZEV2ZW50SWZFbmFi
bGVkKCk7CisgICAgfQorCisgICAgLy8gQ2FsbGVkIGJ5IG1hY3JvcyBvbmx5IHdoZW4gdHJhY2lu
ZyBpcyBlbmFibGVkIGF0IHRoZSBwb2ludCB3aGVuIHRoZSBiZWdpbgorICAgIC8vIGV2ZW50IGlz
IGFkZGVkLgorICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29y
eUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgIGludCB0aHJlc2hvbGRCZWdpbklELAorICAgICAgICAgICAgICAgICAgICBs
b25nIGxvbmcgdGhyZXNob2xkKQorICAgIHsKKyAgICAgICAgbV9kYXRhLmNhdGVnb3J5RW5hYmxl
ZCA9IGNhdGVnb3J5RW5hYmxlZDsKKyAgICAgICAgbV9kYXRhLm5hbWUgPSBuYW1lOworICAgICAg
ICBtX2RhdGEudGhyZXNob2xkQmVnaW5JRCA9IHRocmVzaG9sZEJlZ2luSUQ7CisgICAgICAgIG1f
ZGF0YS50aHJlc2hvbGQgPSB0aHJlc2hvbGQ7CisgICAgICAgIG1fcGRhdGEgPSAmbV9kYXRhOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBBZGQgdGhlIGVuZCBldmVudCBpZiB0aGUgY2F0ZWdv
cnkgaXMgc3RpbGwgZW5hYmxlZC4KKyAgICB2b2lkIGFkZEV2ZW50SWZFbmFibGVkKCkKKyAgICB7
CisgICAgICAgIC8vIE9ubHkgY2FsbGVkIHdoZW4gbV9wZGF0YSBpcyBub24tbnVsbC4KKyAgICAg
ICAgaWYgKCptX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQpIHsKKyAgICAgICAgICAgIFRSQUNFX0VW
RU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisgICAgICAgICAgICAgICAgVFJBQ0VfRVZFTlRfUEhB
U0VfRU5ELAorICAgICAgICAgICAgICAgIG1fcGRhdGEtPmNhdGVnb3J5RW5hYmxlZCwKKyAgICAg
ICAgICAgICAgICBtX3BkYXRhLT5uYW1lLCBub0V2ZW50SWQsCisgICAgICAgICAgICAgICAgemVy
b051bUFyZ3MsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+dGhyZXNob2xkQmVn
aW5JRCwgbV9wZGF0YS0+dGhyZXNob2xkLAorICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UX0ZM
QUdfTk9ORSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGlzIERhdGEgc3RydWN0IHdv
cmthcm91bmQgaXMgdG8gYXZvaWQgaW5pdGlhbGl6aW5nIGFsbCB0aGUgbWVtYmVycworICAgIC8v
IGluIERhdGEgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGlzIG9iamVjdCwgc2luY2UgdGhpcyBv
YmplY3QgaXMgYWx3YXlzCisgICAgLy8gY29uc3RydWN0ZWQsIGV2ZW4gd2hlbiB0cmFjaW5nIGlz
IGRpc2FibGVkLiBJZiB0aGUgbWVtYmVycyBvZiBEYXRhIHdlcmUKKyAgICAvLyBtZW1iZXJzIG9m
IHRoaXMgY2xhc3MgaW5zdGVhZCwgY29tcGlsZXIgd2FybmluZ3Mgb2NjdXIgYWJvdXQgcG90ZW50
aWFsCisgICAgLy8gdW5pbml0aWFsaXplZCBhY2Nlc3Nlcy4KKyAgICBzdHJ1Y3QgRGF0YSB7Cisg
ICAgICAgIGxvbmcgbG9uZyB0aHJlc2hvbGQ7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGNhdGVnb3J5RW5hYmxlZDsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICAgICAgaW50
IHRocmVzaG9sZEJlZ2luSUQ7CisgICAgfTsKKyAgICBEYXRhKiBtX3BkYXRhOworICAgIERhdGEg
bV9kYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgVHJhY2VFdmVudAogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKaW5kZXggNmMwZTc0ZjEyOTcy
YzdmMzc0NjM0MGFmZjY5YjMxMmRjMjVjYTFlOS4uMzQyZTdjMjhkM2RjYjUzNjgzMjEwOGRlODY5
NjYwMjc1YTZhMjE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKQEAgLTIzNywxMSAr
MjM3LDgxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50U3RhdHNDb3VudGVy
KGNvbnN0IGNoYXIqIG5hbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRTdGF0c0Nv
dW50ZXIoY29uc3QgY2hhciogbmFtZSkgeyB9CiAKLSAgICAvLyBBbiBldmVudCBpcyBpZGVudGlm
aWVkIGJ5IHRoZSBwYWlyIChuYW1lLCBpZCkuIFRoZSBleHRyYSBwYXJhbWV0ZXIKLSAgICAvLyBz
cGVjaWZpZXMgYWRkaXRpb25hbCBkYXRhIHRvIGxvZyB3aXRoIHRoZSBldmVudC4KLSAgICB2aXJ0
dWFsIGJvb2wgaXNUcmFjZUV2ZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgdHJhY2VFdmVudEJlZ2luKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlk
LCBjb25zdCBjaGFyKiBleHRyYSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRFbmQo
Y29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKSB7IH0KKyAgICAv
LyBUcmFjaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworICAgIC8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJsZWQgc3Rh
dGUgb2YgdGhlIGdpdmVuIHRyYWNlIGNhdGVnb3J5LiBUaGUKKyAgICAvLyBlbWJlZGRlciBjYW4g
ZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBlbmFibGVkIHN0YXRlIGFzIHRyYWNlIGV2ZW50CisgICAg
Ly8gcmVjb3JkaW5nIGlzIHN0YXJ0ZWQgYW5kIHN0b3BwZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBP
bmx5IGxvbmctbGl2ZWQKKyAgICAvLyBsaXRlcmFsIHN0cmluZ3Mgc2hvdWxkIGJlIGdpdmVuIGFz
IHRoZSBjYXRlZ29yeSBuYW1lLiBUaGUgaW1wbGVtZW50YXRpb24KKyAgICAvLyBleHBlY3RzIHRo
ZSByZXR1cm5lZCBwb2ludGVyIHRvIGJlIGhlbGQgcGVybWFuZW50bHkgaW4gYSBsb2NhbCBzdGF0
aWMuIElmCisgICAgLy8gdGhlIHVuc2lnbmVkIGNoYXIgaXMgbm9uLXplcm8sIHRyYWNpbmcgaXMg
ZW5hYmxlZC4gSWYgdHJhY2luZyBpcyBlbmFibGVkLAorICAgIC8vIGFkZFRyYWNlRXZlbnQgaXMg
ZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGJ5IHRoZSB0cmFjZSBldmVudCBtYWNyb3MuCisgICAgdmly
dHVhbCBjb25zdCB1bnNpZ25lZCBjaGFyKiBnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29u
c3QgY2hhciogY2F0ZWdvcnlOYW1lKQorICAgIHsKKyAgICAgICAgLy8gRGVmYXVsdCBiZWhhdmlv
ciBjYXVzZXMgdHJhY2luZyBtYWNyb3MgdG8gYmUgcGVybWFuZW50bHkgZGlzYWJsZWQuCisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGVuYWJsZWQgPSAwOworICAgICAgICByZXR1
cm4gJmVuYWJsZWQ7CisgICAgfQorICAgIC8vIEFkZCBhIHRyYWNlIGV2ZW50IHRvIHRoZSBwbGF0
Zm9ybSB0cmFjaW5nIHN5c3RlbS4gRGVwZW5kaW5nIG9uIHRoZSBhY3R1YWwKKyAgICAvLyBlbmFi
bGVkIHN0YXRlLCB0aGlzIGV2ZW50IG1heSBiZSByZWNvcmRlZCBvciBkcm9wcGVkLiBSZXR1cm5z
CisgICAgLy8gdGhyZXNob2xkQmVnaW5JZCBmb3IgdXNlIGluIGEgY29ycmVzcG9uZGluZyBlbmQg
YWRkVHJhY2VFdmVudCBjYWxsLgorICAgIC8vIC0gcGhhc2Ugc3BlY2lmaWVzIHRoZSB0eXBlIG9m
IGV2ZW50OgorICAgIC8vICAgLSBCRUdJTiAoJ0InKTogTWFya3MgdGhlIGJlZ2lubmluZyBvZiBh
IHNjb3BlZCBldmVudC4KKyAgICAvLyAgIC0gRU5EICgnRScpOiBNYXJrcyB0aGUgZW5kIG9mIGEg
c2NvcGVkIGV2ZW50LgorICAgIC8vICAgLSBJTlNUQU5UICgnSScpOiBTdGFuZGFsb25lLCBpbnN0
YW50YW5lb3VzIGV2ZW50LgorICAgIC8vICAgLSBTVEFSVCAoJ1MnKTogTWFya3MgdGhlIGJlZ2lu
bmluZyBvZiBhbiBhc3luY2hyb25vdXMgZXZlbnQgKHRoZSBlbmQKKyAgICAvLyAgICAgZXZlbnQg
Y2FuIG9jY3VyIGluIGEgZGlmZmVyZW50IHNjb3BlIG9yIHRocmVhZCkuIFRoZSBpZCBwYXJhbWV0
ZXIgaXMKKyAgICAvLyAgICAgdXNlZCB0byBtYXRjaCBTVEFSVC9GSU5JU0ggcGFpcnMuCisgICAg
Ly8gICAtIEZJTklTSCAoJ0YnKTogTWFya3MgdGhlIGVuZCBvZiBhbiBhc3luY2hyb25vdXMgZXZl
bnQuCisgICAgLy8gICAtIENPVU5URVIgKCdDJyk6IFVzZWQgdG8gdHJhY2UgaW50ZWdlciBxdWFu
dGl0aWVzIHRoYXQgY2hhbmdlIG92ZXIKKyAgICAvLyAgICAgdGltZS4gVGhlIGFyZ3VtZW50IHZh
bHVlcyBhcmUgZXhwZWN0ZWQgdG8gYmUgb2YgdHlwZSBpbnQuCisgICAgLy8gICAtIE1FVEFEQVRB
ICgnTScpOiBSZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLgorICAgIC8vIC0gY2F0ZWdvcnlFbmFi
bGVkIGlzIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxh
Zy4KKyAgICAvLyAtIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGV2ZW50LiBBbHNvIHVzZWQgdG8g
bWF0Y2ggQkVHSU4vRU5EIGFuZAorICAgIC8vICAgU1RBUlQvRklOSVNIIHBhaXJzLgorICAgIC8v
IC0gaWQgb3B0aW9uYWxseSBhbGxvd3MgZXZlbnRzIG9mIHRoZSBzYW1lIG5hbWUgdG8gYmUgZGlz
dGluZ3Vpc2hlZCBmcm9tCisgICAgLy8gICBlYWNoIG90aGVyLiBGb3IgZXhhbXBsZSwgdG8gdHJh
Y2UgdGhlIGNvbnN1dHJ1Y3Rpb24gYW5kIGRlc3RydWN0aW9uIG9mCisgICAgLy8gICBvYmplY3Rz
LCBzcGVjaWZ5IHRoZSBwb2ludGVyIGFzIHRoZSBpZCBwYXJhbWV0ZXIuCisgICAgLy8gLSBudW1B
cmdzIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFyZ05hbWVzLCBhcmdUeXBl
cywgYW5kCisgICAgLy8gICBhcmdWYWx1ZXMuCisgICAgLy8gLSBhcmdOYW1lcyBpcyB0aGUgYXJy
YXkgb2YgYXJndW1lbnQgbmFtZXMuIFVzZSBsb25nLWxpdmVkIGxpdGVyYWwgc3RyaW5ncworICAg
IC8vICAgb3Igc3BlY2lmeSB0aGUgQ09QWSBmbGFnLgorICAgIC8vIC0gYXJnVHlwZXMgaXMgdGhl
IGFycmF5IG9mIGFyZ3VtZW50IHR5cGVzOgorICAgIC8vICAgLSBCT09MICgxKTogYm9vbAorICAg
IC8vICAgLSBVSU5UICgyKTogdW5zaWduZWQgbG9uZyBsb25nCisgICAgLy8gICAtIElOVCAoMyk6
IGxvbmcgbG9uZworICAgIC8vICAgLSBET1VCTEUgKDQpOiBkb3VibGUKKyAgICAvLyAgIC0gUE9J
TlRFUiAoNSk6IHZvaWQqCisgICAgLy8gICAtIFNUUklORyAoNik6IGNoYXIqIChsb25nLWxpdmVk
IG51bGwtdGVybWluYXRlZCBjaGFyKiBzdHJpbmcpCisgICAgLy8gICAtIENPUFlfU1RSSU5HICg3
KTogY2hhciogKHRlbXBvcmFyeSBudWxsLXRlcm1pbmF0ZWQgY2hhciogc3RyaW5nKQorICAgIC8v
IC0gYXJnVmFsdWVzIGlzIHRoZSBhcnJheSBvZiBhcmd1bWVudCB2YWx1ZXMuIEVhY2ggdmFsdWUg
aXMgdGhlIHVuc2lnbmVkCisgICAgLy8gICBsb25nIGxvbmcgbWVtYmVyIG9mIGEgdW5pb24gb2Yg
YWxsIHN1cHBvcnRlZCB0eXBlcy4KKyAgICAvLyAtIHRocmVzaG9sZEJlZ2luSWQgb3B0aW9uYWxs
eSBzcGVjaWZpZXMgdGhlIHZhbHVlIHJldHVybmVkIGJ5IGEgcHJldmlvdXMKKyAgICAvLyAgIGNh
bGwgdG8gYWRkVHJhY2VFdmVudCB3aXRoIGEgQkVHSU4gcGhhc2UuCisgICAgLy8gLSB0aHJlc2hv
bGQgaXMgdXNlZCBvbiBhbiBFTkQgcGhhc2UgZXZlbnQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUK
KyAgICAvLyAgIHRocmVzaG9sZEJlZ2luSWQgb2YgYSBwcmlvciBCRUdJTiBldmVudC4gVGhlIHRo
cmVzaG9sZCBpcyB0aGUgbWluaW11bQorICAgIC8vICAgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyB0
aGF0IG11c3QgaGF2ZSBwYXNzZWQgc2luY2UgdGhlIEJFR0lOIGV2ZW50LiBJZgorICAgIC8vICAg
bGVzcyB0aGFuIHRocmVzaG9sZCBtaWNyb3NlY29uZHMgaGFzIHBhc3NlZCwgdGhlIEJFR0lOL0VO
RCBwYWlyIGlzCisgICAgLy8gICBkcm9wcGVkLgorICAgIC8vIC0gZmxhZ3MgY2FuIGJlIDAgb3Ig
b25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZywgT1JlZCB0b2dldGhlcjoKKyAgICAvLyAgIC0g
Q09QWSAoMHgxKTogdHJlYXQgYWxsIHN0cmluZ3MgKG5hbWUsIGFyZ05hbWVzIGFuZCBhcmdWYWx1
ZXMgb2YgdHlwZQorICAgIC8vICAgICBzdHJpbmcpIGFzIHRlbXBvcmFyeSBzbyB0aGF0IHRoZXkg
d2lsbCBiZSBjb3BpZWQgYnkgYWRkVHJhY2VFdmVudC4KKyAgICAvLyAgIC0gSEFTX0lEICgweDIp
OiB1c2UgdGhlIGlkIGFyZ3VtZW50IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBldmVudCBmb3IK
KyAgICAvLyAgICAgbWF0Y2hpbmcgd2l0aCBvdGhlciBldmVudHMgb2YgdGhlIHNhbWUgbmFtZS4K
KyAgICAvLyAgIC0gTUFOR0xFX0lEICgweDQpOiBzcGVjaWZ5IHRoaXMgZmxhZyBpZiB0aGUgaWQg
cGFyYW1ldGVyIGlzIHRoZSB2YWx1ZQorICAgIC8vICAgICBvZiBhIHBvaW50ZXIuCisgICAgdmly
dHVhbCBpbnQgYWRkVHJhY2VFdmVudCgKKyAgICAgICAgY2hhciBwaGFzZSwKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkRmxhZywKKyAgICAgICAgY29uc3QgY2hh
ciogbmFtZSwKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICBpbnQgbnVt
QXJncywKKyAgICAgICAgY29uc3QgY2hhcioqIGFyZ05hbWVzLAorICAgICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBhcmdUeXBlcywKKyAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nKiBh
cmdWYWx1ZXMsCisgICAgICAgIGludCB0aHJlc2hvbGRCZWdpbklkLAorICAgICAgICBsb25nIGxv
bmcgdGhyZXNob2xkLAorICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKSB7IHJldHVybiAtMTsg
fQogCiAgICAgLy8gQ2FsbGJhY2tzIGZvciByZXBvcnRpbmcgaGlzdG9ncmFtIGRhdGEuCiAgICAg
Ly8gQ3VzdG9tQ291bnRzIGhpc3RvZ3JhbSBoYXMgZXhwb25lbnRpYWwgYnVja2V0IHNpemVzLCBz
byB0aGF0IG1pbj0xLCBtYXg9MTAwMDAwMCwgYnVja2V0Q291bnQ9NTAgd291bGQgZG8uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCA3ZWQ4
MGJiMjQ1YzRiODNkYzczMTEzNjIyYTY0N2U3MjA3MzI5N2JlLi5lYjE4MmZlYmZkOGIwZTA5MjNl
YzE0ZDlhNmMwNzdjZjYxZWMyNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1BsYXRmb3JtU3VwcG9ydC5jcHAKQEAgLTk0NywxOSArOTQ3LDI0IEBAIHZvaWQgUGxhdGZvcm1T
dXBwb3J0OjpwYWludFRoZW1lUGFydCgKIAogLy8gVHJhY2UgRXZlbnQgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1ib29s
IFBsYXRmb3JtU3VwcG9ydDo6aXNUcmFjZUV2ZW50RW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIHdl
YktpdFBsYXRmb3JtU3VwcG9ydCgpLT5pc1RyYWNlRXZlbnRFbmFibGVkKCk7Ci19Ci0KLXZvaWQg
UGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4oY29uc3QgY2hhciogbmFtZSwgdm9pZCog
aWQsIGNvbnN0IGNoYXIqIGV4dHJhKQotewotICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT50
cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQsIGV4dHJhKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVN1cHBv
cnQ6OnRyYWNlRXZlbnRFbmQoY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIq
IGV4dHJhKQotewotICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT50cmFjZUV2ZW50RW5kKG5h
bWUsIGlkLCBleHRyYSk7Citjb25zdCB1bnNpZ25lZCBjaGFyKiBQbGF0Zm9ybVN1cHBvcnQ6Omdl
dFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhjb25zdCBjaGFyKiBjYXRlZ29yeU5hbWUpCit7Cisg
ICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5nZXRUcmFjZUNhdGVnb3J5RW5hYmxl
ZEZsYWcoY2F0ZWdvcnlOYW1lKTsKK30KK2ludCBQbGF0Zm9ybVN1cHBvcnQ6OmFkZFRyYWNlRXZl
bnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkRmxhZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbnVtQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhcioqIGFyZ05hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBhcmdUeXBlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nKiBhcmdWYWx1ZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aHJlc2hvbGRCZWdpbklkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGhyZXNob2xkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKQor
eworICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+YWRkVHJhY2VFdmVudCgKKyAg
ICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZEZsYWcsIG5hbWUsIGlkLCBudW1BcmdzLCBhcmdO
YW1lcywgYXJnVHlwZXMsIGFyZ1ZhbHVlcywgIHRocmVzaG9sZEJlZ2luSWQsIHRocmVzaG9sZCwg
ZmxhZ3MpOwogfQogCiAvLyBWaXNpdGVkIExpbmtzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126338</attachid>
            <date>2012-02-09 11:36:07 -0800</date>
            <delta_ts>2012-02-09 14:18:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76885-20120209113606.patch</filename>
            <type>text/plain</type>
            <size>55645</size>
            <attacher name="John Bates">jbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2Nzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRlNTA5ODhkZmY2ODcw
ZTI2NjQwYzQwYzdiYWYxMDgwNGIyZWRlYS4uNDA0ZWMyNzZjODVhODE0ODk5NGFmYTE3NTQ2Njcy
MDFjY2ZmYzE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KKworICAgICAgICBUaGlzIGNvZGUgZW5hYmxlcyBXZWJLaXQgdHJhY2UgZXZlbnRzIHRv
IHBhc3MgdGhyb3VnaCBtb3JlIGRhdGEgdG8gdGhlCisgICAgICAgIGNocm9taXVtIHBsYXRmb3Jt
IHRyYWNpbmcgQVBJIGFuZCBnZW5lcmFsbHkgdG8gdXNlIHRoZSBmdWxsIHRyYWNpbmcKKyAgICAg
ICAgQVBJIHByb3ZpZGVkIGJ5IGNocm9taXVtLgorCisgICAgICAgICogYmluZGluZ3MvdjgvVjhQ
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpldmFsdWF0ZSk6IFJlcGxhY2Ug
b2xkIHRyYWNpbmcgQVBJLgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb25zb2xlOjp0aW1lKTogUmVwbGFjZSBvbGQgdHJhY2luZyBBUEkuCisgICAgICAg
IChXZWJDb3JlOjpDb25zb2xlOjp0aW1lRW5kKTogUmVwbGFjZSBvbGQgdHJhY2luZyBBUEkuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vVHJhY2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VF
dmVudDo6VHJhY2VJRDo6VHJhY2VJRCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpU
cmFjZUlEOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlU3RyaW5n
V2l0aENvcHk6OlRyYWNlU3RyaW5nV2l0aENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VF
dmVudDo6VHJhY2VTdHJpbmdXaXRoQ29weTo6b3BlcmF0b3IgY29uc3QgY2hhciogKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OnNldFRyYWNlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhY2VFdmVudDo6YWRkVHJhY2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2
ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZTo6VHJhY2VFbmRPblNjb3BlQ2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xvc2U6On5UcmFjZUVuZE9u
U2NvcGVDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2Nv
cGVDbG9zZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFj
ZUVuZE9uU2NvcGVDbG9zZTo6YWRkRXZlbnRJZkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQ6OlRyYWNlRW5kT25TY29w
ZUNsb3NlVGhyZXNob2xkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNlRXZlbnQ6OlRyYWNlRW5k
T25TY29wZUNsb3NlVGhyZXNob2xkOjp+VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hv
bGQ6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VFbmRP
blNjb3BlQ2xvc2VUaHJlc2hvbGQ6OmFkZEV2ZW50SWZFbmFibGVkKToKKwogMjAxMi0wMi0wNSAg
S2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIFtU
cmVhdE51bGxBcz1FbXB0eVN0cmluZ10gdG8gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmddLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0ZmJhZmZkZGNmZGUxMmUyYmQ4MDUwZjRiN2U2Y2M4
NDAyZDAwZmY3Li5kY2EwMWY4NTViMzZjNzE5ZjRmNTExMTVkZWU2MmU2NzhiYWRlNWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTAxLTI1ICBKb2hu
IEJhdGVzICA8amJhdGVzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBBZGQgY2hy
b21pdW0tc3R5bGUgdHJhY2luZyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KKworICAgICAgICBUaGlzIGNvZGUgZW5hYmxlcyBXZWJLaXQgdHJhY2UgZXZlbnRzIHRv
IHBhc3MgdGhyb3VnaCBtb3JlIGRhdGEgdG8gdGhlCisgICAgICAgIGNocm9taXVtIHBsYXRmb3Jt
IHRyYWNpbmcgQVBJIGFuZCBnZW5lcmFsbHkgdG8gdXNlIHRoZSBmdWxsIHRyYWNpbmcKKyAgICAg
ICAgQVBJIHByb3ZpZGVkIGJ5IGNocm9taXVtLgorCisgICAgICAgICogcHVibGljL3BsYXRmb3Jt
L1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRQbGF0Zm9y
bVN1cHBvcnQ6OmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6YWRkVHJhY2VFdmVudCk6CisgICAgICAgICogc3JjL1Bs
YXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6Omdl
dFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVN1
cHBvcnQ6OmFkZFRyYWNlRXZlbnQpOgorCiAyMDEyLTAyLTA0ICBTaGF3biBTaW5naCAgPHNoYXdu
c2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIHN1cHBvcnQgdG8g
Zm9yY2UgZnVsbCBkYW1hZ2UgaW4gQ0NEYW1hZ2VUcmFja2VyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UHJveHkuY3BwCmluZGV4IGQ2YWIzODFjMmQwZjNjNzc1ZGE3NGY4MjljMGIzZDdmZWE1
MzQ2NWMuLjIwZGM2OGQyNWJlNDA3MTU5MDdkODA1MzI3ODBlNzIyNWE3ZDM2NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCkBAIC03MSw2ICs3MSwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFY4RXh0ZW5zaW9ucyYgc3RhdGljRXh0
ZW5zaW9uc0xpc3QoKQpAQCAtMzM1LDcgKzMzOSw3IEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4
UHJveHk6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZSwgTm9kZSogbm9k
CiAgICAgICAgIC8vIENvbXBpbGUgdGhlIHNjcmlwdC4KICAgICAgICAgdjg6OkxvY2FsPHY4OjpT
dHJpbmc+IGNvZGUgPSB2OEV4dGVybmFsU3RyaW5nKHNvdXJjZS5zb3VyY2UoKSk7CiAjaWYgUExB
VEZPUk0oQ0hST01JVU0pCi0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2lu
KCJ2OC5jb21waWxlIiwgbm9kZSwgIiIpOworICAgICAgICBUUkFDRV9FVkVOVF9CRUdJTjAoInY4
IiwgInY4LmNvbXBpbGUiKTsKICNlbmRpZgogICAgICAgICBPd25QdHI8djg6OlNjcmlwdERhdGE+
IHNjcmlwdERhdGEgPSBwcmVjb21waWxlU2NyaXB0KGNvZGUsIHNvdXJjZS5jYWNoZWRTY3JpcHQo
KSk7CiAKQEAgLTM0MywxNSArMzQ3LDExIEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4UHJveHk6
OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZSwgTm9kZSogbm9kCiAgICAg
ICAgIC8vIDEsIHdoZXJlYXMgdjggc3RhcnRzIGF0IDAuCiAgICAgICAgIHY4OjpIYW5kbGU8djg6
OlNjcmlwdD4gc2NyaXB0ID0gY29tcGlsZVNjcmlwdChjb2RlLCBzb3VyY2UudXJsKCksIHNvdXJj
ZS5zdGFydFBvc2l0aW9uKCksIHNjcmlwdERhdGEuZ2V0KCkpOwogI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQoInY4LmNvbXBpbGUi
LCBub2RlLCAiIik7Ci0KLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50QmVnaW4o
InY4LnJ1biIsIG5vZGUsICIiKTsKKyAgICAgICAgVFJBQ0VfRVZFTlRfRU5EMCgidjgiLCAidjgu
Y29tcGlsZSIpOworICAgICAgICBUUkFDRV9FVkVOVDAoInY4IiwgInY4LnJ1biIpOwogI2VuZGlm
CiAgICAgICAgIHJlc3VsdCA9IHJ1blNjcmlwdChzY3JpcHQpOwogICAgIH0KLSNpZiBQTEFURk9S
TShDSFJPTUlVTSkKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQoInY4LnJ1biIs
IG5vZGUsICIiKTsKLSNlbmRpZgogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
dmFsdWF0ZVNjcmlwdChjb29raWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAppbmRleCAyNGUx
M2E1ZmRiYTUzMDFiYjc1Mjk0Y2UzNDBiNWEwZmVhZDI0OWU2Li41MTVhYjM0ZDdhMDZkNGFjMjJi
NTNmNGNmOGQ5Zjg0YWYxYzVmNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKQEAgLTI5OSwx
NiArMjk5LDE0IEBAIHZvaWQgQ29uc29sZTo6dGltZShjb25zdCBTdHJpbmcmIHRpdGxlKQogewog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKHBhZ2UoKSwg
dGl0bGUpOwogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgIGlmIChQbGF0Zm9ybVN1cHBvcnQ6
OmlzVHJhY2VFdmVudEVuYWJsZWQoKSkKLSAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2
ZW50QmVnaW4odGl0bGUudXRmOCgpLmRhdGEoKSwgMCwgMCk7CisgICAgVFJBQ0VfRVZFTlRfQ09Q
WV9CRUdJTjAoIndlYmtpdCIsIHRpdGxlLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiB9CiAKIHZv
aWQgQ29uc29sZTo6dGltZUVuZChjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXNzUmVmUHRyPFNjcmlw
dEFyZ3VtZW50cz4sIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2spCiB7CiAj
aWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgaWYgKFBsYXRmb3JtU3VwcG9ydDo6aXNUcmFjZUV2
ZW50RW5hYmxlZCgpKQotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQodGl0
bGUudXRmOCgpLmRhdGEoKSwgMCwgMCk7CisgICAgVFJBQ0VfRVZFTlRfQ09QWV9FTkQwKCJ3ZWJr
aXQiLCB0aXRsZS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmcocGFnZSgpLCB0aXRsZSwgY2FsbFN0YWNrKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Vw
cG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0
LmgKaW5kZXggMTcwMTc3NTA3NjNmMTViY2MxYjVlZTM0Nzc0ZjE5YTM0MjdhZmExOS4uMTI4ZDJh
M2U5ODgzY2QyYWI2Yjg0NTgwYzA2ZTJkYWZjMGU2MDMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTQxNSw5ICs0MTUs
MTggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBUcmFjZSBFdmVudCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHN0YXRpYyBi
b29sIGlzVHJhY2VFdmVudEVuYWJsZWQoKTsKLSAgICBzdGF0aWMgdm9pZCB0cmFjZUV2ZW50QmVn
aW4oY29uc3QgY2hhciogbmFtZSwgdm9pZCosIGNvbnN0IGNoYXIqIGV4dHJhKTsKLSAgICBzdGF0
aWMgdm9pZCB0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqLCBjb25zdCBjaGFy
KiBleHRyYSk7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGdldFRyYWNlQ2F0ZWdv
cnlFbmFibGVkRmxhZyhjb25zdCBjaGFyKiBjYXRlZ29yeU5hbWUpOworICAgIHN0YXRpYyBpbnQg
YWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWRGbGFnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBudW1BcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiog
YXJnTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGFyZ1R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBsb25nIGxvbmcqIGFyZ1ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHRocmVzaG9sZEJlZ2luSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9u
ZyB0aHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
ZmxhZ3MpOwogCiAgICAgLy8gVmlzaXRlZCBsaW5rcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBzdGF0aWMgTGlua0hhc2ggdmlzaXRl
ZExpbmtIYXNoKGNvbnN0IFVDaGFyKiB1cmwsIHVuc2lnbmVkIGxlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2ZW50LmgKaW5kZXggNjUyZjU0MDdjYTNm
NTc1MTRjZmFhM2Q2YThiZGQwNjgyNTdiOTY5OS4uNWJiNjAwZmIzODY3ZGRhNzY5OWUyOWEwOThi
OWI2NzkzM2I3ODgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vVHJhY2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Ry
YWNlRXZlbnQuaApAQCAtMjIsNTMgKzIyLDg0MyBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCiAgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCisKKy8vIFRyYWNlIGV2ZW50cyBhcmUgZm9yIHRyYWNraW5nIGFwcGxpY2F0
aW9uIHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSB1c2FnZS4KKy8vIE1hY3JvcyBhcmUgcHJvdmlk
ZWQgdG8gdHJhY2s6CisvLyAgICBCZWdpbiBhbmQgZW5kIG9mIGZ1bmN0aW9uIGNhbGxzCisvLyAg
ICBDb3VudGVycworLy8KKy8vIEV2ZW50cyBhcmUgaXNzdWVkIGFnYWluc3QgY2F0ZWdvcmllcy4g
V2hlcmVhcyBMT0cncworLy8gY2F0ZWdvcmllcyBhcmUgc3RhdGljYWxseSBkZWZpbmVkLCBUUkFD
RSBjYXRlZ29yaWVzIGFyZSBjcmVhdGVkCisvLyBpbXBsaWNpdGx5IHdpdGggYSBzdHJpbmcuIEZv
ciBleGFtcGxlOgorLy8gICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiTVlfU1VCU1lTVEVNIiwgIlNv
bWVJbXBvcnRhbnRFdmVudCIpCisvLworLy8gRXZlbnRzIGNhbiBiZSBJTlNUQU5ULCBvciBjYW4g
YmUgcGFpcnMgb2YgQkVHSU4gYW5kIEVORCBpbiB0aGUgc2FtZSBzY29wZToKKy8vICAgVFJBQ0Vf
RVZFTlRfQkVHSU4wKCJNWV9TVUJTWVNURU0iLCAiU29tZXRoaW5nQ29zdGx5IikKKy8vICAgZG9T
b21ldGhpbmdDb3N0bHkoKQorLy8gICBUUkFDRV9FVkVOVF9FTkQwKCJNWV9TVUJTWVNURU0iLCAi
U29tZXRoaW5nQ29zdGx5IikKKy8vIE5vdGU6IG91ciB0b29scyBjYW4ndCBhbHdheXMgZGV0ZXJt
aW5lIHRoZSBjb3JyZWN0IEJFR0lOL0VORCBwYWlycyB1bmxlc3MKKy8vIHRoZXNlIGFyZSB1c2Vk
IGluIHRoZSBzYW1lIHNjb3BlLiBVc2UgU1RBUlQvRklOSVNIIG1hY3JvcyBpZiB5b3UgbmVlZCB0
aGVtCisvLyB0byBiZSBpbiBzZXBhcmF0ZSBzY29wZXMuCisvLworLy8gQSBjb21tb24gdXNlIGNh
c2UgaXMgdG8gdHJhY2UgZW50aXJlIGZ1bmN0aW9uIHNjb3Blcy4gVGhpcworLy8gaXNzdWVzIGEg
dHJhY2UgQkVHSU4gYW5kIEVORCBhdXRvbWF0aWNhbGx5OgorLy8gICB2b2lkIGRvU29tZXRoaW5n
Q29zdGx5KCkgeworLy8gICAgIFRSQUNFX0VWRU5UMCgiTVlfU1VCU1lTVEVNIiwgImRvU29tZXRo
aW5nQ29zdGx5Iik7CisvLyAgICAgLi4uCisvLyAgIH0KKy8vCisvLyBBZGRpdGlvbmFsIHBhcmFt
ZXRlcnMgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBldmVudDoKKy8vICAgdm9pZCBkb1NvbWV0
aGluZ0Nvc3RseTIoaW50IGhvd011Y2gpIHsKKy8vICAgICBUUkFDRV9FVkVOVDEoIk1ZX1NVQlNZ
U1RFTSIsICJkb1NvbWV0aGluZ0Nvc3RseSIsCisvLyAgICAgICAgICJob3dNdWNoIiwgaG93TXVj
aCk7CisvLyAgICAgLi4uCisvLyAgIH0KKy8vCisvLyBUaGUgdHJhY2Ugc3lzdGVtIHdpbGwgYXV0
b21hdGljYWxseSBhZGQgdG8gdGhpcyBpbmZvcm1hdGlvbiB0aGUKKy8vIGN1cnJlbnQgcHJvY2Vz
cyBpZCwgdGhyZWFkIGlkLCBhbmQgYSB0aW1lc3RhbXAgaW4gbWljcm9zZWNvbmRzLgorLy8KKy8v
IFRvIHRyYWNlIGFuIGFzeW5jaHJvbm91cyBwcm9jZWR1cmUgc3VjaCBhcyBhbiBJUEMgc2VuZC9y
ZWNlaXZlLCB1c2UgU1RBUlQgYW5kCisvLyBGSU5JU0g6CisvLyAgIFtzaW5nbGUgdGhyZWFkZWQg
c2VuZGVyIGNvZGVdCisvLyAgICAgc3RhdGljIGludCBzZW5kX2NvdW50ID0gMDsKKy8vICAgICAr
K3NlbmRfY291bnQ7CisvLyAgICAgVFJBQ0VfRVZFTlRfU1RBUlQwKCJpcGMiLCAibWVzc2FnZSIs
IHNlbmRfY291bnQpOworLy8gICAgIFNlbmQobmV3IE15TWVzc2FnZShzZW5kX2NvdW50KSk7Cisv
LyAgIFtyZWNlaXZlIGNvZGVdCisvLyAgICAgdm9pZCBPbk15TWVzc2FnZShzZW5kX2NvdW50KSB7
CisvLyAgICAgICBUUkFDRV9FVkVOVF9GSU5JU0gwKCJpcGMiLCAibWVzc2FnZSIsIHNlbmRfY291
bnQpOworLy8gICAgIH0KKy8vIFRoZSB0aGlyZCBwYXJhbWV0ZXIgaXMgYSB1bmlxdWUgSUQgdG8g
bWF0Y2ggU1RBUlQvRklOSVNIIHBhaXJzLgorLy8gU1RBUlQgYW5kIEZJTklTSCBjYW4gb2NjdXIg
b24gYW55IHRocmVhZCBvZiBhbnkgdHJhY2VkIHByb2Nlc3MuIFBvaW50ZXJzIGNhbgorLy8gYmUg
dXNlZCBmb3IgdGhlIElEIHBhcmFtZXRlciwgYW5kIHRoZXkgd2lsbCBiZSBtYW5nbGVkIGludGVy
bmFsbHkgc28gdGhhdAorLy8gdGhlIHNhbWUgcG9pbnRlciBvbiB0d28gZGlmZmVyZW50IHByb2Nl
c3NlcyB3aWxsIG5vdCBtYXRjaC4gRm9yIGV4YW1wbGU6CisvLyAgIGNsYXNzIE15VHJhY2VkQ2xh
c3MgeworLy8gICAgcHVibGljOgorLy8gICAgIE15VHJhY2VkQ2xhc3MoKSB7CisvLyAgICAgICBU
UkFDRV9FVkVOVF9TVEFSVDAoImNhdGVnb3J5IiwgIk15VHJhY2VkQ2xhc3MiLCB0aGlzKTsKKy8v
ICAgICB9CisvLyAgICAgfk15VHJhY2VkQ2xhc3MoKSB7CisvLyAgICAgICBUUkFDRV9FVkVOVF9G
SU5JU0gwKCJjYXRlZ29yeSIsICJNeVRyYWNlZENsYXNzIiwgdGhpcyk7CisvLyAgICAgfQorLy8g
ICB9CisvLworLy8gVHJhY2UgZXZlbnQgYWxzbyBzdXBwb3J0cyBjb3VudGVycywgd2hpY2ggaXMg
YSB3YXkgdG8gdHJhY2sgYSBxdWFudGl0eQorLy8gYXMgaXQgdmFyaWVzIG92ZXIgdGltZS4gQ291
bnRlcnMgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1hY3JvOgorLy8gICBUUkFDRV9D
T1VOVEVSMSgiTVlfU1VCU1lTVEVNIiwgIm15Q291bnRlciIsIGdfbXlDb3VudGVyVmFsdWUpOwor
Ly8KKy8vIENvdW50ZXJzIGFyZSBwcm9jZXNzLXNwZWNpZmljLiBUaGUgbWFjcm8gaXRzZWxmIGNh
biBiZSBpc3N1ZWQgZnJvbSBhbnkKKy8vIHRocmVhZCwgaG93ZXZlci4KKy8vCisvLyBTb21ldGlt
ZXMsIHlvdSB3YW50IHRvIHRyYWNrIHR3byBjb3VudGVycyBhdCBvbmNlLiBZb3UgY2FuIGRvIHRo
aXMgd2l0aCB0d28KKy8vIGNvdW50ZXIgbWFjcm9zOgorLy8gICBUUkFDRV9DT1VOVEVSMSgiTVlf
U1VCU1lTVEVNIiwgIm15Q291bnRlcjAiLCBnX215Q291bnRlclZhbHVlWzBdKTsKKy8vICAgVFJB
Q0VfQ09VTlRFUjEoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIxIiwgZ19teUNvdW50ZXJWYWx1
ZVsxXSk7CisvLyBPciB5b3UgY2FuIGRvIGl0IHdpdGggYSBjb21iaW5lZCBtYWNybzoKKy8vICAg
VFJBQ0VfQ09VTlRFUjIoIk1ZX1NVQlNZU1RFTSIsICJteUNvdW50ZXIiLAorLy8gICAgICAgImJ5
dGVzUGlubmVkIiwgZ19teUNvdW50ZXJWYWx1ZVswXSwKKy8vICAgICAgICJieXRlc0FsbG9jYXRl
ZCIsIGdfbXlDb3VudGVyVmFsdWVbMV0pOworLy8gVGhpcyBpbmRpY2F0ZXMgdG8gdGhlIHRyYWNp
bmcgVUkgdGhhdCB0aGVzZSBjb3VudGVycyBzaG91bGQgYmUgZGlzcGxheWVkCisvLyBpbiBhIHNp
bmdsZSBncmFwaCwgYXMgYSBzdW1tZWQgYXJlYSBjaGFydC4KKy8vCisvLyBTaW5jZSBjb3VudGVy
cyBhcmUgaW4gYSBnbG9iYWwgbmFtZXNwYWNlLCB5b3UgbWF5IHdhbnQgdG8gZGlzZW1iaWd1YXRl
IHdpdGggYQorLy8gdW5pcXVlIElELCBieSB1c2luZyB0aGUgVFJBQ0VfQ09VTlRFUl9JRCogdmFy
aWF0aW9ucy4KKy8vCisvLyBCeSBkZWZhdWx0LCB0cmFjZSBjb2xsZWN0aW9uIGlzIGNvbXBpbGVk
IGluLCBidXQgdHVybmVkIG9mZiBhdCBydW50aW1lLgorLy8gQ29sbGVjdGluZyB0cmFjZSBkYXRh
IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgZW1iZWRkaW5nCisvLyBhcHBsaWNhdGlvbi4g
SW4gQ2hyb21lJ3MgY2FzZSwgbmF2aWdhdGluZyB0byBhYm91dDp0cmFjaW5nIHdpbGwgdHVybiBv
bgorLy8gdHJhY2luZyBhbmQgZGlzcGxheSBkYXRhIGNvbGxlY3RlZCBhY3Jvc3MgYWxsIGFjdGl2
ZSBwcm9jZXNzZXMuCisvLworLy8KKy8vIE1lbW9yeSBzY29waW5nIG5vdGU6CisvLyBUcmFjaW5n
IGNvcGllcyB0aGUgcG9pbnRlcnMsIG5vdCB0aGUgc3RyaW5nIGNvbnRlbnQsIG9mIHRoZSBzdHJp
bmdzIHBhc3NlZAorLy8gaW4gZm9yIGNhdGVnb3J5LCBuYW1lLCBhbmQgYXJnX25hbWVzLiBUaHVz
LCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbAorLy8gY2F1c2UgcHJvYmxlbXM6CisvLyAgICAgY2hh
ciogc3RyID0gc3RyZHVwKCJpbXBwcnRhbnROYW1lIik7CisvLyAgICAgVFJBQ0VfRVZFTlRfSU5T
VEFOVDAoIlNVQlNZU1RFTSIsIHN0cik7ICAvLyBCQUQhCisvLyAgICAgZnJlZShzdHIpOyAgICAg
ICAgICAgICAgICAgICAvLyBUcmFjZSBzeXN0ZW0gbm93IGhhcyBkYW5nbGluZyBwb2ludGVyCisv
LworLy8gVG8gYXZvaWQgdGhpcyBpc3N1ZSB3aXRoIHRoZSB8bmFtZXwgYW5kIHxhcmdfbmFtZXwg
cGFyYW1ldGVycywgdXNlIHRoZQorLy8gVFJBQ0VfRVZFTlRfQ09QWV9YWFggb3ZlcmxvYWRzIG9m
IHRoZSBtYWNyb3MgYXQgYWRkaXRpb25hbCBydW50aW1lIG92ZXJoZWFkLgorLy8gTm90ZXM6IFRo
ZSBjYXRlZ29yeSBtdXN0IGFsd2F5cyBiZSBpbiBhIGxvbmctbGl2ZWQgY2hhciogKGkuZS4gc3Rh
dGljIGNvbnN0KS4KKy8vICAgICAgICBUaGUgfGFyZ192YWx1ZXN8LCB3aGVuIHVzZWQsIGFyZSBh
bHdheXMgZGVlcCBjb3BpZWQgd2l0aCB0aGUgX0NPUFkKKy8vICAgICAgICBtYWNyb3MuCisvLwor
Ly8gV2hlbiBhcmUgc3RyaW5nIGFyZ3VtZW50IHZhbHVlcyBjb3BpZWQ6CisvLyBjb25zdCBjaGFy
KiBhcmdfdmFsdWVzIGFyZSBvbmx5IHJlZmVyZW5jZWQgYnkgZGVmYXVsdDoKKy8vICAgICBUUkFD
RV9FVkVOVDEoImNhdGVnb3J5IiwgIm5hbWUiLAorLy8gICAgICAgICAgICAgICAgICAiYXJnMSIs
ICJsaXRlcmFsIHN0cmluZyBpcyBvbmx5IHJlZmVyZW5jZWQiKTsKKy8vIFVzZSBUUkFDRV9TVFJf
Q09QWSB0byBmb3JjZSBjb3B5aW5nIG9mIGEgY29uc3QgY2hhcio6CisvLyAgICAgVFJBQ0VfRVZF
TlQxKCJjYXRlZ29yeSIsICJuYW1lIiwKKy8vICAgICAgICAgICAgICAgICAgImFyZzEiLCBUUkFD
RV9TVFJfQ09QWSgic3RyaW5nIHdpbGwgYmUgY29waWVkIikpOworLy8gc3RkOjpzdHJpbmcgYXJn
X3ZhbHVlcyBhcmUgYWx3YXlzIGNvcGllZDoKKy8vICAgICBUUkFDRV9FVkVOVDEoImNhdGVnb3J5
IiwgIm5hbWUiLAorLy8gICAgICAgICAgICAgICAgICAiYXJnMSIsIHN0ZDo6c3RyaW5nKCJzdHJp
bmcgd2lsbCBiZSBjb3BpZWQiKSk7CisvLworLy8KKy8vIFRocmVhZCBTYWZldHk6CisvLyBBIHRo
cmVhZCBzYWZlIHNpbmdsZXRvbiBhbmQgbXV0ZXggYXJlIHVzZWQgZm9yIHRocmVhZCBzYWZldHku
IENhdGVnb3J5CisvLyBlbmFibGVkIGZsYWdzIGFyZSB1c2VkIHRvIGxpbWl0IHRoZSBwZXJmb3Jt
YW5jZSBpbXBhY3Qgd2hlbiB0aGUgc3lzdGVtCisvLyBpcyBub3QgZW5hYmxlZC4KKy8vCisvLyBU
UkFDRV9FVkVOVCBtYWNyb3MgZmlyc3QgY2FjaGUgYSBwb2ludGVyIHRvIGEgY2F0ZWdvcnkuIFRo
ZSBjYXRlZ29yaWVzIGFyZQorLy8gc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIHNhZmUgYXQgYWxs
IHRpbWVzLCBldmVuIGFmdGVyIGV4aXQuIEZldGNoaW5nIGEKKy8vIGNhdGVnb3J5IGlzIHByb3Rl
Y3RlZCBieSB0aGUgVHJhY2VMb2c6OmxvY2tfLiBNdWx0aXBsZSB0aHJlYWRzIGluaXRpYWxpemlu
ZworLy8gdGhlIHN0YXRpYyB2YXJpYWJsZSBpcyBzYWZlLCBhcyB0aGV5IHdpbGwgYmUgc2VyaWFs
aXplZCBieSB0aGUgbG9jayBhbmQKKy8vIG11bHRpcGxlIGNhbGxzIHdpbGwgcmV0dXJuIHRoZSBz
YW1lIHBvaW50ZXIgdG8gdGhlIGNhdGVnb3J5LgorLy8KKy8vIFRoZW4gdGhlIGNhdGVnb3J5X2Vu
YWJsZWQgZmxhZyBpcyBjaGVja2VkLiBUaGlzIGlzIGEgdW5zaWduZWQgY2hhciwgYW5kCisvLyBu
b3QgaW50ZW5kZWQgdG8gYmUgbXVsdGl0aHJlYWQgc2FmZS4gSXQgb3B0aW1pemVzIGFjY2VzcyB0
byBhZGRUcmFjZUV2ZW50CisvLyB3aGljaCBpcyB0aHJlYWRzYWZlIGludGVybmFsbHkgdmlhIFRy
YWNlTG9nOjpsb2NrXy4gVGhlIGVuYWJsZWQgZmxhZyBtYXkKKy8vIGNhdXNlIHNvbWUgdGhyZWFk
cyB0byBpbmNvcnJlY3RseSBjYWxsIG9yIHNraXAgY2FsbGluZyBhZGRUcmFjZUV2ZW50IG5lYXIK
Ky8vIHRoZSB0aW1lIG9mIHRoZSBzeXN0ZW0gYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZC4gVGhp
cyBpcyBhY2NlcHRhYmxlIGFzCisvLyB3ZSB0b2xlcmF0ZSBzb21lIGRhdGEgbG9zcyB3aGlsZSB0
aGUgc3lzdGVtIGlzIGJlaW5nIGVuYWJsZWQvZGlzYWJsZWQgYW5kCisvLyBiZWNhdXNlIGFkZFRy
YWNlRXZlbnQgaXMgdGhyZWFkc2FmZSBpbnRlcm5hbGx5IGFuZCBjaGVja3MgdGhlIGVuYWJsZWQg
c3RhdGUKKy8vIGFnYWluIHVuZGVyIGxvY2suCisvLworLy8gV2l0aG91dCB0aGUgdXNlIG9mIHRo
ZXNlIHN0YXRpYyBjYXRlZ29yeSBwb2ludGVycyBhbmQgZW5hYmxlZCBmbGFncyBhbGwKKy8vIHRy
YWNlIHBvaW50cyB3b3VsZCBjYXJyeSBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGNvc3Qgb2Yg
YXF1aXJpbmcgYSBsb2NrCisvLyBhbmQgcmVzb2x2aW5nIHRoZSBjYXRlZ29yeS4KKwogI2lmbmRl
ZiBUcmFjZUV2ZW50X2gKICNkZWZpbmUgVHJhY2VFdmVudF9oCiAKKyNpbmNsdWRlICJEeW5hbWlj
QW5ub3RhdGlvbnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKLSNpbmNsdWRlIDx3
dGYvT3duQXJyYXlQdHIuaD4KKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworLy8g
SXNzdWVzIGJlZ2luIHRyYWNlIGV2ZW50IGhlcmUgYW5kIGVuZCB0cmFjZSBldmVudCB3aGVuIHRo
ZSBjdXJyZW50IHNjb3BlIGVuZHMuCisjZGVmaW5lIFRSQUNFX0VWRU5UKG5hbWUsIGlkLCBleHRy
YSkgVFJBQ0VfRVZFTlQyKCJ3ZWJraXQiLCBuYW1lLCAiaWQiLCBpZCwgImV4dHJhIiwgZXh0cmEp
CisKKy8vIEJ5IGRlZmF1bHQsIGNvbnN0IGNoYXIqIGFyZ3VtZW50IHZhbHVlcyBhcmUgYXNzdW1l
ZCB0byBoYXZlIGxvbmctbGl2ZWQgc2NvcGUKKy8vIGFuZCB3aWxsIG5vdCBiZSBjb3BpZWQuIFVz
ZSB0aGlzIG1hY3JvIHRvIGZvcmNlIGEgY29uc3QgY2hhciogdG8gYmUgY29waWVkLgorI2RlZmlu
ZSBUUkFDRV9TVFJfQ09QWShzdHIpIFwKKyAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZVN0
cmluZ1dpdGhDb3B5KHN0cikKKworLy8gUmVjb3JkcyBhIHBhaXIgb2YgYmVnaW4gYW5kIGVuZCBl
dmVudHMgY2FsbGVkICJuYW1lIiBmb3IgdGhlIGN1cnJlbnQKKy8vIHNjb3BlLCB3aXRoIDAsIDEg
b3IgMiBhc3NvY2lhdGVkIGFyZ3VtZW50cy4gSWYgdGhlIGNhdGVnb3J5IGlzIG5vdAorLy8gZW5h
YmxlZCwgdGhlbiB0aGlzIGRvZXMgbm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3Ry
aW5ncyBtdXN0IGhhdmUgYXBwbGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0
ZXJhbHMpLiBUaGV5IG1heSBub3QgaW5jbHVkZSAiIGNoYXJzLgorI2RlZmluZSBUUkFDRV9FVkVO
VDAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVE
KGNhdGVnb3J5LCBuYW1lKQorI2RlZmluZSBUUkFDRV9FVkVOVDEoY2F0ZWdvcnksIG5hbWUsIGFy
ZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVE
KGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVO
VDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92
YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEKGNhdGVnb3J5LCBuYW1l
LCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpCisK
Ky8vIFJlY29yZHMgYSBzaW5nbGUgZXZlbnQgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseSwgd2l0
aCAwLCAxIG9yIDIKKy8vIGFzc29jaWF0ZWQgYXJndW1lbnRzLiBJZiB0aGUgY2F0ZWdvcnkgaXMg
bm90IGVuYWJsZWQsIHRoZW4gdGhpcworLy8gZG9lcyBub3RoaW5nLgorLy8gLSBjYXRlZ29yeSBh
bmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAoc3RhdGljcyBv
cgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMuCisjZGVmaW5l
IFRSQUNFX0VWRU5UX0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJB
Q0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0ZWdv
cnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfSU5T
VEFOVDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5B
TF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfSU5TVEFOVCwgXAorICAgICAgICBj
YXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFs
KQorI2RlZmluZSBUUkFDRV9FVkVOVF9JTlNUQU5UMihjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1l
LCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAg
Y2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3Zh
bCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9D
T1BZX0lOU1RBTlQwKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
QUREKFRSQUNFX0VWRU5UX1BIQVNFX0lOU1RBTlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUs
IFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9JTlNUQU5U
MShjYXRlZ29yeSwgbmFtZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RS
QUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAgIGNhdGVn
b3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwpCisj
ZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfSU5TVEFOVDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFt
ZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVS
TkFMX1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5ULCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92
YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkKKworLy8gUmVjb3JkcyBhIHNpbmds
ZSBCRUdJTiBldmVudCBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LCB3aXRoIDAsIDEgb3IgMgor
Ly8gYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBpcyBub3QgZW5hYmxlZCwg
dGhlbiB0aGlzCisvLyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmlu
Z3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVy
YWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfRVZFTlRf
QkVHSU4wKGNhdGVnb3J5LCBuYW1lKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRS
QUNFX0VWRU5UX1BIQVNFX0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9F
VkVOVF9GTEFHX05PTkUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0JFR0lOMShjYXRlZ29yeSwgbmFt
ZSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChU
UkFDRV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0Vf
RVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9CRUdJTjIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAg
YXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFD
RV9FVkVOVF9QSEFTRV9CRUdJTiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZF
TlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwg
YXJnMl92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfQkVHSU4wKGNhdGVnb3J5LCBuYW1l
KSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lO
LCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFkpCisjZGVm
aW5lIFRSQUNFX0VWRU5UX0NPUFlfQkVHSU4xKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFy
ZzFfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNF
X0JFR0lOLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX0NPUFks
IGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfQkVHSU4yKGNh
dGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwg
YXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhB
U0VfQkVHSU4sIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfQ09Q
WSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAorICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQor
CisvLyBSZWNvcmRzIGEgc2luZ2xlIEVORCBldmVudCBmb3IgIm5hbWUiIGltbWVkaWF0ZWx5LiBJ
ZiB0aGUgY2F0ZWdvcnkKKy8vIGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5n
LgorLy8gLSBjYXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBs
aWZldGltZSAoc3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRl
ICIgY2hhcnMuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0VORDAoY2F0ZWdvcnksIG5hbWUpIFwKKyAg
ICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAg
ICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUpCisjZGVmaW5lIFRSQUNF
X0VWRU5UX0VORDEoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAgICBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAg
IGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUsIGFyZzFfbmFtZSwgYXJnMV92
YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0VORDIoY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwg
YXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcyX3ZhbCkgXAorICAgIElOVEVSTkFM
X1RSQUNFX0VWRU5UX0FERChUUkFDRV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdv
cnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgXAor
ICAgICAgICBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0VO
RDAoY2F0ZWdvcnksIG5hbWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0Vf
RVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9G
TEFHX0NPUFkpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0NPUFlfRU5EMShjYXRlZ29yeSwgbmFtZSwg
YXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChUUkFD
RV9FVkVOVF9QSEFTRV9FTkQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5U
X0ZMQUdfQ09QWSwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09Q
WV9FTkQyKGNhdGVnb3J5LCBuYW1lLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFy
ZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0Vf
RVZFTlRfUEhBU0VfRU5ELCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBUUkFDRV9FVkVOVF9G
TEFHX0NPUFksIGFyZzFfbmFtZSwgYXJnMV92YWwsIFwKKyAgICAgICAgYXJnMl9uYW1lLCBhcmcy
X3ZhbCkKKworLy8gVGltZSB0aHJlc2hvbGQgZXZlbnQ6CisvLyBPbmx5IHJlY29yZCB0aGUgZXZl
bnQgaWYgdGhlIGR1cmF0aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3BlY2lmaWVkCisvLyB0aHJl
c2hvbGRfdXMgKHRpbWUgaW4gbWljcm9zZWNvbmRzKS4KKy8vIFJlY29yZHMgYSBwYWlyIG9mIGJl
Z2luIGFuZCBlbmQgZXZlbnRzIGNhbGxlZCAibmFtZSIgZm9yIHRoZSBjdXJyZW50CisvLyBzY29w
ZSwgd2l0aCAwLCAxIG9yIDIgYXNzb2NpYXRlZCBhcmd1bWVudHMuIElmIHRoZSBjYXRlZ29yeSBp
cyBub3QKKy8vIGVuYWJsZWQsIHRoZW4gdGhpcyBkb2VzIG5vdGhpbmcuCisvLyAtIGNhdGVnb3J5
IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNz
IG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZp
bmUgVFJBQ0VfRVZFTlRfSUZfTE9OR0VSX1RIQU4wKHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5h
bWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFO
KHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lGX0xP
TkdFUl9USEFOMSggXAorICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFt
ZSwgYXJnMV92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xP
TkdFUl9USEFOKCBcCisgICAgICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFf
bmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0lGX0xPTkdFUl9USEFOMiggXAor
ICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUsIGFyZzFfbmFtZSwgYXJnMV92YWwsIGFy
ZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVE
X0lGX0xPTkdFUl9USEFOKCBcCisgICAgICAgIHRocmVzaG9sZF91cywgY2F0ZWdvcnksIG5hbWUs
IGFyZzFfbmFtZSwgYXJnMV92YWwsIGFyZzJfbmFtZSwgYXJnMl92YWwpCisKKy8vIFJlY29yZHMg
dGhlIHZhbHVlIG9mIGEgY291bnRlciBjYWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LiBWYWx1ZQor
Ly8gbXVzdCBiZSByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IGludGVnZXIuCisvLyAtIGNhdGVn
b3J5IGFuZCBuYW1lIHN0cmluZ3MgbXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0
aWNzIG9yCisvLyAgIGxpdGVyYWxzKS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNk
ZWZpbmUgVFJBQ0VfQ09VTlRFUjEoY2F0ZWdvcnksIG5hbWUsIHZhbHVlKSBcCisgICAgSU5URVJO
QUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNFX0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAg
Y2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICAidmFsdWUi
LCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSMShj
YXRlZ29yeSwgbmFtZSwgdmFsdWUpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJB
Q0VfRVZFTlRfUEhBU0VfQ09VTlRFUiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0Vf
RVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgICJ2YWx1ZSIsIHN0YXRpY19jYXN0PGludD4odmFs
dWUpKQorCisvLyBSZWNvcmRzIHRoZSB2YWx1ZXMgb2YgYSBtdWx0aS1wYXJ0ZWQgY291bnRlciBj
YWxsZWQgIm5hbWUiIGltbWVkaWF0ZWx5LgorLy8gVGhlIFVJIHdpbGwgdHJlYXQgdmFsdWUxIGFu
ZCB2YWx1ZTIgYXMgcGFydHMgb2YgYSB3aG9sZSwgZGlzcGxheWluZyB0aGVpcgorLy8gdmFsdWVz
IGFzIGEgc3RhY2tlZC1iYXIgY2hhcnQuCisvLyAtIGNhdGVnb3J5IGFuZCBuYW1lIHN0cmluZ3Mg
bXVzdCBoYXZlIGFwcGxpY2F0aW9uIGxpZmV0aW1lIChzdGF0aWNzIG9yCisvLyAgIGxpdGVyYWxz
KS4gVGhleSBtYXkgbm90IGluY2x1ZGUgIiBjaGFycy4KKyNkZWZpbmUgVFJBQ0VfQ09VTlRFUjIo
Y2F0ZWdvcnksIG5hbWUsIHZhbHVlMV9uYW1lLCB2YWx1ZTFfdmFsLCBcCisgICAgICAgIHZhbHVl
Ml9uYW1lLCB2YWx1ZTJfdmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREKFRSQUNF
X0VWRU5UX1BIQVNFX0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIFRSQUNFX0VW
RU5UX0ZMQUdfTk9ORSwgXAorICAgICAgICB2YWx1ZTFfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2
YWx1ZTFfdmFsKSwgXAorICAgICAgICB2YWx1ZTJfbmFtZSwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1
ZTJfdmFsKSkKKyNkZWZpbmUgVFJBQ0VfQ09QWV9DT1VOVEVSMihjYXRlZ29yeSwgbmFtZSwgdmFs
dWUxX25hbWUsIHZhbHVlMV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25hbWUsIHZhbHVlMl92YWwp
IFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoVFJBQ0VfRVZFTlRfUEhBU0VfQ09VTlRF
UiwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgVFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisg
ICAgICAgIHZhbHVlMV9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAg
ICAgIHZhbHVlMl9uYW1lLCBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlMl92YWwpKQorCisvLyBSZWNv
cmRzIHRoZSB2YWx1ZSBvZiBhIGNvdW50ZXIgY2FsbGVkICJuYW1lIiBpbW1lZGlhdGVseS4gVmFs
dWUKKy8vIG11c3QgYmUgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCBpbnRlZ2VyLgorLy8gLSBj
YXRlZ29yeSBhbmQgbmFtZSBzdHJpbmdzIG11c3QgaGF2ZSBhcHBsaWNhdGlvbiBsaWZldGltZSAo
c3RhdGljcyBvcgorLy8gICBsaXRlcmFscykuIFRoZXkgbWF5IG5vdCBpbmNsdWRlICIgY2hhcnMu
CisvLyAtIHxpZHwgaXMgdXNlZCB0byBkaXNhbWJpZ3VhdGUgY291bnRlcnMgd2l0aCB0aGUgc2Ft
ZSBuYW1lLiBJdCBtdXN0IGVpdGhlcgorLy8gICBiZSBhIHBvaW50ZXIgb3IgYW4gaW50ZWdlciB2
YWx1ZSB1cCB0byA2NCBiaXRzLiBJZiBpdCdzIGEgcG9pbnRlciwgdGhlIGJpdHMKKy8vICAgd2ls
bCBiZSB4b3JlZCB3aXRoIGEgaGFzaCBvZiB0aGUgcHJvY2VzcyBJRCBzbyB0aGF0IHRoZSBzYW1l
IHBvaW50ZXIgb24KKy8vICAgdHdvIGRpZmZlcmVudCBwcm9jZXNzZXMgd2lsbCBub3QgY29sbGlk
ZS4KKyNkZWZpbmUgVFJBQ0VfQ09VTlRFUl9JRDEoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZSkg
XAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNF
X0NPVU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFH
X05PTkUsIFwKKyAgICAgICAgInZhbHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisjZGVm
aW5lIFRSQUNFX0NPUFlfQ09VTlRFUl9JRDEoY2F0ZWdvcnksIG5hbWUsIGlkLCB2YWx1ZSkgXAor
ICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0NP
VU5URVIsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX0NP
UFksIFwKKyAgICAgICAgInZhbHVlIiwgc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSkpCisKKy8vIFJl
Y29yZHMgdGhlIHZhbHVlcyBvZiBhIG11bHRpLXBhcnRlZCBjb3VudGVyIGNhbGxlZCAibmFtZSIg
aW1tZWRpYXRlbHkuCisvLyBUaGUgVUkgd2lsbCB0cmVhdCB2YWx1ZTEgYW5kIHZhbHVlMiBhcyBw
YXJ0cyBvZiBhIHdob2xlLCBkaXNwbGF5aW5nIHRoZWlyCisvLyB2YWx1ZXMgYXMgYSBzdGFja2Vk
LWJhciBjaGFydC4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBw
bGljYXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBu
b3QgaW5jbHVkZSAiIGNoYXJzLgorLy8gLSB8aWR8IGlzIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGNv
dW50ZXJzIHdpdGggdGhlIHNhbWUgbmFtZS4gSXQgbXVzdCBlaXRoZXIKKy8vICAgYmUgYSBwb2lu
dGVyIG9yIGFuIGludGVnZXIgdmFsdWUgdXAgdG8gNjQgYml0cy4gSWYgaXQncyBhIHBvaW50ZXIs
IHRoZSBiaXRzCisvLyAgIHdpbGwgYmUgeG9yZWQgd2l0aCBhIGhhc2ggb2YgdGhlIHByb2Nlc3Mg
SUQgc28gdGhhdCB0aGUgc2FtZSBwb2ludGVyIG9uCisvLyAgIHR3byBkaWZmZXJlbnQgcHJvY2Vz
c2VzIHdpbGwgbm90IGNvbGxpZGUuCisjZGVmaW5lIFRSQUNFX0NPVU5URVJfSUQyKGNhdGVnb3J5
LCBuYW1lLCBpZCwgdmFsdWUxX25hbWUsIHZhbHVlMV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25h
bWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChU
UkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwg
VFJBQ0VfRVZFTlRfRkxBR19OT05FLCBcCisgICAgICAgIHZhbHVlMV9uYW1lLCBzdGF0aWNfY2Fz
dDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCBzdGF0aWNfY2FzdDxp
bnQ+KHZhbHVlMl92YWwpKQorI2RlZmluZSBUUkFDRV9DT1BZX0NPVU5URVJfSUQyKGNhdGVnb3J5
LCBuYW1lLCBpZCwgdmFsdWUxX25hbWUsIHZhbHVlMV92YWwsIFwKKyAgICAgICAgdmFsdWUyX25h
bWUsIHZhbHVlMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChU
UkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSLCBcCisgICAgICAgIGNhdGVnb3J5LCBuYW1lLCBpZCwg
VFJBQ0VfRVZFTlRfRkxBR19DT1BZLCBcCisgICAgICAgIHZhbHVlMV9uYW1lLCBzdGF0aWNfY2Fz
dDxpbnQ+KHZhbHVlMV92YWwpLCBcCisgICAgICAgIHZhbHVlMl9uYW1lLCBzdGF0aWNfY2FzdDxp
bnQ+KHZhbHVlMl92YWwpKQorCisvLyBSZWNvcmRzIGEgc2luZ2xlIFNUQVJUIGV2ZW50IGNhbGxl
ZCAibmFtZSIgaW1tZWRpYXRlbHksIHdpdGggMCwgMSBvciAyCisvLyBhc3NvY2lhdGVkIGFyZ3Vt
ZW50cy4gSWYgdGhlIGNhdGVnb3J5IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMKKy8vIGRvZXMg
bm90aGluZy4KKy8vIC0gY2F0ZWdvcnkgYW5kIG5hbWUgc3RyaW5ncyBtdXN0IGhhdmUgYXBwbGlj
YXRpb24gbGlmZXRpbWUgKHN0YXRpY3Mgb3IKKy8vICAgbGl0ZXJhbHMpLiBUaGV5IG1heSBub3Qg
aW5jbHVkZSAiIGNoYXJzLgorLy8gLSB8aWR8IGlzIHVzZWQgdG8gbWF0Y2ggdGhlIFNUQVJUIGV2
ZW50IHdpdGggdGhlIEZJTklTSCBldmVudC4gSXQgbXVzdCBlaXRoZXIKKy8vICAgYmUgYSBwb2lu
dGVyIG9yIGFuIGludGVnZXIgdmFsdWUgdXAgdG8gNjQgYml0cy4gSWYgaXQncyBhIHBvaW50ZXIs
IHRoZSBiaXRzCisvLyAgIHdpbGwgYmUgeG9yZWQgd2l0aCBhIGhhc2ggb2YgdGhlIHByb2Nlc3Mg
SUQgc28gdGhhdCB0aGUgc2FtZSBwb2ludGVyIG9uCisvLyAgIHR3byBkaWZmZXJlbnQgcHJvY2Vz
c2VzIHdpbGwgbm90IGNvbGxpZGUuCisjZGVmaW5lIFRSQUNFX0VWRU5UX1NUQVJUMChjYXRlZ29y
eSwgbmFtZSwgaWQpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFD
RV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNF
X0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfU1RBUlQxKGNhdGVnb3J5LCBu
YW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5U
X0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX1NUQVJULCBcCisgICAgICAgIGNhdGVnb3J5
LCBuYW1lLCBpZCwgVFJBQ0VfRVZFTlRfRkxBR19OT05FLCBhcmcxX25hbWUsIGFyZzFfdmFsKQor
I2RlZmluZSBUUkFDRV9FVkVOVF9TVEFSVDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUs
IGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5B
TF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAg
ICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgXAorICAgICAg
ICBhcmcxX25hbWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9DT1BZX1NUQVJUMChjYXRlZ29yeSwgbmFtZSwgaWQpIFwKKyAgICBJTlRFUk5BTF9U
UkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAg
ICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJB
Q0VfRVZFTlRfQ09QWV9TVEFSVDEoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFf
dmFsKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoVFJBQ0VfRVZFTlRf
UEhBU0VfU1RBUlQsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9G
TEFHX0NPUFksIFwKKyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCkKKyNkZWZpbmUgVFJBQ0Vf
RVZFTlRfQ09QWV9TVEFSVDIoY2F0ZWdvcnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFs
LCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9F
VkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25h
bWUsIGFyZzFfdmFsLCBhcmcyX25hbWUsIGFyZzJfdmFsKQorCisvLyBSZWNvcmRzIGEgc2luZ2xl
IEZJTklTSCBldmVudCBmb3IgIm5hbWUiIGltbWVkaWF0ZWx5LiBJZiB0aGUgY2F0ZWdvcnkKKy8v
IGlzIG5vdCBlbmFibGVkLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nLgorI2RlZmluZSBUUkFDRV9F
VkVOVF9GSU5JU0gwKGNhdGVnb3J5LCBuYW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSkKKyNkZWZpbmUgVFJBQ0VfRVZF
TlRfRklOSVNIMShjYXRlZ29yeSwgbmFtZSwgaWQsIGFyZzFfbmFtZSwgYXJnMV92YWwpIFwKKyAg
ICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVOVF9QSEFTRV9GSU5J
U0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVOVF9GTEFHX05PTkUs
IGFyZzFfbmFtZSwgYXJnMV92YWwpCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZJTklTSDIoY2F0ZWdv
cnksIG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwg
YXJnMl92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9F
VkVOVF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9F
VkVOVF9GTEFHX05PTkUsIFwKKyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1l
LCBhcmcyX3ZhbCkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9GSU5JU0gwKGNhdGVnb3J5LCBu
YW1lLCBpZCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKFRSQUNFX0VW
RU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgaWQsIFRSQUNFX0VW
RU5UX0ZMQUdfQ09QWSkKKyNkZWZpbmUgVFJBQ0VfRVZFTlRfQ09QWV9GSU5JU0gxKGNhdGVnb3J5
LCBuYW1lLCBpZCwgYXJnMV9uYW1lLCBhcmcxX3ZhbCkgXAorICAgIElOVEVSTkFMX1RSQUNFX0VW
RU5UX0FERF9XSVRIX0lEKFRSQUNFX0VWRU5UX1BIQVNFX0ZJTklTSCwgXAorICAgICAgICBjYXRl
Z29yeSwgbmFtZSwgaWQsIFRSQUNFX0VWRU5UX0ZMQUdfQ09QWSwgXAorICAgICAgICBhcmcxX25h
bWUsIGFyZzFfdmFsKQorI2RlZmluZSBUUkFDRV9FVkVOVF9DT1BZX0ZJTklTSDIoY2F0ZWdvcnks
IG5hbWUsIGlkLCBhcmcxX25hbWUsIGFyZzFfdmFsLCBcCisgICAgICAgIGFyZzJfbmFtZSwgYXJn
Ml92YWwpIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfV0lUSF9JRChUUkFDRV9FVkVO
VF9QSEFTRV9GSU5JU0gsIFwKKyAgICAgICAgY2F0ZWdvcnksIG5hbWUsIGlkLCBUUkFDRV9FVkVO
VF9GTEFHX0NPUFksIFwKKyAgICAgICAgYXJnMV9uYW1lLCBhcmcxX3ZhbCwgYXJnMl9uYW1lLCBh
cmcyX3ZhbCkKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEltcGxlbWVudGF0aW9uIHNw
ZWNpZmljIHRyYWNpbmcgQVBJIGRlZmluaXRpb25zLgorCisvLyBHZXQgYSBwb2ludGVyIHRvIHRo
ZSBlbmFibGVkIHN0YXRlIG9mIHRoZSBnaXZlbiB0cmFjZSBjYXRlZ29yeS4gT25seQorLy8gbG9u
Zy1saXZlZCBsaXRlcmFsIHN0cmluZ3Mgc2hvdWxkIGJlIGdpdmVuIGFzIHRoZSBjYXRlZ29yeSBu
YW1lLiBUaGUgcmV0dXJuZWQKKy8vIHBvaW50ZXIgY2FuIGJlIGhlbGQgcGVybWFuZW50bHkgaW4g
YSBsb2NhbCBzdGF0aWMgZm9yIGV4YW1wbGUuIElmIHRoZQorLy8gdW5zaWduZWQgY2hhciBpcyBu
b24temVybywgdHJhY2luZyBpcyBlbmFibGVkLiBJZiB0cmFjaW5nIGlzIGVuYWJsZWQsCisvLyBU
UkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UIGNhbiBiZSBjYWxsZWQuIEl0J3MgT0sgaWYg
dHJhY2luZyBpcyBkaXNhYmxlZAorLy8gYmV0d2VlbiB0aGUgbG9hZCBvZiB0aGUgdHJhY2luZyBz
dGF0ZSBhbmQgdGhlIGNhbGwgdG8KKy8vIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQs
IGJlY2F1c2UgdGhpcyBmbGFnIG9ubHkgcHJvdmlkZXMgYW4gZWFybHkgb3V0CisvLyBmb3IgYmVz
dCBwZXJmb3JtYW5jZSB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQuCisvLyBjb25zdCB1bnNpZ25l
ZCBjaGFyKgorLy8gICAgIFRSQUNFX0VWRU5UX0FQSV9HRVRfQ0FURUdPUllfRU5BQkxFRChjb25z
dCBjaGFyKiBjYXRlZ29yeV9uYW1lKQorI2RlZmluZSBUUkFDRV9FVkVOVF9BUElfR0VUX0NBVEVH
T1JZX0VOQUJMRUQgXAorICAgIFdlYkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6Z2V0VHJhY2VDYXRl
Z29yeUVuYWJsZWRGbGFnCisKKy8vIEFkZCBhIHRyYWNlIGV2ZW50IHRvIHRoZSBwbGF0Zm9ybSB0
cmFjaW5nIHN5c3RlbS4gUmV0dXJucyB0aHJlc2hvbGRCZWdpbklkCisvLyBmb3IgdXNlIGluIGEg
Y29ycmVzcG9uZGluZyBlbmQgVFJBQ0VfRVZFTlRfQVBJX0FERF9UUkFDRV9FVkVOVCBjYWxsLgor
Ly8gaW50IFRSQUNFX0VWRU5UX0FQSV9BRERfVFJBQ0VfRVZFTlQoCisvLyAgICAgICAgICAgICAg
ICAgICAgY2hhciBwaGFzZSwKKy8vICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBjYXRlZ29yeV9lbmFibGVkLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IG5hbWUsCisvLyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAorLy8g
ICAgICAgICAgICAgICAgICAgIGludCBudW1fYXJncywKKy8vICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiogYXJnX25hbWVzLAorLy8gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGFyZ190eXBlcywKKy8vICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBsb25nIGxvbmcqIGFyZ192YWx1ZXMsCisvLyAgICAgICAgICAgICAgICAgICAgaW50IHRocmVz
aG9sZEJlZ2luSUQsCisvLyAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCwK
Ky8vICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKQorI2RlZmluZSBUUkFD
RV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UIFwKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVN1cHBv
cnQ6OmFkZFRyYWNlRXZlbnQKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogLy8gSW1wbGVt
ZW50YXRpb24gZGV0YWlsOiB0cmFjZSBldmVudCBtYWNyb3MgY3JlYXRlIHRlbXBvcmFyeSB2YXJp
YWJsZXMKIC8vIHRvIGtlZXAgaW5zdHJ1bWVudGF0aW9uIG92ZXJoZWFkIGxvdy4gVGhlc2UgbWFj
cm9zIGdpdmUgZWFjaCB0ZW1wb3JhcnkKIC8vIHZhcmlhYmxlIGEgdW5pcXVlIG5hbWUgYmFzZWQg
b24gdGhlIGxpbmUgbnVtYmVyIHRvIHByZXZlbnQgbmFtZSBjb2xsaXNzaW9ucy4KLSNkZWZpbmUg
VFJBQ0VfRVZFTlRfTUFLRV9VTklRVUVfSURFTlRJRklFUjMoYSwgYikgYSMjYgotI2RlZmluZSBU
UkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElGSUVSMihhLCBiKSBUUkFDRV9FVkVOVF9NQUtF
X1VOSVFVRV9JREVOVElGSUVSMyhhLCBiKQotI2RlZmluZSBUUkFDRV9FVkVOVF9NQUtFX1VOSVFV
RV9JREVOVElGSUVSKG5hbWVfcHJlZml4KSBUUkFDRV9FVkVOVF9NQUtFX1VOSVFVRV9JREVOVElG
SUVSMihuYW1lX3ByZWZpeCwgX19MSU5FX18pCisjZGVmaW5lIElOVEVSTkFMX1RSQUNFX0VWRU5U
X1VJRDMoYSwgYikgXAorICAgIHRyYWNlX2V2ZW50X3VuaXF1ZV8jI2EjI2IKKyNkZWZpbmUgSU5U
RVJOQUxfVFJBQ0VfRVZFTlRfVUlEMihhLCBiKSBcCisgICAgSU5URVJOQUxfVFJBQ0VfRVZFTlRf
VUlEMyhhLCBiKQorI2RlZmluZSBJTlRFUk5BTFRSQUNFRVZFTlRVSUQobmFtZV9wcmVmaXgpIFwK
KyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9VSUQyKG5hbWVfcHJlZml4LCBfX0xJTkVfXykKKwor
Ly8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGlj
IGNhdGVnb3J5LgorLy8gLSBXVEZfQU5OT1RBVEVfQkVOSUdOX1JBQ0UsIHNlZSBUaHJlYWQgU2Fm
ZXR5IGFib3ZlLgorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdPUllfSU5G
TyhjYXRlZ29yeSkgXAorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyKiBJTlRFUk5BTFRS
QUNFRVZFTlRVSUQoY2F0c3RhdGljKSA9IDA7IFwKKyAgICBXVEZfQU5OT1RBVEVfQkVOSUdOX1JB
Q0UoJklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0cmFjZV9ldmVudCBjYXRlZ29yeSIpOyBcCisgICAgaWYgKCFJTlRFUk5B
TFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkgXAorICAgICAgSU5URVJOQUxUUkFDRUVWRU5UVUlE
KGNhdHN0YXRpYykgPSBcCisgICAgICAgICAgVFJBQ0VfRVZFTlRfQVBJX0dFVF9DQVRFR09SWV9F
TkFCTEVEKGNhdGVnb3J5KTsKKworLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBt
YWNybyB0byBjcmVhdGUgc3RhdGljIGNhdGVnb3J5IGFuZCBhZGQKKy8vIGV2ZW50IGlmIHRoZSBj
YXRlZ29yeSBpcyBlbmFibGVkLgorI2lmIENPTVBJTEVSKE1TVkM3X09SX0xPV0VSKQorI2RlZmlu
ZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BREQoaWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVm
aW5lIElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERChwaGFzZSwgY2F0ZWdvcnksIG5hbWUsIGZsYWdz
LCAuLi4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdPUllfSU5GTyhjYXRl
Z29yeSk7IFwKKyAgICBpZiAoKklOVEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpKSB7IFwK
KyAgICAgIFdlYkNvcmU6OlRyYWNlRXZlbnQ6OmFkZFRyYWNlRXZlbnQoIFwKKyAgICAgICAgICBw
aGFzZSwgSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIG5hbWUsIFwKKyAgICAgICAg
ICBXZWJDb3JlOjpUcmFjZUV2ZW50Ojpub0V2ZW50SWQsIGZsYWdzLCAjI19fVkFfQVJHU19fKTsg
XAorICAgIH0KKyNlbmRpZgorCisvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWw6IGludGVybmFsIG1h
Y3JvIHRvIGNyZWF0ZSBzdGF0aWMgY2F0ZWdvcnkgYW5kIGFkZCBiZWdpbgorLy8gZXZlbnQgaWYg
dGhlIGNhdGVnb3J5IGlzIGVuYWJsZWQuIEFsc28gYWRkcyB0aGUgZW5kIGV2ZW50IHdoZW4gdGhl
IHNjb3BlCisvLyBlbmRzLgorI2lmIENPTVBJTEVSKE1TVkM3X09SX0xPV0VSKQorI2RlZmluZSBJ
TlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEKGlnbm9yZSkgKCh2b2lkKTApCisjZWxzZQor
I2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEKGNhdGVnb3J5LCBuYW1lLCAu
Li4pIFwKKyAgICBJTlRFUk5BTF9UUkFDRV9FVkVOVF9HRVRfQ0FURUdPUllfSU5GTyhjYXRlZ29y
eSk7IFwKKyAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUVuZE9uU2NvcGVDbG9zZSBcCisg
ICAgICAgIElOVEVSTkFMVFJBQ0VFVkVOVFVJRChwcm9maWxlU2NvcGUpOyBcCisgICAgaWYgKCpJ
TlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSkgeyBcCisgICAgICBXZWJDb3JlOjpUcmFj
ZUV2ZW50OjphZGRUcmFjZUV2ZW50KCBcCisgICAgICAgICAgVFJBQ0VfRVZFTlRfUEhBU0VfQkVH
SU4sIFwKKyAgICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgXAorICAg
ICAgICAgIG5hbWUsIFdlYkNvcmU6OlRyYWNlRXZlbnQ6Om5vRXZlbnRJZCwgXAorICAgICAgICAg
IFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSwgIyNfX1ZBX0FSR1NfXyk7IFwKKyAgICAgIElOVEVSTkFM
VFJBQ0VFVkVOVFVJRChwcm9maWxlU2NvcGUpLmluaXRpYWxpemUoIFwKKyAgICAgICAgICBJTlRF
Uk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgbmFtZSk7IFwKKyAgICB9CisjZW5kaWYKKwor
Ly8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBpbnRlcm5hbCBtYWNybyB0byBjcmVhdGUgc3RhdGlj
IGNhdGVnb3J5IGFuZCBhZGQgYmVnaW4KKy8vIGV2ZW50IGlmIHRoZSBjYXRlZ29yeSBpcyBlbmFi
bGVkLiBBbHNvIGFkZHMgdGhlIGVuZCBldmVudCB3aGVuIHRoZSBzY29wZQorLy8gZW5kcy4gSWYg
dGhlIGVsYXBzZWQgdGltZSBpcyA8IHRocmVzaG9sZCB0aW1lLCB0aGUgYmVnaW4vZW5kIHBhaXIg
aXMgZXJhc2VkLgorI2lmIENPTVBJTEVSKE1TVkM3X09SX0xPV0VSKQorI2RlZmluZSBJTlRFUk5B
TF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdFUl9USEFOKGlnbm9yZSkgKCh2b2lkKTAp
CisjZWxzZQorI2RlZmluZSBJTlRFUk5BTF9UUkFDRV9FVkVOVF9BRERfU0NPUEVEX0lGX0xPTkdF
Ul9USEFOKHRocmVzaG9sZCwgXAorICAgICAgICBjYXRlZ29yeSwgbmFtZSwgLi4uKSBcCisgICAg
SU5URVJOQUxfVFJBQ0VfRVZFTlRfR0VUX0NBVEVHT1JZX0lORk8oY2F0ZWdvcnkpOyBcCisgICAg
V2ViQ29yZTo6VHJhY2VFdmVudDo6VHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hvbGQgXAorICAg
ICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQocHJvZmlsZVNjb3BlKTsgXAorICAgIGlmICgqSU5U
RVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAgICAgaW50IElOVEVSTkFMVFJB
Q0VFVkVOVFVJRChiZWdpbl9ldmVudF9pZCkgPSBcCisgICAgICAgIFdlYkNvcmU6OlRyYWNlRXZl
bnQ6OmFkZFRyYWNlRXZlbnQoIFwKKyAgICAgICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0JFR0lO
LCBcCisgICAgICAgICAgICBJTlRFUk5BTFRSQUNFRVZFTlRVSUQoY2F0c3RhdGljKSwgXAorICAg
ICAgICAgICAgbmFtZSwgV2ViQ29yZTo6VHJhY2VFdmVudDo6bm9FdmVudElkLCBcCisgICAgICAg
ICAgICBUUkFDRV9FVkVOVF9GTEFHX05PTkUsICMjX19WQV9BUkdTX18pOyBcCisgICAgICBJTlRF
Uk5BTFRSQUNFRVZFTlRVSUQocHJvZmlsZVNjb3BlKS5pbml0aWFsaXplKCBcCisgICAgICAgICAg
SU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYyksIG5hbWUsIFwKKyAgICAgICAgICBJTlRF
Uk5BTFRSQUNFRVZFTlRVSUQoYmVnaW5fZXZlbnRfaWQpLCB0aHJlc2hvbGQpOyBcCisgICAgfQor
I2VuZGlmCisKKy8vIEltcGxlbWVudGF0aW9uIGRldGFpbDogaW50ZXJuYWwgbWFjcm8gdG8gY3Jl
YXRlIHN0YXRpYyBjYXRlZ29yeSBhbmQgYWRkCisvLyBldmVudCBpZiB0aGUgY2F0ZWdvcnkgaXMg
ZW5hYmxlZC4KKyNpZiBDT01QSUxFUihNU1ZDN19PUl9MT1dFUikKKyNkZWZpbmUgSU5URVJOQUxf
VFJBQ0VfRVZFTlRfQUREX1dJVEhfSUQoaWdub3JlKSAoKHZvaWQpMCkKKyNlbHNlCisjZGVmaW5l
IElOVEVSTkFMX1RSQUNFX0VWRU5UX0FERF9XSVRIX0lEKHBoYXNlLCBjYXRlZ29yeSwgbmFtZSwg
aWQsIGZsYWdzLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4u
LikgXAorICAgIElOVEVSTkFMX1RSQUNFX0VWRU5UX0dFVF9DQVRFR09SWV9JTkZPKGNhdGVnb3J5
KTsgXAorICAgIGlmICgqSU5URVJOQUxUUkFDRUVWRU5UVUlEKGNhdHN0YXRpYykpIHsgXAorICAg
ICAgdW5zaWduZWQgY2hhciB0cmFjZUV2ZW50RmxhZ3MgPSBmbGFncyB8IFRSQUNFX0VWRU5UX0ZM
QUdfSEFTX0lEOyBcCisgICAgICBXZWJDb3JlOjpUcmFjZUV2ZW50OjpUcmFjZUlEIHRyYWNlRXZl
bnRUcmFjZUlEKCBcCisgICAgICAgICAgaWQsICZ0cmFjZUV2ZW50RmxhZ3MpOyBcCisgICAgICBX
ZWJDb3JlOjpUcmFjZUV2ZW50OjphZGRUcmFjZUV2ZW50KCBcCisgICAgICAgICAgcGhhc2UsIElO
VEVSTkFMVFJBQ0VFVkVOVFVJRChjYXRzdGF0aWMpLCBcCisgICAgICAgICAgbmFtZSwgdHJhY2VF
dmVudFRyYWNlSUQuZGF0YSgpLCB0cmFjZUV2ZW50RmxhZ3MsIFwKKyAgICAgICAgICAjI19fVkFf
QVJHU19fKTsgXAorICAgIH0KKyNlbmRpZgorCisvLyBOb3RlcyByZWdhcmRpbmcgdGhlIGZvbGxv
d2luZyBkZWZpbml0aW9uczoKKy8vIE5ldyB2YWx1ZXMgY2FuIGJlIGFkZGVkIGFuZCBwcm9wYWdh
dGVkIHRvIHRoaXJkIHBhcnR5IGxpYnJhcmllcywgYnV0IGV4aXN0aW5nCisvLyBkZWZpbml0aW9u
cyBtdXN0IG5ldmVyIGJlIGNoYW5nZWQsIGJlY2F1c2UgdGhpcmQgcGFydHkgbGlicmFyaWVzIG1h
eSB1c2Ugb2xkCisvLyBkZWZpbml0aW9ucy4KKworLy8gUGhhc2UgaW5kaWNhdGVzIHRoZSBuYXR1
cmUgb2YgYW4gZXZlbnQgZW50cnkuIEUuZy4gcGFydCBvZiBhIGJlZ2luL2VuZCBwYWlyLgorI2Rl
ZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9CRUdJTiAgICAoJ0InKQorI2RlZmluZSBUUkFDRV9FVkVO
VF9QSEFTRV9FTkQgICAgICAoJ0UnKQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9JTlNUQU5U
ICAoJ0knKQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9TVEFSVCAgICAoJ1MnKQorI2RlZmlu
ZSBUUkFDRV9FVkVOVF9QSEFTRV9GSU5JU0ggICAoJ0YnKQorI2RlZmluZSBUUkFDRV9FVkVOVF9Q
SEFTRV9NRVRBREFUQSAoJ00nKQorI2RlZmluZSBUUkFDRV9FVkVOVF9QSEFTRV9DT1VOVEVSICAo
J0MnKQorCisvLyBGbGFncyBmb3IgY2hhbmdpbmcgdGhlIGJlaGF2aW9yIG9mIFRSQUNFX0VWRU5U
X0FQSV9BRERfVFJBQ0VfRVZFTlQuCisjZGVmaW5lIFRSQUNFX0VWRU5UX0ZMQUdfTk9ORSAgICAg
ICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDApKQorI2RlZmluZSBUUkFDRV9FVkVOVF9G
TEFHX0NPUFkgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxIDw8IDApKQorI2Rl
ZmluZSBUUkFDRV9FVkVOVF9GTEFHX0hBU19JRCAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPigxIDw8IDEpKQorI2RlZmluZSBUUkFDRV9FVkVOVF9GTEFHX01BTkdMRV9JRCAgIChzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxIDw8IDIpKQorCisvLyBUeXBlIHZhbHVlcyBmb3IgaWRl
bnRpZnlpbmcgdHlwZXMgaW4gdGhlIFRyYWNlVmFsdWUgdW5pb24uCisjZGVmaW5lIFRSQUNFX1ZB
TFVFX1RZUEVfQk9PTCAgICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxKSkKKyNk
ZWZpbmUgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KDIpKQorI2RlZmluZSBUUkFDRV9WQUxVRV9UWVBFX0lOVCAgICAgICAgICAoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oMykpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfRE9VQkxF
ICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPig0KSkKKyNkZWZpbmUgVFJBQ0VfVkFM
VUVfVFlQRV9QT0lOVEVSICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDUpKQorI2Rl
ZmluZSBUUkFDRV9WQUxVRV9UWVBFX1NUUklORyAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oNikpCisjZGVmaW5lIFRSQUNFX1ZBTFVFX1RZUEVfQ09QWV9TVFJJTkcgIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPig3KSkKIAotLy8gSXNzdWVzIFBsYXRmb3JtU3VwcG9ydDo6dHJh
Y2VFdmVudEJlZ2luIGFuZCB0cmFjZUV2ZW50RW5kIGNhbGxzIGZvciB0aGUgZW5jbG9zaW5nIHNj
b3BlCi0jZGVmaW5lIFRSQUNFX0VWRU5UKG5hbWUsIGlkLCBleHRyYSkgV2ViQ29yZTo6aW50ZXJu
YWw6OlNjb3BlVHJhY2VyIFRSQUNFX0VWRU5UX01BS0VfVU5JUVVFX0lERU5USUZJRVIoX190cmFj
ZUV2ZW50U2NvcGUpKG5hbWUsIGlkLCBleHRyYSk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
bmFtZXNwYWNlIGludGVybmFsIHsKK25hbWVzcGFjZSBUcmFjZUV2ZW50IHsKKworLy8gU3BlY2lm
eSB0aGVzZSB2YWx1ZXMgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBvZiBhZGRUcmFj
ZUV2ZW50IGlzIG5vdAorLy8gdXNlZC4KK2NvbnN0IGludCB6ZXJvTnVtQXJncyA9IDA7Citjb25z
dCBpbnQgbm9UaHJlc2hvbGRCZWdpbklkID0gLTE7Citjb25zdCBsb25nIGxvbmcgbm9UaHJlc2hv
bGRWYWx1ZSA9IDA7Citjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgbm9FdmVudElkID0gMDsKIAot
Ly8gVXNlZCBieSBUUkFDRV9FVkVOVCBtYWNyby4gRG8gbm90IHVzZSBkaXJlY3RseS4KLWNsYXNz
IFNjb3BlVHJhY2VyIHsKKy8vIFRyYWNlSUQgZW5jYXBzdWxhdGVzIGFuIElEIHRoYXQgY2FuIGVp
dGhlciBiZSBhbiBpbnRlZ2VyIG9yIHBvaW50ZXIuIFBvaW50ZXJzCisvLyBhcmUgbWFuZ2xlZCB3
aXRoIHRoZSBQcm9jZXNzIElEIHNvIHRoYXQgdGhleSBhcmUgdW5saWtlbHkgdG8gY29sbGlkZSB3
aGVuIHRoZQorLy8gc2FtZSBwb2ludGVyIGlzIHVzZWQgb24gZGlmZmVyZW50IHByb2Nlc3Nlcy4K
K2NsYXNzIFRyYWNlSUQgewogcHVibGljOgotICAgIFNjb3BlVHJhY2VyKGNvbnN0IGNoYXIqIG5h
bWUsIHZvaWQqLCBjb25zdCBjaGFyKiBleHRyYSk7Ci0gICAgflNjb3BlVHJhY2VyKCk7CisgICAg
ZXhwbGljaXQgVHJhY2VJRChjb25zdCB2b2lkKiBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDoK
KyAgICAgICAgbV9kYXRhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4ocmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBsb25nPihpZCkpKQorICAgIHsKKyAgICAgICAgKmZsYWdzIHw9IFRS
QUNFX0VWRU5UX0ZMQUdfTUFOR0xFX0lEOworICAgIH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKHVu
c2lnbmVkIGxvbmcgbG9uZyBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDogbV9kYXRhKGlkKSB7
ICh2b2lkKWZsYWdzOyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBsb25nIGlkLCB1
bnNpZ25lZCBjaGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBl
eHBsaWNpdCBUcmFjZUlEKHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDog
bV9kYXRhKGlkKSB7ICh2b2lkKWZsYWdzOyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25l
ZCBzaG9ydCBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDogbV9kYXRhKGlkKSB7ICh2b2lkKWZs
YWdzOyB9CisgICAgZXhwbGljaXQgVHJhY2VJRCh1bnNpZ25lZCBjaGFyIGlkLCB1bnNpZ25lZCBj
aGFyKiBmbGFncykgOiBtX2RhdGEoaWQpIHsgKHZvaWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBU
cmFjZUlEKGxvbmcgbG9uZyBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDoKKyAgICAgICAgbV9k
YXRhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oaWQpKSB7ICh2b2lkKWZsYWdzOyB9
CisgICAgZXhwbGljaXQgVHJhY2VJRChsb25nIGlkLCB1bnNpZ25lZCBjaGFyKiBmbGFncykgOgor
ICAgICAgICBtX2RhdGEoc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihpZCkpIHsgKHZv
aWQpZmxhZ3M7IH0KKyAgICBleHBsaWNpdCBUcmFjZUlEKGludCBpZCwgdW5zaWduZWQgY2hhciog
ZmxhZ3MpIDoKKyAgICAgICAgbV9kYXRhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4o
aWQpKSB7ICh2b2lkKWZsYWdzOyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChzaG9ydCBpZCwgdW5z
aWduZWQgY2hhciogZmxhZ3MpIDoKKyAgICAgICAgbV9kYXRhKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmcgbG9uZz4oaWQpKSB7ICh2b2lkKWZsYWdzOyB9CisgICAgZXhwbGljaXQgVHJhY2VJRChz
aWduZWQgY2hhciBpZCwgdW5zaWduZWQgY2hhciogZmxhZ3MpIDoKKyAgICAgICAgbV9kYXRhKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oaWQpKSB7ICh2b2lkKWZsYWdzOyB9CisKKyAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCitw
cml2YXRlOgorICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX2RhdGE7Cit9OworCisvLyBTaW1wbGUg
dW5pb24gdG8gc3RvcmUgdmFyaW91cyB0eXBlcyBhcyB1bnNpZ25lZCBsb25nIGxvbmcuCit1bmlv
biBUcmFjZVZhbHVlVW5pb24geworICAgIGJvb2wgbV9ib29sOworICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyBtX3VpbnQ7CisgICAgbG9uZyBsb25nIG1faW50OworICAgIGRvdWJsZSBtX2RvdWJsZTsK
KyAgICBjb25zdCB2b2lkKiBtX3BvaW50ZXI7CisgICAgY29uc3QgY2hhciogbV9zdHJpbmc7Cit9
OwogCisvLyBTaW1wbGUgY29udGFpbmVyIGZvciBjb25zdCBjaGFyKiB0aGF0IHNob3VsZCBiZSBj
b3BpZWQgaW5zdGVhZCBvZiByZXRhaW5lZC4KK2NsYXNzIFRyYWNlU3RyaW5nV2l0aENvcHkgewor
cHVibGljOgorICAgIGV4cGxpY2l0IFRyYWNlU3RyaW5nV2l0aENvcHkoY29uc3QgY2hhciogc3Ry
KSA6IG1fc3RyKHN0cikgeyB9CisgICAgb3BlcmF0b3IgY29uc3QgY2hhciogKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHI7IH0KIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogbV9uYW1lOwotICAgIHZv
aWQqIG1faWQ7Ci0gICAgT3duQXJyYXlQdHI8Y2hhcj4gbV9leHRyYTsKKyAgICBjb25zdCBjaGFy
KiBtX3N0cjsKIH07CiAKLWlubGluZSBTY29wZVRyYWNlcjo6U2NvcGVUcmFjZXIoY29uc3QgY2hh
ciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKQotICAgIDogbV9uYW1lKG5hbWUp
Ci0gICAgLCBtX2lkKGlkKQotewotICAgIFBsYXRmb3JtU3VwcG9ydDo6dHJhY2VFdmVudEJlZ2lu
KG5hbWUsIGlkLCBleHRyYSk7IFwKLSAgICBpZiAoZXh0cmEgJiYgUGxhdGZvcm1TdXBwb3J0Ojpp
c1RyYWNlRXZlbnRFbmFibGVkKCkpCi0gICAgICAgIG1fZXh0cmEgPSBhZG9wdEFycmF5UHRyKHN0
cmR1cChleHRyYSkpOworLy8gRGVmaW5lIHNldFRyYWNlVmFsdWUgZm9yIGVhY2ggYWxsb3dlZCB0
eXBlLiBJdCBzdG9yZXMgdGhlIHR5cGUgYW5kCisvLyB2YWx1ZSBpbiB0aGUgcmV0dXJuIGFyZ3Vt
ZW50cy4gVGhpcyBhbGxvd3MgdGhpcyBBUEkgdG8gYXZvaWQgZGVjbGFyaW5nIGFueQorLy8gc3Ry
dWN0dXJlcyBzbyB0aGF0IGl0IGlzIHBvcnRhYmxlIHRvIHRoaXJkX3BhcnR5IGxpYnJhcmllcy4K
KyNkZWZpbmUgSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUUoYWN0dWFsX3R5cGUsIFwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25fbWVtYmVyLCBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGVfaWQp
IFwKKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgc2V0VHJhY2VWYWx1ZShhY3R1YWxfdHlwZSBhcmcs
IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB0
eXBlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBsb25nKiB2YWx1ZSkgeyBcCisgICAgICAgIFRyYWNlVmFsdWVVbmlvbiB0eXBlVmFsdWU7IFwK
KyAgICAgICAgdHlwZVZhbHVlLnVuaW9uX21lbWJlciA9IGFyZzsgXAorICAgICAgICAqdHlwZSA9
IHZhbHVlX3R5cGVfaWQ7IFwKKyAgICAgICAgKnZhbHVlID0gdHlwZVZhbHVlLm1fdWludDsgXAor
ICAgIH0KKy8vIFNpbXBsZXIgZm9ybSBmb3IgaW50IHR5cGVzIHRoYXQgY2FuIGJlIHNhZmVseSBj
YXN0ZWQuCisjZGVmaW5lIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChhY3R1
YWxfdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWVfdHlwZV9pZCkgXAorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRUcmFjZVZhbHVlKGFj
dHVhbF90eXBlIGFyZywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIqIHR5cGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcqIHZhbHVlKSB7IFwKKyAgICAgICAgKnR5cGUgPSB2YWx1ZV90
eXBlX2lkOyBcCisgICAgICAgICp2YWx1ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9u
Zz4oYXJnKTsgXAorICAgIH0KKworSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5U
KHVuc2lnbmVkIGxvbmcgbG9uZywgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVD
TEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIGludCwgVFJBQ0VfVkFMVUVfVFlQRV9V
SU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKHVuc2lnbmVkIHNob3J0
LCBUUkFDRV9WQUxVRV9UWVBFX1VJTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxV
RV9JTlQodW5zaWduZWQgY2hhciwgVFJBQ0VfVkFMVUVfVFlQRV9VSU5UKQorSU5URVJOQUxfREVD
TEFSRV9TRVRfVFJBQ0VfVkFMVUVfSU5UKGxvbmcgbG9uZywgVFJBQ0VfVkFMVUVfVFlQRV9JTlQp
CitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQoaW50LCBUUkFDRV9WQUxVRV9U
WVBFX0lOVCkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFX0lOVChzaG9ydCwgVFJB
Q0VfVkFMVUVfVFlQRV9JTlQpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRV9JTlQo
c2lnbmVkIGNoYXIsIFRSQUNFX1ZBTFVFX1RZUEVfSU5UKQorSU5URVJOQUxfREVDTEFSRV9TRVRf
VFJBQ0VfVkFMVUUoYm9vbCwgbV9ib29sLCBUUkFDRV9WQUxVRV9UWVBFX0JPT0wpCitJTlRFUk5B
TF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShkb3VibGUsIG1fZG91YmxlLCBUUkFDRV9WQUxVRV9U
WVBFX0RPVUJMRSkKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0IHZvaWQq
LCBtX3BvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9WQUxV
RV9UWVBFX1BPSU5URVIpCitJTlRFUk5BTF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRShjb25zdCBj
aGFyKiwgbV9zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRV9W
QUxVRV9UWVBFX1NUUklORykKK0lOVEVSTkFMX0RFQ0xBUkVfU0VUX1RSQUNFX1ZBTFVFKGNvbnN0
IFRyYWNlU3RyaW5nV2l0aENvcHkmLCBtX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSQUNFX1ZBTFVFX1RZUEVfQ09QWV9TVFJJTkcpCisKKyN1bmRlZiBJTlRFUk5B
TF9ERUNMQVJFX1NFVF9UUkFDRV9WQUxVRQorI3VuZGVmIElOVEVSTkFMX0RFQ0xBUkVfU0VUX1RS
QUNFX1ZBTFVFX0lOVAorCisvLyBXVEY6OlN0cmluZyB2ZXJzaW9uIG9mIHNldFRyYWNlVmFsdWUg
c28gdGhhdCB0cmFjZSBhcmd1bWVudHMgY2FuIGJlIHN0cmluZ3MuCitzdGF0aWMgaW5saW5lIHZv
aWQgc2V0VHJhY2VWYWx1ZShjb25zdCBXVEY6OkNTdHJpbmcmIGFyZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcqIHZhbHVlKSB7CisgICAgVHJhY2VW
YWx1ZVVuaW9uIHR5cGVWYWx1ZTsKKyAgICB0eXBlVmFsdWUubV9zdHJpbmcgPSBhcmcuZGF0YSgp
OworICAgICp0eXBlID0gVFJBQ0VfVkFMVUVfVFlQRV9DT1BZX1NUUklORzsKKyAgICAqdmFsdWUg
PSB0eXBlVmFsdWUubV91aW50OwogfQogCi1pbmxpbmUgU2NvcGVUcmFjZXI6On5TY29wZVRyYWNl
cigpCi17Ci0gICAgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2ZW50RW5kKG1fbmFtZSwgbV9pZCwg
bV9leHRyYS5nZXQoKSk7CisvLyBUaGVzZSBhZGRUcmFjZUV2ZW50IHRlbXBsYXRlIGZ1bmN0aW9u
cyBhcmUgZGVmaW5lZCBoZXJlIGluc3RlYWQgb2YgaW4gdGhlCisvLyBtYWNybywgYmVjYXVzZSB0
aGUgYXJnIHZhbHVlcyBjb3VsZCBiZSB0ZW1wb3Jhcnkgc3RyaW5nIG9iamVjdHMuIEluIG9yZGVy
IHRvCisvLyBzdG9yZSBwb2ludGVycyB0byB0aGUgaW50ZXJuYWwgY19zdHIgYW5kIHBhc3MgdGhy
b3VnaCB0byB0aGUgdHJhY2luZyBBUEksIHRoZQorLy8gYXJnIHZhbHVlcyBtdXN0IGxpdmUgdGhy
b3VnaG91dCB0aGVzZSBwcm9jZWR1cmVzLgorCitzdGF0aWMgaW5saW5lIGludCBhZGRUcmFjZUV2
ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyIGZsYWdzKSB7CisgICAgcmV0dXJuIFRSQUNFX0VWRU5UX0FQSV9BRERfVFJB
Q0VfRVZFTlQoCisgICAgICAgIHBoYXNlLCBjYXRlZ29yeUVuYWJsZWQsIG5hbWUsIGlkLAorICAg
ICAgICB6ZXJvTnVtQXJncywgMCwgMCwgMCwKKyAgICAgICAgbm9UaHJlc2hvbGRCZWdpbklkLCBu
b1RocmVzaG9sZFZhbHVlLCBmbGFncyk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEFSRzFfVFlQRT4K
K3N0YXRpYyBpbmxpbmUgaW50IGFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFyZzFOYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcxX1RZUEUmIGFyZzFWYWwpIHsKKyAgICBj
b25zdCBpbnQgbnVtQXJncyA9IDE7CisgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1sxXTsKKyAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgYXJnVmFsdWVzWzFdOworICAgIHNldFRyYWNlVmFsdWUoYXJn
MVZhbCwgJmFyZ1R5cGVzWzBdLCAmYXJnVmFsdWVzWzBdKTsKKyAgICByZXR1cm4gVFJBQ0VfRVZF
TlRfQVBJX0FERF9UUkFDRV9FVkVOVCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5hYmxlZCwg
bmFtZSwgaWQsCisgICAgICAgIG51bUFyZ3MsICZhcmcxTmFtZSwgYXJnVHlwZXMsIGFyZ1ZhbHVl
cywKKyAgICAgICAgbm9UaHJlc2hvbGRCZWdpbklkLCBub1RocmVzaG9sZFZhbHVlLCBmbGFncyk7
CiB9CiAKLX0gLy8gbmFtZXNwYWNlIGludGVybmFsCit0ZW1wbGF0ZTxjbGFzcyBBUkcxX1RZUEUs
IGNsYXNzIEFSRzJfVFlQRT4KK3N0YXRpYyBpbmxpbmUgaW50IGFkZFRyYWNlRXZlbnQoY2hhciBw
aGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hh
ciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFy
ZzFOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcxX1RZUEUm
IGFyZzFWYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFy
ZzJOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcyX1RZUEUm
IGFyZzJWYWwpIHsKKyAgICBjb25zdCBpbnQgbnVtQXJncyA9IDI7CisgICAgY29uc3QgY2hhciog
YXJnTmFtZXNbMl0gPSB7IGFyZzFOYW1lLCBhcmcyTmFtZSB9OworICAgIHVuc2lnbmVkIGNoYXIg
YXJnVHlwZXNbMl07CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGFyZ1ZhbHVlc1syXTsKKyAgICBz
ZXRUcmFjZVZhbHVlKGFyZzFWYWwsICZhcmdUeXBlc1swXSwgJmFyZ1ZhbHVlc1swXSk7CisgICAg
c2V0VHJhY2VWYWx1ZShhcmcyVmFsLCAmYXJnVHlwZXNbMV0sICZhcmdWYWx1ZXNbMV0pOworICAg
IHJldHVybiBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAgICBwaGFzZSwg
Y2F0ZWdvcnlFbmFibGVkLCBuYW1lLCBpZCwKKyAgICAgICAgbnVtQXJncywgYXJnTmFtZXMsIGFy
Z1R5cGVzLCBhcmdWYWx1ZXMsCisgICAgICAgIG5vVGhyZXNob2xkQmVnaW5JZCwgbm9UaHJlc2hv
bGRWYWx1ZSwgZmxhZ3MpOworfQorCisvLyBVc2VkIGJ5IFRSQUNFX0VWRU5UeCBtYWNyby4gRG8g
bm90IHVzZSBkaXJlY3RseS4KK2NsYXNzIFRyYWNlRW5kT25TY29wZUNsb3NlIHsKK3B1YmxpYzoK
KyAgICAvLyBOb3RlOiBtZW1iZXJzIG9mIG1fZGF0YSBpbnRlbnRpb25hbGx5IGxlZnQgdW5pbml0
aWFsaXplZC4gU2VlIGluaXRpYWxpemUuCisgICAgVHJhY2VFbmRPblNjb3BlQ2xvc2UoKSA6IG1f
cGRhdGEoMCkgeyB9CisgICAgflRyYWNlRW5kT25TY29wZUNsb3NlKCkKKyAgICB7CisgICAgICAg
IGlmIChtX3BkYXRhKQorICAgICAgICAgICAgYWRkRXZlbnRJZkVuYWJsZWQoKTsKKyAgICB9CisK
KyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVk
LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lKQorICAgIHsKKyAgICAgICAg
bV9kYXRhLmNhdGVnb3J5RW5hYmxlZCA9IGNhdGVnb3J5RW5hYmxlZDsKKyAgICAgICAgbV9kYXRh
Lm5hbWUgPSBuYW1lOworICAgICAgICBtX3BkYXRhID0gJm1fZGF0YTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgLy8gQWRkIHRoZSBlbmQgZXZlbnQgaWYgdGhlIGNhdGVnb3J5IGlzIHN0aWxsIGVu
YWJsZWQuCisgICAgdm9pZCBhZGRFdmVudElmRW5hYmxlZCgpCisgICAgeworICAgICAgICAvLyBP
bmx5IGNhbGxlZCB3aGVuIG1fcGRhdGEgaXMgbm9uLW51bGwuCisgICAgICAgIGlmICgqbV9wZGF0
YS0+Y2F0ZWdvcnlFbmFibGVkKSB7CisgICAgICAgICAgICBUUkFDRV9FVkVOVF9BUElfQUREX1RS
QUNFX0VWRU5UKAorICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UX1BIQVNFX0VORCwKKyAgICAg
ICAgICAgICAgICBtX3BkYXRhLT5jYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgbV9w
ZGF0YS0+bmFtZSwgbm9FdmVudElkLAorICAgICAgICAgICAgICAgIHplcm9OdW1BcmdzLCAwLCAw
LCAwLAorICAgICAgICAgICAgICAgIG5vVGhyZXNob2xkQmVnaW5JZCwgbm9UaHJlc2hvbGRWYWx1
ZSwgVFJBQ0VfRVZFTlRfRkxBR19OT05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRo
aXMgRGF0YSBzdHJ1Y3Qgd29ya2Fyb3VuZCBpcyB0byBhdm9pZCBpbml0aWFsaXppbmcgYWxsIHRo
ZSBtZW1iZXJzCisgICAgLy8gaW4gRGF0YSBkdXJpbmcgY29uc3RydWN0aW9uIG9mIHRoaXMgb2Jq
ZWN0LCBzaW5jZSB0aGlzIG9iamVjdCBpcyBhbHdheXMKKyAgICAvLyBjb25zdHJ1Y3RlZCwgZXZl
biB3aGVuIHRyYWNpbmcgaXMgZGlzYWJsZWQuIElmIHRoZSBtZW1iZXJzIG9mIERhdGEgd2VyZQor
ICAgIC8vIG1lbWJlcnMgb2YgdGhpcyBjbGFzcyBpbnN0ZWFkLCBjb21waWxlciB3YXJuaW5ncyBv
Y2N1ciBhYm91dCBwb3RlbnRpYWwKKyAgICAvLyB1bmluaXRpYWxpemVkIGFjY2Vzc2VzLgorICAg
IHN0cnVjdCBEYXRhIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFi
bGVkOworICAgICAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIH07CisgICAgRGF0YSogbV9wZGF0
YTsKKyAgICBEYXRhIG1fZGF0YTsKK307CisKKy8vIFVzZWQgYnkgVFJBQ0VfRVZFTlR4IG1hY3Jv
LiBEbyBub3QgdXNlIGRpcmVjdGx5LgorY2xhc3MgVHJhY2VFbmRPblNjb3BlQ2xvc2VUaHJlc2hv
bGQgeworcHVibGljOgorICAgIC8vIE5vdGU6IG1lbWJlcnMgb2YgbV9kYXRhIGludGVudGlvbmFs
bHkgbGVmdCB1bmluaXRpYWxpemVkLiBTZWUgaW5pdGlhbGl6ZS4KKyAgICBUcmFjZUVuZE9uU2Nv
cGVDbG9zZVRocmVzaG9sZCgpIDogbV9wZGF0YSgwKSB7IH0KKyAgICB+VHJhY2VFbmRPblNjb3Bl
Q2xvc2VUaHJlc2hvbGQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGRhdGEpCisgICAgICAgICAg
ICBhZGRFdmVudElmRW5hYmxlZCgpOworICAgIH0KKworICAgIC8vIENhbGxlZCBieSBtYWNyb3Mg
b25seSB3aGVuIHRyYWNpbmcgaXMgZW5hYmxlZCBhdCB0aGUgcG9pbnQgd2hlbiB0aGUgYmVnaW4K
KyAgICAvLyBldmVudCBpcyBhZGRlZC4KKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgdW5zaWdu
ZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBuYW1lLAorICAgICAgICAgICAgICAgICAgICBpbnQgdGhyZXNob2xkQmVnaW5JRCwKKyAgICAg
ICAgICAgICAgICAgICAgbG9uZyBsb25nIHRocmVzaG9sZCkKKyAgICB7CisgICAgICAgIG1fZGF0
YS5jYXRlZ29yeUVuYWJsZWQgPSBjYXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIG1fZGF0YS5uYW1l
ID0gbmFtZTsKKyAgICAgICAgbV9kYXRhLnRocmVzaG9sZEJlZ2luSUQgPSB0aHJlc2hvbGRCZWdp
bklEOworICAgICAgICBtX2RhdGEudGhyZXNob2xkID0gdGhyZXNob2xkOworICAgICAgICBtX3Bk
YXRhID0gJm1fZGF0YTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgLy8gQWRkIHRoZSBlbmQgZXZl
bnQgaWYgdGhlIGNhdGVnb3J5IGlzIHN0aWxsIGVuYWJsZWQuCisgICAgdm9pZCBhZGRFdmVudElm
RW5hYmxlZCgpCisgICAgeworICAgICAgICAvLyBPbmx5IGNhbGxlZCB3aGVuIG1fcGRhdGEgaXMg
bm9uLW51bGwuCisgICAgICAgIGlmICgqbV9wZGF0YS0+Y2F0ZWdvcnlFbmFibGVkKSB7CisgICAg
ICAgICAgICBUUkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAorICAgICAgICAgICAgICAg
IFRSQUNFX0VWRU5UX1BIQVNFX0VORCwKKyAgICAgICAgICAgICAgICBtX3BkYXRhLT5jYXRlZ29y
eUVuYWJsZWQsCisgICAgICAgICAgICAgICAgbV9wZGF0YS0+bmFtZSwgbm9FdmVudElkLAorICAg
ICAgICAgICAgICAgIHplcm9OdW1BcmdzLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgIG1fcGRh
dGEtPnRocmVzaG9sZEJlZ2luSUQsIG1fcGRhdGEtPnRocmVzaG9sZCwKKyAgICAgICAgICAgICAg
ICBUUkFDRV9FVkVOVF9GTEFHX05PTkUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhp
cyBEYXRhIHN0cnVjdCB3b3JrYXJvdW5kIGlzIHRvIGF2b2lkIGluaXRpYWxpemluZyBhbGwgdGhl
IG1lbWJlcnMKKyAgICAvLyBpbiBEYXRhIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgdGhpcyBvYmpl
Y3QsIHNpbmNlIHRoaXMgb2JqZWN0IGlzIGFsd2F5cworICAgIC8vIGNvbnN0cnVjdGVkLCBldmVu
IHdoZW4gdHJhY2luZyBpcyBkaXNhYmxlZC4gSWYgdGhlIG1lbWJlcnMgb2YgRGF0YSB3ZXJlCisg
ICAgLy8gbWVtYmVycyBvZiB0aGlzIGNsYXNzIGluc3RlYWQsIGNvbXBpbGVyIHdhcm5pbmdzIG9j
Y3VyIGFib3V0IHBvdGVudGlhbAorICAgIC8vIHVuaW5pdGlhbGl6ZWQgYWNjZXNzZXMuCisgICAg
c3RydWN0IERhdGEgeworICAgICAgICBsb25nIGxvbmcgdGhyZXNob2xkOworICAgICAgICBjb25z
dCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQ7CisgICAgICAgIGNvbnN0IGNoYXIqIG5h
bWU7CisgICAgICAgIGludCB0aHJlc2hvbGRCZWdpbklEOworICAgIH07CisgICAgRGF0YSogbV9w
ZGF0YTsKKyAgICBEYXRhIG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFRyYWNlRXZlbnQK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCmlu
ZGV4IDU0Nzk1ZmE0OGU3ZDMwMTBjYzAxZjczYzgxMzRmZWE1NzU1OTk1YTkuLjNiZjRjYjQzYWJm
NDhhMTkwNGMxMGUwN2JjYTljY2Q0MTU4Mjg1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9y
dC5oCkBAIC0yNDAsMTEgKzI0MCw3NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlY3Jl
bWVudFN0YXRzQ291bnRlcihjb25zdCBjaGFyKiBuYW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
aW5jcmVtZW50U3RhdHNDb3VudGVyKGNvbnN0IGNoYXIqIG5hbWUpIHsgfQogCi0gICAgLy8gQW4g
ZXZlbnQgaXMgaWRlbnRpZmllZCBieSB0aGUgcGFpciAobmFtZSwgaWQpLiBUaGUgZXh0cmEgcGFy
YW1ldGVyCi0gICAgLy8gc3BlY2lmaWVzIGFkZGl0aW9uYWwgZGF0YSB0byBsb2cgd2l0aCB0aGUg
ZXZlbnQuCi0gICAgdmlydHVhbCBib29sIGlzVHJhY2VFdmVudEVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNlRXZlbnRCZWdpbihjb25zdCBjaGFy
KiBuYW1lLCB2b2lkKiBpZCwgY29uc3QgY2hhciogZXh0cmEpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCB0cmFjZUV2ZW50RW5kKGNvbnN0IGNoYXIqIG5hbWUsIHZvaWQqIGlkLCBjb25zdCBjaGFyKiBl
eHRyYSkgeyB9CisgICAgLy8gVHJhY2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBHZXQgYSBwb2ludGVyIHRv
IHRoZSBlbmFibGVkIHN0YXRlIG9mIHRoZSBnaXZlbiB0cmFjZSBjYXRlZ29yeS4gVGhlCisgICAg
Ly8gZW1iZWRkZXIgY2FuIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgZW5hYmxlZCBzdGF0ZSBhcyB0
cmFjZSBldmVudAorICAgIC8vIHJlY29yZGluZyBpcyBzdGFydGVkIGFuZCBzdG9wcGVkIGJ5IHRo
ZSBhcHBsaWNhdGlvbi4gT25seSBsb25nLWxpdmVkCisgICAgLy8gbGl0ZXJhbCBzdHJpbmdzIHNo
b3VsZCBiZSBnaXZlbiBhcyB0aGUgY2F0ZWdvcnkgbmFtZS4gVGhlIGltcGxlbWVudGF0aW9uCisg
ICAgLy8gZXhwZWN0cyB0aGUgcmV0dXJuZWQgcG9pbnRlciB0byBiZSBoZWxkIHBlcm1hbmVudGx5
IGluIGEgbG9jYWwgc3RhdGljLiBJZgorICAgIC8vIHRoZSB1bnNpZ25lZCBjaGFyIGlzIG5vbi16
ZXJvLCB0cmFjaW5nIGlzIGVuYWJsZWQuIElmIHRyYWNpbmcgaXMgZW5hYmxlZCwKKyAgICAvLyBh
ZGRUcmFjZUV2ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBieSB0aGUgdHJhY2UgZXZlbnQg
bWFjcm9zLgorICAgIHZpcnR1YWwgY29uc3QgdW5zaWduZWQgY2hhciogZ2V0VHJhY2VDYXRlZ29y
eUVuYWJsZWRGbGFnKGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZSkgeyByZXR1cm4gMDsgfQorICAg
IC8vIEFkZCBhIHRyYWNlIGV2ZW50IHRvIHRoZSBwbGF0Zm9ybSB0cmFjaW5nIHN5c3RlbS4gRGVw
ZW5kaW5nIG9uIHRoZSBhY3R1YWwKKyAgICAvLyBlbmFibGVkIHN0YXRlLCB0aGlzIGV2ZW50IG1h
eSBiZSByZWNvcmRlZCBvciBkcm9wcGVkLiBSZXR1cm5zCisgICAgLy8gdGhyZXNob2xkQmVnaW5J
ZCBmb3IgdXNlIGluIGEgY29ycmVzcG9uZGluZyBlbmQgYWRkVHJhY2VFdmVudCBjYWxsLgorICAg
IC8vIC0gcGhhc2Ugc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGV2ZW50OgorICAgIC8vICAgLSBCRUdJ
TiAoJ0InKTogTWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIHNjb3BlZCBldmVudC4KKyAgICAvLyAg
IC0gRU5EICgnRScpOiBNYXJrcyB0aGUgZW5kIG9mIGEgc2NvcGVkIGV2ZW50LgorICAgIC8vICAg
LSBJTlNUQU5UICgnSScpOiBTdGFuZGFsb25lLCBpbnN0YW50YW5lb3VzIGV2ZW50LgorICAgIC8v
ICAgLSBTVEFSVCAoJ1MnKTogTWFya3MgdGhlIGJlZ2lubmluZyBvZiBhbiBhc3luY2hyb25vdXMg
ZXZlbnQgKHRoZSBlbmQKKyAgICAvLyAgICAgZXZlbnQgY2FuIG9jY3VyIGluIGEgZGlmZmVyZW50
IHNjb3BlIG9yIHRocmVhZCkuIFRoZSBpZCBwYXJhbWV0ZXIgaXMKKyAgICAvLyAgICAgdXNlZCB0
byBtYXRjaCBTVEFSVC9GSU5JU0ggcGFpcnMuCisgICAgLy8gICAtIEZJTklTSCAoJ0YnKTogTWFy
a3MgdGhlIGVuZCBvZiBhbiBhc3luY2hyb25vdXMgZXZlbnQuCisgICAgLy8gICAtIENPVU5URVIg
KCdDJyk6IFVzZWQgdG8gdHJhY2UgaW50ZWdlciBxdWFudGl0aWVzIHRoYXQgY2hhbmdlIG92ZXIK
KyAgICAvLyAgICAgdGltZS4gVGhlIGFyZ3VtZW50IHZhbHVlcyBhcmUgZXhwZWN0ZWQgdG8gYmUg
b2YgdHlwZSBpbnQuCisgICAgLy8gICAtIE1FVEFEQVRBICgnTScpOiBSZXNlcnZlZCBmb3IgaW50
ZXJuYWwgdXNlLgorICAgIC8vIC0gY2F0ZWdvcnlFbmFibGVkIGlzIHRoZSBwb2ludGVyIHJldHVy
bmVkIGJ5IGdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZy4KKyAgICAvLyAtIG5hbWUgaXMgdGhl
IG5hbWUgb2YgdGhlIGV2ZW50LiBBbHNvIHVzZWQgdG8gbWF0Y2ggQkVHSU4vRU5EIGFuZAorICAg
IC8vICAgU1RBUlQvRklOSVNIIHBhaXJzLgorICAgIC8vIC0gaWQgb3B0aW9uYWxseSBhbGxvd3Mg
ZXZlbnRzIG9mIHRoZSBzYW1lIG5hbWUgdG8gYmUgZGlzdGluZ3Vpc2hlZCBmcm9tCisgICAgLy8g
ICBlYWNoIG90aGVyLiBGb3IgZXhhbXBsZSwgdG8gdHJhY2UgdGhlIGNvbnN1dHJ1Y3Rpb24gYW5k
IGRlc3RydWN0aW9uIG9mCisgICAgLy8gICBvYmplY3RzLCBzcGVjaWZ5IHRoZSBwb2ludGVyIGFz
IHRoZSBpZCBwYXJhbWV0ZXIuCisgICAgLy8gLSBudW1BcmdzIHNwZWNpZmllcyB0aGUgbnVtYmVy
IG9mIGVsZW1lbnRzIGluIGFyZ05hbWVzLCBhcmdUeXBlcywgYW5kCisgICAgLy8gICBhcmdWYWx1
ZXMuCisgICAgLy8gLSBhcmdOYW1lcyBpcyB0aGUgYXJyYXkgb2YgYXJndW1lbnQgbmFtZXMuIFVz
ZSBsb25nLWxpdmVkIGxpdGVyYWwgc3RyaW5ncworICAgIC8vICAgb3Igc3BlY2lmeSB0aGUgQ09Q
WSBmbGFnLgorICAgIC8vIC0gYXJnVHlwZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50IHR5cGVz
OgorICAgIC8vICAgLSBCT09MICgxKTogYm9vbAorICAgIC8vICAgLSBVSU5UICgyKTogdW5zaWdu
ZWQgbG9uZyBsb25nCisgICAgLy8gICAtIElOVCAoMyk6IGxvbmcgbG9uZworICAgIC8vICAgLSBE
T1VCTEUgKDQpOiBkb3VibGUKKyAgICAvLyAgIC0gUE9JTlRFUiAoNSk6IHZvaWQqCisgICAgLy8g
ICAtIFNUUklORyAoNik6IGNoYXIqIChsb25nLWxpdmVkIG51bGwtdGVybWluYXRlZCBjaGFyKiBz
dHJpbmcpCisgICAgLy8gICAtIENPUFlfU1RSSU5HICg3KTogY2hhciogKHRlbXBvcmFyeSBudWxs
LXRlcm1pbmF0ZWQgY2hhciogc3RyaW5nKQorICAgIC8vIC0gYXJnVmFsdWVzIGlzIHRoZSBhcnJh
eSBvZiBhcmd1bWVudCB2YWx1ZXMuIEVhY2ggdmFsdWUgaXMgdGhlIHVuc2lnbmVkCisgICAgLy8g
ICBsb25nIGxvbmcgbWVtYmVyIG9mIGEgdW5pb24gb2YgYWxsIHN1cHBvcnRlZCB0eXBlcy4KKyAg
ICAvLyAtIHRocmVzaG9sZEJlZ2luSWQgb3B0aW9uYWxseSBzcGVjaWZpZXMgdGhlIHZhbHVlIHJl
dHVybmVkIGJ5IGEgcHJldmlvdXMKKyAgICAvLyAgIGNhbGwgdG8gYWRkVHJhY2VFdmVudCB3aXRo
IGEgQkVHSU4gcGhhc2UuCisgICAgLy8gLSB0aHJlc2hvbGQgaXMgdXNlZCBvbiBhbiBFTkQgcGhh
c2UgZXZlbnQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKKyAgICAvLyAgIHRocmVzaG9sZEJlZ2lu
SWQgb2YgYSBwcmlvciBCRUdJTiBldmVudC4gVGhlIHRocmVzaG9sZCBpcyB0aGUgbWluaW11bQor
ICAgIC8vICAgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyB0aGF0IG11c3QgaGF2ZSBwYXNzZWQgc2lu
Y2UgdGhlIEJFR0lOIGV2ZW50LiBJZgorICAgIC8vICAgbGVzcyB0aGFuIHRocmVzaG9sZCBtaWNy
b3NlY29uZHMgaGFzIHBhc3NlZCwgdGhlIEJFR0lOL0VORCBwYWlyIGlzCisgICAgLy8gICBkcm9w
cGVkLgorICAgIC8vIC0gZmxhZ3MgY2FuIGJlIDAgb3Igb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxv
d2luZywgT1JlZCB0b2dldGhlcjoKKyAgICAvLyAgIC0gQ09QWSAoMHgxKTogdHJlYXQgYWxsIHN0
cmluZ3MgKG5hbWUsIGFyZ05hbWVzIGFuZCBhcmdWYWx1ZXMgb2YgdHlwZQorICAgIC8vICAgICBz
dHJpbmcpIGFzIHRlbXBvcmFyeSBzbyB0aGF0IHRoZXkgd2lsbCBiZSBjb3BpZWQgYnkgYWRkVHJh
Y2VFdmVudC4KKyAgICAvLyAgIC0gSEFTX0lEICgweDIpOiB1c2UgdGhlIGlkIGFyZ3VtZW50IHRv
IHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBldmVudCBmb3IKKyAgICAvLyAgICAgbWF0Y2hpbmcgd2l0
aCBvdGhlciBldmVudHMgb2YgdGhlIHNhbWUgbmFtZS4KKyAgICAvLyAgIC0gTUFOR0xFX0lEICgw
eDQpOiBzcGVjaWZ5IHRoaXMgZmxhZyBpZiB0aGUgaWQgcGFyYW1ldGVyIGlzIHRoZSB2YWx1ZQor
ICAgIC8vICAgICBvZiBhIHBvaW50ZXIuCisgICAgdmlydHVhbCBpbnQgYWRkVHJhY2VFdmVudCgK
KyAgICAgICAgY2hhciBwaGFzZSwKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdv
cnlFbmFibGVkRmxhZywKKyAgICAgICAgY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIGlkLAorICAgICAgICBpbnQgbnVtQXJncywKKyAgICAgICAgY29uc3QgY2hh
cioqIGFyZ05hbWVzLAorICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBhcmdUeXBlcywKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nKiBhcmdWYWx1ZXMsCisgICAgICAgIGludCB0
aHJlc2hvbGRCZWdpbklkLAorICAgICAgICBsb25nIGxvbmcgdGhyZXNob2xkLAorICAgICAgICB1
bnNpZ25lZCBjaGFyIGZsYWdzKSB7IHJldHVybiAtMTsgfQogCiAgICAgLy8gQ2FsbGJhY2tzIGZv
ciByZXBvcnRpbmcgaGlzdG9ncmFtIGRhdGEuCiAgICAgLy8gQ3VzdG9tQ291bnRzIGhpc3RvZ3Jh
bSBoYXMgZXhwb25lbnRpYWwgYnVja2V0IHNpemVzLCBzbyB0aGF0IG1pbj0xLCBtYXg9MTAwMDAw
MCwgYnVja2V0Q291bnQ9NTAgd291bGQgZG8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvUGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCBiNGQ0NzljYTYwZjIxMDQ2NGEyMTMyMmQzZGJi
MmZlMmQ1ZjBhYTIyLi42M2JlMDI0NWNjMzVkNDkwZmNmNjhkYTJiZTM5YmRhOGE2ZGRiM2FhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKQEAg
LTk0NywxOSArOTQ3LDI0IEBAIHZvaWQgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydCgK
IAogLy8gVHJhY2UgRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1ib29sIFBsYXRmb3JtU3VwcG9ydDo6aXNUcmFj
ZUV2ZW50RW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5p
c1RyYWNlRXZlbnRFbmFibGVkKCk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1TdXBwb3J0Ojp0cmFjZUV2
ZW50QmVnaW4oY29uc3QgY2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKQot
ewotICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT50cmFjZUV2ZW50QmVnaW4obmFtZSwgaWQs
IGV4dHJhKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OnRyYWNlRXZlbnRFbmQoY29uc3Qg
Y2hhciogbmFtZSwgdm9pZCogaWQsIGNvbnN0IGNoYXIqIGV4dHJhKQotewotICAgIHdlYktpdFBs
YXRmb3JtU3VwcG9ydCgpLT50cmFjZUV2ZW50RW5kKG5hbWUsIGlkLCBleHRyYSk7Citjb25zdCB1
bnNpZ25lZCBjaGFyKiBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxh
Zyhjb25zdCBjaGFyKiBjYXRlZ29yeU5hbWUpCit7CisgICAgcmV0dXJuIHdlYktpdFBsYXRmb3Jt
U3VwcG9ydCgpLT5nZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY2F0ZWdvcnlOYW1lKTsKK30K
K2ludCBQbGF0Zm9ybVN1cHBvcnQ6OmFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlF
bmFibGVkRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtQXJn
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhcioqIGFyZ05h
bWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBhcmdUeXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBsb25nKiBhcmdWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCB0aHJlc2hvbGRCZWdpbklkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb25nIGxvbmcgdGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKQoreworICAgIHJldHVybiB3ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQoKS0+YWRkVHJhY2VFdmVudCgKKyAgICAgICAgcGhhc2UsIGNhdGVnb3J5RW5h
YmxlZEZsYWcsIG5hbWUsIGlkLCBudW1BcmdzLCBhcmdOYW1lcywgYXJnVHlwZXMsIGFyZ1ZhbHVl
cywgIHRocmVzaG9sZEJlZ2luSWQsIHRocmVzaG9sZCwgZmxhZ3MpOwogfQogCiAvLyBWaXNpdGVk
IExpbmtzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>