<?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>47230</bug_id>
          
          <creation_ts>2010-10-05 16:58:37 -0700</creation_ts>
          <short_desc>Avoid inlining large and/or virtual functions in widely included header files</short_desc>
          <delta_ts>2010-10-08 19:00:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>289981</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-05 16:58:37 -0700</bug_when>
    <thetext>Avoid inlining large and/or virtual functions in widely included header files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289984</commentid>
    <comment_count>1</comment_count>
      <attachid>69868</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-05 17:07:54 -0700</bug_when>
    <thetext>Created attachment 69868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289985</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-05 17:12:12 -0700</bug_when>
    <thetext>Based on some work initially done by Elliot Glaysher from the Chrome team.

One particularly nasty anti-pattern I&apos;ve seen a lot in our codebase is this:

Foo.h:
class Foo {
public:
    virtual ~Foo();
};

Bar.h:
class Bar : public Foo {
  HashSet&lt;String&gt; m_set;
};


With this sort of construct, the implicitly defined destructor for Foo is placed in the header and inlines the very large HashSet destructor into every object file that #includes Bar.h.  Since Bar::~Bar is virtual the compiler can&apos;t inline this code even if it wanted to.  Thanks to this we end up with 800+ copies of common destructors spread across object files across the system.  I&apos;d like it if we had some sort of automated system to detect this antipattern, if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289988</commentid>
    <comment_count>3</comment_count>
      <attachid>69868</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-05 17:26:59 -0700</bug_when>
    <thetext>Comment on attachment 69868
Patch

Patch doesn&apos;t apply, will resolve and reupload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289989</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-05 17:32:01 -0700</bug_when>
    <thetext>Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289993</commentid>
    <comment_count>5</comment_count>
      <attachid>69869</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-05 17:36:20 -0700</bug_when>
    <thetext>Created attachment 69869
applies to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289999</commentid>
    <comment_count>6</comment_count>
      <attachid>69869</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-05 17:47:52 -0700</bug_when>
    <thetext>Comment on attachment 69869
applies to ToT

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

&lt;3

&gt; WebCore/dom/QualifiedName.h:63
&gt; -    ~QualifiedName() { deref(); }
&gt; +    ~QualifiedName();

You sure there&apos;s no perf hit from making this non-inline?

&gt; WebCore/platform/network/HTTPHeaderMap.cpp:80
&gt; +

Extra blank lines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290013</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-05 18:09:12 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 69869 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69869&amp;action=review
&gt; 
&gt; &lt;3
&gt; 
&gt; &gt; WebCore/dom/QualifiedName.h:63
&gt; &gt; -    ~QualifiedName() { deref(); }
&gt; &gt; +    ~QualifiedName();
&gt; 
&gt; You sure there&apos;s no perf hit from making this non-inline?

QualifiedName::deref is not defined inline (either with this patch or without it) so the compiler can&apos;t do any useful inlining here anyway.

&gt; 
&gt; &gt; WebCore/platform/network/HTTPHeaderMap.cpp:80
&gt; &gt; +
&gt; 
&gt; Extra blank lines?

Whoops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290015</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-05 18:12:58 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 69869 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69869&amp;action=review
&gt; &gt; 
&gt; &gt; &lt;3
&gt; &gt; 
&gt; &gt; &gt; WebCore/dom/QualifiedName.h:63
&gt; &gt; &gt; -    ~QualifiedName() { deref(); }
&gt; &gt; &gt; +    ~QualifiedName();
&gt; &gt; 
&gt; &gt; You sure there&apos;s no perf hit from making this non-inline?
&gt; 
&gt; QualifiedName::deref is not defined inline (either with this patch or without it) so the compiler can&apos;t do any useful inlining here anyway.

This doesn&apos;t add an extra jmp?  QualifiedNames get created and destroyed very, very often.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290024</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-05 18:22:52 -0700</bug_when>
    <thetext>The compiler is free to inline the body of QN::deref() into the destructor in QualifiedName.o since they are in the same translation unit.  External callers (i.e. those in different translation units) will still do one jump, either to ~QualifiedName or to deref.  I&apos;ll double-check this change in isolation on the html parser benchmark to be sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290032</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-05 18:48:23 -0700</bug_when>
    <thetext>Attachment 69869 did not build on mac:
Build output: http://queues.webkit.org/results/4218089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290313</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-06 08:26:23 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; The compiler is free to inline the body of QN::deref() into the destructor in QualifiedName.o since they are in the same translation unit.  External callers (i.e. those in different translation units) will still do one jump, either to ~QualifiedName or to deref.  I&apos;ll double-check this change in isolation on the html parser benchmark to be sure.

I’m pretty sure we inlined that because of a measurable speedup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290314</commentid>
    <comment_count>12</comment_count>
      <attachid>69869</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-06 08:27:20 -0700</bug_when>
    <thetext>Comment on attachment 69869
applies to ToT

The added explicit keywords are great, but unrelated.

I think this goes overboard. Some of these inlined functions are more efficient than if they were compiled separately. Measuring the benefit by looking at object file sizes and not at end-user phenomena such as the total executable size or the speed of WebKit means you are seeing only part of the picture.

There’s a good chance this hurt performance, and I don’t see any evidence you measured performance.

It’s also inelegant to declare lots of empty destructors when the compiler will already do the right thing by default. There needs to be a significant benefit, because the explicit destructors make the classes more wordy, which hurts readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290318</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-06 08:30:23 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; One particularly nasty anti-pattern I&apos;ve seen a lot in our codebase is this:
&gt; 
&gt; Foo.h:
&gt; class Foo {
&gt; public:
&gt;     virtual ~Foo();
&gt; };
&gt; 
&gt; Bar.h:
&gt; class Bar : public Foo {
&gt;   HashSet&lt;String&gt; m_set;
&gt; };
&gt; 
&gt; 
&gt; With this sort of construct, the implicitly defined destructor for Foo is placed in the header and inlines the very large HashSet destructor into every object file that #includes Bar.h.  Since Bar::~Bar is virtual the compiler can&apos;t inline this code even if it wanted to.  Thanks to this we end up with 800+ copies of common destructors spread across object files across the system.  I&apos;d like it if we had some sort of automated system to detect this antipattern, if possible.

But this is not an anti-pattern. It’s normal elegant C++ usage. However, if the compilers deal particularly poorly with it, then it might be OK to forbid it; that is a new development though, and not a well known anti-pattern.

Further, if Bar is a base class and others derive from it, then compiler *can* inline the code for the destructor in the destructors for those derived classes. So it’s wrong to say that “it’s virtual therefore can never be inlined”.

But leaving an explicit destructor out is not a request to inline. It’s just a normal use of the language. It’s unfortunate that the development tools are penalizing us for using the more-elegant, more-normal syntax for declaring a class that requires not additional special destruction code. Most classes do not require special destruction code, and it’s an anti-pattern to explicitly define empty constructors and destructors in all those cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290433</commentid>
    <comment_count>14</comment_count>
      <attachid>69869</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-06 10:48:12 -0700</bug_when>
    <thetext>Comment on attachment 69869
applies to ToT

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

&gt;&gt;&gt;&gt; WebCore/dom/QualifiedName.h:63
&gt;&gt;&gt;&gt; +    ~QualifiedName();
&gt;&gt;&gt; 
&gt;&gt;&gt; You sure there&apos;s no perf hit from making this non-inline?
&gt;&gt; 
&gt;&gt; QualifiedName::deref is not defined inline (either with this patch or without it) so the compiler can&apos;t do any useful inlining here anyway.
&gt; 
&gt; This doesn&apos;t add an extra jmp?  QualifiedNames get created and destroyed very, very often.

Yes, this does add an extra level function call and return, which has some performance cost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290436</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-06 10:49:40 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; The compiler is free to inline the body of QN::deref() into the destructor in QualifiedName.o since they are in the same translation unit.  External callers (i.e. those in different translation units) will still do one jump, either to ~QualifiedName or to deref.  I&apos;ll double-check this change in isolation on the html parser benchmark to be sure.

Some compilers do this sort of optimization and others don’t. I am pretty sure that the Mac OS X version of WebKit does not invoke gcc at the optimization level where it inlines functions that are not marked inline.

So for this particular change there may be no performance difference for Chromium but there may be a slowdown on other platforms because of tool chain differences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290606</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-06 15:13:24 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #2)
&gt; &gt; One particularly nasty anti-pattern I&apos;ve seen a lot in our codebase is this:
&gt; &gt; 
&gt; &gt; Foo.h:
&gt; &gt; class Foo {
&gt; &gt; public:
&gt; &gt;     virtual ~Foo();
&gt; &gt; };
&gt; &gt; 
&gt; &gt; Bar.h:
&gt; &gt; class Bar : public Foo {
&gt; &gt;   HashSet&lt;String&gt; m_set;
&gt; &gt; };
&gt; &gt; 
&gt; &gt; 
&gt; &gt; With this sort of construct, the implicitly defined destructor for Foo is placed in the header and inlines the very large HashSet destructor into every object file that #includes Bar.h.  Since Bar::~Bar is virtual the compiler can&apos;t inline this code even if it wanted to.  Thanks to this we end up with 800+ copies of common destructors spread across object files across the system.  I&apos;d like it if we had some sort of automated system to detect this antipattern, if possible.
&gt; 
&gt; But this is not an anti-pattern. It’s normal elegant C++ usage. However, if the compilers deal particularly poorly with it, then it might be OK to forbid it; that is a new development though, and not a well known anti-pattern.
&gt; 
&gt; Further, if Bar is a base class and others derive from it, then compiler *can* inline the code for the destructor in the destructors for those derived classes. So it’s wrong to say that “it’s virtual therefore can never be inlined”.

In WebKit our type hierarchies tend to be very wide but not very deep.  For example, there are lots of subclasses of Event but relatively few subclasses of subclasses of Event.

&gt; 
&gt; But leaving an explicit destructor out is not a request to inline. It’s just a normal use of the language. It’s unfortunate that the development tools are penalizing us for using the more-elegant, more-normal syntax for declaring a class that requires not additional special destruction code. Most classes do not require special destruction code, and it’s an anti-pattern to explicitly define empty constructors and destructors in all those cases.

The issue is where the definition of the destructor ends up (in the header or in the cpp).  We happen to have lots of very large destructors (thanks mostly to our WTF types having very large destructors defined in header files) and we tend to include our headers in many translation units.  This means the default behavior in this case is to put the definition of these large destructors into hundreds of object files.  It could be that this is fine in most cases (in fact the linker is good at discarding duplicate copies of the same function) but for WebKit it&apos;s causing us trouble since we can&apos;t actually link at all in some 32-bit toolchains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290608</commentid>
    <comment_count>17</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-06 15:14:51 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #9)
&gt; &gt; The compiler is free to inline the body of QN::deref() into the destructor in QualifiedName.o since they are in the same translation unit.  External callers (i.e. those in different translation units) will still do one jump, either to ~QualifiedName or to deref.  I&apos;ll double-check this change in isolation on the html parser benchmark to be sure.
&gt; 
&gt; Some compilers do this sort of optimization and others don’t. I am pretty sure that the Mac OS X version of WebKit does not invoke gcc at the optimization level where it inlines functions that are not marked inline.
&gt; 
&gt; So for this particular change there may be no performance difference for Chromium but there may be a slowdown on other platforms because of tool chain differences.

I&apos;m running performance tests on the Mac platform as well for this particular change to see if there&apos;s any difference (although I&apos;m doing them in Release instead of Production as I can&apos;t figure out how to make the Production version work).  If there is a concern about ~QualifiedName in particular I&apos;m happy to leave that change out, as it&apos;s a relatively small impact compared to the other changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290616</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-06 15:26:25 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 69869 [details])
&gt; The added explicit keywords are great, but unrelated.
&gt; 
&gt; I think this goes overboard. Some of these inlined functions are more efficient than if they were compiled separately. Measuring the benefit by looking at object file sizes and not at end-user phenomena such as the total executable size or the speed of WebKit means you are seeing only part of the picture.
&gt; 

For context we are having serious issues in Chromium trying to successfully link on systems with a 32-bit toolchain without running out of virtual address space.  The biggest issue with linking is object file size and the largest source of object file bloat in the chromium link is WebCore.  We gave up on trying to link on Leopard a few months back since Snow Leopard provides a 64-bit toolchain, but there is no 64-bit toolchain available on windows and it&apos;s not clear when or if there ever will be.

Other ports may not be hitting hard limits yet, but the memory and time requirements are not fun for anyone.

I&apos;m specifically making changes that have little or no impact on the final binary, only on the resource requirements in order to compile.  These are easy wins.

&gt; There’s a good chance this hurt performance, and I don’t see any evidence you measured performance.

I&apos;ve been looking at benchmarks as well as disassembly of the object files in question to verify that I&apos;m not regressing performance.  If there was something to report I&apos;d note it in the bug but I haven&apos;t seen anything change yet (nor would I expect to).

&gt; 
&gt; It’s also inelegant to declare lots of empty destructors when the compiler will already do the right thing by default. There needs to be a significant benefit, because the explicit destructors make the classes more wordy, which hurts readability.

Well, it&apos;s C++ - rarely accused of being overly elegant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290638</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-06 16:01:08 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; If there is a concern about ~QualifiedName in particular I&apos;m happy to leave that change out, as it&apos;s a relatively small impact compared to the other changes

Which are the changes with the biggest impact? Can we do these changes in multiple smaller patches? That will be helpful if later we find they cause performance regressions, so we can pinpoint which one had that effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290695</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-06 17:01:47 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; If there is a concern about ~QualifiedName in particular I&apos;m happy to leave that change out, as it&apos;s a relatively small impact compared to the other changes
&gt; 
&gt; Which are the changes with the biggest impact? Can we do these changes in multiple smaller patches? That will be helpful if later we find they cause performance regressions, so we can pinpoint which one had that effect.

The most impactful changes are those to EventTarget and Element - moving those four virtual event handler functions from being defined in the header to being declared in the header and defined in the .cpp is a ~4.5mb improvement in debug object size.

I compared the performance with and without this patch on Safari with a release (not production) WebKit build on my slightly crappy core 2 duo Leopard MacBook Pro.  The results are actually a little surprising:

with patch:

avg 4016.6
stdev 65.28506720529589

avg 4280.1
stdev 228.23165862780738

avg 4021.25
stdev 60.233607728576246

avg 4025.05
stdev 70.40488264318037

avg 4015.05
stdev 71.23445444446108

avg 4007.95
stdev 63.84158127740885

overall avg (excluding outlier): 4017.7

without patch:

avg 4144.9
stdev 66.55741882014357

avg 4131.95
stdev 71.22041491033312

avg 4128.5
stdev 56.01383757608472

avg 4145.15
stdev 72.71126116359144

avg 4132.2
stdev 68.45845455456907

overall avg: 4136.54

diff: 188, % diff = 2.87


As you can see excluding one outlier with the patch (notice the stdev, something hiccuped on my box on that run) this patch is a nearly 3% speedup.  The speedup is quite consistent and well within the error range of this test, so I believe it is real.

I have to admit I don&apos;t fully understand why this is.  My best guess it that the linker on this system is not very good at dealing with the duplicate symbols and is either failing to discard the duplicates or (more likely) that the duplicates are hurting code locality.  I&apos;ll try to investigate further as I have time as it&apos;s pretty interesting that we can get such a speedup.  Maybe we can get more.

I don&apos;t know for certain if the production build settings will produce a similar speedup or not and I&apos;m not sure how to test that locally (or even if I can).  Either way, though, I think it&apos;s pretty safe to say that this won&apos;t be a perf regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290741</commentid>
    <comment_count>21</comment_count>
      <attachid>70022</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-06 18:20:45 -0700</bug_when>
    <thetext>Created attachment 70022
include WebCore.exp.in changes so this builds on mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290804</commentid>
    <comment_count>22</comment_count>
      <attachid>70022</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-06 22:24:45 -0700</bug_when>
    <thetext>Comment on attachment 70022
include WebCore.exp.in changes so this builds on mac

I&apos;m still in favor of this change.  It&apos;s hard to argue with a 3% speedup that also reduces code size and makes it possible to build the project on a 32 bit machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291253</commentid>
    <comment_count>23</comment_count>
      <attachid>70022</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-07 14:20:58 -0700</bug_when>
    <thetext>Comment on attachment 70022
include WebCore.exp.in changes so this builds on mac

Rejecting patch 70022 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;apply-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--quiet&apos;, 70022]&quot; exit_code: 2
Cleaning working directory
Updating working directory
Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=70022&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=47230&amp;ctype=xml
Processing 1 patch from 1 bug.
Processing patch 70022 from bug 47230.
Failed to run &quot;[u&apos;/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Adam Barth&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/4216136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291998</commentid>
    <comment_count>24</comment_count>
      <attachid>70327</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-08 18:17:31 -0700</bug_when>
    <thetext>Created attachment 70327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292000</commentid>
    <comment_count>25</comment_count>
      <attachid>70327</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-10-08 18:18:14 -0700</bug_when>
    <thetext>Comment on attachment 70327
Patch

Merged up to ToT, gonna give the commit queue one more shot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292003</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-08 18:21:50 -0700</bug_when>
    <thetext>If I was making this change and had measured a speedup when most of the patch should be entirely performance-neutral, I would want to separate the part that definitely has no effect on performance from any part that might be speeding things up. If we find out what is making things faster, then perhaps we can take advantage of it elsewhere. There’s also the chance that part of the patch makes things faster and part makes it slower, in which case we want to keep the faster part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292018</commentid>
    <comment_count>27</comment_count>
      <attachid>70327</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-08 19:00:18 -0700</bug_when>
    <thetext>Comment on attachment 70327
Patch

Clearing flags on attachment: 70327

Committed r69437: &lt;http://trac.webkit.org/changeset/69437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292019</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-08 19:00:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69868</attachid>
            <date>2010-10-05 17:07:54 -0700</date>
            <delta_ts>2010-10-05 17:26:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47230-20101005170753.patch</filename>
            <type>text/plain</type>
            <size>68398</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWY0OTRjZTk2ZmE3MGRkYzhhODc2YjVjYmJlOWU1YTM2YTAyNGIyZC4uMDkxZDRhNTZmODMyYWQz
N2QxOGQ5NDU1YjkxMTY3YjU5OTVkN2MwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzIgQEAKKzIwMTAtMTAtMDUgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBpbmxpbmluZyBsYXJnZSBhbmQvb3Ig
dmlydHVhbCBmdW5jdGlvbnMgaW4gd2lkZWx5IGluY2x1ZGVkIGhlYWRlciBmaWxlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyMzAKKworICAgICAg
ICBGdW5jdGlvbnMgd2l0aCB2ZXJ5IGxhcmdlIGJvZGllcyBzaG91bGQgbm90IGJlIGluY2x1ZGVk
IGluIHdpZGVseSBpbmNsdWRlZCBoZWFkZXIgZmlsZXMuCisgICAgICAgIFRoaXMgcmVzdWx0cyBp
biB0aGUgZnVuY3Rpb24ncyBjb2RlIGVuZGluZyB1cCBpbmNsdWRlZCBpbiBodW5kcmVkcyBvZiBv
YmplY3QgZmlsZXMgdGhhdAorICAgICAgICB0aGUgbGlua2VyIGhhcyB0byBkaXNjYXJkLCBhdCBh
IGNvc3Qgb2YgbGlua2VyIG1lbW9yeSB1c2UsIGxpbmsgdGltZSwgYW5kIGRpc2sgc3BhY2UuIFRo
aXMKKyAgICAgICAgaXMgYSBwYXJ0aWN1bGFyIHByb2JsZW0gaW4gdGhlIENocm9taXVtIHdpbmRv
d3MgYnVpbGQgd2hlcmUgTVNWQyBvZnRlbiBleGhhdXN0cyBpdHMgMzItYml0CisgICAgICAgIHZp
cnR1YWwgYWRkcmVzcyBzcGFjZSBhbmQgY29tcGxldGVseSBmYWlscyB0byBsaW5rLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbW92ZXMgZnVuY3Rpb24gZGVmaW5pdGlvbnMgZnJvbSB0aGUgLmggdG8g
dGhlIGNvcnJlc3BvbmRpbmcgLmNwcCB3aGVuIHRoZSBmdW5jdGlvbgorICAgICAgICBpcyBsYXJn
ZSBhbmQgbm90IGEgY2FuZGlkYXRlIGZvciBpbmxpbmluZyBlaXRoZXIgYmVjYXVzZSBpdCBpcyB2
aXJ0dWFsIG9yIGJlY2F1c2UgaXRzIHNpemUgaXMKKyAgICAgICAgYWJvdmUgYW55IHJlYXNvbmFi
bGUgY29tcGlsZXIncyB0aHJlc2hob2xkIGZvciBpbmxpbmluZy4gIFRoZSBtb3N0IGNvbW1vbiBj
YXNlIGJ5IGZhciBpbiB0aGlzCisgICAgICAgIHBhdGNoIGlzIGNoYW5naW5nIGEgY2xhc3MnIGlt
cGxpY2l0bHkgZGVmaW5lZCBkZXN0cnVjdG9yIHRvIGFuIGV4cGxpY2l0bHkgZGVjbGFyZWQgZCd0
b3IgaW4KKyAgICAgICAgdGhlIGhlYWRlciBhbmQgYW4gZXhwbGljaXRseSBkZWZpbmVkIGQndG9y
IGluIHRoZSAuY3BwLiAgVGhpcyBpcyBpbXBvcnRhbnQgc2luY2UgbWFueSBvZiBvdXIKKyAgICAg
ICAgY29udGFpbmVyIGFuZCB1dGlsaXR5IGNsYXNzZXMgKGVzcGVjaWFsbHkgVmVjdG9yLCBTdHJp
bmcsIGFuZCBIYXNoU2V0KSBoYXZlIHF1aXRlIGxhcmdlCisgICAgICAgIGRlc3RydWN0b3JzLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyAyMi40TUIgb2Ygb2JqZWN0IGZpbGUgc2l6ZSBp
biBhIGRlYnVnIDY0IGJpdCBjb21waWxlLgorCisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQm9yZGVySW1hZ2VWYWx1ZTo6fkNTU0Jv
cmRlckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTcmNWYWx1ZTo6fkNTU0ZvbnRGYWNlU3JjVmFsdWUpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNyY1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUu
aDoKKyAgICAgICAgKiBkb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6On5CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dCk6CisgICAgICAgICogZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50Lmg6CisgICAgICAgICog
ZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJlZm9yZVVubG9h
ZEV2ZW50Ojp+QmVmb3JlVW5sb2FkRXZlbnQpOgorICAgICAgICAqIGRvbS9CZWZvcmVVbmxvYWRF
dmVudC5oOgorICAgICAgICAqIGRvbS9DbGFzc05vZGVMaXN0Lmg6CisgICAgICAgICogZG9tL0Ns
aXBib2FyZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEV2ZW50Ojp+Q2xp
cGJvYXJkRXZlbnQpOgorICAgICAgICAqIGRvbS9DbGlwYm9hcmRFdmVudC5oOgorICAgICAgICAq
IGRvbS9DdXN0b21FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FdmVudDo6fkN1
c3RvbUV2ZW50KToKKyAgICAgICAgKiBkb20vQ3VzdG9tRXZlbnQuaDoKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZl
bnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXREYXRhOjpFdmVudFRh
cmdldERhdGEpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIGRvbS9J
bnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50RGF0YTo6fklu
cHV0RWxlbWVudERhdGEpOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoKKyAgICAgICAg
KiBkb20vTXV0YXRpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbkV2ZW50
Ojp+TXV0YXRpb25FdmVudCk6CisgICAgICAgICogZG9tL011dGF0aW9uRXZlbnQuaDoKKyAgICAg
ICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWZFdmVudFRhcmdl
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAg
KiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9PcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok9wdGlvbkVsZW1lbnREYXRhOjp+T3B0aW9uRWxlbWVudERhdGEpOgorICAgICAg
ICAqIGRvbS9PcHRpb25FbGVtZW50Lmg6CisgICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UG9wU3RhdGVFdmVudDo6flBvcFN0YXRlRXZlbnQpOgorICAg
ICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50Lmg6CisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6flF1YWxpZmllZE5hbWUpOgor
ICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgICogZG9tL1NlbGVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudERhdGE6On5TZWxlY3RFbGVt
ZW50RGF0YSk6CisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20v
U3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY0hhc2hT
ZXROb2RlTGlzdDo6U3RhdGljSGFzaFNldE5vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
YXRpY0hhc2hTZXROb2RlTGlzdDo6flN0YXRpY0hhc2hTZXROb2RlTGlzdCk6CisgICAgICAgICog
ZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oOgorICAgICAgICAqIGRvbS9TdHlsZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVFbGVtZW50Ojp+U3R5bGVFbGVtZW50KToKKyAg
ICAgICAgKiBkb20vU3R5bGVFbGVtZW50Lmg6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudDo6VG91Y2hFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCk6CisgICAgICAgICogZG9tL1RvdWNoRXZl
bnQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjp+Q29tcG9zaXRlRWRpdENvbW1hbmQp
OgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRTdGFjazo6fkJp
dFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6flRleHRJdGVyYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JkQXdhcmVJdGVyYXRvcjo6fldvcmRBd2FyZUl0ZXJhdG9y
KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0
Ojp+SW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdDo6
SW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFycmF5Ojp+SW5z
cGVjdG9yQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXk6Okluc3BlY3Rv
ckFycmF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6CisgICAgICAg
ICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpyZWdpc3RlckhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6dW5yZWdpc3RlckhhbmRsZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OkhUVFBIZWFkZXJNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6SFRUUEhlYWRlck1hcDo6fkhUVFBIZWFkZXJNYXApOgorICAgICAgICAoV2ViQ29yZTo6SFRU
UEhlYWRlck1hcDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmFkZCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBcHBs
ZXQ6On5SZW5kZXJBcHBsZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBcHBsZXQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJ1dHRvbjo6flJlbmRlckJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJ1dHRvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckNvdW50ZXI6On5SZW5kZXJDb3VudGVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVs
ZHNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6On5SZW5kZXJGb3JlaWduT2JqZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGcmFtZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFt
ZUJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWFycXVlZTo6flJlbmRlck1hcnF1ZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNYXJx
dWVlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUGF0aDo6flJlbmRlclBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJQYXRoLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0Jsb2NrLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdDb250YWluZXI6On5SZW5kZXJTVkdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZH
SGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6On5SZW5kZXJTVkdJbmxpbmVUZXh0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
VkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6On5SZW5kZXJTVkdS
b290KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdUU3Bhbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdU
ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1RleHRQYXRoLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6On5S
ZW5kZXJUYWJsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZUNvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dEZyYWdtZW50Ojp+UmVuZGVyVGV4dEZyYWdtZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cldvcmRCcmVhay5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6flNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiB4bWwvWFBh
dGhQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlBhcnNlcjo6flBhcnNlcik6
CisgICAgICAgICogeG1sL1hQYXRoUGFyc2VyLmg6CisKIDIwMTAtMDktMjkgIEJyaWFuIFdlaW5z
dGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5
IEVpZHNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuY3Bw
IGIvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXggMzI2MGFmNDYyYjBh
YmNhMjYwOWU1OTc0MTVlNWU2YjhlNGI0OTYxYi4uOGQ0NzIxYTVmYWJjNWNkM2RhNTgwNmFlZmVl
OGVhYzZiNGNmZDkyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1
ZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTM0LDYg
KzM0LDEwIEBAIENTU0JvcmRlckltYWdlVmFsdWU6OkNTU0JvcmRlckltYWdlVmFsdWUoUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFBhc3NSZWZQdHI8CiB7CiB9CiAKK0NTU0JvcmRlckltYWdl
VmFsdWU6On5DU1NCb3JkZXJJbWFnZVZhbHVlKCkKK3sKK30KKwogU3RyaW5nIENTU0JvcmRlcklt
YWdlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogewogICAgIC8vIEltYWdlIGZpcnN0LgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oIGIvV2ViQ29yZS9jc3MvQ1NT
Qm9yZGVySW1hZ2VWYWx1ZS5oCmluZGV4IDIzODMyYjhjYjYxYTM0MTAwZDA3ZDVjMGNjMjNhOGRl
YWVkMzI5MjAuLmExN2RmN2RmMjAwZjQyZWViZDE0YzY0Njg0MjVjNjRjMmRhMzQzZmUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaAorKysgYi9XZWJDb3JlL2Nz
cy9DU1NCb3JkZXJJbWFnZVZhbHVlLmgKQEAgLTM1LDYgKzM1LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NCb3JkZXJJbWFnZVZhbHVlKGltYWdlLCBz
bGljZVJlY3QsIGhvcml6b250YWxSdWxlLCB2ZXJ0aWNhbFJ1bGUpKTsKICAgICB9CisgICAgdmly
dHVhbCB+Q1NTQm9yZGVySW1hZ2VWYWx1ZSgpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4
dCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDViMjA0ZDc2
YmU5YWFhYTY1OTE3ZjlhM2NmYzk1YzliMTQzMDg1MGUuLmQ5NTFlNWQzMzA0YzYzMDcwNDNlODY0
MjgwMzBlOTZlYjUwZWM3ZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBAIC0z
MSw2ICszMSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NTU0ZvbnRGYWNlU3JjVmFs
dWU6On5DU1NGb250RmFjZVNyY1ZhbHVlKCkKK3sKK30KKwogI2lmIEVOQUJMRShTVkdfRk9OVFMp
CiBib29sIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmlzU1ZHRm9udEZhY2VTcmMoKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IDIyZjFiZTdiZDU4ZWM3MmVkNzg0NzExZTk3
YWZjMGM2YmViYWEzNDYuLjU3MDY1MmQ3MTE1MWZkMjlhNDcyZDkyOWVkYjVhYjY3YjEyNmRiMzMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAorKysgYi9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0ZvbnRGYWNlU3JjVmFsdWUocmVzb3VyY2Us
IHRydWUpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNyY1ZhbHVlKCkgeyB9
CisgICAgdmlydHVhbCB+Q1NTRm9udEZhY2VTcmNWYWx1ZSgpOwogCiAgICAgY29uc3QgU3RyaW5n
JiByZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2U7IH0KICAgICBjb25zdCBTdHJp
bmcmIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmggYi9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVl
LmgKaW5kZXggZTk1NDVhMWFkOTk0N2ZmMDNkN2U0NmI1N2RjNzBjMzk4YzVlYzQ4My4uMWQ3M2Yz
M2VkZDNiZmM1ODZhOWNmNTYzMjMzYmZkMjNjMzU4MGE3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9j
c3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUu
aApAQCAtNDAsMTQgKzQwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDU1NGdW5jdGlvblZhbHVlKGZ1bmN0aW9uKSk7CiAgICAgfQogCi0gICAgfkNTU0Z1bmN0aW9u
VmFsdWUoKTsKKyAgICB2aXJ0dWFsIH5DU1NGdW5jdGlvblZhbHVlKCk7CiAgICAgCiAgICAgdmly
dHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBDU1NQYXJzZXJWYWx1
ZSBwYXJzZXJWYWx1ZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0Z1bmN0aW9uVmFsdWUo
Q1NTUGFyc2VyRnVuY3Rpb24qKTsKKyAgICBleHBsaWNpdCBDU1NGdW5jdGlvblZhbHVlKENTU1Bh
cnNlckZ1bmN0aW9uKik7CiAgICAgCiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBtX2FyZ3M7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5z
ZXJ0ZWRFdmVudC5jcHAgYi9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAK
aW5kZXggYWY4NmQ2NjUyNDdlN2Q4NjkyODBhYzI3ODJlNGNiOTNmMmU1MzMwOC4uNDcyZWVmYzg1
YTI3MmNkODE0ZDZjMDEwMDBmY2Y2NGJhNTdkNGE4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
QmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJ
bnNlcnRlZEV2ZW50LmNwcApAQCAtMzUsNCArMzUsOCBAQCBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dDo6QmVmb3JlVGV4dEluc2VydGVkRXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogfQogCitC
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudDo6fkJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KCkKK3sKK30K
KwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCBi
L1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmgKaW5kZXggZjJhMmFjNDEyMDNj
MjllODliYTI4YTQ3NDU4ZTU0NTBiZDNjZDgwNi4uYTY5NjZmZjk0MzkwYmZmMjgwYjJiNjhmODRj
Mjg1MjRlYTVkMTVmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVk
RXZlbnQuaAorKysgYi9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oCkBAIC0z
Miw2ICszMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmVmb3JlVGV4dEluc2Vy
dGVkRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgorICAgIHZpcnR1YWwgfkJlZm9yZVRl
eHRJbnNlcnRlZEV2ZW50KCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCZWZvcmVUZXh0SW5z
ZXJ0ZWRFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQodGV4dCkpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vQmVmb3JlVW5sb2FkRXZlbnQuY3BwIGIvV2ViQ29yZS9kb20vQmVm
b3JlVW5sb2FkRXZlbnQuY3BwCmluZGV4IDk3ZDdmOTc0OTBmZTBlNjQ0MTE3MTNjN2ExOTMyMDc5
YTI1NTM0YmQuLjE5YWRjYWIzMGJkNWU3YWQwODYyNGI4ZTY1NzEzNTRiNTdjODRmZDcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcAorKysgYi9XZWJDb3JlL2Rv
bS9CZWZvcmVVbmxvYWRFdmVudC5jcHAKQEAgLTMyLDYgKzMyLDEwIEBAIEJlZm9yZVVubG9hZEV2
ZW50OjpCZWZvcmVVbmxvYWRFdmVudCgpCiB7CiB9CiAKK0JlZm9yZVVubG9hZEV2ZW50Ojp+QmVm
b3JlVW5sb2FkRXZlbnQoKQoreworfQorCiBib29sIEJlZm9yZVVubG9hZEV2ZW50OjpzdG9yZXNS
ZXN1bHRBc1N0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVudC5oIGIvV2ViQ29yZS9kb20vQmVmb3JlVW5sb2Fk
RXZlbnQuaAppbmRleCAyNjQ0NjkzZGI0ZGRhN2FiNzc3MmYzOWVmNzMwOTlhMDNjZTViYjQxLi4x
MzZlODVjMzU5NjRjY2JiZDgyOTE2NzAyM2E4MDA1ZjdiNjM2YmZiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0JlZm9yZVVubG9h
ZEV2ZW50LmgKQEAgLTMwLDYgKzMwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgQmVmb3JlVW5sb2FkRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogICAgIHB1YmxpYzoKKyAgICAg
ICAgdmlydHVhbCB+QmVmb3JlVW5sb2FkRXZlbnQoKTsKKwogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxCZWZvcmVVbmxvYWRFdmVudD4gY3JlYXRlKCkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBCZWZvcmVVbmxvYWRFdmVudCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9DbGFzc05vZGVMaXN0LmggYi9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmgKaW5k
ZXggZWEwNDhhMjhhYjJiZGYwMDc4YmNlNjJkZWQxMThkOWJkMjJkOGYyOS4uMTNkNWQyNGQxNjYx
NGVmM2IyZjQ2MTFjMjFlMmQzNDVmM2IwNWEyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2xh
c3NOb2RlTGlzdC5oCisrKyBiL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuaApAQCAtMzEsNiAr
MzEsNyBAQAogI2RlZmluZSBDbGFzc05vZGVMaXN0X2gKIAogI2luY2x1ZGUgIkR5bmFtaWNOb2Rl
TGlzdC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NsaXBib2Fy
ZEV2ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmNwcAppbmRleCAzYzQyN2Ux
MjYwYmIyMWU3MTcxYzM1NTdiZDFiOTNhOWVhZWNmNjljLi5iNjQ3MDNkN2IzZDc1MWE4MDg0NDcx
NGE4MzE1NDlmNTY0ZDFhN2M4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVu
dC5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkRXZlbnQuY3BwCkBAIC0zNCw2ICszNCwx
MCBAQCBDbGlwYm9hcmRFdmVudDo6Q2xpcGJvYXJkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBibwogewogfQogCitDbGlwYm9hcmRFdmVudDo6fkNs
aXBib2FyZEV2ZW50KCkKK3sKK30KKwogYm9vbCBDbGlwYm9hcmRFdmVudDo6aXNDbGlwYm9hcmRF
dmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmRFdmVudC5oIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkRXZlbnQuaAppbmRleCBi
OWJjNzA1YzczNTQ2NTZiNmNjMTVjOTQ1MzZhN2FlNjY3YTQzNDY1Li40Mjc0MWU2NGRmNGZiMGE0
NzMxZGNlMDM2MzIwNTk0YjBkOGMyN2RiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DbGlwYm9h
cmRFdmVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmgKQEAgLTMxLDYgKzMx
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQ2xpcGJvYXJkRXZlbnQgOiBw
dWJsaWMgRXZlbnQgewogICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpcGJvYXJkRXZl
bnQoKTsKKwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRFdmVudD4gY3JlYXRl
KCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRF
dmVudCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAgYi9XZWJDb3Jl
L2RvbS9DdXN0b21FdmVudC5jcHAKaW5kZXggYzM3NzA2M2I3YWU1ZmE3MTVkMWE1OGQ2ZmU5NjRm
YTgwMzM3NGYxMS4uNTNlMjU1ZDliMDU1YWVmMzhkM2YxOWU0NWRiNGM5OTZhMGVjNTU2NCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0N1
c3RvbUV2ZW50LmNwcApAQCAtMzQsNiArMzQsMTAgQEAgQ3VzdG9tRXZlbnQ6OkN1c3RvbUV2ZW50
KCkKIHsKIH0KIAorQ3VzdG9tRXZlbnQ6On5DdXN0b21FdmVudCgpCit7Cit9CisKIHZvaWQgQ3Vz
dG9tRXZlbnQ6OmluaXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFNjcmlwdFZhbHVlIGRldGFpbCkKIHsKICAgICBp
ZiAoZGlzcGF0Y2hlZCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaCBi
L1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgKaW5kZXggODM3MmFmMmE5OTZlNDA1MDQ4MjUzN2Ix
MjI0NGM0MGU1YjA2ZGMwMi4uNjVjM2YwNDYwY2Q2Mjk3ZDkzYmQ4ZmU3NzQ3NmUxYzRhZmQ3NjYw
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaAorKysgYi9XZWJDb3JlL2Rv
bS9DdXN0b21FdmVudC5oCkBAIC0zNCw2ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ3VzdG9tRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgorICAgIHZpcnR1YWwg
fkN1c3RvbUV2ZW50KCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDdXN0b21FdmVudD4gY3Jl
YXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3VzdG9tRXZlbnQpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAppbmRleCBjNDA4NzkwYzdjYWEzMjI3Mzk2NmI2OWM0Yzc0NmQwZGI4YzMwNTVjLi5lYzM4
ZDRlMGYzMmQ2YjE3MzZkYzUwZmFkYTNmN2M3NzJhOTY3NGU5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtOTMsNiAr
OTMsMTEgQEAgTm9kZVJhcmVEYXRhKiBFbGVtZW50OjpjcmVhdGVSYXJlRGF0YSgpCiAgICAgcmV0
dXJuIG5ldyBFbGVtZW50UmFyZURhdGE7CiB9CiAKK0RFRklORV9WSVJUVUFMX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihFbGVtZW50LCBibHVyKTsKK0RFRklORV9WSVJUVUFMX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihFbGVtZW50LCBlcnJvcik7CitERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoRWxlbWVudCwgZm9jdXMpOworREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKEVsZW1lbnQsIGxvYWQpOworCiBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IEVsZW1lbnQ6OmRlcHJlY2F0ZWRDcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29uc3Qg
U3RyaW5nJiBtYXJrdXAsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJt
aXNzaW9uKQogewogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3Vt
ZW50KCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBiNTFlNzUwYTUxZDA4Y2Jm
MTZkNzk1NmRhOWYxZDJkZjAzZjVkNDA3Li5hYTI5NzI5MTQ1OTY5ODA0MTJlMWExOGI4NTI5NjI3
OWVjYjAzZGQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCkBAIC03NCwxMCArNzQsMTAgQEAgcHVibGljOgogCiAgICAgLy8gVGhl
c2UgZm91ciBhdHRyaWJ1dGUgZXZlbnQgaGFuZGxlciBhdHRyaWJ1dGVzIGFyZSBvdmVycmlkZGVu
IGJ5IEhUTUxCb2R5RWxlbWVudAogICAgIC8vIGFuZCBIVE1MRnJhbWVTZXRFbGVtZW50IHRvIGZv
cndhcmQgdG8gdGhlIERPTVdpbmRvdy4KLSAgICBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoYmx1cik7Ci0gICAgREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGVycm9yKTsKLSAgICBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoZm9jdXMpOwotICAgIERFRklORV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihs
b2FkKTsKKyAgICBERUNMQVJFX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGJsdXIp
OworICAgIERFQ0xBUkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwor
ICAgIERFQ0xBUkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZm9jdXMpOworICAg
IERFQ0xBUkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobG9hZCk7CiAKICAgICAv
LyBXZWJLaXQgZXh0ZW5zaW9ucwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
YmVmb3JlY3V0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCBkMmI2ZjQ5NzE3N2Q2MTk4NjRjNTk1ODFm
ZGQwNGIxYzQ3ZDdkYzhhLi5kYjNlMjI0OWQxNWEwZDhhOWFiNjIxNzhkYTQwMDczNWRjZjg0MDMz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuY3BwCkBAIC02Niw2ICs2NiwxMCBAQCBib29sIGV2ZW50RGlzcGF0Y2hG
b3JiaWRkZW4oKQogfQogI2VuZGlmIC8vIE5ERUJVRwogCitFdmVudFRhcmdldERhdGE6OkV2ZW50
VGFyZ2V0RGF0YSgpCit7Cit9CisKIEV2ZW50VGFyZ2V0RGF0YTo6fkV2ZW50VGFyZ2V0RGF0YSgp
CiB7CiAgICAgZGVsZXRlQWxsVmFsdWVzKGV2ZW50TGlzdGVuZXJNYXApOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5k
ZXggZGU3YzJlMGEyNWEzODBkYzU4OWI1NmM0YjY2ZmQwZDBhZjQ4NTM5Yi4uZmVmZjRhZTEyNGQ0
OWJkYzNkZTU3ODIwMmYwODk5ZjI0YzNmOWE5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaAorKysgYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC04Myw2ICs4Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBFdmVudExpc3RlbmVyVmVjdG9yKj4gRXZlbnRMaXN0ZW5lck1hcDsKIAogICAgIHN0cnVjdCBF
dmVudFRhcmdldERhdGEgOiBOb25jb3B5YWJsZSB7CisgICAgICAgIEV2ZW50VGFyZ2V0RGF0YSgp
OwogICAgICAgICB+RXZlbnRUYXJnZXREYXRhKCk7CiAKICAgICAgICAgRXZlbnRMaXN0ZW5lck1h
cCBldmVudExpc3RlbmVyTWFwOwpAQCAtMTc3LDkgKzE3OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uIyNhdHRyaWJ1dGUoKSB7IHJldHVybiBnZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdHRyaWJ1dGUjI0V2ZW50KTsgfSBc
CiAgICAgICAgIHZvaWQgc2V0T24jI2F0dHJpYnV0ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmF0dHJp
YnV0ZSMjRXZlbnQsIGxpc3RlbmVyKTsgfSBcCiAKLSAgICAjZGVmaW5lIERFRklORV9WSVJUVUFM
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhdHRyaWJ1dGUpIFwKLSAgICAgICAgdmlydHVhbCBF
dmVudExpc3RlbmVyKiBvbiMjYXR0cmlidXRlKCkgeyByZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuYXR0cmlidXRlIyNFdmVudCk7IH0gXAotICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0T24jI2F0dHJpYnV0ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmF0dHJpYnV0ZSMj
RXZlbnQsIGxpc3RlbmVyKTsgfSBcCisgICAgI2RlZmluZSBERUNMQVJFX1ZJUlRVQUxfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKGF0dHJpYnV0ZSkgXAorICAgICAgICB2aXJ0dWFsIEV2ZW50TGlz
dGVuZXIqIG9uIyNhdHRyaWJ1dGUoKTsgXAorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0T24jI2F0
dHJpYnV0ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKTsgXAorCisgICAgI2Rl
ZmluZSBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodHlwZSwgYXR0cmli
dXRlKSBcCisgICAgICAgIEV2ZW50TGlzdGVuZXIqIHR5cGU6Om9uIyNhdHRyaWJ1dGUoKSB7IHJl
dHVybiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdHRyaWJ1dGUjI0V2
ZW50KTsgfSBcCisgICAgICAgIHZvaWQgdHlwZTo6c2V0T24jI2F0dHJpYnV0ZShQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyKSB7IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmF0dHJpYnV0ZSMjRXZlbnQsIGxpc3RlbmVyKTsgfSBcCiAKICAgICAjZGVmaW5l
IERFRklORV9XSU5ET1dfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGF0dHJpYnV0ZSkgXAogICAg
ICAgICBFdmVudExpc3RlbmVyKiBvbiMjYXR0cmlidXRlKCkgeyByZXR1cm4gZG9jdW1lbnQoKS0+
Z2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXR0cmlidXRlIyNF
dmVudCk7IH0gXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNwcCBiL1dl
YkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAKaW5kZXggYjJhOTcxNDUyMmNmNDZiZmZhNmU5MzMx
N2IwYWNmMWQzNzk5ZjdmZS4uZWNhZTIwNmEyNTFjZWNiMDY0NGQxM2VmMjJmNDA5ZThlMDY0OGIy
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9JbnB1dEVsZW1lbnQuY3BwCkBAIC0yNzksNiArMjc5LDEwIEBAIElucHV0RWxlbWVudERh
dGE6OklucHV0RWxlbWVudERhdGEoKQogewogfQogCitJbnB1dEVsZW1lbnREYXRhOjp+SW5wdXRF
bGVtZW50RGF0YSgpCit7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgSW5wdXRFbGVtZW50RGF0
YTo6bmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbmFtZS5pc051bGwoKSA/IGVtcHR5QXRv
bSA6IG1fbmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oIGIvV2Vi
Q29yZS9kb20vSW5wdXRFbGVtZW50LmgKaW5kZXggZDVjZTIxMmRmYTM1ZjdkM2U5ZDI1MDkxYTY3
YWY5NTM1MDNjYTU1OC4uMzQ3ODRiYzdlN2QzN2MwNzQ2ZjU1YzUxZDYwMTg4OTg5Nzg3MzU4ZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9kb20v
SW5wdXRFbGVtZW50LmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBwcm90ZWN0ZWQ6CiBjbGFzcyBJbnB1
dEVsZW1lbnREYXRhIHsKIHB1YmxpYzoKICAgICBJbnB1dEVsZW1lbnREYXRhKCk7CisgICAgfklu
cHV0RWxlbWVudERhdGEoKTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0
OwogICAgIHZvaWQgc2V0TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSB7IG1fbmFtZSA9
IHZhbHVlOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmNwcCBiL1dl
YkNvcmUvZG9tL011dGF0aW9uRXZlbnQuY3BwCmluZGV4IDU4YmNlMWY2YWI1YjhkN2M2OWFlMTMy
MjJhMjY4MTFlYjgwNzExMDYuLjg5MDc0MmYxMTM1NmYwNjk0Mzk5YjcxZDg0NTFlZTAzYzU4MmEz
ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL011dGF0aW9uRXZlbnQuY3BwCkBAIC00Miw2ICs0MiwxMCBAQCBNdXRhdGlvbkV2ZW50
OjpNdXRhdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuYwogewogfQogCitNdXRhdGlvbkV2ZW50Ojp+TXV0YXRpb25FdmVudCgpCit7Cit9
CisKIHZvaWQgTXV0YXRpb25FdmVudDo6aW5pdE11dGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPE5v
ZGU+IHJlbGF0ZWROb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHByZXZWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBhdHRyTmFtZSwgdW5z
aWduZWQgc2hvcnQgYXR0ckNoYW5nZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL011dGF0aW9u
RXZlbnQuaCBiL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuaAppbmRleCAyOWI5NzhjMzBiMzhj
NmQ0MDUxMDJiODVmMjg3OTgzMmJiZTU2MTk3Li5mMmJhNzU5NjdhZGIwNDg5MGI1YjJjZWE5OGFi
NDNmYmUxMGExZTBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmgKKysr
IGIvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCkBAIC0zMSw2ICszMSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIE11dGF0aW9uRXZlbnQgOiBwdWJsaWMgRXZlbnQgewog
ICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+TXV0YXRpb25FdmVudCgpOworCiAgICAgICAg
IGVudW0gYXR0ckNoYW5nZVR5cGUgewogICAgICAgICAgICAgTU9ESUZJQ0FUSU9OICAgID0gMSwK
ICAgICAgICAgICAgIEFERElUSU9OICAgICAgICA9IDIsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDUzMzk1YTg3NWUyMjYzN2U5
MjVhNTdjMjcyZGI0ODJiZThhNTMwMDQuLmZmOTA5YTZjZTgxN2JiZGI3MGZlMGJkN2RjYWQ5ZGIw
OWNhYzM4ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCkBAIC03MzEsNiArNzMxLDE2IEBAIGlubGluZSB2b2lkIE5vZGU6Om1hcmtB
bmNlc3RvcnNXaXRoQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCkKICAgICAgICAgZG9jdW1lbnQoKS0+
c2NoZWR1bGVTdHlsZVJlY2FsYygpOwogfQogCit2b2lkIE5vZGU6OnJlZkV2ZW50VGFyZ2V0KCkK
K3sKKyAgICByZWYoKTsKK30KKwordm9pZCBOb2RlOjpkZXJlZkV2ZW50VGFyZ2V0KCkKK3sKKyAg
ICBkZXJlZigpOworfQorCiB2b2lkIE5vZGU6OnNldE5lZWRzU3R5bGVSZWNhbGMoU3R5bGVDaGFu
Z2VUeXBlIGNoYW5nZVR5cGUpCiB7CiAgICAgQVNTRVJUKGNoYW5nZVR5cGUgIT0gTm9TdHlsZUNo
YW5nZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggNTg3ZWZmZDBmZTgyMjc0NzY5NTUwNjQ0ZTkyZGVmNWE4MzkyOTQwYS4uYjM1ODA5
NGI1NmI3ZWUxYWZmMjkzNjdlODU2YmJlZDdiMTNiZDA4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vTm9kZS5oCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNjg3LDggKzY4Nyw4IEBAIHBy
aXZhdGU6CiAgICAgLy8gVXNlZCB0byBzaGFyZSBjb2RlIGJldHdlZW4gbGF6eUF0dGFjaCBhbmQg
c2V0TmVlZHNTdHlsZVJlY2FsYy4KICAgICB2b2lkIG1hcmtBbmNlc3RvcnNXaXRoQ2hpbGROZWVk
c1N0eWxlUmVjYWxjKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJl
ZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpOwogCiAgICAgdmlydHVhbCBOb2RlUmFyZURhdGEqIGNyZWF0ZVJhcmVE
YXRhKCk7CiAgICAgTm9kZSogY29udGFpbmVyQ2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25z
dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQuY3BwIGIvV2ViQ29yZS9k
b20vT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMjQwYThmYzc4N2NiODcwZDIxOGEwZDE3NDRkNWU5
NzFkOThkZDcyZS4uYWI3ODYzZTc1YTZmNWYzNjg5MTUyMDk3YmFhZjkxZGNhYTZhNTU2MCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20v
T3B0aW9uRWxlbWVudC5jcHAKQEAgLTEzNCw2ICsxMzQsMTAgQEAgT3B0aW9uRWxlbWVudERhdGE6
Ok9wdGlvbkVsZW1lbnREYXRhKCkKIHsKIH0KIAorT3B0aW9uRWxlbWVudERhdGE6On5PcHRpb25F
bGVtZW50RGF0YSgpCit7Cit9CisKIE9wdGlvbkVsZW1lbnQqIHRvT3B0aW9uRWxlbWVudChFbGVt
ZW50KiBlbGVtZW50KQogewogICAgIGlmIChlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgZWxl
bWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9wdGlvblRhZykpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9PcHRpb25FbGVtZW50LmggYi9XZWJDb3JlL2RvbS9PcHRpb25FbGVtZW50LmgKaW5k
ZXggMjMyYzNlZTVkN2NmZTdkZGRmNzQ2YjRhZTJiZjRkOTNiZGMzMWEyNS4uOWZmNWNkNWRkNmNj
OGMzN2Y1Mzg4NGYxYjU0OGRiYmMzODUzMGQ2YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vT3B0
aW9uRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQuaApAQCAtNTgsNiAr
NTgsNyBAQCBwcml2YXRlOgogY2xhc3MgT3B0aW9uRWxlbWVudERhdGEgewogcHVibGljOgogICAg
IE9wdGlvbkVsZW1lbnREYXRhKCk7CisgICAgfk9wdGlvbkVsZW1lbnREYXRhKCk7CiAKICAgICBT
dHJpbmcgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgdm9pZCBzZXRWYWx1
ZShjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAgYi9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50
LmNwcAppbmRleCBiOWFkODYyYmMwMjkzN2M0MjliZjIzNDRhNDNhOThhYzc5ZDEwOWM4Li5iYWM2
NzZhNTkyMDg1OTdiZWNlMTQ1ZmQxMGM4NzM4ODcyZWYzZTJiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNw
cApAQCAtMzYsNyArMzYsMTEgQEAgUG9wU3RhdGVFdmVudDo6UG9wU3RhdGVFdmVudChQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpCiAgICAgLCBtX3N0YXRlT2Jq
ZWN0KHN0YXRlT2JqZWN0KQogewogfQotICAgIAorCitQb3BTdGF0ZUV2ZW50Ojp+UG9wU3RhdGVF
dmVudCgpCit7Cit9CisKIHZvaWQgUG9wU3RhdGVFdmVudDo6aW5pdFBvcFN0YXRlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QpCiB7CiAgICAgaWYg
KGRpc3BhdGNoZWQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaCBi
L1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAppbmRleCAyZmI4ZDA2ODViZjBlMGQ1MjJlNDZi
MDhiOGFiYWY3MjYzYTRiNDIyLi40MmZiZDQ1NGUxMWVlYzkyYmY1OThkNjcyZTlhYWNlM2JiMDY4
NGNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKKysrIGIvV2ViQ29y
ZS9kb20vUG9wU3RhdGVFdmVudC5oCkBAIC0zNiw2ICszNiw4IEBAIGNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKIAogY2xhc3MgUG9wU3RhdGVFdmVudCA6IHB1YmxpYyBFdmVudCB7CiBwdWJs
aWM6CisgICAgdmlydHVhbCB+UG9wU3RhdGVFdmVudCgpOworCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UG9wU3RhdGVFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzdGF0ZU9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUG9wU3Rh
dGVFdmVudChzdGF0ZU9iamVjdCkpOwpAQCAtNDcsNyArNDksNyBAQCBwdWJsaWM6CiAgICAgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVPYmplY3Qu
Z2V0KCk7IH0gICAgCiAKIHByaXZhdGU6Ci0gICAgUG9wU3RhdGVFdmVudChQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOworICAgIGV4cGxpY2l0IFBvcFN0YXRlRXZlbnQoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKIAogICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1fc3RhdGVPYmplY3Q7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUXVh
bGlmaWVkTmFtZS5jcHAgYi9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAppbmRleCA3YzI5
Y2UwZjkzYjJhYjE3YzVlYmMzMGQ1NzZlM2QzNDA0OGQyNDEwLi45MGM2ZDI5MmEwZTZkZTkxMjQx
ZWIwNDFkODBiZmUwMmYzOGE1NjNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9RdWFsaWZpZWRO
YW1lLmNwcAorKysgYi9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcApAQCAtNzIsNiArNzIs
MTEgQEAgUXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHAs
IGNvbnN0IGNoYXIqIGwsIGNvbnN0IEF0b21pY1MKICAgICBpbml0KHAsIEF0b21pY1N0cmluZyhs
KSwgbik7CiB9CiAKK1F1YWxpZmllZE5hbWU6On5RdWFsaWZpZWROYW1lKCkKK3sKKyAgICBkZXJl
ZigpOworfQorCiB2b2lkIFF1YWxpZmllZE5hbWU6OmRlcmVmKCkKIHsKICNpZmRlZiBRTkFNRV9E
RUZBVUxUX0NPTlNUUlVDVE9SCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1l
LmggYi9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKaW5kZXggMmRhOGYwYzU4Yjg4NTU5YzE2
OWU2NTc2ZGQ3Y2ZhZDI3ZGFlYzYxOS4uMzRmYzA2OWQ4NDMzMzc5ZWEwMjA5YmU3N2ExZWEwNzNi
ODMxNGMxNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1dl
YkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAg
UXVhbGlmaWVkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgY2hhciogbG9j
YWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSk7CiAgICAgUXVhbGlmaWVk
TmFtZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9pbXBsKGhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpKSB7IH0KICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9pbXBsID09IGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Ci0gICAgflF1
YWxpZmllZE5hbWUoKSB7IGRlcmVmKCk7IH0KKyAgICB+UXVhbGlmaWVkTmFtZSgpOwogI2lmZGVm
IFFOQU1FX0RFRkFVTFRfQ09OU1RSVUNUT1IKICAgICBRdWFsaWZpZWROYW1lKCkgOiBtX2ltcGwo
MCkgeyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3Bw
IGIvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggYmNhYjA4Y2Y1NTcxYTE0NWJk
NjAyYzkwMWMzOWFjOTU0M2FiNTYyNS4uMDlkY2ZmNTcyZDA2MTQ0YjZlMzUwMDA1ZWY5YTM3Mzg2
YzllM2M3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKQEAgLTk0NSw2ICs5NDUsMTAgQEAgU2VsZWN0
RWxlbWVudERhdGE6OlNlbGVjdEVsZW1lbnREYXRhKCkKIHsKIH0KIAorU2VsZWN0RWxlbWVudERh
dGE6On5TZWxlY3RFbGVtZW50RGF0YSgpCit7Cit9CisKIHZvaWQgU2VsZWN0RWxlbWVudERhdGE6
OmNoZWNrTGlzdEl0ZW1zKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAjaWYgIUFT
U0VSVF9ESVNBQkxFRApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oIGIv
V2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCmluZGV4IDczZTI2MjAyZDhmOWEzZTI4MmJkMmQ3
Yzc3ZWQxZWVhMmU4MDFiOWIuLjUzODE1ZjJhZWJlNWIwOTViZmRhMDU4NDNlNTE0YzdlMGM5MWJh
MTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaAorKysgYi9XZWJDb3Jl
L2RvbS9TZWxlY3RFbGVtZW50LmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwcml2YXRlOgogY2xhc3Mg
U2VsZWN0RWxlbWVudERhdGEgewogcHVibGljOgogICAgIFNlbGVjdEVsZW1lbnREYXRhKCk7Cisg
ICAgflNlbGVjdEVsZW1lbnREYXRhKCk7CiAKICAgICBib29sIG11bHRpcGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9tdWx0aXBsZTsgfQogICAgIHZvaWQgc2V0TXVsdGlwbGUoYm9vbCB2YWx1ZSkgeyBt
X211bHRpcGxlID0gdmFsdWU7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAgYi9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwCmlu
ZGV4IGQ2NDFjYjU2MGFmNWFiNzJkNjNiMjcyZTJhOTcyNTBlNGQ0ZjY4NmMuLjZjOGMyZGI5NzNh
NWZiYzU0OThiZGVmZDAwMWI2MjM3Yjg1OTAxZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1N0
YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAKKysrIGIvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmNwcApAQCAtMzQsNiArMzQsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitT
dGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OlN0YXRpY0hhc2hTZXROb2RlTGlzdChMaXN0SGFzaFNldDxS
ZWZQdHI8Tm9kZT4gPiYgbm9kZXMpCit7CisgICAgbV9ub2Rlcy5zd2FwKG5vZGVzKTsKK30KKwor
U3RhdGljSGFzaFNldE5vZGVMaXN0OjpTdGF0aWNIYXNoU2V0Tm9kZUxpc3QoKQoreworfQorCitT
dGF0aWNIYXNoU2V0Tm9kZUxpc3Q6On5TdGF0aWNIYXNoU2V0Tm9kZUxpc3QoKQoreworfQorCiB1
bnNpZ25lZCBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6Omxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fbm9kZXMuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmggYi9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaAppbmRleCBl
OTU0NDkzNjBhNDM1ZDc1NzFkY2E1NmYzYjc2YTJhMWNjMmM0YWNiLi5lNjBiZjQ0NTJjYWNmZTQz
MWU1M2Q4NzA4ZmQ2MWZhZGU2ZmNlZmY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuaAorKysgYi9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
aApAQCAtNDEsNiArNDEsOSBAQCBjbGFzcyBOb2RlOwogCiBjbGFzcyBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgewogcHVibGljOgorICAgIFN0YXRpY0hhc2hTZXROb2Rl
TGlzdCgpOworICAgIH5TdGF0aWNIYXNoU2V0Tm9kZUxpc3QoKTsKKwogICAgIC8vIEFkb3B0cyB0
aGUgY29udGVudHMgb2YgdGhlIG5vZGVzIExpc3RIYXNoU2V0LgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gYWRvcHQoY29uc3QgTGlzdEhhc2hTZXQ8UmVmUHRy
PE5vZGU+ID4mIG5vZGVzKQogICAgIHsKQEAgLTU3LDEwICs2MCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIE5vZGUqIGl0ZW1XaXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8UmVmUHRyPE5v
ZGU+ID4mIG5vZGVzKQotICAgIHsKLSAgICAgICAgbV9ub2Rlcy5zd2FwKG5vZGVzKTsKLSAgICB9
CisgICAgU3RhdGljSGFzaFNldE5vZGVMaXN0KExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBu
b2Rlcyk7CiAKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBtX25vZGVzOwogfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9TdHls
ZUVsZW1lbnQuY3BwCmluZGV4IGMzYTczMDAzM2VmMGNlY2E4OWY1ZTkyM2ZkZTk0MGNiYmEwNTZl
NjMuLmYzMTgzMjYwYWY3ZWQxNzg1ZDg0ZDgzMDRkYTEyYjEzNjE4ZWI3MGUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vU3R5bGVFbGVt
ZW50LmNwcApAQCAtMzksNiArMzksMTAgQEAgU3R5bGVFbGVtZW50OjpTdHlsZUVsZW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICAgICAgbV9zdGFydExp
bmVOdW1iZXIgPSBkb2N1bWVudC0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCktPmxpbmVOdW1i
ZXIoKTsKIH0KIAorU3R5bGVFbGVtZW50Ojp+U3R5bGVFbGVtZW50KCkKK3sKK30KKwogU3R5bGVT
aGVldCogU3R5bGVFbGVtZW50OjpzaGVldChFbGVtZW50KiBlKQogewogICAgIGlmICghbV9zaGVl
dCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5oIGIvV2ViQ29yZS9kb20v
U3R5bGVFbGVtZW50LmgKaW5kZXggMDBlNDVlZGUyMGI2MDQ1N2VmMTExYTQyZGM3MWQxOTA5MGM0
MTFjMy4uNjVmNjMxMDkzZTRlY2EzODBkZWY0YTI1ZWQ3YzFiZDFhNDE2M2IwNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vU3R5bGVFbGVt
ZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIFN0eWxlRWxlbWVu
dCB7CiBwdWJsaWM6CiAgICAgU3R5bGVFbGVtZW50KERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQ
YXJzZXIpOwotICAgIHZpcnR1YWwgflN0eWxlRWxlbWVudCgpIHt9CisgICAgdmlydHVhbCB+U3R5
bGVFbGVtZW50KCk7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQu
Y3BwIGIvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKaW5kZXggYmNjMzk1ZmY1OTNmZDM4ZGM4
MjQ3NmQ4N2Y5YWVjNmE1Zjc5ZTI2ZC4uODhkM2U2ZmEzZjAyMmViNGM2MzVjZDhkMjJmNzdmMmU4
OTkxNGJjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKKysrIGIvV2Vi
Q29yZS9kb20vVG91Y2hFdmVudC5jcHAKQEAgLTMxLDYgKzMxLDEwIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorVG91Y2hFdmVudDo6VG91Y2hFdmVudCgpCit7Cit9CisKIFRvdWNoRXZlbnQ6
OlRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMs
CiAgICAgICAgIFRvdWNoTGlzdCogY2hhbmdlZFRvdWNoZXMsIGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgCiAgICAgICAgIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBpbnQgc2NyZWVu
WCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLApAQCAtNDMsNiArNDcsMTAgQEAg
VG91Y2hFdmVudDo6VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMsIFRvdWNoTGlzdCogdGFy
Z2V0VG91Y2hlcywKIHsKIH0KIAorVG91Y2hFdmVudDo6flRvdWNoRXZlbnQoKQoreworfQorCiB2
b2lkIFRvdWNoRXZlbnQ6OmluaXRUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hM
aXN0KiB0YXJnZXRUb3VjaGVzLAogICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAogICAgICAgICBQYXNzUmVmUHRyPEFic3RyYWN0Vmll
dz4gdmlldywgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgY2xpZW50WCwgaW50IGNsaWVu
dFksCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmggYi9XZWJDb3JlL2RvbS9U
b3VjaEV2ZW50LmgKaW5kZXggMDgwYTQ5NTc0OTAwZDI1Y2JhZDgwYzY4NWRmZGNmODNkYmI3MGZk
OS4uMTUxNGNmOGIwNGZiYjg4MWVjMTM3MGRkNGMyYzJlZjc0MjM3MTNiNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCisrKyBiL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaApA
QCAtMzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRvdWNoRXZlbnQg
OiBwdWJsaWMgTW91c2VSZWxhdGVkRXZlbnQgewogcHVibGljOgorICAgIHZpcnR1YWwgflRvdWNo
RXZlbnQoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRvdWNoRXZlbnQ+IGNyZWF0ZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRvdWNoRXZlbnQpOwpAQCAtNjEsNyAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcygpIGNvbnN0IHsg
cmV0dXJuIG1fY2hhbmdlZFRvdWNoZXMuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBUb3VjaEV2
ZW50KCkge30KKyAgICBUb3VjaEV2ZW50KCk7CiAgICAgVG91Y2hFdmVudChUb3VjaExpc3QqIHRv
dWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgICAgIFRvdWNoTGlzdCog
Y2hhbmdlZFRvdWNoZXMsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwKICAgICAgICAgICAgIFBh
c3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFn
ZVgsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
IGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAppbmRleCAzNTZhNzE3
MDYyMWExMjg2OGVkMDJkMzk1ZmY1ZGQxNDlmZDZlZjk2Li5mMjdhMmU1OTVlZTRjMmI1YzY3OTg5
MWZjM2NmMTg5MGIwYTkyOTJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAKQEAgLTc3LDYgKzc3LDEwIEBAIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpDb21wb3NpdGVF
ZGl0Q29tbWFuZChEb2N1bWVudCAqZG9jdW1lbnQpCiB7CiB9CiAKK0NvbXBvc2l0ZUVkaXRDb21t
YW5kOjp+Q29tcG9zaXRlRWRpdENvbW1hbmQoKQoreworfQorCiB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpkb1VuYXBwbHkoKQogewogICAgIHNpemVfdCBzaXplID0gbV9jb21tYW5kcy5zaXpl
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaCBi
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCmluZGV4IGY4MzlhNzI4OTg1
ZDA2YWM1Yjg5ZWZmYzMzYzFhMWJiOTMyYmY5Y2QuLjQzOTc0NjRiOWFlNzI1NWU5Y2Q4MDZmNzAw
NDVhODI1YjY0OTYwYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBA
IC0zOSwxMCArMzksMTIgQEAgY2xhc3MgVGV4dDsKIAogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1h
bmQgOiBwdWJsaWMgRWRpdENvbW1hbmQgewogcHVibGljOgorICAgIHZpcnR1YWwgfkNvbXBvc2l0
ZUVkaXRDb21tYW5kKCk7CisKICAgICBib29sIGlzRmlyc3RDb21tYW5kKEVkaXRDb21tYW5kKiBj
b21tYW5kKSB7IHJldHVybiAhbV9jb21tYW5kcy5pc0VtcHR5KCkgJiYgbV9jb21tYW5kcy5maXJz
dCgpID09IGNvbW1hbmQ7IH0KIAogcHJvdGVjdGVkOgotICAgIENvbXBvc2l0ZUVkaXRDb21tYW5k
KERvY3VtZW50Kik7CisgICAgZXhwbGljaXQgQ29tcG9zaXRlRWRpdENvbW1hbmQoRG9jdW1lbnQq
KTsKIAogICAgIC8vCiAgICAgLy8gc3VnYXJ5LXN3ZWV0IGNvbnZlbmllbmNlIGZ1bmN0aW9ucyB0
byBoZWxwIGNyZWF0ZSBhbmQgYXBwbHkgZWRpdCBjb21tYW5kcyBpbiBjb21wb3NpdGUgY29tbWFu
ZHMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggMDYxMjk4NmE4OTdkZDQ5ODFhMTUyZTZh
ZmQwOWYyZTk5MGRkNzA5Ny4uZGEzMGQ4ZjZkNGIxNTM2Njc0M2ViOWU2OTVjYThlZDQxN2Q5NWJj
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTExMiw2ICsxMTIsMTAgQEAgQml0U3Rh
Y2s6OkJpdFN0YWNrKCkKIHsKIH0KIAorQml0U3RhY2s6On5CaXRTdGFjaygpCit7Cit9CisKIHZv
aWQgQml0U3RhY2s6OnB1c2goYm9vbCBiaXQpCiB7CiAgICAgdW5zaWduZWQgaW5kZXggPSBtX3Np
emUgLyBiaXRzSW5Xb3JkOwpAQCAtMzM2LDYgKzM0MCwxMCBAQCBUZXh0SXRlcmF0b3I6OlRleHRJ
dGVyYXRvcihjb25zdCBSYW5nZSogciwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiAg
ICAgYWR2YW5jZSgpOwogfQogCitUZXh0SXRlcmF0b3I6On5UZXh0SXRlcmF0b3IoKQoreworfQor
CiB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiB7CiAgICAgLy8gcmVzZXQgdGhlIHJ1biBp
bmZvcm1hdGlvbgpAQCAtMTQ1Niw2ICsxNDY0LDEwIEBAIFdvcmRBd2FyZUl0ZXJhdG9yOjpXb3Jk
QXdhcmVJdGVyYXRvcihjb25zdCBSYW5nZSogcikKICAgICBhZHZhbmNlKCk7IC8vIGdldCBpbiBw
b3NpdGlvbiBvdmVyIHRoZSBmaXJzdCBjaHVuayBvZiB0ZXh0CiB9CiAKK1dvcmRBd2FyZUl0ZXJh
dG9yOjp+V29yZEF3YXJlSXRlcmF0b3IoKQoreworfQorCiAvLyBXZSdyZSBhbHdheXMgaW4gb25l
IG9mIHRoZXNlIG1vZGVzOgogLy8gLSBUaGUgY3VycmVudCBjaHVuayBpbiB0aGUgdGV4dCBpdGVy
YXRvciBpcyBvdXIgY3VycmVudCBjaHVuawogLy8gICAgICAodHlwaWNhbGx5IGl0cyBhIHBpZWNl
IG9mIHdoaXRlc3BhY2UsIG9yIHRleHQgdGhhdCBlbmRlZCB3aXRoIHdoaXRlc3BhY2UpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmgKaW5kZXggN2ZkODdiZGFjOGM0M2Y0YjNjOWRmNjg1MWRhYTc3MmU0ZTE3
ZjJmNi4uMWJkODgyODhjYWZlM2E1ODhiNTM5YTJkNTY3NjlmY2M2ZWM1ZDg5ZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuaApAQCAtNjQsNiArNjQsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBmaW5kUGxh
aW5UZXh0KGNvbnN0IFJhbmdlKiwgY29uc3QgU3RyaW5nJiwgYm9vbCBmb3J3YXJkLCBib29sCiBj
bGFzcyBCaXRTdGFjayB7CiBwdWJsaWM6CiAgICAgQml0U3RhY2soKTsKKyAgICB+Qml0U3RhY2so
KTsKIAogICAgIHZvaWQgcHVzaChib29sKTsKICAgICB2b2lkIHBvcCgpOwpAQCAtODMsNiArODQs
NyBAQCBwcml2YXRlOgogY2xhc3MgVGV4dEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBUZXh0SXRl
cmF0b3IoKTsKKyAgICB+VGV4dEl0ZXJhdG9yKCk7CiAgICAgZXhwbGljaXQgVGV4dEl0ZXJhdG9y
KGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0
QmVoYXZpb3IpOwogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Bvc2l0aW9u
Tm9kZTsgfQpAQCAtMjkxLDYgKzI5Myw3IEBAIGNsYXNzIFdvcmRBd2FyZUl0ZXJhdG9yIHsKIHB1
YmxpYzoKICAgICBXb3JkQXdhcmVJdGVyYXRvcigpOwogICAgIGV4cGxpY2l0IFdvcmRBd2FyZUl0
ZXJhdG9yKGNvbnN0IFJhbmdlKik7CisgICAgfldvcmRBd2FyZUl0ZXJhdG9yKCk7CiAKICAgICBi
b29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fZGlkTG9va0FoZWFkICYmIG1fdGV4dEl0ZXJh
dG9yLmF0RW5kKCk7IH0KICAgICB2b2lkIGFkdmFuY2UoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuY3BwCmluZGV4IGM5NmU5NTNhYjQ5YTJmNDMyOWZmMjZlZjMwYjZiOGUzN2VkNjMx
Y2MuLjQ1MmZhN2Y5OWEyYmNkNTk5M2Q5ZWU3YjI5YzNiNDYxMTJiY2Y2ODEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAtNjIyLDYgKzYyMiwxMCBAQCB2b2lkIEluc3Bl
Y3RvclN0cmluZzo6d3JpdGVKU09OKFZlY3RvcjxVQ2hhcj4qIG91dHB1dCkgY29uc3QKICAgICBk
b3VibGVRdW90ZVN0cmluZyhtX3N0cmluZ1ZhbHVlLCBvdXRwdXQpOwogfQogCitJbnNwZWN0b3JP
YmplY3Q6On5JbnNwZWN0b3JPYmplY3QoKQoreworfQorCiBib29sIEluc3BlY3Rvck9iamVjdDo6
YXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCkKIHsKICAgICAqb3V0cHV0
ID0gdGhpczsKQEAgLTY5Niw2ICs3MDAsMTcgQEAgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OndyaXRl
SlNPTihWZWN0b3I8VUNoYXI+KiBvdXRwdXQpIGNvbnN0CiAgICAgb3V0cHV0LT5hcHBlbmQoJ30n
KTsKIH0KIAorSW5zcGVjdG9yT2JqZWN0OjpJbnNwZWN0b3JPYmplY3QoKQorICAgIDogSW5zcGVj
dG9yVmFsdWUoVHlwZU9iamVjdCkKKyAgICAsIG1fZGF0YSgpCisgICAgLCBtX29yZGVyKCkKK3sK
K30KKworSW5zcGVjdG9yQXJyYXk6On5JbnNwZWN0b3JBcnJheSgpCit7Cit9CisKIGJvb2wgSW5z
cGVjdG9yQXJyYXk6OmFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3V0cHV0KQogewog
ICAgICpvdXRwdXQgPSB0aGlzOwpAQCAtNzE4LDYgKzczMywxMiBAQCB2b2lkIEluc3BlY3RvckFy
cmF5Ojp3cml0ZUpTT04oVmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdAogICAgIG91dHB1dC0+
YXBwZW5kKCddJyk7CiB9CiAKK0luc3BlY3RvckFycmF5OjpJbnNwZWN0b3JBcnJheSgpCisgICAg
OiBJbnNwZWN0b3JWYWx1ZShUeXBlQXJyYXkpCisgICAgLCBtX2RhdGEoKQoreworfQorCiBQYXNz
UmVmUHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JBcnJheTo6Z2V0KHNpemVfdCBpbmRleCkK
IHsKICAgICBBU1NFUlQoaW5kZXggPCBtX2RhdGEuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmgKaW5kZXggNDAzNmY1NTk2YmI1MzI4NTBiN2U5NjdmMWQzOWQ1NjJmMTUwYjcx
YS4uMzkxMzcyZWE1MjBhZDU5OWY5Y2YzZjEzNTM3MTg2NTg0Njc5MjI4MSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3Rvck9iamVjdCgpKTsKICAgICB9Ci0g
ICAgfkluc3BlY3Rvck9iamVjdCgpIHsgfQorICAgIH5JbnNwZWN0b3JPYmplY3QoKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBhc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBhc09iamVjdCgpOwpAQCAt
MTk0LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEuZW5kKCk7IH0KIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JPYmplY3Qo
KSA6IEluc3BlY3RvclZhbHVlKFR5cGVPYmplY3QpIHsgfQorICAgIEluc3BlY3Rvck9iamVjdCgp
OwogICAgIERpY3Rpb25hcnkgbV9kYXRhOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fb3JkZXI7CiB9
OwpAQCAtMjA1LDcgKzIwNSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW5zcGVjdG9yQXJyYXkoKSk7CiAgICAgfQotICAgIH5JbnNwZWN0b3JBcnJheSgp
IHsgfQorICAgIH5JbnNwZWN0b3JBcnJheSgpOwogCiAgICAgdmlydHVhbCBib29sIGFzQXJyYXko
UmVmUHRyPEluc3BlY3RvckFycmF5Piogb3V0cHV0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+IGFzQXJyYXkoKTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHdyaXRlSlNPTihWZWN0b3I8VUNoYXI+KiBvdXRwdXQpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIEluc3BlY3RvckFycmF5KCkgOiBJbnNwZWN0b3JWYWx1ZShUeXBlQXJy
YXkpIHsgfQorICAgIEluc3BlY3RvckFycmF5KCk7CiAgICAgVmVjdG9yPFJlZlB0cjxJbnNwZWN0
b3JWYWx1ZT4gPiBtX2RhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNo
ZWRSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXgg
YTZmZjBmZjI5NDMwMTAwMGRjNjkxMjBmOGI1MGI5ZDI3MzdhNDJlZC4uMDhhY2EyMDQ4ZGFhMjNm
MGU1YzY4MGYwZjMxYWEyZDRkNTc3ZDA0NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2Fj
aGVkUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcApA
QCAtNDI4LDYgKzQyOCwyNSBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVSZXNwb25zZUFm
dGVyUmV2YWxpZGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHZhbAogICAgIH0KIH0KIAor
dm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVnaXN0ZXJIYW5kbGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGVC
YXNlKiBoKQoreworICAgICsrbV9oYW5kbGVDb3VudDsKKyAgICBpZiAobV9yZXNvdXJjZVRvUmV2
YWxpZGF0ZSkKKyAgICAgICAgbV9oYW5kbGVzVG9SZXZhbGlkYXRlLmFkZChoKTsKK30KKwordm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dW5yZWdpc3RlckhhbmRsZShDYWNoZWRSZXNvdXJjZUhhbmRsZUJh
c2UqIGgpCit7CisgICAgQVNTRVJUKG1faGFuZGxlQ291bnQgPiAwKTsKKyAgICAtLW1faGFuZGxl
Q291bnQ7CisKKyAgICBpZiAobV9yZXNvdXJjZVRvUmV2YWxpZGF0ZSkKKyAgICAgICAgIG1faGFu
ZGxlc1RvUmV2YWxpZGF0ZS5yZW1vdmUoaCk7CisKKyAgICBpZiAoIW1faGFuZGxlQ291bnQpCisg
ICAgICAgIGRlbGV0ZUlmUG9zc2libGUoKTsKK30KKwogYm9vbCBDYWNoZWRSZXNvdXJjZTo6Y2Fu
VXNlQ2FjaGVWYWxpZGF0b3IoKSBjb25zdAogewogICAgIGlmIChtX2xvYWRpbmcgfHwgbV9lcnJv
ck9jY3VycmVkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaCBi
L1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgKaW5kZXggOTU4YzhmZDBjYzE1MGJlY2Zh
Yjc3MGJkOWFkZDFlNjA5ZDc1ZTczOS4uNzg5MjhjZTUwYjhhYTRhMzgxMDE3MDk4NTlhOGRiNzkw
N2FkOTZjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAorKysg
Yi9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xODgsOCArMTg4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgaW5jcmVhc2VQcmVsb2FkQ291bnQoKSB7ICsrbV9wcmVsb2FkQ291bnQ7
IH0KICAgICB2b2lkIGRlY3JlYXNlUHJlbG9hZENvdW50KCkgeyBBU1NFUlQobV9wcmVsb2FkQ291
bnQpOyAtLW1fcHJlbG9hZENvdW50OyB9CiAgICAgCi0gICAgdm9pZCByZWdpc3RlckhhbmRsZShD
YWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UqIGgpIHsgKyttX2hhbmRsZUNvdW50OyBpZiAobV9yZXNv
dXJjZVRvUmV2YWxpZGF0ZSkgbV9oYW5kbGVzVG9SZXZhbGlkYXRlLmFkZChoKTsgfQotICAgIHZv
aWQgdW5yZWdpc3RlckhhbmRsZShDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UqIGgpIHsgQVNTRVJU
KG1faGFuZGxlQ291bnQgPiAwKTsgLS1tX2hhbmRsZUNvdW50OyBpZiAobV9yZXNvdXJjZVRvUmV2
YWxpZGF0ZSkgbV9oYW5kbGVzVG9SZXZhbGlkYXRlLnJlbW92ZShoKTsgaWYgKCFtX2hhbmRsZUNv
dW50KSBkZWxldGVJZlBvc3NpYmxlKCk7IH0KKyAgICB2b2lkIHJlZ2lzdGVySGFuZGxlKENhY2hl
ZFJlc291cmNlSGFuZGxlQmFzZSogaCk7CisgICAgdm9pZCB1bnJlZ2lzdGVySGFuZGxlKENhY2hl
ZFJlc291cmNlSGFuZGxlQmFzZSogaCk7CiAgICAgCiAgICAgYm9vbCBjYW5Vc2VDYWNoZVZhbGlk
YXRvcigpIGNvbnN0OwogICAgIGJvb2wgbXVzdFJldmFsaWRhdGUoQ2FjaGVQb2xpY3kpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCmluZGV4IGUzMDRm
ZmEzZTg5MmQwYThiYzU4ZGNkYWNmNmZhNzE0OTczYjQzMDEuLjA5ZjIxNmJhNmQ2NmEzYTJhMjhi
NjNlZjQxYzA1ZGFlNGFjYTUwNTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQSGVhZGVyTWFwLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhl
YWRlck1hcC5jcHAKQEAgLTM3LDYgKzM3LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorSFRUUEhlYWRlck1hcDo6SFRUUEhlYWRlck1hcCgpCit7Cit9
CisKK0hUVFBIZWFkZXJNYXA6On5IVFRQSGVhZGVyTWFwKCkKK3sKK30KKwogUGFzc093blB0cjxD
cm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBIVFRQSGVhZGVyTWFwOjpjb3B5RGF0YSgpIGNv
bnN0CiB7CiAgICAgT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IGRhdGEobmV3
IENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGEoKSk7CkBAIC01OCw2ICs2NiwxOCBAQCB2b2lk
IEhUVFBIZWFkZXJNYXA6OmFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFw
RGF0YT4gZGF0YSkKICAgICAgICAgc2V0KGhlYWRlci5maXJzdCwgaGVhZGVyLnNlY29uZCk7CiAg
ICAgfQogfQorCitTdHJpbmcgSFRUUEhlYWRlck1hcDo6Z2V0KGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywg
Q2FzZUZvbGRpbmdIYXNoPjo6Z2V0KG5hbWUpOworfQorCitwYWlyPEhUVFBIZWFkZXJNYXA6Oml0
ZXJhdG9yLCBib29sPiBIVFRQSGVhZGVyTWFwOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+OjphZGQobmFtZSwgdmFsdWUpOworfQorCisKICAg
ICAKIC8vIEFkYXB0ZXIgdGhhdCBhbGxvd3MgdGhlIEhhc2hNYXAgdG8gdGFrZSBDIHN0cmluZ3Mg
YXMga2V5cy4KIHN0cnVjdCBDYXNlRm9sZGluZ0NTdHJpbmdUcmFuc2xhdG9yIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGM2MTQ1YmQ0ZjBlOWU3YmI3ZjBk
NDk5OGVmODVhMzU5NGIxYTZlZmQuLjAyMDcxZTM2MTBjMWQ0YjRmY2RmNGQ2Yzk1OWI0OWY4N2Yz
YTVmMTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFw
LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApAQCAtNDEs
MjAgKzQxLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEhUVFBIZWFkZXJN
YXAgOiBwdWJsaWMgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNo
PiB7CiAgICAgcHVibGljOgorICAgICAgICBIVFRQSGVhZGVyTWFwKCk7CisgICAgICAgIH5IVFRQ
SGVhZGVyTWFwKCk7CisKICAgICAgICAgLy8gR2V0cyBhIGNvcHkgb2YgdGhlIGRhdGEgc3VpdGFi
bGUgZm9yIHBhc3NpbmcgdG8gYW5vdGhlciB0aHJlYWQuCiAgICAgICAgIFBhc3NPd25QdHI8Q3Jv
c3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gY29weURhdGEoKSBjb25zdDsKIAogICAgICAgICB2
b2lkIGFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4pOwogICAg
ICAgICAKLSAgICAgICAgU3RyaW5nIGdldChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nLCBDYXNlRm9sZGluZ0hhc2g+OjpnZXQobmFtZSk7Ci0gICAgICAgIH0KKyAgICAgICAgU3Ry
aW5nIGdldChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogCi0gICAgICAgIHBhaXI8
aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBIYXNoTWFwPEF0b21pY1N0
cmluZywgU3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+OjphZGQobmFtZSwgdmFsdWUpOwotICAgICAg
ICB9CisgICAgICAgIHBhaXI8aXRlcmF0b3IsIGJvb2w+IGFkZChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgICAgIC8vIEFsdGVybmF0ZSBhY2Nl
c3NvcnMgdGhhdCBhcmUgZmFzdGVyIHRoYW4gY29udmVydGluZyB0aGUgY2hhciogdG8gQXRvbWlj
U3RyaW5nIGZpcnN0LgogICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IGNoYXIqKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwCmluZGV4IDYzYTE4YTA0MzRkZTA3MjMwZjE0ODQw
ODk5NDA5Zjg1ODE0NmQwYmIuLmY5ZWI1NmU4MmY5NjRmOWUyMTU3MzZkMDQ0MzUwZTI0ZmExYzk5
NmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmNwcApAQCAtMzksNiArMzksMTAgQEAgUmVu
ZGVyQXBwbGV0OjpSZW5kZXJBcHBsZXQoSFRNTEFwcGxldEVsZW1lbnQqIGFwcGxldCwgY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIFN0cmkKICAgICBzZXRJbmxpbmUodHJ1ZSk7CiB9CiAKK1JlbmRlckFw
cGxldDo6flJlbmRlckFwcGxldCgpCit7Cit9CisKIEludFNpemUgUmVuZGVyQXBwbGV0OjppbnRy
aW5zaWNTaXplKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IG1ha2Ugc2Vu
c2UuIFdlIGNhbid0IGp1c3Qgc3RhcnQgcmV0dXJuaW5nCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJBcHBsZXQuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckFwcGxldC5o
CmluZGV4IDYyZjQ2Y2Q4ZDU2MmRkZGJlMDIwYWU2NDIyNDgzZmY3NTNkNDQxNDUuLjY0MTU2OGQ4
MjY0MGQzZjgzYWI2ZjE3ZTA5MGU1YjE4NWM2ODA5YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckFwcGxldC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckFwcGxl
dC5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZW5k
ZXJBcHBsZXQgOiBwdWJsaWMgUmVuZGVyV2lkZ2V0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJl
bmRlckFwcGxldChIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+JiBhcmdzKTsKKyAgICAgICAgdmlydHVhbCB+UmVuZGVyQXBwbGV0KCk7CiAKICAgICAgICAg
dm9pZCBjcmVhdGVXaWRnZXRJZk5lY2Vzc2FyeSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCdXR0b24uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmNwcAppbmRleCA4MzU3YmQ0NDg1MmY5M2UyYTQyMmZlMDNjODkzNjFhNjhjMTYyZjk4Li4yNjQy
ZjIzNGIxZWEwOGFmMjhkM2QxNmM4MWVlZjZhOGQwYjUxMzQyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJ1dHRvbi5jcHAKQEAgLTQ1LDYgKzQ1LDEwIEBAIFJlbmRlckJ1dHRvbjo6UmVuZGVyQnV0dG9u
KE5vZGUqIG5vZGUpCiB7CiB9CiAKK1JlbmRlckJ1dHRvbjo6flJlbmRlckJ1dHRvbigpCit7Cit9
CisKIHZvaWQgUmVuZGVyQnV0dG9uOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogewogICAgIGlmICghbV9pbm5lcikgewpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmggYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uaAppbmRleCAxZmM1ZWI2MjAxYTY1YTU4OWQ4MzQ3MjhmMjkwYjlhZjk3
ZWU3OTk0Li4yNTJlZGI0OTc3ODlmZTRkYTU0ZmE4NThmNjAxZGI2YzA2ZmMxM2IyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCdXR0b24uaApAQCAtMzQsNyArMzQsOCBAQCBjbGFzcyBSZW5kZXJUZXh0RnJh
Z21lbnQ7CiAvLyB0byBkYXRlIGFzIHRoZSBidXR0b24gY2hhbmdlcy4KIGNsYXNzIFJlbmRlckJ1
dHRvbiA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyQnV0
dG9uKE5vZGUqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJCdXR0b24oTm9kZSopOworICAgIHZpcnR1
YWwgflJlbmRlckJ1dHRvbigpOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckJ1dHRvbiI7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJCdXR0b24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuY3BwCmluZGV4IDYzOTIyMWQxNjU0OWM5Njk5NWMyMzE3YjRiZTQzYmRmNGZlMThiYWEu
LmE1NzFhMWFkZTJmMzZiMmFkZDJhNmE0NDI4ZGI5NGZmN2RhYzEwZGYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckNvdW50ZXIuY3BwCkBAIC0yOTIsNiArMjkyLDEwIEBAIFJlbmRlckNvdW50ZXI6OlJl
bmRlckNvdW50ZXIoRG9jdW1lbnQqIG5vZGUsIGNvbnN0IENvdW50ZXJDb250ZW50JiBjb3VudGVy
KQogewogfQogCitSZW5kZXJDb3VudGVyOjp+UmVuZGVyQ291bnRlcigpCit7Cit9CisKIGNvbnN0
IGNoYXIqIFJlbmRlckNvdW50ZXI6OnJlbmRlck5hbWUoKSBjb25zdAogewogICAgIHJldHVybiAi
UmVuZGVyQ291bnRlciI7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKaW5kZXggOGQ5ODFkZjlk
YTViYzM3NGY1NjM2YTM2NWNlMGQxMDA0YWU2NjVkZi4uOTM3MzE5MzYyOGEzMGFmZDg0Njc2YTc0
ZWMzYjEyOGE5MmViZjdjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291
bnRlci5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaApAQCAtMzIsNiAr
MzIsNyBAQCBjbGFzcyBDb3VudGVyTm9kZTsKIGNsYXNzIFJlbmRlckNvdW50ZXIgOiBwdWJsaWMg
UmVuZGVyVGV4dCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyQ291bnRlcihEb2N1bWVudCosIGNvbnN0
IENvdW50ZXJDb250ZW50Jik7CisgICAgdmlydHVhbCB+UmVuZGVyQ291bnRlcigpOwogCiAgICAg
Ly8gUmVtb3ZlcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBDb3VudGVyTm9kZSBhc3NvY2lhdGVkIHdp
dGggdGhpcyByZW5kZXJlcgogICAgIC8vIGlmIGl0cyBpZGVudGlmaWVyIG1hdGNoZXMgdGhlIGFy
Z3VtZW50LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKaW5kZXggYmM4ZThhZWYzOTJmNGNk
YzNmYmEzYjQ4YjBmZDliMTQ1NmQ3NWY4NC4uYTQyZGFhOGE2YzJhNjY3N2M5OGIwODIxZmM0YWZk
ZDExOWZjZmFhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQu
aAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCkBAIC0zMCw3ICszMCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyRmllbGRzZXQgOiBwdWJsaWMg
UmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckZpZWxkc2V0KE5vZGUqKTsKKyAgICBl
eHBsaWNpdCBSZW5kZXJGaWVsZHNldChOb2RlKik7CiAKICAgICBSZW5kZXJCb3gqIGZpbmRMZWdl
bmQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWln
bk9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcApp
bmRleCA4MzllOTYzNGI0OTFmNzc2NmZmYzM0ZjkwODIwZGJhNjA0ZTA5NmMzLi5mOWY2OTg4ZjM4
NzI5OWQ2NjI4ZGExMWY2NzVlYTgxZTA0MTNhNjZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGb3JlaWduT2JqZWN0LmNwcApAQCAtNDEsNiArNDEsMTAgQEAgUmVuZGVyRm9yZWlnbk9iamVj
dDo6UmVuZGVyRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCogbm9kZSkKIHsK
IH0KIAorUmVuZGVyRm9yZWlnbk9iamVjdDo6flJlbmRlckZvcmVpZ25PYmplY3QoKQoreworfQor
CiB2b2lkIFJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBp
bnQsIGludCkKIHsKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQo
KSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuaCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuaAppbmRleCA4NzQyM2U2ZDli
NGEyNmI5OTAyODFhNDNhOTc4NDFiNWIxZDdmMzhiLi5iZGY5NmNlNTBkODcyN2E2NWQ3MDBkNTFl
ZTY2NmI5NWNmMGJlYzBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3Jl
aWduT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5o
CkBAIC0zMyw3ICszMyw4IEBAIGNsYXNzIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OwogCiBjbGFz
cyBSZW5kZXJGb3JlaWduT2JqZWN0IDogcHVibGljIFJlbmRlclNWR0Jsb2NrIHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Kik7CisgICAg
ZXhwbGljaXQgUmVuZGVyRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCopOwor
ICAgIHZpcnR1YWwgflJlbmRlckZvcmVpZ25PYmplY3QoKTsKIAogICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJGb3JlaWduT2JqZWN0Ijsg
fQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5oIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaAppbmRleCBjODk1YTBjMzAxMTViMWEyYmY1NjZiMDg3
ODk3MTk4ZWRiYTg5ZThmLi5mNmQ3ZWU4OTVlN2IzNjEyYWRlMmFmZjIyZmUzZGYwZTllM2QxNTA2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgSFRNTEZy
YW1lRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyRnJhbWUgOiBwdWJsaWMgUmVuZGVyRnJhbWVCYXNl
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGcmFtZShIVE1MRnJhbWVFbGVtZW50Kik7CisgICAgZXhw
bGljaXQgUmVuZGVyRnJhbWUoSFRNTEZyYW1lRWxlbWVudCopOwogCiAgICAgRnJhbWVFZGdlSW5m
byBlZGdlSW5mbygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZUJhc2UuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCmluZGV4
IGNkM2NmMGM2YzE4NDA0ZWRkZWEyOTg1YTFkOTY5ZjljYTU3NjdjNzYuLjRmYWQ1NjBjNWIzMzdm
OTZiODEzYjBjYjc5MDU0NTM2MmRjNjY4N2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lQmFzZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFz
ZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEJhc2UgY2xhc3Mg
Zm9yIFJlbmRlckZyYW1lIGFuZCBSZW5kZXJJRnJhbWUKIGNsYXNzIFJlbmRlckZyYW1lQmFzZSA6
IHB1YmxpYyBSZW5kZXJQYXJ0IHsKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJGcmFtZUJhc2UoRWxl
bWVudCopOworICAgIGV4cGxpY2l0IFJlbmRlckZyYW1lQmFzZShFbGVtZW50Kik7CiAKIHB1Ymxp
YzoKICAgICB2b2lkIGxheW91dFdpdGhGbGF0dGVuaW5nKGJvb2wgZml4ZWRXaWR0aCwgYm9vbCBm
aXhlZEhlaWdodCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2Fu
dmFzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgKaW5kZXggNDczZGFk
NWRhMjBlYTVjMDE1Y2ViYjMxNjMyMmQyYmY5MWY1ZDI2OC4uMjIzMGIzOTM1NGJlNjUyMjVhMzI0
MGU3MTkxNGVhOWYyODIzZTgxZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SFRNTENhbnZhcy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaApA
QCAtMzQsNyArMzQsNyBAQCBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIAogY2xhc3MgUmVuZGVy
SFRNTENhbnZhcyA6IHB1YmxpYyBSZW5kZXJSZXBsYWNlZCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
SFRNTENhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCopOworICAgIGV4cGxpY2l0IFJlbmRlckhUTUxD
YW52YXMoSFRNTENhbnZhc0VsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NhbnZhcygp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaAppbmRleCAzMjVlMmIzZDlmNzY4ZDFmMjIz
YTM5MDhhNzJlZDg2MDI1NDRhMzIyLi4wYmIzMTgyOWUxZTE2YzE1MjEwZTBiZjg0NzRmYjA0NjRk
NWRmODYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlcklGcmFtZSA6IHB1YmxpYyBSZW5kZXJGcmFt
ZUJhc2UgewogcHVibGljOgotICAgIFJlbmRlcklGcmFtZShFbGVtZW50Kik7CisgICAgZXhwbGlj
aXQgUmVuZGVySUZyYW1lKEVsZW1lbnQqKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKICAgICBib29sIHJlcXVpcmVzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCBmZWI4YjhmYzVlNDFlZjA1MGU3ODAwM2E5YTYw
ZDVkZGZmMDZiYjFmLi4zNGIyOWQ3N2ZiYmM2ZTFhNGRmMjVkNDhmN2IyZjk0MTJiYzQzMzQ2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBQb3NpdGlv
bjsKIAogY2xhc3MgUmVuZGVySW5saW5lIDogcHVibGljIFJlbmRlckJveE1vZGVsT2JqZWN0IHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJJbmxpbmUoTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlcklu
bGluZShOb2RlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpOwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uaAppbmRleCBmN2JkNjYxMDYxN2VmN2MwOTljYWZhMDEyMjQ0NDQ1MGZm
MGVjY2M0Li4yZmNiNmM0MDI1ZWY3ZDRlNTRlZjViMzU3Mjg3NWI5NzdhOTAzOTAwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgUmVuZGVyTGlz
dE1hcmtlcjsKIAogY2xhc3MgUmVuZGVyTGlzdEl0ZW0gOiBwdWJsaWMgUmVuZGVyQmxvY2sgewog
cHVibGljOgotICAgIFJlbmRlckxpc3RJdGVtKE5vZGUqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJM
aXN0SXRlbShOb2RlKik7CiAKICAgICBpbnQgdmFsdWUoKSBjb25zdCB7IGlmICghbV9pc1ZhbHVl
VXBUb0RhdGUpIHVwZGF0ZVZhbHVlTm93KCk7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgdm9pZCB1
cGRhdGVWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVl
ZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAppbmRleCBiYjkxN2Y4
NTNlOTdjMzVlNDBhOTVlMjk2YjA4MGMzMWNhMTMyNjg3Li5mZWY3ZDA2M2M0MGVhODJkZDlmN2Jj
OWFmZDg5ZjljM2MyN2E0M2M4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
YXJxdWVlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcApAQCAt
NjYsNiArNjYsMTAgQEAgUmVuZGVyTWFycXVlZTo6UmVuZGVyTWFycXVlZShSZW5kZXJMYXllciog
bCkKIHsKIH0KIAorUmVuZGVyTWFycXVlZTo6flJlbmRlck1hcnF1ZWUoKQoreworfQorCiBpbnQg
UmVuZGVyTWFycXVlZTo6bWFycXVlZVNwZWVkKCkgY29uc3QKIHsKICAgICBpbnQgcmVzdWx0ID0g
bV9sYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+bWFycXVlZVNwZWVkKCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNYXJxdWVlLmgKaW5kZXggMTY1MTQ1NGRmNTFhYzJlZWY0NWU1Mjk5NTNlMmI4MjZmNmEz
ZjI3MC4uNzk5OThlZDA3OWU1YzkxYTA1MjcxNDIxNzZhNjg3OTU3NGNjMWJlNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1hcnF1ZWUuaApAQCAtNTUsNyArNTUsOCBAQCBjbGFzcyBSZW5kZXJMYXllcjsK
IC8vIFRoaXMgY2xhc3MgaGFuZGxlcyB0aGUgYXV0by1zY3JvbGxpbmcgb2YgbGF5ZXJzIHdpdGgg
b3ZlcmZsb3c6IG1hcnF1ZWUuCiBjbGFzcyBSZW5kZXJNYXJxdWVlIDogcHVibGljIE5vbmNvcHlh
YmxlIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXJxdWVlKFJlbmRlckxheWVyKik7CisgICAgZXhw
bGljaXQgUmVuZGVyTWFycXVlZShSZW5kZXJMYXllciopOworICAgIHZpcnR1YWwgflJlbmRlck1h
cnF1ZWUoKTsKIAogICAgIGludCBzcGVlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWQ7IH0KICAg
ICBpbnQgbWFycXVlZVNwZWVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJQYXRoLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCmluZGV4
IGNiZTE5MDBjZGY4YTllYjdlYTUxZGU2NThjZjk0YzQ4YTQ1ZTkyYmIuLjJlNWE5NDM1MjRjMzhl
NWJkZmU5YjFkNDgwMWM3ZDIwYmNiZjc2YWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclBhdGguY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCkBA
IC03Myw2ICs3MywxMCBAQCBSZW5kZXJQYXRoOjpSZW5kZXJQYXRoKFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50KiBub2RlKQogewogfQogCitSZW5kZXJQYXRoOjp+UmVuZGVyUGF0aCgpCit7
Cit9CisKIGJvb2wgUmVuZGVyUGF0aDo6ZmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBib29sIHJlcXVpcmVzRmlsbCwgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7CiAgICAgaWYgKCFt
X2ZpbGxCb3VuZGluZ0JveC5jb250YWlucyhwb2ludCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQYXRoLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmgKaW5k
ZXggMWQzNWEwMWNjNWE3YzQ0NThlNGE1MzVlZTZkNjA2NjQ5MmZmMDdlZS4uNTc5YjNjNDE4YjYx
NjEzODM4MTc5NDJhMDM1ZmU0ZTEyNjIyNWViOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUGF0aC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguaApAQCAt
MzgsNyArMzgsOCBAQCBjbGFzcyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDsKIAogY2xh
c3MgUmVuZGVyUGF0aCA6IHB1YmxpYyBSZW5kZXJTVkdNb2RlbE9iamVjdCB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVyUGF0aChTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCopOworICAgIGV4cGxp
Y2l0IFJlbmRlclBhdGgoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqKTsKKyAgICB2aXJ0
dWFsIH5SZW5kZXJQYXRoKCk7CiAKICAgICBjb25zdCBQYXRoJiBwYXRoKCkgY29uc3QgeyByZXR1
cm4gbV9wYXRoOyB9CiAgICAgdm9pZCBzZXROZWVkc1BhdGhVcGRhdGUoKSB7IG1fbmVlZHNQYXRo
VXBkYXRlID0gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
QmxvY2suaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Jsb2NrLmgKaW5kZXggYzEzNzlk
YTdhMzViNjlkNDljMTIxNmVkNmFlMTQzOWE1ZTA4ZGUzZS4uYTlkZDVkYjU3Y2JjZWE3ZDZkM2Y2
YTRhMTYyMTlhZWZlNTUwOTQxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHQmxvY2suaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdCbG9jay5oCkBAIC0z
MSw3ICszMSw3IEBAIGNsYXNzIFNWR0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR0Jsb2NrIDog
cHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdCbG9jayhTVkdFbGVt
ZW50Kik7CisgICAgZXhwbGljaXQgUmVuZGVyU1ZHQmxvY2soU1ZHRWxlbWVudCopOwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCBiNTk3NGNhOTQ0
MzljNGRiNzUzZDdjNTNmODM4NzFiYjdiZjAyZmFhLi4wNzYxNTYyNjcwZGViOGRiMzMxMmE3MGFj
OTU5ZDg3OTdiNzllOTBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdD
b250YWluZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5j
cHAKQEAgLTQzLDYgKzQzLDEwIEBAIFJlbmRlclNWR0NvbnRhaW5lcjo6UmVuZGVyU1ZHQ29udGFp
bmVyKFNWR1N0eWxlZEVsZW1lbnQqIG5vZGUpCiB7CiB9CiAKK1JlbmRlclNWR0NvbnRhaW5lcjo6
flJlbmRlclNWR0NvbnRhaW5lcigpCit7Cit9CisKIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjps
YXlvdXQoKQogewogICAgIEFTU0VSVChuZWVkc0xheW91dCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggYjBjOTUyZjRhMmRkZjZjZGE0OWZlNmFhNWE5MzhlMmY4
YWE2NjQ0Yi4uNWJkYmYzMmIyMGM1OTVhYjRmODQxNWFlM2IzZmQ2Y2M1ZjE5NzNlOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTMzLDcgKzMzLDggQEAgY2xhc3Mg
U1ZHRWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZHQ29udGFpbmVyIDogcHVibGljIFJlbmRlclNW
R01vZGVsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdDb250YWluZXIoU1ZHU3R5bGVk
RWxlbWVudCopOworICAgIGV4cGxpY2l0IFJlbmRlclNWR0NvbnRhaW5lcihTVkdTdHlsZWRFbGVt
ZW50Kik7CisgICAgdmlydHVhbCB+UmVuZGVyU1ZHQ29udGFpbmVyKCk7CiAKICAgICBjb25zdCBS
ZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gJm1fY2hpbGRy
ZW47IH0KICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyByZXR1cm4gJm1f
Y2hpbGRyZW47IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0hpZGRl
bkNvbnRhaW5lci5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
LmgKaW5kZXggOTc4MDBkNDZjNjM1NGZiZjRhNWRkNWY2ZDliMzFmZTY1NGQxZGM4NC4uYzU5MWE4
ODE0ZDU1ZjU2ZjNmZmVkMzBlZDg2ZjY5ZWQwNWI1NWEzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIC8vIDxkZWZzPiwgPGxpbmVhckdyYWRpZW50PiwgPHJhZGlhbEdyYWRp
ZW50PiBhcmUgYWxsIGdvb2QgZXhhbXBsZXMKICAgICBjbGFzcyBSZW5kZXJTVkdIaWRkZW5Db250
YWluZXIgOiBwdWJsaWMgUmVuZGVyU1ZHQ29udGFpbmVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdTdHlsZWRFbGVtZW50Kik7CisgICAgICAgIGV4
cGxpY2l0IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdTdHlsZWRFbGVtZW50Kik7CiAKICAg
ICAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJl
bmRlclNWR0hpZGRlbkNvbnRhaW5lciI7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHSW5saW5lLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmUu
aAppbmRleCA5MmI2ZmU3ZDI3NTZhMWJiMDc5M2FjYzkwOTY1MjYzMzIxZTcyMThiLi5kN2I3ZTY2
OWM4M2EyMGM2ZjE3M2RiZjY1NWM5YWYzMDNhMjRiNTA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdJbmxpbmUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdJbmxpbmUuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFJlbmRlclNWR0lubGluZSA6IHB1YmxpYyBSZW5kZXJJbmxpbmUgewogcHVibGljOgotICAgIFJl
bmRlclNWR0lubGluZShOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyU1ZHSW5saW5lKE5vZGUq
KTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJSZW5kZXJTVkdJbmxpbmUiOyB9CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmNwcAppbmRleCBmNWVhNWZjYmM0MDU3OGExZjM3MGE0NmY5MjMzMDM5NDgxMjQ3NWNmLi5k
OTllZDFmZWVmYmEyN2ZjYWU2Yzc0MzYxOWFlNWNkZGRiNWRmNDc1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcApAQCAtNDMsNiArNDMsMTAgQEAgUmVuZGVyU1ZH
SW5saW5lVGV4dDo6UmVuZGVyU1ZHSW5saW5lVGV4dChOb2RlKiBuLCBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IHN0cikKIHsKIH0KIAorUmVuZGVyU1ZHSW5saW5lVGV4dDo6flJlbmRlclNWR0lubGlu
ZVRleHQoKQoreworfQorCiB2b2lkIFJlbmRlclNWR0lubGluZVRleHQ6OnN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCiB7CiAg
ICAgUmVuZGVyVGV4dDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oCmluZGV4IGY2MDY5MTg2MmUzYzE3NWYzYWFiNzVk
YzMxNmI3ODA1NTg2ZjYxYTYuLjQ2ODQ3NWZmMGVhOTE3NzQyNDc2MGMzYjVlYjY1MDQwMWUwMWJh
ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZVRleHQuaAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKQEAgLTM0LDYgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyU1ZHSW5saW5lVGV4dCA6IHB1
YmxpYyBSZW5kZXJUZXh0IHsKIHB1YmxpYzoKICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0KE5vZGUq
LCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJTVkdJbmxpbmVU
ZXh0KCk7CiAKICAgICBib29sIGNoYXJhY3RlclN0YXJ0c05ld1RleHRDaHVuayhpbnQgcG9zaXRp
b24pIGNvbnN0OwogICAgIHZvaWQgc3RvcmVMYXlvdXRBdHRyaWJ1dGVzKGNvbnN0IFNWR1RleHRM
YXlvdXRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSB7IG1fYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0Lmgg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IDlkZTIxN2M1
NGJkZjAzN2ZmZjJlYWQyMzM2NmQ2ZWEyNDgwMWRlNTAuLmZiOGY4OWYxYjNkOWJiMGQwZGExMGIw
NDNkZjI5NDhmOWY0MmYwYzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R01vZGVsT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHTW9kZWxPYmpl
Y3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTVkdTdHlsZWRFbGVtZW50OwogCiBjbGFzcyBS
ZW5kZXJTVkdNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5kZXJPYmplY3QgewogcHVibGljOgotICAg
IFJlbmRlclNWR01vZGVsT2JqZWN0KFNWR1N0eWxlZEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBS
ZW5kZXJTVkdNb2RlbE9iamVjdChTVkdTdHlsZWRFbGVtZW50Kik7CiAKICAgICB2aXJ0dWFsIGJv
b2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCmluZGV4
IDRiMjM3Mzc3NDkwNmY3MWUzZjgxNjRkMDJjNDRlMjJlMTEwYmQ4ZDEuLmIwNTQyMDM3ZTE3MTIz
N2M4ZTdkMTljZjhhMWYwOTZlZmIwNzUzYTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlIDogcHVibGljIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KTsKKyAgICBleHBsaWNpdCBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMqIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZSI7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1Jvb3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXgg
ODJiMTBkNTE5YjkwMWRhMDE3OWM1MjUyODA5OWRlZjljNTZiMjViYS4uMTBhOTQxOGViYWNhZDEw
NzI0YWY1NDc5ZmZkNTE2NTRkMjY0OTIzOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5j
cHAKQEAgLTUzLDYgKzUzLDEwIEBAIFJlbmRlclNWR1Jvb3Q6OlJlbmRlclNWR1Jvb3QoU1ZHU3R5
bGVkRWxlbWVudCogbm9kZSkKICAgICBzZXRSZXBsYWNlZCh0cnVlKTsKIH0KIAorUmVuZGVyU1ZH
Um9vdDo6flJlbmRlclNWR1Jvb3QoKQoreworfQorCiBpbnQgUmVuZGVyU1ZHUm9vdDo6bGluZUhl
aWdodChib29sLCBib29sKSBjb25zdAogewogICAgIHJldHVybiBoZWlnaHQoKSArIG1hcmdpblRv
cCgpICsgbWFyZ2luQm90dG9tKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdSb290LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmgKaW5kZXggM2My
OWI4N2E3ZTFkZjliNTBhMGIyZmQxMTgxZmU1MDYxOWM3YzQ4ZC4uNjE5YWE4Zjg0ZmQwMjc2OGRk
OGZhNDllOTEzZDdhODNhMTUyZmFiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHUm9vdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuaApAQCAt
MzUsNyArMzUsOCBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAKIGNsYXNzIFJlbmRlclNWR1Jv
b3QgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdSb290KFNWR1N0
eWxlZEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJTVkdSb290KFNWR1N0eWxlZEVsZW1l
bnQqKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSb290KCk7CiAKICAgICBjb25zdCBSZW5kZXJP
YmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0K
ICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyByZXR1cm4gJm1fY2hpbGRy
ZW47IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RTcGFuLmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUU3Bhbi5oCmluZGV4IDkzMWJkOGM0MzJjNmExNzMy
ODU5NzY2NmVkNjU3M2RjNmU2ZjkyMTAuLjk3ZTBlYjAwNGZjYmYwYjg1ZTMwNzhiODBhNjE3MjM4
MmJhMmZkN2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RTcGFuLmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVFNwYW4uaApAQCAtMjksNyArMjksNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVuZGVyU1ZHVFNwYW4gOiBwdWJsaWMgUmVu
ZGVyU1ZHSW5saW5lIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdUU3BhbihOb2RlKik7CisgICAg
ZXhwbGljaXQgUmVuZGVyU1ZHVFNwYW4oTm9kZSopOwogICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdUU3BhbiI7IH0KIH07CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggYmUxOTQxOTMxZjc0MjMxOThiYmZkNDdhMjVh
ZDM1ZmIwOTIyMmViNC4uY2EyOTkzOGZjMWUxOWE2YjY4NWQ1NDYwOGQ3YmVlMGU1ZjQyZjdiYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBTVkdU
ZXh0RWxlbWVudDsKIAogY2xhc3MgUmVuZGVyU1ZHVGV4dCA6IHB1YmxpYyBSZW5kZXJTVkdCbG9j
ayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHVGV4dChTVkdUZXh0RWxlbWVudCogbm9kZSk7Cisg
ICAgZXhwbGljaXQgUmVuZGVyU1ZHVGV4dChTVkdUZXh0RWxlbWVudCogbm9kZSk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSB7IG1fbmVlZHNUcmFuc2Zvcm1V
cGRhdGUgPSB0cnVlOyB9CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2Fs
Q29vcmRpbmF0ZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1RleHRQYXRoLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0UGF0aC5oCmlu
ZGV4IDhlNmZmNDI5YTU5ZTE3YmY2OTYyZTQ1NTQ0ZGQ5N2M1ZWE0Zjc0ZjMuLmRhNTQ5NGM2ZmRi
MDVkYzk1YTNmOWMzMTk0YjQwNjA0YjMzYmRlYTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR1RleHRQYXRoLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
VGV4dFBhdGguaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBSZW5kZXJTVkdUZXh0UGF0aCA6IHB1YmxpYyBSZW5kZXJTVkdJbmxpbmUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgUmVuZGVyU1ZHVGV4dFBhdGgoTm9kZSopOworICAgICAgICBleHBsaWNp
dCBSZW5kZXJTVkdUZXh0UGF0aChOb2RlKik7CiAKICAgICAgICAgUGF0aCBsYXlvdXRQYXRoKCkg
Y29uc3Q7CiAgICAgICAgIGZsb2F0IHN0YXJ0T2Zmc2V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmgKaW5kZXggYjYz
YjkxYzVlOWNlOTVjOTQxMmYzOGNmZjRjNWQzMTVhZTUyMzk0Ni4uYjQ5YTQwMzAyYmM3NmZmMWQ5
YjRiNDNhNjgxYzFlOWI4YjdiOTUzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaApAQCAtMjksNyArMjksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ7CiAg
ICAgY2xhc3MgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lciA6IHB1YmxpYyBSZW5kZXJT
VkdDb250YWluZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lcihTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCopOworICAgICAgICBleHBs
aWNpdCBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50Kik7CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxv
Y2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIHsgbV9uZWVk
c1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lci5oCmluZGV4IDdiNTcwMmI5OGViNTU3NzM4ZjA0ZTczNmM0YmQw
NDRmYzc0ZTIwZDAuLjYzYzMzNmNlODJhYjk0ZmIwZjA1ZjEzZDFiMDc2OTYyMTM0MGFlNGUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB0aHVzIHdlIGluaGVyaXQgZnJv
bSBSZW5kZXJTVkdDb250YWluZXIgaW5zdGVhZCBvZiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyCiBjbGFzcyBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciA6IHB1YmxpYyBSZW5kZXJT
VkdDb250YWluZXIgewogcHVibGljOgotICAgIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFNW
R1N0eWxlZEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
cihTVkdTdHlsZWRFbGVtZW50Kik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU1ZH
Q29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwCmluZGV4IDEyMzE5ZjgxNjlhYWY1OWY0MjRkNGIzNTIwMGM3ZmMzNmZhZmIzZjQuLmI5NjBj
ZTI3OWQzYmUxYTg0YWU2NDgxMzZmOWY5ZGJkMzljNjhhMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAKQEAgLTY1LDYgKzY1LDEwIEBAIFJlbmRlclRhYmxlOjpSZW5kZXJUYWJsZShOb2Rl
KiBub2RlKQogICAgIAogfQogCitSZW5kZXJUYWJsZTo6flJlbmRlclRhYmxlKCkKK3sKK30KKwog
dm9pZCBSZW5kZXJUYWJsZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKIHsKICAgICBSZW5kZXJCbG9jazo6c3R5bGVEaWRD
aGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKaW5kZXggYWZlYTQw
MjNmMWQ4ZmFjOWFhM2ZlYzc3MTI4YjU5OTNjOWNmZTExOS4uMWQ0MTQwNmRiNzE4MDJhYWQxZTFl
NTFmNzU2ZmVhNGE5N2Q4NTMzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCkBAIC0zOCw3ICsz
OCw4IEBAIGNsYXNzIFRhYmxlTGF5b3V0OwogCiBjbGFzcyBSZW5kZXJUYWJsZSA6IHB1YmxpYyBS
ZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGUoTm9kZSopOworICAgIGV4cGxp
Y2l0IFJlbmRlclRhYmxlKE5vZGUqKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJUYWJsZSgpOwogCiAg
ICAgaW50IGdldENvbHVtblBvcyhpbnQgY29sKSBjb25zdCB7IHJldHVybiBtX2NvbHVtblBvc1tj
b2xdOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXggNzkzNzZlOWMwYTU1
NzYxN2U0YjczNTFmOTY2ZDVkMjBhNjBmNjZiZC4uZDgwM2YwNWFmNmMxMzQyMWUxOTllZmM1ZWY0
YjBhYWQ0NWMyZjVmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTMxLDcg
KzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJUYWJsZUNlbGwgOiBw
dWJsaWMgUmVuZGVyQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlclRhYmxlQ2VsbChOb2RlKik7
CisgICAgZXhwbGljaXQgUmVuZGVyVGFibGVDZWxsKE5vZGUqKTsKIAogICAgIC8vIEZJWE1FOiBu
ZWVkIHRvIGltcGxlbWVudCBjZWxsSW5kZXgKICAgICBpbnQgY2VsbEluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wu
aCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKaW5kZXggYzVmOWFmYzJhYThk
NTUyZWI2MzI3MTQ1MDc0NjhkOGMyNTViZGMxOS4uNWZiNDEyOGY2Y2IzMjIyNDY2MTZkYjU0MDdi
Yjc3Mzk2ZmZhNDgxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
b2wuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCkBAIC0zNCw3ICsz
NCw3IEBAIGNsYXNzIFJlbmRlclRhYmxlOwogCiBjbGFzcyBSZW5kZXJUYWJsZUNvbCA6IHB1Ymxp
YyBSZW5kZXJCb3ggewogcHVibGljOgotICAgIFJlbmRlclRhYmxlQ29sKE5vZGUqKTsKKyAgICBl
eHBsaWNpdCBSZW5kZXJUYWJsZUNvbChOb2RlKik7CiAKICAgICBjb25zdCBSZW5kZXJPYmplY3RD
aGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KICAgICBS
ZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmggYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCmluZGV4IDU4ODI1MmJjODRiMjFmZDg1ZjNiMTdk
NzA1OGQ5NDE4NjgwYWJmMzYuLjMwNTkwNjA4MzBmMzhhNTljZmU3MjI3OGYyOTM0YzIzMzVjZTA1
ZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclRhYmxlUm93IDogcHVibGljIFJlbmRlckJv
eCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVSb3coTm9kZSopOworICAgIGV4cGxpY2l0IFJl
bmRlclRhYmxlUm93KE5vZGUqKTsKIAogICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCog
Y2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogICAgIFJlbmRlck9iamVj
dENoaWxkTGlzdCogY2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKaW5kZXggYjE0MzA4ZGQ1NWY1YTQyMmQ5Y2Y0
MzQwZDI3YTNhNzE3ZGIyYTFlNy4uNzA1YzA5NTc1MjAyMTNlODQ0YjVhNDIwZjg3OWZlMGQwZmEx
OTNkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCkBAIC00NCw2
ICs0NCwxMCBAQCBSZW5kZXJUZXh0RnJhZ21lbnQ6OlJlbmRlclRleHRGcmFnbWVudChOb2RlKiBu
b2RlLCBTdHJpbmdJbXBsKiBzdHIpCiB7CiB9CiAKK1JlbmRlclRleHRGcmFnbWVudDo6flJlbmRl
clRleHRGcmFnbWVudCgpCit7Cit9CisKIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gUmVuZGVyVGV4
dEZyYWdtZW50OjpvcmlnaW5hbFRleHQoKSBjb25zdAogewogICAgIE5vZGUqIGUgPSBub2RlKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oCmluZGV4IGUwMjMwNDJiNTQyYjEz
OTFjNmE0YWVjNzlkMDBkMWNlZDk5NDE5YWIuLmFiYjNmYTQ0MThhMjgzY2Q0ZGJlZjRiZGYyN2Rh
Mzk4M2VkOGUwYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFn
bWVudC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oCkBAIC0z
NSw2ICszNSw3IEBAIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudCA6IHB1YmxpYyBSZW5kZXJUZXh0
IHsKIHB1YmxpYzoKICAgICBSZW5kZXJUZXh0RnJhZ21lbnQoTm9kZSosIFN0cmluZ0ltcGwqLCBp
bnQgc3RhcnRPZmZzZXQsIGludCBsZW5ndGgpOwogICAgIFJlbmRlclRleHRGcmFnbWVudChOb2Rl
KiwgU3RyaW5nSW1wbCopOworICAgIHZpcnR1YWwgflJlbmRlclRleHRGcmFnbWVudCgpOwogCiAg
ICAgdmlydHVhbCBib29sIGlzVGV4dEZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXb3JkQnJlYWsuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldvcmRCcmVhay5oCmluZGV4IGFjZDgxNzllMzcxNWNiMWM3NTgw
NTYxMGQyYTkyOWFmNzAxNWJlNjMuLmRiMzFlZWMxNmVmZjI1NzY4MjcyMWU5ZDcyNDU2ZDRjNzll
NmZhOTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldvcmRCcmVhay5oCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldvcmRCcmVhay5oCkBAIC0zNSw3ICszNSw3IEBA
IGNsYXNzIEhUTUxFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJXb3JkQnJlYWsgOiBwdWJsaWMgUmVu
ZGVyVGV4dCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyV29yZEJyZWFrKEhUTUxFbGVtZW50Kik7Cisg
ICAgZXhwbGljaXQgUmVuZGVyV29yZEJyZWFrKEhUTUxFbGVtZW50Kik7CiAKICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNXb3Jk
QnJlYWsoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
Y3BwIGIvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggZjU1NDg0NjEyZjM3
NjI1MTNkZmQ2MmM2YTZkMWNiOTA4ZTk2N2UzZS4uZDRmYTg5YzY1ZDViZGJmY2M0MTNlZDg5OTg0
ZDUwMmZlNjI3MTE5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5j
cHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKQEAgLTYwLDYgKzYwLDEw
IEBAIFNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiB7CiB9CiAKK1NWR1N0eWxlZEVsZW1lbnQ6On5T
VkdTdHlsZWRFbGVtZW50KCkKK3sKK30KKwogU3RyaW5nIFNWR1N0eWxlZEVsZW1lbnQ6OnRpdGxl
KCkgY29uc3QKIHsKICAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYywgd2Ugc2hvdWxkIG5vdCByZXR1
cm4gdGl0bGVzIHdoZW4gaG92ZXJpbmcgb3ZlciA8c3ZnPiBlbGVtZW50cyAodGhvc2UgCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmggYi9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmgKaW5kZXggMzQ4MmE0ZjY4N2I0YmE3ODE0ZjM0MDMxOTM2OTUzN2M3OTM1
NDZjOC4uNWU5OTZiMzA0ZmVkODVkZjhkMDRhMjZiM2Q1ZDI3Y2NjYTU5ZTRkMSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1N0
eWxlZEVsZW1lbnQuaApAQCAtMzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgU1ZHU3R5bGVkRWxlbWVudCA6IHB1YmxpYyBTVkdFbGVtZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHU3R5bGFibGUgewogICAgIHB1YmxpYzoKKyAgICAg
ICAgdmlydHVhbCB+U1ZHU3R5bGVkRWxlbWVudCgpOworCiAgICAgICAgIHZpcnR1YWwgU3RyaW5n
IHRpdGxlKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dCB7IHJldHVybiAhbV9lbGVtZW50c1dpdGhSZWxhdGl2ZUxlbmd0aHMuaXNFbXB0eSgpOyB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAg
Yi9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKaW5kZXggYWYx
MGVkNzE0NzE3ZjEyN2I4NDM5MmM3OTAzOTk4OGZjNThhZDE5OS4uYWNmYTRjZTZiNGU4NTA2YjE1
NDA4NmNiZmMzODExMTcxNjMyMWNlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50LmNwcApAQCAtMzgsNiArMzgsMTAgQEAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUKIHsKIH0KIAorU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6On5TVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudCgpCit7Cit9CisKIEFmZmluZVRyYW5zZm9ybSBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0Q1RNKFN0eWxlVXBkYXRlU3RyYXRlZ3kgc3R5bGVVcGRh
dGVTdHJhdGVneSkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHTG9jYXRhYmxlOjpjb21wdXRlQ1RN
KHRoaXMsIFNWR0xvY2F0YWJsZTo6TmVhcmVzdFZpZXdwb3J0U2NvcGUsIHN0eWxlVXBkYXRlU3Ry
YXRlZ3kpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgKaW5k
ZXggNzY2ODg4OTRhNWFjZjg5ODE1MTIwZjJhYWRhNmRiZGJlNWY2YzU3Zi4uMjkwZjdmODYzZmIw
MTg5MGZiZGY3NjFjODgxZWZlYTNmNGNjYjM1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudC5oCkBAIC0zMyw2ICszMyw4IEBAIGNsYXNzIEFmZmluZVRyYW5z
Zm9ybTsKIGNsYXNzIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50IDogcHVibGljIFNWR1N0
eWxlZExvY2F0YWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlIHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCgpOworCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zv
cm0gZ2V0Q1RNKFN0eWxlVXBkYXRlU3RyYXRlZ3kgPSBBbGxvd1N0eWxlVXBkYXRlKSBjb25zdDsK
ICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oU3R5bGVVcGRhdGVTdHJh
dGVneSA9IEFsbG93U3R5bGVVcGRhdGUpIGNvbnN0OwogICAgIHZpcnR1YWwgU1ZHRWxlbWVudCog
bmVhcmVzdFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwv
WFBhdGhQYXJzZXIuY3BwIGIvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCmluZGV4IDIwZTc1
OTBlNWVhMjljZjZkOTNhOTMxZTg1MzNhNTZlZTZiM2EyNTYuLmMyNDJhNWNkMTQ5OGE0MTg5NGY5
MWM0NDRmNmQwZWMyOWM2NmM1ZTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hQYXRoUGFyc2Vy
LmNwcAorKysgYi9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKQEAgLTQxMCw2ICs0MTAsMTAg
QEAgUGFyc2VyOjpQYXJzZXIoKQogICAgIHJlc2V0KFN0cmluZygpKTsKIH0KIAorUGFyc2VyOjp+
UGFyc2VyKCkKK3sKK30KKwogdm9pZCBQYXJzZXI6OnJlc2V0KGNvbnN0IFN0cmluZyYgZGF0YSkK
IHsKICAgICBtX25leHRQb3MgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWFBhdGhQYXJz
ZXIuaCBiL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmgKaW5kZXggZTc3OTYwMzA4ZTgxOGFjNDA4
ZWNlMjE2NmFmNzlhZTE0NmNkNjFjNC4uNDRhOGU0ODhkZTNmYTY0YjQzNTIxNjJkYWM0YzU0M2Jj
MmEzNjFhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuaAorKysgYi9XZWJD
b3JlL3htbC9YUGF0aFBhcnNlci5oCkBAIC02MSw2ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgY2xhc3MgUGFyc2VyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICAgICAg
cHVibGljOgogICAgICAgICAgICAgUGFyc2VyKCk7CisgICAgICAgICAgICB+UGFyc2VyKCk7CiAK
ICAgICAgICAgICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIoKSBjb25zdCB7IHJldHVybiBt
X3Jlc29sdmVyLmdldCgpOyB9CiAgICAgICAgICAgICBib29sIGV4cGFuZFFOYW1lKGNvbnN0IFN0
cmluZyYgcU5hbWUsIFN0cmluZyYgbG9jYWxOYW1lLCBTdHJpbmcmIG5hbWVzcGFjZVVSSSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69869</attachid>
            <date>2010-10-05 17:36:20 -0700</date>
            <delta_ts>2010-10-06 18:20:42 -0700</delta_ts>
            <desc>applies to ToT</desc>
            <filename>bug-47230-20101005173619.patch</filename>
            <type>text/plain</type>
            <size>66063</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWZkZTU2OTNhNDY0MzAxZjRlZGI3Nzk0MjViMjMwYjhkMzAxM2I4YS4uM2Y3ZGI5OWYxNzk1NDdl
ZWIxMWMxYmZjNzJkZjU1YmZmODZmMTEwMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzIgQEAKKzIwMTAtMTAtMDUgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBpbmxpbmluZyBsYXJnZSBhbmQvb3Ig
dmlydHVhbCBmdW5jdGlvbnMgaW4gd2lkZWx5IGluY2x1ZGVkIGhlYWRlciBmaWxlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyMzAKKworICAgICAg
ICBGdW5jdGlvbnMgd2l0aCB2ZXJ5IGxhcmdlIGJvZGllcyBzaG91bGQgbm90IGJlIGluY2x1ZGVk
IGluIHdpZGVseSBpbmNsdWRlZCBoZWFkZXIgZmlsZXMuCisgICAgICAgIFRoaXMgcmVzdWx0cyBp
biB0aGUgZnVuY3Rpb24ncyBjb2RlIGVuZGluZyB1cCBpbmNsdWRlZCBpbiBodW5kcmVkcyBvZiBv
YmplY3QgZmlsZXMgdGhhdAorICAgICAgICB0aGUgbGlua2VyIGhhcyB0byBkaXNjYXJkLCBhdCBh
IGNvc3Qgb2YgbGlua2VyIG1lbW9yeSB1c2UsIGxpbmsgdGltZSwgYW5kIGRpc2sgc3BhY2UuIFRo
aXMKKyAgICAgICAgaXMgYSBwYXJ0aWN1bGFyIHByb2JsZW0gaW4gdGhlIENocm9taXVtIHdpbmRv
d3MgYnVpbGQgd2hlcmUgTVNWQyBvZnRlbiBleGhhdXN0cyBpdHMgMzItYml0CisgICAgICAgIHZp
cnR1YWwgYWRkcmVzcyBzcGFjZSBhbmQgY29tcGxldGVseSBmYWlscyB0byBsaW5rLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbW92ZXMgZnVuY3Rpb24gZGVmaW5pdGlvbnMgZnJvbSB0aGUgLmggdG8g
dGhlIGNvcnJlc3BvbmRpbmcgLmNwcCB3aGVuIHRoZSBmdW5jdGlvbgorICAgICAgICBpcyBsYXJn
ZSBhbmQgbm90IGEgY2FuZGlkYXRlIGZvciBpbmxpbmluZyBlaXRoZXIgYmVjYXVzZSBpdCBpcyB2
aXJ0dWFsIG9yIGJlY2F1c2UgaXRzIHNpemUgaXMKKyAgICAgICAgYWJvdmUgYW55IHJlYXNvbmFi
bGUgY29tcGlsZXIncyB0aHJlc2hob2xkIGZvciBpbmxpbmluZy4gIFRoZSBtb3N0IGNvbW1vbiBj
YXNlIGJ5IGZhciBpbiB0aGlzCisgICAgICAgIHBhdGNoIGlzIGNoYW5naW5nIGEgY2xhc3MnIGlt
cGxpY2l0bHkgZGVmaW5lZCBkZXN0cnVjdG9yIHRvIGFuIGV4cGxpY2l0bHkgZGVjbGFyZWQgZCd0
b3IgaW4KKyAgICAgICAgdGhlIGhlYWRlciBhbmQgYW4gZXhwbGljaXRseSBkZWZpbmVkIGQndG9y
IGluIHRoZSAuY3BwLiAgVGhpcyBpcyBpbXBvcnRhbnQgc2luY2UgbWFueSBvZiBvdXIKKyAgICAg
ICAgY29udGFpbmVyIGFuZCB1dGlsaXR5IGNsYXNzZXMgKGVzcGVjaWFsbHkgVmVjdG9yLCBTdHJp
bmcsIGFuZCBIYXNoU2V0KSBoYXZlIHF1aXRlIGxhcmdlCisgICAgICAgIGRlc3RydWN0b3JzLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyAyMi40TUIgb2Ygb2JqZWN0IGZpbGUgc2l6ZSBp
biBhIGRlYnVnIDY0IGJpdCBjb21waWxlLgorCisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQm9yZGVySW1hZ2VWYWx1ZTo6fkNTU0Jv
cmRlckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTcmNWYWx1ZTo6fkNTU0ZvbnRGYWNlU3JjVmFsdWUpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNyY1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUu
aDoKKyAgICAgICAgKiBkb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6On5CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dCk6CisgICAgICAgICogZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50Lmg6CisgICAgICAgICog
ZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJlZm9yZVVubG9h
ZEV2ZW50Ojp+QmVmb3JlVW5sb2FkRXZlbnQpOgorICAgICAgICAqIGRvbS9CZWZvcmVVbmxvYWRF
dmVudC5oOgorICAgICAgICAqIGRvbS9DbGFzc05vZGVMaXN0Lmg6CisgICAgICAgICogZG9tL0Ns
aXBib2FyZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEV2ZW50Ojp+Q2xp
cGJvYXJkRXZlbnQpOgorICAgICAgICAqIGRvbS9DbGlwYm9hcmRFdmVudC5oOgorICAgICAgICAq
IGRvbS9DdXN0b21FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FdmVudDo6fkN1
c3RvbUV2ZW50KToKKyAgICAgICAgKiBkb20vQ3VzdG9tRXZlbnQuaDoKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZl
bnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXREYXRhOjpFdmVudFRh
cmdldERhdGEpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIGRvbS9J
bnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50RGF0YTo6fklu
cHV0RWxlbWVudERhdGEpOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoKKyAgICAgICAg
KiBkb20vTXV0YXRpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbkV2ZW50
Ojp+TXV0YXRpb25FdmVudCk6CisgICAgICAgICogZG9tL011dGF0aW9uRXZlbnQuaDoKKyAgICAg
ICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWZFdmVudFRhcmdl
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAg
KiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9PcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok9wdGlvbkVsZW1lbnREYXRhOjp+T3B0aW9uRWxlbWVudERhdGEpOgorICAgICAg
ICAqIGRvbS9PcHRpb25FbGVtZW50Lmg6CisgICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UG9wU3RhdGVFdmVudDo6flBvcFN0YXRlRXZlbnQpOgorICAg
ICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50Lmg6CisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6flF1YWxpZmllZE5hbWUpOgor
ICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgICogZG9tL1NlbGVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudERhdGE6On5TZWxlY3RFbGVt
ZW50RGF0YSk6CisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20v
U3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY0hhc2hT
ZXROb2RlTGlzdDo6U3RhdGljSGFzaFNldE5vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
YXRpY0hhc2hTZXROb2RlTGlzdDo6flN0YXRpY0hhc2hTZXROb2RlTGlzdCk6CisgICAgICAgICog
ZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oOgorICAgICAgICAqIGRvbS9TdHlsZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVFbGVtZW50Ojp+U3R5bGVFbGVtZW50KToKKyAg
ICAgICAgKiBkb20vU3R5bGVFbGVtZW50Lmg6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudDo6VG91Y2hFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCk6CisgICAgICAgICogZG9tL1RvdWNoRXZl
bnQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjp+Q29tcG9zaXRlRWRpdENvbW1hbmQp
OgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRTdGFjazo6fkJp
dFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6flRleHRJdGVyYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JkQXdhcmVJdGVyYXRvcjo6fldvcmRBd2FyZUl0ZXJhdG9y
KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0
Ojp+SW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdDo6
SW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFycmF5Ojp+SW5z
cGVjdG9yQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXk6Okluc3BlY3Rv
ckFycmF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6CisgICAgICAg
ICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpyZWdpc3RlckhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6dW5yZWdpc3RlckhhbmRsZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OkhUVFBIZWFkZXJNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6SFRUUEhlYWRlck1hcDo6fkhUVFBIZWFkZXJNYXApOgorICAgICAgICAoV2ViQ29yZTo6SFRU
UEhlYWRlck1hcDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmFkZCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBcHBs
ZXQ6On5SZW5kZXJBcHBsZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBcHBsZXQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJ1dHRvbjo6flJlbmRlckJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJ1dHRvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckNvdW50ZXI6On5SZW5kZXJDb3VudGVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVs
ZHNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6On5SZW5kZXJGb3JlaWduT2JqZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGcmFtZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFt
ZUJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWFycXVlZTo6flJlbmRlck1hcnF1ZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNYXJx
dWVlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUGF0aDo6flJlbmRlclBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJQYXRoLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0Jsb2NrLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdDb250YWluZXI6On5SZW5kZXJTVkdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZH
SGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6On5SZW5kZXJTVkdJbmxpbmVUZXh0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
VkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6On5SZW5kZXJTVkdS
b290KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdUU3Bhbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdU
ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1RleHRQYXRoLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6On5S
ZW5kZXJUYWJsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZUNvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dEZyYWdtZW50Ojp+UmVuZGVyVGV4dEZyYWdtZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cldvcmRCcmVhay5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6flNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiB4bWwvWFBh
dGhQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlBhcnNlcjo6flBhcnNlcik6
CisgICAgICAgICogeG1sL1hQYXRoUGFyc2VyLmg6CisKIDIwMTAtMTAtMDUgIEZhZHkgU2FtdWVs
ICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmNwcCBiL1dl
YkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuY3BwCmluZGV4IDMyNjBhZjQ2MmIwYWJjYTI2
MDllNTk3NDE1ZTVlNmI4ZTRiNDk2MWIuLjhkNDcyMWE1ZmFiYzVjZDNkYTU4MDZhZWZlZThlYWM2
YjRjZmQ5MmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuY3Bw
CisrKyBiL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuY3BwCkBAIC0zNCw2ICszNCwx
MCBAQCBDU1NCb3JkZXJJbWFnZVZhbHVlOjpDU1NCb3JkZXJJbWFnZVZhbHVlKFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IGltYWdlLCBQYXNzUmVmUHRyPAogewogfQogCitDU1NCb3JkZXJJbWFnZVZhbHVl
Ojp+Q1NTQm9yZGVySW1hZ2VWYWx1ZSgpCit7Cit9CisKIFN0cmluZyBDU1NCb3JkZXJJbWFnZVZh
bHVlOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICAvLyBJbWFnZSBmaXJzdC4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaCBiL1dlYkNvcmUvY3NzL0NTU0JvcmRl
ckltYWdlVmFsdWUuaAppbmRleCAyMzgzMmI4Y2I2MWEzNDEwMGQwN2Q1YzBjYzIzYThkZWFlZDMy
OTIwLi5hMTdkZjdkZjIwMGY0MmVlYmQxNGM2NDY4NDI1YzY0YzJkYTM0M2ZlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NT
Qm9yZGVySW1hZ2VWYWx1ZS5oCkBAIC0zNSw2ICszNSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTQm9yZGVySW1hZ2VWYWx1ZShpbWFnZSwgc2xpY2VS
ZWN0LCBob3Jpem9udGFsUnVsZSwgdmVydGljYWxSdWxlKSk7CiAgICAgfQorICAgIHZpcnR1YWwg
fkNTU0JvcmRlckltYWdlVmFsdWUoKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAg
Yi9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAppbmRleCA1YjIwNGQ3NmJlOWFh
YWE2NTkxN2Y5YTNjZmM5NWM5YjE0MzA4NTBlLi5kOTUxZTVkMzMwNGM2MzA3MDQzZTg2NDI4MDMw
ZTk2ZWI1MGVjN2U2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcApAQCAtMzEsNiAr
MzEsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDU1NGb250RmFjZVNyY1ZhbHVlOjp+
Q1NTRm9udEZhY2VTcmNWYWx1ZSgpCit7Cit9CisKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogYm9v
bCBDU1NGb250RmFjZVNyY1ZhbHVlOjppc1NWR0ZvbnRGYWNlU3JjKCkgY29uc3QKIHsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaCBiL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCAyMmYxYmU3YmQ1OGVjNzJlZDc4NDcxMWU5N2FmYzBj
NmJlYmFhMzQ2Li41NzA2NTJkNzExNTFmZDI5YTQ3MmQ5MjllZGI1YWI2N2IxMjZkYjMzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NGb250RmFjZVNyY1ZhbHVlKHJlc291cmNlLCB0cnVl
KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+Q1NTRm9udEZhY2VTcmNWYWx1ZSgpIHsgfQorICAg
IHZpcnR1YWwgfkNTU0ZvbnRGYWNlU3JjVmFsdWUoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgcmVz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBm
b3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIGIvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCmlu
ZGV4IGU5NTQ1YTFhZDk5NDdmZjAzZDdlNDZiNTdkYzcwYzM5OGM1ZWM0ODMuLjFkNzNmMzNlZGQz
YmZjNTg2YTljZjU2MzIzM2JmZDIzYzM1ODBhNzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U0Z1bmN0aW9uVmFsdWUuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgKQEAg
LTQwLDE0ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NT
RnVuY3Rpb25WYWx1ZShmdW5jdGlvbikpOwogICAgIH0KIAotICAgIH5DU1NGdW5jdGlvblZhbHVl
KCk7CisgICAgdmlydHVhbCB+Q1NTRnVuY3Rpb25WYWx1ZSgpOwogICAgIAogICAgIHZpcnR1YWwg
U3RyaW5nIGNzc1RleHQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgQ1NTUGFyc2VyVmFsdWUgcGFy
c2VyVmFsdWUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NGdW5jdGlvblZhbHVlKENTU1Bh
cnNlckZ1bmN0aW9uKik7CisgICAgZXhwbGljaXQgQ1NTRnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJG
dW5jdGlvbiopOwogICAgIAogICAgIFN0cmluZyBtX25hbWU7CiAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gbV9hcmdzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVk
RXZlbnQuY3BwIGIvV2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwCmluZGV4
IGFmODZkNjY1MjQ3ZTdkODY5MjgwYWMyNzgyZTRjYjkzZjJlNTMzMDguLjQ3MmVlZmM4NWEyNzJj
ZDgxNGQ2YzAxMDAwZmNmNjRiYTU3ZDRhODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0JlZm9y
ZVRleHRJbnNlcnRlZEV2ZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0
ZWRFdmVudC5jcHAKQEAgLTM1LDQgKzM1LDggQEAgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6OkJl
Zm9yZVRleHRJbnNlcnRlZEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKIH0KIAorQmVmb3Jl
VGV4dEluc2VydGVkRXZlbnQ6On5CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpCit7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmggYi9XZWJD
b3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oCmluZGV4IGYyYTJhYzQxMjAzYzI5ZTg5
YmEyOGE0NzQ1OGU1NDUwYmQzY2Q4MDYuLmE2OTY2ZmY5NDM5MGJmZjI4MGIyYjY4Zjg0YzI4NTI0
ZWE1ZDE1ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50
LmgKKysrIGIvV2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaApAQCAtMzIsNiAr
MzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJlZm9yZVRleHRJbnNlcnRlZEV2
ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5CZWZvcmVUZXh0SW5z
ZXJ0ZWRFdmVudCgpOworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmVmb3JlVGV4dEluc2VydGVk
RXZlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KHRleHQpKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0JlZm9yZVVu
bG9hZEV2ZW50LmNwcAppbmRleCA5N2Q3Zjk3NDkwZmUwZTY0NDExNzEzYzdhMTkzMjA3OWEyNTUz
NGJkLi4xOWFkY2FiMzBiZDVlN2FkMDg2MjRiOGU2NTcxMzU0YjU3Yzg0ZmQ3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vQmVm
b3JlVW5sb2FkRXZlbnQuY3BwCkBAIC0zMiw2ICszMiwxMCBAQCBCZWZvcmVVbmxvYWRFdmVudDo6
QmVmb3JlVW5sb2FkRXZlbnQoKQogewogfQogCitCZWZvcmVVbmxvYWRFdmVudDo6fkJlZm9yZVVu
bG9hZEV2ZW50KCkKK3sKK30KKwogYm9vbCBCZWZvcmVVbmxvYWRFdmVudDo6c3RvcmVzUmVzdWx0
QXNTdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9kb20vQmVmb3JlVW5sb2FkRXZlbnQuaCBiL1dlYkNvcmUvZG9tL0JlZm9yZVVubG9hZEV2ZW50
LmgKaW5kZXggMjY0NDY5M2RiNGRkYTdhYjc3NzJmMzllZjczMDk5YTAzY2U1YmI0MS4uMTM2ZTg1
YzM1OTY0Y2NiYmQ4MjkxNjcwMjNhODAwNWY3YjYzNmJmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vQmVmb3JlVW5sb2FkRXZlbnQuaAorKysgYi9XZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVu
dC5oCkBAIC0zMCw2ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEJl
Zm9yZVVubG9hZEV2ZW50IDogcHVibGljIEV2ZW50IHsKICAgICBwdWJsaWM6CisgICAgICAgIHZp
cnR1YWwgfkJlZm9yZVVubG9hZEV2ZW50KCk7CisKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
QmVmb3JlVW5sb2FkRXZlbnQ+IGNyZWF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQmVmb3JlVW5sb2FkRXZlbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vQ2xhc3NOb2RlTGlzdC5oIGIvV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5oCmluZGV4IGVh
MDQ4YTI4YWIyYmRmMDA3OGJjZTYyZGVkMTE4ZDliZDIyZDhmMjkuLjEzZDVkMjRkMTY2MTRlZjNi
MmY0NjExYzIxZTJkMzQ1ZjNiMDVhMjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NsYXNzTm9k
ZUxpc3QuaAorKysgYi9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNkZWZpbmUgQ2xhc3NOb2RlTGlzdF9oCiAKICNpbmNsdWRlICJEeW5hbWljTm9kZUxpc3Qu
aCIKKyNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVu
dC5jcHAgYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5jcHAKaW5kZXggM2M0MjdlMTI2MGJi
MjFlNzE3MWMzNTU3YmQxYjkzYTllYWVjZjY5Yy4uYjY0NzAzZDdiM2Q3NTFhODA4NDQ3MTRhODMx
NTQ5ZjU2NGQxYTdjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2xpcGJvYXJkRXZlbnQuY3Bw
CisrKyBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmNwcApAQCAtMzQsNiArMzQsMTAgQEAg
Q2xpcGJvYXJkRXZlbnQ6OkNsaXBib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm8KIHsKIH0KIAorQ2xpcGJvYXJkRXZlbnQ6On5DbGlwYm9h
cmRFdmVudCgpCit7Cit9CisKIGJvb2wgQ2xpcGJvYXJkRXZlbnQ6OmlzQ2xpcGJvYXJkRXZlbnQo
KSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ2xp
cGJvYXJkRXZlbnQuaCBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmgKaW5kZXggYjliYzcw
NWM3MzU0NjU2YjZjYzE1Yzk0NTM2YTdhZTY2N2E0MzQ2NS4uNDI3NDFlNjRkZjRmYjBhNDczMWRj
ZTAzNjMyMDU5NGIwZDhjMjdkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2xpcGJvYXJkRXZl
bnQuaAorKysgYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5oCkBAIC0zMSw2ICszMSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENsaXBib2FyZEV2ZW50IDogcHVibGlj
IEV2ZW50IHsKICAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaXBib2FyZEV2ZW50KCk7
CisKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkRXZlbnQ+IGNyZWF0ZSgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkRXZlbnQp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwIGIvV2ViQ29yZS9kb20v
Q3VzdG9tRXZlbnQuY3BwCmluZGV4IGMzNzcwNjNiN2FlNWZhNzE1ZDFhNThkNmZlOTY0ZmE4MDMz
NzRmMTEuLjUzZTI1NWQ5YjA1NWFlZjM4ZDNmMTllNDVkYjRjOTk2YTBlYzU1NjQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9DdXN0b21F
dmVudC5jcHAKQEAgLTM0LDYgKzM0LDEwIEBAIEN1c3RvbUV2ZW50OjpDdXN0b21FdmVudCgpCiB7
CiB9CiAKK0N1c3RvbUV2ZW50Ojp+Q3VzdG9tRXZlbnQoKQoreworfQorCiB2b2lkIEN1c3RvbUV2
ZW50Ojppbml0Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBTY3JpcHRWYWx1ZSBkZXRhaWwpCiB7CiAgICAgaWYgKGRp
c3BhdGNoZWQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmggYi9XZWJD
b3JlL2RvbS9DdXN0b21FdmVudC5oCmluZGV4IDgzNzJhZjJhOTk2ZTQwNTA0ODI1MzdiMTIyNDRj
NDBlNWIwNmRjMDIuLjY1YzNmMDQ2MGNkNjI5N2Q5M2JkOGZlNzc0NzZlMWM0YWZkNzY2MDQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgKKysrIGIvV2ViQ29yZS9kb20vQ3Vz
dG9tRXZlbnQuaApAQCAtMzQsNiArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEN1c3RvbUV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5DdXN0
b21FdmVudCgpOworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRXZlbnQ+IGNyZWF0ZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUV2ZW50KTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggNjBhMTA2M2M0ZDI4ZDI4MmY2NzczNjY3M2M0M2NjZGU4ZTZhY2ZmNC4uNjdlMGZkMGFj
NWIzNWQxMmRkNTBhYTQ1NDlmYjNjOGY5ZDVhMmM4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTk0LDYgKzk0LDEx
IEBAIE5vZGVSYXJlRGF0YSogRWxlbWVudDo6Y3JlYXRlUmFyZURhdGEoKQogICAgIHJldHVybiBu
ZXcgRWxlbWVudFJhcmVEYXRhOwogfQogCitERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoRWxlbWVudCwgYmx1cik7CitERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoRWxlbWVudCwgZXJyb3IpOworREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKEVsZW1lbnQsIGZvY3VzKTsKK0RFRklORV9WSVJUVUFMX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihFbGVtZW50LCBsb2FkKTsKKwogUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBFbGVtZW50OjpkZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmlu
ZyYgbWFya3VwLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lv
bikKIHsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudCgp
LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmggYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYjUxZTc1MGE1MWQwOGNiZjE2ZDc5
NTZkYTlmMWQyZGYwM2Y1ZDQwNy4uYWEyOTcyOTE0NTk2OTgwNDEyZTFhMThiODUyOTYyNzllY2Iw
M2RkNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaApAQCAtNzQsMTAgKzc0LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIGZv
dXIgYXR0cmlidXRlIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlcyBhcmUgb3ZlcnJpZGRlbiBieSBI
VE1MQm9keUVsZW1lbnQKICAgICAvLyBhbmQgSFRNTEZyYW1lU2V0RWxlbWVudCB0byBmb3J3YXJk
IHRvIHRoZSBET01XaW5kb3cuCi0gICAgREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGJsdXIpOwotICAgIERFRklORV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihlcnJvcik7Ci0gICAgREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGZv
Y3VzKTsKLSAgICBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobG9hZCk7
CisgICAgREVDTEFSRV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihibHVyKTsKKyAg
ICBERUNMQVJFX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKKyAgICBE
RUNMQVJFX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGZvY3VzKTsKKyAgICBERUNM
QVJFX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGxvYWQpOwogCiAgICAgLy8gV2Vi
S2l0IGV4dGVuc2lvbnMKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGJlZm9y
ZWN1dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggOWRiNDE3NGQ5Y2ZhMjZkNGYzYmU0Y2FhZWFmMjVk
MGM3ZmRmYmIwMC4uNDJjYmIzMmIyMWU4MmE3MzY2NGYxNzRhYjI4NjgzM2Y5ZTQ4NmFiNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmNwcApAQCAtNjYsNiArNjYsMTAgQEAgYm9vbCBldmVudERpc3BhdGNoRm9yYmlk
ZGVuKCkKIH0KICNlbmRpZiAvLyBOREVCVUcKIAorRXZlbnRUYXJnZXREYXRhOjpFdmVudFRhcmdl
dERhdGEoKQoreworfQorCiBFdmVudFRhcmdldERhdGE6On5FdmVudFRhcmdldERhdGEoKQogewog
ICAgIGRlbGV0ZUFsbFZhbHVlcyhldmVudExpc3RlbmVyTWFwKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGRl
N2MyZTBhMjVhMzgwZGM1ODliNTZjNGI2NmZkMGQwYWY0ODUzOWIuLmZlZmY0YWUxMjRkNDliZGMz
ZGU1NzgyMDJmMDg5OWYyNGMzZjlhOWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtODMsNiArODMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgRXZl
bnRMaXN0ZW5lclZlY3Rvcio+IEV2ZW50TGlzdGVuZXJNYXA7CiAKICAgICBzdHJ1Y3QgRXZlbnRU
YXJnZXREYXRhIDogTm9uY29weWFibGUgeworICAgICAgICBFdmVudFRhcmdldERhdGEoKTsKICAg
ICAgICAgfkV2ZW50VGFyZ2V0RGF0YSgpOwogCiAgICAgICAgIEV2ZW50TGlzdGVuZXJNYXAgZXZl
bnRMaXN0ZW5lck1hcDsKQEAgLTE3Nyw5ICsxNzgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBFdmVudExpc3RlbmVyKiBvbiMjYXR0cmlidXRlKCkgeyByZXR1cm4gZ2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXR0cmlidXRlIyNFdmVudCk7IH0gXAogICAg
ICAgICB2b2lkIHNldE9uIyNhdHRyaWJ1dGUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0
ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdHRyaWJ1dGUj
I0V2ZW50LCBsaXN0ZW5lcik7IH0gXAogCi0gICAgI2RlZmluZSBERUZJTkVfVklSVFVBTF9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoYXR0cmlidXRlKSBcCi0gICAgICAgIHZpcnR1YWwgRXZlbnRM
aXN0ZW5lciogb24jI2F0dHJpYnV0ZSgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmF0dHJpYnV0ZSMjRXZlbnQpOyB9IFwKLSAgICAgICAgdmlydHVhbCB2
b2lkIHNldE9uIyNhdHRyaWJ1dGUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikg
eyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdHRyaWJ1dGUjI0V2ZW50
LCBsaXN0ZW5lcik7IH0gXAorICAgICNkZWZpbmUgREVDTEFSRV9WSVJUVUFMX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihhdHRyaWJ1dGUpIFwKKyAgICAgICAgdmlydHVhbCBFdmVudExpc3RlbmVy
KiBvbiMjYXR0cmlidXRlKCk7IFwKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldE9uIyNhdHRyaWJ1
dGUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcik7IFwKKworICAgICNkZWZpbmUg
REVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHR5cGUsIGF0dHJpYnV0ZSkg
XAorICAgICAgICBFdmVudExpc3RlbmVyKiB0eXBlOjpvbiMjYXR0cmlidXRlKCkgeyByZXR1cm4g
Z2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXR0cmlidXRlIyNFdmVudCk7
IH0gXAorICAgICAgICB2b2lkIHR5cGU6OnNldE9uIyNhdHRyaWJ1dGUoUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5hdHRyaWJ1dGUjI0V2ZW50LCBsaXN0ZW5lcik7IH0gXAogCiAgICAgI2RlZmluZSBERUZJ
TkVfV0lORE9XX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhdHRyaWJ1dGUpIFwKICAgICAgICAg
RXZlbnRMaXN0ZW5lciogb24jI2F0dHJpYnV0ZSgpIHsgcmV0dXJuIGRvY3VtZW50KCktPmdldFdp
bmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmF0dHJpYnV0ZSMjRXZlbnQp
OyB9IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2RvbS9JbnB1dEVsZW1lbnQuY3BwCmluZGV4IGIyYTk3MTQ1MjJjZjQ2YmZmYTZlOTMzMTdiMGFj
ZjFkMzc5OWY3ZmUuLmVjYWUyMDZhMjUxY2VjYjA2NDRkMTNlZjIyZjQwOWU4ZTA2NDhiMjEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20v
SW5wdXRFbGVtZW50LmNwcApAQCAtMjc5LDYgKzI3OSwxMCBAQCBJbnB1dEVsZW1lbnREYXRhOjpJ
bnB1dEVsZW1lbnREYXRhKCkKIHsKIH0KIAorSW5wdXRFbGVtZW50RGF0YTo6fklucHV0RWxlbWVu
dERhdGEoKQoreworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIElucHV0RWxlbWVudERhdGE6Om5h
bWUoKSBjb25zdAogewogICAgIHJldHVybiBtX25hbWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiBt
X25hbWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUv
ZG9tL0lucHV0RWxlbWVudC5oCmluZGV4IGQ1Y2UyMTJkZmEzNWY3ZDNlOWQyNTA5MWE2N2FmOTUz
NTAzY2E1NTguLjM0Nzg0YmM3ZTdkMzdjMDc0NmY1NWM1MWQ2MDE4ODk4OTc4NzM1OGUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0lucHV0
RWxlbWVudC5oCkBAIC0xMDcsNiArMTA3LDcgQEAgcHJvdGVjdGVkOgogY2xhc3MgSW5wdXRFbGVt
ZW50RGF0YSB7CiBwdWJsaWM6CiAgICAgSW5wdXRFbGVtZW50RGF0YSgpOworICAgIH5JbnB1dEVs
ZW1lbnREYXRhKCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdDsKICAg
ICB2b2lkIHNldE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX25hbWUgPSB2YWx1
ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAgYi9XZWJDb3Jl
L2RvbS9NdXRhdGlvbkV2ZW50LmNwcAppbmRleCA1OGJjZTFmNmFiNWI4ZDdjNjlhZTEzMjIyYTI2
ODExZWI4MDcxMTA2Li44OTA3NDJmMTEzNTZmMDY5NDM5OWI3MWQ4NDUxZWUwM2M1ODJhM2VkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmNwcAorKysgYi9XZWJDb3JlL2Rv
bS9NdXRhdGlvbkV2ZW50LmNwcApAQCAtNDIsNiArNDIsMTAgQEAgTXV0YXRpb25FdmVudDo6TXV0
YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmMKIHsKIH0KIAorTXV0YXRpb25FdmVudDo6fk11dGF0aW9uRXZlbnQoKQoreworfQorCiB2
b2lkIE11dGF0aW9uRXZlbnQ6OmluaXRNdXRhdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxOb2RlPiBy
ZWxhdGVkTm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBwcmV2VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgYXR0ck5hbWUsIHVuc2lnbmVk
IHNob3J0IGF0dHJDaGFuZ2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50
LmggYi9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmgKaW5kZXggMjliOTc4YzMwYjM4YzZkNDA1
MTAyYjg1ZjI4Nzk4MzJiYmU1NjE5Ny4uZjJiYTc1OTY3YWRiMDQ4OTBiNWIyY2VhOThhYjQzZmJl
MTBhMWUwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCisrKyBiL1dl
YkNvcmUvZG9tL011dGF0aW9uRXZlbnQuaApAQCAtMzEsNiArMzEsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBjbGFzcyBNdXRhdGlvbkV2ZW50IDogcHVibGljIEV2ZW50IHsKICAgICBw
dWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk11dGF0aW9uRXZlbnQoKTsKKwogICAgICAgICBlbnVt
IGF0dHJDaGFuZ2VUeXBlIHsKICAgICAgICAgICAgIE1PRElGSUNBVElPTiAgICA9IDEsCiAgICAg
ICAgICAgICBBRERJVElPTiAgICAgICAgPSAyLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA2ODY2NmEwNmFiY2VmNzllYmUyZjA1
ZmVhYWM3OWFjZmQ5Y2RmMDExLi4yOGUzY2RjZjUyZDMwNmFmNDE1NjdiN2U3NWUzYzQ2NDMwYjZl
MmRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9XZWJDb3JlL2RvbS9O
b2RlLmNwcApAQCAtNzMxLDYgKzczMSwxNiBAQCBpbmxpbmUgdm9pZCBOb2RlOjptYXJrQW5jZXN0
b3JzV2l0aENoaWxkTmVlZHNTdHlsZVJlY2FsYygpCiAgICAgICAgIGRvY3VtZW50KCktPnNjaGVk
dWxlU3R5bGVSZWNhbGMoKTsKIH0KIAordm9pZCBOb2RlOjpyZWZFdmVudFRhcmdldCgpCit7Cisg
ICAgcmVmKCk7Cit9CisKK3ZvaWQgTm9kZTo6ZGVyZWZFdmVudFRhcmdldCgpCit7CisgICAgZGVy
ZWYoKTsKK30KKwogdm9pZCBOb2RlOjpzZXROZWVkc1N0eWxlUmVjYWxjKFN0eWxlQ2hhbmdlVHlw
ZSBjaGFuZ2VUeXBlKQogewogICAgIEFTU0VSVChjaGFuZ2VUeXBlICE9IE5vU3R5bGVDaGFuZ2Up
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTm9kZS5oIGIvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IDU4N2VmZmQwZmU4MjI3NDc2OTU1MDY0NGU5MmRlZjVhODM5Mjk0MGEuLmIzNTgwOTRiNTZi
N2VlMWFmZjI5MzY3ZTg1NmJiZWQ3YjEzYmQwOGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05v
ZGUuaAorKysgYi9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTY4Nyw4ICs2ODcsOCBAQCBwcml2YXRl
OgogICAgIC8vIFVzZWQgdG8gc2hhcmUgY29kZSBiZXR3ZWVuIGxhenlBdHRhY2ggYW5kIHNldE5l
ZWRzU3R5bGVSZWNhbGMuCiAgICAgdm9pZCBtYXJrQW5jZXN0b3JzV2l0aENoaWxkTmVlZHNTdHls
ZVJlY2FsYygpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAg
dmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCk7CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKTsKIAogICAgIHZpcnR1YWwgTm9kZVJhcmVEYXRhKiBjcmVhdGVSYXJlRGF0YSgp
OwogICAgIE5vZGUqIGNvbnRhaW5lckNoaWxkTm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9PcHRpb25FbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL09w
dGlvbkVsZW1lbnQuY3BwCmluZGV4IDI0MGE4ZmM3ODdjYjg3MGQyMThhMGQxNzQ0ZDVlOTcxZDk4
ZGQ3MmUuLmFiNzg2M2U3NWE2ZjVmMzY4OTE1MjA5N2JhYWY5MWRjYWE2YTU1NjAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL09wdGlv
bkVsZW1lbnQuY3BwCkBAIC0xMzQsNiArMTM0LDEwIEBAIE9wdGlvbkVsZW1lbnREYXRhOjpPcHRp
b25FbGVtZW50RGF0YSgpCiB7CiB9CiAKK09wdGlvbkVsZW1lbnREYXRhOjp+T3B0aW9uRWxlbWVu
dERhdGEoKQoreworfQorCiBPcHRpb25FbGVtZW50KiB0b09wdGlvbkVsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCkKIHsKICAgICBpZiAoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIGVsZW1lbnQt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvcHRpb25UYWcpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vT3B0aW9uRWxlbWVudC5oIGIvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5oCmluZGV4IDIz
MmMzZWU1ZDdjZmU3ZGRkZjc0NmI0YWUyYmY0ZDkzYmRjMzFhMjUuLjlmZjVjZDVkZDZjYzhjMzdm
NTM4ODRmMWI1NDhkYmJjMzg1MzBkNmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL09wdGlvbkVs
ZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9PcHRpb25FbGVtZW50LmgKQEAgLTU4LDYgKzU4LDcg
QEAgcHJpdmF0ZToKIGNsYXNzIE9wdGlvbkVsZW1lbnREYXRhIHsKIHB1YmxpYzoKICAgICBPcHRp
b25FbGVtZW50RGF0YSgpOworICAgIH5PcHRpb25FbGVtZW50RGF0YSgpOwogCiAgICAgU3RyaW5n
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIHZvaWQgc2V0VmFsdWUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWU7IH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwIGIvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAK
aW5kZXggYjlhZDg2MmJjMDI5MzdjNDI5YmYyMzQ0YTQzYTk4YWM3OWQxMDljOC4uYmFjNjc2YTU5
MjA4NTk3YmVjZTE0NWZkMTBjODczODg3MmVmM2UyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
UG9wU3RhdGVFdmVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKQEAg
LTM2LDcgKzM2LDExIEBAIFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KQogICAgICwgbV9zdGF0ZU9iamVjdChz
dGF0ZU9iamVjdCkKIHsKIH0KLSAgICAKKworUG9wU3RhdGVFdmVudDo6flBvcFN0YXRlRXZlbnQo
KQoreworfQorCiB2b2lkIFBvcFN0YXRlRXZlbnQ6OmluaXRQb3BTdGF0ZUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KQogewogICAgIGlmIChkaXNw
YXRjaGVkKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmggYi9XZWJD
b3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggMmZiOGQwNjg1YmYwZTBkNTIyZTQ2YjA4Yjhh
YmFmNzI2M2E0YjQyMi4uNDJmYmQ0NTRlMTFlZWM5MmJmNTk4ZDY3MmU5YWFjZTNiYjA2ODRjYyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCisrKyBiL1dlYkNvcmUvZG9t
L1BvcFN0YXRlRXZlbnQuaApAQCAtMzYsNiArMzYsOCBAQCBjbGFzcyBTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CiAKIGNsYXNzIFBvcFN0YXRlRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgor
ICAgIHZpcnR1YWwgflBvcFN0YXRlRXZlbnQoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBv
cFN0YXRlRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3Rh
dGVPYmplY3QpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcFN0YXRlRXZl
bnQoc3RhdGVPYmplY3QpKTsKQEAgLTQ3LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlT2JqZWN0LmdldCgp
OyB9ICAgIAogCiBwcml2YXRlOgotICAgIFBvcFN0YXRlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+KTsKKyAgICBleHBsaWNpdCBQb3BTdGF0ZUV2ZW50KFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtX3N0YXRlT2JqZWN0OwogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1F1YWxpZmll
ZE5hbWUuY3BwIGIvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggN2MyOWNlMGY5
M2IyYWIxN2M1ZWJjMzBkNTc2ZTNkMzQwNDhkMjQxMC4uOTBjNmQyOTJhMGU2ZGU5MTI0MWViMDQx
ZDgwYmZlMDJmMzhhNTYzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5j
cHAKKysrIGIvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKQEAgLTcyLDYgKzcyLDExIEBA
IFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwLCBjb25z
dCBjaGFyKiBsLCBjb25zdCBBdG9taWNTCiAgICAgaW5pdChwLCBBdG9taWNTdHJpbmcobCksIG4p
OwogfQogCitRdWFsaWZpZWROYW1lOjp+UXVhbGlmaWVkTmFtZSgpCit7CisgICAgZGVyZWYoKTsK
K30KKwogdm9pZCBRdWFsaWZpZWROYW1lOjpkZXJlZigpCiB7CiAjaWZkZWYgUU5BTUVfREVGQVVM
VF9DT05TVFJVQ1RPUgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIv
V2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4IDJkYThmMGM1OGI4ODU1OWMxNjllNjU3
NmRkN2NmYWQyN2RhZWM2MTkuLjM0ZmMwNjlkODQzMzM3OWVhMDIwOWJlNzdhMWVhMDczYjgzMTRj
MTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAorKysgYi9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIFF1YWxp
ZmllZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IGNoYXIqIGxvY2FsTmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwogICAgIFF1YWxpZmllZE5hbWUo
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1faW1wbChoYXNoVGFibGVEZWxldGVk
VmFsdWUoKSkgeyB9CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotICAgIH5RdWFsaWZp
ZWROYW1lKCkgeyBkZXJlZigpOyB9CisgICAgflF1YWxpZmllZE5hbWUoKTsKICNpZmRlZiBRTkFN
RV9ERUZBVUxUX0NPTlNUUlVDVE9SCiAgICAgUXVhbGlmaWVkTmFtZSgpIDogbV9pbXBsKDApIHsg
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcCBiL1dl
YkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDAyNGJhN2FlNDBkNjU5YjIyZjljMTEy
NjMyMjEwNmQzZjExMTMzZjUuLjFhZjAxMmU2YzdhMDczY2Q4NWJmZGI4NzgyM2RmYzA4OTZmZjVi
YWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCkBAIC05NTMsNiArOTUzLDEwIEBAIFNlbGVjdEVsZW1l
bnREYXRhOjpTZWxlY3RFbGVtZW50RGF0YSgpCiB7CiB9CiAKK1NlbGVjdEVsZW1lbnREYXRhOjp+
U2VsZWN0RWxlbWVudERhdGEoKQoreworfQorCiB2b2lkIFNlbGVjdEVsZW1lbnREYXRhOjpjaGVj
a0xpc3RJdGVtcyhjb25zdCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogI2lmICFBU1NFUlRf
RElTQUJMRUQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaCBiL1dlYkNv
cmUvZG9tL1NlbGVjdEVsZW1lbnQuaAppbmRleCA3M2UyNjIwMmQ4ZjlhM2UyODJiZDJkN2M3N2Vk
MWVlYTJlODAxYjliLi41MzgxNWYyYWViZTViMDk1YmZkYTA1ODQzZTUxNGM3ZTBjOTFiYTEyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9kb20v
U2VsZWN0RWxlbWVudC5oCkBAIC0xMTMsNiArMTEzLDcgQEAgcHJpdmF0ZToKIGNsYXNzIFNlbGVj
dEVsZW1lbnREYXRhIHsKIHB1YmxpYzoKICAgICBTZWxlY3RFbGVtZW50RGF0YSgpOworICAgIH5T
ZWxlY3RFbGVtZW50RGF0YSgpOwogCiAgICAgYm9vbCBtdWx0aXBsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbXVsdGlwbGU7IH0KICAgICB2b2lkIHNldE11bHRpcGxlKGJvb2wgdmFsdWUpIHsgbV9tdWx0
aXBsZSA9IHZhbHVlOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuY3BwIGIvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAppbmRleCBk
NjQxY2I1NjBhZjVhYjcyZDYzYjI3MmUyYTk3MjUwZTRkNGY2ODZjLi42YzhjMmRiOTczYTVmYmM1
NDk4YmRlZmQwMDFiNjIzN2I4NTkwMWRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlz
dC5jcHAKQEAgLTM0LDYgKzM0LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU3RhdGlj
SGFzaFNldE5vZGVMaXN0OjpTdGF0aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8UmVmUHRy
PE5vZGU+ID4mIG5vZGVzKQoreworICAgIG1fbm9kZXMuc3dhcChub2Rlcyk7Cit9CisKK1N0YXRp
Y0hhc2hTZXROb2RlTGlzdDo6U3RhdGljSGFzaFNldE5vZGVMaXN0KCkKK3sKK30KKworU3RhdGlj
SGFzaFNldE5vZGVMaXN0Ojp+U3RhdGljSGFzaFNldE5vZGVMaXN0KCkKK3sKK30KKwogdW5zaWdu
ZWQgU3RhdGljSGFzaFNldE5vZGVMaXN0OjpsZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBt
X25vZGVzLnNpemUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2Rl
TGlzdC5oIGIvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgKaW5kZXggZTk1NDQ5
MzYwYTQzNWQ3NTcxZGNhNTZmM2I3NmEyYTFjYzJjNGFjYi4uZTYwYmY0NDUyY2FjZmU0MzFlNTNk
ODcwOGZkNjFmYWRlNmZjZWZmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmgKKysrIGIvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgKQEAg
LTQxLDYgKzQxLDkgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3MgU3RhdGljSGFzaFNldE5vZGVMaXN0
IDogcHVibGljIE5vZGVMaXN0IHsKIHB1YmxpYzoKKyAgICBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qo
KTsKKyAgICB+U3RhdGljSGFzaFNldE5vZGVMaXN0KCk7CisKICAgICAvLyBBZG9wdHMgdGhlIGNv
bnRlbnRzIG9mIHRoZSBub2RlcyBMaXN0SGFzaFNldC4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IGFkb3B0KGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2Rl
PiA+JiBub2RlcykKICAgICB7CkBAIC01NywxMCArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBOb2RlKiBpdGVtV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAKIHByaXZh
dGU6Ci0gICAgU3RhdGljSGFzaFNldE5vZGVMaXN0KExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+
JiBub2RlcykKLSAgICB7Ci0gICAgICAgIG1fbm9kZXMuc3dhcChub2Rlcyk7Ci0gICAgfQorICAg
IFN0YXRpY0hhc2hTZXROb2RlTGlzdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMp
OwogCiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gbV9ub2RlczsKIH07CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vU3R5bGVFbGVt
ZW50LmNwcAppbmRleCBjM2E3MzAwMzNlZjBjZWNhODlmNWU5MjNmZGU5NDBjYmJhMDU2ZTYzLi5m
MzE4MzI2MGFmN2VkMTc4NWQ4NGQ4MzA0ZGExMmIxMzYxOGViNzBlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5j
cHAKQEAgLTM5LDYgKzM5LDEwIEBAIFN0eWxlRWxlbWVudDo6U3R5bGVFbGVtZW50KERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgICAgIG1fc3RhcnRMaW5lTnVt
YmVyID0gZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT5saW5lTnVtYmVyKCk7
CiB9CiAKK1N0eWxlRWxlbWVudDo6flN0eWxlRWxlbWVudCgpCit7Cit9CisKIFN0eWxlU2hlZXQq
IFN0eWxlRWxlbWVudDo6c2hlZXQoRWxlbWVudCogZSkKIHsKICAgICBpZiAoIW1fc2hlZXQpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuaCBiL1dlYkNvcmUvZG9tL1N0eWxl
RWxlbWVudC5oCmluZGV4IDAwZTQ1ZWRlMjBiNjA0NTdlZjExMWE0MmRjNzFkMTkwOTBjNDExYzMu
LjY1ZjYzMTA5M2U0ZWNhMzgwZGVmNGEyNWVkN2MxYmQxYTQxNjNiMDcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL1N0eWxlRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5o
CkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBTdHlsZUVsZW1lbnQgewog
cHVibGljOgogICAgIFN0eWxlRWxlbWVudChEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KTsKLSAgICB2aXJ0dWFsIH5TdHlsZUVsZW1lbnQoKSB7fQorICAgIHZpcnR1YWwgflN0eWxlRWxl
bWVudCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcCBi
L1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCmluZGV4IGJjYzM5NWZmNTkzZmQzOGRjODI0NzZk
ODdmOWFlYzZhNWY3OWUyNmQuLjg4ZDNlNmZhM2YwMjJlYjRjNjM1Y2Q4ZDIyZjc3ZjJlODk5MTRi
Y2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL1RvdWNoRXZlbnQuY3BwCkBAIC0zMSw2ICszMSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK1RvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoKQoreworfQorCiBUb3VjaEV2ZW50OjpUb3Vj
aEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0KiB0YXJnZXRUb3VjaGVzLAogICAg
ICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IAogICAgICAgICBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgaW50IHNjcmVlblgsIGlu
dCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKQEAgLTQzLDYgKzQ3LDEwIEBAIFRvdWNo
RXZlbnQ6OlRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRv
dWNoZXMsCiB7CiB9CiAKK1RvdWNoRXZlbnQ6On5Ub3VjaEV2ZW50KCkKK3sKK30KKwogdm9pZCBU
b3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMsIFRvdWNoTGlzdCog
dGFyZ2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCAKICAgICAgICAgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZp
ZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oIGIvV2ViQ29yZS9kb20vVG91Y2hF
dmVudC5oCmluZGV4IDA4MGE0OTU3NDkwMGQyNWNiYWQ4MGM2ODVkZmRjZjgzZGJiNzBmZDkuLjE1
MTRjZjhiMDRmYmI4ODFlYzEzNzBkZDRjMmMyZWY3NDIzNzEzYjQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL1RvdWNoRXZlbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKQEAgLTM1
LDYgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUb3VjaEV2ZW50IDogcHVi
bGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5Ub3VjaEV2ZW50
KCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUb3VjaEV2ZW50PiBjcmVhdGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUb3VjaEV2ZW50KTsKQEAgLTYxLDcgKzYzLDcg
QEAgcHVibGljOgogICAgIFRvdWNoTGlzdCogY2hhbmdlZFRvdWNoZXMoKSBjb25zdCB7IHJldHVy
biBtX2NoYW5nZWRUb3VjaGVzLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgVG91Y2hFdmVudCgp
IHt9CisgICAgVG91Y2hFdmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVz
LCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3QqIGNoYW5n
ZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsCiAgICAgICAgICAgICBQYXNzUmVm
UHRyPEFic3RyYWN0Vmlldz4sIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1dl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggMzU2YTcxNzA2MjFh
MTI4NjhlZDAyZDM5NWZmNWRkMTQ5ZmQ2ZWY5Ni4uZjI3YTJlNTk1ZWU0YzJiNWM2Nzk4OTFmYzNj
ZjE4OTBiMGE5MjkyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
CkBAIC03Nyw2ICs3NywxMCBAQCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Q29tcG9zaXRlRWRpdENv
bW1hbmQoRG9jdW1lbnQgKmRvY3VtZW50KQogewogfQogCitDb21wb3NpdGVFZGl0Q29tbWFuZDo6
fkNvbXBvc2l0ZUVkaXRDb21tYW5kKCkKK3sKK30KKwogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6ZG9VbmFwcGx5KCkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IG1fY29tbWFuZHMuc2l6ZSgpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmggYi9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAppbmRleCBmODM5YTcyODk4NWQwNmFj
NWI4OWVmZmMzM2MxYTFiYjkzMmJmOWNkLi40Mzk3NDY0YjlhZTcyNTVlOWNkODA2ZjcwMDQ1YTgy
NWI2NDk2MGEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaApAQCAtMzks
MTAgKzM5LDEyIEBAIGNsYXNzIFRleHQ7CiAKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kIDog
cHVibGljIEVkaXRDb21tYW5kIHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5Db21wb3NpdGVFZGl0
Q29tbWFuZCgpOworCiAgICAgYm9vbCBpc0ZpcnN0Q29tbWFuZChFZGl0Q29tbWFuZCogY29tbWFu
ZCkgeyByZXR1cm4gIW1fY29tbWFuZHMuaXNFbXB0eSgpICYmIG1fY29tbWFuZHMuZmlyc3QoKSA9
PSBjb21tYW5kOyB9CiAKIHByb3RlY3RlZDoKLSAgICBDb21wb3NpdGVFZGl0Q29tbWFuZChEb2N1
bWVudCopOworICAgIGV4cGxpY2l0IENvbXBvc2l0ZUVkaXRDb21tYW5kKERvY3VtZW50Kik7CiAK
ICAgICAvLwogICAgIC8vIHN1Z2FyeS1zd2VldCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gaGVs
cCBjcmVhdGUgYW5kIGFwcGx5IGVkaXQgY29tbWFuZHMgaW4gY29tcG9zaXRlIGNvbW1hbmRzCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDA2MTI5ODZhODk3ZGQ0OTgxYTE1MmU2YWZkMDlm
MmU5OTBkZDcwOTcuLmRhMzBkOGY2ZDRiMTUzNjY3NDNlYjllNjk1Y2E4ZWQ0MTdkOTViY2YgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xMTIsNiArMTEyLDEwIEBAIEJpdFN0YWNrOjpC
aXRTdGFjaygpCiB7CiB9CiAKK0JpdFN0YWNrOjp+Qml0U3RhY2soKQoreworfQorCiB2b2lkIEJp
dFN0YWNrOjpwdXNoKGJvb2wgYml0KQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9zaXplIC8g
Yml0c0luV29yZDsKQEAgLTMzNiw2ICszNDAsMTAgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0
b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQogICAgIGFk
dmFuY2UoKTsKIH0KIAorVGV4dEl0ZXJhdG9yOjp+VGV4dEl0ZXJhdG9yKCkKK3sKK30KKwogdm9p
ZCBUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogewogICAgIC8vIHJlc2V0IHRoZSBydW4gaW5mb3Jt
YXRpb24KQEAgLTE0NTYsNiArMTQ2NCwxMCBAQCBXb3JkQXdhcmVJdGVyYXRvcjo6V29yZEF3YXJl
SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIpCiAgICAgYWR2YW5jZSgpOyAvLyBnZXQgaW4gcG9zaXRp
b24gb3ZlciB0aGUgZmlyc3QgY2h1bmsgb2YgdGV4dAogfQogCitXb3JkQXdhcmVJdGVyYXRvcjo6
fldvcmRBd2FyZUl0ZXJhdG9yKCkKK3sKK30KKwogLy8gV2UncmUgYWx3YXlzIGluIG9uZSBvZiB0
aGVzZSBtb2RlczoKIC8vIC0gVGhlIGN1cnJlbnQgY2h1bmsgaW4gdGhlIHRleHQgaXRlcmF0b3Ig
aXMgb3VyIGN1cnJlbnQgY2h1bmsKIC8vICAgICAgKHR5cGljYWxseSBpdHMgYSBwaWVjZSBvZiB3
aGl0ZXNwYWNlLCBvciB0ZXh0IHRoYXQgZW5kZWQgd2l0aCB3aGl0ZXNwYWNlKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5oCmluZGV4IDdmZDg3YmRhYzhjNDNmNGIzYzlkZjY4NTFkYWE3NzJlNGUxN2YyZjYu
LjFiZDg4Mjg4Y2FmZTNhNTg4YjUzOWEyZDU2NzY5ZmNjNmVjNWQ4OWYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmgKQEAgLTY0LDYgKzY0LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gZmluZFBsYWluVGV4
dChjb25zdCBSYW5nZSosIGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yd2FyZCwgYm9vbAogY2xhc3Mg
Qml0U3RhY2sgewogcHVibGljOgogICAgIEJpdFN0YWNrKCk7CisgICAgfkJpdFN0YWNrKCk7CiAK
ICAgICB2b2lkIHB1c2goYm9vbCk7CiAgICAgdm9pZCBwb3AoKTsKQEAgLTgzLDYgKzg0LDcgQEAg
cHJpdmF0ZToKIGNsYXNzIFRleHRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgVGV4dEl0ZXJhdG9y
KCk7CisgICAgflRleHRJdGVyYXRvcigpOwogICAgIGV4cGxpY2l0IFRleHRJdGVyYXRvcihjb25z
dCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2
aW9yKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9wb3NpdGlvbk5vZGU7
IH0KQEAgLTI5MSw2ICsyOTMsNyBAQCBjbGFzcyBXb3JkQXdhcmVJdGVyYXRvciB7CiBwdWJsaWM6
CiAgICAgV29yZEF3YXJlSXRlcmF0b3IoKTsKICAgICBleHBsaWNpdCBXb3JkQXdhcmVJdGVyYXRv
cihjb25zdCBSYW5nZSopOworICAgIH5Xb3JkQXdhcmVJdGVyYXRvcigpOwogCiAgICAgYm9vbCBh
dEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX2RpZExvb2tBaGVhZCAmJiBtX3RleHRJdGVyYXRvci5h
dEVuZCgpOyB9CiAgICAgdm9pZCBhZHZhbmNlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmNwcAppbmRleCBjOTZlOTUzYWI0OWEyZjQzMjlmZjI2ZWYzMGI2YjhlMzdlZDYzMWNjLi40
NTJmYTdmOTlhMmJjZDU5OTNkOWVlN2IyOWMzYjQ2MTEyYmNmNjgxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTYyMiw2ICs2MjIsMTAgQEAgdm9pZCBJbnNwZWN0b3JT
dHJpbmc6OndyaXRlSlNPTihWZWN0b3I8VUNoYXI+KiBvdXRwdXQpIGNvbnN0CiAgICAgZG91Ymxl
UXVvdGVTdHJpbmcobV9zdHJpbmdWYWx1ZSwgb3V0cHV0KTsKIH0KIAorSW5zcGVjdG9yT2JqZWN0
Ojp+SW5zcGVjdG9yT2JqZWN0KCkKK3sKK30KKwogYm9vbCBJbnNwZWN0b3JPYmplY3Q6OmFzT2Jq
ZWN0KFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRwdXQpCiB7CiAgICAgKm91dHB1dCA9IHRo
aXM7CkBAIC02OTYsNiArNzAwLDE3IEBAIHZvaWQgSW5zcGVjdG9yT2JqZWN0Ojp3cml0ZUpTT04o
VmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdAogICAgIG91dHB1dC0+YXBwZW5kKCd9Jyk7CiB9
CiAKK0luc3BlY3Rvck9iamVjdDo6SW5zcGVjdG9yT2JqZWN0KCkKKyAgICA6IEluc3BlY3RvclZh
bHVlKFR5cGVPYmplY3QpCisgICAgLCBtX2RhdGEoKQorICAgICwgbV9vcmRlcigpCit7Cit9CisK
K0luc3BlY3RvckFycmF5Ojp+SW5zcGVjdG9yQXJyYXkoKQoreworfQorCiBib29sIEluc3BlY3Rv
ckFycmF5Ojphc0FycmF5KFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG91dHB1dCkKIHsKICAgICAq
b3V0cHV0ID0gdGhpczsKQEAgLTcxOCw2ICs3MzMsMTIgQEAgdm9pZCBJbnNwZWN0b3JBcnJheTo6
d3JpdGVKU09OKFZlY3RvcjxVQ2hhcj4qIG91dHB1dCkgY29uc3QKICAgICBvdXRwdXQtPmFwcGVu
ZCgnXScpOwogfQogCitJbnNwZWN0b3JBcnJheTo6SW5zcGVjdG9yQXJyYXkoKQorICAgIDogSW5z
cGVjdG9yVmFsdWUoVHlwZUFycmF5KQorICAgICwgbV9kYXRhKCkKK3sKK30KKwogUGFzc1JlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yQXJyYXk6OmdldChzaXplX3QgaW5kZXgpCiB7CiAg
ICAgQVNTRVJUKGluZGV4IDwgbV9kYXRhLnNpemUoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oCmluZGV4IDQwMzZmNTU5NmJiNTMyODUwYjdlOTY3ZjFkMzlkNTYyZjE1MGI3MWEuLjM5
MTM3MmVhNTIwYWQ1OTlmOWNmM2YxMzUzNzE4NjU4NDY3OTIyODEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JPYmplY3QoKSk7CiAgICAgfQotICAgIH5J
bnNwZWN0b3JPYmplY3QoKSB7IH0KKyAgICB+SW5zcGVjdG9yT2JqZWN0KCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgYXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCk7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYXNPYmplY3QoKTsKQEAgLTE5NCw3
ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmVuZCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yT2JqZWN0KCkgOiBJ
bnNwZWN0b3JWYWx1ZShUeXBlT2JqZWN0KSB7IH0KKyAgICBJbnNwZWN0b3JPYmplY3QoKTsKICAg
ICBEaWN0aW9uYXJ5IG1fZGF0YTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX29yZGVyOwogfTsKQEAg
LTIwNSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEluc3BlY3RvckFycmF5KCkpOwogICAgIH0KLSAgICB+SW5zcGVjdG9yQXJyYXkoKSB7IH0K
KyAgICB+SW5zcGVjdG9yQXJyYXkoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhc0FycmF5KFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4qIG91dHB1dCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiBhc0FycmF5KCk7CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB3cml0ZUpTT04oVmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBJbnNwZWN0b3JBcnJheSgpIDogSW5zcGVjdG9yVmFsdWUoVHlwZUFycmF5KSB7
IH0KKyAgICBJbnNwZWN0b3JBcnJheSgpOwogICAgIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+ID4gbV9kYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVz
b3VyY2UuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGE2ZmYw
ZmYyOTQzMDEwMDBkYzY5MTIwZjhiNTBiOWQyNzM3YTQyZWQuLjA4YWNhMjA0OGRhYTIzZjBlNWM2
ODBmMGYzMWFhMmQ0ZDU3N2QwNDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJl
c291cmNlLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTQy
OCw2ICs0MjgsMjUgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlUmVzcG9uc2VBZnRlclJl
dmFsaWRhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiB2YWwKICAgICB9CiB9CiAKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2U6OnJlZ2lzdGVySGFuZGxlKENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSog
aCkKK3sKKyAgICArK21faGFuZGxlQ291bnQ7CisgICAgaWYgKG1fcmVzb3VyY2VUb1JldmFsaWRh
dGUpCisgICAgICAgIG1faGFuZGxlc1RvUmV2YWxpZGF0ZS5hZGQoaCk7Cit9CisKK3ZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnVucmVnaXN0ZXJIYW5kbGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKiBo
KQoreworICAgIEFTU0VSVChtX2hhbmRsZUNvdW50ID4gMCk7CisgICAgLS1tX2hhbmRsZUNvdW50
OworCisgICAgaWYgKG1fcmVzb3VyY2VUb1JldmFsaWRhdGUpCisgICAgICAgICBtX2hhbmRsZXNU
b1JldmFsaWRhdGUucmVtb3ZlKGgpOworCisgICAgaWYgKCFtX2hhbmRsZUNvdW50KQorICAgICAg
ICBkZWxldGVJZlBvc3NpYmxlKCk7Cit9CisKIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmNhblVzZUNh
Y2hlVmFsaWRhdG9yKCkgY29uc3QKIHsKICAgICBpZiAobV9sb2FkaW5nIHx8IG1fZXJyb3JPY2N1
cnJlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmggYi9XZWJD
b3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGY5NWRjY2Y4NGU3NjEyMTJlNTNmOWYx
NDNlOWJiYmRkNGM0NWUwZDcuLjA3OGRhNTc4OGE4MTRlZWE5Njg0YzczMTJhODg3ZTFlNTg5Y2Jk
MjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTg2LDggKzE4Niw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGluY3JlYXNlUHJlbG9hZENvdW50KCkgeyArK21fcHJlbG9hZENvdW50OyB9CiAg
ICAgdm9pZCBkZWNyZWFzZVByZWxvYWRDb3VudCgpIHsgQVNTRVJUKG1fcHJlbG9hZENvdW50KTsg
LS1tX3ByZWxvYWRDb3VudDsgfQogICAgIAotICAgIHZvaWQgcmVnaXN0ZXJIYW5kbGUoQ2FjaGVk
UmVzb3VyY2VIYW5kbGVCYXNlKiBoKSB7ICsrbV9oYW5kbGVDb3VudDsgaWYgKG1fcmVzb3VyY2VU
b1JldmFsaWRhdGUpIG1faGFuZGxlc1RvUmV2YWxpZGF0ZS5hZGQoaCk7IH0KLSAgICB2b2lkIHVu
cmVnaXN0ZXJIYW5kbGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKiBoKSB7IEFTU0VSVChtX2hh
bmRsZUNvdW50ID4gMCk7IC0tbV9oYW5kbGVDb3VudDsgaWYgKG1fcmVzb3VyY2VUb1JldmFsaWRh
dGUpIG1faGFuZGxlc1RvUmV2YWxpZGF0ZS5yZW1vdmUoaCk7IGlmICghbV9oYW5kbGVDb3VudCkg
ZGVsZXRlSWZQb3NzaWJsZSgpOyB9CisgICAgdm9pZCByZWdpc3RlckhhbmRsZShDYWNoZWRSZXNv
dXJjZUhhbmRsZUJhc2UqIGgpOworICAgIHZvaWQgdW5yZWdpc3RlckhhbmRsZShDYWNoZWRSZXNv
dXJjZUhhbmRsZUJhc2UqIGgpOwogICAgIAogICAgIGJvb2wgY2FuVXNlQ2FjaGVWYWxpZGF0b3Io
KSBjb25zdDsKICAgICBib29sIG11c3RSZXZhbGlkYXRlKENhY2hlUG9saWN5KSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAppbmRleCBlMzA0ZmZhM2U4
OTJkMGE4YmM1OGRjZGFjZjZmYTcxNDk3M2I0MzAxLi4wOWYyMTZiYTZkNjZhM2EyYTI4YjYzZWY0
MWMwNWRhZTRhY2E1MDUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UEhlYWRlck1hcC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJN
YXAuY3BwCkBAIC0zNyw2ICszNywxNCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK0hUVFBIZWFkZXJNYXA6OkhUVFBIZWFkZXJNYXAoKQoreworfQorCitI
VFRQSGVhZGVyTWFwOjp+SFRUUEhlYWRlck1hcCgpCit7Cit9CisKIFBhc3NPd25QdHI8Q3Jvc3NU
aHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gSFRUUEhlYWRlck1hcDo6Y29weURhdGEoKSBjb25zdAog
ewogICAgIE93blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBkYXRhKG5ldyBDcm9z
c1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhKCkpOwpAQCAtNTgsNiArNjYsMTggQEAgdm9pZCBIVFRQ
SGVhZGVyTWFwOjphZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+
IGRhdGEpCiAgICAgICAgIHNldChoZWFkZXIuZmlyc3QsIGhlYWRlci5zZWNvbmQpOwogICAgIH0K
IH0KKworU3RyaW5nIEhUVFBIZWFkZXJNYXA6OmdldChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VG
b2xkaW5nSGFzaD46OmdldChuYW1lKTsKK30KKworcGFpcjxIVFRQSGVhZGVyTWFwOjppdGVyYXRv
ciwgYm9vbD4gSFRUUEhlYWRlck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZywgQ2FzZUZvbGRpbmdIYXNoPjo6YWRkKG5hbWUsIHZhbHVlKTsKK30KKworCiAgICAgCiAv
LyBBZGFwdGVyIHRoYXQgYWxsb3dzIHRoZSBIYXNoTWFwIHRvIHRha2UgQyBzdHJpbmdzIGFzIGtl
eXMuCiBzdHJ1Y3QgQ2FzZUZvbGRpbmdDU3RyaW5nVHJhbnNsYXRvciB7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAppbmRleCBjNjE0NWJkNGYwZTllN2JiN2YwZDQ5OThl
Zjg1YTM1OTRiMWE2ZWZkLi4wMjA3MWUzNjEwYzFkNGI0ZmNkZjRkNmM5NTliNDlmODdmM2E1ZjE1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKQEAgLTQxLDIwICs0
MSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBIVFRQSGVhZGVyTWFwIDog
cHVibGljIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gewog
ICAgIHB1YmxpYzoKKyAgICAgICAgSFRUUEhlYWRlck1hcCgpOworICAgICAgICB+SFRUUEhlYWRl
ck1hcCgpOworCiAgICAgICAgIC8vIEdldHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1aXRhYmxlIGZv
ciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgogICAgICAgICBQYXNzT3duUHRyPENyb3NzVGhy
ZWFkSFRUUEhlYWRlck1hcERhdGE+IGNvcHlEYXRhKCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBh
ZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+KTsKICAgICAgICAg
Ci0gICAgICAgIFN0cmluZyBnZXQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywg
Q2FzZUZvbGRpbmdIYXNoPjo6Z2V0KG5hbWUpOwotICAgICAgICB9CisgICAgICAgIFN0cmluZyBn
ZXQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAotICAgICAgICBwYWlyPGl0ZXJh
dG9yLCBib29sPiBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjo6YWRkKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgfQor
ICAgICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAgICAgICAvLyBBbHRlcm5hdGUgYWNjZXNzb3Jz
IHRoYXQgYXJlIGZhc3RlciB0aGFuIGNvbnZlcnRpbmcgdGhlIGNoYXIqIHRvIEF0b21pY1N0cmlu
ZyBmaXJzdC4KICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBjaGFyKikgY29uc3Q7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQXBwbGV0LmNwcAppbmRleCA2M2ExOGEwNDM0ZGUwNzIzMGYxNDg0MDg5OTQw
OWY4NTgxNDZkMGJiLi5mOWViNTZlODJmOTY0ZjllMjE1NzM2ZDA0NDM1MGUyNGZhMWM5OTZiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHAKQEAgLTM5LDYgKzM5LDEwIEBAIFJlbmRlckFw
cGxldDo6UmVuZGVyQXBwbGV0KEhUTUxBcHBsZXRFbGVtZW50KiBhcHBsZXQsIGNvbnN0IEhhc2hN
YXA8U3RyaW5nLCBTdHJpCiAgICAgc2V0SW5saW5lKHRydWUpOwogfQogCitSZW5kZXJBcHBsZXQ6
On5SZW5kZXJBcHBsZXQoKQoreworfQorCiBJbnRTaXplIFJlbmRlckFwcGxldDo6aW50cmluc2lj
U2l6ZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBtYWtlIHNlbnNlLiBX
ZSBjYW4ndCBqdXN0IHN0YXJ0IHJldHVybmluZwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQXBwbGV0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuaAppbmRl
eCA2MmY0NmNkOGQ1NjJkZGRiZTAyMGFlNjQyMjQ4M2ZmNzUzZDQ0MTQ1Li42NDE1NjhkODI2NDBk
M2Y4M2FiNmYxN2UwOTBlNWIxODVjNjgwOWM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJBcHBsZXQuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuaApA
QCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVuZGVyQXBw
bGV0IDogcHVibGljIFJlbmRlcldpZGdldCB7CiAgICAgcHVibGljOgogICAgICAgICBSZW5kZXJB
cHBsZXQoSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYg
YXJncyk7CisgICAgICAgIHZpcnR1YWwgflJlbmRlckFwcGxldCgpOwogCiAgICAgICAgIHZvaWQg
Y3JlYXRlV2lkZ2V0SWZOZWNlc3NhcnkoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQnV0dG9uLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAK
aW5kZXggODM1N2JkNDQ4NTJmOTNlMmE0MjJmZTAzYzg5MzYxYTY4YzE2MmY5OC4uMjY0MmYyMzRi
MWVhMDhhZjI4ZDNkMTZjODFlZWY2YThkMGI1MTM0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0
b24uY3BwCkBAIC00NSw2ICs0NSwxMCBAQCBSZW5kZXJCdXR0b246OlJlbmRlckJ1dHRvbihOb2Rl
KiBub2RlKQogewogfQogCitSZW5kZXJCdXR0b246On5SZW5kZXJCdXR0b24oKQoreworfQorCiB2
b2lkIFJlbmRlckJ1dHRvbjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsKICAgICBpZiAoIW1faW5uZXIpIHsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmgKaW5kZXggMWZjNWViNjIwMWE2NWE1ODlkODM0NzI4ZjI5MGI5YWY5N2VlNzk5
NC4uMjUyZWRiNDk3Nzg5ZmU0ZGE1NGZhODU4ZjYwMWRiNmMwNmZjMTNiMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmgKQEAgLTM0LDcgKzM0LDggQEAgY2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50
OwogLy8gdG8gZGF0ZSBhcyB0aGUgYnV0dG9uIGNoYW5nZXMuCiBjbGFzcyBSZW5kZXJCdXR0b24g
OiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlckJ1dHRvbihO
b2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyQnV0dG9uKE5vZGUqKTsKKyAgICB2aXJ0dWFsIH5S
ZW5kZXJCdXR0b24oKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJSZW5kZXJCdXR0b24iOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVy
QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcAppbmRleCBiYTljNTAzODNjYTE2ZDBmNGE5NmVjNDA3ZGQwZGUwMTIzYjU0ZDQyLi5jMzU3
YmUxNWU0NzFiOTZiMDgzZGJlNTgyYTk1MGI3YTc0ZDJkOTJmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb3VudGVyLmNwcApAQCAtMjk0LDYgKzI5NCwxMCBAQCBSZW5kZXJDb3VudGVyOjpSZW5kZXJD
b3VudGVyKERvY3VtZW50KiBub2RlLCBjb25zdCBDb3VudGVyQ29udGVudCYgY291bnRlcikKIHsK
IH0KIAorUmVuZGVyQ291bnRlcjo6flJlbmRlckNvdW50ZXIoKQoreworfQorCiBjb25zdCBjaGFy
KiBSZW5kZXJDb3VudGVyOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gIlJlbmRl
ckNvdW50ZXIiOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCmluZGV4IDhkOTgxZGY5ZGE1YmMz
NzRmNTYzNmEzNjVjZTBkMTAwNGFlNjY1ZGYuLjkzNzMxOTM2MjhhMzBhZmQ4NDY3NmE3NGVjM2Ix
MjhhOTJlYmY3YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIu
aAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKQEAgLTMyLDYgKzMyLDcg
QEAgY2xhc3MgQ291bnRlck5vZGU7CiBjbGFzcyBSZW5kZXJDb3VudGVyIDogcHVibGljIFJlbmRl
clRleHQgewogcHVibGljOgogICAgIFJlbmRlckNvdW50ZXIoRG9jdW1lbnQqLCBjb25zdCBDb3Vu
dGVyQ29udGVudCYpOworICAgIHZpcnR1YWwgflJlbmRlckNvdW50ZXIoKTsKIAogICAgIC8vIFJl
bW92ZXMgdGhlIHJlZmVyZW5jZSB0byB0aGUgQ291bnRlck5vZGUgYXNzb2NpYXRlZCB3aXRoIHRo
aXMgcmVuZGVyZXIKICAgICAvLyBpZiBpdHMgaWRlbnRpZmllciBtYXRjaGVzIHRoZSBhcmd1bWVu
dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmggYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCmluZGV4IGJjOGU4YWVmMzkyZjRjZGMzZmJh
M2I0OGIwZmQ5YjE0NTZkNzVmODQuLmE0MmRhYThhNmMyYTY2NzdjOThiMDgyMWZjNGFmZGQxMTlm
Y2ZhYTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaApAQCAtMzAsNyArMzAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckZpZWxkc2V0IDogcHVibGljIFJlbmRl
ckJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGaWVsZHNldChOb2RlKik7CisgICAgZXhwbGlj
aXQgUmVuZGVyRmllbGRzZXQoTm9kZSopOwogCiAgICAgUmVuZGVyQm94KiBmaW5kTGVnZW5kKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmpl
Y3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAKaW5kZXgg
ODM5ZTk2MzRiNDkxZjc3NjZmZmMzNGY5MDgyMGRiYTYwNGUwOTZjMy4uZjlmNjk4OGYzODcyOTlk
NjYyOGRhMTFmNjc1ZWE4MWUwNDEzYTY2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRm9yZWlnbk9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9y
ZWlnbk9iamVjdC5jcHAKQEAgLTQxLDYgKzQxLDEwIEBAIFJlbmRlckZvcmVpZ25PYmplY3Q6OlJl
bmRlckZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqIG5vZGUpCiB7CiB9CiAK
K1JlbmRlckZvcmVpZ25PYmplY3Q6On5SZW5kZXJGb3JlaWduT2JqZWN0KCkKK3sKK30KKwogdm9p
ZCBSZW5kZXJGb3JlaWduT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50LCBp
bnQpCiB7CiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmggYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmgKaW5kZXggODc0MjNlNmQ5YjRhMjZi
OTkwMjgxYTQzYTk3ODQxYjViMWQ3ZjM4Yi4uYmRmOTZjZTUwZDg3MjdhNjVkNzAwZDUxZWU2NjZi
OTVjZjBiZWMwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9i
amVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuaApAQCAt
MzMsNyArMzMsOCBAQCBjbGFzcyBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDsKIAogY2xhc3MgUmVu
ZGVyRm9yZWlnbk9iamVjdCA6IHB1YmxpYyBSZW5kZXJTVkdCbG9jayB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyRm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCopOworICAgIGV4cGxp
Y2l0IFJlbmRlckZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqKTsKKyAgICB2
aXJ0dWFsIH5SZW5kZXJGb3JlaWduT2JqZWN0KCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyRm9yZWlnbk9iamVjdCI7IH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lLmgKaW5kZXggYzg5NWEwYzMwMTE1YjFhMmJmNTY2YjA4Nzg5NzE5
OGVkYmE4OWU4Zi4uZjZkN2VlODk1ZTdiMzYxMmFkZTJhZmYyMmZlM2RmMGU5ZTNkMTUwNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEhUTUxGcmFtZUVs
ZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckZyYW1lIDogcHVibGljIFJlbmRlckZyYW1lQmFzZSB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyRnJhbWUoSFRNTEZyYW1lRWxlbWVudCopOworICAgIGV4cGxpY2l0
IFJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQqKTsKIAogICAgIEZyYW1lRWRnZUluZm8gZWRn
ZUluZm8oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWVCYXNlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAppbmRleCBjZDNj
ZjBjNmMxODQwNGVkZGVhMjk4NWExZDk2OWY5Y2E1NzY3Yzc2Li40ZmFkNTYwYzViMzM3Zjk2Yjgx
M2IwY2I3OTA1NDUzNjJkYzY2ODdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZUJhc2UuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaApA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBCYXNlIGNsYXNzIGZvciBS
ZW5kZXJGcmFtZSBhbmQgUmVuZGVySUZyYW1lCiBjbGFzcyBSZW5kZXJGcmFtZUJhc2UgOiBwdWJs
aWMgUmVuZGVyUGFydCB7CiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyRnJhbWVCYXNlKEVsZW1lbnQq
KTsKKyAgICBleHBsaWNpdCBSZW5kZXJGcmFtZUJhc2UoRWxlbWVudCopOwogCiBwdWJsaWM6CiAg
ICAgdm9pZCBsYXlvdXRXaXRoRmxhdHRlbmluZyhib29sIGZpeGVkV2lkdGgsIGJvb2wgZml4ZWRI
ZWlnaHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCmluZGV4IDQ3M2RhZDVkYTIw
ZWE1YzAxNWNlYmIzMTYzMjJkMmJmOTFmNWQyNjguLjIyMzBiMzkzNTRiZTY1MjI1YTMyNDBlNzE5
MTRlYTlmMjgyM2U4MWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxD
YW52YXMuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgKQEAgLTM0
LDcgKzM0LDcgQEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckhUTUxD
YW52YXMgOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgewogcHVibGljOgotICAgIFJlbmRlckhUTUxD
YW52YXMoSFRNTENhbnZhc0VsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJIVE1MQ2FudmFz
KEhUTUxDYW52YXNFbGVtZW50Kik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDYW52YXMoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKaW5kZXggMzI1ZTJiM2Q5Zjc2OGQxZjIyM2EzOTA4
YTcyZWQ4NjAyNTQ0YTMyMi4uMGJiMzE4MjllMWUxNmMxNTIxMGUwYmY4NDc0ZmIwNDY0ZDVkZjg2
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJJRnJhbWUgOiBwdWJsaWMgUmVuZGVyRnJhbWVCYXNl
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJJRnJhbWUoRWxlbWVudCopOworICAgIGV4cGxpY2l0IFJl
bmRlcklGcmFtZShFbGVtZW50Kik7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAgICAgYm9vbCByZXF1aXJlc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmgKaW5kZXggZmViOGI4ZmM1ZTQxZWYwNTBlNzgwMDNhOWE2MGQ1ZGRm
ZjA2YmIxZi4uMzRiMjlkNzdmYmJjNmUxYTRkZjI1ZDQ4ZjdiMmY5NDEyYmM0MzM0NiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgUG9zaXRpb247CiAK
IGNsYXNzIFJlbmRlcklubGluZSA6IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVjdCB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVySW5saW5lKE5vZGUqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJJbmxpbmUo
Tm9kZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RJdGVtLmgKaW5kZXggZjdiZDY2MTA2MTdlZjdjMDk5Y2FmYTAxMjI0NDQ0NTBmZjBlY2Nj
NC4uMmZjYjZjNDAyNWVmN2Q0ZTU0ZWY1YjM1NzI4NzViOTc3YTkwMzkwMCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIFJlbmRlckxpc3RNYXJr
ZXI7CiAKIGNsYXNzIFJlbmRlckxpc3RJdGVtIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJMaXN0SXRlbShOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyTGlzdEl0
ZW0oTm9kZSopOwogCiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyBpZiAoIW1faXNWYWx1ZVVwVG9E
YXRlKSB1cGRhdGVWYWx1ZU5vdygpOyByZXR1cm4gbV92YWx1ZTsgfQogICAgIHZvaWQgdXBkYXRl
VmFsdWUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKaW5kZXggNDNlYjUxNDYxMThm
MjQ4MjMyMzVjY2M5MGExNThiMTU5OGIyYjdlOC4uOTAzODNkODI5NDNhMTJhYzg2ZjY4OWQ4NjIx
MjBhMzEzY2Y3M2RkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVl
ZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKQEAgLTY2LDYg
KzY2LDEwIEBAIFJlbmRlck1hcnF1ZWU6OlJlbmRlck1hcnF1ZWUoUmVuZGVyTGF5ZXIqIGwpCiB7
CiB9CiAKK1JlbmRlck1hcnF1ZWU6On5SZW5kZXJNYXJxdWVlKCkKK3sKK30KKwogaW50IFJlbmRl
ck1hcnF1ZWU6Om1hcnF1ZWVTcGVlZCgpIGNvbnN0CiB7CiAgICAgaW50IHJlc3VsdCA9IG1fbGF5
ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPm1hcnF1ZWVTcGVlZCgpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWFycXVlZS5oCmluZGV4IDE2NTE0NTRkZjUxYWMyZWVmNDVlNTI5OTUzZTJiODI2ZjZhM2YyNzAu
Ljc5OTk4ZWQwNzllNWM5MWEwNTI3MTQyMTc2YTY4Nzk1NzRjYzFiZTQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNYXJxdWVlLmgKQEAgLTU1LDcgKzU1LDggQEAgY2xhc3MgUmVuZGVyTGF5ZXI7CiAvLyBU
aGlzIGNsYXNzIGhhbmRsZXMgdGhlIGF1dG8tc2Nyb2xsaW5nIG9mIGxheWVycyB3aXRoIG92ZXJm
bG93OiBtYXJxdWVlLgogY2xhc3MgUmVuZGVyTWFycXVlZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyTWFycXVlZShSZW5kZXJMYXllciopOworICAgIGV4cGxpY2l0
IFJlbmRlck1hcnF1ZWUoUmVuZGVyTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJNYXJxdWVl
KCk7CiAKICAgICBpbnQgc3BlZWQoKSBjb25zdCB7IHJldHVybiBtX3NwZWVkOyB9CiAgICAgaW50
IG1hcnF1ZWVTcGVlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUGF0aC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAppbmRleCBjYmUx
OTAwY2RmOGE5ZWI3ZWE1MWRlNjU4Y2Y5NGM0OGE0NWU5MmJiLi4yZTVhOTQzNTI0YzM4ZTViZGZl
OWIxZDQ4MDFjN2QyMGJjYmY3NmFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJQYXRoLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcApAQCAtNzMs
NiArNzMsMTAgQEAgUmVuZGVyUGF0aDo6UmVuZGVyUGF0aChTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudCogbm9kZSkKIHsKIH0KIAorUmVuZGVyUGF0aDo6flJlbmRlclBhdGgoKQoreworfQor
CiBib29sIFJlbmRlclBhdGg6OmZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
Ym9vbCByZXF1aXJlc0ZpbGwsIFdpbmRSdWxlIGZpbGxSdWxlKQogewogICAgIGlmICghbV9maWxs
Qm91bmRpbmdCb3guY29udGFpbnMocG9pbnQpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUGF0aC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5oCmluZGV4IDFk
MzVhMDFjYzVhN2M0NDU4ZTRhNTM1ZWU2ZDYwNjY0OTJmZjA3ZWUuLjU3OWIzYzQxOGI2MTYxMzgz
ODE3OTQyYTAzNWZlNGUxMjYyMjVlYjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclBhdGguaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmgKQEAgLTM4LDcg
KzM4LDggQEAgY2xhc3MgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ7CiAKIGNsYXNzIFJl
bmRlclBhdGggOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVibGljOgotICAgIFJl
bmRlclBhdGgoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBS
ZW5kZXJQYXRoKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kik7CisgICAgdmlydHVhbCB+
UmVuZGVyUGF0aCgpOwogCiAgICAgY29uc3QgUGF0aCYgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0aDsgfQogICAgIHZvaWQgc2V0TmVlZHNQYXRoVXBkYXRlKCkgeyBtX25lZWRzUGF0aFVwZGF0
ZSA9IHRydWU7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Jsb2Nr
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdCbG9jay5oCmluZGV4IGMxMzc5ZGE3YTM1
YjY5ZDQ5YzEyMTZlZDZhZTE0MzlhNWUwOGRlM2UuLmE5ZGQ1ZGI1N2NiY2VhN2Q2ZDNmNmE0YTE2
MjE5YWVmZTU1MDk0MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Js
b2NrLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtMzEsNyAr
MzEsNyBAQCBjbGFzcyBTVkdFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJTVkdCbG9jayA6IHB1Ymxp
YyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHQmxvY2soU1ZHRWxlbWVudCop
OworICAgIGV4cGxpY2l0IFJlbmRlclNWR0Jsb2NrKFNWR0VsZW1lbnQqKTsKIAogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXggYjU5NzRjYTk0NDM5YzRk
Yjc1M2Q3YzUzZjgzODcxYmI3YmYwMmZhYS4uMDc2MTU2MjY3MGRlYjhkYjMzMTJhNzBhYzk1OWQ4
Nzk3Yjc5ZTkwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBA
IC00Myw2ICs0MywxMCBAQCBSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihT
VkdTdHlsZWRFbGVtZW50KiBub2RlKQogewogfQogCitSZW5kZXJTVkdDb250YWluZXI6On5SZW5k
ZXJTVkdDb250YWluZXIoKQoreworfQorCiB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0
KCkKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R0NvbnRhaW5lci5oCmluZGV4IGIwYzk1MmY0YTJkZGY2Y2RhNDlmZTZhYTVhOTM4ZTJmOGFhNjY0
NGIuLjViZGJmMzJiMjBjNTk1YWI0Zjg0MTVhZTNiM2ZkNmNjNWYxOTczZTkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5oCkBAIC0zMyw3ICszMyw4IEBAIGNsYXNzIFNWR0Vs
ZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR0NvbnRhaW5lciA6IHB1YmxpYyBSZW5kZXJTVkdNb2Rl
bE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHQ29udGFpbmVyKFNWR1N0eWxlZEVsZW1l
bnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJTVkdDb250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCop
OworICAgIHZpcnR1YWwgflJlbmRlclNWR0NvbnRhaW5lcigpOwogCiAgICAgY29uc3QgUmVuZGVy
T2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9
CiAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0dXJuICZtX2NoaWxk
cmVuOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdIaWRkZW5Db250
YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCmlu
ZGV4IDk3ODAwZDQ2YzYzNTRmYmY0YTVkZDVmNmQ5YjMxZmU2NTRkMWRjODQuLmM1OTFhODgxNGQ1
NWY1NmYzZmZlZDMwZWQ4NmY2OWVkMDViNTVhM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAvLyA8ZGVmcz4sIDxsaW5lYXJHcmFkaWVudD4sIDxyYWRpYWxHcmFkaWVudD4g
YXJlIGFsbCBnb29kIGV4YW1wbGVzCiAgICAgY2xhc3MgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
IDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiAgICAgcHVibGljOgotICAgICAgICBSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCopOworICAgICAgICBleHBsaWNp
dCBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCopOwogCiAgICAgICAg
IHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJT
VkdIaWRkZW5Db250YWluZXIiOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR01vZGVsT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9i
amVjdC5oCmluZGV4IDlkZTIxN2M1NGJkZjAzN2ZmZjJlYWQyMzM2NmQ2ZWEyNDgwMWRlNTAuLmZi
OGY4OWYxYjNkOWJiMGQwZGExMGIwNDNkZjI5NDhmOWY0MmYwYzIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTVkdTdHls
ZWRFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJTVkdNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5kZXJP
YmplY3QgewogcHVibGljOgotICAgIFJlbmRlclNWR01vZGVsT2JqZWN0KFNWR1N0eWxlZEVsZW1l
bnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdTdHlsZWRFbGVtZW50
Kik7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZS5oCmluZGV4IDRiMjM3Mzc3NDkwNmY3MWUzZjgxNjRkMDJjNDRlMjJlMTEw
YmQ4ZDEuLmIwNTQyMDM3ZTE3MTIzN2M4ZTdkMTljZjhhMWYwOTZlZmIwNzUzYTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUu
aApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIDogcHVibGljIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5l
ciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KTsK
KyAgICBleHBsaWNpdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQpOwogCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0
dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSI7IH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHUm9vdC5jcHAKaW5kZXggMzFiNjJjZjI3ZjZiNWJlMDk4YTk2Y2RkOTkwYzRmZTY4YTgz
ZDk5My4uYTcxNDU0Y2FlMWI1MjM3MWI0NWE4OTI4ODA5NzczNGZhNTM2MTkwNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTUzLDYgKzUzLDEwIEBAIFJlbmRlclNWR1Jvb3Q6
OlJlbmRlclNWR1Jvb3QoU1ZHU3R5bGVkRWxlbWVudCogbm9kZSkKICAgICBzZXRSZXBsYWNlZCh0
cnVlKTsKIH0KIAorUmVuZGVyU1ZHUm9vdDo6flJlbmRlclNWR1Jvb3QoKQoreworfQorCiBpbnQg
UmVuZGVyU1ZHUm9vdDo6bGluZUhlaWdodChib29sLCBib29sKSBjb25zdAogewogICAgIHJldHVy
biBoZWlnaHQoKSArIG1hcmdpblRvcCgpICsgbWFyZ2luQm90dG9tKCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdSb290LmgKaW5kZXggOTk2NDM5MzIxZWFhMzQ0OTc4NDBiMWE3NzA0YWM5YTNiZmNiOTRm
MC4uMGY3MjNiZTdjYmMyYzJjOGNkZmY4YmFiNjg0Y2VkYmZjNzM0MjY3NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jvb3QuaApAQCAtMzUsNyArMzUsOCBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07
CiAKIGNsYXNzIFJlbmRlclNWR1Jvb3QgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJTVkdSb290KFNWR1N0eWxlZEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJT
VkdSb290KFNWR1N0eWxlZEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSb290KCk7
CiAKICAgICBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gJm1fY2hpbGRyZW47IH0KICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVu
KCkgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaAppbmRleCBiNjNiOTFjNWU5Y2U5NWM5NDEy
ZjM4Y2ZmNGM1ZDMxNWFlNTIzOTQ2Li5iNDlhNDAzMDJiYzc2ZmYxZDliNGI0M2E2ODFjMWU5Yjhi
N2I5NTMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDsKICAgICBjbGFzcyBSZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiAg
ICAgcHVibGljOgotICAgICAgICBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kik7CisgICAgICAgIGV4cGxpY2l0IFJlbmRlclNWR1Ry
YW5zZm9ybWFibGVDb250YWluZXIoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqKTsKIAog
ICAgICAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KICAgICAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRl
ID0gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyLmgKaW5kZXggN2I1NzAyYjk4ZWI1NTc3MzhmMDRlNzM2YzRiZDA0NGZjNzRlMjBkMC4uNjNj
MzM2Y2U4MmFiOTRmYjBmMDVmMTNkMWIwNzY5NjIxMzQwYWU0ZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIHRodXMgd2UgaW5oZXJpdCBmcm9tIFJlbmRlclNWR0NvbnRh
aW5lciBpbnN0ZWFkIG9mIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIKIGNsYXNzIFJl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCop
OworICAgIGV4cGxpY2l0IFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFNWR1N0eWxlZEVsZW1l
bnQqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdDb250YWluZXIoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggZjc0Nzdj
NDEwZjE0NWVkZWI2NzgxZTc0YzU3MWMzZTI0YjQ4NjllZS4uMzYzZmQ0NGY3OTM0ZDk2Y2NlZmRi
OTFlNzE4MTMxY2E0Y2ZiZjc1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtNjUs
NiArNjUsMTAgQEAgUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKE5vZGUqIG5vZGUpCiAgICAgCiB9
CiAKK1JlbmRlclRhYmxlOjp+UmVuZGVyVGFibGUoKQoreworfQorCiB2b2lkIFJlbmRlclRhYmxl
OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlKQogewogICAgIFJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRT
dHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAppbmRleCBhZmVhNDAyM2YxZDhmYWM5YWEzZmVj
NzcxMjhiNTk5M2M5Y2ZlMTE5Li4xZDQxNDA2ZGI3MTgwMmFhZDFlMWU1MWY3NTZmZWE0YTk3ZDg1
MzM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTM4LDcgKzM4LDggQEAgY2xhc3MgVGFi
bGVMYXlvdXQ7CiAKIGNsYXNzIFJlbmRlclRhYmxlIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJUYWJsZShOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyVGFibGUo
Tm9kZSopOworICAgIHZpcnR1YWwgflJlbmRlclRhYmxlKCk7CiAKICAgICBpbnQgZ2V0Q29sdW1u
UG9zKGludCBjb2wpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uUG9zW2NvbF07IH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCA3OTM3NmU5YzBhNTU3NjE3ZTRiNzM1MWY5NjZk
NWQyMGE2MGY2NmJkLi5kODAzZjA1YWY2YzEzNDIxZTE5OWVmYzVlZjRiMGFhZDQ1YzJmNWYwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ2VsbCA6IHB1YmxpYyBSZW5kZXJCbG9j
ayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVDZWxsKE5vZGUqKTsKKyAgICBleHBsaWNpdCBS
ZW5kZXJUYWJsZUNlbGwoTm9kZSopOwogCiAgICAgLy8gRklYTUU6IG5lZWQgdG8gaW1wbGVtZW50
IGNlbGxJbmRleAogICAgIGludCBjZWxsSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDb2wuaAppbmRleCBjNWY5YWZjMmFhOGQ1NTJlYjYzMjcxNDUwNzQ2
OGQ4YzI1NWJkYzE5Li41ZmI0MTI4ZjZjYjMyMjI0NjYxNmRiNTQwN2JiNzczOTZmZmE0ODE2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVu
ZGVyVGFibGU7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ29sIDogcHVibGljIFJlbmRlckJveCB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyVGFibGVDb2woTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlclRh
YmxlQ29sKE5vZGUqKTsKIAogICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRy
ZW4oKSBjb25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogICAgIFJlbmRlck9iamVjdENoaWxk
TGlzdCogY2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmgKaW5kZXggNTg4MjUyYmM4NGIyMWZkODVmM2IxN2Q3MDU4ZDk0MTg2ODBhYmYz
Ni4uMzA1OTA2MDgzMGYzOGE1OWNmZTcyMjc4ZjI5MzRjMjMzNWNlMDVkMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVuZGVyVGFibGVSb3cgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJUYWJsZVJvdyhOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyVGFibGVSb3coTm9k
ZSopOwogCiAgICAgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0
IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGls
ZHJlbigpIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dEZyYWdtZW50LmNwcAppbmRleCBiMTQzMDhkZDU1ZjVhNDIyZDljZjQzNDBkMjdhM2E3MTdkYjJh
MWU3Li43MDVjMDk1NzUyMDIxM2U4NDRiNWE0MjBmODc5ZmUwZDBmYTE5M2Q5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKQEAgLTQ0LDYgKzQ0LDEwIEBAIFJlbmRl
clRleHRGcmFnbWVudDo6UmVuZGVyVGV4dEZyYWdtZW50KE5vZGUqIG5vZGUsIFN0cmluZ0ltcGwq
IHN0cikKIHsKIH0KIAorUmVuZGVyVGV4dEZyYWdtZW50Ojp+UmVuZGVyVGV4dEZyYWdtZW50KCkK
K3sKK30KKwogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBSZW5kZXJUZXh0RnJhZ21lbnQ6Om9yaWdp
bmFsVGV4dCgpIGNvbnN0CiB7CiAgICAgTm9kZSogZSA9IG5vZGUoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dEZyYWdtZW50LmgKaW5kZXggZTAyMzA0MmI1NDJiMTM5MWM2YTRhZWM3OWQwMGQx
Y2VkOTk0MTlhYi4uYWJiM2ZhNDQxOGEyODNjZDRkYmVmNGJkZjI3ZGEzOTgzZWQ4ZTBiNCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xh
c3MgUmVuZGVyVGV4dEZyYWdtZW50IDogcHVibGljIFJlbmRlclRleHQgewogcHVibGljOgogICAg
IFJlbmRlclRleHRGcmFnbWVudChOb2RlKiwgU3RyaW5nSW1wbCosIGludCBzdGFydE9mZnNldCwg
aW50IGxlbmd0aCk7CiAgICAgUmVuZGVyVGV4dEZyYWdtZW50KE5vZGUqLCBTdHJpbmdJbXBsKik7
CisgICAgdmlydHVhbCB+UmVuZGVyVGV4dEZyYWdtZW50KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNUZXh0RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldvcmRCcmVhay5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV29yZEJyZWFrLmgKaW5kZXggYWNkODE3OWUzNzE1Y2IxYzc1ODA1NjEwZDJhOTI5YWY3MDE1
YmU2My4uZGIzMWVlYzE2ZWZmMjU3NjgyNzIxZTlkNzI0NTZkNGM3OWU2ZmE5MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV29yZEJyZWFrLmgKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV29yZEJyZWFrLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSFRNTEVsZW1l
bnQ7CiAKIGNsYXNzIFJlbmRlcldvcmRCcmVhayA6IHB1YmxpYyBSZW5kZXJUZXh0IHsKIHB1Ymxp
YzoKLSAgICBSZW5kZXJXb3JkQnJlYWsoSFRNTEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5k
ZXJXb3JkQnJlYWsoSFRNTEVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1dvcmRCcmVhaygpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCmluZGV4IDkyYjZmZTdkMjc1NmEx
YmIwNzkzYWNjOTA5NjUyNjMzMjFlNzIxOGIuLmQ3YjdlNjY5YzgzYTIwYzZmMTczZGJmNjU1Yzlh
ZjMwM2EyNGI1MDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdJbmxp
bmUgOiBwdWJsaWMgUmVuZGVySW5saW5lIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdJbmxpbmUo
Tm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlclNWR0lubGluZShOb2RlKik7CiAKICAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHSW5s
aW5lIjsgfQogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bh
bi5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKaW5kZXggOTMxYmQ4
YzQzMmM2YTE3MzI4NTk3NjY2ZWQ2NTczZGM2ZTZmOTIxMC4uOTdlMGViMDA0ZmNiZjBiODVlMzA3
OGI4MGE2MTcyMzgyYmEyZmQ3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RTcGFuLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFu
LmgKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlclNW
R1RTcGFuIDogcHVibGljIFJlbmRlclNWR0lubGluZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZH
VFNwYW4oTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlclNWR1RTcGFuKE5vZGUqKTsKICAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZH
VFNwYW4iOyB9CiB9OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVu
dC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCBmNTU0ODQ2MTJm
Mzc2MjUxM2RmZDYyYzZhNmQxY2I5MDhlOTY3ZTNlLi5kNGZhODljNjVkNWJkYmZjYzQxM2VkODk5
ODRkNTAyZmU2MjcxMTk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcApAQCAtNjAsNiArNjAs
MTAgQEAgU1ZHU3R5bGVkRWxlbWVudDo6U1ZHU3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KIHsKIH0KIAorU1ZHU3R5bGVkRWxlbWVudDo6
flNWR1N0eWxlZEVsZW1lbnQoKQoreworfQorCiBTdHJpbmcgU1ZHU3R5bGVkRWxlbWVudDo6dGl0
bGUoKSBjb25zdAogewogICAgIC8vIEFjY29yZGluZyB0byBzcGVjLCB3ZSBzaG91bGQgbm90IHJl
dHVybiB0aXRsZXMgd2hlbiBob3ZlcmluZyBvdmVyIDxzdmc+IGVsZW1lbnRzICh0aG9zZSAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZEVsZW1lbnQuaAppbmRleCAzNDgyYTRmNjg3YjRiYTc4MTRmMzQwMzE5MzY5NTM3Yzc5
MzU0NmM4Li41ZTk5NmIzMDRmZWQ4NWRmOGQwNGEyNmIzZDVkMjdjY2NhNTllNGQxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5oCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdTdHlsYWJsZSB7CiAgICAgcHVibGljOgorICAg
ICAgICB2aXJ0dWFsIH5TVkdTdHlsZWRFbGVtZW50KCk7CisKICAgICAgICAgdmlydHVhbCBTdHJp
bmcgdGl0bGUoKSBjb25zdDsKIAogICAgICAgICBib29sIGhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0IHsgcmV0dXJuICFtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3Rocy5pc0VtcHR5KCk7IH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNw
cCBiL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAppbmRleCBh
ZjEwZWQ3MTQ3MTdmMTI3Yjg0MzkyYzc5MDM5OTg4ZmM1OGFkMTk5Li5hY2ZhNGNlNmI0ZTg1MDZi
MTU0MDg2Y2JmYzM4MTExNzE2MzIxY2U2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQuY3BwCkBAIC0zOCw2ICszOCwxMCBAQCBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZQogewogfQogCitTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6flNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50KCkKK3sKK30KKwogQWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRDVE0oU3R5bGVVcGRhdGVTdHJhdGVneSBzdHlsZVVw
ZGF0ZVN0cmF0ZWd5KSBjb25zdAogewogICAgIHJldHVybiBTVkdMb2NhdGFibGU6OmNvbXB1dGVD
VE0odGhpcywgU1ZHTG9jYXRhYmxlOjpOZWFyZXN0Vmlld3BvcnRTY29wZSwgc3R5bGVVcGRhdGVT
dHJhdGVneSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudC5oIGIvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaApp
bmRleCA3NjY4ODg5NGE1YWNmODk4MTUxMjBmMmFhZGE2ZGJkYmU1ZjZjNTdmLi4yOTBmN2Y4NjNm
YjAxODkwZmJkZjc2MWM4ODFlZmVhM2Y0Y2NiMzVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9T
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50LmgKQEAgLTMzLDYgKzMzLDggQEAgY2xhc3MgQWZmaW5lVHJh
bnNmb3JtOwogY2xhc3MgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQgOiBwdWJsaWMgU1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR1RyYW5zZm9ybWFibGUgewogcHVibGljOgorICAgIHZpcnR1YWwgflNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KCk7CisKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5z
Zm9ybSBnZXRDVE0oU3R5bGVVcGRhdGVTdHJhdGVneSA9IEFsbG93U3R5bGVVcGRhdGUpIGNvbnN0
OwogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTShTdHlsZVVwZGF0ZVN0
cmF0ZWd5ID0gQWxsb3dTdHlsZVVwZGF0ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBTVkdFbGVtZW50
KiBuZWFyZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3ht
bC9YUGF0aFBhcnNlci5jcHAgYi9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKaW5kZXggMjBl
NzU5MGU1ZWEyOWNmNmQ5M2E5MzFlODUzM2E1NmVlNmIzYTI1Ni4uYzI0MmE1Y2QxNDk4YTQxODk0
ZjkxYzQ0NGY2ZDBlYzI5YzY2YzVlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWFBhdGhQYXJz
ZXIuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcApAQCAtNDEwLDYgKzQxMCwx
MCBAQCBQYXJzZXI6OlBhcnNlcigpCiAgICAgcmVzZXQoU3RyaW5nKCkpOwogfQogCitQYXJzZXI6
On5QYXJzZXIoKQoreworfQorCiB2b2lkIFBhcnNlcjo6cmVzZXQoY29uc3QgU3RyaW5nJiBkYXRh
KQogewogICAgIG1fbmV4dFBvcyA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YUGF0aFBh
cnNlci5oIGIvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuaAppbmRleCBlNzc5NjAzMDhlODE4YWM0
MDhlY2UyMTY2YWY3OWFlMTQ2Y2Q2MWM0Li40NGE4ZTQ4OGRlM2ZhNjRiNDM1MjE2MmRhYzRjNTQz
YmMyYTM2MWE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5oCisrKyBiL1dl
YkNvcmUveG1sL1hQYXRoUGFyc2VyLmgKQEAgLTYxLDYgKzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBjbGFzcyBQYXJzZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgICAg
ICBwdWJsaWM6CiAgICAgICAgICAgICBQYXJzZXIoKTsKKyAgICAgICAgICAgIH5QYXJzZXIoKTsK
IAogICAgICAgICAgICAgWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb2x2ZXIuZ2V0KCk7IH0KICAgICAgICAgICAgIGJvb2wgZXhwYW5kUU5hbWUoY29uc3Qg
U3RyaW5nJiBxTmFtZSwgU3RyaW5nJiBsb2NhbE5hbWUsIFN0cmluZyYgbmFtZXNwYWNlVVJJKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70022</attachid>
            <date>2010-10-06 18:20:45 -0700</date>
            <delta_ts>2010-10-08 18:17:26 -0700</delta_ts>
            <desc>include WebCore.exp.in changes so this builds on mac</desc>
            <filename>bug-47230-20101006182044.patch</filename>
            <type>text/plain</type>
            <size>67140</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTc2NjQ0YWNhYjEzZjhhOTk0MmEyMjcxNmM3MmY3ODEwNTg5ZDZmYy4uMWU0ODA3ODk3N2U3NGQ0
ZjQ5N2Y4ZWY5ZWM4YTRmYzhmODBkYzVlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzIgQEAKKzIwMTAtMTAtMDUgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdm9pZCBpbmxpbmluZyBsYXJnZSBhbmQvb3Ig
dmlydHVhbCBmdW5jdGlvbnMgaW4gd2lkZWx5IGluY2x1ZGVkIGhlYWRlciBmaWxlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcyMzAKKworICAgICAg
ICBGdW5jdGlvbnMgd2l0aCB2ZXJ5IGxhcmdlIGJvZGllcyBzaG91bGQgbm90IGJlIGluY2x1ZGVk
IGluIHdpZGVseSBpbmNsdWRlZCBoZWFkZXIgZmlsZXMuCisgICAgICAgIFRoaXMgcmVzdWx0cyBp
biB0aGUgZnVuY3Rpb24ncyBjb2RlIGVuZGluZyB1cCBpbmNsdWRlZCBpbiBodW5kcmVkcyBvZiBv
YmplY3QgZmlsZXMgdGhhdAorICAgICAgICB0aGUgbGlua2VyIGhhcyB0byBkaXNjYXJkLCBhdCBh
IGNvc3Qgb2YgbGlua2VyIG1lbW9yeSB1c2UsIGxpbmsgdGltZSwgYW5kIGRpc2sgc3BhY2UuIFRo
aXMKKyAgICAgICAgaXMgYSBwYXJ0aWN1bGFyIHByb2JsZW0gaW4gdGhlIENocm9taXVtIHdpbmRv
d3MgYnVpbGQgd2hlcmUgTVNWQyBvZnRlbiBleGhhdXN0cyBpdHMgMzItYml0CisgICAgICAgIHZp
cnR1YWwgYWRkcmVzcyBzcGFjZSBhbmQgY29tcGxldGVseSBmYWlscyB0byBsaW5rLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbW92ZXMgZnVuY3Rpb24gZGVmaW5pdGlvbnMgZnJvbSB0aGUgLmggdG8g
dGhlIGNvcnJlc3BvbmRpbmcgLmNwcCB3aGVuIHRoZSBmdW5jdGlvbgorICAgICAgICBpcyBsYXJn
ZSBhbmQgbm90IGEgY2FuZGlkYXRlIGZvciBpbmxpbmluZyBlaXRoZXIgYmVjYXVzZSBpdCBpcyB2
aXJ0dWFsIG9yIGJlY2F1c2UgaXRzIHNpemUgaXMKKyAgICAgICAgYWJvdmUgYW55IHJlYXNvbmFi
bGUgY29tcGlsZXIncyB0aHJlc2hob2xkIGZvciBpbmxpbmluZy4gIFRoZSBtb3N0IGNvbW1vbiBj
YXNlIGJ5IGZhciBpbiB0aGlzCisgICAgICAgIHBhdGNoIGlzIGNoYW5naW5nIGEgY2xhc3MnIGlt
cGxpY2l0bHkgZGVmaW5lZCBkZXN0cnVjdG9yIHRvIGFuIGV4cGxpY2l0bHkgZGVjbGFyZWQgZCd0
b3IgaW4KKyAgICAgICAgdGhlIGhlYWRlciBhbmQgYW4gZXhwbGljaXRseSBkZWZpbmVkIGQndG9y
IGluIHRoZSAuY3BwLiAgVGhpcyBpcyBpbXBvcnRhbnQgc2luY2UgbWFueSBvZiBvdXIKKyAgICAg
ICAgY29udGFpbmVyIGFuZCB1dGlsaXR5IGNsYXNzZXMgKGVzcGVjaWFsbHkgVmVjdG9yLCBTdHJp
bmcsIGFuZCBIYXNoU2V0KSBoYXZlIHF1aXRlIGxhcmdlCisgICAgICAgIGRlc3RydWN0b3JzLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyAyMi40TUIgb2Ygb2JqZWN0IGZpbGUgc2l6ZSBp
biBhIGRlYnVnIDY0IGJpdCBjb21waWxlLgorCisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQm9yZGVySW1hZ2VWYWx1ZTo6fkNTU0Jv
cmRlckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTcmNWYWx1ZTo6fkNTU0ZvbnRGYWNlU3JjVmFsdWUpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZVNyY1ZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUu
aDoKKyAgICAgICAgKiBkb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6On5CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dCk6CisgICAgICAgICogZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50Lmg6CisgICAgICAgICog
ZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJlZm9yZVVubG9h
ZEV2ZW50Ojp+QmVmb3JlVW5sb2FkRXZlbnQpOgorICAgICAgICAqIGRvbS9CZWZvcmVVbmxvYWRF
dmVudC5oOgorICAgICAgICAqIGRvbS9DbGFzc05vZGVMaXN0Lmg6CisgICAgICAgICogZG9tL0Ns
aXBib2FyZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEV2ZW50Ojp+Q2xp
cGJvYXJkRXZlbnQpOgorICAgICAgICAqIGRvbS9DbGlwYm9hcmRFdmVudC5oOgorICAgICAgICAq
IGRvbS9DdXN0b21FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FdmVudDo6fkN1
c3RvbUV2ZW50KToKKyAgICAgICAgKiBkb20vQ3VzdG9tRXZlbnQuaDoKKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZl
bnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXREYXRhOjpFdmVudFRh
cmdldERhdGEpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIGRvbS9J
bnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50RGF0YTo6fklu
cHV0RWxlbWVudERhdGEpOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoKKyAgICAgICAg
KiBkb20vTXV0YXRpb25FdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbkV2ZW50
Ojp+TXV0YXRpb25FdmVudCk6CisgICAgICAgICogZG9tL011dGF0aW9uRXZlbnQuaDoKKyAgICAg
ICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWZFdmVudFRhcmdl
dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAg
KiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9PcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok9wdGlvbkVsZW1lbnREYXRhOjp+T3B0aW9uRWxlbWVudERhdGEpOgorICAgICAg
ICAqIGRvbS9PcHRpb25FbGVtZW50Lmg6CisgICAgICAgICogZG9tL1BvcFN0YXRlRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UG9wU3RhdGVFdmVudDo6flBvcFN0YXRlRXZlbnQpOgorICAg
ICAgICAqIGRvbS9Qb3BTdGF0ZUV2ZW50Lmg6CisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6flF1YWxpZmllZE5hbWUpOgor
ICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgICogZG9tL1NlbGVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudERhdGE6On5TZWxlY3RFbGVt
ZW50RGF0YSk6CisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20v
U3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY0hhc2hT
ZXROb2RlTGlzdDo6U3RhdGljSGFzaFNldE5vZGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
YXRpY0hhc2hTZXROb2RlTGlzdDo6flN0YXRpY0hhc2hTZXROb2RlTGlzdCk6CisgICAgICAgICog
ZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oOgorICAgICAgICAqIGRvbS9TdHlsZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVFbGVtZW50Ojp+U3R5bGVFbGVtZW50KToKKyAg
ICAgICAgKiBkb20vU3R5bGVFbGVtZW50Lmg6CisgICAgICAgICogZG9tL1RvdWNoRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudDo6VG91Y2hFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCk6CisgICAgICAgICogZG9tL1RvdWNoRXZl
bnQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjp+Q29tcG9zaXRlRWRpdENvbW1hbmQp
OgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRTdGFjazo6fkJp
dFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6flRleHRJdGVyYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JkQXdhcmVJdGVyYXRvcjo6fldvcmRBd2FyZUl0ZXJhdG9y
KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0
Ojp+SW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck9iamVjdDo6
SW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFycmF5Ojp+SW5z
cGVjdG9yQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXk6Okluc3BlY3Rv
ckFycmF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6CisgICAgICAg
ICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpyZWdpc3RlckhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6dW5yZWdpc3RlckhhbmRsZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OkhUVFBIZWFkZXJNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6SFRUUEhlYWRlck1hcDo6fkhUVFBIZWFkZXJNYXApOgorICAgICAgICAoV2ViQ29yZTo6SFRU
UEhlYWRlck1hcDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmFkZCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckFwcGxldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBcHBs
ZXQ6On5SZW5kZXJBcHBsZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBcHBsZXQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJ1dHRvbjo6flJlbmRlckJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJ1dHRvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckNvdW50ZXI6On5SZW5kZXJDb3VudGVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVs
ZHNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6On5SZW5kZXJGb3JlaWduT2JqZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGcmFtZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFt
ZUJhc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWFycXVlZTo6flJlbmRlck1hcnF1ZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNYXJx
dWVlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyUGF0aDo6flJlbmRlclBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJQYXRoLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0Jsb2NrLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdDb250YWluZXI6On5SZW5kZXJTVkdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZH
SGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6On5SZW5kZXJTVkdJbmxpbmVUZXh0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
VkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6On5SZW5kZXJTVkdS
b290KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdUU3Bhbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdU
ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1RleHRQYXRoLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6On5S
ZW5kZXJUYWJsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZUNvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dEZyYWdtZW50Ojp+UmVuZGVyVGV4dEZyYWdtZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cldvcmRCcmVhay5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6flNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiB4bWwvWFBh
dGhQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlBhcnNlcjo6flBhcnNlcik6
CisgICAgICAgICogeG1sL1hQYXRoUGFyc2VyLmg6CisKIDIwMTAtMTAtMDYgIFBldGVyIEthc3Rp
bmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJv
Ymluc29uCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCA2NWQyYWU5NDQ0YWYxZjkxMTRmNGU4NTEzOGNiYWZkN2NkZTMzMGY3
Li44ZmM1YTY1MjE3YmEzYTMyZjYwZTE5NTk3OGMxMzEzOWQyMGU5ZmQ5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE3
NCw2ICsxNzQsOCBAQCBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyNGxvYWRFUktOU18xNVJlc291
cmNlUmVxdWVzdEViCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyNnJlbG9hZEViCiBfX1pON1dl
YkNvcmUxMUdlb2xvY2F0aW9uMTJzZXRJc0FsbG93ZWRFYgogX19aTjdXZWJDb3JlMTFHZW9sb2Nh
dGlvbkQxRXYKK19fWk43V2ViQ29yZTEzSFRUUEhlYWRlck1hcEMxRXYKK19fWk43V2ViQ29yZTEz
SFRUUEhlYWRlck1hcEQxRXYKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMHRhcmdldEl0ZW1F
dgogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTExc2V0UmVmZXJyZXJFUktOM1dURjZTdHJpbmdF
CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTJhZGRDaGlsZEl0ZW1FTjNXVEYxMFBhc3NSZWZQ
dHJJUzBfRUUKQEAgLTI2Nyw2ICsyNjksNyBAQCBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjI0
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTJT
aGFyZWRCdWZmZXJDMUVQS2NpCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKIF9fWk43
V2ViQ29yZTEyVGV4dEVuY29kaW5nQzFFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxMlRl
eHRJdGVyYXRvckQxRXYKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMTFyYW5nZUxlbmd0aEVQ
S05TXzVSYW5nZUViCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI2cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGhFUE5TXzdFbGVtZW50RWlpYgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3I3
YWR2YW5jZUV2CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmNw
cCBiL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuY3BwCmluZGV4IDMyNjBhZjQ2MmIw
YWJjYTI2MDllNTk3NDE1ZTVlNmI4ZTRiNDk2MWIuLjhkNDcyMWE1ZmFiYzVjZDNkYTU4MDZhZWZl
ZThlYWM2YjRjZmQ5MmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFs
dWUuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuY3BwCkBAIC0zNCw2
ICszNCwxMCBAQCBDU1NCb3JkZXJJbWFnZVZhbHVlOjpDU1NCb3JkZXJJbWFnZVZhbHVlKFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGltYWdlLCBQYXNzUmVmUHRyPAogewogfQogCitDU1NCb3JkZXJJbWFn
ZVZhbHVlOjp+Q1NTQm9yZGVySW1hZ2VWYWx1ZSgpCit7Cit9CisKIFN0cmluZyBDU1NCb3JkZXJJ
bWFnZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICAvLyBJbWFnZSBmaXJzdC4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaCBiL1dlYkNvcmUvY3NzL0NT
U0JvcmRlckltYWdlVmFsdWUuaAppbmRleCAyMzgzMmI4Y2I2MWEzNDEwMGQwN2Q1YzBjYzIzYThk
ZWFlZDMyOTIwLi5hMTdkZjdkZjIwMGY0MmVlYmQxNGM2NDY4NDI1YzY0YzJkYTM0M2ZlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmgKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oCkBAIC0zNSw2ICszNSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTQm9yZGVySW1hZ2VWYWx1ZShpbWFnZSwg
c2xpY2VSZWN0LCBob3Jpem9udGFsUnVsZSwgdmVydGljYWxSdWxlKSk7CiAgICAgfQorICAgIHZp
cnR1YWwgfkNTU0JvcmRlckltYWdlVmFsdWUoKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1Rl
eHQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAppbmRleCA1YjIwNGQ3
NmJlOWFhYWE2NTkxN2Y5YTNjZmM5NWM5YjE0MzA4NTBlLi5kOTUxZTVkMzMwNGM2MzA3MDQzZTg2
NDI4MDMwZTk2ZWI1MGVjN2U2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcApAQCAt
MzEsNiArMzEsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDU1NGb250RmFjZVNyY1Zh
bHVlOjp+Q1NTRm9udEZhY2VTcmNWYWx1ZSgpCit7Cit9CisKICNpZiBFTkFCTEUoU1ZHX0ZPTlRT
KQogYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVlOjppc1NWR0ZvbnRGYWNlU3JjKCkgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaCBiL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCAyMmYxYmU3YmQ1OGVjNzJlZDc4NDcxMWU5
N2FmYzBjNmJlYmFhMzQ2Li41NzA2NTJkNzExNTFmZDI5YTQ3MmQ5MjllZGI1YWI2N2IxMjZkYjMz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NGb250RmFjZVNyY1ZhbHVlKHJlc291cmNl
LCB0cnVlKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+Q1NTRm9udEZhY2VTcmNWYWx1ZSgpIHsg
fQorICAgIHZpcnR1YWwgfkNTU0ZvbnRGYWNlU3JjVmFsdWUoKTsKIAogICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIGIvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1
ZS5oCmluZGV4IGU5NTQ1YTFhZDk5NDdmZjAzZDdlNDZiNTdkYzcwYzM5OGM1ZWM0ODMuLjFkNzNm
MzNlZGQzYmZjNTg2YTljZjU2MzIzM2JmZDIzYzM1ODBhNzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVl
LmgKQEAgLTQwLDE0ICs0MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ1NTRnVuY3Rpb25WYWx1ZShmdW5jdGlvbikpOwogICAgIH0KIAotICAgIH5DU1NGdW5jdGlv
blZhbHVlKCk7CisgICAgdmlydHVhbCB+Q1NTRnVuY3Rpb25WYWx1ZSgpOwogICAgIAogICAgIHZp
cnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgQ1NTUGFyc2VyVmFs
dWUgcGFyc2VyVmFsdWUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NGdW5jdGlvblZhbHVl
KENTU1BhcnNlckZ1bmN0aW9uKik7CisgICAgZXhwbGljaXQgQ1NTRnVuY3Rpb25WYWx1ZShDU1NQ
YXJzZXJGdW5jdGlvbiopOwogICAgIAogICAgIFN0cmluZyBtX25hbWU7CiAgICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbV9hcmdzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQmVmb3JlVGV4dElu
c2VydGVkRXZlbnQuY3BwIGIvV2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3Bw
CmluZGV4IGFmODZkNjY1MjQ3ZTdkODY5MjgwYWMyNzgyZTRjYjkzZjJlNTMzMDguLjQ3MmVlZmM4
NWEyNzJjZDgxNGQ2YzAxMDAwZmNmNjRiYTU3ZDRhODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0
SW5zZXJ0ZWRFdmVudC5jcHAKQEAgLTM1LDQgKzM1LDggQEAgQmVmb3JlVGV4dEluc2VydGVkRXZl
bnQ6OkJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKIH0KIAor
QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6On5CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpCit7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50Lmgg
Yi9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oCmluZGV4IGYyYTJhYzQxMjAz
YzI5ZTg5YmEyOGE0NzQ1OGU1NDUwYmQzY2Q4MDYuLmE2OTY2ZmY5NDM5MGJmZjI4MGIyYjY4Zjg0
YzI4NTI0ZWE1ZDE1ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRl
ZEV2ZW50LmgKKysrIGIvV2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaApAQCAt
MzIsNiArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJlZm9yZVRleHRJbnNl
cnRlZEV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5CZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudCgpOworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmVmb3JlVGV4dElu
c2VydGVkRXZlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KHRleHQpKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0Jl
Zm9yZVVubG9hZEV2ZW50LmNwcAppbmRleCA5N2Q3Zjk3NDkwZmUwZTY0NDExNzEzYzdhMTkzMjA3
OWEyNTUzNGJkLi4xOWFkY2FiMzBiZDVlN2FkMDg2MjRiOGU2NTcxMzU0YjU3Yzg0ZmQ3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVudC5jcHAKKysrIGIvV2ViQ29yZS9k
b20vQmVmb3JlVW5sb2FkRXZlbnQuY3BwCkBAIC0zMiw2ICszMiwxMCBAQCBCZWZvcmVVbmxvYWRF
dmVudDo6QmVmb3JlVW5sb2FkRXZlbnQoKQogewogfQogCitCZWZvcmVVbmxvYWRFdmVudDo6fkJl
Zm9yZVVubG9hZEV2ZW50KCkKK3sKK30KKwogYm9vbCBCZWZvcmVVbmxvYWRFdmVudDo6c3RvcmVz
UmVzdWx0QXNTdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vQmVmb3JlVW5sb2FkRXZlbnQuaCBiL1dlYkNvcmUvZG9tL0JlZm9yZVVubG9h
ZEV2ZW50LmgKaW5kZXggMjY0NDY5M2RiNGRkYTdhYjc3NzJmMzllZjczMDk5YTAzY2U1YmI0MS4u
MTM2ZTg1YzM1OTY0Y2NiYmQ4MjkxNjcwMjNhODAwNWY3YjYzNmJmYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vQmVmb3JlVW5sb2FkRXZlbnQuaAorKysgYi9XZWJDb3JlL2RvbS9CZWZvcmVVbmxv
YWRFdmVudC5oCkBAIC0zMCw2ICszMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNs
YXNzIEJlZm9yZVVubG9hZEV2ZW50IDogcHVibGljIEV2ZW50IHsKICAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgfkJlZm9yZVVubG9hZEV2ZW50KCk7CisKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QmVmb3JlVW5sb2FkRXZlbnQ+IGNyZWF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQmVmb3JlVW5sb2FkRXZlbnQpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vQ2xhc3NOb2RlTGlzdC5oIGIvV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5oCmlu
ZGV4IGVhMDQ4YTI4YWIyYmRmMDA3OGJjZTYyZGVkMTE4ZDliZDIyZDhmMjkuLjEzZDVkMjRkMTY2
MTRlZjNiMmY0NjExYzIxZTJkMzQ1ZjNiMDVhMjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0Ns
YXNzTm9kZUxpc3QuaAorKysgYi9XZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmgKQEAgLTMxLDYg
KzMxLDcgQEAKICNkZWZpbmUgQ2xhc3NOb2RlTGlzdF9oCiAKICNpbmNsdWRlICJEeW5hbWljTm9k
ZUxpc3QuaCIKKyNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DbGlwYm9h
cmRFdmVudC5jcHAgYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5jcHAKaW5kZXggM2M0Mjdl
MTI2MGJiMjFlNzE3MWMzNTU3YmQxYjkzYTllYWVjZjY5Yy4uYjY0NzAzZDdiM2Q3NTFhODA4NDQ3
MTRhODMxNTQ5ZjU2NGQxYTdjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2xpcGJvYXJkRXZl
bnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmNwcApAQCAtMzQsNiArMzQs
MTAgQEAgQ2xpcGJvYXJkRXZlbnQ6OkNsaXBib2FyZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm8KIHsKIH0KIAorQ2xpcGJvYXJkRXZlbnQ6On5D
bGlwYm9hcmRFdmVudCgpCit7Cit9CisKIGJvb2wgQ2xpcGJvYXJkRXZlbnQ6OmlzQ2xpcGJvYXJk
RXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkRXZlbnQuaCBiL1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmgKaW5kZXgg
YjliYzcwNWM3MzU0NjU2YjZjYzE1Yzk0NTM2YTdhZTY2N2E0MzQ2NS4uNDI3NDFlNjRkZjRmYjBh
NDczMWRjZTAzNjMyMDU5NGIwZDhjMjdkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ2xpcGJv
YXJkRXZlbnQuaAorKysgYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5oCkBAIC0zMSw2ICsz
MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENsaXBib2FyZEV2ZW50IDog
cHVibGljIEV2ZW50IHsKICAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaXBib2FyZEV2
ZW50KCk7CisKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkRXZlbnQ+IGNyZWF0
ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJk
RXZlbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuY3BwIGIvV2ViQ29y
ZS9kb20vQ3VzdG9tRXZlbnQuY3BwCmluZGV4IGMzNzcwNjNiN2FlNWZhNzE1ZDFhNThkNmZlOTY0
ZmE4MDMzNzRmMTEuLjUzZTI1NWQ5YjA1NWFlZjM4ZDNmMTllNDVkYjRjOTk2YTBlYzU1NjQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9D
dXN0b21FdmVudC5jcHAKQEAgLTM0LDYgKzM0LDEwIEBAIEN1c3RvbUV2ZW50OjpDdXN0b21FdmVu
dCgpCiB7CiB9CiAKK0N1c3RvbUV2ZW50Ojp+Q3VzdG9tRXZlbnQoKQoreworfQorCiB2b2lkIEN1
c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBTY3JpcHRWYWx1ZSBkZXRhaWwpCiB7CiAgICAg
aWYgKGRpc3BhdGNoZWQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50Lmgg
Yi9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCmluZGV4IDgzNzJhZjJhOTk2ZTQwNTA0ODI1Mzdi
MTIyNDRjNDBlNWIwNmRjMDIuLjY1YzNmMDQ2MGNkNjI5N2Q5M2JkOGZlNzc0NzZlMWM0YWZkNzY2
MDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmgKKysrIGIvV2ViQ29yZS9k
b20vQ3VzdG9tRXZlbnQuaApAQCAtMzQsNiArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEN1c3RvbUV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFs
IH5DdXN0b21FdmVudCgpOworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRXZlbnQ+IGNy
ZWF0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEN1c3RvbUV2ZW50KTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKaW5kZXggNjBhMTA2M2M0ZDI4ZDI4MmY2NzczNjY3M2M0M2NjZGU4ZTZhY2ZmNC4uNjdl
MGZkMGFjNWIzNWQxMmRkNTBhYTQ1NDlmYjNjOGY5ZDVhMmM4MSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTk0LDYg
Kzk0LDExIEBAIE5vZGVSYXJlRGF0YSogRWxlbWVudDo6Y3JlYXRlUmFyZURhdGEoKQogICAgIHJl
dHVybiBuZXcgRWxlbWVudFJhcmVEYXRhOwogfQogCitERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoRWxlbWVudCwgYmx1cik7CitERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoRWxlbWVudCwgZXJyb3IpOworREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKEVsZW1lbnQsIGZvY3VzKTsKK0RFRklORV9WSVJUVUFMX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihFbGVtZW50LCBsb2FkKTsKKwogUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBFbGVtZW50OjpkZXByZWNhdGVkQ3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0
IFN0cmluZyYgbWFya3VwLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVy
bWlzc2lvbikKIHsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1
bWVudCgpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmggYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYjUxZTc1MGE1MWQwOGNi
ZjE2ZDc5NTZkYTlmMWQyZGYwM2Y1ZDQwNy4uYWEyOTcyOTE0NTk2OTgwNDEyZTFhMThiODUyOTYy
NzllY2IwM2RkNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaApAQCAtNzQsMTAgKzc0LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIFRo
ZXNlIGZvdXIgYXR0cmlidXRlIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlcyBhcmUgb3ZlcnJpZGRl
biBieSBIVE1MQm9keUVsZW1lbnQKICAgICAvLyBhbmQgSFRNTEZyYW1lU2V0RWxlbWVudCB0byBm
b3J3YXJkIHRvIHRoZSBET01XaW5kb3cuCi0gICAgREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGJsdXIpOwotICAgIERFRklORV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihlcnJvcik7Ci0gICAgREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKGZvY3VzKTsKLSAgICBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
bG9hZCk7CisgICAgREVDTEFSRV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihibHVy
KTsKKyAgICBERUNMQVJFX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsK
KyAgICBERUNMQVJFX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGZvY3VzKTsKKyAg
ICBERUNMQVJFX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGxvYWQpOwogCiAgICAg
Ly8gV2ViS2l0IGV4dGVuc2lvbnMKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KGJlZm9yZWN1dCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggOWRiNDE3NGQ5Y2ZhMjZkNGYzYmU0Y2Fh
ZWFmMjVkMGM3ZmRmYmIwMC4uNDJjYmIzMmIyMWU4MmE3MzY2NGYxNzRhYjI4NjgzM2Y5ZTQ4NmFi
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtNjYsNiArNjYsMTAgQEAgYm9vbCBldmVudERpc3BhdGNo
Rm9yYmlkZGVuKCkKIH0KICNlbmRpZiAvLyBOREVCVUcKIAorRXZlbnRUYXJnZXREYXRhOjpFdmVu
dFRhcmdldERhdGEoKQoreworfQorCiBFdmVudFRhcmdldERhdGE6On5FdmVudFRhcmdldERhdGEo
KQogewogICAgIGRlbGV0ZUFsbFZhbHVlcyhldmVudExpc3RlbmVyTWFwKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmlu
ZGV4IGRlN2MyZTBhMjVhMzgwZGM1ODliNTZjNGI2NmZkMGQwYWY0ODUzOWIuLmZlZmY0YWUxMjRk
NDliZGMzZGU1NzgyMDJmMDg5OWYyNGMzZjlhOWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAtODMsNiArODMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgRXZlbnRMaXN0ZW5lclZlY3Rvcio+IEV2ZW50TGlzdGVuZXJNYXA7CiAKICAgICBzdHJ1Y3Qg
RXZlbnRUYXJnZXREYXRhIDogTm9uY29weWFibGUgeworICAgICAgICBFdmVudFRhcmdldERhdGEo
KTsKICAgICAgICAgfkV2ZW50VGFyZ2V0RGF0YSgpOwogCiAgICAgICAgIEV2ZW50TGlzdGVuZXJN
YXAgZXZlbnRMaXN0ZW5lck1hcDsKQEAgLTE3Nyw5ICsxNzgsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBFdmVudExpc3RlbmVyKiBvbiMjYXR0cmlidXRlKCkgeyByZXR1cm4gZ2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXR0cmlidXRlIyNFdmVudCk7IH0g
XAogICAgICAgICB2b2lkIHNldE9uIyNhdHRyaWJ1dGUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdHRy
aWJ1dGUjI0V2ZW50LCBsaXN0ZW5lcik7IH0gXAogCi0gICAgI2RlZmluZSBERUZJTkVfVklSVFVB
TF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYXR0cmlidXRlKSBcCi0gICAgICAgIHZpcnR1YWwg
RXZlbnRMaXN0ZW5lciogb24jI2F0dHJpYnV0ZSgpIHsgcmV0dXJuIGdldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmF0dHJpYnV0ZSMjRXZlbnQpOyB9IFwKLSAgICAgICAgdmly
dHVhbCB2b2lkIHNldE9uIyNhdHRyaWJ1dGUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0
ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdHRyaWJ1dGUj
I0V2ZW50LCBsaXN0ZW5lcik7IH0gXAorICAgICNkZWZpbmUgREVDTEFSRV9WSVJUVUFMX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihhdHRyaWJ1dGUpIFwKKyAgICAgICAgdmlydHVhbCBFdmVudExp
c3RlbmVyKiBvbiMjYXR0cmlidXRlKCk7IFwKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldE9uIyNh
dHRyaWJ1dGUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcik7IFwKKworICAgICNk
ZWZpbmUgREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHR5cGUsIGF0dHJp
YnV0ZSkgXAorICAgICAgICBFdmVudExpc3RlbmVyKiB0eXBlOjpvbiMjYXR0cmlidXRlKCkgeyBy
ZXR1cm4gZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXR0cmlidXRlIyNF
dmVudCk7IH0gXAorICAgICAgICB2b2lkIHR5cGU6OnNldE9uIyNhdHRyaWJ1dGUoUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lcikgeyBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5hdHRyaWJ1dGUjI0V2ZW50LCBsaXN0ZW5lcik7IH0gXAogCiAgICAgI2RlZmlu
ZSBERUZJTkVfV0lORE9XX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhdHRyaWJ1dGUpIFwKICAg
ICAgICAgRXZlbnRMaXN0ZW5lciogb24jI2F0dHJpYnV0ZSgpIHsgcmV0dXJuIGRvY3VtZW50KCkt
PmdldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmF0dHJpYnV0ZSMj
RXZlbnQpOyB9IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAgYi9X
ZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCmluZGV4IGIyYTk3MTQ1MjJjZjQ2YmZmYTZlOTMz
MTdiMGFjZjFkMzc5OWY3ZmUuLmVjYWUyMDZhMjUxY2VjYjA2NDRkMTNlZjIyZjQwOWU4ZTA2NDhi
MjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vSW5wdXRFbGVtZW50LmNwcApAQCAtMjc5LDYgKzI3OSwxMCBAQCBJbnB1dEVsZW1lbnRE
YXRhOjpJbnB1dEVsZW1lbnREYXRhKCkKIHsKIH0KIAorSW5wdXRFbGVtZW50RGF0YTo6fklucHV0
RWxlbWVudERhdGEoKQoreworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIElucHV0RWxlbWVudERh
dGE6Om5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBtX25hbWUuaXNOdWxsKCkgPyBlbXB0eUF0
b20gOiBtX25hbWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaCBiL1dl
YkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCmluZGV4IGQ1Y2UyMTJkZmEzNWY3ZDNlOWQyNTA5MWE2
N2FmOTUzNTAzY2E1NTguLjM0Nzg0YmM3ZTdkMzdjMDc0NmY1NWM1MWQ2MDE4ODk4OTc4NzM1OGUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9t
L0lucHV0RWxlbWVudC5oCkBAIC0xMDcsNiArMTA3LDcgQEAgcHJvdGVjdGVkOgogY2xhc3MgSW5w
dXRFbGVtZW50RGF0YSB7CiBwdWJsaWM6CiAgICAgSW5wdXRFbGVtZW50RGF0YSgpOworICAgIH5J
bnB1dEVsZW1lbnREYXRhKCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25z
dDsKICAgICB2b2lkIHNldE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX25hbWUg
PSB2YWx1ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAgYi9X
ZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmNwcAppbmRleCA1OGJjZTFmNmFiNWI4ZDdjNjlhZTEz
MjIyYTI2ODExZWI4MDcxMTA2Li44OTA3NDJmMTEzNTZmMDY5NDM5OWI3MWQ4NDUxZWUwM2M1ODJh
M2VkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmNwcAorKysgYi9XZWJD
b3JlL2RvbS9NdXRhdGlvbkV2ZW50LmNwcApAQCAtNDIsNiArNDIsMTAgQEAgTXV0YXRpb25FdmVu
dDo6TXV0YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmMKIHsKIH0KIAorTXV0YXRpb25FdmVudDo6fk11dGF0aW9uRXZlbnQoKQorewor
fQorCiB2b2lkIE11dGF0aW9uRXZlbnQ6OmluaXRNdXRhdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxO
b2RlPiByZWxhdGVkTm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiBwcmV2VmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgYXR0ck5hbWUsIHVu
c2lnbmVkIHNob3J0IGF0dHJDaGFuZ2UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9NdXRhdGlv
bkV2ZW50LmggYi9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmgKaW5kZXggMjliOTc4YzMwYjM4
YzZkNDA1MTAyYjg1ZjI4Nzk4MzJiYmU1NjE5Ny4uZjJiYTc1OTY3YWRiMDQ4OTBiNWIyY2VhOThh
YjQzZmJlMTBhMWUwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCisr
KyBiL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuaApAQCAtMzEsNiArMzEsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBNdXRhdGlvbkV2ZW50IDogcHVibGljIEV2ZW50IHsK
ICAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk11dGF0aW9uRXZlbnQoKTsKKwogICAgICAg
ICBlbnVtIGF0dHJDaGFuZ2VUeXBlIHsKICAgICAgICAgICAgIE1PRElGSUNBVElPTiAgICA9IDEs
CiAgICAgICAgICAgICBBRERJVElPTiAgICAgICAgPSAyLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA2ODY2NmEwNmFiY2VmNzll
YmUyZjA1ZmVhYWM3OWFjZmQ5Y2RmMDExLi4yOGUzY2RjZjUyZDMwNmFmNDE1NjdiN2U3NWUzYzQ2
NDMwYjZlMmRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtNzMxLDYgKzczMSwxNiBAQCBpbmxpbmUgdm9pZCBOb2RlOjptYXJr
QW5jZXN0b3JzV2l0aENoaWxkTmVlZHNTdHlsZVJlY2FsYygpCiAgICAgICAgIGRvY3VtZW50KCkt
PnNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKIH0KIAordm9pZCBOb2RlOjpyZWZFdmVudFRhcmdldCgp
Cit7CisgICAgcmVmKCk7Cit9CisKK3ZvaWQgTm9kZTo6ZGVyZWZFdmVudFRhcmdldCgpCit7Cisg
ICAgZGVyZWYoKTsKK30KKwogdm9pZCBOb2RlOjpzZXROZWVkc1N0eWxlUmVjYWxjKFN0eWxlQ2hh
bmdlVHlwZSBjaGFuZ2VUeXBlKQogewogICAgIEFTU0VSVChjaGFuZ2VUeXBlICE9IE5vU3R5bGVD
aGFuZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTm9kZS5oIGIvV2ViQ29yZS9kb20vTm9k
ZS5oCmluZGV4IDU4N2VmZmQwZmU4MjI3NDc2OTU1MDY0NGU5MmRlZjVhODM5Mjk0MGEuLmIzNTgw
OTRiNTZiN2VlMWFmZjI5MzY3ZTg1NmJiZWQ3YjEzYmQwOGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL05vZGUuaAorKysgYi9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTY4Nyw4ICs2ODcsOCBAQCBw
cml2YXRlOgogICAgIC8vIFVzZWQgdG8gc2hhcmUgY29kZSBiZXR3ZWVuIGxhenlBdHRhY2ggYW5k
IHNldE5lZWRzU3R5bGVSZWNhbGMuCiAgICAgdm9pZCBtYXJrQW5jZXN0b3JzV2l0aENoaWxkTmVl
ZHNTdHlsZVJlY2FsYygpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyBy
ZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9
CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCk7CisgICAgdmlydHVhbCB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKTsKIAogICAgIHZpcnR1YWwgTm9kZVJhcmVEYXRhKiBjcmVhdGVSYXJl
RGF0YSgpOwogICAgIE5vZGUqIGNvbnRhaW5lckNoaWxkTm9kZSh1bnNpZ25lZCBpbmRleCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9PcHRpb25FbGVtZW50LmNwcCBiL1dlYkNvcmUv
ZG9tL09wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDI0MGE4ZmM3ODdjYjg3MGQyMThhMGQxNzQ0ZDVl
OTcxZDk4ZGQ3MmUuLmFiNzg2M2U3NWE2ZjVmMzY4OTE1MjA5N2JhYWY5MWRjYWE2YTU1NjAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9t
L09wdGlvbkVsZW1lbnQuY3BwCkBAIC0xMzQsNiArMTM0LDEwIEBAIE9wdGlvbkVsZW1lbnREYXRh
OjpPcHRpb25FbGVtZW50RGF0YSgpCiB7CiB9CiAKK09wdGlvbkVsZW1lbnREYXRhOjp+T3B0aW9u
RWxlbWVudERhdGEoKQoreworfQorCiBPcHRpb25FbGVtZW50KiB0b09wdGlvbkVsZW1lbnQoRWxl
bWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIGVs
ZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvcHRpb25UYWcpKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vT3B0aW9uRWxlbWVudC5oIGIvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5oCmlu
ZGV4IDIzMmMzZWU1ZDdjZmU3ZGRkZjc0NmI0YWUyYmY0ZDkzYmRjMzFhMjUuLjlmZjVjZDVkZDZj
YzhjMzdmNTM4ODRmMWI1NDhkYmJjMzg1MzBkNmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL09w
dGlvbkVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9PcHRpb25FbGVtZW50LmgKQEAgLTU4LDYg
KzU4LDcgQEAgcHJpdmF0ZToKIGNsYXNzIE9wdGlvbkVsZW1lbnREYXRhIHsKIHB1YmxpYzoKICAg
ICBPcHRpb25FbGVtZW50RGF0YSgpOworICAgIH5PcHRpb25FbGVtZW50RGF0YSgpOwogCiAgICAg
U3RyaW5nIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIHZvaWQgc2V0VmFs
dWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWU7IH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3BwIGIvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVu
dC5jcHAKaW5kZXggYjlhZDg2MmJjMDI5MzdjNDI5YmYyMzQ0YTQzYTk4YWM3OWQxMDljOC4uYmFj
Njc2YTU5MjA4NTk3YmVjZTE0NWZkMTBjODczODg3MmVmM2UyYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vUG9wU3RhdGVFdmVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5j
cHAKQEAgLTM2LDcgKzM2LDExIEBAIFBvcFN0YXRlRXZlbnQ6OlBvcFN0YXRlRXZlbnQoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KQogICAgICwgbV9zdGF0ZU9i
amVjdChzdGF0ZU9iamVjdCkKIHsKIH0KLSAgICAKKworUG9wU3RhdGVFdmVudDo6flBvcFN0YXRl
RXZlbnQoKQoreworfQorCiB2b2lkIFBvcFN0YXRlRXZlbnQ6OmluaXRQb3BTdGF0ZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KQogewogICAgIGlm
IChkaXNwYXRjaGVkKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50Lmgg
Yi9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKaW5kZXggMmZiOGQwNjg1YmYwZTBkNTIyZTQ2
YjA4YjhhYmFmNzI2M2E0YjQyMi4uNDJmYmQ0NTRlMTFlZWM5MmJmNTk4ZDY3MmU5YWFjZTNiYjA2
ODRjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCisrKyBiL1dlYkNv
cmUvZG9tL1BvcFN0YXRlRXZlbnQuaApAQCAtMzYsNiArMzYsOCBAQCBjbGFzcyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU7CiAKIGNsYXNzIFBvcFN0YXRlRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVi
bGljOgorICAgIHZpcnR1YWwgflBvcFN0YXRlRXZlbnQoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBvcFN0YXRlRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gc3RhdGVPYmplY3QpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBvcFN0
YXRlRXZlbnQoc3RhdGVPYmplY3QpKTsKQEAgLTQ3LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlT2JqZWN0
LmdldCgpOyB9ICAgIAogCiBwcml2YXRlOgotICAgIFBvcFN0YXRlRXZlbnQoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICBleHBsaWNpdCBQb3BTdGF0ZUV2ZW50KFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAKICAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtX3N0YXRlT2JqZWN0OwogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1F1
YWxpZmllZE5hbWUuY3BwIGIvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggN2My
OWNlMGY5M2IyYWIxN2M1ZWJjMzBkNTc2ZTNkMzQwNDhkMjQxMC4uOTBjNmQyOTJhMGU2ZGU5MTI0
MWViMDQxZDgwYmZlMDJmMzhhNTYzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vUXVhbGlmaWVk
TmFtZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKQEAgLTcyLDYgKzcy
LDExIEBAIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBw
LCBjb25zdCBjaGFyKiBsLCBjb25zdCBBdG9taWNTCiAgICAgaW5pdChwLCBBdG9taWNTdHJpbmco
bCksIG4pOwogfQogCitRdWFsaWZpZWROYW1lOjp+UXVhbGlmaWVkTmFtZSgpCit7CisgICAgZGVy
ZWYoKTsKK30KKwogdm9pZCBRdWFsaWZpZWROYW1lOjpkZXJlZigpCiB7CiAjaWZkZWYgUU5BTUVf
REVGQVVMVF9DT05TVFJVQ1RPUgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFt
ZS5oIGIvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4IDJkYThmMGM1OGI4ODU1OWMx
NjllNjU3NmRkN2NmYWQyN2RhZWM2MTkuLjM0ZmMwNjlkODQzMzM3OWVhMDIwOWJlNzdhMWVhMDcz
YjgzMTRjMTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAorKysgYi9X
ZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAg
IFF1YWxpZmllZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IGNoYXIqIGxv
Y2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOwogICAgIFF1YWxpZmll
ZE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1faW1wbChoYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSkgeyB9CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW1wbCA9PSBoYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQotICAgIH5R
dWFsaWZpZWROYW1lKCkgeyBkZXJlZigpOyB9CisgICAgflF1YWxpZmllZE5hbWUoKTsKICNpZmRl
ZiBRTkFNRV9ERUZBVUxUX0NPTlNUUlVDVE9SCiAgICAgUXVhbGlmaWVkTmFtZSgpIDogbV9pbXBs
KDApIHsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNw
cCBiL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDAyNGJhN2FlNDBkNjU5YjIy
ZjljMTEyNjMyMjEwNmQzZjExMTMzZjUuLjFhZjAxMmU2YzdhMDczY2Q4NWJmZGI4NzgyM2RmYzA4
OTZmZjViYWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCkBAIC05NTMsNiArOTUzLDEwIEBAIFNlbGVj
dEVsZW1lbnREYXRhOjpTZWxlY3RFbGVtZW50RGF0YSgpCiB7CiB9CiAKK1NlbGVjdEVsZW1lbnRE
YXRhOjp+U2VsZWN0RWxlbWVudERhdGEoKQoreworfQorCiB2b2lkIFNlbGVjdEVsZW1lbnREYXRh
OjpjaGVja0xpc3RJdGVtcyhjb25zdCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewogI2lmICFB
U1NFUlRfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaCBi
L1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaAppbmRleCA3M2UyNjIwMmQ4ZjlhM2UyODJiZDJk
N2M3N2VkMWVlYTJlODAxYjliLi41MzgxNWYyYWViZTViMDk1YmZkYTA1ODQzZTUxNGM3ZTBjOTFi
YTEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS9kb20vU2VsZWN0RWxlbWVudC5oCkBAIC0xMTMsNiArMTEzLDcgQEAgcHJpdmF0ZToKIGNsYXNz
IFNlbGVjdEVsZW1lbnREYXRhIHsKIHB1YmxpYzoKICAgICBTZWxlY3RFbGVtZW50RGF0YSgpOwor
ICAgIH5TZWxlY3RFbGVtZW50RGF0YSgpOwogCiAgICAgYm9vbCBtdWx0aXBsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbXVsdGlwbGU7IH0KICAgICB2b2lkIHNldE11bHRpcGxlKGJvb2wgdmFsdWUpIHsg
bV9tdWx0aXBsZSA9IHZhbHVlOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNo
U2V0Tm9kZUxpc3QuY3BwIGIvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcApp
bmRleCBkNjQxY2I1NjBhZjVhYjcyZDYzYjI3MmUyYTk3MjUwZTRkNGY2ODZjLi42YzhjMmRiOTcz
YTVmYmM1NDk4YmRlZmQwMDFiNjIzN2I4NTkwMWRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9T
dGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXRO
b2RlTGlzdC5jcHAKQEAgLTM0LDYgKzM0LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
U3RhdGljSGFzaFNldE5vZGVMaXN0OjpTdGF0aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8
UmVmUHRyPE5vZGU+ID4mIG5vZGVzKQoreworICAgIG1fbm9kZXMuc3dhcChub2Rlcyk7Cit9CisK
K1N0YXRpY0hhc2hTZXROb2RlTGlzdDo6U3RhdGljSGFzaFNldE5vZGVMaXN0KCkKK3sKK30KKwor
U3RhdGljSGFzaFNldE5vZGVMaXN0Ojp+U3RhdGljSGFzaFNldE5vZGVMaXN0KCkKK3sKK30KKwog
dW5zaWduZWQgU3RhdGljSGFzaFNldE5vZGVMaXN0OjpsZW5ndGgoKSBjb25zdAogewogICAgIHJl
dHVybiBtX25vZGVzLnNpemUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hT
ZXROb2RlTGlzdC5oIGIvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgKaW5kZXgg
ZTk1NDQ5MzYwYTQzNWQ3NTcxZGNhNTZmM2I3NmEyYTFjYzJjNGFjYi4uZTYwYmY0NDUyY2FjZmU0
MzFlNTNkODcwOGZkNjFmYWRlNmZjZWZmOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU3RhdGlj
SGFzaFNldE5vZGVMaXN0LmgKKysrIGIvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5vZGVMaXN0
LmgKQEAgLTQxLDYgKzQxLDkgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3MgU3RhdGljSGFzaFNldE5v
ZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsKIHB1YmxpYzoKKyAgICBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QoKTsKKyAgICB+U3RhdGljSGFzaFNldE5vZGVMaXN0KCk7CisKICAgICAvLyBBZG9wdHMg
dGhlIGNvbnRlbnRzIG9mIHRoZSBub2RlcyBMaXN0SGFzaFNldC4KICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IGFkb3B0KGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0
cjxOb2RlPiA+JiBub2RlcykKICAgICB7CkBAIC01NywxMCArNjAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBOb2RlKiBpdGVtV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgU3RhdGljSGFzaFNldE5vZGVMaXN0KExpc3RIYXNoU2V0PFJlZlB0cjxO
b2RlPiA+JiBub2RlcykKLSAgICB7Ci0gICAgICAgIG1fbm9kZXMuc3dhcChub2Rlcyk7Ci0gICAg
fQorICAgIFN0YXRpY0hhc2hTZXROb2RlTGlzdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYg
bm9kZXMpOwogCiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gbV9ub2RlczsKIH07CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vU3R5
bGVFbGVtZW50LmNwcAppbmRleCBjM2E3MzAwMzNlZjBjZWNhODlmNWU5MjNmZGU5NDBjYmJhMDU2
ZTYzLi5mMzE4MzI2MGFmN2VkMTc4NWQ4NGQ4MzA0ZGExMmIxMzYxOGViNzBlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1N0eWxlRWxl
bWVudC5jcHAKQEAgLTM5LDYgKzM5LDEwIEBAIFN0eWxlRWxlbWVudDo6U3R5bGVFbGVtZW50KERv
Y3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgICAgIG1fc3RhcnRM
aW5lTnVtYmVyID0gZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT5saW5lTnVt
YmVyKCk7CiB9CiAKK1N0eWxlRWxlbWVudDo6flN0eWxlRWxlbWVudCgpCit7Cit9CisKIFN0eWxl
U2hlZXQqIFN0eWxlRWxlbWVudDo6c2hlZXQoRWxlbWVudCogZSkKIHsKICAgICBpZiAoIW1fc2hl
ZXQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuaCBiL1dlYkNvcmUvZG9t
L1N0eWxlRWxlbWVudC5oCmluZGV4IDAwZTQ1ZWRlMjBiNjA0NTdlZjExMWE0MmRjNzFkMTkwOTBj
NDExYzMuLjY1ZjYzMTA5M2U0ZWNhMzgwZGVmNGEyNWVkN2MxYmQxYTQxNjNiMDcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL1N0eWxlRWxl
bWVudC5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBTdHlsZUVsZW1l
bnQgewogcHVibGljOgogICAgIFN0eWxlRWxlbWVudChEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5
UGFyc2VyKTsKLSAgICB2aXJ0dWFsIH5TdHlsZUVsZW1lbnQoKSB7fQorICAgIHZpcnR1YWwgflN0
eWxlRWxlbWVudCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50
LmNwcCBiL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCmluZGV4IGJjYzM5NWZmNTkzZmQzOGRj
ODI0NzZkODdmOWFlYzZhNWY3OWUyNmQuLjg4ZDNlNmZhM2YwMjJlYjRjNjM1Y2Q4ZDIyZjc3ZjJl
ODk5MTRiY2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCisrKyBiL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuY3BwCkBAIC0zMSw2ICszMSwxMCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK1RvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoKQoreworfQorCiBUb3VjaEV2ZW50
OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0KiB0YXJnZXRUb3VjaGVz
LAogICAgICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIAogICAgICAgICBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKQEAgLTQzLDYgKzQ3LDEwIEBA
IFRvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRh
cmdldFRvdWNoZXMsCiB7CiB9CiAKK1RvdWNoRXZlbnQ6On5Ub3VjaEV2ZW50KCkKK3sKK30KKwog
dm9pZCBUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMsIFRvdWNo
TGlzdCogdGFyZ2V0VG91Y2hlcywKICAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKICAgICAgICAgUGFzc1JlZlB0cjxBYnN0cmFjdFZp
ZXc+IHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGll
bnRZLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oIGIvV2ViQ29yZS9kb20v
VG91Y2hFdmVudC5oCmluZGV4IDA4MGE0OTU3NDkwMGQyNWNiYWQ4MGM2ODVkZmRjZjgzZGJiNzBm
ZDkuLjE1MTRjZjhiMDRmYmI4ODFlYzEzNzBkZDRjMmMyZWY3NDIzNzEzYjQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgK
QEAgLTM1LDYgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUb3VjaEV2ZW50
IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5Ub3Vj
aEV2ZW50KCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUb3VjaEV2ZW50PiBjcmVhdGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUb3VjaEV2ZW50KTsKQEAgLTYxLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIFRvdWNoTGlzdCogY2hhbmdlZFRvdWNoZXMoKSBjb25zdCB7
IHJldHVybiBtX2NoYW5nZWRUb3VjaGVzLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgVG91Y2hF
dmVudCgpIHt9CisgICAgVG91Y2hFdmVudCgpOwogICAgIFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0
b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgICAgICBUb3VjaExpc3Qq
IGNoYW5nZWRUb3VjaGVzLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsCiAgICAgICAgICAgICBQ
YXNzUmVmUHRyPEFic3RyYWN0Vmlldz4sIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBh
Z2VYLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggMzU2YTcx
NzA2MjFhMTI4NjhlZDAyZDM5NWZmNWRkMTQ5ZmQ2ZWY5Ni4uZjI3YTJlNTk1ZWU0YzJiNWM2Nzk4
OTFmYzNjZjE4OTBiMGE5MjkyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwCkBAIC03Nyw2ICs3NywxMCBAQCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6Q29tcG9zaXRl
RWRpdENvbW1hbmQoRG9jdW1lbnQgKmRvY3VtZW50KQogewogfQogCitDb21wb3NpdGVFZGl0Q29t
bWFuZDo6fkNvbXBvc2l0ZUVkaXRDb21tYW5kKCkKK3sKK30KKwogdm9pZCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6ZG9VbmFwcGx5KCkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IG1fY29tbWFuZHMuc2l6
ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgg
Yi9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAppbmRleCBmODM5YTcyODk4
NWQwNmFjNWI4OWVmZmMzM2MxYTFiYjkzMmJmOWNkLi40Mzk3NDY0YjlhZTcyNTVlOWNkODA2Zjcw
MDQ1YTgyNWI2NDk2MGEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaApA
QCAtMzksMTAgKzM5LDEyIEBAIGNsYXNzIFRleHQ7CiAKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21t
YW5kIDogcHVibGljIEVkaXRDb21tYW5kIHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5Db21wb3Np
dGVFZGl0Q29tbWFuZCgpOworCiAgICAgYm9vbCBpc0ZpcnN0Q29tbWFuZChFZGl0Q29tbWFuZCog
Y29tbWFuZCkgeyByZXR1cm4gIW1fY29tbWFuZHMuaXNFbXB0eSgpICYmIG1fY29tbWFuZHMuZmly
c3QoKSA9PSBjb21tYW5kOyB9CiAKIHByb3RlY3RlZDoKLSAgICBDb21wb3NpdGVFZGl0Q29tbWFu
ZChEb2N1bWVudCopOworICAgIGV4cGxpY2l0IENvbXBvc2l0ZUVkaXRDb21tYW5kKERvY3VtZW50
Kik7CiAKICAgICAvLwogICAgIC8vIHN1Z2FyeS1zd2VldCBjb252ZW5pZW5jZSBmdW5jdGlvbnMg
dG8gaGVscCBjcmVhdGUgYW5kIGFwcGx5IGVkaXQgY29tbWFuZHMgaW4gY29tcG9zaXRlIGNvbW1h
bmRzCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDA2MTI5ODZhODk3ZGQ0OTgxYTE1MmU2
YWZkMDlmMmU5OTBkZDcwOTcuLmRhMzBkOGY2ZDRiMTUzNjY3NDNlYjllNjk1Y2E4ZWQ0MTdkOTVi
Y2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xMTIsNiArMTEyLDEwIEBAIEJpdFN0
YWNrOjpCaXRTdGFjaygpCiB7CiB9CiAKK0JpdFN0YWNrOjp+Qml0U3RhY2soKQoreworfQorCiB2
b2lkIEJpdFN0YWNrOjpwdXNoKGJvb2wgYml0KQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9z
aXplIC8gYml0c0luV29yZDsKQEAgLTMzNiw2ICszNDAsMTAgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0
SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQog
ICAgIGFkdmFuY2UoKTsKIH0KIAorVGV4dEl0ZXJhdG9yOjp+VGV4dEl0ZXJhdG9yKCkKK3sKK30K
Kwogdm9pZCBUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogewogICAgIC8vIHJlc2V0IHRoZSBydW4g
aW5mb3JtYXRpb24KQEAgLTE0NTYsNiArMTQ2NCwxMCBAQCBXb3JkQXdhcmVJdGVyYXRvcjo6V29y
ZEF3YXJlSXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIpCiAgICAgYWR2YW5jZSgpOyAvLyBnZXQgaW4g
cG9zaXRpb24gb3ZlciB0aGUgZmlyc3QgY2h1bmsgb2YgdGV4dAogfQogCitXb3JkQXdhcmVJdGVy
YXRvcjo6fldvcmRBd2FyZUl0ZXJhdG9yKCkKK3sKK30KKwogLy8gV2UncmUgYWx3YXlzIGluIG9u
ZSBvZiB0aGVzZSBtb2RlczoKIC8vIC0gVGhlIGN1cnJlbnQgY2h1bmsgaW4gdGhlIHRleHQgaXRl
cmF0b3IgaXMgb3VyIGN1cnJlbnQgY2h1bmsKIC8vICAgICAgKHR5cGljYWxseSBpdHMgYSBwaWVj
ZSBvZiB3aGl0ZXNwYWNlLCBvciB0ZXh0IHRoYXQgZW5kZWQgd2l0aCB3aGl0ZXNwYWNlKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5oCmluZGV4IDdmZDg3YmRhYzhjNDNmNGIzYzlkZjY4NTFkYWE3NzJlNGUx
N2YyZjYuLjFiZDg4Mjg4Y2FmZTNhNTg4YjUzOWEyZDU2NzY5ZmNjNmVjNWQ4OWYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmgKQEAgLTY0LDYgKzY0LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gZmluZFBs
YWluVGV4dChjb25zdCBSYW5nZSosIGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yd2FyZCwgYm9vbAog
Y2xhc3MgQml0U3RhY2sgewogcHVibGljOgogICAgIEJpdFN0YWNrKCk7CisgICAgfkJpdFN0YWNr
KCk7CiAKICAgICB2b2lkIHB1c2goYm9vbCk7CiAgICAgdm9pZCBwb3AoKTsKQEAgLTgzLDYgKzg0
LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFRleHRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgVGV4dEl0
ZXJhdG9yKCk7CisgICAgflRleHRJdGVyYXRvcigpOwogICAgIGV4cGxpY2l0IFRleHRJdGVyYXRv
cihjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVs
dEJlaGF2aW9yKTsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9wb3NpdGlv
bk5vZGU7IH0KQEAgLTI5MSw2ICsyOTMsNyBAQCBjbGFzcyBXb3JkQXdhcmVJdGVyYXRvciB7CiBw
dWJsaWM6CiAgICAgV29yZEF3YXJlSXRlcmF0b3IoKTsKICAgICBleHBsaWNpdCBXb3JkQXdhcmVJ
dGVyYXRvcihjb25zdCBSYW5nZSopOworICAgIH5Xb3JkQXdhcmVJdGVyYXRvcigpOwogCiAgICAg
Ym9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuICFtX2RpZExvb2tBaGVhZCAmJiBtX3RleHRJdGVy
YXRvci5hdEVuZCgpOyB9CiAgICAgdm9pZCBhZHZhbmNlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmNwcAppbmRleCBjOTZlOTUzYWI0OWEyZjQzMjlmZjI2ZWYzMGI2YjhlMzdlZDYz
MWNjLi40NTJmYTdmOTlhMmJjZDU5OTNkOWVlN2IyOWMzYjQ2MTEyYmNmNjgxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTYyMiw2ICs2MjIsMTAgQEAgdm9pZCBJbnNw
ZWN0b3JTdHJpbmc6OndyaXRlSlNPTihWZWN0b3I8VUNoYXI+KiBvdXRwdXQpIGNvbnN0CiAgICAg
ZG91YmxlUXVvdGVTdHJpbmcobV9zdHJpbmdWYWx1ZSwgb3V0cHV0KTsKIH0KIAorSW5zcGVjdG9y
T2JqZWN0Ojp+SW5zcGVjdG9yT2JqZWN0KCkKK3sKK30KKwogYm9vbCBJbnNwZWN0b3JPYmplY3Q6
OmFzT2JqZWN0KFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRwdXQpCiB7CiAgICAgKm91dHB1
dCA9IHRoaXM7CkBAIC02OTYsNiArNzAwLDE3IEBAIHZvaWQgSW5zcGVjdG9yT2JqZWN0Ojp3cml0
ZUpTT04oVmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdAogICAgIG91dHB1dC0+YXBwZW5kKCd9
Jyk7CiB9CiAKK0luc3BlY3Rvck9iamVjdDo6SW5zcGVjdG9yT2JqZWN0KCkKKyAgICA6IEluc3Bl
Y3RvclZhbHVlKFR5cGVPYmplY3QpCisgICAgLCBtX2RhdGEoKQorICAgICwgbV9vcmRlcigpCit7
Cit9CisKK0luc3BlY3RvckFycmF5Ojp+SW5zcGVjdG9yQXJyYXkoKQoreworfQorCiBib29sIElu
c3BlY3RvckFycmF5Ojphc0FycmF5KFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG91dHB1dCkKIHsK
ICAgICAqb3V0cHV0ID0gdGhpczsKQEAgLTcxOCw2ICs3MzMsMTIgQEAgdm9pZCBJbnNwZWN0b3JB
cnJheTo6d3JpdGVKU09OKFZlY3RvcjxVQ2hhcj4qIG91dHB1dCkgY29uc3QKICAgICBvdXRwdXQt
PmFwcGVuZCgnXScpOwogfQogCitJbnNwZWN0b3JBcnJheTo6SW5zcGVjdG9yQXJyYXkoKQorICAg
IDogSW5zcGVjdG9yVmFsdWUoVHlwZUFycmF5KQorICAgICwgbV9kYXRhKCkKK3sKK30KKwogUGFz
c1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yQXJyYXk6OmdldChzaXplX3QgaW5kZXgp
CiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbV9kYXRhLnNpemUoKSk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5oCmluZGV4IDQwMzZmNTU5NmJiNTMyODUwYjdlOTY3ZjFkMzlkNTYyZjE1MGI3
MWEuLjM5MTM3MmVhNTIwYWQ1OTlmOWNmM2YxMzUzNzE4NjU4NDY3OTIyODEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JPYmplY3QoKSk7CiAgICAgfQot
ICAgIH5JbnNwZWN0b3JPYmplY3QoKSB7IH0KKyAgICB+SW5zcGVjdG9yT2JqZWN0KCk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgYXNPYmplY3QoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dHB1dCk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYXNPYmplY3QoKTsKQEAg
LTE5NCw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yT2JqZWN0
KCkgOiBJbnNwZWN0b3JWYWx1ZShUeXBlT2JqZWN0KSB7IH0KKyAgICBJbnNwZWN0b3JPYmplY3Qo
KTsKICAgICBEaWN0aW9uYXJ5IG1fZGF0YTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX29yZGVyOwog
fTsKQEAgLTIwNSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEluc3BlY3RvckFycmF5KCkpOwogICAgIH0KLSAgICB+SW5zcGVjdG9yQXJyYXko
KSB7IH0KKyAgICB+SW5zcGVjdG9yQXJyYXkoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhc0FycmF5
KFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIG91dHB1dCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEluc3BlY3RvckFycmF5PiBhc0FycmF5KCk7CkBAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oVmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JBcnJheSgpIDogSW5zcGVjdG9yVmFsdWUoVHlwZUFy
cmF5KSB7IH0KKyAgICBJbnNwZWN0b3JBcnJheSgpOwogICAgIFZlY3RvcjxSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+ID4gbV9kYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2Fj
aGVkUmVzb3VyY2UuY3BwIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4
IGE2ZmYwZmYyOTQzMDEwMDBkYzY5MTIwZjhiNTBiOWQyNzM3YTQyZWQuLjA4YWNhMjA0OGRhYTIz
ZjBlNWM2ODBmMGYzMWFhMmQ0ZDU3N2QwNDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0Nh
Y2hlZFJlc291cmNlLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAK
QEAgLTQyOCw2ICs0MjgsMjUgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlUmVzcG9uc2VB
ZnRlclJldmFsaWRhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiB2YWwKICAgICB9CiB9CiAK
K3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlZ2lzdGVySGFuZGxlKENhY2hlZFJlc291cmNlSGFuZGxl
QmFzZSogaCkKK3sKKyAgICArK21faGFuZGxlQ291bnQ7CisgICAgaWYgKG1fcmVzb3VyY2VUb1Jl
dmFsaWRhdGUpCisgICAgICAgIG1faGFuZGxlc1RvUmV2YWxpZGF0ZS5hZGQoaCk7Cit9CisKK3Zv
aWQgQ2FjaGVkUmVzb3VyY2U6OnVucmVnaXN0ZXJIYW5kbGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGVC
YXNlKiBoKQoreworICAgIEFTU0VSVChtX2hhbmRsZUNvdW50ID4gMCk7CisgICAgLS1tX2hhbmRs
ZUNvdW50OworCisgICAgaWYgKG1fcmVzb3VyY2VUb1JldmFsaWRhdGUpCisgICAgICAgICBtX2hh
bmRsZXNUb1JldmFsaWRhdGUucmVtb3ZlKGgpOworCisgICAgaWYgKCFtX2hhbmRsZUNvdW50KQor
ICAgICAgICBkZWxldGVJZlBvc3NpYmxlKCk7Cit9CisKIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmNh
blVzZUNhY2hlVmFsaWRhdG9yKCkgY29uc3QKIHsKICAgICBpZiAobV9sb2FkaW5nIHx8IG1fZXJy
b3JPY2N1cnJlZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgg
Yi9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGY5NWRjY2Y4NGU3NjEyMTJl
NTNmOWYxNDNlOWJiYmRkNGM0NWUwZDcuLjA3OGRhNTc4OGE4MTRlZWE5Njg0YzczMTJhODg3ZTFl
NTg5Y2JkMjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgKKysr
IGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTg2LDggKzE4Niw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGluY3JlYXNlUHJlbG9hZENvdW50KCkgeyArK21fcHJlbG9hZENvdW50
OyB9CiAgICAgdm9pZCBkZWNyZWFzZVByZWxvYWRDb3VudCgpIHsgQVNTRVJUKG1fcHJlbG9hZENv
dW50KTsgLS1tX3ByZWxvYWRDb3VudDsgfQogICAgIAotICAgIHZvaWQgcmVnaXN0ZXJIYW5kbGUo
Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKiBoKSB7ICsrbV9oYW5kbGVDb3VudDsgaWYgKG1fcmVz
b3VyY2VUb1JldmFsaWRhdGUpIG1faGFuZGxlc1RvUmV2YWxpZGF0ZS5hZGQoaCk7IH0KLSAgICB2
b2lkIHVucmVnaXN0ZXJIYW5kbGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKiBoKSB7IEFTU0VS
VChtX2hhbmRsZUNvdW50ID4gMCk7IC0tbV9oYW5kbGVDb3VudDsgaWYgKG1fcmVzb3VyY2VUb1Jl
dmFsaWRhdGUpIG1faGFuZGxlc1RvUmV2YWxpZGF0ZS5yZW1vdmUoaCk7IGlmICghbV9oYW5kbGVD
b3VudCkgZGVsZXRlSWZQb3NzaWJsZSgpOyB9CisgICAgdm9pZCByZWdpc3RlckhhbmRsZShDYWNo
ZWRSZXNvdXJjZUhhbmRsZUJhc2UqIGgpOworICAgIHZvaWQgdW5yZWdpc3RlckhhbmRsZShDYWNo
ZWRSZXNvdXJjZUhhbmRsZUJhc2UqIGgpOwogICAgIAogICAgIGJvb2wgY2FuVXNlQ2FjaGVWYWxp
ZGF0b3IoKSBjb25zdDsKICAgICBib29sIG11c3RSZXZhbGlkYXRlKENhY2hlUG9saWN5KSBjb25z
dDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAppbmRleCBlMzA0
ZmZhM2U4OTJkMGE4YmM1OGRjZGFjZjZmYTcxNDk3M2I0MzAxLi45MjA3OWEwZGZjMGExM2NmOGQ4
NDk3YTIyYWE5ZTBiYTY3YzE0MDYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck1hcC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBI
ZWFkZXJNYXAuY3BwCkBAIC0zNyw2ICszNywxNCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK0hUVFBIZWFkZXJNYXA6OkhUVFBIZWFkZXJNYXAoKQorewor
fQorCitIVFRQSGVhZGVyTWFwOjp+SFRUUEhlYWRlck1hcCgpCit7Cit9CisKIFBhc3NPd25QdHI8
Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gSFRUUEhlYWRlck1hcDo6Y29weURhdGEoKSBj
b25zdAogewogICAgIE93blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBkYXRhKG5l
dyBDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhKCkpOwpAQCAtNTgsNyArNjYsMTcgQEAgdm9p
ZCBIVFRQSGVhZGVyTWFwOjphZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1h
cERhdGE+IGRhdGEpCiAgICAgICAgIHNldChoZWFkZXIuZmlyc3QsIGhlYWRlci5zZWNvbmQpOwog
ICAgIH0KIH0KLSAgICAKKworU3RyaW5nIEhUVFBIZWFkZXJNYXA6OmdldChjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBT
dHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OmdldChuYW1lKTsKK30KKworcGFpcjxIVFRQSGVhZGVy
TWFwOjppdGVyYXRvciwgYm9vbD4gSFRUUEhlYWRlck1hcDo6YWRkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPjo6YWRkKG5hbWUsIHZhbHVlKTsKK30K
KwogLy8gQWRhcHRlciB0aGF0IGFsbG93cyB0aGUgSGFzaE1hcCB0byB0YWtlIEMgc3RyaW5ncyBh
cyBrZXlzLgogc3RydWN0IENhc2VGb2xkaW5nQ1N0cmluZ1RyYW5zbGF0b3IgewogICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IGNoYXIqIGNTdHJpbmcpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuaAppbmRleCBjNjE0NWJkNGYwZTllN2JiN2YwZDQ5OThlZjg1YTM1
OTRiMWE2ZWZkLi4wMjA3MWUzNjEwYzFkNGI0ZmNkZjRkNmM5NTliNDlmODdmM2E1ZjE1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKQEAgLTQxLDIwICs0MSwxNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBIVFRQSGVhZGVyTWFwIDogcHVibGlj
IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gewogICAgIHB1
YmxpYzoKKyAgICAgICAgSFRUUEhlYWRlck1hcCgpOworICAgICAgICB+SFRUUEhlYWRlck1hcCgp
OworCiAgICAgICAgIC8vIEdldHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1aXRhYmxlIGZvciBwYXNz
aW5nIHRvIGFub3RoZXIgdGhyZWFkLgogICAgICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkSFRU
UEhlYWRlck1hcERhdGE+IGNvcHlEYXRhKCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBhZG9wdChQ
YXNzT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+KTsKICAgICAgICAgCi0gICAg
ICAgIFN0cmluZyBnZXQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZywgQ2FzZUZv
bGRpbmdIYXNoPjo6Z2V0KG5hbWUpOwotICAgICAgICB9CisgICAgICAgIFN0cmluZyBnZXQoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAotICAgICAgICBwYWlyPGl0ZXJhdG9yLCBi
b29sPiBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmlu
ZywgQ2FzZUZvbGRpbmdIYXNoPjo6YWRkKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgfQorICAgICAg
ICBwYWlyPGl0ZXJhdG9yLCBib29sPiBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlKTsKIAogICAgICAgICAvLyBBbHRlcm5hdGUgYWNjZXNzb3JzIHRoYXQg
YXJlIGZhc3RlciB0aGFuIGNvbnZlcnRpbmcgdGhlIGNoYXIqIHRvIEF0b21pY1N0cmluZyBmaXJz
dC4KICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBjaGFyKikgY29uc3Q7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQXBwbGV0LmNwcAppbmRleCA2M2ExOGEwNDM0ZGUwNzIzMGYxNDg0MDg5OTQwOWY4NTgx
NDZkMGJiLi5mOWViNTZlODJmOTY0ZjllMjE1NzM2ZDA0NDM1MGUyNGZhMWM5OTZiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckFwcGxldC5jcHAKQEAgLTM5LDYgKzM5LDEwIEBAIFJlbmRlckFwcGxldDo6
UmVuZGVyQXBwbGV0KEhUTUxBcHBsZXRFbGVtZW50KiBhcHBsZXQsIGNvbnN0IEhhc2hNYXA8U3Ry
aW5nLCBTdHJpCiAgICAgc2V0SW5saW5lKHRydWUpOwogfQogCitSZW5kZXJBcHBsZXQ6On5SZW5k
ZXJBcHBsZXQoKQoreworfQorCiBJbnRTaXplIFJlbmRlckFwcGxldDo6aW50cmluc2ljU2l6ZSgp
IGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCBtYWtlIHNlbnNlLiBXZSBjYW4n
dCBqdXN0IHN0YXJ0IHJldHVybmluZwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQXBwbGV0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuaAppbmRleCA2MmY0
NmNkOGQ1NjJkZGRiZTAyMGFlNjQyMjQ4M2ZmNzUzZDQ0MTQ1Li42NDE1NjhkODI2NDBkM2Y4M2Fi
NmYxN2UwOTBlNWIxODVjNjgwOWM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJBcHBsZXQuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuaApAQCAtMzIs
NiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVuZGVyQXBwbGV0IDog
cHVibGljIFJlbmRlcldpZGdldCB7CiAgICAgcHVibGljOgogICAgICAgICBSZW5kZXJBcHBsZXQo
SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgYXJncyk7
CisgICAgICAgIHZpcnR1YWwgflJlbmRlckFwcGxldCgpOwogCiAgICAgICAgIHZvaWQgY3JlYXRl
V2lkZ2V0SWZOZWNlc3NhcnkoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKaW5kZXgg
ODM1N2JkNDQ4NTJmOTNlMmE0MjJmZTAzYzg5MzYxYTY4YzE2MmY5OC4uMjY0MmYyMzRiMWVhMDhh
ZjI4ZDNkMTZjODFlZWY2YThkMGI1MTM0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3Bw
CkBAIC00NSw2ICs0NSwxMCBAQCBSZW5kZXJCdXR0b246OlJlbmRlckJ1dHRvbihOb2RlKiBub2Rl
KQogewogfQogCitSZW5kZXJCdXR0b246On5SZW5kZXJCdXR0b24oKQoreworfQorCiB2b2lkIFJl
bmRlckJ1dHRvbjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0
KiBiZWZvcmVDaGlsZCkKIHsKICAgICBpZiAoIW1faW5uZXIpIHsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0
dG9uLmgKaW5kZXggMWZjNWViNjIwMWE2NWE1ODlkODM0NzI4ZjI5MGI5YWY5N2VlNzk5NC4uMjUy
ZWRiNDk3Nzg5ZmU0ZGE1NGZhODU4ZjYwMWRiNmMwNmZjMTNiMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QnV0dG9uLmgKQEAgLTM0LDcgKzM0LDggQEAgY2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50OwogLy8g
dG8gZGF0ZSBhcyB0aGUgYnV0dG9uIGNoYW5nZXMuCiBjbGFzcyBSZW5kZXJCdXR0b24gOiBwdWJs
aWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlckJ1dHRvbihOb2RlKik7
CisgICAgZXhwbGljaXQgUmVuZGVyQnV0dG9uKE5vZGUqKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJC
dXR0b24oKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJCdXR0b24iOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyQnV0dG9u
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ291bnRlci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApp
bmRleCBiYTljNTAzODNjYTE2ZDBmNGE5NmVjNDA3ZGQwZGUwMTIzYjU0ZDQyLi5jMzU3YmUxNWU0
NzFiOTZiMDgzZGJlNTgyYTk1MGI3YTc0ZDJkOTJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcApAQCAtMjk0LDYgKzI5NCwxMCBAQCBSZW5kZXJDb3VudGVyOjpSZW5kZXJDb3VudGVy
KERvY3VtZW50KiBub2RlLCBjb25zdCBDb3VudGVyQ29udGVudCYgY291bnRlcikKIHsKIH0KIAor
UmVuZGVyQ291bnRlcjo6flJlbmRlckNvdW50ZXIoKQoreworfQorCiBjb25zdCBjaGFyKiBSZW5k
ZXJDb3VudGVyOjpyZW5kZXJOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gIlJlbmRlckNvdW50
ZXIiOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCmluZGV4IDhkOTgxZGY5ZGE1YmMzNzRmNTYz
NmEzNjVjZTBkMTAwNGFlNjY1ZGYuLjkzNzMxOTM2MjhhMzBhZmQ4NDY3NmE3NGVjM2IxMjhhOTJl
YmY3YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xh
c3MgQ291bnRlck5vZGU7CiBjbGFzcyBSZW5kZXJDb3VudGVyIDogcHVibGljIFJlbmRlclRleHQg
ewogcHVibGljOgogICAgIFJlbmRlckNvdW50ZXIoRG9jdW1lbnQqLCBjb25zdCBDb3VudGVyQ29u
dGVudCYpOworICAgIHZpcnR1YWwgflJlbmRlckNvdW50ZXIoKTsKIAogICAgIC8vIFJlbW92ZXMg
dGhlIHJlZmVyZW5jZSB0byB0aGUgQ291bnRlck5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVu
ZGVyZXIKICAgICAvLyBpZiBpdHMgaWRlbnRpZmllciBtYXRjaGVzIHRoZSBhcmd1bWVudC4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCmluZGV4IGVhNGU1ODcyY2Q5NTBkZmYyZGQzYTdhNGM3
YjZiMWY4N2FmNDVjZDMuLmJhZGE3OGM4MWQ4NDk5OWY2MTM2ZWZlYjU0NTlkNTYyOGVlMDgwMmEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuaApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckZpZWxkc2V0IDogcHVibGljIFJlbmRlckJsb2Nr
IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJGaWVsZHNldChOb2RlKik7CisgICAgZXhwbGljaXQgUmVu
ZGVyRmllbGRzZXQoTm9kZSopOwogCiAgICAgUmVuZGVyQm94KiBmaW5kTGVnZW5kKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggODM5ZTk2
MzRiNDkxZjc3NjZmZmMzNGY5MDgyMGRiYTYwNGUwOTZjMy4uZjlmNjk4OGYzODcyOTlkNjYyOGRh
MTFmNjc1ZWE4MWUwNDEzYTY2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rm9yZWlnbk9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9i
amVjdC5jcHAKQEAgLTQxLDYgKzQxLDEwIEBAIFJlbmRlckZvcmVpZ25PYmplY3Q6OlJlbmRlckZv
cmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqIG5vZGUpCiB7CiB9CiAKK1JlbmRl
ckZvcmVpZ25PYmplY3Q6On5SZW5kZXJGb3JlaWduT2JqZWN0KCkKK3sKK30KKwogdm9pZCBSZW5k
ZXJGb3JlaWduT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50LCBpbnQpCiB7
CiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmgKaW5kZXggODc0MjNlNmQ5YjRhMjZiOTkwMjgx
YTQzYTk3ODQxYjViMWQ3ZjM4Yi4uYmRmOTZjZTUwZDg3MjdhNjVkNzAwZDUxZWU2NjZiOTVjZjBi
ZWMwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5o
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuaApAQCAtMzMsNyAr
MzMsOCBAQCBjbGFzcyBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDsKIAogY2xhc3MgUmVuZGVyRm9y
ZWlnbk9iamVjdCA6IHB1YmxpYyBSZW5kZXJTVkdCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
Rm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCopOworICAgIGV4cGxpY2l0IFJl
bmRlckZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFs
IH5SZW5kZXJGb3JlaWduT2JqZWN0KCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyRm9yZWlnbk9iamVjdCI7IH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lLmgKaW5kZXggYzg5NWEwYzMwMTE1YjFhMmJmNTY2YjA4Nzg5NzE5OGVkYmE4
OWU4Zi4uZjZkN2VlODk1ZTdiMzYxMmFkZTJhZmYyMmZlM2RmMGU5ZTNkMTUwNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEhUTUxGcmFtZUVsZW1lbnQ7
CiAKIGNsYXNzIFJlbmRlckZyYW1lIDogcHVibGljIFJlbmRlckZyYW1lQmFzZSB7CiBwdWJsaWM6
Ci0gICAgUmVuZGVyRnJhbWUoSFRNTEZyYW1lRWxlbWVudCopOworICAgIGV4cGxpY2l0IFJlbmRl
ckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQqKTsKIAogICAgIEZyYW1lRWRnZUluZm8gZWRnZUluZm8o
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNl
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAppbmRleCBjZDNjZjBjNmMx
ODQwNGVkZGVhMjk4NWExZDk2OWY5Y2E1NzY3Yzc2Li40ZmFkNTYwYzViMzM3Zjk2YjgxM2IwY2I3
OTA1NDUzNjJkYzY2ODdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFt
ZUJhc2UuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaApAQCAtMzMs
NyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBCYXNlIGNsYXNzIGZvciBSZW5kZXJG
cmFtZSBhbmQgUmVuZGVySUZyYW1lCiBjbGFzcyBSZW5kZXJGcmFtZUJhc2UgOiBwdWJsaWMgUmVu
ZGVyUGFydCB7CiBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyRnJhbWVCYXNlKEVsZW1lbnQqKTsKKyAg
ICBleHBsaWNpdCBSZW5kZXJGcmFtZUJhc2UoRWxlbWVudCopOwogCiBwdWJsaWM6CiAgICAgdm9p
ZCBsYXlvdXRXaXRoRmxhdHRlbmluZyhib29sIGZpeGVkV2lkdGgsIGJvb2wgZml4ZWRIZWlnaHQp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCmluZGV4IDQ3M2RhZDVkYTIwZWE1YzAx
NWNlYmIzMTYzMjJkMmJmOTFmNWQyNjguLjIyMzBiMzkzNTRiZTY1MjI1YTMyNDBlNzE5MTRlYTlm
MjgyM2U4MWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMu
aAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgKQEAgLTM0LDcgKzM0
LDcgQEAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckhUTUxDYW52YXMg
OiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgewogcHVibGljOgotICAgIFJlbmRlckhUTUxDYW52YXMo
SFRNTENhbnZhc0VsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJIVE1MQ2FudmFzKEhUTUxD
YW52YXNFbGVtZW50Kik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDYW52YXMoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySUZyYW1lLmgKaW5kZXggMzI1ZTJiM2Q5Zjc2OGQxZjIyM2EzOTA4YTcyZWQ4
NjAyNTQ0YTMyMi4uMGJiMzE4MjllMWUxNmMxNTIxMGUwYmY4NDc0ZmIwNDY0ZDVkZjg2MSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySUZyYW1lLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBSZW5kZXJJRnJhbWUgOiBwdWJsaWMgUmVuZGVyRnJhbWVCYXNlIHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJJRnJhbWUoRWxlbWVudCopOworICAgIGV4cGxpY2l0IFJlbmRlcklG
cmFtZShFbGVtZW50Kik7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
Ym9vbCByZXF1aXJlc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmgKaW5kZXggZmViOGI4ZmM1ZTQxZWYwNTBlNzgwMDNhOWE2MGQ1ZGRmZjA2YmIx
Zi4uMzRiMjlkNzdmYmJjNmUxYTRkZjI1ZDQ4ZjdiMmY5NDEyYmM0MzM0NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgUG9zaXRpb247CiAKIGNsYXNz
IFJlbmRlcklubGluZSA6IHB1YmxpYyBSZW5kZXJCb3hNb2RlbE9iamVjdCB7CiBwdWJsaWM6Ci0g
ICAgUmVuZGVySW5saW5lKE5vZGUqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJJbmxpbmUoTm9kZSop
OwogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJ
dGVtLmgKaW5kZXggZjdiZDY2MTA2MTdlZjdjMDk5Y2FmYTAxMjI0NDQ0NTBmZjBlY2NjNC4uMmZj
YjZjNDAyNWVmN2Q0ZTU0ZWY1YjM1NzI4NzViOTc3YTkwMzkwMCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0SXRlbS5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIFJlbmRlckxpc3RNYXJrZXI7CiAK
IGNsYXNzIFJlbmRlckxpc3RJdGVtIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJMaXN0SXRlbShOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyTGlzdEl0ZW0oTm9k
ZSopOwogCiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyBpZiAoIW1faXNWYWx1ZVVwVG9EYXRlKSB1
cGRhdGVWYWx1ZU5vdygpOyByZXR1cm4gbV92YWx1ZTsgfQogICAgIHZvaWQgdXBkYXRlVmFsdWUo
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKaW5kZXggNDNlYjUxNDYxMThmMjQ4MjMy
MzVjY2M5MGExNThiMTU5OGIyYjdlOC4uOTAzODNkODI5NDNhMTJhYzg2ZjY4OWQ4NjIxMjBhMzEz
Y2Y3M2RkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKQEAgLTY2LDYgKzY2LDEw
IEBAIFJlbmRlck1hcnF1ZWU6OlJlbmRlck1hcnF1ZWUoUmVuZGVyTGF5ZXIqIGwpCiB7CiB9CiAK
K1JlbmRlck1hcnF1ZWU6On5SZW5kZXJNYXJxdWVlKCkKK3sKK30KKwogaW50IFJlbmRlck1hcnF1
ZWU6Om1hcnF1ZWVTcGVlZCgpIGNvbnN0CiB7CiAgICAgaW50IHJlc3VsdCA9IG1fbGF5ZXItPnJl
bmRlcmVyKCktPnN0eWxlKCktPm1hcnF1ZWVTcGVlZCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVl
ZS5oCmluZGV4IDE2NTE0NTRkZjUxYWMyZWVmNDVlNTI5OTUzZTJiODI2ZjZhM2YyNzAuLjc5OTk4
ZWQwNzllNWM5MWEwNTI3MTQyMTc2YTY4Nzk1NzRjYzFiZTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
YXJxdWVlLmgKQEAgLTU1LDcgKzU1LDggQEAgY2xhc3MgUmVuZGVyTGF5ZXI7CiAvLyBUaGlzIGNs
YXNzIGhhbmRsZXMgdGhlIGF1dG8tc2Nyb2xsaW5nIG9mIGxheWVycyB3aXRoIG92ZXJmbG93OiBt
YXJxdWVlLgogY2xhc3MgUmVuZGVyTWFycXVlZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyTWFycXVlZShSZW5kZXJMYXllciopOworICAgIGV4cGxpY2l0IFJlbmRl
ck1hcnF1ZWUoUmVuZGVyTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJNYXJxdWVlKCk7CiAK
ICAgICBpbnQgc3BlZWQoKSBjb25zdCB7IHJldHVybiBtX3NwZWVkOyB9CiAgICAgaW50IG1hcnF1
ZWVTcGVlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0
aC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAppbmRleCBjYmUxOTAwY2Rm
OGE5ZWI3ZWE1MWRlNjU4Y2Y5NGM0OGE0NWU5MmJiLi4yZTVhOTQzNTI0YzM4ZTViZGZlOWIxZDQ4
MDFjN2QyMGJjYmY3NmFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRo
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcApAQCAtNzMsNiArNzMs
MTAgQEAgUmVuZGVyUGF0aDo6UmVuZGVyUGF0aChTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dCogbm9kZSkKIHsKIH0KIAorUmVuZGVyUGF0aDo6flJlbmRlclBhdGgoKQoreworfQorCiBib29s
IFJlbmRlclBhdGg6OmZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgYm9vbCBy
ZXF1aXJlc0ZpbGwsIFdpbmRSdWxlIGZpbGxSdWxlKQogewogICAgIGlmICghbV9maWxsQm91bmRp
bmdCb3guY29udGFpbnMocG9pbnQpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUGF0aC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5oCmluZGV4IDFkMzVhMDFj
YzVhN2M0NDU4ZTRhNTM1ZWU2ZDYwNjY0OTJmZjA3ZWUuLjU3OWIzYzQxOGI2MTYxMzgzODE3OTQy
YTAzNWZlNGUxMjYyMjVlYjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBh
dGguaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmgKQEAgLTM4LDcgKzM4LDgg
QEAgY2xhc3MgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclBh
dGggOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVibGljOgotICAgIFJlbmRlclBh
dGgoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJQ
YXRoKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kik7CisgICAgdmlydHVhbCB+UmVuZGVy
UGF0aCgpOwogCiAgICAgY29uc3QgUGF0aCYgcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsg
fQogICAgIHZvaWQgc2V0TmVlZHNQYXRoVXBkYXRlKCkgeyBtX25lZWRzUGF0aFVwZGF0ZSA9IHRy
dWU7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Jsb2NrLmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdCbG9jay5oCmluZGV4IGMxMzc5ZGE3YTM1YjY5ZDQ5
YzEyMTZlZDZhZTE0MzlhNWUwOGRlM2UuLmE5ZGQ1ZGI1N2NiY2VhN2Q2ZDNmNmE0YTE2MjE5YWVm
ZTU1MDk0MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Jsb2NrLmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtMzEsNyArMzEsNyBA
QCBjbGFzcyBTVkdFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJTVkdCbG9jayA6IHB1YmxpYyBSZW5k
ZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHQmxvY2soU1ZHRWxlbWVudCopOworICAg
IGV4cGxpY2l0IFJlbmRlclNWR0Jsb2NrKFNWR0VsZW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXggYjU5NzRjYTk0NDM5YzRkYjc1M2Q3
YzUzZjgzODcxYmI3YmYwMmZhYS4uMDc2MTU2MjY3MGRlYjhkYjMzMTJhNzBhYzk1OWQ4Nzk3Yjc5
ZTkwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC00Myw2
ICs0MywxMCBAQCBSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihTVkdTdHls
ZWRFbGVtZW50KiBub2RlKQogewogfQogCitSZW5kZXJTVkdDb250YWluZXI6On5SZW5kZXJTVkdD
b250YWluZXIoKQoreworfQorCiB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkKIHsK
ICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRh
aW5lci5oCmluZGV4IGIwYzk1MmY0YTJkZGY2Y2RhNDlmZTZhYTVhOTM4ZTJmOGFhNjY0NGIuLjVi
ZGJmMzJiMjBjNTk1YWI0Zjg0MTVhZTNiM2ZkNmNjNWYxOTczZTkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR0NvbnRhaW5lci5oCkBAIC0zMyw3ICszMyw4IEBAIGNsYXNzIFNWR0VsZW1lbnQ7
CiAKIGNsYXNzIFJlbmRlclNWR0NvbnRhaW5lciA6IHB1YmxpYyBSZW5kZXJTVkdNb2RlbE9iamVj
dCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHQ29udGFpbmVyKFNWR1N0eWxlZEVsZW1lbnQqKTsK
KyAgICBleHBsaWNpdCBSZW5kZXJTVkdDb250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCopOworICAg
IHZpcnR1YWwgflJlbmRlclNWR0NvbnRhaW5lcigpOwogCiAgICAgY29uc3QgUmVuZGVyT2JqZWN0
Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAgICAg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIu
aCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCmluZGV4IDk3
ODAwZDQ2YzYzNTRmYmY0YTVkZDVmNmQ5YjMxZmU2NTRkMWRjODQuLmM1OTFhODgxNGQ1NWY1NmYz
ZmZlZDMwZWQ4NmY2OWVkMDViNTVhM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R0hpZGRlbkNvbnRhaW5lci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAvLyA8ZGVmcz4sIDxsaW5lYXJHcmFkaWVudD4sIDxyYWRpYWxHcmFkaWVudD4gYXJlIGFs
bCBnb29kIGV4YW1wbGVzCiAgICAgY2xhc3MgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIDogcHVi
bGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiAgICAgcHVibGljOgotICAgICAgICBSZW5kZXJTVkdI
aWRkZW5Db250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCopOworICAgICAgICBleHBsaWNpdCBSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCopOwogCiAgICAgICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIiOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R01vZGVsT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5o
CmluZGV4IDlkZTIxN2M1NGJkZjAzN2ZmZjJlYWQyMzM2NmQ2ZWEyNDgwMWRlNTAuLmZiOGY4OWYx
YjNkOWJiMGQwZGExMGIwNDNkZjI5NDhmOWY0MmYwYzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTVkdTdHlsZWRFbGVt
ZW50OwogCiBjbGFzcyBSZW5kZXJTVkdNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5kZXJPYmplY3Qg
ewogcHVibGljOgotICAgIFJlbmRlclNWR01vZGVsT2JqZWN0KFNWR1N0eWxlZEVsZW1lbnQqKTsK
KyAgICBleHBsaWNpdCBSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdTdHlsZWRFbGVtZW50Kik7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZS5oCmluZGV4IDRiMjM3Mzc3NDkwNmY3MWUzZjgxNjRkMDJjNDRlMjJlMTEwYmQ4ZDEu
LmIwNTQyMDM3ZTE3MTIzN2M4ZTdkMTljZjhhMWYwOTZlZmIwNzUzYTYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlIDogcHVibGljIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KTsKKyAgICBl
eHBsaWNpdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMqIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQpOwogCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSI7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
Um9vdC5jcHAKaW5kZXggMzFiNjJjZjI3ZjZiNWJlMDk4YTk2Y2RkOTkwYzRmZTY4YTgzZDk5My4u
YTcxNDU0Y2FlMWI1MjM3MWI0NWE4OTI4ODA5NzczNGZhNTM2MTkwNyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTUzLDYgKzUzLDEwIEBAIFJlbmRlclNWR1Jvb3Q6OlJlbmRl
clNWR1Jvb3QoU1ZHU3R5bGVkRWxlbWVudCogbm9kZSkKICAgICBzZXRSZXBsYWNlZCh0cnVlKTsK
IH0KIAorUmVuZGVyU1ZHUm9vdDo6flJlbmRlclNWR1Jvb3QoKQoreworfQorCiBpbnQgUmVuZGVy
U1ZHUm9vdDo6bGluZUhlaWdodChib29sLCBib29sKSBjb25zdAogewogICAgIHJldHVybiBoZWln
aHQoKSArIG1hcmdpblRvcCgpICsgbWFyZ2luQm90dG9tKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdS
b290LmgKaW5kZXggOTk2NDM5MzIxZWFhMzQ0OTc4NDBiMWE3NzA0YWM5YTNiZmNiOTRmMC4uMGY3
MjNiZTdjYmMyYzJjOGNkZmY4YmFiNjg0Y2VkYmZjNzM0MjY3NyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1Jvb3QuaApAQCAtMzUsNyArMzUsOCBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAKIGNs
YXNzIFJlbmRlclNWR1Jvb3QgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJTVkdSb290KFNWR1N0eWxlZEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJTVkdSb290
KFNWR1N0eWxlZEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSb290KCk7CiAKICAg
ICBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4g
Jm1fY2hpbGRyZW47IH0KICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyBy
ZXR1cm4gJm1fY2hpbGRyZW47IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuaAppbmRleCBiNjNiOTFjNWU5Y2U5NWM5NDEyZjM4Y2Zm
NGM1ZDMxNWFlNTIzOTQ2Li5iNDlhNDAzMDJiYzc2ZmYxZDliNGI0M2E2ODFjMWU5YjhiN2I5NTMy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDsKICAgICBjbGFzcyBSZW5kZXJTVkdUcmFu
c2Zvcm1hYmxlQ29udGFpbmVyIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiAgICAgcHVi
bGljOgotICAgICAgICBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50Kik7CisgICAgICAgIGV4cGxpY2l0IFJlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqKTsKIAogICAgICAg
ICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KICAgICAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1
ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgK
aW5kZXggN2I1NzAyYjk4ZWI1NTc3MzhmMDRlNzM2YzRiZDA0NGZjNzRlMjBkMC4uNjNjMzM2Y2U4
MmFiOTRmYjBmMDVmMTNkMWIwNzY5NjIxMzQwYWU0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIHRodXMgd2UgaW5oZXJpdCBmcm9tIFJlbmRlclNWR0NvbnRhaW5lciBp
bnN0ZWFkIG9mIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIKIGNsYXNzIFJlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiBwdWJsaWM6
Ci0gICAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCopOworICAg
IGV4cGxpY2l0IFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFNWR1N0eWxlZEVsZW1lbnQqKTsK
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdDb250YWluZXIoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggMDAyN2U2YWRjMWRh
OGFhZDJjYTFmMDM3YTA4ZDFmNDI1Yjg5OTNmNy4uZmZjMzhkMjlhY2ZhMzczZDRlYmFmZWVhMzU5
MjM3NzY3N2ZhMzRhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtNjUsNiArNjUs
MTAgQEAgUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKE5vZGUqIG5vZGUpCiAgICAgCiB9CiAKK1Jl
bmRlclRhYmxlOjp+UmVuZGVyVGFibGUoKQoreworfQorCiB2b2lkIFJlbmRlclRhYmxlOjpzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKQogewogICAgIFJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuaAppbmRleCBhZmVhNDAyM2YxZDhmYWM5YWEzZmVjNzcxMjhi
NTk5M2M5Y2ZlMTE5Li4xZDQxNDA2ZGI3MTgwMmFhZDFlMWU1MWY3NTZmZWE0YTk3ZDg1MzM0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTM4LDcgKzM4LDggQEAgY2xhc3MgVGFibGVMYXlv
dXQ7CiAKIGNsYXNzIFJlbmRlclRhYmxlIDogcHVibGljIFJlbmRlckJsb2NrIHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJUYWJsZShOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyVGFibGUoTm9kZSop
OworICAgIHZpcnR1YWwgflJlbmRlclRhYmxlKCk7CiAKICAgICBpbnQgZ2V0Q29sdW1uUG9zKGlu
dCBjb2wpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uUG9zW2NvbF07IH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuaAppbmRleCA3OTM3NmU5YzBhNTU3NjE3ZTRiNzM1MWY5NjZkNWQyMGE2
MGY2NmJkLi5kODAzZjA1YWY2YzEzNDIxZTE5OWVmYzVlZjRiMGFhZDQ1YzJmNWYwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ2VsbCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBw
dWJsaWM6Ci0gICAgUmVuZGVyVGFibGVDZWxsKE5vZGUqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJU
YWJsZUNlbGwoTm9kZSopOwogCiAgICAgLy8gRklYTUU6IG5lZWQgdG8gaW1wbGVtZW50IGNlbGxJ
bmRleAogICAgIGludCBjZWxsSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDb2wuaAppbmRleCBjNWY5YWZjMmFhOGQ1NTJlYjYzMjcxNDUwNzQ2OGQ4YzI1
NWJkYzE5Li41ZmI0MTI4ZjZjYjMyMjI0NjYxNmRiNTQwN2JiNzczOTZmZmE0ODE2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVuZGVyVGFi
bGU7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ29sIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6
Ci0gICAgUmVuZGVyVGFibGVDb2woTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlclRhYmxlQ29s
KE5vZGUqKTsKIAogICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSBj
b25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogICAgIFJlbmRlck9iamVjdENoaWxkTGlzdCog
Y2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Um93LmgKaW5kZXggNTg4MjUyYmM4NGIyMWZkODVmM2IxN2Q3MDU4ZDk0MTg2ODBhYmYzNi4uMzA1
OTA2MDgzMGYzOGE1OWNmZTcyMjc4ZjI5MzRjMjMzNWNlMDVkMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVJvdy5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUmVuZGVyVGFibGVSb3cgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJUYWJsZVJvdyhOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyVGFibGVSb3coTm9kZSopOwog
CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0
dXJuICZtX2NoaWxkcmVuOyB9CiAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigp
IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0RnJhZ21lbnQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdt
ZW50LmNwcAppbmRleCBiMTQzMDhkZDU1ZjVhNDIyZDljZjQzNDBkMjdhM2E3MTdkYjJhMWU3Li43
MDVjMDk1NzUyMDIxM2U4NDRiNWE0MjBmODc5ZmUwZDBmYTE5M2Q5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKQEAgLTQ0LDYgKzQ0LDEwIEBAIFJlbmRlclRleHRG
cmFnbWVudDo6UmVuZGVyVGV4dEZyYWdtZW50KE5vZGUqIG5vZGUsIFN0cmluZ0ltcGwqIHN0cikK
IHsKIH0KIAorUmVuZGVyVGV4dEZyYWdtZW50Ojp+UmVuZGVyVGV4dEZyYWdtZW50KCkKK3sKK30K
KwogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBSZW5kZXJUZXh0RnJhZ21lbnQ6Om9yaWdpbmFsVGV4
dCgpIGNvbnN0CiB7CiAgICAgTm9kZSogZSA9IG5vZGUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dEZyYWdtZW50LmgKaW5kZXggZTAyMzA0MmI1NDJiMTM5MWM2YTRhZWM3OWQwMGQxY2VkOTk0
MTlhYi4uYWJiM2ZhNDQxOGEyODNjZDRkYmVmNGJkZjI3ZGEzOTgzZWQ4ZTBiNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgUmVu
ZGVyVGV4dEZyYWdtZW50IDogcHVibGljIFJlbmRlclRleHQgewogcHVibGljOgogICAgIFJlbmRl
clRleHRGcmFnbWVudChOb2RlKiwgU3RyaW5nSW1wbCosIGludCBzdGFydE9mZnNldCwgaW50IGxl
bmd0aCk7CiAgICAgUmVuZGVyVGV4dEZyYWdtZW50KE5vZGUqLCBTdHJpbmdJbXBsKik7CisgICAg
dmlydHVhbCB+UmVuZGVyVGV4dEZyYWdtZW50KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0
RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldvcmRCcmVhay5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV29y
ZEJyZWFrLmgKaW5kZXggYWNkODE3OWUzNzE1Y2IxYzc1ODA1NjEwZDJhOTI5YWY3MDE1YmU2My4u
ZGIzMWVlYzE2ZWZmMjU3NjgyNzIxZTlkNzI0NTZkNGM3OWU2ZmE5MiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV29yZEJyZWFrLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV29yZEJyZWFrLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSFRNTEVsZW1lbnQ7CiAK
IGNsYXNzIFJlbmRlcldvcmRCcmVhayA6IHB1YmxpYyBSZW5kZXJUZXh0IHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJXb3JkQnJlYWsoSFRNTEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJXb3Jk
QnJlYWsoSFRNTEVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1dvcmRCcmVhaygpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCmluZGV4IDkyYjZmZTdkMjc1NmExYmIwNzkz
YWNjOTA5NjUyNjMzMjFlNzIxOGIuLmQ3YjdlNjY5YzgzYTIwYzZmMTczZGJmNjU1YzlhZjMwM2Ey
NGI1MDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUu
aAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTMzLDcg
KzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdJbmxpbmUgOiBw
dWJsaWMgUmVuZGVySW5saW5lIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdJbmxpbmUoTm9kZSop
OworICAgIGV4cGxpY2l0IFJlbmRlclNWR0lubGluZShOb2RlKik7CiAKICAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHSW5saW5lIjsg
fQogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKaW5kZXggOTMxYmQ4YzQzMmM2
YTE3MzI4NTk3NjY2ZWQ2NTczZGM2ZTZmOTIxMC4uOTdlMGViMDA0ZmNiZjBiODVlMzA3OGI4MGE2
MTcyMzgyYmEyZmQ3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RTcGFuLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKQEAg
LTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlbmRlclNWR1RTcGFu
IDogcHVibGljIFJlbmRlclNWR0lubGluZSB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHVFNwYW4o
Tm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlclNWR1RTcGFuKE5vZGUqKTsKICAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHVFNwYW4i
OyB9CiB9OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAg
Yi9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCBmNTU0ODQ2MTJmMzc2MjUx
M2RmZDYyYzZhNmQxY2I5MDhlOTY3ZTNlLi5kNGZhODljNjVkNWJkYmZjYzQxM2VkODk5ODRkNTAy
ZmU2MjcxMTk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcApAQCAtNjAsNiArNjAsMTAgQEAg
U1ZHU3R5bGVkRWxlbWVudDo6U1ZHU3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KIHsKIH0KIAorU1ZHU3R5bGVkRWxlbWVudDo6flNWR1N0
eWxlZEVsZW1lbnQoKQoreworfQorCiBTdHJpbmcgU1ZHU3R5bGVkRWxlbWVudDo6dGl0bGUoKSBj
b25zdAogewogICAgIC8vIEFjY29yZGluZyB0byBzcGVjLCB3ZSBzaG91bGQgbm90IHJldHVybiB0
aXRsZXMgd2hlbiBob3ZlcmluZyBvdmVyIDxzdmc+IGVsZW1lbnRzICh0aG9zZSAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuaAppbmRleCAzNDgyYTRmNjg3YjRiYTc4MTRmMzQwMzE5MzY5NTM3Yzc5MzU0NmM4
Li41ZTk5NmIzMDRmZWQ4NWRmOGQwNGEyNmIzZDVkMjdjY2NhNTllNGQxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
RWxlbWVudC5oCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBTVkdTdHlsZWRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdTdHlsYWJsZSB7CiAgICAgcHVibGljOgorICAgICAgICB2
aXJ0dWFsIH5TVkdTdHlsZWRFbGVtZW50KCk7CisKICAgICAgICAgdmlydHVhbCBTdHJpbmcgdGl0
bGUoKSBjb25zdDsKIAogICAgICAgICBib29sIGhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IHsg
cmV0dXJuICFtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3Rocy5pc0VtcHR5KCk7IH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcCBiL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAppbmRleCBhZjEwZWQ3
MTQ3MTdmMTI3Yjg0MzkyYzc5MDM5OTg4ZmM1OGFkMTk5Li5hY2ZhNGNlNmI0ZTg1MDZiMTU0MDg2
Y2JmYzM4MTExNzE2MzIxY2U2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuY3BwCkBAIC0zOCw2ICszOCwxMCBAQCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZQogewogfQogCitTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6flNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50KCkKK3sKK30KKwogQWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpnZXRDVE0oU3R5bGVVcGRhdGVTdHJhdGVneSBzdHlsZVVwZGF0ZVN0
cmF0ZWd5KSBjb25zdAogewogICAgIHJldHVybiBTVkdMb2NhdGFibGU6OmNvbXB1dGVDVE0odGhp
cywgU1ZHTG9jYXRhYmxlOjpOZWFyZXN0Vmlld3BvcnRTY29wZSwgc3R5bGVVcGRhdGVTdHJhdGVn
eSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dC5oIGIvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAppbmRleCA3
NjY4ODg5NGE1YWNmODk4MTUxMjBmMmFhZGE2ZGJkYmU1ZjZjNTdmLi4yOTBmN2Y4NjNmYjAxODkw
ZmJkZjc2MWM4ODFlZmVhM2Y0Y2NiMzVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50LmgKQEAgLTMzLDYgKzMzLDggQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3Jt
OwogY2xhc3MgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVk
TG9jYXRhYmxlRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR1RyYW5zZm9ybWFibGUgewogcHVibGljOgorICAgIHZpcnR1YWwgflNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50KCk7CisKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBn
ZXRDVE0oU3R5bGVVcGRhdGVTdHJhdGVneSA9IEFsbG93U3R5bGVVcGRhdGUpIGNvbnN0OwogICAg
IHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTShTdHlsZVVwZGF0ZVN0cmF0ZWd5
ID0gQWxsb3dTdHlsZVVwZGF0ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBuZWFy
ZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YUGF0
aFBhcnNlci5jcHAgYi9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKaW5kZXggMjBlNzU5MGU1
ZWEyOWNmNmQ5M2E5MzFlODUzM2E1NmVlNmIzYTI1Ni4uYzI0MmE1Y2QxNDk4YTQxODk0ZjkxYzQ0
NGY2ZDBlYzI5YzY2YzVlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3Bw
CisrKyBiL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcApAQCAtNDEwLDYgKzQxMCwxMCBAQCBQ
YXJzZXI6OlBhcnNlcigpCiAgICAgcmVzZXQoU3RyaW5nKCkpOwogfQogCitQYXJzZXI6On5QYXJz
ZXIoKQoreworfQorCiB2b2lkIFBhcnNlcjo6cmVzZXQoY29uc3QgU3RyaW5nJiBkYXRhKQogewog
ICAgIG1fbmV4dFBvcyA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5o
IGIvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuaAppbmRleCBlNzc5NjAzMDhlODE4YWM0MDhlY2Uy
MTY2YWY3OWFlMTQ2Y2Q2MWM0Li40NGE4ZTQ4OGRlM2ZhNjRiNDM1MjE2MmRhYzRjNTQzYmMyYTM2
MWE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5oCisrKyBiL1dlYkNvcmUv
eG1sL1hQYXRoUGFyc2VyLmgKQEAgLTYxLDYgKzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBjbGFzcyBQYXJzZXIgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgICAgICBwdWJs
aWM6CiAgICAgICAgICAgICBQYXJzZXIoKTsKKyAgICAgICAgICAgIH5QYXJzZXIoKTsKIAogICAg
ICAgICAgICAgWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b2x2ZXIuZ2V0KCk7IH0KICAgICAgICAgICAgIGJvb2wgZXhwYW5kUU5hbWUoY29uc3QgU3RyaW5n
JiBxTmFtZSwgU3RyaW5nJiBsb2NhbE5hbWUsIFN0cmluZyYgbmFtZXNwYWNlVVJJKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70327</attachid>
            <date>2010-10-08 18:17:31 -0700</date>
            <delta_ts>2010-10-08 19:00:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47230-20101008181729.patch</filename>
            <type>text/plain</type>
            <size>67620</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGM0ZjhiODRkYmZkNWZlYjc3ZTc0MzQ3ODY4MGM2NGE5ZWY0OWJkMy4uOGZmMzc0Yzc3ZmM3YjYw
NzM4ZjZlZTg2YjY0MGE2YjI5OWM4YTE3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzIgQEAKKzIwMTAtMTAtMDYgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIEF2b2lkIGlubGluaW5nIGxhcmdlIGFuZC9vciB2aXJ0
dWFsIGZ1bmN0aW9ucyBpbiB3aWRlbHkgaW5jbHVkZWQgaGVhZGVyIGZpbGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzIzMAorCisgICAgICAgIEZ1
bmN0aW9ucyB3aXRoIHZlcnkgbGFyZ2UgYm9kaWVzIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4g
d2lkZWx5IGluY2x1ZGVkIGhlYWRlciBmaWxlcy4KKyAgICAgICAgVGhpcyByZXN1bHRzIGluIHRo
ZSBmdW5jdGlvbidzIGNvZGUgZW5kaW5nIHVwIGluY2x1ZGVkIGluIGh1bmRyZWRzIG9mIG9iamVj
dCBmaWxlcyB0aGF0CisgICAgICAgIHRoZSBsaW5rZXIgaGFzIHRvIGRpc2NhcmQsIGF0IGEgY29z
dCBvZiBsaW5rZXIgbWVtb3J5IHVzZSwgbGluayB0aW1lLCBhbmQgZGlzayBzcGFjZS4gVGhpcwor
ICAgICAgICBpcyBhIHBhcnRpY3VsYXIgcHJvYmxlbSBpbiB0aGUgQ2hyb21pdW0gd2luZG93cyBi
dWlsZCB3aGVyZSBNU1ZDIG9mdGVuIGV4aGF1c3RzIGl0cyAzMi1iaXQKKyAgICAgICAgdmlydHVh
bCBhZGRyZXNzIHNwYWNlIGFuZCBjb21wbGV0ZWx5IGZhaWxzIHRvIGxpbmsuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBtb3ZlcyBmdW5jdGlvbiBkZWZpbml0aW9ucyBmcm9tIHRoZSAuaCB0byB0aGUg
Y29ycmVzcG9uZGluZyAuY3BwIHdoZW4gdGhlIGZ1bmN0aW9uCisgICAgICAgIGlzIGxhcmdlIGFu
ZCBub3QgYSBjYW5kaWRhdGUgZm9yIGlubGluaW5nIGVpdGhlciBiZWNhdXNlIGl0IGlzIHZpcnR1
YWwgb3IgYmVjYXVzZSBpdHMgc2l6ZSBpcworICAgICAgICBhYm92ZSBhbnkgcmVhc29uYWJsZSBj
b21waWxlcidzIHRocmVzaGhvbGQgZm9yIGlubGluaW5nLiAgVGhlIG1vc3QgY29tbW9uIGNhc2Ug
YnkgZmFyIGluIHRoaXMKKyAgICAgICAgcGF0Y2ggaXMgY2hhbmdpbmcgYSBjbGFzcycgaW1wbGlj
aXRseSBkZWZpbmVkIGRlc3RydWN0b3IgdG8gYW4gZXhwbGljaXRseSBkZWNsYXJlZCBkJ3RvciBp
bgorICAgICAgICB0aGUgaGVhZGVyIGFuZCBhbiBleHBsaWNpdGx5IGRlZmluZWQgZCd0b3IgaW4g
dGhlIC5jcHAuICBUaGlzIGlzIGltcG9ydGFudCBzaW5jZSBtYW55IG9mIG91cgorICAgICAgICBj
b250YWluZXIgYW5kIHV0aWxpdHkgY2xhc3NlcyAoZXNwZWNpYWxseSBWZWN0b3IsIFN0cmluZywg
YW5kIEhhc2hTZXQpIGhhdmUgcXVpdGUgbGFyZ2UKKyAgICAgICAgZGVzdHJ1Y3RvcnMuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIDIyLjRNQiBvZiBvYmplY3QgZmlsZSBzaXplIGluIGEg
ZGVidWcgNjQgYml0IGNvbXBpbGUuCisKKyAgICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NCb3JkZXJJbWFnZVZhbHVlOjp+Q1NTQm9yZGVy
SW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZVNyY1ZhbHVlOjp+Q1NTRm9udEZhY2VTcmNWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oOgor
ICAgICAgICAqIGRvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudDo6fkJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KToK
KyAgICAgICAgKiBkb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaDoKKyAgICAgICAgKiBkb20v
QmVmb3JlVW5sb2FkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmVmb3JlVW5sb2FkRXZl
bnQ6On5CZWZvcmVVbmxvYWRFdmVudCk6CisgICAgICAgICogZG9tL0JlZm9yZVVubG9hZEV2ZW50
Lmg6CisgICAgICAgICogZG9tL0NsYXNzTm9kZUxpc3QuaDoKKyAgICAgICAgKiBkb20vQ2xpcGJv
YXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRXZlbnQ6On5DbGlwYm9h
cmRFdmVudCk6CisgICAgICAgICogZG9tL0NsaXBib2FyZEV2ZW50Lmg6CisgICAgICAgICogZG9t
L0N1c3RvbUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUV2ZW50Ojp+Q3VzdG9t
RXZlbnQpOgorICAgICAgICAqIGRvbS9DdXN0b21FdmVudC5oOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FdmVudFRh
cmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldERhdGE6OkV2ZW50VGFyZ2V0
RGF0YSk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogZG9tL0lucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnREYXRhOjp+SW5wdXRF
bGVtZW50RGF0YSk6CisgICAgICAgICogZG9tL0lucHV0RWxlbWVudC5oOgorICAgICAgICAqIGRv
bS9NdXRhdGlvbkV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uRXZlbnQ6On5N
dXRhdGlvbkV2ZW50KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25FdmVudC5oOgorICAgICAgICAq
IGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlZkV2ZW50VGFyZ2V0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRlcmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAqIGRv
bS9Ob2RlLmg6CisgICAgICAgICogZG9tL09wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6T3B0aW9uRWxlbWVudERhdGE6On5PcHRpb25FbGVtZW50RGF0YSk6CisgICAgICAgICog
ZG9tL09wdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vUG9wU3RhdGVFdmVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3BTdGF0ZUV2ZW50Ojp+UG9wU3RhdGVFdmVudCk6CisgICAgICAg
ICogZG9tL1BvcFN0YXRlRXZlbnQuaDoKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjp+UXVhbGlmaWVkTmFtZSk6CisgICAg
ICAgICogZG9tL1F1YWxpZmllZE5hbWUuaDoKKyAgICAgICAgKiBkb20vU2VsZWN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RFbGVtZW50RGF0YTo6flNlbGVjdEVsZW1lbnRE
YXRhKToKKyAgICAgICAgKiBkb20vU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9TdGF0
aWNIYXNoU2V0Tm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljSGFzaFNldE5v
ZGVMaXN0OjpTdGF0aWNIYXNoU2V0Tm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGlj
SGFzaFNldE5vZGVMaXN0Ojp+U3RhdGljSGFzaFNldE5vZGVMaXN0KToKKyAgICAgICAgKiBkb20v
U3RhdGljSGFzaFNldE5vZGVMaXN0Lmg6CisgICAgICAgICogZG9tL1N0eWxlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUVsZW1lbnQ6On5TdHlsZUVsZW1lbnQpOgorICAgICAg
ICAqIGRvbS9TdHlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vVG91Y2hFdmVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlRvdWNoRXZlbnQ6On5Ub3VjaEV2ZW50KToKKyAgICAgICAgKiBkb20vVG91Y2hFdmVudC5o
OgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6On5Db21wb3NpdGVFZGl0Q29tbWFuZCk6Cisg
ICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdFN0YWNrOjp+Qml0U3Rh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjp+VGV4dEl0ZXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmRBd2FyZUl0ZXJhdG9yOjp+V29yZEF3YXJlSXRlcmF0b3IpOgor
ICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6On5J
bnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OjpJbnNw
ZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXk6On5JbnNwZWN0
b3JBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcnJheTo6SW5zcGVjdG9yQXJy
YXkpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDoKKyAgICAgICAgKiBs
b2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OnJlZ2lzdGVySGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1
bnJlZ2lzdGVySGFuZGxlKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcDo6SFRUUEhlYWRlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjpI
VFRQSGVhZGVyTWFwOjp+SFRUUEhlYWRlck1hcCk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6YWRkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQXBwbGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckFwcGxldDo6
flJlbmRlckFwcGxldCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckFwcGxldC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQnV0dG9uOjp+UmVuZGVyQnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0
dG9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6flJlbmRlckNvdW50ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6flJlbmRlckZvcmVpZ25PYmplY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckZyYW1lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFz
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxp
bmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJx
dWVlOjp+UmVuZGVyTWFycXVlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJQYXRoOjp+UmVuZGVyUGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBh
dGguaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHQmxvY2suaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0NvbnRhaW5lcjo6flJlbmRlclNWR0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNWR0NvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSW5saW5lLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6flJlbmRlclNWR0lubGluZVRleHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmVUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNWR01vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jv
b3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6flJlbmRlclNWR1Jvb3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSb290Lmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNWR1RTcGFuLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1RleHQu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dFBhdGguaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6flJlbmRl
clRhYmxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ29sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0RnJhZ21lbnQ6On5SZW5kZXJUZXh0RnJhZ21lbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV29y
ZEJyZWFrLmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6flNWR1N0eWxlZEVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50Ojp+U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpOgorICAgICAgICAqIHN2
Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oOgorICAgICAgICAqIHhtbC9YUGF0aFBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6UGFyc2VyOjp+UGFyc2VyKToKKyAg
ICAgICAgKiB4bWwvWFBhdGhQYXJzZXIuaDoKKwogMjAxMC0xMC0wOCAgTWloYWkgUGFycGFyaXRh
ICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRo
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KaW5kZXggZWZmOTlkOGQ2ZThjMTY4ZmJkMjVkYmFmMmFjNzA3MGNkNDZhNDYxOC4uZDFk
YzAyMWY5YzMzNWQzNWE0ZTZkMjI0MTE1YjBkYTkzNWE3NTI2MCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNzQsNiAr
MTc0LDggQEAgX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjRsb2FkRVJLTlNfMTVSZXNvdXJjZVJl
cXVlc3RFYgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjZyZWxvYWRFYgogX19aTjdXZWJDb3Jl
MTFHZW9sb2NhdGlvbjEyc2V0SXNBbGxvd2VkRWIKIF9fWk43V2ViQ29yZTExR2VvbG9jYXRpb25E
MUV2CitfX1pON1dlYkNvcmUxM0hUVFBIZWFkZXJNYXBDMUV2CitfX1pON1dlYkNvcmUxM0hUVFBI
ZWFkZXJNYXBEMUV2CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTB0YXJnZXRJdGVtRXYKIF9f
Wk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMXNldFJlZmVycmVyRVJLTjNXVEY2U3RyaW5nRQogX19a
TjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEyYWRkQ2hpbGRJdGVtRU4zV1RGMTBQYXNzUmVmUHRySVMw
X0VFCkBAIC0yNjcsNiArMjY5LDcgQEAgX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXIyNGNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEyU2hhcmVk
QnVmZmVyQzFFUEtjaQogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXJEMUV2CiBfX1pON1dlYkNv
cmUxMlRleHRFbmNvZGluZ0MxRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTJUZXh0SXRl
cmF0b3JEMUV2CiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhFUEtOU181
UmFuZ2VFYgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoRVBOU183RWxlbWVudEVpaWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yN2FkdmFu
Y2VFdgpAQCAtODc3LDYgKzg4MCw3IEBAIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMTZvdXRn
b2luZ1JlZmVycmVyRXYKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMjBhY3RpdmVEb2N1bWVu
dExvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjI3bnVtUGVuZGluZ09yTG9hZGlu
Z1JlcXVlc3RzRWIKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyOGxvYWRUeXBlRXYKK19fWk5L
N1dlYkNvcmUxM0hUVFBIZWFkZXJNYXAzZ2V0RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk5L
N1dlYkNvcmUxMUhpc3RvcnlJdGVtMTB2aXNpdENvdW50RXYKIF9fWk5LN1dlYkNvcmUxMUhpc3Rv
cnlJdGVtMTFoYXNDaGlsZHJlbkV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTExc2Nyb2xs
UG9pbnRFdgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAg
Yi9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmNwcAppbmRleCAzMjYwYWY0NjJiMGFi
Y2EyNjA5ZTU5NzQxNWU1ZTZiOGU0YjQ5NjFiLi44ZDQ3MjFhNWZhYmM1Y2QzZGE1ODA2YWVmZWU4
ZWFjNmI0Y2ZkOTJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVZhbHVl
LmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmNwcApAQCAtMzQsNiAr
MzQsMTAgQEAgQ1NTQm9yZGVySW1hZ2VWYWx1ZTo6Q1NTQm9yZGVySW1hZ2VWYWx1ZShQYXNzUmVm
UHRyPENTU1ZhbHVlPiBpbWFnZSwgUGFzc1JlZlB0cjwKIHsKIH0KIAorQ1NTQm9yZGVySW1hZ2VW
YWx1ZTo6fkNTU0JvcmRlckltYWdlVmFsdWUoKQoreworfQorCiBTdHJpbmcgQ1NTQm9yZGVySW1h
Z2VWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgLy8gSW1hZ2UgZmlyc3QuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVZhbHVlLmggYi9XZWJDb3JlL2Nzcy9DU1NC
b3JkZXJJbWFnZVZhbHVlLmgKaW5kZXggMjM4MzJiOGNiNjFhMzQxMDBkMDdkNWMwY2MyM2E4ZGVh
ZWQzMjkyMC4uYTE3ZGY3ZGYyMDBmNDJlZWJkMTRjNjQ2ODQyNWM2NGMyZGEzNDNmZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oCisrKyBiL1dlYkNvcmUvY3Nz
L0NTU0JvcmRlckltYWdlVmFsdWUuaApAQCAtMzUsNiArMzUsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0JvcmRlckltYWdlVmFsdWUoaW1hZ2UsIHNs
aWNlUmVjdCwgaG9yaXpvbnRhbFJ1bGUsIHZlcnRpY2FsUnVsZSkpOwogICAgIH0KKyAgICB2aXJ0
dWFsIH5DU1NCb3JkZXJJbWFnZVZhbHVlKCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUu
Y3BwIGIvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXggNWIyMDRkNzZi
ZTlhYWFhNjU5MTdmOWEzY2ZjOTVjOWIxNDMwODUwZS4uZDk1MWU1ZDMzMDRjNjMwNzA0M2U4NjQy
ODAzMGU5NmViNTBlYzdlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTMx
LDYgKzMxLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ1NTRm9udEZhY2VTcmNWYWx1
ZTo6fkNTU0ZvbnRGYWNlU3JjVmFsdWUoKQoreworfQorCiAjaWYgRU5BQkxFKFNWR19GT05UUykK
IGJvb2wgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6aXNTVkdGb250RmFjZVNyYygpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmggYi9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKaW5kZXggMjJmMWJlN2JkNThlYzcyZWQ3ODQ3MTFlOTdh
ZmMwYzZiZWJhYTM0Ni4uNTcwNjUyZDcxMTUxZmQyOWE0NzJkOTI5ZWRiNWFiNjdiMTI2ZGIzMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTRm9udEZhY2VTcmNWYWx1ZShyZXNvdXJjZSwg
dHJ1ZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkNTU0ZvbnRGYWNlU3JjVmFsdWUoKSB7IH0K
KyAgICB2aXJ0dWFsIH5DU1NGb250RmFjZVNyY1ZhbHVlKCk7CiAKICAgICBjb25zdCBTdHJpbmcm
IHJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZTsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCBiL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUu
aAppbmRleCBlOTU0NWExYWQ5OTQ3ZmYwM2Q3ZTQ2YjU3ZGM3MGMzOThjNWVjNDgzLi4xZDczZjMz
ZWRkM2JmYzU4NmE5Y2Y1NjMyMzNiZmQyM2MzNTgwYTc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nz
cy9DU1NGdW5jdGlvblZhbHVlLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5o
CkBAIC00MCwxNCArNDAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IENTU0Z1bmN0aW9uVmFsdWUoZnVuY3Rpb24pKTsKICAgICB9CiAKLSAgICB+Q1NTRnVuY3Rpb25W
YWx1ZSgpOworICAgIHZpcnR1YWwgfkNTU0Z1bmN0aW9uVmFsdWUoKTsKICAgICAKICAgICB2aXJ0
dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIENTU1BhcnNlclZhbHVl
IHBhcnNlclZhbHVlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ1NTRnVuY3Rpb25WYWx1ZShD
U1NQYXJzZXJGdW5jdGlvbiopOworICAgIGV4cGxpY2l0IENTU0Z1bmN0aW9uVmFsdWUoQ1NTUGFy
c2VyRnVuY3Rpb24qKTsKICAgICAKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IG1fYXJnczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNl
cnRlZEV2ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcApp
bmRleCBhZjg2ZDY2NTI0N2U3ZDg2OTI4MGFjMjc4MmU0Y2I5M2YyZTUzMzA4Li40NzJlZWZjODVh
MjcyY2Q4MTRkNmMwMTAwMGZjZjY0YmE1N2Q0YTg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9C
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vQmVmb3JlVGV4dElu
c2VydGVkRXZlbnQuY3BwCkBAIC0zNSw0ICszNSw4IEBAIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50
OjpCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiB9CiAKK0Jl
Zm9yZVRleHRJbnNlcnRlZEV2ZW50Ojp+QmVmb3JlVGV4dEluc2VydGVkRXZlbnQoKQoreworfQor
CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oIGIv
V2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaAppbmRleCBmMmEyYWM0MTIwM2My
OWU4OWJhMjhhNDc0NThlNTQ1MGJkM2NkODA2Li5hNjk2NmZmOTQzOTBiZmYyODBiMmI2OGY4NGMy
ODUyNGVhNWQxNWY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRF
dmVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmgKQEAgLTMy
LDYgKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCZWZvcmVUZXh0SW5zZXJ0
ZWRFdmVudCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6CisgICAgdmlydHVhbCB+QmVmb3JlVGV4
dEluc2VydGVkRXZlbnQoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJlZm9yZVRleHRJbnNl
cnRlZEV2ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCh0ZXh0KSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVudC5jcHAgYi9XZWJDb3JlL2RvbS9CZWZv
cmVVbmxvYWRFdmVudC5jcHAKaW5kZXggOTdkN2Y5NzQ5MGZlMGU2NDQxMTcxM2M3YTE5MzIwNzlh
MjU1MzRiZC4uMTlhZGNhYjMwYmQ1ZTdhZDA4NjI0YjhlNjU3MTM1NGI1N2M4NGZkNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vQmVmb3JlVW5sb2FkRXZlbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9t
L0JlZm9yZVVubG9hZEV2ZW50LmNwcApAQCAtMzIsNiArMzIsMTAgQEAgQmVmb3JlVW5sb2FkRXZl
bnQ6OkJlZm9yZVVubG9hZEV2ZW50KCkKIHsKIH0KIAorQmVmb3JlVW5sb2FkRXZlbnQ6On5CZWZv
cmVVbmxvYWRFdmVudCgpCit7Cit9CisKIGJvb2wgQmVmb3JlVW5sb2FkRXZlbnQ6OnN0b3Jlc1Jl
c3VsdEFzU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0JlZm9yZVVubG9hZEV2ZW50LmggYi9XZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRF
dmVudC5oCmluZGV4IDI2NDQ2OTNkYjRkZGE3YWI3NzcyZjM5ZWY3MzA5OWEwM2NlNWJiNDEuLjEz
NmU4NWMzNTk2NGNjYmJkODI5MTY3MDIzYTgwMDVmN2I2MzZiZmIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0JlZm9yZVVubG9hZEV2ZW50LmgKKysrIGIvV2ViQ29yZS9kb20vQmVmb3JlVW5sb2Fk
RXZlbnQuaApAQCAtMzAsNiArMzAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFz
cyBCZWZvcmVVbmxvYWRFdmVudCA6IHB1YmxpYyBFdmVudCB7CiAgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIH5CZWZvcmVVbmxvYWRFdmVudCgpOworCiAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJlZm9yZVVubG9hZEV2ZW50PiBjcmVhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEJlZm9yZVVubG9hZEV2ZW50KTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL0NsYXNzTm9kZUxpc3QuaCBiL1dlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuaAppbmRl
eCBlYTA0OGEyOGFiMmJkZjAwNzhiY2U2MmRlZDExOGQ5YmQyMmQ4ZjI5Li4xM2Q1ZDI0ZDE2NjE0
ZWYzYjJmNDYxMWMyMWUyZDM0NWYzYjA1YTIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DbGFz
c05vZGVMaXN0LmgKKysrIGIvV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjZGVmaW5lIENsYXNzTm9kZUxpc3RfaAogCiAjaW5jbHVkZSAiRHluYW1pY05vZGVM
aXN0LmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ2xpcGJvYXJk
RXZlbnQuY3BwIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkRXZlbnQuY3BwCmluZGV4IDNjNDI3ZTEy
NjBiYjIxZTcxNzFjMzU1N2JkMWI5M2E5ZWFlY2Y2OWMuLmI2NDcwM2Q3YjNkNzUxYTgwODQ0NzE0
YTgzMTU0OWY1NjRkMWE3YzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50
LmNwcAorKysgYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5jcHAKQEAgLTM0LDYgKzM0LDEw
IEBAIENsaXBib2FyZEV2ZW50OjpDbGlwYm9hcmRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvCiB7CiB9CiAKK0NsaXBib2FyZEV2ZW50Ojp+Q2xp
cGJvYXJkRXZlbnQoKQoreworfQorCiBib29sIENsaXBib2FyZEV2ZW50Ojppc0NsaXBib2FyZEV2
ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L0NsaXBib2FyZEV2ZW50LmggYi9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5oCmluZGV4IGI5
YmM3MDVjNzM1NDY1NmI2Y2MxNWM5NDUzNmE3YWU2NjdhNDM0NjUuLjQyNzQxZTY0ZGY0ZmIwYTQ3
MzFkY2UwMzYzMjA1OTRiMGQ4YzI3ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NsaXBib2Fy
ZEV2ZW50LmgKKysrIGIvV2ViQ29yZS9kb20vQ2xpcGJvYXJkRXZlbnQuaApAQCAtMzEsNiArMzEs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDbGlwYm9hcmRFdmVudCA6IHB1
YmxpYyBFdmVudCB7CiAgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGlwYm9hcmRFdmVu
dCgpOworCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEV2ZW50PiBjcmVhdGUo
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEV2
ZW50KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcCBiL1dlYkNvcmUv
ZG9tL0N1c3RvbUV2ZW50LmNwcAppbmRleCBjMzc3MDYzYjdhZTVmYTcxNWQxYTU4ZDZmZTk2NGZh
ODAzMzc0ZjExLi41M2UyNTVkOWIwNTVhZWYzOGQzZjE5ZTQ1ZGI0Yzk5NmEwZWM1NTY0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ3Vz
dG9tRXZlbnQuY3BwCkBAIC0zNCw2ICszNCwxMCBAQCBDdXN0b21FdmVudDo6Q3VzdG9tRXZlbnQo
KQogewogfQogCitDdXN0b21FdmVudDo6fkN1c3RvbUV2ZW50KCkKK3sKK30KKwogdm9pZCBDdXN0
b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgU2NyaXB0VmFsdWUgZGV0YWlsKQogewogICAgIGlm
IChkaXNwYXRjaGVkKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oIGIv
V2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaAppbmRleCA4MzcyYWYyYTk5NmU0MDUwNDgyNTM3YjEy
MjQ0YzQwZTViMDZkYzAyLi42NWMzZjA0NjBjZDYyOTdkOTNiZDhmZTc3NDc2ZTFjNGFmZDc2NjA0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCisrKyBiL1dlYkNvcmUvZG9t
L0N1c3RvbUV2ZW50LmgKQEAgLTM0LDYgKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDdXN0b21FdmVudCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6CisgICAgdmlydHVhbCB+
Q3VzdG9tRXZlbnQoKTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEN1c3RvbUV2ZW50PiBjcmVh
dGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdXN0b21FdmVudCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCmluZGV4IDYwYTEwNjNjNGQyOGQyODJmNjc3MzY2NzNjNDNjY2RlOGU2YWNmZjQuLjY3ZTBm
ZDBhYzViMzVkMTJkZDUwYWE0NTQ5ZmIzYzhmOWQ1YTJjODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC05NCw2ICs5
NCwxMSBAQCBOb2RlUmFyZURhdGEqIEVsZW1lbnQ6OmNyZWF0ZVJhcmVEYXRhKCkKICAgICByZXR1
cm4gbmV3IEVsZW1lbnRSYXJlRGF0YTsKIH0KIAorREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKEVsZW1lbnQsIGJsdXIpOworREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKEVsZW1lbnQsIGVycm9yKTsKK0RFRklORV9WSVJUVUFMX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihFbGVtZW50LCBmb2N1cyk7CitERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoRWxlbWVudCwgbG9hZCk7CisKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gRWxlbWVudDo6ZGVwcmVjYXRlZENyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBT
dHJpbmcmIG1hcmt1cCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlwdGluZ1Blcm1p
c3Npb24pCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1l
bnQoKS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RWxlbWVudC5oIGIvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGI1MWU3NTBhNTFkMDhjYmYx
NmQ3OTU2ZGE5ZjFkMmRmMDNmNWQ0MDcuLmFhMjk3MjkxNDU5Njk4MDQxMmUxYTE4Yjg1Mjk2Mjc5
ZWNiMDNkZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKQEAgLTc0LDEwICs3NCwxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVz
ZSBmb3VyIGF0dHJpYnV0ZSBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZXMgYXJlIG92ZXJyaWRkZW4g
YnkgSFRNTEJvZHlFbGVtZW50CiAgICAgLy8gYW5kIEhUTUxGcmFtZVNldEVsZW1lbnQgdG8gZm9y
d2FyZCB0byB0aGUgRE9NV2luZG93LgotICAgIERFRklORV9WSVJUVUFMX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihibHVyKTsKLSAgICBERUZJTkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoZXJyb3IpOwotICAgIERFRklORV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uihmb2N1cyk7Ci0gICAgREVGSU5FX1ZJUlRVQUxfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGxv
YWQpOworICAgIERFQ0xBUkVfVklSVFVBTF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYmx1cik7
CisgICAgREVDTEFSRV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7Cisg
ICAgREVDTEFSRV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihmb2N1cyk7CisgICAg
REVDTEFSRV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihsb2FkKTsKIAogICAgIC8v
IFdlYktpdCBleHRlbnNpb25zCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihi
ZWZvcmVjdXQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDlkYjQxNzRkOWNmYTI2ZDRmM2JlNGNhYWVh
ZjI1ZDBjN2ZkZmJiMDAuLjQyY2JiMzJiMjFlODJhNzM2NjRmMTc0YWIyODY4MzNmOWU0ODZhYjUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5jcHAKQEAgLTY2LDYgKzY2LDEwIEBAIGJvb2wgZXZlbnREaXNwYXRjaEZv
cmJpZGRlbigpCiB9CiAjZW5kaWYgLy8gTkRFQlVHCiAKK0V2ZW50VGFyZ2V0RGF0YTo6RXZlbnRU
YXJnZXREYXRhKCkKK3sKK30KKwogRXZlbnRUYXJnZXREYXRhOjp+RXZlbnRUYXJnZXREYXRhKCkK
IHsKICAgICBkZWxldGVBbGxWYWx1ZXMoZXZlbnRMaXN0ZW5lck1hcCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRl
eCBkZTdjMmUwYTI1YTM4MGRjNTg5YjU2YzRiNjZmZDBkMGFmNDg1MzliLi5mZWZmNGFlMTI0ZDQ5
YmRjM2RlNTc4MjAyZjA4OTlmMjRjM2Y5YTljIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTgzLDYgKzgzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IEV2ZW50TGlzdGVuZXJWZWN0b3IqPiBFdmVudExpc3RlbmVyTWFwOwogCiAgICAgc3RydWN0IEV2
ZW50VGFyZ2V0RGF0YSA6IE5vbmNvcHlhYmxlIHsKKyAgICAgICAgRXZlbnRUYXJnZXREYXRhKCk7
CiAgICAgICAgIH5FdmVudFRhcmdldERhdGEoKTsKIAogICAgICAgICBFdmVudExpc3RlbmVyTWFw
IGV2ZW50TGlzdGVuZXJNYXA7CkBAIC0xNzcsOSArMTc4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgRXZlbnRMaXN0ZW5lciogb24jI2F0dHJpYnV0ZSgpIHsgcmV0dXJuIGdldEF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmF0dHJpYnV0ZSMjRXZlbnQpOyB9IFwK
ICAgICAgICAgdm9pZCBzZXRPbiMjYXR0cmlidXRlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXR0cmli
dXRlIyNFdmVudCwgbGlzdGVuZXIpOyB9IFwKIAotICAgICNkZWZpbmUgREVGSU5FX1ZJUlRVQUxf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGF0dHJpYnV0ZSkgXAotICAgICAgICB2aXJ0dWFsIEV2
ZW50TGlzdGVuZXIqIG9uIyNhdHRyaWJ1dGUoKSB7IHJldHVybiBnZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5hdHRyaWJ1dGUjI0V2ZW50KTsgfSBcCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBzZXRPbiMjYXR0cmlidXRlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVu
ZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXR0cmlidXRlIyNF
dmVudCwgbGlzdGVuZXIpOyB9IFwKKyAgICAjZGVmaW5lIERFQ0xBUkVfVklSVFVBTF9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoYXR0cmlidXRlKSBcCisgICAgICAgIHZpcnR1YWwgRXZlbnRMaXN0
ZW5lciogb24jI2F0dHJpYnV0ZSgpOyBcCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRPbiMjYXR0
cmlidXRlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpOyBcCisKKyAgICAjZGVm
aW5lIERFRklORV9WSVJUVUFMX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0eXBlLCBhdHRyaWJ1
dGUpIFwKKyAgICAgICAgRXZlbnRMaXN0ZW5lciogdHlwZTo6b24jI2F0dHJpYnV0ZSgpIHsgcmV0
dXJuIGdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmF0dHJpYnV0ZSMjRXZl
bnQpOyB9IFwKKyAgICAgICAgdm9pZCB0eXBlOjpzZXRPbiMjYXR0cmlidXRlKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIpIHsgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuYXR0cmlidXRlIyNFdmVudCwgbGlzdGVuZXIpOyB9IFwKIAogICAgICNkZWZpbmUg
REVGSU5FX1dJTkRPV19BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYXR0cmlidXRlKSBcCiAgICAg
ICAgIEV2ZW50TGlzdGVuZXIqIG9uIyNhdHRyaWJ1dGUoKSB7IHJldHVybiBkb2N1bWVudCgpLT5n
ZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hdHRyaWJ1dGUjI0V2
ZW50KTsgfSBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwIGIvV2Vi
Q29yZS9kb20vSW5wdXRFbGVtZW50LmNwcAppbmRleCBiMmE5NzE0NTIyY2Y0NmJmZmE2ZTkzMzE3
YjBhY2YxZDM3OTlmN2ZlLi5lY2FlMjA2YTI1MWNlY2IwNjQ0ZDEzZWYyMmY0MDllOGUwNjQ4YjIx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0lucHV0RWxlbWVudC5jcHAKQEAgLTI3OSw2ICsyNzksMTAgQEAgSW5wdXRFbGVtZW50RGF0
YTo6SW5wdXRFbGVtZW50RGF0YSgpCiB7CiB9CiAKK0lucHV0RWxlbWVudERhdGE6On5JbnB1dEVs
ZW1lbnREYXRhKCkKK3sKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBJbnB1dEVsZW1lbnREYXRh
OjpuYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9uYW1lLmlzTnVsbCgpID8gZW1wdHlBdG9t
IDogbV9uYW1lOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmggYi9XZWJD
b3JlL2RvbS9JbnB1dEVsZW1lbnQuaAppbmRleCBkNWNlMjEyZGZhMzVmN2QzZTlkMjUwOTFhNjdh
Zjk1MzUwM2NhNTU4Li4zNDc4NGJjN2U3ZDM3YzA3NDZmNTVjNTFkNjAxODg5ODk3ODczNThlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9J
bnB1dEVsZW1lbnQuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHByb3RlY3RlZDoKIGNsYXNzIElucHV0
RWxlbWVudERhdGEgewogcHVibGljOgogICAgIElucHV0RWxlbWVudERhdGEoKTsKKyAgICB+SW5w
dXRFbGVtZW50RGF0YSgpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9uYW1lID0g
dmFsdWU7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuY3BwIGIvV2Vi
Q29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAKaW5kZXggNThiY2UxZjZhYjViOGQ3YzY5YWUxMzIy
MmEyNjgxMWViODA3MTEwNi4uODkwNzQyZjExMzU2ZjA2OTQzOTliNzFkODQ1MWVlMDNjNTgyYTNl
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vTXV0YXRpb25FdmVudC5jcHAKQEAgLTQyLDYgKzQyLDEwIEBAIE11dGF0aW9uRXZlbnQ6
Ok11dGF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jCiB7CiB9CiAKK011dGF0aW9uRXZlbnQ6On5NdXRhdGlvbkV2ZW50KCkKK3sKK30K
Kwogdm9pZCBNdXRhdGlvbkV2ZW50Ojppbml0TXV0YXRpb25FdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8Tm9k
ZT4gcmVsYXRlZE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0cmluZyYgcHJldlZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGF0dHJOYW1lLCB1bnNp
Z25lZCBzaG9ydCBhdHRyQ2hhbmdlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTXV0YXRpb25F
dmVudC5oIGIvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCmluZGV4IDI5Yjk3OGMzMGIzOGM2
ZDQwNTEwMmI4NWYyODc5ODMyYmJlNTYxOTcuLmYyYmE3NTk2N2FkYjA0ODkwYjViMmNlYTk4YWI0
M2ZiZTEwYTFlMGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuaAorKysg
Yi9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmgKQEAgLTMxLDYgKzMxLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgY2xhc3MgTXV0YXRpb25FdmVudCA6IHB1YmxpYyBFdmVudCB7CiAg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5NdXRhdGlvbkV2ZW50KCk7CisKICAgICAgICAg
ZW51bSBhdHRyQ2hhbmdlVHlwZSB7CiAgICAgICAgICAgICBNT0RJRklDQVRJT04gICAgPSAxLAog
ICAgICAgICAgICAgQURESVRJT04gICAgICAgID0gMiwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZjU0ZmVjNzEyZmFjMjRlM2E4
ODVlMmU0YzAyZDlkMzliMzQ1NjQ2MS4uYWI5ZGMwMmM1NmIyOWNjYjgyNzM0MjAwNjk4NjdhMjRj
ZTgxYWY3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTczMSw2ICs3MzEsMTYgQEAgaW5saW5lIHZvaWQgTm9kZTo6bWFya0Fu
Y2VzdG9yc1dpdGhDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKQogICAgICAgICBkb2N1bWVudCgpLT5z
Y2hlZHVsZVN0eWxlUmVjYWxjKCk7CiB9CiAKK3ZvaWQgTm9kZTo6cmVmRXZlbnRUYXJnZXQoKQor
eworICAgIHJlZigpOworfQorCit2b2lkIE5vZGU6OmRlcmVmRXZlbnRUYXJnZXQoKQoreworICAg
IGRlcmVmKCk7Cit9CisKIHZvaWQgTm9kZTo6c2V0TmVlZHNTdHlsZVJlY2FsYyhTdHlsZUNoYW5n
ZVR5cGUgY2hhbmdlVHlwZSkKIHsKICAgICBBU1NFUlQoY2hhbmdlVHlwZSAhPSBOb1N0eWxlQ2hh
bmdlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuaCBiL1dlYkNvcmUvZG9tL05vZGUu
aAppbmRleCA1ODdlZmZkMGZlODIyNzQ3Njk1NTA2NDRlOTJkZWY1YTgzOTI5NDBhLi5iMzU4MDk0
YjU2YjdlZTFhZmYyOTM2N2U4NTZiYmVkN2IxM2JkMDhmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC02ODcsOCArNjg3LDggQEAgcHJp
dmF0ZToKICAgICAvLyBVc2VkIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBsYXp5QXR0YWNoIGFuZCBz
ZXROZWVkc1N0eWxlUmVjYWxjLgogICAgIHZvaWQgbWFya0FuY2VzdG9yc1dpdGhDaGlsZE5lZWRz
U3R5bGVSZWNhbGMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVm
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpOworICAgIHZpcnR1YWwgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCk7CiAKICAgICB2aXJ0dWFsIE5vZGVSYXJlRGF0YSogY3JlYXRlUmFyZURh
dGEoKTsKICAgICBOb2RlKiBjb250YWluZXJDaGlsZE5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5jcHAgYi9XZWJDb3JlL2Rv
bS9PcHRpb25FbGVtZW50LmNwcAppbmRleCAyNDBhOGZjNzg3Y2I4NzBkMjE4YTBkMTc0NGQ1ZTk3
MWQ5OGRkNzJlLi5hYjc4NjNlNzVhNmY1ZjM2ODkxNTIwOTdiYWFmOTFkY2FhNmE1NTYwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9PcHRpb25FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9P
cHRpb25FbGVtZW50LmNwcApAQCAtMTM0LDYgKzEzNCwxMCBAQCBPcHRpb25FbGVtZW50RGF0YTo6
T3B0aW9uRWxlbWVudERhdGEoKQogewogfQogCitPcHRpb25FbGVtZW50RGF0YTo6fk9wdGlvbkVs
ZW1lbnREYXRhKCkKK3sKK30KKwogT3B0aW9uRWxlbWVudCogdG9PcHRpb25FbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiBlbGVt
ZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b3B0aW9uVGFnKSkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL09wdGlvbkVsZW1lbnQuaCBiL1dlYkNvcmUvZG9tL09wdGlvbkVsZW1lbnQuaAppbmRl
eCAyMzJjM2VlNWQ3Y2ZlN2RkZGY3NDZiNGFlMmJmNGQ5M2JkYzMxYTI1Li45ZmY1Y2Q1ZGQ2Y2M4
YzM3ZjUzODg0ZjFiNTQ4ZGJiYzM4NTMwZDZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9PcHRp
b25FbGVtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vT3B0aW9uRWxlbWVudC5oCkBAIC01OCw2ICs1
OCw3IEBAIHByaXZhdGU6CiBjbGFzcyBPcHRpb25FbGVtZW50RGF0YSB7CiBwdWJsaWM6CiAgICAg
T3B0aW9uRWxlbWVudERhdGEoKTsKKyAgICB+T3B0aW9uRWxlbWVudERhdGEoKTsKIAogICAgIFN0
cmluZyB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICB2b2lkIHNldFZhbHVl
KGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgbV92YWx1ZSA9IHZhbHVlOyB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcCBiL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQu
Y3BwCmluZGV4IGI5YWQ4NjJiYzAyOTM3YzQyOWJmMjM0NGE0M2E5OGFjNzlkMTA5YzguLmJhYzY3
NmE1OTIwODU5N2JlY2UxNDVmZDEwYzg3Mzg4NzJlZjNlMmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL1BvcFN0YXRlRXZlbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuY3Bw
CkBAIC0zNiw3ICszNiwxMSBAQCBQb3BTdGF0ZUV2ZW50OjpQb3BTdGF0ZUV2ZW50KFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCkKICAgICAsIG1fc3RhdGVPYmpl
Y3Qoc3RhdGVPYmplY3QpCiB7CiB9Ci0gICAgCisKK1BvcFN0YXRlRXZlbnQ6On5Qb3BTdGF0ZUV2
ZW50KCkKK3sKK30KKwogdm9pZCBQb3BTdGF0ZUV2ZW50Ojppbml0UG9wU3RhdGVFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCkKIHsKICAgICBpZiAo
ZGlzcGF0Y2hlZCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oIGIv
V2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCmluZGV4IDJmYjhkMDY4NWJmMGUwZDUyMmU0NmIw
OGI4YWJhZjcyNjNhNGI0MjIuLjQyZmJkNDU0ZTExZWVjOTJiZjU5OGQ2NzJlOWFhY2UzYmIwNjg0
Y2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAorKysgYi9XZWJDb3Jl
L2RvbS9Qb3BTdGF0ZUV2ZW50LmgKQEAgLTM2LDYgKzM2LDggQEAgY2xhc3MgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOwogCiBjbGFzcyBQb3BTdGF0ZUV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5Qb3BTdGF0ZUV2ZW50KCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQb3BTdGF0ZUV2ZW50PiBjcmVhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHN0YXRlT2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb3BTdGF0
ZUV2ZW50KHN0YXRlT2JqZWN0KSk7CkBAIC00Nyw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU9iamVjdC5n
ZXQoKTsgfSAgICAKIAogcHJpdmF0ZToKLSAgICBQb3BTdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPik7CisgICAgZXhwbGljaXQgUG9wU3RhdGVFdmVudChQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbV9zdGF0ZU9iamVjdDsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9RdWFs
aWZpZWROYW1lLmNwcCBiL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IDdjMjlj
ZTBmOTNiMmFiMTdjNWViYzMwZDU3NmUzZDM0MDQ4ZDI0MTAuLjkwYzZkMjkyYTBlNmRlOTEyNDFl
YjA0MWQ4MGJmZTAyZjM4YTU2M2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCkBAIC03Miw2ICs3Miwx
MSBAQCBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcCwg
Y29uc3QgY2hhciogbCwgY29uc3QgQXRvbWljUwogICAgIGluaXQocCwgQXRvbWljU3RyaW5nKGwp
LCBuKTsKIH0KIAorUXVhbGlmaWVkTmFtZTo6flF1YWxpZmllZE5hbWUoKQoreworICAgIGRlcmVm
KCk7Cit9CisKIHZvaWQgUXVhbGlmaWVkTmFtZTo6ZGVyZWYoKQogewogI2lmZGVmIFFOQU1FX0RF
RkFVTFRfQ09OU1RSVUNUT1IKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUu
aCBiL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAppbmRleCAyZGE4ZjBjNThiODg1NTljMTY5
ZTY1NzZkZDdjZmFkMjdkYWVjNjE5Li4zNGZjMDY5ZDg0MzMzNzllYTAyMDliZTc3YTFlYTA3M2I4
MzE0YzE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBR
dWFsaWZpZWROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBjaGFyKiBsb2Nh
bE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsKICAgICBRdWFsaWZpZWRO
YW1lKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX2ltcGwoaGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkpIHsgfQogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX2ltcGwgPT0gaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KLSAgICB+UXVh
bGlmaWVkTmFtZSgpIHsgZGVyZWYoKTsgfQorICAgIH5RdWFsaWZpZWROYW1lKCk7CiAjaWZkZWYg
UU5BTUVfREVGQVVMVF9DT05TVFJVQ1RPUgogICAgIFF1YWxpZmllZE5hbWUoKSA6IG1faW1wbCgw
KSB7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAppbmRleCAwMjRiYTdhZTQwZDY1OWIyMmY5
YzExMjYzMjIxMDZkM2YxMTEzM2Y1Li4xYWYwMTJlNmM3YTA3M2NkODViZmRiODc4MjNkZmMwODk2
ZmY1YmFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAorKysgYi9X
ZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcApAQCAtOTUzLDYgKzk1MywxMCBAQCBTZWxlY3RF
bGVtZW50RGF0YTo6U2VsZWN0RWxlbWVudERhdGEoKQogewogfQogCitTZWxlY3RFbGVtZW50RGF0
YTo6flNlbGVjdEVsZW1lbnREYXRhKCkKK3sKK30KKwogdm9pZCBTZWxlY3RFbGVtZW50RGF0YTo6
Y2hlY2tMaXN0SXRlbXMoY29uc3QgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICNpZiAhQVNT
RVJUX0RJU0FCTEVECmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmggYi9X
ZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKaW5kZXggNzNlMjYyMDJkOGY5YTNlMjgyYmQyZDdj
NzdlZDFlZWEyZTgwMWI5Yi4uNTM4MTVmMmFlYmU1YjA5NWJmZGEwNTg0M2U1MTRjN2UwYzkxYmEx
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUv
ZG9tL1NlbGVjdEVsZW1lbnQuaApAQCAtMTEzLDYgKzExMyw3IEBAIHByaXZhdGU6CiBjbGFzcyBT
ZWxlY3RFbGVtZW50RGF0YSB7CiBwdWJsaWM6CiAgICAgU2VsZWN0RWxlbWVudERhdGEoKTsKKyAg
ICB+U2VsZWN0RWxlbWVudERhdGEoKTsKIAogICAgIGJvb2wgbXVsdGlwbGUoKSBjb25zdCB7IHJl
dHVybiBtX211bHRpcGxlOyB9CiAgICAgdm9pZCBzZXRNdWx0aXBsZShib29sIHZhbHVlKSB7IG1f
bXVsdGlwbGUgPSB2YWx1ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNl
dE5vZGVMaXN0LmNwcCBiL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAKaW5k
ZXggZDY0MWNiNTYwYWY1YWI3MmQ2M2IyNzJlMmE5NzI1MGU0ZDRmNjg2Yy4uNmM4YzJkYjk3M2E1
ZmJjNTQ5OGJkZWZkMDAxYjYyMzdiODU5MDFkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcAorKysgYi9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuY3BwCkBAIC0zNCw2ICszNCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1N0
YXRpY0hhc2hTZXROb2RlTGlzdDo6U3RhdGljSGFzaFNldE5vZGVMaXN0KExpc3RIYXNoU2V0PFJl
ZlB0cjxOb2RlPiA+JiBub2RlcykKK3sKKyAgICBtX25vZGVzLnN3YXAobm9kZXMpOworfQorCitT
dGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OlN0YXRpY0hhc2hTZXROb2RlTGlzdCgpCit7Cit9CisKK1N0
YXRpY0hhc2hTZXROb2RlTGlzdDo6flN0YXRpY0hhc2hTZXROb2RlTGlzdCgpCit7Cit9CisKIHVu
c2lnbmVkIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9ub2Rlcy5zaXplKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0
Tm9kZUxpc3QuaCBiL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oCmluZGV4IGU5
NTQ0OTM2MGE0MzVkNzU3MWRjYTU2ZjNiNzZhMmExY2MyYzRhY2IuLmU2MGJmNDQ1MmNhY2ZlNDMx
ZTUzZDg3MDhmZDYxZmFkZTZmY2VmZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1N0YXRpY0hh
c2hTZXROb2RlTGlzdC5oCisrKyBiL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5o
CkBAIC00MSw2ICs0MSw5IEBAIGNsYXNzIE5vZGU7CiAKIGNsYXNzIFN0YXRpY0hhc2hTZXROb2Rl
TGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CiBwdWJsaWM6CisgICAgU3RhdGljSGFzaFNldE5vZGVM
aXN0KCk7CisgICAgflN0YXRpY0hhc2hTZXROb2RlTGlzdCgpOworCiAgICAgLy8gQWRvcHRzIHRo
ZSBjb250ZW50cyBvZiB0aGUgbm9kZXMgTGlzdEhhc2hTZXQuCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBhZG9wdChjb25zdCBMaXN0SGFzaFNldDxSZWZQdHI8
Tm9kZT4gPiYgbm9kZXMpCiAgICAgewpAQCAtNTcsMTAgKzYwLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgTm9kZSogaXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIFN0YXRpY0hhc2hTZXROb2RlTGlzdChMaXN0SGFzaFNldDxSZWZQdHI8Tm9k
ZT4gPiYgbm9kZXMpCi0gICAgewotICAgICAgICBtX25vZGVzLnN3YXAobm9kZXMpOwotICAgIH0K
KyAgICBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QoTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4mIG5v
ZGVzKTsKIAogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+IG1fbm9kZXM7CiB9OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL1N0eWxl
RWxlbWVudC5jcHAKaW5kZXggYzNhNzMwMDMzZWYwY2VjYTg5ZjVlOTIzZmRlOTQwY2JiYTA1NmU2
My4uZjMxODMyNjBhZjdlZDE3ODVkODRkODMwNGRhMTJiMTM2MThlYjcwZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9TdHlsZUVsZW1l
bnQuY3BwCkBAIC0zOSw2ICszOSwxMCBAQCBTdHlsZUVsZW1lbnQ6OlN0eWxlRWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgICAgICBtX3N0YXJ0TGlu
ZU51bWJlciA9IGRvY3VtZW50LT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKS0+bGluZU51bWJl
cigpOwogfQogCitTdHlsZUVsZW1lbnQ6On5TdHlsZUVsZW1lbnQoKQoreworfQorCiBTdHlsZVNo
ZWV0KiBTdHlsZUVsZW1lbnQ6OnNoZWV0KEVsZW1lbnQqIGUpCiB7CiAgICAgaWYgKCFtX3NoZWV0
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmggYi9XZWJDb3JlL2RvbS9T
dHlsZUVsZW1lbnQuaAppbmRleCAwMGU0NWVkZTIwYjYwNDU3ZWYxMTFhNDJkYzcxZDE5MDkwYzQx
MWMzLi42NWY2MzEwOTNlNGVjYTM4MGRlZjRhMjVlZDdjMWJkMWE0MTYzYjA3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9TdHlsZUVsZW1l
bnQuaApAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgU3R5bGVFbGVtZW50
IHsKIHB1YmxpYzoKICAgICBTdHlsZUVsZW1lbnQoRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBh
cnNlcik7Ci0gICAgdmlydHVhbCB+U3R5bGVFbGVtZW50KCkge30KKyAgICB2aXJ0dWFsIH5TdHls
ZUVsZW1lbnQoKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5j
cHAgYi9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAppbmRleCBiY2MzOTVmZjU5M2ZkMzhkYzgy
NDc2ZDg3ZjlhZWM2YTVmNzllMjZkLi44OGQzZTZmYTNmMDIyZWI0YzYzNWNkOGQyMmY3N2YyZTg5
OTE0YmNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAorKysgYi9XZWJD
b3JlL2RvbS9Ub3VjaEV2ZW50LmNwcApAQCAtMzEsNiArMzEsMTAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitUb3VjaEV2ZW50OjpUb3VjaEV2ZW50KCkKK3sKK30KKwogVG91Y2hFdmVudDo6
VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywK
ICAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCAKICAgICAgICAgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCkBAIC00Myw2ICs0NywxMCBAQCBU
b3VjaEV2ZW50OjpUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0KiB0YXJn
ZXRUb3VjaGVzLAogewogfQogCitUb3VjaEV2ZW50Ojp+VG91Y2hFdmVudCgpCit7Cit9CisKIHZv
aWQgVG91Y2hFdmVudDo6aW5pdFRvdWNoRXZlbnQoVG91Y2hMaXN0KiB0b3VjaGVzLCBUb3VjaExp
c3QqIHRhcmdldFRvdWNoZXMsCiAgICAgICAgIFRvdWNoTGlzdCogY2hhbmdlZFRvdWNoZXMsIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCiAgICAgICAgIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3
PiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQgY2xpZW50
WSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBiL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuaAppbmRleCAwODBhNDk1NzQ5MDBkMjVjYmFkODBjNjg1ZGZkY2Y4M2RiYjcwZmQ5
Li4xNTE0Y2Y4YjA0ZmJiODgxZWMxMzcwZGQ0YzJjMmVmNzQyMzcxM2I0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKKysrIGIvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBA
IC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVG91Y2hFdmVudCA6
IHB1YmxpYyBNb3VzZVJlbGF0ZWRFdmVudCB7CiBwdWJsaWM6CisgICAgdmlydHVhbCB+VG91Y2hF
dmVudCgpOworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VG91Y2hFdmVudD4gY3JlYXRlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVG91Y2hFdmVudCk7CkBAIC02MSw3ICs2
Myw3IEBAIHB1YmxpYzoKICAgICBUb3VjaExpc3QqIGNoYW5nZWRUb3VjaGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jaGFuZ2VkVG91Y2hlcy5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFRvdWNoRXZl
bnQoKSB7fQorICAgIFRvdWNoRXZlbnQoKTsKICAgICBUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91
Y2hlcywgVG91Y2hMaXN0KiB0YXJnZXRUb3VjaGVzLAogICAgICAgICAgICAgVG91Y2hMaXN0KiBj
aGFuZ2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLAogICAgICAgICAgICAgUGFz
c1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdl
WCwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAg
Yi9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDM1NmE3MTcw
NjIxYTEyODY4ZWQwMmQzOTVmZjVkZDE0OWZkNmVmOTYuLmYyN2EyZTU5NWVlNGMyYjVjNjc5ODkx
ZmMzY2YxODkwYjBhOTI5MmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcApAQCAtNzcsNiArNzcsMTAgQEAgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OkNvbXBvc2l0ZUVk
aXRDb21tYW5kKERvY3VtZW50ICpkb2N1bWVudCkKIHsKIH0KIAorQ29tcG9zaXRlRWRpdENvbW1h
bmQ6On5Db21wb3NpdGVFZGl0Q29tbWFuZCgpCit7Cit9CisKIHZvaWQgQ29tcG9zaXRlRWRpdENv
bW1hbmQ6OmRvVW5hcHBseSgpCiB7CiAgICAgc2l6ZV90IHNpemUgPSBtX2NvbW1hbmRzLnNpemUo
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oIGIv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKaW5kZXggZjgzOWE3Mjg5ODVk
MDZhYzViODllZmZjMzNjMWExYmI5MzJiZjljZC4uNDM5NzQ2NGI5YWU3MjU1ZTljZDgwNmY3MDA0
NWE4MjViNjQ5NjBhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAg
LTM5LDEwICszOSwxMiBAQCBjbGFzcyBUZXh0OwogCiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFu
ZCA6IHB1YmxpYyBFZGl0Q29tbWFuZCB7CiBwdWJsaWM6CisgICAgdmlydHVhbCB+Q29tcG9zaXRl
RWRpdENvbW1hbmQoKTsKKwogICAgIGJvb2wgaXNGaXJzdENvbW1hbmQoRWRpdENvbW1hbmQqIGNv
bW1hbmQpIHsgcmV0dXJuICFtX2NvbW1hbmRzLmlzRW1wdHkoKSAmJiBtX2NvbW1hbmRzLmZpcnN0
KCkgPT0gY29tbWFuZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ29tcG9zaXRlRWRpdENvbW1hbmQo
RG9jdW1lbnQqKTsKKyAgICBleHBsaWNpdCBDb21wb3NpdGVFZGl0Q29tbWFuZChEb2N1bWVudCop
OwogCiAgICAgLy8KICAgICAvLyBzdWdhcnktc3dlZXQgY29udmVuaWVuY2UgZnVuY3Rpb25zIHRv
IGhlbHAgY3JlYXRlIGFuZCBhcHBseSBlZGl0IGNvbW1hbmRzIGluIGNvbXBvc2l0ZSBjb21tYW5k
cwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCAwNjEyOTg2YTg5N2RkNDk4MWExNTJlNmFm
ZDA5ZjJlOTkwZGQ3MDk3Li5kYTMwZDhmNmQ0YjE1MzY2NzQzZWI5ZTY5NWNhOGVkNDE3ZDk1YmNm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMTEyLDYgKzExMiwxMCBAQCBCaXRTdGFj
azo6Qml0U3RhY2soKQogewogfQogCitCaXRTdGFjazo6fkJpdFN0YWNrKCkKK3sKK30KKwogdm9p
ZCBCaXRTdGFjazo6cHVzaChib29sIGJpdCkKIHsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fc2l6
ZSAvIGJpdHNJbldvcmQ7CkBAIC0zMzYsNiArMzQwLDEwIEBAIFRleHRJdGVyYXRvcjo6VGV4dEl0
ZXJhdG9yKGNvbnN0IFJhbmdlKiByLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvcikKICAg
ICBhZHZhbmNlKCk7CiB9CiAKK1RleHRJdGVyYXRvcjo6flRleHRJdGVyYXRvcigpCit7Cit9CisK
IHZvaWQgVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKIHsKICAgICAvLyByZXNldCB0aGUgcnVuIGlu
Zm9ybWF0aW9uCkBAIC0xNDU2LDYgKzE0NjQsMTAgQEAgV29yZEF3YXJlSXRlcmF0b3I6OldvcmRB
d2FyZUl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByKQogICAgIGFkdmFuY2UoKTsgLy8gZ2V0IGluIHBv
c2l0aW9uIG92ZXIgdGhlIGZpcnN0IGNodW5rIG9mIHRleHQKIH0KIAorV29yZEF3YXJlSXRlcmF0
b3I6On5Xb3JkQXdhcmVJdGVyYXRvcigpCit7Cit9CisKIC8vIFdlJ3JlIGFsd2F5cyBpbiBvbmUg
b2YgdGhlc2UgbW9kZXM6CiAvLyAtIFRoZSBjdXJyZW50IGNodW5rIGluIHRoZSB0ZXh0IGl0ZXJh
dG9yIGlzIG91ciBjdXJyZW50IGNodW5rCiAvLyAgICAgICh0eXBpY2FsbHkgaXRzIGEgcGllY2Ug
b2Ygd2hpdGVzcGFjZSwgb3IgdGV4dCB0aGF0IGVuZGVkIHdpdGggd2hpdGVzcGFjZSkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuaAppbmRleCA3ZmQ4N2JkYWM4YzQzZjRiM2M5ZGY2ODUxZGFhNzcyZTRlMTdm
MmY2Li4xYmQ4ODI4OGNhZmUzYTU4OGI1MzlhMmQ1Njc2OWZjYzZlYzVkODlmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5oCkBAIC02NCw2ICs2NCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IGZpbmRQbGFp
blRleHQoY29uc3QgUmFuZ2UqLCBjb25zdCBTdHJpbmcmLCBib29sIGZvcndhcmQsIGJvb2wKIGNs
YXNzIEJpdFN0YWNrIHsKIHB1YmxpYzoKICAgICBCaXRTdGFjaygpOworICAgIH5CaXRTdGFjaygp
OwogCiAgICAgdm9pZCBwdXNoKGJvb2wpOwogICAgIHZvaWQgcG9wKCk7CkBAIC04Myw2ICs4NCw3
IEBAIHByaXZhdGU6CiBjbGFzcyBUZXh0SXRlcmF0b3IgewogcHVibGljOgogICAgIFRleHRJdGVy
YXRvcigpOworICAgIH5UZXh0SXRlcmF0b3IoKTsKICAgICBleHBsaWNpdCBUZXh0SXRlcmF0b3Io
Y29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRC
ZWhhdmlvcik7CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fcG9zaXRpb25O
b2RlOyB9CkBAIC0yOTEsNiArMjkzLDcgQEAgY2xhc3MgV29yZEF3YXJlSXRlcmF0b3IgewogcHVi
bGljOgogICAgIFdvcmRBd2FyZUl0ZXJhdG9yKCk7CiAgICAgZXhwbGljaXQgV29yZEF3YXJlSXRl
cmF0b3IoY29uc3QgUmFuZ2UqKTsKKyAgICB+V29yZEF3YXJlSXRlcmF0b3IoKTsKIAogICAgIGJv
b2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9kaWRMb29rQWhlYWQgJiYgbV90ZXh0SXRlcmF0
b3IuYXRFbmQoKTsgfQogICAgIHZvaWQgYWR2YW5jZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5jcHAKaW5kZXggYzk2ZTk1M2FiNDlhMmY0MzI5ZmYyNmVmMzBiNmI4ZTM3ZWQ2MzFj
Yy4uNDUyZmE3Zjk5YTJiY2Q1OTkzZDllZTdiMjljM2I0NjExMmJjZjY4MSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC02MjIsNiArNjIyLDEwIEBAIHZvaWQgSW5zcGVj
dG9yU3RyaW5nOjp3cml0ZUpTT04oVmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdAogICAgIGRv
dWJsZVF1b3RlU3RyaW5nKG1fc3RyaW5nVmFsdWUsIG91dHB1dCk7CiB9CiAKK0luc3BlY3Rvck9i
amVjdDo6fkluc3BlY3Rvck9iamVjdCgpCit7Cit9CisKIGJvb2wgSW5zcGVjdG9yT2JqZWN0Ojph
c09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0cHV0KQogewogICAgICpvdXRwdXQg
PSB0aGlzOwpAQCAtNjk2LDYgKzcwMCwxNyBAQCB2b2lkIEluc3BlY3Rvck9iamVjdDo6d3JpdGVK
U09OKFZlY3RvcjxVQ2hhcj4qIG91dHB1dCkgY29uc3QKICAgICBvdXRwdXQtPmFwcGVuZCgnfScp
OwogfQogCitJbnNwZWN0b3JPYmplY3Q6Okluc3BlY3Rvck9iamVjdCgpCisgICAgOiBJbnNwZWN0
b3JWYWx1ZShUeXBlT2JqZWN0KQorICAgICwgbV9kYXRhKCkKKyAgICAsIG1fb3JkZXIoKQorewor
fQorCitJbnNwZWN0b3JBcnJheTo6fkluc3BlY3RvckFycmF5KCkKK3sKK30KKwogYm9vbCBJbnNw
ZWN0b3JBcnJheTo6YXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvdXRwdXQpCiB7CiAg
ICAgKm91dHB1dCA9IHRoaXM7CkBAIC03MTgsNiArNzMzLDEyIEBAIHZvaWQgSW5zcGVjdG9yQXJy
YXk6OndyaXRlSlNPTihWZWN0b3I8VUNoYXI+KiBvdXRwdXQpIGNvbnN0CiAgICAgb3V0cHV0LT5h
cHBlbmQoJ10nKTsKIH0KIAorSW5zcGVjdG9yQXJyYXk6Okluc3BlY3RvckFycmF5KCkKKyAgICA6
IEluc3BlY3RvclZhbHVlKFR5cGVBcnJheSkKKyAgICAsIG1fZGF0YSgpCit7Cit9CisKIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckFycmF5OjpnZXQoc2l6ZV90IGluZGV4KQog
ewogICAgIEFTU0VSVChpbmRleCA8IG1fZGF0YS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaAppbmRleCA0MDM2ZjU1OTZiYjUzMjg1MGI3ZTk2N2YxZDM5ZDU2MmYxNTBiNzFh
Li4zOTEzNzJlYTUyMGFkNTk5ZjljZjNmMTM1MzcxODY1ODQ2NzkyMjgxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaApAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yT2JqZWN0KCkpOwogICAgIH0KLSAg
ICB+SW5zcGVjdG9yT2JqZWN0KCkgeyB9CisgICAgfkluc3BlY3Rvck9iamVjdCgpOwogCiAgICAg
dmlydHVhbCBib29sIGFzT2JqZWN0KFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRwdXQpOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGFzT2JqZWN0KCk7CkBAIC0x
OTQsNyArMTk0LDcgQEAgcHVibGljOgogICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YS5lbmQoKTsgfQogCiBwcml2YXRlOgotICAgIEluc3BlY3Rvck9iamVjdCgp
IDogSW5zcGVjdG9yVmFsdWUoVHlwZU9iamVjdCkgeyB9CisgICAgSW5zcGVjdG9yT2JqZWN0KCk7
CiAgICAgRGljdGlvbmFyeSBtX2RhdGE7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9vcmRlcjsKIH07
CkBAIC0yMDUsNyArMjA1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJbnNwZWN0b3JBcnJheSgpKTsKICAgICB9Ci0gICAgfkluc3BlY3RvckFycmF5KCkg
eyB9CisgICAgfkluc3BlY3RvckFycmF5KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXNBcnJheShS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvdXRwdXQpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gYXNBcnJheSgpOwpAQCAtMjIzLDcgKzIyMyw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgd3JpdGVKU09OKFZlY3RvcjxVQ2hhcj4qIG91dHB1dCkgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgSW5zcGVjdG9yQXJyYXkoKSA6IEluc3BlY3RvclZhbHVlKFR5cGVBcnJh
eSkgeyB9CisgICAgSW5zcGVjdG9yQXJyYXkoKTsKICAgICBWZWN0b3I8UmVmUHRyPEluc3BlY3Rv
clZhbHVlPiA+IG1fZGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hl
ZFJlc291cmNlLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBh
NmZmMGZmMjk0MzAxMDAwZGM2OTEyMGY4YjUwYjlkMjczN2E0MmVkLi4wOGFjYTIwNDhkYWEyM2Yw
ZTVjNjgwZjBmMzFhYTJkNGQ1NzdkMDQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCkBA
IC00MjgsNiArNDI4LDI1IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNlQWZ0
ZXJSZXZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgdmFsCiAgICAgfQogfQogCit2
b2lkIENhY2hlZFJlc291cmNlOjpyZWdpc3RlckhhbmRsZShDYWNoZWRSZXNvdXJjZUhhbmRsZUJh
c2UqIGgpCit7CisgICAgKyttX2hhbmRsZUNvdW50OworICAgIGlmIChtX3Jlc291cmNlVG9SZXZh
bGlkYXRlKQorICAgICAgICBtX2hhbmRsZXNUb1JldmFsaWRhdGUuYWRkKGgpOworfQorCit2b2lk
IENhY2hlZFJlc291cmNlOjp1bnJlZ2lzdGVySGFuZGxlKENhY2hlZFJlc291cmNlSGFuZGxlQmFz
ZSogaCkKK3sKKyAgICBBU1NFUlQobV9oYW5kbGVDb3VudCA+IDApOworICAgIC0tbV9oYW5kbGVD
b3VudDsKKworICAgIGlmIChtX3Jlc291cmNlVG9SZXZhbGlkYXRlKQorICAgICAgICAgbV9oYW5k
bGVzVG9SZXZhbGlkYXRlLnJlbW92ZShoKTsKKworICAgIGlmICghbV9oYW5kbGVDb3VudCkKKyAg
ICAgICAgZGVsZXRlSWZQb3NzaWJsZSgpOworfQorCiBib29sIENhY2hlZFJlc291cmNlOjpjYW5V
c2VDYWNoZVZhbGlkYXRvcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fbG9hZGluZyB8fCBtX2Vycm9y
T2NjdXJyZWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oIGIv
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBmOTVkY2NmODRlNzYxMjEyZTUz
ZjlmMTQzZTliYmJkZDRjNDVlMGQ3Li4wNzhkYTU3ODhhODE0ZWVhOTY4NGM3MzEyYTg4N2UxZTU4
OWNiZDI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1dlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgKQEAgLTE4Niw4ICsxODYsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBpbmNyZWFzZVByZWxvYWRDb3VudCgpIHsgKyttX3ByZWxvYWRDb3VudDsg
fQogICAgIHZvaWQgZGVjcmVhc2VQcmVsb2FkQ291bnQoKSB7IEFTU0VSVChtX3ByZWxvYWRDb3Vu
dCk7IC0tbV9wcmVsb2FkQ291bnQ7IH0KICAgICAKLSAgICB2b2lkIHJlZ2lzdGVySGFuZGxlKENh
Y2hlZFJlc291cmNlSGFuZGxlQmFzZSogaCkgeyArK21faGFuZGxlQ291bnQ7IGlmIChtX3Jlc291
cmNlVG9SZXZhbGlkYXRlKSBtX2hhbmRsZXNUb1JldmFsaWRhdGUuYWRkKGgpOyB9Ci0gICAgdm9p
ZCB1bnJlZ2lzdGVySGFuZGxlKENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSogaCkgeyBBU1NFUlQo
bV9oYW5kbGVDb3VudCA+IDApOyAtLW1faGFuZGxlQ291bnQ7IGlmIChtX3Jlc291cmNlVG9SZXZh
bGlkYXRlKSBtX2hhbmRsZXNUb1JldmFsaWRhdGUucmVtb3ZlKGgpOyBpZiAoIW1faGFuZGxlQ291
bnQpIGRlbGV0ZUlmUG9zc2libGUoKTsgfQorICAgIHZvaWQgcmVnaXN0ZXJIYW5kbGUoQ2FjaGVk
UmVzb3VyY2VIYW5kbGVCYXNlKiBoKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJIYW5kbGUoQ2FjaGVk
UmVzb3VyY2VIYW5kbGVCYXNlKiBoKTsKICAgICAKICAgICBib29sIGNhblVzZUNhY2hlVmFsaWRh
dG9yKCkgY29uc3Q7CiAgICAgYm9vbCBtdXN0UmV2YWxpZGF0ZShDYWNoZVBvbGljeSkgY29uc3Q7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKaW5kZXggZTMwNGZm
YTNlODkyZDBhOGJjNThkY2RhY2Y2ZmE3MTQ5NzNiNDMwMS4uOTIwNzlhMGRmYzBhMTNjZjhkODQ5
N2EyMmFhOWUwYmE2N2MxNDA2MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmNwcApAQCAtMzcsNiArMzcsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitIVFRQSGVhZGVyTWFwOjpIVFRQSGVhZGVyTWFwKCkKK3sKK30K
KworSFRUUEhlYWRlck1hcDo6fkhUVFBIZWFkZXJNYXAoKQoreworfQorCiBQYXNzT3duUHRyPENy
b3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IEhUVFBIZWFkZXJNYXA6OmNvcHlEYXRhKCkgY29u
c3QKIHsKICAgICBPd25QdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gZGF0YShuZXcg
Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YSgpKTsKQEAgLTU4LDcgKzY2LDE3IEBAIHZvaWQg
SFRUUEhlYWRlck1hcDo6YWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBE
YXRhPiBkYXRhKQogICAgICAgICBzZXQoaGVhZGVyLmZpcnN0LCBoZWFkZXIuc2Vjb25kKTsKICAg
ICB9CiB9Ci0gICAgCisKK1N0cmluZyBIVFRQSGVhZGVyTWFwOjpnZXQoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdAoreworICAgIHJldHVybiBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nLCBDYXNlRm9sZGluZ0hhc2g+OjpnZXQobmFtZSk7Cit9CisKK3BhaXI8SFRUUEhlYWRlck1h
cDo6aXRlcmF0b3IsIGJvb2w+IEhUVFBIZWFkZXJNYXA6OmFkZChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD46OmFkZChuYW1lLCB2YWx1ZSk7Cit9CisK
IC8vIEFkYXB0ZXIgdGhhdCBhbGxvd3MgdGhlIEhhc2hNYXAgdG8gdGFrZSBDIHN0cmluZ3MgYXMg
a2V5cy4KIHN0cnVjdCBDYXNlRm9sZGluZ0NTdHJpbmdUcmFuc2xhdG9yIHsKICAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBjaGFyKiBjU3RyaW5nKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQSGVhZGVyTWFwLmgKaW5kZXggYzYxNDViZDRmMGU5ZTdiYjdmMGQ0OTk4ZWY4NWEzNTk0
YjFhNmVmZC4uMDIwNzFlMzYxMGMxZDRiNGZjZGY0ZDZjOTU5YjQ5Zjg3ZjNhNWYxNSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBAIC00MSwyMCArNDEsMTcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSFRUUEhlYWRlck1hcCA6IHB1YmxpYyBI
YXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IHsKICAgICBwdWJs
aWM6CisgICAgICAgIEhUVFBIZWFkZXJNYXAoKTsKKyAgICAgICAgfkhUVFBIZWFkZXJNYXAoKTsK
KwogICAgICAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2lu
ZyB0byBhbm90aGVyIHRocmVhZC4KICAgICAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZEhUVFBI
ZWFkZXJNYXBEYXRhPiBjb3B5RGF0YSgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgYWRvcHQoUGFz
c093blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPik7CiAgICAgICAgIAotICAgICAg
ICBTdHJpbmcgZ2V0KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VGb2xk
aW5nSGFzaD46OmdldChuYW1lKTsKLSAgICAgICAgfQorICAgICAgICBTdHJpbmcgZ2V0KGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CiAKLSAgICAgICAgcGFpcjxpdGVyYXRvciwgYm9v
bD4gYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcs
IENhc2VGb2xkaW5nSGFzaD46OmFkZChuYW1lLCB2YWx1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAg
cGFpcjxpdGVyYXRvciwgYm9vbD4gYWRkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSk7CiAKICAgICAgICAgLy8gQWx0ZXJuYXRlIGFjY2Vzc29ycyB0aGF0IGFy
ZSBmYXN0ZXIgdGhhbiBjb252ZXJ0aW5nIHRoZSBjaGFyKiB0byBBdG9taWNTdHJpbmcgZmlyc3Qu
CiAgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgY2hhciopIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckFwcGxldC5jcHAKaW5kZXggNjNhMThhMDQzNGRlMDcyMzBmMTQ4NDA4OTk0MDlmODU4MTQ2
ZDBiYi4uZjllYjU2ZTgyZjk2NGY5ZTIxNTczNmQwNDQzNTBlMjRmYTFjOTk2YiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJBcHBsZXQuY3BwCkBAIC0zOSw2ICszOSwxMCBAQCBSZW5kZXJBcHBsZXQ6OlJl
bmRlckFwcGxldChIVE1MQXBwbGV0RWxlbWVudCogYXBwbGV0LCBjb25zdCBIYXNoTWFwPFN0cmlu
ZywgU3RyaQogICAgIHNldElubGluZSh0cnVlKTsKIH0KIAorUmVuZGVyQXBwbGV0Ojp+UmVuZGVy
QXBwbGV0KCkKK3sKK30KKwogSW50U2l6ZSBSZW5kZXJBcHBsZXQ6OmludHJpbnNpY1NpemUoKSBj
b25zdAogewogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3QgbWFrZSBzZW5zZS4gV2UgY2FuJ3Qg
anVzdCBzdGFydCByZXR1cm5pbmcKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckFwcGxldC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmgKaW5kZXggNjJmNDZj
ZDhkNTYyZGRkYmUwMjBhZTY0MjI0ODNmZjc1M2Q0NDE0NS4uNjQxNTY4ZDgyNjQwZDNmODNhYjZm
MTdlMDkwZTViMTg1YzY4MDljNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QXBwbGV0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmgKQEAgLTMyLDYg
KzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlbmRlckFwcGxldCA6IHB1
YmxpYyBSZW5kZXJXaWRnZXQgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVuZGVyQXBwbGV0KEhU
TUxBcHBsZXRFbGVtZW50KiwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGFyZ3MpOwor
ICAgICAgICB2aXJ0dWFsIH5SZW5kZXJBcHBsZXQoKTsKIAogICAgICAgICB2b2lkIGNyZWF0ZVdp
ZGdldElmTmVjZXNzYXJ5KCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJ1dHRvbi5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCmluZGV4IDgz
NTdiZDQ0ODUyZjkzZTJhNDIyZmUwM2M4OTM2MWE2OGMxNjJmOTguLjI2NDJmMjM0YjFlYTA4YWYy
OGQzZDE2YzgxZWVmNmE4ZDBiNTEzNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJ1dHRvbi5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcApA
QCAtNDUsNiArNDUsMTAgQEAgUmVuZGVyQnV0dG9uOjpSZW5kZXJCdXR0b24oTm9kZSogbm9kZSkK
IHsKIH0KIAorUmVuZGVyQnV0dG9uOjp+UmVuZGVyQnV0dG9uKCkKK3sKK30KKwogdm9pZCBSZW5k
ZXJCdXR0b246OmFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQpCiB7CiAgICAgaWYgKCFtX2lubmVyKSB7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5oCmluZGV4IDFmYzVlYjYyMDFhNjVhNTg5ZDgzNDcyOGYyOTBiOWFmOTdlZTc5OTQuLjI1MmVk
YjQ5Nzc4OWZlNGRhNTRmYTg1OGY2MDFkYjZjMDZmYzEzYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1
dHRvbi5oCkBAIC0zNCw3ICszNCw4IEBAIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIC8vIHRv
IGRhdGUgYXMgdGhlIGJ1dHRvbiBjaGFuZ2VzLgogY2xhc3MgUmVuZGVyQnV0dG9uIDogcHVibGlj
IFJlbmRlckZsZXhpYmxlQm94IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJCdXR0b24oTm9kZSopOwor
ICAgIGV4cGxpY2l0IFJlbmRlckJ1dHRvbihOb2RlKik7CisgICAgdmlydHVhbCB+UmVuZGVyQnV0
dG9uKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiAiUmVuZGVyQnV0dG9uIjsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckJ1dHRvbigp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5k
ZXggYmE5YzUwMzgzY2ExNmQwZjRhOTZlYzQwN2RkMGRlMDEyM2I1NGQ0Mi4uYzM1N2JlMTVlNDcx
Yjk2YjA4M2RiZTU4MmE5NTBiN2E3NGQyZDkyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHAKQEAgLTI5NCw2ICsyOTQsMTAgQEAgUmVuZGVyQ291bnRlcjo6UmVuZGVyQ291bnRlcihE
b2N1bWVudCogbm9kZSwgY29uc3QgQ291bnRlckNvbnRlbnQmIGNvdW50ZXIpCiB7CiB9CiAKK1Jl
bmRlckNvdW50ZXI6On5SZW5kZXJDb3VudGVyKCkKK3sKK30KKwogY29uc3QgY2hhciogUmVuZGVy
Q291bnRlcjo6cmVuZGVyTmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICJSZW5kZXJDb3VudGVy
IjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaAppbmRleCA4ZDk4MWRmOWRhNWJjMzc0ZjU2MzZh
MzY1Y2UwZDEwMDRhZTY2NWRmLi45MzczMTkzNjI4YTMwYWZkODQ2NzZhNzRlYzNiMTI4YTkyZWJm
N2M1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNz
IENvdW50ZXJOb2RlOwogY2xhc3MgUmVuZGVyQ291bnRlciA6IHB1YmxpYyBSZW5kZXJUZXh0IHsK
IHB1YmxpYzoKICAgICBSZW5kZXJDb3VudGVyKERvY3VtZW50KiwgY29uc3QgQ291bnRlckNvbnRl
bnQmKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJDb3VudGVyKCk7CiAKICAgICAvLyBSZW1vdmVzIHRo
ZSByZWZlcmVuY2UgdG8gdGhlIENvdW50ZXJOb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlbmRl
cmVyCiAgICAgLy8gaWYgaXRzIGlkZW50aWZpZXIgbWF0Y2hlcyB0aGUgYXJndW1lbnQuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmllbGRzZXQuaAppbmRleCBlYTRlNTg3MmNkOTUwZGZmMmRkM2E3YTRjN2I2
YjFmODdhZjQ1Y2QzLi5iYWRhNzhjODFkODQ5OTlmNjEzNmVmZWI1NDU5ZDU2MjhlZTA4MDJhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJGaWVsZHNldCA6IHB1YmxpYyBSZW5kZXJCbG9jayB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyRmllbGRzZXQoTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRl
ckZpZWxkc2V0KE5vZGUqKTsKIAogICAgIFJlbmRlckJveCogZmluZExlZ2VuZCgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCmluZGV4IDgzOWU5NjM0
YjQ5MWY3NzY2ZmZjMzRmOTA4MjBkYmE2MDRlMDk2YzMuLmY5ZjY5ODhmMzg3Mjk5ZDY2MjhkYTEx
ZjY3NWVhODFlMDQxM2E2NmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZv
cmVpZ25PYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmpl
Y3QuY3BwCkBAIC00MSw2ICs0MSwxMCBAQCBSZW5kZXJGb3JlaWduT2JqZWN0OjpSZW5kZXJGb3Jl
aWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KiBub2RlKQogewogfQogCitSZW5kZXJG
b3JlaWduT2JqZWN0Ojp+UmVuZGVyRm9yZWlnbk9iamVjdCgpCit7Cit9CisKIHZvaWQgUmVuZGVy
Rm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCwgaW50KQogewog
ICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5oCmluZGV4IDg3NDIzZTZkOWI0YTI2Yjk5MDI4MWE0
M2E5Nzg0MWI1YjFkN2YzOGIuLmJkZjk2Y2U1MGQ4NzI3YTY1ZDcwMGQ1MWVlNjY2Yjk1Y2YwYmVj
MGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuaAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmgKQEAgLTMzLDcgKzMz
LDggQEAgY2xhc3MgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckZvcmVp
Z25PYmplY3QgOiBwdWJsaWMgUmVuZGVyU1ZHQmxvY2sgewogcHVibGljOgotICAgIFJlbmRlckZv
cmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5k
ZXJGb3JlaWduT2JqZWN0KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Kik7CisgICAgdmlydHVhbCB+
UmVuZGVyRm9yZWlnbk9iamVjdCgpOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckZvcmVpZ25PYmplY3QiOyB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmggYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZS5oCmluZGV4IGM4OTVhMGMzMDExNWIxYTJiZjU2NmIwODc4OTcxOThlZGJhODll
OGYuLmY2ZDdlZTg5NWU3YjM2MTJhZGUyYWZmMjJmZTNkZjBlOWUzZDE1MDYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWUuaApAQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBIVE1MRnJhbWVFbGVtZW50Owog
CiBjbGFzcyBSZW5kZXJGcmFtZSA6IHB1YmxpYyBSZW5kZXJGcmFtZUJhc2UgewogcHVibGljOgot
ICAgIFJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJG
cmFtZShIVE1MRnJhbWVFbGVtZW50Kik7CiAKICAgICBGcmFtZUVkZ2VJbmZvIGVkZ2VJbmZvKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmgKaW5kZXggY2QzY2YwYzZjMTg0
MDRlZGRlYTI5ODVhMWQ5NjlmOWNhNTc2N2M3Ni4uNGZhZDU2MGM1YjMzN2Y5NmI4MTNiMGNiNzkw
NTQ1MzYyZGM2Njg3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVC
YXNlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmgKQEAgLTMzLDcg
KzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQmFzZSBjbGFzcyBmb3IgUmVuZGVyRnJh
bWUgYW5kIFJlbmRlcklGcmFtZQogY2xhc3MgUmVuZGVyRnJhbWVCYXNlIDogcHVibGljIFJlbmRl
clBhcnQgewogcHJvdGVjdGVkOgotICAgIFJlbmRlckZyYW1lQmFzZShFbGVtZW50Kik7CisgICAg
ZXhwbGljaXQgUmVuZGVyRnJhbWVCYXNlKEVsZW1lbnQqKTsKIAogcHVibGljOgogICAgIHZvaWQg
bGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBmaXhlZFdpZHRoLCBib29sIGZpeGVkSGVpZ2h0KTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaAppbmRleCA0NzNkYWQ1ZGEyMGVhNWMwMTVj
ZWJiMzE2MzIyZDJiZjkxZjVkMjY4Li4yMjMwYjM5MzU0YmU2NTIyNWEzMjQwZTcxOTE0ZWE5ZjI4
MjNlODFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCkBAIC0zNCw3ICszNCw3
IEBAIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJIVE1MQ2FudmFzIDog
cHVibGljIFJlbmRlclJlcGxhY2VkIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJIVE1MQ2FudmFzKEhU
TUxDYW52YXNFbGVtZW50Kik7CisgICAgZXhwbGljaXQgUmVuZGVySFRNTENhbnZhcyhIVE1MQ2Fu
dmFzRWxlbWVudCopOwogCiAgICAgdmlydHVhbCBib29sIGlzQ2FudmFzKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklGcmFtZS5oCmluZGV4IDMyNWUyYjNkOWY3NjhkMWYyMjNhMzkwOGE3MmVkODYw
MjU0NGEzMjIuLjBiYjMxODI5ZTFlMTZjMTUyMTBlMGJmODQ3NGZiMDQ2NGQ1ZGY4NjEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklGcmFtZS5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUmVuZGVySUZyYW1lIDogcHVibGljIFJlbmRlckZyYW1lQmFzZSB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVySUZyYW1lKEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJJRnJh
bWUoRWxlbWVudCopOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGJv
b2wgcmVxdWlyZXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5oCmluZGV4IGZlYjhiOGZjNWU0MWVmMDUwZTc4MDAzYTlhNjBkNWRkZmYwNmJiMWYu
LjM0YjI5ZDc3ZmJiYzZlMWE0ZGYyNWQ0OGY3YjJmOTQxMmJjNDMzNDYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIFBvc2l0aW9uOwogCiBjbGFzcyBS
ZW5kZXJJbmxpbmUgOiBwdWJsaWMgUmVuZGVyQm94TW9kZWxPYmplY3QgewogcHVibGljOgotICAg
IFJlbmRlcklubGluZShOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVySW5saW5lKE5vZGUqKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRl
bS5oCmluZGV4IGY3YmQ2NjEwNjE3ZWY3YzA5OWNhZmEwMTIyNDQ0NDUwZmYwZWNjYzQuLjJmY2I2
YzQwMjVlZjdkNGU1NGVmNWIzNTcyODc1Yjk3N2E5MDM5MDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEl0ZW0uaApAQCAtMzEsNyArMzEsNyBAQCBjbGFzcyBSZW5kZXJMaXN0TWFya2VyOwogCiBj
bGFzcyBSZW5kZXJMaXN0SXRlbSA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAg
UmVuZGVyTGlzdEl0ZW0oTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlckxpc3RJdGVtKE5vZGUq
KTsKIAogICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgaWYgKCFtX2lzVmFsdWVVcFRvRGF0ZSkgdXBk
YXRlVmFsdWVOb3coKTsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICB2b2lkIHVwZGF0ZVZhbHVlKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCmluZGV4IDQzZWI1MTQ2MTE4ZjI0ODIzMjM1
Y2NjOTBhMTU4YjE1OThiMmI3ZTguLjkwMzgzZDgyOTQzYTEyYWM4NmY2ODlkODYyMTIwYTMxM2Nm
NzNkZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCkBAIC02Niw2ICs2NiwxMCBA
QCBSZW5kZXJNYXJxdWVlOjpSZW5kZXJNYXJxdWVlKFJlbmRlckxheWVyKiBsKQogewogfQogCitS
ZW5kZXJNYXJxdWVlOjp+UmVuZGVyTWFycXVlZSgpCit7Cit9CisKIGludCBSZW5kZXJNYXJxdWVl
OjptYXJxdWVlU3BlZWQoKSBjb25zdAogewogICAgIGludCByZXN1bHQgPSBtX2xheWVyLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLT5tYXJxdWVlU3BlZWQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1hcnF1ZWUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUu
aAppbmRleCAxNjUxNDU0ZGY1MWFjMmVlZjQ1ZTUyOTk1M2UyYjgyNmY2YTNmMjcwLi43OTk5OGVk
MDc5ZTVjOTFhMDUyNzE0MjE3NmE2ODc5NTc0Y2MxYmU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNYXJxdWVlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFy
cXVlZS5oCkBAIC01NSw3ICs1NSw4IEBAIGNsYXNzIFJlbmRlckxheWVyOwogLy8gVGhpcyBjbGFz
cyBoYW5kbGVzIHRoZSBhdXRvLXNjcm9sbGluZyBvZiBsYXllcnMgd2l0aCBvdmVyZmxvdzogbWFy
cXVlZS4KIGNsYXNzIFJlbmRlck1hcnF1ZWUgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGlj
OgotICAgIFJlbmRlck1hcnF1ZWUoUmVuZGVyTGF5ZXIqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJN
YXJxdWVlKFJlbmRlckxheWVyKik7CisgICAgdmlydHVhbCB+UmVuZGVyTWFycXVlZSgpOwogCiAg
ICAgaW50IHNwZWVkKCkgY29uc3QgeyByZXR1cm4gbV9zcGVlZDsgfQogICAgIGludCBtYXJxdWVl
U3BlZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Js
b2NrLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdCbG9jay5oCmluZGV4IGMxMzc5ZGE3
YTM1YjY5ZDQ5YzEyMTZlZDZhZTE0MzlhNWUwOGRlM2UuLmE5ZGQ1ZGI1N2NiY2VhN2Q2ZDNmNmE0
YTE2MjE5YWVmZTU1MDk0MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R0Jsb2NrLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtMzEs
NyArMzEsNyBAQCBjbGFzcyBTVkdFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJTVkdCbG9jayA6IHB1
YmxpYyBSZW5kZXJCbG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHQmxvY2soU1ZHRWxlbWVu
dCopOworICAgIGV4cGxpY2l0IFJlbmRlclNWR0Jsb2NrKFNWR0VsZW1lbnQqKTsKIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXggYjU5NzRjYTk0NDM5
YzRkYjc1M2Q3YzUzZjgzODcxYmI3YmYwMmZhYS4uMDc2MTU2MjY3MGRlYjhkYjMzMTJhNzBhYzk1
OWQ4Nzk3Yjc5ZTkwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3Bw
CkBAIC00Myw2ICs0MywxMCBAQCBSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5l
cihTVkdTdHlsZWRFbGVtZW50KiBub2RlKQogewogfQogCitSZW5kZXJTVkdDb250YWluZXI6On5S
ZW5kZXJTVkdDb250YWluZXIoKQoreworfQorCiB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5
b3V0KCkKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR0NvbnRhaW5lci5oCmluZGV4IGIwYzk1MmY0YTJkZGY2Y2RhNDlmZTZhYTVhOTM4ZTJmOGFh
NjY0NGIuLjViZGJmMzJiMjBjNTk1YWI0Zjg0MTVhZTNiM2ZkNmNjNWYxOTczZTkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5oCkBAIC0zMyw3ICszMyw4IEBAIGNsYXNzIFNW
R0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR0NvbnRhaW5lciA6IHB1YmxpYyBSZW5kZXJTVkdN
b2RlbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHQ29udGFpbmVyKFNWR1N0eWxlZEVs
ZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJTVkdDb250YWluZXIoU1ZHU3R5bGVkRWxlbWVu
dCopOworICAgIHZpcnR1YWwgflJlbmRlclNWR0NvbnRhaW5lcigpOwogCiAgICAgY29uc3QgUmVu
ZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICZtX2NoaWxkcmVu
OyB9CiAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIHsgcmV0dXJuICZtX2No
aWxkcmVuOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdIaWRkZW5D
b250YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5o
CmluZGV4IDk3ODAwZDQ2YzYzNTRmYmY0YTVkZDVmNmQ5YjMxZmU2NTRkMWRjODQuLmM1OTFhODgx
NGQ1NWY1NmYzZmZlZDMwZWQ4NmY2OWVkMDViNTVhM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAvLyA8ZGVmcz4sIDxsaW5lYXJHcmFkaWVudD4sIDxyYWRpYWxHcmFkaWVu
dD4gYXJlIGFsbCBnb29kIGV4YW1wbGVzCiAgICAgY2xhc3MgUmVuZGVyU1ZHSGlkZGVuQ29udGFp
bmVyIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7CiAgICAgcHVibGljOgotICAgICAgICBS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCopOworICAgICAgICBleHBs
aWNpdCBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoU1ZHU3R5bGVkRWxlbWVudCopOwogCiAgICAg
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIiOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR01vZGVsT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5oCmluZGV4IDlkZTIxN2M1NGJkZjAzN2ZmZjJlYWQyMzM2NmQ2ZWEyNDgwMWRlNTAu
LmZiOGY4OWYxYjNkOWJiMGQwZGExMGIwNDNkZjI5NDhmOWY0MmYwYzIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTVkdT
dHlsZWRFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJTVkdNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5k
ZXJPYmplY3QgewogcHVibGljOgotICAgIFJlbmRlclNWR01vZGVsT2JqZWN0KFNWR1N0eWxlZEVs
ZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdTdHlsZWRFbGVt
ZW50Kik7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZS5oCmluZGV4IDRiMjM3Mzc3NDkwNmY3MWUzZjgxNjRkMDJjNDRlMjJl
MTEwYmQ4ZDEuLmIwNTQyMDM3ZTE3MTIzN2M4ZTdkMTljZjhhMWYwOTZlZmIwNzUzYTYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRp
dmUuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIDogcHVibGljIFJlbmRlclNWR0hpZGRlbkNvbnRh
aW5lciB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50
KTsKKyAgICBleHBsaWNpdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQpOwog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSI7IH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMzFiNjJjZjI3ZjZiNWJlMDk4YTk2Y2RkOTkwYzRmZTY4
YTgzZDk5My4uYTcxNDU0Y2FlMWI1MjM3MWI0NWE4OTI4ODA5NzczNGZhNTM2MTkwNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTUzLDYgKzUzLDEwIEBAIFJlbmRlclNWR1Jv
b3Q6OlJlbmRlclNWR1Jvb3QoU1ZHU3R5bGVkRWxlbWVudCogbm9kZSkKICAgICBzZXRSZXBsYWNl
ZCh0cnVlKTsKIH0KIAorUmVuZGVyU1ZHUm9vdDo6flJlbmRlclNWR1Jvb3QoKQoreworfQorCiBp
bnQgUmVuZGVyU1ZHUm9vdDo6bGluZUhlaWdodChib29sLCBib29sKSBjb25zdAogewogICAgIHJl
dHVybiBoZWlnaHQoKSArIG1hcmdpblRvcCgpICsgbWFyZ2luQm90dG9tKCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmggYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdSb290LmgKaW5kZXggOTk2NDM5MzIxZWFhMzQ0OTc4NDBiMWE3NzA0YWM5YTNiZmNi
OTRmMC4uMGY3MjNiZTdjYmMyYzJjOGNkZmY4YmFiNjg0Y2VkYmZjNzM0MjY3NyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR1Jvb3QuaApAQCAtMzUsNyArMzUsOCBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zv
cm07CiAKIGNsYXNzIFJlbmRlclNWR1Jvb3QgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJTVkdSb290KFNWR1N0eWxlZEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSZW5k
ZXJTVkdSb290KFNWR1N0eWxlZEVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5SZW5kZXJTVkdSb290
KCk7CiAKICAgICBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3Qg
eyByZXR1cm4gJm1fY2hpbGRyZW47IH0KICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxk
cmVuKCkgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaAppbmRleCBiNjNiOTFjNWU5Y2U5NWM5
NDEyZjM4Y2ZmNGM1ZDMxNWFlNTIzOTQ2Li5iNDlhNDAzMDJiYzc2ZmYxZDliNGI0M2E2ODFjMWU5
YjhiN2I5NTMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVHJhbnNm
b3JtYWJsZUNvbnRhaW5lci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDsKICAgICBjbGFzcyBSZW5k
ZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7
CiAgICAgcHVibGljOgotICAgICAgICBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kik7CisgICAgICAgIGV4cGxpY2l0IFJlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqKTsK
IAogICAgICAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KICAgICAgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgeyBtX25lZWRzVHJhbnNmb3JtVXBk
YXRlID0gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVmll
d3BvcnRDb250YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyLmgKaW5kZXggN2I1NzAyYjk4ZWI1NTc3MzhmMDRlNzM2YzRiZDA0NGZjNzRlMjBkMC4u
NjNjMzM2Y2U4MmFiOTRmYjBmMDVmMTNkMWIwNzY5NjIxMzQwYWU0ZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHRodXMgd2UgaW5oZXJpdCBmcm9tIFJlbmRlclNWR0Nv
bnRhaW5lciBpbnN0ZWFkIG9mIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIKIGNsYXNz
IFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIDogcHVibGljIFJlbmRlclNWR0NvbnRhaW5lciB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIoU1ZHU3R5bGVkRWxlbWVu
dCopOworICAgIGV4cGxpY2l0IFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKFNWR1N0eWxlZEVs
ZW1lbnQqKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdDb250YWluZXIoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggMDAy
N2U2YWRjMWRhOGFhZDJjYTFmMDM3YTA4ZDFmNDI1Yjg5OTNmNy4uZmZjMzhkMjlhY2ZhMzczZDRl
YmFmZWVhMzU5MjM3NzY3N2ZhMzRhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAt
NjUsNiArNjUsMTAgQEAgUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKE5vZGUqIG5vZGUpCiAgICAg
CiB9CiAKK1JlbmRlclRhYmxlOjp+UmVuZGVyVGFibGUoKQoreworfQorCiB2b2lkIFJlbmRlclRh
YmxlOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKQogewogICAgIFJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZShkaWZmLCBv
bGRTdHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAppbmRleCBhZmVhNDAyM2YxZDhmYWM5YWEz
ZmVjNzcxMjhiNTk5M2M5Y2ZlMTE5Li4xZDQxNDA2ZGI3MTgwMmFhZDFlMWU1MWY3NTZmZWE0YTk3
ZDg1MzM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTM4LDcgKzM4LDggQEAgY2xhc3Mg
VGFibGVMYXlvdXQ7CiAKIGNsYXNzIFJlbmRlclRhYmxlIDogcHVibGljIFJlbmRlckJsb2NrIHsK
IHB1YmxpYzoKLSAgICBSZW5kZXJUYWJsZShOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyVGFi
bGUoTm9kZSopOworICAgIHZpcnR1YWwgflJlbmRlclRhYmxlKCk7CiAKICAgICBpbnQgZ2V0Q29s
dW1uUG9zKGludCBjb2wpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uUG9zW2NvbF07IH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCA3OTM3NmU5YzBhNTU3NjE3ZTRiNzM1MWY5
NjZkNWQyMGE2MGY2NmJkLi5kODAzZjA1YWY2YzEzNDIxZTE5OWVmYzVlZjRiMGFhZDQ1YzJmNWYw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ2VsbCA6IHB1YmxpYyBSZW5kZXJC
bG9jayB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVDZWxsKE5vZGUqKTsKKyAgICBleHBsaWNp
dCBSZW5kZXJUYWJsZUNlbGwoTm9kZSopOwogCiAgICAgLy8gRklYTUU6IG5lZWQgdG8gaW1wbGVt
ZW50IGNlbGxJbmRleAogICAgIGludCBjZWxsSW5kZXgoKSBjb25zdCB7IHJldHVybiAwOyB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAppbmRleCBjNWY5YWZjMmFhOGQ1NTJlYjYzMjcxNDUw
NzQ2OGQ4YzI1NWJkYzE5Li41ZmI0MTI4ZjZjYjMyMjI0NjYxNmRiNTQwN2JiNzczOTZmZmE0ODE2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3Mg
UmVuZGVyVGFibGU7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ29sIDogcHVibGljIFJlbmRlckJveCB7
CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGFibGVDb2woTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRl
clRhYmxlQ29sKE5vZGUqKTsKIAogICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hp
bGRyZW4oKSBjb25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogICAgIFJlbmRlck9iamVjdENo
aWxkTGlzdCogY2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlUm93LmgKaW5kZXggNTg4MjUyYmM4NGIyMWZkODVmM2IxN2Q3MDU4ZDk0MTg2ODBh
YmYzNi4uMzA1OTA2MDgzMGYzOGE1OWNmZTcyMjc4ZjI5MzRjMjMzNWNlMDVkMyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVJvdy5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUmVuZGVyVGFibGVSb3cgOiBwdWJsaWMgUmVuZGVyQm94IHsKIHB1YmxpYzoK
LSAgICBSZW5kZXJUYWJsZVJvdyhOb2RlKik7CisgICAgZXhwbGljaXQgUmVuZGVyVGFibGVSb3co
Tm9kZSopOwogCiAgICAgY29uc3QgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBjaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAgICAgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiBj
aGlsZHJlbigpIHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dEZyYWdtZW50LmNwcAppbmRleCBiMTQzMDhkZDU1ZjVhNDIyZDljZjQzNDBkMjdhM2E3MTdk
YjJhMWU3Li43MDVjMDk1NzUyMDIxM2U4NDRiNWE0MjBmODc5ZmUwZDBmYTE5M2Q5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKQEAgLTQ0LDYgKzQ0LDEwIEBAIFJl
bmRlclRleHRGcmFnbWVudDo6UmVuZGVyVGV4dEZyYWdtZW50KE5vZGUqIG5vZGUsIFN0cmluZ0lt
cGwqIHN0cikKIHsKIH0KIAorUmVuZGVyVGV4dEZyYWdtZW50Ojp+UmVuZGVyVGV4dEZyYWdtZW50
KCkKK3sKK30KKwogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBSZW5kZXJUZXh0RnJhZ21lbnQ6Om9y
aWdpbmFsVGV4dCgpIGNvbnN0CiB7CiAgICAgTm9kZSogZSA9IG5vZGUoKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKaW5kZXggZTAyMzA0MmI1NDJiMTM5MWM2YTRhZWM3OWQw
MGQxY2VkOTk0MTlhYi4uYWJiM2ZhNDQxOGEyODNjZDRkYmVmNGJkZjI3ZGEzOTgzZWQ4ZTBiNCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAg
Y2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50IDogcHVibGljIFJlbmRlclRleHQgewogcHVibGljOgog
ICAgIFJlbmRlclRleHRGcmFnbWVudChOb2RlKiwgU3RyaW5nSW1wbCosIGludCBzdGFydE9mZnNl
dCwgaW50IGxlbmd0aCk7CiAgICAgUmVuZGVyVGV4dEZyYWdtZW50KE5vZGUqLCBTdHJpbmdJbXBs
Kik7CisgICAgdmlydHVhbCB+UmVuZGVyVGV4dEZyYWdtZW50KCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNUZXh0RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldvcmRCcmVhay5oIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV29yZEJyZWFrLmgKaW5kZXggYWNkODE3OWUzNzE1Y2IxYzc1ODA1NjEwZDJhOTI5YWY3
MDE1YmU2My4uZGIzMWVlYzE2ZWZmMjU3NjgyNzIxZTlkNzI0NTZkNGM3OWU2ZmE5MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV29yZEJyZWFrLmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV29yZEJyZWFrLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgSFRNTEVs
ZW1lbnQ7CiAKIGNsYXNzIFJlbmRlcldvcmRCcmVhayA6IHB1YmxpYyBSZW5kZXJUZXh0IHsKIHB1
YmxpYzoKLSAgICBSZW5kZXJXb3JkQnJlYWsoSFRNTEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBS
ZW5kZXJXb3JkQnJlYWsoSFRNTEVsZW1lbnQqKTsKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1dvcmRCcmVhaygpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCmluZGV4IDkyYjZmZTdkMjc1
NmExYmIwNzkzYWNjOTA5NjUyNjMzMjFlNzIxOGIuLmQ3YjdlNjY5YzgzYTIwYzZmMTczZGJmNjU1
YzlhZjMwM2EyNGI1MDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgK
QEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdJ
bmxpbmUgOiBwdWJsaWMgUmVuZGVySW5saW5lIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJTVkdJbmxp
bmUoTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlclNWR0lubGluZShOb2RlKik7CiAKICAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZH
SW5saW5lIjsgfQogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQ
YXRoLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAppbmRleCBm
OGY3ZjMzNjQzOTYyYzYxZmU3M2QyMTgyZDY5ZmJhYzVlZTViYzA2Li5hZGEzNjBhOWVjMWYyMDQw
ZjkwNzViMGMwYzBhZmEyZDExODA1NWE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1BhdGguY3BwCkBAIC03NCw2ICs3NCwxMCBAQCBSZW5kZXJTVkdQYXRoOjpSZW5kZXJTVkdQYXRo
KFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KiBub2RlKQogewogfQogCitSZW5kZXJTVkdQ
YXRoOjp+UmVuZGVyU1ZHUGF0aCgpCit7Cit9CisKIGJvb2wgUmVuZGVyU1ZHUGF0aDo6ZmlsbENv
bnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBib29sIHJlcXVpcmVzRmlsbCwgV2luZFJ1
bGUgZmlsbFJ1bGUpCiB7CiAgICAgaWYgKCFtX2ZpbGxCb3VuZGluZ0JveC5jb250YWlucyhwb2lu
dCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAppbmRleCBjYzA2ZGY2OWMyNjFi
MjRhZjMxMDI3MWUyMTA5NTYwMDJkODQwOWM0Li40MWIwZTUxYTg1NWI1ZmU2ODQ0MjY5Y2FhOTk1
ZTZjZmQ2Y2Y3ZDgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UGF0aC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKQEAgLTM4
LDcgKzM4LDggQEAgY2xhc3MgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ7CiAKIGNsYXNz
IFJlbmRlclNWR1BhdGggOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVibGljOgot
ICAgIFJlbmRlclNWR1BhdGgoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqKTsKKyAgICBl
eHBsaWNpdCBSZW5kZXJTVkdQYXRoKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kik7Cisg
ICAgdmlydHVhbCB+UmVuZGVyU1ZHUGF0aCgpOwogCiAgICAgY29uc3QgUGF0aCYgcGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGF0aDsgfQogICAgIHZvaWQgc2V0TmVlZHNQYXRoVXBkYXRlKCkgeyBt
X25lZWRzUGF0aFVwZGF0ZSA9IHRydWU7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUU3Bhbi5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RT
cGFuLmgKaW5kZXggOTMxYmQ4YzQzMmM2YTE3MzI4NTk3NjY2ZWQ2NTczZGM2ZTZmOTIxMC4uOTdl
MGViMDA0ZmNiZjBiODVlMzA3OGI4MGE2MTcyMzgyYmEyZmQ3ZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RTcGFuLmgKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFJlbmRlclNWR1RTcGFuIDogcHVibGljIFJlbmRlclNWR0lubGluZSB7CiBwdWJs
aWM6Ci0gICAgUmVuZGVyU1ZHVFNwYW4oTm9kZSopOworICAgIGV4cGxpY2l0IFJlbmRlclNWR1RT
cGFuKE5vZGUqKTsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7
IHJldHVybiAiUmVuZGVyU1ZHVFNwYW4iOyB9CiB9OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNw
cAppbmRleCBmNTU0ODQ2MTJmMzc2MjUxM2RmZDYyYzZhNmQxY2I5MDhlOTY3ZTNlLi5kNGZhODlj
NjVkNWJkYmZjYzQxM2VkODk5ODRkNTAyZmU2MjcxMTk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmNwcApAQCAtNjAsNiArNjAsMTAgQEAgU1ZHU3R5bGVkRWxlbWVudDo6U1ZHU3R5bGVkRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW0KIHsKIH0KIAor
U1ZHU3R5bGVkRWxlbWVudDo6flNWR1N0eWxlZEVsZW1lbnQoKQoreworfQorCiBTdHJpbmcgU1ZH
U3R5bGVkRWxlbWVudDo6dGl0bGUoKSBjb25zdAogewogICAgIC8vIEFjY29yZGluZyB0byBzcGVj
LCB3ZSBzaG91bGQgbm90IHJldHVybiB0aXRsZXMgd2hlbiBob3ZlcmluZyBvdmVyIDxzdmc+IGVs
ZW1lbnRzICh0aG9zZSAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
aCBiL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAppbmRleCAzNDgyYTRmNjg3YjRiYTc4
MTRmMzQwMzE5MzY5NTM3Yzc5MzU0NmM4Li41ZTk5NmIzMDRmZWQ4NWRmOGQwNGEyNmIzZDVkMjdj
Y2NhNTllNGQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKKysr
IGIvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50IDogcHVibGljIFNWR0Vs
ZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdTdHlsYWJsZSB7
CiAgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5TVkdTdHlsZWRFbGVtZW50KCk7CisKICAg
ICAgICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdDsKIAogICAgICAgICBib29sIGhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0IHsgcmV0dXJuICFtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVu
Z3Rocy5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LmNwcAppbmRleCBiOTA4ODdhNGFlMTQ5MDgxZWNlYjE5OGVmY2NlY2EyYjRjZGJiNWFm
Li40NDE5NDQzYTVjMWM4NDM2NjUyMzA0NDllYmFlYmM5ZTRkMmYwY2I0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCkBAIC0zOCw2ICszOCwxMCBA
QCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZQogewogfQogCitTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6flNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KCkKK3sKK30KKwogQWZmaW5l
VHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRDVE0oU3R5bGVVcGRh
dGVTdHJhdGVneSBzdHlsZVVwZGF0ZVN0cmF0ZWd5KSBjb25zdAogewogICAgIHJldHVybiBTVkdM
b2NhdGFibGU6OmNvbXB1dGVDVE0odGhpcywgU1ZHTG9jYXRhYmxlOjpOZWFyZXN0Vmlld3BvcnRT
Y29wZSwgc3R5bGVVcGRhdGVTdHJhdGVneSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oIGIvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQuaAppbmRleCA3NjY4ODg5NGE1YWNmODk4MTUxMjBmMmFhZGE2ZGJkYmU1
ZjZjNTdmLi4yOTBmN2Y4NjNmYjAxODkwZmJkZjc2MWM4ODFlZmVhM2Y0Y2NiMzVlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCisrKyBiL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgKQEAgLTMzLDYgKzMzLDgg
QEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1RyYW5zZm9ybWFibGUgewogcHVibGlj
OgorICAgIHZpcnR1YWwgflNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KCk7CisKICAgICB2
aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oU3R5bGVVcGRhdGVTdHJhdGVneSA9IEFsbG93
U3R5bGVVcGRhdGUpIGNvbnN0OwogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVl
bkNUTShTdHlsZVVwZGF0ZVN0cmF0ZWd5ID0gQWxsb3dTdHlsZVVwZGF0ZSkgY29uc3Q7CiAgICAg
dmlydHVhbCBTVkdFbGVtZW50KiBuZWFyZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAgYi9XZWJDb3JlL3htbC9YUGF0aFBh
cnNlci5jcHAKaW5kZXggMjBlNzU5MGU1ZWEyOWNmNmQ5M2E5MzFlODUzM2E1NmVlNmIzYTI1Ni4u
YzI0MmE1Y2QxNDk4YTQxODk0ZjkxYzQ0NGY2ZDBlYzI5YzY2YzVlNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNw
cApAQCAtNDEwLDYgKzQxMCwxMCBAQCBQYXJzZXI6OlBhcnNlcigpCiAgICAgcmVzZXQoU3RyaW5n
KCkpOwogfQogCitQYXJzZXI6On5QYXJzZXIoKQoreworfQorCiB2b2lkIFBhcnNlcjo6cmVzZXQo
Y29uc3QgU3RyaW5nJiBkYXRhKQogewogICAgIG1fbmV4dFBvcyA9IDA7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3htbC9YUGF0aFBhcnNlci5oIGIvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuaAppbmRl
eCBlNzc5NjAzMDhlODE4YWM0MDhlY2UyMTY2YWY3OWFlMTQ2Y2Q2MWM0Li40NGE4ZTQ4OGRlM2Zh
NjRiNDM1MjE2MmRhYzRjNTQzYmMyYTM2MWE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YUGF0
aFBhcnNlci5oCisrKyBiL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmgKQEAgLTYxLDYgKzYxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjbGFzcyBQYXJzZXIgOiBwdWJsaWMgTm9u
Y29weWFibGUgewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICBQYXJzZXIoKTsKKyAgICAg
ICAgICAgIH5QYXJzZXIoKTsKIAogICAgICAgICAgICAgWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZXIuZ2V0KCk7IH0KICAgICAgICAgICAgIGJvb2wg
ZXhwYW5kUU5hbWUoY29uc3QgU3RyaW5nJiBxTmFtZSwgU3RyaW5nJiBsb2NhbE5hbWUsIFN0cmlu
ZyYgbmFtZXNwYWNlVVJJKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>