<?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>17210</bug_id>
          
          <creation_ts>2008-02-07 11:36:29 -0800</creation_ts>
          <short_desc>Eliminate platform-specific #ifdefs in ResourceError.h and AuthenticationChallenge.h</short_desc>
          <delta_ts>2008-02-25 18:22:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>69691</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-02-07 11:36:29 -0800</bug_when>
    <thetext>Eliminate platform-specific #ifdefs in ResourceError.h and AuthenticationChallenge.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69694</commentid>
    <comment_count>1</comment_count>
      <attachid>18986</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-02-07 11:46:04 -0800</bug_when>
    <thetext>Created attachment 18986
patch v1

This patch introduces ResourceErrorBase and AuthenticationChallengeBase, similar to what was done for ResourceResponse and ResourceRequest.

Some things to note about this patch:

1- Generic implementations of AuthenticationChallenge, ResourceError, ResourceRequest, and ResourceResponse are now in a newly created network/generic directory.  Ports that do not need to customize these classes can just include the generic ones.  There does not seem to be any convention for this in WebKit, so I&apos;m not sure how this will be received.  Please advise if you prefer another way.

2- The global operator== defined for many of these types is now implemented by calling a compare function defined on the *Base class.  That compare function then calls a platformCompare function to allow the platform to implement the equality test for platform-specific fields.  I chose the name &quot;compare&quot; after seeing it used in Vector.h.  I applied this technique to the operator== implemented for ResourceResponse, which frees ResourceResponseBase.cpp of a platform-specific #ifdef.

3- Many of these classes require lazy initialization on Mac and CF ports.  I came up with a fairly uniform way of dealing with this.  Each method that may need to perform lazy initialization, now calls a lazyInit function defined on the *Base class.  That function simply downcasts to the non-Base class and calls a platformLazyInit function.  The *Base class also defines platformLazyInit to do nothing.  That way, if a port does not define platformLazyInit, then all of the lazyInit calls should be simply eliminated by the compiler.  This takes advantage of how method names are shadowed by subclasses in C++.

I&apos;ve tried to be fairly methodical with this patch.  Hopefully once you review one of the classes, the changes to the second will be obvious and also straightforward to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69697</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-07 11:55:34 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; 1- Generic implementations of AuthenticationChallenge, ResourceError,
&gt; ResourceRequest, and ResourceResponse are now in a newly created
&gt; network/generic directory.  Ports that do not need to customize these classes
&gt; can just include the generic ones.  There does not seem to be any convention
&gt; for this in WebKit, so I&apos;m not sure how this will be received.  Please advise
&gt; if you prefer another way.

I think it is fine to have these files, but they should be in the top level network directory, not a new one named &quot;generic&quot;. I don&apos;t think &quot;generic&quot; makes the purpose of the files clearer. Comments in the files should explain when you&apos;d use them.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69707</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-02-07 14:31:17 -0800</bug_when>
    <thetext>Well, since not every platform is going to use the generic versions of ResourcError.h, etc., it seems like it would be confusing to have them in the common base directory.  I thought it might be wierd to have a ResourceError.h in platform/network/ as well as in platform/network/mac/.  That doesn&apos;t seem awkward (potentially confusing) to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70177</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-10 21:20:18 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Well, since not every platform is going to use the generic versions of
&gt; ResourcError.h, etc., it seems like it would be confusing to have them in the
&gt; common base directory.  I thought it might be wierd to have a ResourceError.h
&gt; in platform/network/ as well as in platform/network/mac/.  That doesn&apos;t seem
&gt; awkward (potentially confusing) to you?

Sure, that&apos;d be more than awkward; it wouldn&apos;t even work with our build system.

I guess I didn&apos;t realize that your designs involved same named files in different directories. The old design went out of its way to avoid that; I see now that&apos;s the tradeoff here.

I&apos;m still not sure &quot;generic&quot; is the right name for these. I&apos;d like to understand what the quality would be that would allow a platform to use the base versions of the classes without adding anything.

I think Anders Carlsson should probably review this patch. I&apos;ll cc him on this bug so he&apos;ll notice it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70182</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-02-10 22:47:07 -0800</bug_when>
    <thetext>I&apos;m happy to kill the generic directory if that would be preferred.  I just thought it would be useful for new ports (sort of a starting point for a port).  The qt and curl ports just happen to be able to use most of the files in the generic folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71207</commentid>
    <comment_count>6</comment_count>
    <who name="Robert Blaut">webkit</who>
    <bug_when>2008-02-20 03:32:19 -0800</bug_when>
    <thetext>P5 is not used for WebKit bugs. [http://webkit.org/quality/bugpriorities.html]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71534</commentid>
    <comment_count>7</comment_count>
      <attachid>19285</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-02-22 17:12:29 -0800</bug_when>
    <thetext>Created attachment 19285
patch v2

OK, here&apos;s a version of the patch sans-generic folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71593</commentid>
    <comment_count>8</comment_count>
      <attachid>19285</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-23 09:28:45 -0800</bug_when>
    <thetext>Comment on attachment 19285
patch v2

One thing I don&apos;t like about this approach is that we end up with so many identically named files in different directories. But it looks like you executed the design just fine.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71870</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-02-25 05:21:50 -0800</bug_when>
    <thetext>This patch does not apply cleanly to SVN as of r30564 due to conflicts in WebCore.vcproj and WebCore.xcodeproj.  Can you please regenerate this patch against SVN HEAD and attach it so that it can be landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71900</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-02-25 12:58:54 -0800</bug_when>
    <thetext>&gt; One thing I don&apos;t like about this approach is that we end up with so many
&gt; identically named files in different directories. But it looks like you
&gt; executed the design just fine.

Hi Darin.  I plan on contributing more patches like this, so please let me know if you have a more preferred design that I should apply instead.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71902</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-25 13:05:40 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; One thing I don&apos;t like about this approach is that we end up with so many
&gt; &gt; identically named files in different directories. But it looks like you
&gt; &gt; executed the design just fine.
&gt; 
&gt; Hi Darin.  I plan on contributing more patches like this, so please let me know
&gt; if you have a more preferred design that I should apply instead. Thanks!

I&apos;ll let you know if I think of something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71954</commentid>
    <comment_count>12</comment_count>
      <attachid>19367</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2008-02-25 17:48:22 -0800</bug_when>
    <thetext>Created attachment 19367
patch v3

OK, here&apos;s the merged version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71959</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-02-25 18:22:52 -0800</bug_when>
    <thetext>Landed in r30584.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18986</attachid>
            <date>2008-02-07 11:46:04 -0800</date>
            <delta_ts>2008-02-22 17:12:29 -0800</delta_ts>
            <desc>patch v1</desc>
            <filename>net-1.diff</filename>
            <type>text/plain</type>
            <size>116719</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDMwMDY3
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI4IEBACisyMDA4LTAy
LTA3ICBNb3JnYW5MICA8bW9yZ2FubC53ZWJraXRAeWFob28uY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVsaW1pbmF0ZSBzb21lICNpZmRlZnMg
ZnJvbSBoZWFkZXJzIGluIHBsYXRmb3JtL25ldHdvcmsuCisgICAgICAgIGh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzg2CisKKyAgICAgICAgKiBXZWJDb3JlLmJhc2Uu
ZXhwOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRvbS9YTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHA6IENvcGllZCBmcm9tIHBsYXRmb3Jt
L25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwLgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpwcmV2aW91
c0ZhaWx1cmVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2U6OnByb3Bvc2VkQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2U6OnByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmZhaWx1cmVSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6aXNOdWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6bnVsbGlmeSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmNvbXBhcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmg6IENvcGllZCBm
cm9tIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6cGxhdGZvcm1Db21wYXJlKToK
KyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3IhPSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yLmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcDogQ29w
aWVkIGZyb20gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpsYXp5SW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yQmFzZTo6Y29tcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5oOiBDb3BpZWQgZnJvbSBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
RXJyb3IuaC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjppc051bGwpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OmRvbWFpbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZXJyb3JDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3JCYXNlOjpmYWlsaW5nVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3JCYXNlOjpsb2NhbGl6ZWREZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yQmFzZTo6UmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvckJhc2U6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvckJhc2U6OnBsYXRmb3JtQ29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppc0hUVFAp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnVybCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0VXJsKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjptaW1lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0TWltZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjp0ZXh0RW5jb2RpbmdOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpbmdO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzdWdnZXN0ZWRG
aWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0U3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6
Omh0dHBTdGF0dXNDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpzZXRIVFRQU3RhdHVzQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6aHR0cFN0YXR1c1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2U6OnNldEhUVFBTdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2VCYXNlOjpodHRwSGVhZGVyRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnNldEhUVFBIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpzZXRFeHBpcmF0aW9uRGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwaXJhdGlvbkRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldExhc3RNb2RpZmllZERhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RNb2RpZmllZERhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmxhenlJbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnBsYXRmb3JtQ29tcGFyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhl
bnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOjpwbGF0Zm9ybUNvbXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnNvdXJjZUhhbmRsZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6Y2ZVUkxBdXRoQ2hh
bGxlbmdlUmVmKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3Iu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFtRXJyb3IpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvZ2VuZXJpYzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9nZW5l
cmljL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2dlbmVyaWMvUmVzb3VyY2VFcnJvci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvZ2VuZXJpYy9SZXNvdXJjZVJlcXVlc3QuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OlJlc291cmNlUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvZ2VuZXJpYy9SZXNvdXJjZVJlc3BvbnNlLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNw
b25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6OnNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6bnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnBsYXRmb3JtQ29tcGFyZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvci5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtQ29tcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0
L1Jlc291cmNlUmVzcG9uc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nv
ci5jcHA6CisKIDIwMDgtMDItMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpJbmRleDogV2ViQ29yZS5iYXNlLmV4cAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlLmJhc2UuZXhwCShyZXZpc2lvbiAzMDA0MykKKysrIFdlYkNv
cmUuYmFzZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsyNDQsNyBAQCBfX1pON1dlYkNv
cmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1bHRDMUVSS1MwXwog
X19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0RDFFdgogX19aTjdXZWJDb3JlMTNLZXlib2FyZEV2
ZW50QzFFUktOU18xMkF0b21pY1N0cmluZ0ViYlBOU185RE9NV2luZG93RVJLTlNfNlN0cmluZ0Vq
YmJiYmIKLV9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvcjE5dW5wYWNrUGxhdGZvcm1FcnJvckV2
CitfX1pOSzdXZWJDb3JlMTdSZXNvdXJjZUVycm9yQmFzZThsYXp5SW5pdEV2CiBfX1pON1dlYkNv
cmUxM3RvRGV2aWNlU3BhY2VFUktOU185RmxvYXRSZWN0RVA4TlNXaW5kb3cKIF9fWk43V2ViQ29y
ZTE0Q2FjaGVkUmVzb3VyY2U1ZGVyZWZFUE5TXzIwQ2FjaGVkUmVzb3VyY2VDbGllbnRFCiBfX1pO
N1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTJzZXRDb21taXR0ZWRFYgpJbmRleDogV2ViQ29yZS5v
cmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLm9yZGVyCShyZXZpc2lvbiAzMDA0MykKKysrIFdl
YkNvcmUub3JkZXIJKHdvcmtpbmcgY29weSkKQEAgLTYyOTYsNyArNjI5Niw3IEBAIF9fWk43V2Vi
Q29yZTE4TWFpblJlc291cmNlTG9hZGVyN2RpZEZhaWwKIF9fWk43V2ViQ29yZTE4TWFpblJlc291
cmNlTG9hZGVyMTNyZWNlaXZlZEVycm9yRVJLTlNfMTNSZXNvdXJjZUVycm9yRQogX19aTjdXZWJD
b3JlMTFGcmFtZUxvYWRlcjI1cmVjZWl2ZWRNYWluUmVzb3VyY2VFcnJvckVSS05TXzEzUmVzb3Vy
Y2VFcnJvckViCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyNHN0b3BFdgotX19aTjdXZWJDb3Jl
MTNSZXNvdXJjZUVycm9yMTl1bnBhY2tQbGF0Zm9ybUVycm9yRXYKK19fWk43V2ViQ29yZTE3UmVz
b3VyY2VFcnJvckJhc2U4bGF6eUluaXRFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjIxaGFu
ZGxlRmFsbGJhY2tDb250ZW50RXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxM2RpZE5vdE9w
ZW5VUkxFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIzMWludmFsaWRhdGVD
dXJyZW50SXRlbUNhY2hlZFBhZ2VFdgpJbmRleDogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9u
IDMwMDQzKQorKysgV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQwNDksMTEgKzQwNDksMTEgQEAKIAkJCQlOYW1lPSJuZXR3b3JrIg0KIAkJCQk+DQogCQkJ
CTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3
b3JrXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmls
ZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIg0KIAkJCQkJPg0KIAkJCQk8
L0ZpbGU+DQogCQkJCTxGaWxlDQpAQCAtNDA5Myw3ICs0MDkzLDExIEBACiAJCQkJCT4NCiAJCQkJ
PC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3
b3JrXFJlc291cmNlRXJyb3IuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0
d29ya1xSZXNvdXJjZUVycm9yQmFzZS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxG
aWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcUmVzb3VyY2VFcnJv
ckJhc2UuY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQpAQCAtNDEzMSw2
ICs0MTM1LDEwIEBACiAJCQkJPEZpbHRlcg0KIAkJCQkJTmFtZT0iY2YiDQogCQkJCQk+DQorICAg
ICAgICAgICAgICAgICAgICA8RmlsZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIg0K
KyAgICAgICAgICAgICAgICAgICAgICAgID4NCisgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4N
CiAJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNm
XEF1dGhlbnRpY2F0aW9uQ0YuY3BwIg0KIAkJCQkJCT4NCkBAIC00MTQ3LDYgKzQxNTUsMTAgQEAK
IAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxGb3JtRGF0YVN0cmVh
bUNGTmV0LmgiDQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KKyAgICAgICAgICAgICAgICAgICAg
PEZpbGUNCisgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcY2ZcUmVzb3VyY2VFcnJvci5oIg0KKyAgICAgICAgICAgICAgICAgICAgICAgID4N
CisgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4NCiAJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlRXJyb3JDRi5jcHAiDQogCQkJ
CQkJPg0KSW5kZXg6IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDMwMDQzKQor
KysgV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzQsOCArMzc0LDYgQEAKIAkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVx
dWVzdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEM3NjQ5MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gKi87IH07
CiAJCTUxNEM3NjU0MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0QTBDRTkyMzRF
MDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjU1MENFOTIzNEYwMDdFRjNDRCAvKiBSZXNv
dXJjZVJlc3BvbnNlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE0Qzc2NEIwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VNYWMu
bW0gKi87IH07Ci0JCTUxNEM3NjZCMENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTRDNzY1NjBDRTkyM0ExMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3Bw
ICovOyB9OwotCQk1MTRDNzY2QzBDRTkyM0ExMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NEM3NjU3MENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjZEMENF
OTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50
aWFsLmNwcCAqLzsgfTsKIAkJNTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU5
MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NkYwQ0U5MjNBMTAwN0VGM0NEIC8qIEZv
cm1EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEM3NjVBMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi87IH07CkBAIC0zODUs
OCArMzgzLDYgQEAKIAkJNTE0Qzc2NzMwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1RTBD
RTkyM0ExMDA3RUYzQ0QgLyogSFRUUFBhcnNlcnMuaCAqLzsgfTsKIAkJNTE0Qzc2NzQwQ0U5MjNB
MTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1RjBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVj
dGlvblNwYWNlLmNwcCAqLzsgfTsKIAkJNTE0Qzc2NzUwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3Rl
Y3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0Qzc2NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxNEM3Njc2MENFOTIz
QTEwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjYxMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJj
ZUVycm9yLmNwcCAqLzsgfTsKLQkJNTE0Qzc2NzcwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNl
RXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NEM3NjYyMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NzgwQ0U5MjNBMTAwN0VG
M0NEIC8qIFJlc291cmNlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNEM3NjYzMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRs
ZS5jcHAgKi87IH07CiAJCTUxNEM3Njc5MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2
NjQwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2N0EwQ0U5MjNBMTAwN0VGM0NE
IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY2NTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5k
bGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTU0MSw2ICsxNTM3LDEyIEBACiAJCTkzNDQyQ0EwMEQyQjMzNjAwMDMzOEZGOSAvKiBI
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzQ0MkM5RjBEMkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93
c0NvbGxlY3Rpb24uY3BwICovOyB9OwogCQk5MzREOUJBNTBCOEMxMTZCMDA3QjQyQTkgLyogV2Vi
Q29yZU5TU3RyaW5nRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTM0RDlCQTQwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4
dHJhcy5tbSAqLzsgfTsKIAkJOTM0RDlCQTcwQjhDMTE3NTAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0
cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM0RDlCQTYwQjhDMTE3NTAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzNEY3MTM4
MEQ1QTZFRkYwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RjcxMzcwRDVBNkVG
RjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgKi87IH07CisJCTkz
NEY3MTNBMEQ1QTZGMTAwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEY3MTM5MEQ1
QTZGMTAwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5MzRGNzEzQzBENUE2RjE5
MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEY3MTNCMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJj
ZUVycm9yQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTkzNEY3MTNFMEQ1QTZGMjgwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGNzEzRDBE
NUE2RjI4MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuY3BwICovOyB9OworCQk5MzRGNzE0
MjBENUE2RjQ0MDAwMThENjkgLyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RjcxNDEwRDVBNkY0NDAwMDE4RDY5IC8qIFJl
c291cmNlRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk5MzRGNzE0NDBENUE2RjUzMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEY3
MTQzMEQ1QTZGNTMwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNEZFOUU1MEI1Q0E1
MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGRTlFNDBCNUNBNTM5MDAzRTRBNzMgLyogRmlsZUNob29z
ZXIuY3BwICovOyB9OwogCQk5MzUyMDcxOTA5QkQzQkE1MDBGMjAzOEQgLyogU3RhdGljQ29uc3Ry
dWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzUyMDcxNzA5QkQzQkE1MDBGMjAzOEQgLyogU3RhdGljQ29uc3RydWN0b3JzLmggKi87IH07CiAJ
CTkzNTIwN0JFMDlCRDQxMEEwMEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUyMDdCRDA5QkQ0MTBBMDBG
MjAzOEQgLyogTG9jYWxpemVkU3RyaW5ncy5oICovOyB9OwpAQCAtNDYzMCw4ICs0NjMyLDYgQEAK
IAkJNTE0Qzc2NDkwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdE1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NEEwQ0U5MjM0RTAwN0VGM0NE
IC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVzb3VyY2VSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0
QjBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25zZU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2VNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEM3NjU2MENFOTIzQTEwMDdFRjNDRCAvKiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUxNEM3NjU3MENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1ODBDRTkyM0ExMDA3
RUYzQ0QgLyogQ3JlZGVudGlhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDcmVkZW50aWFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2
NTkwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3JlZGVudGlhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTRDNzY1QTBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNDY0MSw4ICs0NjQxLDYgQEAKIAkJNTE0Qzc2NUUwQ0U5MjNBMTAwN0VGM0NEIC8q
IEhUVFBQYXJzZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUVFBQYXJz
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjVGMENFOTIzQTEwMDdF
RjNDRCAvKiBQcm90ZWN0aW9uU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHJvdGVjdGlvblNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE0Qzc2NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm90ZWN0aW9uU3BhY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTE0Qzc2NjEwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlRXJy
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VFcnJv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEM3NjYyMENFOTIzQTEwMDdF
RjNDRCAvKiBSZXNvdXJjZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlc291cmNlRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NjMw
Q0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0Qzc2NjQwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlSGFuZGxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjY1MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNv
dXJjZUhhbmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNv
dXJjZUhhbmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTc2NCw2
ICs1NzYyLDEyIEBACiAJCTkzNDQyQzlGMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dz
Q29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1M
VGFibGVSb3dzQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
NEQ5QkE0MEI4QzExNkIwMDdCNDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU5TU3RyaW5nRXh0cmFz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzREOUJBNjBCOEMxMTc1MDA3QjQy
QTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTM0RjcxMzcwRDVBNkVGRjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0
RjcxMzkwRDVBNkYxMDAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VC
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNEY3MTNCMEQ1QTZGMTkwMDAx
OEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVzb3VyY2VFcnJvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTM0RjcxM0QwRDVBNkYyODAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUVycm9yQmFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNEY3MTQxMEQ1QTZGNDQwMDAxOEQ2OSAvKiBS
ZXNvdXJjZUVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJj
ZUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNEY3MTQzMEQ1QTZGNTMw
MDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTM0RkU5RTQwQjVDQTUzOTAwM0U0QTczIC8qIEZpbGVDaG9vc2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVDaG9vc2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1MjA3MTcwOUJEM0JBNTAwRjIwMzhEIC8q
IFN0YXRpY0NvbnN0cnVjdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dGF0aWNDb25zdHJ1Y3RvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1MjA3
QkQwOUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemVkU3RyaW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODI1Niw5ICs4MjYwLDExIEBACiAJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVC
NCAvKiBuZXR3b3JrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk5MzRGNzEzRDBENUE2RjI4MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuY3BwICov
LAorCQkJCTkzNEY3MTNCMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5oICov
LAorCQkJCTkzNEY3MTM5MEQ1QTZGMTAwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2UuaCAqLywKKwkJCQk5MzRGNzEzNzBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlLmNwcCAqLywKIAkJCQk2NTZCODRFNzBBRUExREFFMDBBMDk1QjQgLyog
bWFjICovLAotCQkJCTUxNEM3NjU2MENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5jcHAgKi8sCi0JCQkJNTE0Qzc2NTcwQ0U5MjNBMTAwN0VGM0NEIC8qIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmggKi8sCiAJCQkJNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8qIENy
ZWRlbnRpYWwuY3BwICovLAogCQkJCTUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50
aWFsLmggKi8sCiAJCQkJNTE0Qzc2NUEwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmNwcCAq
LywKQEAgLTgyNjgsOCArODI3NCw2IEBACiAJCQkJNTE0Qzc2NUUwQ0U5MjNBMTAwN0VGM0NEIC8q
IEhUVFBQYXJzZXJzLmggKi8sCiAJCQkJNTE0Qzc2NUYwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3Rl
Y3Rpb25TcGFjZS5jcHAgKi8sCiAJCQkJNTE0Qzc2NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3Rl
Y3Rpb25TcGFjZS5oICovLAotCQkJCTUxNEM3NjYxMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJj
ZUVycm9yLmNwcCAqLywKLQkJCQk1MTRDNzY2MjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VF
cnJvci5oICovLAogCQkJCTUxNEM3NjYzMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRs
ZS5jcHAgKi8sCiAJCQkJNTE0Qzc2NjQwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxl
LmggKi8sCiAJCQkJNTE0Qzc2NjUwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlQ2xp
ZW50LmggKi8sCkBAIC04Mjg1LDYgKzgyODksOCBAQAogCQk2NTZCODRFNzBBRUExREFFMDBBMDk1
QjQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk5MzRGNzE0MzBENUE2RjUzMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAq
LywKKwkJCQk5MzRGNzE0MTBENUE2RjQ0MDAwMThENjkgLyogUmVzb3VyY2VFcnJvci5oICovLAog
CQkJCTUxNEM3NjQyMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oICovLAog
CQkJCTUxNEM3NjQzMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5tbSAqLywK
IAkJCQk1MTRDNzY0NDBDRTkyMzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMuaCAqLywK
QEAgLTEyMzczLDcgKzEyMzc5LDYgQEAKIAkJCQlCMkMzREEyMDBEMDA2QzFEMDBFRjZGMjYgLyog
QXRvbWljU3RyaW5nSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAw
MDNBQzhEIC8qIEF0dHIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAz
QUM4RCAvKiBBdHRyaWJ1dGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxNEM3NjZDMENFOTIzQTEw
MDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE0Qzc2NEMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOENGRjA0RTBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUUxRUNCMzBDOTFDNTU2MDBEQzI1NUIgLyogQXV0b2RyYWlu
ZWRQb29sLmggaW4gSGVhZGVycyAqLywKQEAgLTEzODIyLDcgKzEzODI3LDYgQEAKIAkJCQk5Mzc5
OUVGOTBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29yZEJyZWFrLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzMwOUUwQTA5OUU2NDkyMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2QzJGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTRDNzY3NzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3Vy
Y2VFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NzkwQ0U5MjNBMTAwN0VGM0NEIC8q
IFJlc291cmNlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3QTBDRTkyM0ExMDA3
RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3
NjdCMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKQEAgLTE0MjI3LDYgKzE0MjMxLDEwIEBACiAJCQkJNTFBOTI2N0QwRDUzRjA1NzAwNjNF
Q0MyIC8qIE9yaWdpblF1b3RhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBOTI2N0Yw
RDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1RENGODM2RDBENTkxNTk4MDA5NTNCQzYgLyogUGx1Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5MzRGNzEzQTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkg
LyogUmVzb3VyY2VFcnJvckJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNEY3MTQyMEQ1QTZG
NDQwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzRGNzE0
NDBENUE2RjUzMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMTQyNjUsNyArMTQyNzMsNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcg
LyogUHJvamVjdCBvYmplY3QgKi8gPSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRD
b25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwotCQkJY29tcGF0aWJp
bGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAx
OwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCkBAIC0xNDI3OSw3ICsxNDI4Niw2
IEBACiAJCQltYWluR3JvdXAgPSAwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICov
OwogCQkJcHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1
Y3RzICovOwogCQkJcHJvamVjdERpclBhdGggPSAiIjsKLQkJCXByb2plY3RSb290ID0gIiI7CiAJ
CQl0YXJnZXRzID0gKAogCQkJCTkzRjE5OEE1MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlICov
LAogCQkJCUREMDQxRkJFMDlEOUREQkUwMDEwQUYyQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCkBA
IC0xNDQyNCw3ICsxNDQzMCw2IEBACiAJCQkJQjJDM0RBMUUwRDAwNkMxRDAwRUY2RjI2IC8qIEF0
b21pY1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwRTA5RDU2MzI3MDAwM0FD
OEQgLyogQXR0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEM0QTgwQzA5RDU2MzI3MDAwM0FD
OEQgLyogQXR0cmlidXRlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNEM3NjZCMENFOTIzQTEw
MDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MTRDNzY0RDBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlBOENGRjA1MDBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTFFQ0FGMEM5MUM1NDYwMERDMjU1QiAvKiBBdXRv
ZHJhaW5lZFBvb2wubW0gaW4gU291cmNlcyAqLywKQEAgLTE1NDMxLDcgKzE1NDM2LDYgQEAKIAkJ
CQk5Mzc5OUVGODBCRjI3NDM2MDBEMEYyMzAgLyogUmVuZGVyV29yZEJyZWFrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzMzA5RTA5MDk5RTY0OTIwMDU2RTU4MSAvKiBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0IxNkMyRTA5NzlDM0JEMDA0Njc3NDEg
LyogUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTRDNzY3NjBDRTkyM0ExMDA3RUYz
Q0QgLyogUmVzb3VyY2VFcnJvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY1MDBDRTky
MzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
NEM3Njc4MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTRDNzY1MTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVNYWMubW0g
aW4gU291cmNlcyAqLywKQEAgLTE1ODIwLDYgKzE1ODI0LDggQEAKIAkJCQlCQ0U3QjE5MzBENEU4
Njk2MDA3NUE1MzkgLyogSlNIaXN0b3J5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
QTkyNjdDMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5RdW90YU1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTFBOTI2N0UwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblVzYWdlUmVjb3Jk
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzNEY3MTM4MEQ1QTZFRkYwMDAxOEQ2OSAvKiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTM0RjcxM0Uw
RDVBNkYyODAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogZG9tL1hNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL1hNTFRva2VuaXpl
ci5jcHAJKHJldmlzaW9uIDMwMDQzKQorKysgZG9tL1hNTFRva2VuaXplci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKSW5kZXg6IGxvYWRlci9SZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAzMDA0MykKKysrIGxvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpJbmRleDogcGxhdGZvcm0vbmV0d29yay9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHJldmlzaW9uIDMwMDQzKQorKysgcGxhdGZvcm0vbmV0
d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oIgotCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoKQotICAgIDogbV9pc051bGwodHJ1ZSkKLSAgICAsIG1fcHJldmlvdXNGYWls
dXJlQ291bnQoMCkKLXsKLX0KLQotQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25z
dCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVy
ZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCi0gICAgOiBtX2lzTnVsbChmYWxzZSkKLSAgICAsIG1fcHJvdGVjdGlvblNw
YWNlKHByb3RlY3Rpb25TcGFjZSkKLSAgICAsIG1fcHJvcG9zZWRDcmVkZW50aWFsKHByb3Bvc2Vk
Q3JlZGVudGlhbCkKLSAgICAsIG1fcHJldmlvdXNGYWlsdXJlQ291bnQocHJldmlvdXNGYWlsdXJl
Q291bnQpCi0gICAgLCBtX2ZhaWx1cmVSZXNwb25zZShyZXNwb25zZSkKLSAgICAsIG1fZXJyb3Io
ZXJyb3IpCi17Ci19Ci0KLXVuc2lnbmVkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwcmV2aW91
c0ZhaWx1cmVDb3VudCgpIGNvbnN0IAoteyAKLSAgICByZXR1cm4gbV9wcmV2aW91c0ZhaWx1cmVD
b3VudDsgCi19Ci0KLWNvbnN0IENyZWRlbnRpYWwmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpw
cm9wb3NlZENyZWRlbnRpYWwoKSBjb25zdCAKLXsgCi0gICAgcmV0dXJuIG1fcHJvcG9zZWRDcmVk
ZW50aWFsOyAKLX0KLQotY29uc3QgUHJvdGVjdGlvblNwYWNlJiBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6cHJvdGVjdGlvblNwYWNlKCkgY29uc3QgCi17IAotICAgIHJldHVybiBtX3Byb3RlY3Rp
b25TcGFjZTsgCi19Ci0KLWNvbnN0IFJlc291cmNlUmVzcG9uc2UmIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpmYWlsdXJlUmVzcG9uc2UoKSBjb25zdCAKLXsgCi0gICAgcmV0dXJuIG1fZmFpbHVy
ZVJlc3BvbnNlOyAKLX0KLQotY29uc3QgUmVzb3VyY2VFcnJvciYgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OmVycm9yKCkgY29uc3QgCi17IAotICAgIHJldHVybiBtX2Vycm9yOyAKLX0KLQotYm9v
bCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aXNOdWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9pc051bGw7Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Om51bGxpZnkoKQot
ewotICAgIG1faXNOdWxsID0gdHJ1ZTsKLX0KLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYikK
LXsKLSAgICBpZiAoYS5pc051bGwoKSAhPSBiLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKGEuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAK
LSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGEuc2VuZGVyKCkgIT0gYi5zZW5kZXIoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICBpZiAoYS5uc1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKCkgIT0gYi5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSNlbGlmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKGEuc291cmNl
SGFuZGxlKCkgIT0gYi5zb3VyY2VIYW5kbGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKGEuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkgIT0gYi5jZlVSTEF1dGhDaGFsbGVuZ2VS
ZWYoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICBpZiAoYS5wcm90ZWN0
aW9uU3BhY2UoKSAhPSBiLnByb3RlY3Rpb25TcGFjZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIAotICAgIGlmIChhLnByb3Bvc2VkQ3JlZGVudGlhbCgpICE9IGIucHJvcG9zZWRD
cmVkZW50aWFsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgaWYgKGEu
cHJldmlvdXNGYWlsdXJlQ291bnQoKSAhPSBiLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgaWYgKGEuZmFpbHVyZVJlc3BvbnNlKCkg
IT0gYi5mYWlsdXJlUmVzcG9uc2UoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAK
LSAgICBpZiAoYS5lcnJvcigpICE9IGIuZXJyb3IoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
YikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi19Ci0KLQpJbmRleDogcGxhdGZvcm0v
bmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3Jt
L25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMzAwNDMpCisrKyBw
bGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLSNpZm5kZWYgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VfaAotI2RlZmluZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCi0KLSNpbmNsdWRlICJDcmVk
ZW50aWFsLmgiCi0jaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCi0jaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKLQotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLQotCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLSNpZm5kZWYgX19PQkpDX18KLXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICppZDsK
LWNsYXNzIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0jZWxzZQotQGNsYXNzIE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgVVNFKENGTkVU
V09SSykKLXR5cGVkZWYgc3RydWN0IF9DRlVSTEF1dGhDaGFsbGVuZ2UqIENGVVJMQXV0aENoYWxs
ZW5nZVJlZjsKLSNlbmRpZgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVzb3Vy
Y2VIYW5kbGU7Ci0KLWNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHsKLQotcHVibGljOgot
ICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7Ci0gICAgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRp
YWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cik7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKik7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiwgUmVzb3VyY2VIYW5k
bGUqIHNvdXJjZUhhbmRsZSk7Ci0jZW5kaWYKLQotICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVy
ZUNvdW50KCkgY29uc3Q7Ci0gICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFs
KCkgY29uc3Q7Ci0gICAgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UoKSBj
b25zdDsKLSAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBmYWlsdXJlUmVzcG9uc2UoKSBjb25z
dDsKLSAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0OwotICAgIAotICAgIGJv
b2wgaXNOdWxsKCkgY29uc3Q7Ci0gICAgdm9pZCBudWxsaWZ5KCk7Ci0gICAgCi0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIGlkIHNlbmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VuZGVyLmdldCgpOyB9
Ci0gICAgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbnNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFjQ2hhbGxlbmdlLmdldCgpOyB9Ci0jZWxpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIFJlc291cmNlSGFuZGxlKiBzb3VyY2VIYW5kbGUoKSBjb25zdCB7
IHJldHVybiBtX3NvdXJjZUhhbmRsZS5nZXQoKTsgfQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJl
ZiBjZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSBjb25zdCB7IHJldHVybiBtX2NmQ2hhbGxlbmdlLmdl
dCgpOyB9Ci0jZW5kaWYKLXByaXZhdGU6Ci0gICAgYm9vbCBtX2lzTnVsbDsKLSAgICBQcm90ZWN0
aW9uU3BhY2UgbV9wcm90ZWN0aW9uU3BhY2U7Ci0gICAgQ3JlZGVudGlhbCBtX3Byb3Bvc2VkQ3Jl
ZGVudGlhbDsKLSAgICB1bnNpZ25lZCBtX3ByZXZpb3VzRmFpbHVyZUNvdW50OwotICAgIFJlc291
cmNlUmVzcG9uc2UgbV9mYWlsdXJlUmVzcG9uc2U7Ci0gICAgUmVzb3VyY2VFcnJvciBtX2Vycm9y
OwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxpZD4gbV9zZW5kZXI7Ci0gICAg
UmV0YWluUHRyPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKj4gbV9tYWNDaGFsbGVuZ2U7
Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbV9zb3Vy
Y2VIYW5kbGU7Ci0gICAgUmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gbV9jZkNoYWxs
ZW5nZTsKLSNlbmRpZgotCi19OwotCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKLX0KLSNlbmRpZgotCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29y
ay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwCShyZXZpc2lvbiAzMDA0MykJKGZyb20g
cGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHA6MzAwNDMpCisrKyBw
bGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgorCisjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQorICAgIDogbV9pc051bGwodHJ1ZSkKKyAgICAs
IG1fcHJldmlvdXNGYWlsdXJlQ291bnQoMCkKK3sKK30KKworQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVj
dGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHByZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCisgICAgOiBtX2lzTnVsbChmYWxzZSkKKyAgICAs
IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkKKyAgICAsIG1fcHJvcG9zZWRDcmVk
ZW50aWFsKHByb3Bvc2VkQ3JlZGVudGlhbCkKKyAgICAsIG1fcHJldmlvdXNGYWlsdXJlQ291bnQo
cHJldmlvdXNGYWlsdXJlQ291bnQpCisgICAgLCBtX2ZhaWx1cmVSZXNwb25zZShyZXNwb25zZSkK
KyAgICAsIG1fZXJyb3IoZXJyb3IpCit7Cit9CisKK3Vuc2lnbmVkIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0IAoreyAKKyAgICByZXR1cm4gbV9w
cmV2aW91c0ZhaWx1cmVDb3VudDsgCit9CisKK2NvbnN0IENyZWRlbnRpYWwmIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjpwcm9wb3NlZENyZWRlbnRpYWwoKSBjb25zdCAKK3sgCisgICAgcmV0dXJu
IG1fcHJvcG9zZWRDcmVkZW50aWFsOyAKK30KKworY29uc3QgUHJvdGVjdGlvblNwYWNlJiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTo6cHJvdGVjdGlvblNwYWNlKCkgY29uc3QgCit7IAorICAgIHJl
dHVybiBtX3Byb3RlY3Rpb25TcGFjZTsgCit9CisKK2NvbnN0IFJlc291cmNlUmVzcG9uc2UmIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpmYWlsdXJlUmVzcG9uc2UoKSBjb25zdCAKK3sgCisgICAg
cmV0dXJuIG1fZmFpbHVyZVJlc3BvbnNlOyAKK30KKworY29uc3QgUmVzb3VyY2VFcnJvciYgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OmVycm9yKCkgY29uc3QgCit7IAorICAgIHJldHVybiBtX2Vy
cm9yOyAKK30KKworYm9vbCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aXNOdWxsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pc051bGw7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6Om51bGxpZnkoKQoreworICAgIG1faXNOdWxsID0gdHJ1ZTsKK30KKworYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgYikKK3sKKyAgICBpZiAoYS5pc051bGwoKSAhPSBiLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGEuc2VuZGVyKCkgIT0g
Yi5zZW5kZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBpZiAoYS5u
c1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgIT0gYi5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbGlmIFVTRShDRk5FVFdPUkspCisg
ICAgaWYgKGEuc291cmNlSGFuZGxlKCkgIT0gYi5zb3VyY2VIYW5kbGUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKGEuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkgIT0gYi5jZlVS
TEF1dGhDaGFsbGVuZ2VSZWYoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAg
ICBpZiAoYS5wcm90ZWN0aW9uU3BhY2UoKSAhPSBiLnByb3RlY3Rpb25TcGFjZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIGlmIChhLnByb3Bvc2VkQ3JlZGVudGlhbCgp
ICE9IGIucHJvcG9zZWRDcmVkZW50aWFsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgaWYgKGEucHJldmlvdXNGYWlsdXJlQ291bnQoKSAhPSBiLnByZXZpb3VzRmFpbHVy
ZUNvdW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgaWYgKGEuZmFp
bHVyZVJlc3BvbnNlKCkgIT0gYi5mYWlsdXJlUmVzcG9uc2UoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAKKyAgICBpZiAoYS5lcnJvcigpICE9IGIuZXJyb3IoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCit9CisKKwpJ
bmRleDogcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
LmNwcAkocmV2aXNpb24gMzAwNDMpCisrKyBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE0ICsyOSwxNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpCitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQmFzZSgpCiAgICAgOiBtX2lzTnVsbCh0cnVlKQogICAgICwgbV9wcmV2aW91
c0ZhaWx1cmVDb3VudCgwKQogewogfQogCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2Us
IGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNG
YWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKK0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlv
dXNGYWlsdXJlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIDogbV9pc051bGwoZmFsc2UpCiAgICAgLCBtX3By
b3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpCiAgICAgLCBtX3Byb3Bvc2VkQ3JlZGVudGlh
bChwcm9wb3NlZENyZWRlbnRpYWwpCkBAIC00Niw2MiArNDksNDkgQEAgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQwogewogfQogCi11bnNpZ25lZCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6cHJldmlvdXNGYWlsdXJlQ291bnQoKSBjb25zdCAKK3Vuc2lnbmVkIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6cHJldmlvdXNGYWlsdXJlQ291bnQoKSBjb25zdCAKIHsg
CiAgICAgcmV0dXJuIG1fcHJldmlvdXNGYWlsdXJlQ291bnQ7IAogfQogCi1jb25zdCBDcmVkZW50
aWFsJiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cHJvcG9zZWRDcmVkZW50aWFsKCkgY29uc3Qg
Citjb25zdCBDcmVkZW50aWFsJiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OnByb3Bvc2Vk
Q3JlZGVudGlhbCgpIGNvbnN0IAogeyAKICAgICByZXR1cm4gbV9wcm9wb3NlZENyZWRlbnRpYWw7
IAogfQogCi1jb25zdCBQcm90ZWN0aW9uU3BhY2UmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpw
cm90ZWN0aW9uU3BhY2UoKSBjb25zdCAKK2NvbnN0IFByb3RlY3Rpb25TcGFjZSYgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlOjpwcm90ZWN0aW9uU3BhY2UoKSBjb25zdCAKIHsgCiAgICAgcmV0
dXJuIG1fcHJvdGVjdGlvblNwYWNlOyAKIH0KIAotY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OmZhaWx1cmVSZXNwb25zZSgpIGNvbnN0IAorY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpmYWlsdXJlUmVzcG9u
c2UoKSBjb25zdCAKIHsgCiAgICAgcmV0dXJuIG1fZmFpbHVyZVJlc3BvbnNlOyAKIH0KIAotY29u
c3QgUmVzb3VyY2VFcnJvciYgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmVycm9yKCkgY29uc3Qg
Citjb25zdCBSZXNvdXJjZUVycm9yJiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmVycm9y
KCkgY29uc3QgCiB7IAogICAgIHJldHVybiBtX2Vycm9yOyAKIH0KIAotYm9vbCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6aXNOdWxsKCkgY29uc3QKK2Jvb2wgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VCYXNlOjppc051bGwoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzTnVsbDsKIH0KIAotdm9p
ZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6bnVsbGlmeSgpCit2b2lkIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQmFzZTo6bnVsbGlmeSgpCiB7CiAgICAgbV9pc051bGwgPSB0cnVlOwogfQogCi1i
b29sIG9wZXJhdG9yPT0oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQorYm9vbCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2U6OmNvbXBhcmUoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQogewotICAgIGlmIChhLmlzTnVsbCgpICE9IGIuaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5pc051bGwoKSkKKyAgICBpZiAo
YS5pc051bGwoKSAmJiBiLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChhLnNlbmRlcigpICE9IGIuc2VuZGVyKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgaWYgKGEubnNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpICE9IGIubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGlmIChhLnNvdXJj
ZUhhbmRsZSgpICE9IGIuc291cmNlSGFuZGxlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChhLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpICE9IGIuY2ZVUkxBdXRoQ2hhbGxlbmdl
UmVmKCkpCisgICAgaWYgKGEuaXNOdWxsKCkgfHwgYi5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi0KKyAgICAgICAgCiAgICAgaWYgKGEucHJvdGVjdGlvblNwYWNlKCkg
IT0gYi5wcm90ZWN0aW9uU3BhY2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAK
QEAgLTExNywxNCArMTA3LDcgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbAogICAgIGlmIChhLmVycm9yKCkgIT0gYi5lcnJvcigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIAotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIG9wZXJhdG9yIT0oY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjpwbGF0Zm9ybUNvbXBhcmUoYSwgYik7CiB9CiAKIH0KLQotCkluZGV4OiBw
bGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgJKHJldmlz
aW9uIDMwMDQzKQkoZnJvbSBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Lmg6MzAwNDMpCisrKyBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisjaWZuZGVmIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKyNkZWZpbmUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vf
aAorCisjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5o
IgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9y
LmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKworI2lmIFBMQVRGT1JNKE1BQykKKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaWZuZGVmIF9fT0JKQ19fCit0eXBlZGVmIHN0cnVj
dCBvYmpjX29iamVjdCAqaWQ7CitjbGFzcyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwor
I2Vsc2UKK0BjbGFzcyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworI2VuZGlmCisjZW5k
aWYKKworI2lmIFVTRShDRk5FVFdPUkspCit0eXBlZGVmIHN0cnVjdCBfQ0ZVUkxBdXRoQ2hhbGxl
bmdlKiBDRlVSTEF1dGhDaGFsbGVuZ2VSZWY7CisjZW5kaWYKKworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFJlc291cmNlSGFuZGxlOworCitjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSB7CisKK3B1YmxpYzoKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOworICAgIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
YWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVkIHByZXZp
b3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopOworI2VsaWYgVVNF
KENGTkVUV09SSykKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVu
Z2VSZWYsIFJlc291cmNlSGFuZGxlKiBzb3VyY2VIYW5kbGUpOworI2VuZGlmCisKKyAgICB1bnNp
Z25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0OworICAgIGNvbnN0IENyZWRlbnRpYWwm
IHByb3Bvc2VkQ3JlZGVudGlhbCgpIGNvbnN0OworICAgIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
cHJvdGVjdGlvblNwYWNlKCkgY29uc3Q7CisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgZmFp
bHVyZVJlc3BvbnNlKCkgY29uc3Q7CisgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBj
b25zdDsKKyAgICAKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0OworICAgIHZvaWQgbnVsbGlmeSgp
OworICAgIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZCBzZW5kZXIoKSBjb25zdCB7IHJldHVy
biBtX3NlbmRlci5nZXQoKTsgfQorICAgIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm5z
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBjb25zdCB7IHJldHVybiBtX21hY0NoYWxsZW5n
ZS5nZXQoKTsgfQorI2VsaWYgVVNFKENGTkVUV09SSykKKyAgICBSZXNvdXJjZUhhbmRsZSogc291
cmNlSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VIYW5kbGUuZ2V0KCk7IH0KKyAgICBD
RlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkgY29uc3QgeyByZXR1
cm4gbV9jZkNoYWxsZW5nZS5nZXQoKTsgfQorI2VuZGlmCitwcml2YXRlOgorICAgIGJvb2wgbV9p
c051bGw7CisgICAgUHJvdGVjdGlvblNwYWNlIG1fcHJvdGVjdGlvblNwYWNlOworICAgIENyZWRl
bnRpYWwgbV9wcm9wb3NlZENyZWRlbnRpYWw7CisgICAgdW5zaWduZWQgbV9wcmV2aW91c0ZhaWx1
cmVDb3VudDsKKyAgICBSZXNvdXJjZVJlc3BvbnNlIG1fZmFpbHVyZVJlc3BvbnNlOworICAgIFJl
c291cmNlRXJyb3IgbV9lcnJvcjsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZXRhaW5QdHI8
aWQ+IG1fc2VuZGVyOworICAgIFJldGFpblB0cjxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICo+IG1fbWFjQ2hhbGxlbmdlOworI2VsaWYgVVNFKENGTkVUV09SSykKKyAgICBSZWZQdHI8UmVz
b3VyY2VIYW5kbGU+IG1fc291cmNlSGFuZGxlOworICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFs
bGVuZ2VSZWY+IG1fY2ZDaGFsbGVuZ2U7CisjZW5kaWYKKworfTsKKworYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Cit9CisjZW5kaWYKKwpJbmRleDogcGxh
dGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oCShyZXZpc2lv
biAzMDA0MykKKysrIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDQ2ICsyMiwyMiBAQAogICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwotI2lmbmRlZiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCi0j
ZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKyNpZm5kZWYgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlX2gKKyNkZWZpbmUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlX2gKIAog
I2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2UuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi0KLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotI2lmbmRlZiBfX09CSkNfXwotdHlwZWRlZiBzdHJ1Y3Qgb2Jq
Y19vYmplY3QgKmlkOwotY2xhc3MgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLSNlbHNl
Ci1AY2xhc3MgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLSNlbmRpZgotI2VuZGlmCi0K
LSNpZiBVU0UoQ0ZORVRXT1JLKQotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMQXV0aENoYWxsZW5nZSog
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmOwotI2VuZGlmCi0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBSZXNvdXJjZUhhbmRsZTsKLQotY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
eworY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiAKK2NsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQmFzZSB7CiBwdWJsaWM6Ci0gICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsK
LSAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25l
ZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKTsKLSNl
bGlmIFVTRShDRk5FVFdPUkspCi0gICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRo
Q2hhbGxlbmdlUmVmLCBSZXNvdXJjZUhhbmRsZSogc291cmNlSGFuZGxlKTsKLSNlbmRpZgorICAg
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSgpOworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQmFzZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgQ3Jl
ZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3Vu
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKTsKIAogICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50KCkgY29uc3Q7CiAg
ICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsKCkgY29uc3Q7CkBAIC03MSwz
NCArNDcsMjQgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAg
dm9pZCBudWxsaWZ5KCk7Ci0gICAgCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlkIHNlbmRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fc2VuZGVyLmdldCgpOyB9Ci0gICAgTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqbnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFjQ2hhbGxlbmdlLmdldCgpOyB9Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJlc291
cmNlSGFuZGxlKiBzb3VyY2VIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUhhbmRsZS5n
ZXQoKTsgfQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZlVSTEF1dGhDaGFsbGVuZ2VSZWYo
KSBjb25zdCB7IHJldHVybiBtX2NmQ2hhbGxlbmdlLmdldCgpOyB9Ci0jZW5kaWYKLXByaXZhdGU6
CisKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYik7CisKK3Byb3RlY3RlZDoKKyAg
ICAvLyBUaGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ugc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRo
aXMgbWV0aG9kIHRvIGNvbXBhcmUgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCisgICAgc3RhdGlj
IGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGIpIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIGJvb2wgbV9pc051bGw7CiAgICAg
UHJvdGVjdGlvblNwYWNlIG1fcHJvdGVjdGlvblNwYWNlOwogICAgIENyZWRlbnRpYWwgbV9wcm9w
b3NlZENyZWRlbnRpYWw7CiAgICAgdW5zaWduZWQgbV9wcmV2aW91c0ZhaWx1cmVDb3VudDsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG1fZmFpbHVyZVJlc3BvbnNlOwogICAgIFJlc291cmNlRXJyb3Ig
bV9lcnJvcjsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8aWQ+IG1fc2VuZGVy
OwotICAgIFJldGFpblB0cjxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICo+IG1fbWFjQ2hh
bGxlbmdlOwotI2VsaWYgVVNFKENGTkVUV09SSykKLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+
IG1fc291cmNlSGFuZGxlOwotICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IG1f
Y2ZDaGFsbGVuZ2U7Ci0jZW5kaWYKLQogfTsKIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLWJv
b2wgb3BlcmF0b3IhPShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJik7CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYikg
eyByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9Citp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CisK
IH0KLSNlbmRpZgogCisjZW5kaWYKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yLmNwcAko
cmV2aXNpb24gMzAwNDMpCisrKyBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDI5ICswLDAgQEAKLS8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMt
b2Zmc2V0OiA0IC0qLQotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKLQpJbmRleDogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
LmgJKHJldmlzaW9uIDMwMDQzKQorKysgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTY4ICswLDAgQEAKLS8vIC0qLSBtb2RlOiBjKys7IGMtYmFz
aWMtb2Zmc2V0OiA0IC0qLQotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZXNvdXJjZUVy
cm9yX2gKLSNkZWZpbmUgUmVzb3VyY2VFcnJvcl9oCi0KLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgotCi0jaWYgUExBVEZPUk0oQ0YpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2Vu
ZGlmCi0KLSNpZmRlZiBfX09CSkNfXwotQGNsYXNzIE5TRXJyb3I7Ci0jZWxzZQotY2xhc3MgTlNF
cnJvcjsKLSNlbmRpZgotCi0jaWYgVVNFKENGTkVUV09SSykKLSNpbmNsdWRlIDxDb3JlRm91bmRh
dGlvbi9DRlN0cmVhbS5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNs
YXNzIFJlc291cmNlRXJyb3IgewotICAgIHB1YmxpYzoKLSAgICAgICAgUmVzb3VyY2VFcnJvcigp
Ci0gICAgICAgICAgICA6IG1fZXJyb3JDb2RlKDApCi0jaWYgUExBVEZPUk0oQ0YpCi0gICAgICAg
ICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKLSNlbmRpZgotICAgICAgICAgICAgLCBtX2lz
TnVsbCh0cnVlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBSZXNvdXJjZUVycm9y
KGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxp
bmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCi0gICAgICAgICAgICA6
IG1fZG9tYWluKGRvbWFpbikKLSAgICAgICAgICAgICwgbV9lcnJvckNvZGUoZXJyb3JDb2RlKQot
ICAgICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKLSAgICAgICAgICAgICwgbV9s
b2NhbGl6ZWREZXNjcmlwdGlvbihsb2NhbGl6ZWREZXNjcmlwdGlvbikKLSNpZiBQTEFURk9STShD
RikKLSAgICAgICAgICAgICwgbV9kYXRhSXNVcFRvRGF0ZSh0cnVlKQotI2VuZGlmCi0gICAgICAg
ICAgICAsIG1faXNOdWxsKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotI2lmIFBMQVRG
T1JNKENGKQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgUmVzb3VyY2VFcnJvcihOU0Vycm9y
KiBlcnJvcikKLSNlbHNlCi0gICAgICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJv
cik7Ci0gICAgICAgIFJlc291cmNlRXJyb3IoQ0ZFcnJvclJlZiBlcnJvcikKLSNlbmRpZgotICAg
ICAgICAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQotICAgICAgICAgICAgLCBtX3BsYXRm
b3JtRXJyb3IoZXJyb3IpCi0gICAgICAgICAgICAsIG1faXNOdWxsKCFlcnJvcikKLSAgICAgICAg
ewotICAgICAgICB9Ci0jZW5kaWYKLQotI2lmIDAKLSAgICAgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyBDb2NvYUVycm9yRG9tYWluOwotICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIFBPU0lYRG9t
YWluOwotICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIE9TU3RhdHVzRG9tYWluOwotICAgICAg
ICBzdGF0aWMgY29uc3QgU3RyaW5nIE1hY2hEb21haW47Ci0gICAgICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcgV2ViS2l0RG9tYWluOwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBpc051bGwoKSBjb25z
dCB7IHJldHVybiBtX2lzTnVsbDsgfQotCi0gICAgICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkg
Y29uc3QgeyB1bnBhY2tQbGF0Zm9ybUVycm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fZG9tYWluOyB9
Ci0gICAgICAgIGludCBlcnJvckNvZGUoKSBjb25zdCB7IHVucGFja1BsYXRmb3JtRXJyb3JJZk5l
ZWRlZCgpOyByZXR1cm4gbV9lcnJvckNvZGU7IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiBmYWls
aW5nVVJMKCkgY29uc3QgeyB1bnBhY2tQbGF0Zm9ybUVycm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1f
ZmFpbGluZ1VSTDsgfQotICAgICAgICBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9u
KCkgY29uc3QgeyB1bnBhY2tQbGF0Zm9ybUVycm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fbG9jYWxp
emVkRGVzY3JpcHRpb247IH0KLQotI2lmIFBMQVRGT1JNKENGKQotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICAgICAgb3BlcmF0b3IgTlNFcnJvciooKSBjb25zdDsKLSNlbHNlCi0gICAgICAgIG9wZXJh
dG9yIENGRXJyb3JSZWYoKSBjb25zdDsKLSAgICAgICAgb3BlcmF0b3IgQ0ZTdHJlYW1FcnJvcigp
IGNvbnN0OwotI2VuZGlmCi0jZW5kaWYKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgdW5w
YWNrUGxhdGZvcm1FcnJvcklmTmVlZGVkKCkgY29uc3QKLSAgICAgICAgewotI2lmIFBMQVRGT1JN
KENGKQotICAgICAgICAgICAgaWYgKCFtX2RhdGFJc1VwVG9EYXRlKQotICAgICAgICAgICAgICAg
IGNvbnN0X2Nhc3Q8UmVzb3VyY2VFcnJvcio+KHRoaXMpLT51bnBhY2tQbGF0Zm9ybUVycm9yKCk7
Ci0jZW5kaWYKLSAgICAgICAgfQotCi0jaWYgUExBVEZPUk0oQ0YpCi0gICAgICAgIHZvaWQgdW5w
YWNrUGxhdGZvcm1FcnJvcigpOwotI2VuZGlmCi0KLSAgICAgICAgU3RyaW5nIG1fZG9tYWluOwot
ICAgICAgICBpbnQgbV9lcnJvckNvZGU7Ci0gICAgICAgIFN0cmluZyBtX2ZhaWxpbmdVUkw7Ci0g
ICAgICAgIFN0cmluZyBtX2xvY2FsaXplZERlc2NyaXB0aW9uOwotIAotI2lmIFBMQVRGT1JNKENG
KQotICAgICAgICBib29sIG1fZGF0YUlzVXBUb0RhdGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShN
QUMpCi0gICAgICAgIG11dGFibGUgUmV0YWluUHRyPE5TRXJyb3I+IG1fcGxhdGZvcm1FcnJvcjsK
LSNlbGlmIFBMQVRGT1JNKENGKQotICAgICAgICBtdXRhYmxlIFJldGFpblB0cjxDRkVycm9yUmVm
PiBtX3BsYXRmb3JtRXJyb3I7Ci0jZW5kaWYKLSAgICAgICAgYm9vbCBtX2lzTnVsbDsKLX07Ci0K
LWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVz
b3VyY2VFcnJvciYgYikKLXsKLSAgICBpZiAoYS5pc051bGwoKSAmJiBiLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoYS5pc051bGwoKSB8fCBiLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuZG9tYWluKCkgIT0gYi5kb21haW4oKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmVycm9yQ29kZSgpICE9IGIuZXJyb3JDb2Rl
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5mYWlsaW5nVVJMKCkgIT0gYi5m
YWlsaW5nVVJMKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpICE9IGIubG9jYWxpemVkRGVzY3JpcHRpb24oKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotI2lmIFBMQVRGT1JNKENGKQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoKE5T
RXJyb3IgKilhICE9IChOU0Vycm9yICopYikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UK
LSAgICBpZiAoKENGRXJyb3JSZWYpYSAhPSAoQ0ZFcnJvclJlZiliKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0jZW5kaWYKLSNlbmRpZgotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBSZXNvdXJjZUVycm9yX2hfCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
RXJyb3JCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJy
b3JCYXNlLmNwcAkocmV2aXNpb24gMzAwNDMpCShmcm9tIHBsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VFcnJvci5jcHA6MzAwNDMpCisrKyBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisvLyAtKi0gbW9kZTogYysrOyBj
LWJhc2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisKSW5kZXg6IHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VFcnJvckJhc2UuY3BwCShyZXZpc2lvbiAzMDA0MykKKysrIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywzICsyNywzNCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKIAorbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJlc291cmNlRXJyb3JCYXNlOjpsYXp5SW5pdCgpIGNv
bnN0Cit7CisgICAgY29uc3RfY2FzdDxSZXNvdXJjZUVycm9yKj4oc3RhdGljX2Nhc3Q8Y29uc3Qg
UmVzb3VyY2VFcnJvcio+KHRoaXMpKS0+cGxhdGZvcm1MYXp5SW5pdCgpOworfQorCitib29sIFJl
c291cmNlRXJyb3JCYXNlOjpjb21wYXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGIpCit7CisgICAgaWYgKGEuaXNOdWxsKCkgJiYgYi5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoYS5pc051bGwoKSB8fCBiLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5kb21haW4oKSAhPSBiLmRvbWFpbigp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5lcnJvckNvZGUoKSAhPSBiLmVy
cm9yQ29kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5mYWlsaW5nVVJM
KCkgIT0gYi5mYWlsaW5nVVJMKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChh
LmxvY2FsaXplZERlc2NyaXB0aW9uKCkgIT0gYi5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcGxhdGZvcm1Db21wYXJlKGEsIGIpOwor
fQorCit9CkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCShyZXZpc2lvbiAz
MDA0MykJKGZyb20gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yLmg6MzAwNDMpCisrKyBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNjggQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZUVycm9yX2gKKyNkZWZpbmUgUmVzb3Vy
Y2VFcnJvcl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaWYgUExBVEZPUk0o
Q0YpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKKyNpZmRlZiBfX09CSkNf
XworQGNsYXNzIE5TRXJyb3I7CisjZWxzZQorY2xhc3MgTlNFcnJvcjsKKyNlbmRpZgorCisjaWYg
VVNFKENGTkVUV09SSykKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmVhbS5oPgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFJlc291cmNlRXJyb3Igewor
ICAgIHB1YmxpYzoKKyAgICAgICAgUmVzb3VyY2VFcnJvcigpCisgICAgICAgICAgICA6IG1fZXJy
b3JDb2RlKDApCisjaWYgUExBVEZPUk0oQ0YpCisgICAgICAgICAgICAsIG1fZGF0YUlzVXBUb0Rh
dGUodHJ1ZSkKKyNlbmRpZgorICAgICAgICAgICAgLCBtX2lzTnVsbCh0cnVlKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWlu
LCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYg
bG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAgICAgICA6IG1fZG9tYWluKGRvbWFpbikKKyAg
ICAgICAgICAgICwgbV9lcnJvckNvZGUoZXJyb3JDb2RlKQorICAgICAgICAgICAgLCBtX2ZhaWxp
bmdVUkwoZmFpbGluZ1VSTCkKKyAgICAgICAgICAgICwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbihs
b2NhbGl6ZWREZXNjcmlwdGlvbikKKyNpZiBQTEFURk9STShDRikKKyAgICAgICAgICAgICwgbV9k
YXRhSXNVcFRvRGF0ZSh0cnVlKQorI2VuZGlmCisgICAgICAgICAgICAsIG1faXNOdWxsKGZhbHNl
KQorICAgICAgICB7CisgICAgICAgIH0KKworI2lmIFBMQVRGT1JNKENGKQorI2lmIFBMQVRGT1JN
KE1BQykKKyAgICAgICAgUmVzb3VyY2VFcnJvcihOU0Vycm9yKiBlcnJvcikKKyNlbHNlCisgICAg
ICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7CisgICAgICAgIFJlc291cmNl
RXJyb3IoQ0ZFcnJvclJlZiBlcnJvcikKKyNlbmRpZgorICAgICAgICAgICAgOiBtX2RhdGFJc1Vw
VG9EYXRlKGZhbHNlKQorICAgICAgICAgICAgLCBtX3BsYXRmb3JtRXJyb3IoZXJyb3IpCisgICAg
ICAgICAgICAsIG1faXNOdWxsKCFlcnJvcikKKyAgICAgICAgeworICAgICAgICB9CisjZW5kaWYK
KworI2lmIDAKKyAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBDb2NvYUVycm9yRG9tYWluOwor
ICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIFBPU0lYRG9tYWluOworICAgICAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nIE9TU3RhdHVzRG9tYWluOworICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IE1hY2hEb21haW47CisgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgV2ViS2l0RG9tYWluOwor
I2VuZGlmCisKKyAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsg
fQorCisgICAgICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyB1bnBhY2tQbGF0Zm9y
bUVycm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fZG9tYWluOyB9CisgICAgICAgIGludCBlcnJvckNv
ZGUoKSBjb25zdCB7IHVucGFja1BsYXRmb3JtRXJyb3JJZk5lZWRlZCgpOyByZXR1cm4gbV9lcnJv
ckNvZGU7IH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMKCkgY29uc3QgeyB1bnBh
Y2tQbGF0Zm9ybUVycm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQorICAgICAg
ICBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKCkgY29uc3QgeyB1bnBhY2tQbGF0
Zm9ybUVycm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fbG9jYWxpemVkRGVzY3JpcHRpb247IH0KKwor
I2lmIFBMQVRGT1JNKENGKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgb3BlcmF0b3IgTlNF
cnJvciooKSBjb25zdDsKKyNlbHNlCisgICAgICAgIG9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25z
dDsKKyAgICAgICAgb3BlcmF0b3IgQ0ZTdHJlYW1FcnJvcigpIGNvbnN0OworI2VuZGlmCisjZW5k
aWYKKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgdW5wYWNrUGxhdGZvcm1FcnJvcklmTmVl
ZGVkKCkgY29uc3QKKyAgICAgICAgeworI2lmIFBMQVRGT1JNKENGKQorICAgICAgICAgICAgaWYg
KCFtX2RhdGFJc1VwVG9EYXRlKQorICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VF
cnJvcio+KHRoaXMpLT51bnBhY2tQbGF0Zm9ybUVycm9yKCk7CisjZW5kaWYKKyAgICAgICAgfQor
CisjaWYgUExBVEZPUk0oQ0YpCisgICAgICAgIHZvaWQgdW5wYWNrUGxhdGZvcm1FcnJvcigpOwor
I2VuZGlmCisKKyAgICAgICAgU3RyaW5nIG1fZG9tYWluOworICAgICAgICBpbnQgbV9lcnJvckNv
ZGU7CisgICAgICAgIFN0cmluZyBtX2ZhaWxpbmdVUkw7CisgICAgICAgIFN0cmluZyBtX2xvY2Fs
aXplZERlc2NyaXB0aW9uOworIAorI2lmIFBMQVRGT1JNKENGKQorICAgICAgICBib29sIG1fZGF0
YUlzVXBUb0RhdGU7CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIG11dGFibGUg
UmV0YWluUHRyPE5TRXJyb3I+IG1fcGxhdGZvcm1FcnJvcjsKKyNlbGlmIFBMQVRGT1JNKENGKQor
ICAgICAgICBtdXRhYmxlIFJldGFpblB0cjxDRkVycm9yUmVmPiBtX3BsYXRmb3JtRXJyb3I7Cisj
ZW5kaWYKKyAgICAgICAgYm9vbCBtX2lzTnVsbDsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikKK3sKKyAg
ICBpZiAoYS5pc051bGwoKSAmJiBiLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAoYS5pc051bGwoKSB8fCBiLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKGEuZG9tYWluKCkgIT0gYi5kb21haW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChhLmVycm9yQ29kZSgpICE9IGIuZXJyb3JDb2RlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoYS5mYWlsaW5nVVJMKCkgIT0gYi5mYWlsaW5nVVJMKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5sb2NhbGl6ZWREZXNjcmlwdGlvbigpICE9IGIubG9j
YWxpemVkRGVzY3JpcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIFBMQVRGT1JN
KENGKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoKE5TRXJyb3IgKilhICE9IChOU0Vycm9y
ICopYikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICBpZiAoKENGRXJyb3JSZWYp
YSAhPSAoQ0ZFcnJvclJlZiliKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNlbmRp
ZgorICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJl
c291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpIHsgcmV0dXJuICEoYSA9PSBi
KTsgfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZXNvdXJjZUVycm9y
X2hfCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCShyZXZpc2lvbiAzMDA0
MykKKysrIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQsMTQ1ICsyNCw2MCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBS
ZXNvdXJjZUVycm9yX2gKLSNkZWZpbmUgUmVzb3VyY2VFcnJvcl9oCisjaWZuZGVmIFJlc291cmNl
RXJyb3JCYXNlX2gKKyNkZWZpbmUgUmVzb3VyY2VFcnJvckJhc2VfaAogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKIAotI2lmIFBMQVRGT1JNKENGKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLSNlbmRpZgotCi0jaWZkZWYgX19PQkpDX18KLUBjbGFzcyBOU0Vycm9yOwotI2Vsc2UK
LWNsYXNzIE5TRXJyb3I7Ci0jZW5kaWYKLQotI2lmIFVTRShDRk5FVFdPUkspCi0jaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ0ZTdHJlYW0uaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLSAgICBjbGFzcyBSZXNvdXJjZUVycm9yIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFJlc291
cmNlRXJyb3IoKQotICAgICAgICAgICAgOiBtX2Vycm9yQ29kZSgwKQotI2lmIFBMQVRGT1JNKENG
KQotICAgICAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCi0jZW5kaWYKLSAgICAgICAg
ICAgICwgbV9pc051bGwodHJ1ZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgUmVz
b3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgU3Ry
aW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQotICAg
ICAgICAgICAgOiBtX2RvbWFpbihkb21haW4pCi0gICAgICAgICAgICAsIG1fZXJyb3JDb2RlKGVy
cm9yQ29kZSkKLSAgICAgICAgICAgICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCi0gICAgICAg
ICAgICAsIG1fbG9jYWxpemVkRGVzY3JpcHRpb24obG9jYWxpemVkRGVzY3JpcHRpb24pCi0jaWYg
UExBVEZPUk0oQ0YpCi0gICAgICAgICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKLSNlbmRp
ZgotICAgICAgICAgICAgLCBtX2lzTnVsbChmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9Ci0K
LSNpZiBQTEFURk9STShDRikKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIFJlc291cmNlRXJy
b3IoTlNFcnJvciogZXJyb3IpCi0jZWxzZQotICAgICAgICBSZXNvdXJjZUVycm9yKENGU3RyZWFt
RXJyb3IgZXJyb3IpOwotICAgICAgICBSZXNvdXJjZUVycm9yKENGRXJyb3JSZWYgZXJyb3IpCi0j
ZW5kaWYKLSAgICAgICAgICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKLSAgICAgICAgICAg
ICwgbV9wbGF0Zm9ybUVycm9yKGVycm9yKQotICAgICAgICAgICAgLCBtX2lzTnVsbCghZXJyb3Ip
Ci0gICAgICAgIHsKLSAgICAgICAgfQotI2VuZGlmCi0KLSNpZiAwCi0gICAgICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcgQ29jb2FFcnJvckRvbWFpbjsKLSAgICAgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyBQT1NJWERvbWFpbjsKLSAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBPU1N0YXR1c0RvbWFp
bjsKLSAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBNYWNoRG9tYWluOwotICAgICAgICBzdGF0
aWMgY29uc3QgU3RyaW5nIFdlYktpdERvbWFpbjsKLSNlbmRpZgotCi0gICAgICAgIGJvb2wgaXNO
dWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KLQotICAgICAgICBjb25zdCBTdHJpbmcm
IGRvbWFpbigpIGNvbnN0IHsgdW5wYWNrUGxhdGZvcm1FcnJvcklmTmVlZGVkKCk7IHJldHVybiBt
X2RvbWFpbjsgfQotICAgICAgICBpbnQgZXJyb3JDb2RlKCkgY29uc3QgeyB1bnBhY2tQbGF0Zm9y
bUVycm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fZXJyb3JDb2RlOyB9Ci0gICAgICAgIGNvbnN0IFN0
cmluZyYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgdW5wYWNrUGxhdGZvcm1FcnJvcklmTmVlZGVkKCk7
IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpIGNvbnN0IHsgdW5wYWNrUGxhdGZvcm1FcnJvcklmTmVlZGVkKCk7IHJldHVy
biBtX2xvY2FsaXplZERlc2NyaXB0aW9uOyB9Ci0KLSNpZiBQTEFURk9STShDRikKLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgICAgIG9wZXJhdG9yIE5TRXJyb3IqKCkgY29uc3Q7Ci0jZWxzZQotICAg
ICAgICBvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3Q7Ci0gICAgICAgIG9wZXJhdG9yIENGU3Ry
ZWFtRXJyb3IoKSBjb25zdDsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICBwcml2YXRlOgotICAgICAg
ICB2b2lkIHVucGFja1BsYXRmb3JtRXJyb3JJZk5lZWRlZCgpIGNvbnN0Ci0gICAgICAgIHsKLSNp
ZiBQTEFURk9STShDRikKLSAgICAgICAgICAgIGlmICghbV9kYXRhSXNVcFRvRGF0ZSkKLSAgICAg
ICAgICAgICAgICBjb25zdF9jYXN0PFJlc291cmNlRXJyb3IqPih0aGlzKS0+dW5wYWNrUGxhdGZv
cm1FcnJvcigpOwotI2VuZGlmCi0gICAgICAgIH0KLQotI2lmIFBMQVRGT1JNKENGKQotICAgICAg
ICB2b2lkIHVucGFja1BsYXRmb3JtRXJyb3IoKTsKLSNlbmRpZgotCi0gICAgICAgIFN0cmluZyBt
X2RvbWFpbjsKLSAgICAgICAgaW50IG1fZXJyb3JDb2RlOwotICAgICAgICBTdHJpbmcgbV9mYWls
aW5nVVJMOwotICAgICAgICBTdHJpbmcgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKLSAKLSNpZiBQ
TEFURk9STShDRikKLSAgICAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwotI2VuZGlmCi0jaWYg
UExBVEZPUk0oTUFDKQotICAgICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRm
b3JtRXJyb3I7Ci0jZWxpZiBQTEFURk9STShDRikKLSAgICAgICAgbXV0YWJsZSBSZXRhaW5QdHI8
Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOwotI2VuZGlmCi0gICAgICAgIGJvb2wgbV9pc051
bGw7Ci19OworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKQotewotICAgIGlm
IChhLmlzTnVsbCgpICYmIGIuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlm
IChhLmlzTnVsbCgpIHx8IGIuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoYS5kb21haW4oKSAhPSBiLmRvbWFpbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKGEuZXJyb3JDb2RlKCkgIT0gYi5lcnJvckNvZGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChhLmZhaWxpbmdVUkwoKSAhPSBiLmZhaWxpbmdVUkwoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChhLmxvY2FsaXplZERlc2NyaXB0aW9uKCkgIT0gYi5sb2NhbGl6
ZWREZXNjcmlwdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ0Yp
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICgoTlNFcnJvciAqKWEgIT0gKE5TRXJyb3IgKili
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGlmICgoQ0ZFcnJvclJlZilhICE9
IChDRkVycm9yUmVmKWIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotI2VuZGlmCi0g
ICAgcmV0dXJuIHRydWU7Ci19CitjbGFzcyBSZXNvdXJjZUVycm9yQmFzZSB7CitwdWJsaWM6Cisg
ICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQorCisgICAgY29uc3Qg
U3RyaW5nJiBkb21haW4oKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2RvbWFpbjsgfQor
ICAgIGludCBlcnJvckNvZGUoKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2Vycm9yQ29k
ZTsgfQorICAgIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgbGF6eUluaXQoKTsg
cmV0dXJuIG1fZmFpbGluZ1VSTDsgfQorICAgIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3Jp
cHRpb24oKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2xvY2FsaXplZERlc2NyaXB0aW9u
OyB9CisKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGIpOworCitwcm90ZWN0ZWQ6CisgICAgUmVzb3VyY2VFcnJvckJh
c2UoKQorICAgICAgICA6IG1fZXJyb3JDb2RlKDApCisgICAgICAgICwgbV9pc051bGwodHJ1ZSkK
KyAgICB7CisgICAgfQorCisgICAgUmVzb3VyY2VFcnJvckJhc2UoY29uc3QgU3RyaW5nJiBkb21h
aW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5n
JiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgOiBtX2RvbWFpbihkb21haW4pCisgICAg
ICAgICwgbV9lcnJvckNvZGUoZXJyb3JDb2RlKQorICAgICAgICAsIG1fZmFpbGluZ1VSTChmYWls
aW5nVVJMKQorICAgICAgICAsIG1fbG9jYWxpemVkRGVzY3JpcHRpb24obG9jYWxpemVkRGVzY3Jp
cHRpb24pCisgICAgICAgICwgbV9pc051bGwoZmFsc2UpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgbGF6eUluaXQoKSBjb25zdDsKKworICAgIC8vIFRoZSBSZXNvdXJjZUVycm9yIHN1YmNsYXNz
IG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBsYXppbHkgaW5pdGlhbGl6ZSBwbGF0Zm9ybSBz
cGVjaWZpYyBmaWVsZHMKKyAgICB2b2lkIHBsYXRmb3JtTGF6eUluaXQoKSB7fQorCisgICAgLy8g
VGhlIFJlc291cmNlRXJyb3Igc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGNv
bXBhcmUgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCisgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1D
b21wYXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpIHsg
cmV0dXJuIHRydWU7IH0KKworICAgIFN0cmluZyBtX2RvbWFpbjsKKyAgICBpbnQgbV9lcnJvckNv
ZGU7CisgICAgU3RyaW5nIG1fZmFpbGluZ1VSTDsKKyAgICBTdHJpbmcgbV9sb2NhbGl6ZWREZXNj
cmlwdGlvbjsKKyAgICBib29sIG1faXNOdWxsOworfTsKIAoraW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKSB7IHJldHVy
biBSZXNvdXJjZUVycm9yQmFzZTo6Y29tcGFyZShhLCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKSB7IHJl
dHVybiAhKGEgPT0gYik7IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
UmVzb3VyY2VFcnJvcl9oXworI2VuZGlmIC8vIFJlc291cmNlRXJyb3JCYXNlX2hfCkluZGV4OiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gMzAwNDMp
CisrKyBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsMTQgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFzUmVzb3VyY2VS
ZXNwb25zZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlKj4odGhpcyk7Ci19Ci0KIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzSFRU
UCgpIGNvbnN0CiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0
KCk7CiAKICAgICBTdHJpbmcgcHJvdG9jb2wgPSBtX3VybC5wcm90b2NvbCgpOwogCkBAIC00Niwx
NCArNDEsMTQgQEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNIVFRQKCkgY29ucwogCiBj
b25zdCBLVVJMJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dXJsKCkgY29uc3QKIHsKLSAgICB1cGRh
dGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbGF6eUluaXQoKTsKICAgICAKICAgICByZXR1cm4g
bV91cmw7IAogfQogCiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRVcmwoY29uc3QgS1VS
TCYgdXJsKQogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgp
OwogICAgIG1faXNOdWxsID0gZmFsc2U7CiAgICAgCiAgICAgbV91cmwgPSB1cmw7IApAQCAtNjEs
MTQgKzU2LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFVybChjb25zdCAKIAog
Y29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bWltZVR5cGUoKSBjb25zdAogewot
ICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgcmV0
dXJuIG1fbWltZVR5cGU7IAogfQogCiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRNaW1l
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9u
c2UoKTsKKyAgICBsYXp5SW5pdCgpOwogICAgIG1faXNOdWxsID0gZmFsc2U7CiAgICAgCiAgICAg
bV9taW1lVHlwZSA9IG1pbWVUeXBlOyAKQEAgLTc2LDE0ICs3MSwxNCBAQCB2b2lkIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpzZXRNaW1lVHlwZShjCiAKIGxvbmcgbG9uZyBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3QgCiB7Ci0gICAgdXBkYXRlUmVzb3Vy
Y2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7CiAKICAgICByZXR1cm4gbV9leHBlY3RlZENv
bnRlbnRMZW5ndGg7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEV4cGVjdGVk
Q29udGVudExlbmd0aChsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogewotICAgIHVw
ZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogICAgIG1faXNOdWxsID0g
ZmFsc2U7CiAgICAgCiAgICAgbV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRl
bnRMZW5ndGg7IApAQCAtOTEsMTQgKzg2LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6
OnNldEV4cGVjdGVkQ28KIAogY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dGV4
dEVuY29kaW5nTmFtZSgpIGNvbnN0CiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOwor
ICAgIGxhenlJbml0KCk7CiAKICAgICByZXR1cm4gbV90ZXh0RW5jb2RpbmdOYW1lOwogfQogCiB2
b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmdOYW1lKQogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBs
YXp5SW5pdCgpOwogICAgIG1faXNOdWxsID0gZmFsc2U7CiAgICAgCiAgICAgbV90ZXh0RW5jb2Rp
bmdOYW1lID0gZW5jb2RpbmdOYW1lOyAKQEAgLTEwNywxNCArMTAyLDE0IEBAIHZvaWQgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OnNldFRleHRFbmNvZGkKIC8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRo
aXMgb24gdGhlIGZseQogY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2Vz
dGVkRmlsZW5hbWUoKSBjb25zdAogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAg
ICBsYXp5SW5pdCgpOwogCiAgICAgcmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiB9CiAKIHZv
aWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkTmFtZSkKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAg
bGF6eUluaXQoKTsKICAgICBtX2lzTnVsbCA9IGZhbHNlOwogICAgIAogICAgIG1fc3VnZ2VzdGVk
RmlsZW5hbWUgPSBzdWdnZXN0ZWROYW1lOyAKQEAgLTEyMiw1NiArMTE3LDU2IEBAIHZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldFN1Z2dlc3RlZEYKIAogaW50IFJlc291cmNlUmVzcG9uc2VC
YXNlOjpodHRwU3RhdHVzQ29kZSgpIGNvbnN0CiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25z
ZSgpOworICAgIGxhenlJbml0KCk7CiAKICAgICByZXR1cm4gbV9odHRwU3RhdHVzQ29kZTsKIH0K
IAogdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c0NvZGUoaW50IHN0YXR1
c0NvZGUpCiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7
CiAKICAgICBtX2h0dHBTdGF0dXNDb2RlID0gc3RhdHVzQ29kZTsKIH0KIAogY29uc3QgU3RyaW5n
JiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cFN0YXR1c1RleHQoKSBjb25zdCAKIHsKLSAgICB1
cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbGF6eUluaXQoKTsKIAogICAgIHJldHVybiBt
X2h0dHBTdGF0dXNUZXh0OyAKIH0KIAogdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRU
UFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KSAKIHsKLSAgICB1cGRhdGVSZXNv
dXJjZVJlc3BvbnNlKCk7CisgICAgbGF6eUluaXQoKTsKIAogICAgIG1faHR0cFN0YXR1c1RleHQg
PSBzdGF0dXNUZXh0OyAKIH0KIAogU3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwSGVh
ZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewotICAgIHVwZGF0ZVJlc291cmNl
UmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgcmV0dXJuIG1faHR0cEhlYWRlckZp
ZWxkcy5nZXQobmFtZSk7IAogfQogCiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQ
SGVhZGVyRmllbGQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewot
ICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgbV9o
dHRwSGVhZGVyRmllbGRzLnNldChuYW1lLCB2YWx1ZSk7CiB9CiAKIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIFJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwSGVhZGVyRmllbGRzKCkgY29uc3QKIHsKLSAg
ICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbGF6eUluaXQoKTsKIAogICAgIHJldHVy
biBtX2h0dHBIZWFkZXJGaWVsZHM7IAogfQogCiBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpp
c0F0dGFjaG1lbnQoKSBjb25zdAogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAg
ICBsYXp5SW5pdCgpOwogCiAgICAgU3RyaW5nIHZhbHVlID0gbV9odHRwSGVhZGVyRmllbGRzLmdl
dCgiQ29udGVudC1EaXNwb3NpdGlvbiIpOwogICAgIGludCBsb2MgPSB2YWx1ZS5maW5kKCc7Jyk7
CkBAIC0xODMsNDMgKzE3OCwzOCBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFj
aG1lbnQoCiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEV4cGlyYXRpb25EYXRlKHRp
bWVfdCBleHBpcmF0aW9uRGF0ZSkKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Cisg
ICAgbGF6eUluaXQoKTsKIAogICAgIG1fZXhwaXJhdGlvbkRhdGUgPSBleHBpcmF0aW9uRGF0ZTsK
IH0KIAogdGltZV90IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmF0aW9uRGF0ZSgpIGNvbnN0
CiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7CiAKICAg
ICByZXR1cm4gbV9leHBpcmF0aW9uRGF0ZTsgCiB9CiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OnNldExhc3RNb2RpZmllZERhdGUodGltZV90IGxhc3RNb2RpZmllZERhdGUpIAogewotICAg
IHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgbV9sYXN0
TW9kaWZpZWREYXRlID0gbGFzdE1vZGlmaWVkRGF0ZTsKIH0KIAogdGltZV90IFJlc291cmNlUmVz
cG9uc2VCYXNlOjpsYXN0TW9kaWZpZWREYXRlKCkgY29uc3QKIHsKLSAgICB1cGRhdGVSZXNvdXJj
ZVJlc3BvbnNlKCk7CisgICAgbGF6eUluaXQoKTsKIAogICAgIHJldHVybiBtX2xhc3RNb2RpZmll
ZERhdGU7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnVwZGF0ZVJlc291cmNlUmVz
cG9uc2UoKSBjb25zdAordm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGF6eUluaXQoKSBjb25z
dAogewotICAgIGlmIChtX2lzVXBUb0RhdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0
X2Nhc3Q8UmVzb3VyY2VSZXNwb25zZSY+KGFzUmVzb3VyY2VSZXNwb25zZSgpKS5kb1VwZGF0ZVJl
c291cmNlUmVzcG9uc2UoKTsKLQotICAgIG1faXNVcFRvRGF0ZSA9IHRydWU7CisgICAgY29uc3Rf
Y2FzdDxSZXNvdXJjZVJlc3BvbnNlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25z
ZSo+KHRoaXMpKS0+cGxhdGZvcm1MYXp5SW5pdCgpOwogfQogCi1ib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikKK2Jvb2wg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikKIHsKICAgICBpZiAoYS5pc051bGwoKSAhPSBiLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7ICAKQEAgLTI0MSwxMSArMjMxLDcgQEAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKGEuZXhwaXJhdGlvbkRhdGUoKSAhPSBiLmV4cGlyYXRpb25EYXRlKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGEubnNVUkxS
ZXNwb25zZSgpICE9IGIubnNVUkxSZXNwb25zZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYKLSAgICByZXR1cm4gdHJ1ZTsKLSB9CisgICAgcmV0dXJuIFJlc291cmNlUmVzcG9uc2U6
OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKK30KIAogfQpJbmRleDogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaAkocmV2aXNpb24gMzAwNDMpCisrKyBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDIxICs3NywxNiBA
QCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgdm9pZCBzZXRMYXN0TW9kaWZpZWRE
YXRlKHRpbWVfdCk7CiAgICAgdGltZV90IGxhc3RNb2RpZmllZERhdGUoKSBjb25zdDsKIAotICAg
IGlubGluZSBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhc1Jlc291cmNlUmVzcG9uc2UoKSBjb25z
dDsKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIGIpOwogCi0gcHJvdGVjdGVkOgotICAgIC8vIFVzZWQgd2hl
biByZXNwb25zZSBpcyBpbml0aWFsaXplZCBmcm9tIGEgcGxhdGZvcm0gcmVwcmVzZW50YXRpb24K
LSAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZShib29sIGlzTnVsbCkKLSAgICAgICAgOiBtX2lzVXBU
b0RhdGUoZmFsc2UpCi0gICAgICAgICwgbV9pc051bGwoaXNOdWxsKQotICAgIHsKLSAgICB9Cisg
ICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYXNSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7CiAK
KyBwcm90ZWN0ZWQ6CiAgICAgUmVzb3VyY2VSZXNwb25zZUJhc2UoKSAgCiAgICAgICAgIDogbV9l
eHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKICAgICAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiAg
ICAgICAgICwgbV9leHBpcmF0aW9uRGF0ZSgwKQotICAgICAgICAsIG1faXNVcFRvRGF0ZSh0cnVl
KQorICAgICAgICAsIG1fbGFzdE1vZGlmaWVkRGF0ZSgwKQogICAgICAgICAsIG1faXNOdWxsKHRy
dWUpCiAgICAgewogICAgIH0KQEAgLTEwNCwyOSArOTksMzQgQEAgY2xhc3MgUmVzb3VyY2VSZXNw
b25zZUJhc2UgewogICAgICAgICAsIG1fc3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUpCiAgICAg
ICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQogICAgICAgICAsIG1fZXhwaXJhdGlvbkRhdGUoMCkK
LSAgICAgICAgLCBtX2lzVXBUb0RhdGUodHJ1ZSkKKyAgICAgICAgLCBtX2xhc3RNb2RpZmllZERh
dGUoMCkKICAgICAgICAgLCBtX2lzTnVsbChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgdm9p
ZCB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7CisgICAgdm9pZCBsYXp5SW5pdCgpIGNv
bnN0OworCisgICAgLy8gVGhlIFJlc291cmNlUmVzcG9uc2Ugc3ViY2xhc3MgbWF5ICJzaGFkb3ci
IHRoaXMgbWV0aG9kIHRvIGxhemlseSBpbml0aWFsaXplIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxk
cworICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdCgpIHt9CisKKyAgICAvLyBUaGUgUmVzb3VyY2VS
ZXNwb25zZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBwbGF0
Zm9ybSBzcGVjaWZpYyBmaWVsZHMKKyAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgS1VSTCBtX3VybDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAg
ICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7CiAgICAgU3RyaW5nIG1fdGV4dEVu
Y29kaW5nTmFtZTsKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBtdXRhYmxl
IGludCBtX2h0dHBTdGF0dXNDb2RlOworICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogICAgIFN0
cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmll
bGRzOwogICAgIHRpbWVfdCBtX2V4cGlyYXRpb25EYXRlOwogICAgIHRpbWVfdCBtX2xhc3RNb2Rp
ZmllZERhdGU7Ci0gICAgbXV0YWJsZSBib29sIG1faXNVcFRvRGF0ZTsKICAgICBib29sIG1faXNO
dWxsOwogCiB9OwogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYik7CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpIHsgcmV0dXJu
IFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAJKHJldmlzaW9uIDMwMDQz
KQorKysgcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsMTggKzM3LDQyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxs
ZW5nZVJlZiBjZkNoYWxsZW5nZSwgUmVzb3VyY2VIYW5kbGUqIHNvdXJjZUhhbmRsZSkKLSAgICA6
IG1faXNOdWxsKGZhbHNlKQotICAgICwgbV9wcm90ZWN0aW9uU3BhY2UoY29yZShDRlVSTEF1dGhD
aGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSkKLSAgICAsIG1fcHJvcG9z
ZWRDcmVkZW50aWFsKGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFs
KGNmQ2hhbGxlbmdlKSkpCi0gICAgLCBtX3ByZXZpb3VzRmFpbHVyZUNvdW50KENGVVJMQXV0aENo
YWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNmQ2hhbGxlbmdlKSkKLSAgICAsIG1fZmFp
bHVyZVJlc3BvbnNlKChDRlVSTFJlc3BvbnNlUmVmKUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1
cmVSZXNwb25zZShjZkNoYWxsZW5nZSkpCi0gICAgLCBtX2Vycm9yKENGVVJMQXV0aENoYWxsZW5n
ZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkKK0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
cmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCisgICAgOiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UocHJvdGVjdGlvblNwYWNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb3Bvc2VkQ3JlZGVudGlhbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmV2aW91c0ZhaWx1cmVDb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcikKK3sKK30KKworQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNoYWxsZW5nZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUhhbmRsZSog
c291cmNlSGFuZGxlKQorICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKGNvcmUoQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNmQ2hhbGxlbmdlKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9w
b3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjZkNoYWxs
ZW5nZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENGVVJMUmVzcG9uc2VS
ZWYpQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNmQ2hhbGxlbmdlKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRFcnJv
cihjZkNoYWxsZW5nZSkpCiAgICAgLCBtX3NvdXJjZUhhbmRsZShzb3VyY2VIYW5kbGUpCiAgICAg
LCBtX2NmQ2hhbGxlbmdlKGNmQ2hhbGxlbmdlKQogewogfQogCitib29sIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQoreworICAgIGlmIChhLnNvdXJj
ZUhhbmRsZSgpICE9IGIuc291cmNlSGFuZGxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChhLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpICE9IGIuY2ZVUkxBdXRoQ2hhbGxlbmdl
UmVmKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgcmV0dXJuIHRydWU7
Cit9CisKIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjcmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkKIHsgIAogICAgIENGVVJMUHJvdGVjdGlvblNwYWNl
UmVmIHByb3RlY3Rpb25TcGFjZSA9IGNyZWF0ZUNGKGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNw
YWNlKCkpOwpJbmRleDogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworI2lm
bmRlZiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCisjZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlX2gKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgorI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit0eXBl
ZGVmIHN0cnVjdCBfQ0ZVUkxBdXRoQ2hhbGxlbmdlKiBDRlVSTEF1dGhDaGFsbGVuZ2VSZWY7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VIYW5kbGU7CisKK2NsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZSB7CitwdWJsaWM6CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7fQorICAgIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNl
LCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVkIHByZXZpb3Vz
RmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpOworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0
aENoYWxsZW5nZVJlZiwgUmVzb3VyY2VIYW5kbGUqIHNvdXJjZUhhbmRsZSk7CisKKyAgICBSZXNv
dXJjZUhhbmRsZSogc291cmNlSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VIYW5kbGUu
Z2V0KCk7IH0KKyAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZVUkxBdXRoQ2hhbGxlbmdlUmVm
KCkgY29uc3QgeyByZXR1cm4gbV9jZkNoYWxsZW5nZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U7CisgICAgc3RhdGljIGJv
b2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYik7CisKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5k
bGU+IG1fc291cmNlSGFuZGxlOworICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+
IG1fY2ZDaGFsbGVuZ2U7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlRXJyb3IuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorLy8gLSotIG1vZGU6IGMr
KzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJl
c291cmNlRXJyb3JfaAorI2RlZmluZSBSZXNvdXJjZUVycm9yX2gKKworI2luY2x1ZGUgIlJlc291
cmNlRXJyb3JCYXNlLmgiCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ0ZTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBSZXNvdXJjZUVycm9yIDogcHVibGljIFJlc291cmNlRXJyb3JCYXNlIHsKK3B1YmxpYzoKKyAg
ICBSZXNvdXJjZUVycm9yKCkKKyAgICAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCisgICAg
eworICAgIH0KKworICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBl
cnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6
ZWREZXNjcmlwdGlvbikKKyAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9y
Q29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAgICwgbV9kYXRh
SXNVcFRvRGF0ZSh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICBSZXNvdXJjZUVycm9yKENGU3Ry
ZWFtRXJyb3IgZXJyb3IpOworCisgICAgUmVzb3VyY2VFcnJvcihDRkVycm9yUmVmIGVycm9yKQor
ICAgICAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCisgICAgICAgICwgbV9wbGF0Zm9ybUVy
cm9yKGVycm9yKQorICAgIHsKKyAgICAgICAgbV9pc051bGwgPSAhZXJyb3I7CisgICAgfQorCisg
ICAgb3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbnN0OworICAgIG9wZXJhdG9yIENGU3RyZWFtRXJy
b3IoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VFcnJvckJh
c2U7CisKKyAgICB2b2lkIHBsYXRmb3JtTGF6eUluaXQoKTsKKyAgICBzdGF0aWMgYm9vbCBwbGF0
Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYg
Yik7CisKKyAgICBib29sIG1fZGF0YUlzVXBUb0RhdGU7CisgICAgbXV0YWJsZSBSZXRhaW5QdHI8
Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gUmVzb3VyY2VFcnJvcl9oXwpJbmRleDogcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvckNGLmNwcAkocmV2aXNpb24gMzAwNDMpCisrKyBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3JDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMSBA
QCBjb25zdCBDRlN0cmluZ1JlZiBmYWlsaW5nVVJMS2V5ID0gQ0ZTVFIoCiAKIC8vIEZJWE1FOiBP
bmNlIDxyZGFyOi8vcHJvYmxlbS81MDUwODQxPiBpcyBmaXhlZCB3ZSBjYW4gcmVtb3ZlIHRoaXMg
Y29uc3RydWN0b3IuCiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3Ig
ZXJyb3IpCi0gICAgOiBtX2Vycm9yQ29kZShlcnJvci5lcnJvcikKLSAgICAsIG1faXNOdWxsKGZh
bHNlKQotICAgICwgbV9kYXRhSXNVcFRvRGF0ZSh0cnVlKQorICAgIDogbV9kYXRhSXNVcFRvRGF0
ZSh0cnVlKQogeworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgbV9lcnJvckNvZGUgPSBlcnJv
ci5lcnJvcjsKKwogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVh
bUVycm9yRG9tYWluQ3VzdG9tOgogICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21h
aW4iOwpAQCAtNjIsOCArNjMsMTEgQEAgUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0
cmVhbUVycgogICAgIH0KIH0KIAotdm9pZCBSZXNvdXJjZUVycm9yOjp1bnBhY2tQbGF0Zm9ybUVy
cm9yKCkKK3ZvaWQgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiB7CisgICAgaWYg
KG1fZGF0YUlzVXBUb0RhdGUpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9wbGF0Zm9y
bUVycm9yKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMiw2ICsxMDYsMTEgQEAgdm9pZCBSZXNv
dXJjZUVycm9yOjp1bnBhY2tQbGF0Zm9ybUVycm9yKAogICAgIG1fZGF0YUlzVXBUb0RhdGUgPSB0
cnVlOwogfQogCitib29sIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNv
dXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKQoreworICAgIHJldHVybiAoQ0ZF
cnJvclJlZilhID09IChDRkVycm9yUmVmKWI7Cit9CisKIFJlc291cmNlRXJyb3I6Om9wZXJhdG9y
IENGRXJyb3JSZWYoKSBjb25zdAogewogICAgIGlmIChtX2lzTnVsbCkgewpAQCAtMTMzLDcgKzE0
Miw3IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb24KIAogUmVzb3Vy
Y2VFcnJvcjo6b3BlcmF0b3IgQ0ZTdHJlYW1FcnJvcigpIGNvbnN0CiB7Ci0gICAgdW5wYWNrUGxh
dGZvcm1FcnJvcklmTmVlZGVkKCk7CisgICAgbGF6eUluaXQoKTsKIAogICAgIENGU3RyZWFtRXJy
b3IgcmVzdWx0OwogICAgIHJlc3VsdC5lcnJvciA9IG1fZXJyb3JDb2RlOwpJbmRleDogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDMwMDQzKQorKysgcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEz
ICszNiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDog
cHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZVJlc3Bv
bnNlKCkKLSAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSgpCisgICAgICAgIDogbV9pc1Vw
VG9EYXRlKHRydWUpCiAgICAgewogICAgIH0KIAogICAgIFJlc291cmNlUmVzcG9uc2UoQ0ZVUkxS
ZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKCFj
ZlJlc3BvbnNlKQotICAgICAgICAsIG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKSB7IH0KKyAgICAg
ICAgOiBtX2NmUmVzcG9uc2UoY2ZSZXNwb25zZSkKKyAgICAgICAgLCBtX2lzVXBUb0RhdGUoZmFs
c2UpCisgICAgeworICAgICAgICBtX2lzTnVsbCA9ICFjZlJlc3BvbnNlOworICAgIH0KIAogICAg
IFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5h
bWUpCkBAIC01NCwxMCArNTcsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7CiAKLSAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXNw
b25zZSgpOworICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdCgpOworICAgIHN0YXRpYyBib29sIHBs
YXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiBiKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBtX2NmUmVzcG9u
c2U7Ci0KKyAgICBib29sIG1faXNVcFRvRGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5j
cHAJKHJldmlzaW9uIDMwMDQzKQorKysgcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3Bv
bnNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCArNjIsMTYgQEAgc3RhdGljIHRp
bWVfdCB0b1RpbWVUKENGQWJzb2x1dGVUaW1lIHRpbQogICAgIHJldHVybiBtaW4obWF4KG1pblRp
bWVBc0RvdWJsZSwgdGltZSArIGtDRkFic29sdXRlVGltZUludGVydmFsU2luY2UxOTcwKSwgbWF4
VGltZUFzRG91YmxlKTsKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpkb1VwZGF0ZVJlc291
cmNlUmVzcG9uc2UoKQordm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KCkK
IHsKLSAgICBpZiAoIW1fY2ZSZXNwb25zZS5nZXQoKSkKKyAgICBpZiAobV9pc1VwVG9EYXRlKQog
ICAgICAgICByZXR1cm47CisgICAgbV9pc1VwVG9EYXRlID0gdHJ1ZTsKKworICAgIGlmIChtX2lz
TnVsbCkgeworICAgICAgICBBU1NFUlQoIW1fY2ZSZXNwb25zZS5nZXQoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICAvLyBGSVhNRTogV2UgbWF5IG5lZWQgdG8gZG8gTUlNRSB0eXBl
IHNuaWZmaW5nIGhlcmUgKHVubGVzcyB0aGF0IGlzIGRvbmUgaW4gQ0ZVUkxSZXNwb25zZUdldE1J
TUVUeXBlKS4KIApJbmRleDogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVlc3QuaAko
cmV2aXNpb24gMzAwNDMpCisrKyBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjcgKzAsMCBAQAotLy8gLSotIG1vZGU6IGMrKzsgYy1i
YXNpYy1vZmZzZXQ6IDQgLSotCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
UmVzb3VyY2VSZXF1ZXN0X2gKLSNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKLQotI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdEJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgc3Ry
dWN0IFJlc291cmNlUmVxdWVzdCA6IFJlc291cmNlUmVxdWVzdEJhc2UgewotCi0gICAgICAgIFJl
c291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgICAgIDogUmVzb3VyY2VS
ZXF1ZXN0QmFzZShLVVJMKHVybC5kZXByZWNhdGVkU3RyaW5nKCkpLCBVc2VQcm90b2NvbENhY2hl
UG9saWN5KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBSZXNvdXJjZVJlcXVlc3Qo
Y29uc3QgS1VSTCYgdXJsKQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwg
VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAg
UmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkKLSAgICAg
ICAgewotICAgICAgICAgICAgc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIFJlc291cmNlUmVxdWVzdCgpCi0gICAgICAgICAgICA6IFJlc291cmNlUmVxdWVz
dEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQotICAgICAgICB7Ci0gICAgICAg
IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlcXVlc3RC
YXNlOwotCi0gICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSB7fQotICAgICAg
ICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkge30KLSAgICB9OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXNvdXJjZVJlcXVlc3RfaApJbmRleDogcGxhdGZv
cm0vbmV0d29yay9nZW5lcmljL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcGxhdGZvcm0vbmV0d29yay9nZW5lcmljL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHJl
dmlzaW9uIDApCisrKyBwbGF0Zm9ybS9uZXR3b3JrL2dlbmVyaWMvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworI2lmbmRlZiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCisjZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
X2gKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSB7CitwdWJsaWM6CisgICAgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKQorICAgIHsKKyAgICB9CisKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYg
cHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQor
ICAgICAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShwcm90ZWN0aW9uU3BhY2UsIHBy
b3Bvc2VkQ3JlZGVudGlhbCwgcHJldmlvdXNGYWlsdXJlQ291bnQsIHJlc3BvbnNlLCBlcnJvcikK
KyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5kaWYKSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsv
Z2VuZXJpYy9SZXNvdXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9n
ZW5lcmljL1Jlc291cmNlRXJyb3IuaAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL25ldHdvcmsv
Z2VuZXJpYy9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8v
IC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBSZXNvdXJjZUVycm9yX2gKKyNkZWZpbmUgUmVzb3VyY2VFcnJvcl9oCisKKyNp
bmNsdWRlICJSZXNvdXJjZUVycm9yQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMgUmVzb3VyY2VFcnJvckJhc2UKK3sKK3B1YmxpYzoK
KyAgICBSZXNvdXJjZUVycm9yKCkKKyAgICB7CisgICAgfQorCisgICAgUmVzb3VyY2VFcnJvcihj
b25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgICAgICA6IFJlc291
cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNj
cmlwdGlvbikKKyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5kaWYgLy8gUmVzb3VyY2VFcnJv
cl9oXwpJbmRleDogcGxhdGZvcm0vbmV0d29yay9nZW5lcmljL1Jlc291cmNlUmVxdWVzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvZ2VuZXJpYy9SZXNvdXJjZVJlcXVlc3QuaAko
cmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL25ldHdvcmsvZ2VuZXJpYy9SZXNvdXJjZVJlcXVlc3Qu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNp
Yy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJl
c291cmNlUmVxdWVzdF9oCisjZGVmaW5lIFJlc291cmNlUmVxdWVzdF9oCisKKyNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3RCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVj
dCBSZXNvdXJjZVJlcXVlc3QgOiBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKKworICAgICAgICBSZXNv
dXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpIAorICAgICAgICAgICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKEtVUkwodXJsLmRlcHJlY2F0ZWRTdHJpbmcoKSksIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlUmVxdWVzdChj
b25zdCBLVVJMJiB1cmwpIAorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwg
VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAg
UmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkgCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBwb2xpY3kpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIFJlc291cmNlUmVxdWVzdCgpCisgICAgICAgICAgICA6IFJlc291
cmNlUmVxdWVzdEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICB7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IFJlc291cmNlUmVxdWVzdEJhc2U7CisKKyAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpIHt9CisgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7fQorICAg
IH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlc291cmNlUmVxdWVz
dF9oCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL2dlbmVyaWMvUmVzb3VyY2VSZXNwb25zZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvZ2VuZXJpYy9SZXNvdXJjZVJlc3BvbnNlLmgJ
KHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9uZXR3b3JrL2dlbmVyaWMvUmVzb3VyY2VSZXNwb25z
ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJh
c2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmVzb3VyY2VS
ZXNwb25zZV9oCisjZGVmaW5lIFJlc291cmNlUmVzcG9uc2VfaAorCisjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKK3B1YmxpYzoKKyAgICBS
ZXNvdXJjZVJlc3BvbnNlKCkKKyAgICB7CisgICAgfQorCisgICAgUmVzb3VyY2VSZXNwb25zZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3Rl
ZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lKQorICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4
cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKKyAgICB7CisgICAgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVzb3VyY2VSZXNwb25z
ZV9oCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisjaWZu
ZGVmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKyNkZWZpbmUgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VfaAorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgiCisKKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaWZuZGVmIF9fT0JKQ19fCit0eXBlZGVmIHN0cnVj
dCBvYmpjX29iamVjdCAqaWQ7CitjbGFzcyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwor
I2Vsc2UKK0BjbGFzcyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOworI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgOiBwdWJs
aWMgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlIHsKK3B1YmxpYzoKKyAgICBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpIHt9CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJv
dGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2Vk
Q3JlZGVudGlhbCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcik7CisgICAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKTsKKwor
ICAgIGlkIHNlbmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VuZGVyLmdldCgpOyB9CisgICAgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFjQ2hhbGxlbmdlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTsKKyAgICBzdGF0aWMgYm9v
bCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKTsKKworICAgIFJldGFpblB0cjxpZD4gbV9zZW5k
ZXI7CisgICAgUmV0YWluUHRyPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKj4gbV9tYWND
aGFsbGVuZ2U7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogcGxhdGZvcm0vbmV0d29yay9tYWMv
QXV0aGVudGljYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9tYWMv
QXV0aGVudGljYXRpb25NYWMubW0JKHJldmlzaW9uIDMwMDQzKQorKysgcGxhdGZvcm0vbmV0d29y
ay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDE4ICszNyw0
MCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAKK0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25T
cGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCisgICAg
OiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UocHJvdGVjdGlvblNwYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Bvc2VkQ3JlZGVudGlhbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0ZhaWx1cmVDb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlcnJvcikKK3sKK30KKwogQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hY0NoYWxs
ZW5nZSkKLSAgICA6IG1faXNOdWxsKGZhbHNlKQotICAgICwgbV9wcm90ZWN0aW9uU3BhY2UoY29y
ZShbbWFjQ2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pKQotICAgICwgbV9wcm9wb3NlZENyZWRl
bnRpYWwoY29yZShbbWFjQ2hhbGxlbmdlIHByb3Bvc2VkQ3JlZGVudGlhbF0pKQotICAgICwgbV9w
cmV2aW91c0ZhaWx1cmVDb3VudChbbWFjQ2hhbGxlbmdlIHByZXZpb3VzRmFpbHVyZUNvdW50XSkK
LSAgICAsIG1fZmFpbHVyZVJlc3BvbnNlKFttYWNDaGFsbGVuZ2UgZmFpbHVyZVJlc3BvbnNlXSkK
LSAgICAsIG1fZXJyb3IoW21hY0NoYWxsZW5nZSBlcnJvcl0pCisgICAgOiBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUJhc2UoY29yZShbbWFjQ2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUoW21hY0NoYWxsZW5nZSBwcm9wb3Nl
ZENyZWRlbnRpYWxdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFjQ2hh
bGxlbmdlIHByZXZpb3VzRmFpbHVyZUNvdW50XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbbWFjQ2hhbGxlbmdlIGZhaWx1cmVSZXNwb25zZV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW21hY0NoYWxsZW5nZSBlcnJvcl0pCiAgICAgLCBtX3NlbmRlcihb
bWFjQ2hhbGxlbmdlIHNlbmRlcl0pCiAgICAgLCBtX21hY0NoYWxsZW5nZShtYWNDaGFsbGVuZ2Up
CiB7CiB9CiAKK2Jvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnBsYXRmb3JtQ29tcGFyZShj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGIpCit7CisgICAgaWYgKGEuc2VuZGVyKCkgIT0gYi5zZW5kZXIoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBpZiAoYS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCkgIT0gYi5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQogCiBOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICptYWMoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVu
Z2UpCiB7CkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvci5oCShyZXZpc2lvbiAw
KQorKysgcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvci5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc1IEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0K
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmVzb3VyY2VFcnJvcl9oCisjZGVmaW5lIFJl
c291cmNlRXJyb3JfaAorCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvckJhc2UuaCIKKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZmRlZiBfX09CSkNfXworQGNsYXNzIE5TRXJyb3I7Cisj
ZWxzZQorY2xhc3MgTlNFcnJvcjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAg
ICBjbGFzcyBSZXNvdXJjZUVycm9yIDogcHVibGljIFJlc291cmNlRXJyb3JCYXNlIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIFJlc291cmNlRXJyb3IoKQorICAgICAgICAgICAgOiBtX2RhdGFJc1Vw
VG9EYXRlKHRydWUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlRXJy
b3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFp
bGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgICAg
IDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2Fs
aXplZERlc2NyaXB0aW9uKQorICAgICAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlRXJyb3IoTlNFcnJvciogZXJy
b3IpCisgICAgICAgICAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCisgICAgICAgICAgICAs
IG1fcGxhdGZvcm1FcnJvcihlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgbV9pc051bGwg
PSAhZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBvcGVyYXRvciBOU0Vycm9yKigpIGNvbnN0
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlRXJyb3JCYXNl
OworCisgICAgICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdCgpOworICAgICAgICBzdGF0aWMgYm9v
bCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VF
cnJvciYgYik7CisKKyAgICAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOworICAgICAgICBtdXRh
YmxlIFJldGFpblB0cjxOU0Vycm9yPiBtX3BsYXRmb3JtRXJyb3I7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZXNvdXJjZUVycm9yX2hfCkluZGV4OiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0JKHJldmlzaW9uIDMwMDQzKQorKysgcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzUsOCArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFJlc291cmNlRXJy
b3I6OnVucGFja1BsYXRmb3JtRXJyb3IoKQordm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxh
enlJbml0KCkKIHsKKyAgICBpZiAobV9kYXRhSXNVcFRvRGF0ZSkKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgbV9kb21haW4gPSBbbV9wbGF0Zm9ybUVycm9yLmdldCgpIGRvbWFpbl07CiAgICAgbV9l
cnJvckNvZGUgPSBbbV9wbGF0Zm9ybUVycm9yLmdldCgpIGNvZGVdOwogCkBAIC00OSw2ICs1Miwx
MSBAQCB2b2lkIFJlc291cmNlRXJyb3I6OnVucGFja1BsYXRmb3JtRXJyb3IoCiAgICAgbV9kYXRh
SXNVcFRvRGF0ZSA9IHRydWU7CiB9CiAKK2Jvb2wgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21w
YXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpCit7Cisg
ICAgcmV0dXJuIChOU0Vycm9yKilhID09IChOU0Vycm9yKiliOworfQorCiBSZXNvdXJjZUVycm9y
OjpvcGVyYXRvciBOU0Vycm9yKigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNOdWxsKSB7CkluZGV4
OiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAzMDA0MykK
KysrIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsMTMgKzQxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2UgOiBwdWJsaWMgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogcHVibGljOgogICAgIFJl
c291cmNlUmVzcG9uc2UoKQotICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKCkKKyAgICAg
ICAgOiBtX2lzVXBUb0RhdGUodHJ1ZSkKICAgICB7CiAgICAgfQogCiAgICAgUmVzb3VyY2VSZXNw
b25zZShOU1VSTFJlc3BvbnNlKiBuc1Jlc3BvbnNlKQotICAgICAgICA6IFJlc291cmNlUmVzcG9u
c2VCYXNlKCFuc1Jlc3BvbnNlKQotICAgICAgICAsIG1fbnNSZXNwb25zZShuc1Jlc3BvbnNlKSB7
IH0KKyAgICAgICAgOiBtX25zUmVzcG9uc2UobnNSZXNwb25zZSkKKyAgICAgICAgLCBtX2lzVXBU
b0RhdGUoZmFsc2UpCisgICAgeworICAgICAgICBtX2lzTnVsbCA9ICFuc1Jlc3BvbnNlOworICAg
IH0KICAgICAKICAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3Vy
Y2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGlu
Z05hbWUsIGZpbGVuYW1lKQpAQCAtNTksMTAgKzYyLDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlOwogCi0gICAgdm9pZCBkb1VwZGF0
ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICB2b2lkIHBsYXRmb3JtTGF6eUluaXQoKTsKKyAgICBz
dGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgYik7CiAKICAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4g
bV9uc1Jlc3BvbnNlOwotCisgICAgYm9vbCBtX2lzVXBUb0RhdGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9u
c2VNYWMubW0JKHJldmlzaW9uIDMwMDQzKQorKysgcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VSZXNwb25zZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsMTIgQEAgTlNVUkxS
ZXNwb25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZQogICAgIHJldHVybiBtX25zUmVzcG9u
c2UuZ2V0KCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXNwb25zZTo6ZG9VcGRhdGVSZXNvdXJjZVJl
c3BvbnNlKCkKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCgpCiB7Cisg
ICAgaWYgKG1faXNVcFRvRGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faXNVcFRvRGF0ZSA9
IHRydWU7CisKICAgICBpZiAobV9pc051bGwpIHsKICAgICAgICAgQVNTRVJUKCFtX25zUmVzcG9u
c2UpOwogICAgICAgICByZXR1cm47CkBAIC0xMTIsNCArMTE2LDkgQEAgdm9pZCBSZXNvdXJjZVJl
c3BvbnNlOjpkb1VwZGF0ZVJlc291cmNlUgogICAgIH0KIH0KIAorYm9vbCBSZXNvdXJjZVJlc3Bv
bnNlOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgYikKK3sKKyAgICByZXR1cm4gYS5uc1VSTFJlc3BvbnNlKCkgPT0gYi5u
c1VSTFJlc3BvbnNlKCk7Cit9CisKIH0KSW5kZXg6IHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3Vy
Y2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VS
ZXNwb25zZS5oCShyZXZpc2lvbiAzMDA0MykKKysrIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3Vy
Y2VSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYwICswLDAgQEAKLS8vIC0qLSBtb2Rl
OiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRl
ZiBSZXNvdXJjZVJlc3BvbnNlX2gKLSNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZV9oCi0KLSNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDogcHVi
bGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKLXB1YmxpYzoKLSAgICBSZXNvdXJjZVJlc3BvbnNl
KCkKLSAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZShmYWxzZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQotICAgICAgICA6IFJlc291cmNlUmVzcG9u
c2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBm
aWxlbmFtZSkKLSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlQmFzZTsKLQotICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkK
LSAgICB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgfQotCi19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNlX2gKSW5kZXg6IHht
bC9YU0xUUHJvY2Vzc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB4bWwvWFNMVFByb2Nlc3Nvci5jcHAJ
KHJldmlzaW9uIDMwMDQzKQorKysgeG1sL1hTTFRQcm9jZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19285</attachid>
            <date>2008-02-22 17:12:29 -0800</date>
            <delta_ts>2008-02-23 09:28:45 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>net-2.diff</filename>
            <type>text/plain</type>
            <size>112514</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDUwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTI3IEBACisyMDA4LTAyLTIyICBNb3JnYW5MICA8bW9yZ2FubC53ZWJraXRAeWFo
b28uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVsaW1pbmF0ZSBzb21lICNpZmRlZnMgZnJvbSBoZWFkZXJzIGluIHBsYXRmb3JtL25ldHdvcmsu
CisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzg2CisK
KyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9YTUxUb2tlbml6ZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5j
cHA6IENvcGllZCBmcm9tIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlOjpwcmV2aW91c0ZhaWx1cmVDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OnByb3Bvc2VkQ3JlZGVudGlhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OnByb3RlY3Rpb25TcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmZhaWx1
cmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2U6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZTo6aXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZTo6bnVsbGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2U6OmNvbXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlLmg6IENvcGllZCBmcm9tIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaC4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmFzZTo6cGxhdGZvcm1Db21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUVycm9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlRXJyb3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlRXJyb3JCYXNlLmNwcDogQ29waWVkIGZyb20gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUVycm9yLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpsYXp5SW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6Y29tcGFyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oOiBDb3BpZWQgZnJvbSBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3IuaC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3JCYXNlOjppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJh
c2U6OmRvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZXJyb3JD
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpmYWlsaW5nVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpsb2NhbGl6ZWREZXNjcmlwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6UmVzb3VyY2VFcnJvckJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OnBsYXRmb3JtTGF6eUlu
aXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OnBsYXRmb3JtQ29tcGFy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjppc0hUVFApOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
c2V0VXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjptaW1lVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0TWltZVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVu
dExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0RXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjp0ZXh0RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2VCYXNlOjpzZXRUZXh0RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjpzdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0dXNDb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzQ29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cFN0YXR1c1RleHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEhUVFBTdGF0dXNUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwSGVhZGVyRmllbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEhUVFBIZWFkZXJGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZpZWxk
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRFeHBpcmF0aW9u
RGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwaXJhdGlv
bkRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldExhc3RN
b2RpZmllZERhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omxh
c3RNb2RpZmllZERhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6
OmxhenlJbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21w
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnBsYXRmb3Jt
TGF6eUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnBsYXRm
b3JtQ29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwbGF0Zm9ybUNvbXBhcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6OnNvdXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6Y2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3Jt
TGF6eUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21w
YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFt
RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6
OlJlc291cmNlRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZVJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJj
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTo6c2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOjpuc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cGxhdGZvcm1Db21w
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvcXQvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VFcnJvci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgICogeG1sL1hTTFRQ
cm9jZXNzb3IuY3BwOgorCiAyMDA4LTAyLTIyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS5iYXNlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJ
KHJldmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDQsNyArMjQ0LDcgQEAgX19aTjdXZWJDb3JlMTJpY29uRGF0YWJhc2VFdgogX19a
TjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFFUktTMF8KIF9fWk43V2ViQ29yZTEzSGl0VGVzdFJl
c3VsdEQxRXYKIF9fWk43V2ViQ29yZTEzS2V5Ym9hcmRFdmVudEMxRVJLTlNfMTJBdG9taWNTdHJp
bmdFYmJQTlNfOURPTVdpbmRvd0VSS05TXzZTdHJpbmdFamJiYmJiCi1fX1pON1dlYkNvcmUxM1Jl
c291cmNlRXJyb3IxOXVucGFja1BsYXRmb3JtRXJyb3JFdgorX19aTks3V2ViQ29yZTE3UmVzb3Vy
Y2VFcnJvckJhc2U4bGF6eUluaXRFdgogX19aTjdXZWJDb3JlMTN0b0RldmljZVNwYWNlRVJLTlNf
OUZsb2F0UmVjdEVQOE5TV2luZG93CiBfX1pON1dlYkNvcmUxNENhY2hlZFJlc291cmNlNWRlcmVm
RVBOU18yMENhY2hlZFJlc291cmNlQ2xpZW50RQogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRl
cjEyc2V0Q29tbWl0dGVkRWIKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5vcmRlcgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUub3JkZXIJKHJldmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC02Mjk2LDcgKzYyOTYsNyBAQCBfX1pON1dl
YkNvcmUxOE1haW5SZXNvdXJjZUxvYWRlcjdkaWRGYWlsCiBfX1pON1dlYkNvcmUxOE1haW5SZXNv
dXJjZUxvYWRlcjEzcmVjZWl2ZWRFcnJvckVSS05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2Vi
Q29yZTExRnJhbWVMb2FkZXIyNXJlY2VpdmVkTWFpblJlc291cmNlRXJyb3JFUktOU18xM1Jlc291
cmNlRXJyb3JFYgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjRzdG9wRXYKLV9fWk43V2ViQ29y
ZTEzUmVzb3VyY2VFcnJvcjE5dW5wYWNrUGxhdGZvcm1FcnJvckV2CitfX1pON1dlYkNvcmUxN1Jl
c291cmNlRXJyb3JCYXNlOGxhenlJbml0RXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIyMWhh
bmRsZUZhbGxiYWNrQ29udGVudEV2CiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTNkaWROb3RP
cGVuVVJMRVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMzFpbnZhbGlkYXRl
Q3VycmVudEl0ZW1DYWNoZWRQYWdlRXYKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagkocmV2aXNpb24gMzAwNDMpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDQ5LDExICs0MDQ5LDExIEBACiAJCQkJTmFt
ZT0ibmV0d29yayINCiAJCQkJPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxuZXR3b3JrXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCINCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2Uu
Y3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCINCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2UuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KQEAgLTQwOTMsNyAr
NDA5MywxMSBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZUVycm9yLmgiDQorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcUmVzb3VyY2VFcnJvckJhc2UuaCINCisJCQkJ
CT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXFJlc291cmNlRXJyb3JCYXNlLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KIAkJCQk8RmlsZQ0KQEAgLTQxMzIsNiArNDEzNiwxMCBAQAogCQkJCQlOYW1lPSJjZiINCiAJ
CQkJCT4NCiAJCQkJCTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3
b3JrXGNmXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxl
Pg0KKwkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
Y2ZcQXV0aGVudGljYXRpb25DRi5jcHAiDQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KQEAgLTQx
NDgsNiArNDE1NiwxMCBAQAogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCisJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VFcnJvci5o
Ig0KKwkJCQkJCT4NCisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlRXJyb3JDRi5jcHAiDQogCQkJCQkJ
Pg0KIAkJCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAzMDA0MykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsOCArMzc0LDYgQEAKIAkJNTE0
Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQ5MENFOTIzNEUwMDdF
RjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gKi87IH07CiAJCTUxNEM3NjU0MENFOTIzNEUw
MDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0QTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VS
ZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxNEM3NjU1MENFOTIzNEYwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NEIwQ0U5
MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VNYWMubW0gKi87IH07Ci0JCTUxNEM3NjZC
MENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1NjBDRTkyM0ExMDA3
RUYzQ0QgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwICovOyB9OwotCQk1MTRDNzY2QzBD
RTkyM0ExMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU3MENFOTIzQTEwMDdFRjND
RCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjZEMENFOTIzQTEwMDdFRjNDRCAvKiBDcmVk
ZW50aWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmNwcCAqLzsgfTsKIAkJNTE0
Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBD
cmVkZW50aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTE0Qzc2NkYwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjVBMENFOTIzQTEwMDdF
RjNDRCAvKiBGb3JtRGF0YS5jcHAgKi87IH07CkBAIC0zODUsOCArMzgzLDYgQEAKIAkJNTE0Qzc2
NzMwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1RTBDRTkyM0ExMDA3RUYzQ0QgLyogSFRU
UFBhcnNlcnMuaCAqLzsgfTsKIAkJNTE0Qzc2NzQwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rp
b25TcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTRDNzY1RjBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlLmNwcCAqLzsgfTsK
IAkJNTE0Qzc2NzUwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NjAwQ0U5MjNBMTAw
N0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTUxNEM3Njc2MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJj
ZUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNEM3NjYxMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yLmNwcCAqLzsgfTsKLQkJ
NTE0Qzc2NzcwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjYyMENFOTIzQTEwMDdFRjND
RCAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NzgwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3
NjYzMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgKi87IH07CiAJCTUxNEM3
Njc5MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NjQwQ0U5MjNBMTAwN0VGM0NEIC8q
IFJlc291cmNlSGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTE0Qzc2N0EwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRD
NzY2NTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU0MSw2ICsxNTM3LDEy
IEBACiAJCTkzNDQyQ0EwMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ0
MkM5RjBEMkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwICovOyB9
OwogCQk5MzREOUJBNTBCOEMxMTZCMDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RDlCQTQw
QjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSAqLzsgfTsKIAkJOTM0
RDlCQTcwQjhDMTE3NTAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RDlCQTYwQjhDMTE3NTAw
N0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzNEY3MTM4MEQ1QTZFRkYwMDAxOEQ2OSAvKiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RjcxMzcwRDVBNkVGRjAwMDE4RDY5IC8qIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgKi87IH07CisJCTkzNEY3MTNBMEQ1QTZGMTAwMDAxOEQ2
OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEY3MTM5MEQ1QTZGMTAwMDAxOEQ2OSAvKiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VF
cnJvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzNEY3MTNCMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzNEY3MTNFMEQ1QTZG
MjgwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGNzEzRDBENUE2RjI4MDAwMThENjkgLyogUmVz
b3VyY2VFcnJvckJhc2UuY3BwICovOyB9OworCQk5MzRGNzE0MjBENUE2RjQ0MDAwMThENjkgLyog
UmVzb3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM0RjcxNDEwRDVBNkY0NDAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5MzRGNzE0NDBENUE2
RjUzMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEY3MTQzMEQ1QTZGNTMwMDAxOEQ2OSAv
KiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzNEZFOUU1MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hv
b3Nlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzRGRTlFNDBCNUNBNTM5MDAzRTRBNzMgLyogRmlsZUNob29zZXIuY3BwICovOyB9OwogCQk5MzUy
MDcxOTA5QkQzQkE1MDBGMjAzOEQgLyogU3RhdGljQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUyMDcxNzA5QkQzQkE1MDBGMjAz
OEQgLyogU3RhdGljQ29uc3RydWN0b3JzLmggKi87IH07CiAJCTkzNTIwN0JFMDlCRDQxMEEwMEYy
MDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzUyMDdCRDA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVkU3Ry
aW5ncy5oICovOyB9OwpAQCAtNDYzMCw4ICs0NjMyLDYgQEAKIAkJNTE0Qzc2NDkwQ0U5MjM0RTAw
N0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0Qzc2NEEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25zZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0QjBDRTkyMzRFMDA3RUYzQ0QgLyog
UmVzb3VyY2VSZXNwb25zZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJlc291cmNlUmVzcG9uc2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUxNEM3NjU2MENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEM3NjU3MENFOTIz
QTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcmVkZW50aWFsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NEIC8q
IENyZWRlbnRpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlh
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1QTBDRTkyM0ExMDA3RUYz
Q0QgLyogRm9ybURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Rm9ybURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY0MSw4ICs0NjQx
LDYgQEAKIAkJNTE0Qzc2NUUwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUVFBQYXJzZXJzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNEM3NjVGMENFOTIzQTEwMDdFRjNDRCAvKiBQcm90ZWN0aW9uU3Bh
Y2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdGVjdGlvblNw
YWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NjAwQ0U5MjNBMTAw
N0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQcm90ZWN0aW9uU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0
Qzc2NjEwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTUxNEM3NjYyMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlRXJyb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NjMwQ0U5MjNBMTAwN0VGM0NEIC8qIFJl
c291cmNlSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
c291cmNlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NjQw
Q0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlc291cmNlSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNEM3NjY1MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTc2NCw2ICs1NzYyLDEyIEBACiAJCTkzNDQy
QzlGMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEQ5QkE0MEI4QzExNkIwMDdCNDJB
OSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzREOUJBNjBCOEMxMTc1MDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5n
RXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNTdHJp
bmdFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0RjcxMzcwRDVBNkVG
RjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0RjcxMzkwRDVBNkYxMDAwMDE4RDY5
IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzNEY3MTNCMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9y
QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VFcnJvckJh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0RjcxM0QwRDVBNkYyODAwMDE4
RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXNvdXJjZUVycm9yQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzNEY3MTQxMEQ1QTZGNDQwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUVycm9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzNEY3MTQzMEQ1QTZGNTMwMDAxOEQ2OSAvKiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0RkU5
RTQwQjVDQTUzOTAwM0U0QTczIC8qIEZpbGVDaG9vc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVDaG9vc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM1MjA3MTcwOUJEM0JBNTAwRjIwMzhEIC8qIFN0YXRpY0NvbnN0cnVjdG9ycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNDb25zdHJ1Y3RvcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1MjA3QkQwOUJENDEwQTAwRjIwMzhEIC8q
IExvY2FsaXplZFN0cmluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9j
YWxpemVkU3RyaW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI1Niw5ICs4
MjYwLDExIEBACiAJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3JrICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5MzRGNzEzRDBENUE2RjI4
MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuY3BwICovLAorCQkJCTkzNEY3MTNCMEQ1QTZG
MTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5oICovLAorCQkJCTkzNEY3MTM5MEQ1QTZG
MTAwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCAqLywKKwkJCQk5MzRG
NzEzNzBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcCAq
LywKIAkJCQk2NTZCODRFNzBBRUExREFFMDBBMDk1QjQgLyogbWFjICovLAotCQkJCTUxNEM3NjU2
MENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgKi8sCi0JCQkJ
NTE0Qzc2NTcwQ0U5MjNBMTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8s
CiAJCQkJNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuY3BwICovLAogCQkJ
CTUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi8sCiAJCQkJNTE0Qzc2
NUEwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmNwcCAqLywKQEAgLTgyNjgsOCArODI3NCw2
IEBACiAJCQkJNTE0Qzc2NUUwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmggKi8sCiAJ
CQkJNTE0Qzc2NUYwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5jcHAgKi8sCiAJ
CQkJNTE0Qzc2NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovLAotCQkJ
CTUxNEM3NjYxMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yLmNwcCAqLywKLQkJCQk1
MTRDNzY2MjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvci5oICovLAogCQkJCTUxNEM3
NjYzMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgKi8sCiAJCQkJNTE0Qzc2
NjQwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmggKi8sCiAJCQkJNTE0Qzc2NjUw
Q0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlQ2xpZW50LmggKi8sCkBAIC04Mjg1LDYg
KzgyODksOCBAQAogCQk2NTZCODRFNzBBRUExREFFMDBBMDk1QjQgLyogbWFjICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5MzRGNzE0MzBENUE2RjUzMDAw
MThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLywKKwkJCQk5MzRGNzE0MTBENUE2
RjQ0MDAwMThENjkgLyogUmVzb3VyY2VFcnJvci5oICovLAogCQkJCTUxNEM3NjQyMENFOTIzNEUw
MDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oICovLAogCQkJCTUxNEM3NjQzMENFOTIzNEUw
MDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5tbSAqLywKIAkJCQk1MTRDNzY0NDBDRTkyMzRF
MDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMuaCAqLywKQEAgLTEyMzczLDcgKzEyMzc5LDYg
QEAKIAkJCQlCMkMzREEyMDBEMDA2QzFEMDBFRjZGMjYgLyogQXRvbWljU3RyaW5nSW1wbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTUxNEM3NjZDMENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NEMwQ0U5MjM0RTAwN0VG
M0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjA0RTBB
MTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUUxRUNCMzBDOTFDNTU2MDBEQzI1NUIgLyogQXV0b2RyYWluZWRQb29sLmggaW4gSGVhZGVycyAq
LywKQEAgLTEzODIyLDcgKzEzODI3LDYgQEAKIAkJCQk5Mzc5OUVGOTBCRjI3NDM2MDBEMEYyMzAg
LyogUmVuZGVyV29yZEJyZWFrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwQTA5OUU2NDky
MDA1NkU1ODEgLyogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQjE2QzJGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk1MTRDNzY3NzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE0Qzc2NzkwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTRDNzY3QTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5k
bGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3NjdCMENFOTIzQTEwMDdFRjNDRCAv
KiBSZXNvdXJjZUhhbmRsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MjI3LDYgKzE0
MjMxLDEwIEBACiAJCQkJNTFBOTI2N0QwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblF1b3RhTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBOTI2N0YwRDUzRjA1NzAwNjNFQ0MyIC8qIE9y
aWdpblVzYWdlUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RENGODM2RDBENTkxNTk4MDA5
NTNCQzYgLyogUGx1Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzRGNzEzQTBE
NUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCTkzNEY3MTQyMEQ1QTZGNDQwMDAxOEQ2OSAvKiBSZXNvdXJj
ZUVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzRGNzE0NDBENUE2RjUzMDAwMThENjkgLyog
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTQ0MjQsNyArMTQ0
MzAsNiBAQAogCQkJCUIyQzNEQTFFMEQwMDZDMUQwMEVGNkYyNiAvKiBBdG9taWNTdHJpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThDNEE4MEUwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThDNEE4MEMwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHJpYnV0
ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTRDNzY2QjBDRTkyM0ExMDA3RUYzQ0QgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NEQwQ0U5
MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThDRkYwNTAwQTE1NEYwOTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MUUxRUNBRjBDOTFDNTQ2MDBEQzI1NUIgLyogQXV0b2RyYWluZWRQb29sLm1t
IGluIFNvdXJjZXMgKi8sCkBAIC0xNTQzMSw3ICsxNTQzNiw2IEBACiAJCQkJOTM3OTlFRjgwQkYy
NzQzNjAwRDBGMjMwIC8qIFJlbmRlcldvcmRCcmVhay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzMwOUUwOTA5OUU2NDkyMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNCMTZDMkUwOTc5QzNCRDAwNDY3NzQxIC8qIFJlcXVlc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNTE0Qzc2NzYwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNl
RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTAwQ0U5MjM0RTAwN0VGM0NEIC8q
IFJlc291cmNlRXJyb3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY3ODBDRTkyM0Ex
MDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2
NTEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlTWFjLm1tIGluIFNvdXJjZXMgKi8s
CkBAIC0xNTgyMCw2ICsxNTgyNCw4IEBACiAJCQkJQkNFN0IxOTMwRDRFODY5NjAwNzVBNTM5IC8q
IEpTSGlzdG9yeUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE5MjY3QzBENTNGMDU3
MDA2M0VDQzIgLyogT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
QTkyNjdFMEQ1M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5Vc2FnZVJlY29yZC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk5MzRGNzEzODBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzNEY3MTNFMEQ1QTZGMjgwMDAxOEQ2
OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUv
ZG9tL1hNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vWE1MVG9rZW5p
emVyLmNwcAkocmV2aXNpb24gMzAwNDMpCisrKyBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCkluZGV4OiBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9u
IDMwMDQzKQorKysgV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgotI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIktVUkwu
aCIKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNpb24gMzAwNDMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEz
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaCIKLQotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKCkKLSAgICA6IG1faXNOdWxsKHRydWUpCi0gICAgLCBtX3ByZXZpb3VzRmFp
bHVyZUNvdW50KDApCi17Ci19Ci0KLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29u
c3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1
cmVDb3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQotICAgIDogbV9pc051bGwoZmFsc2UpCi0gICAgLCBtX3Byb3RlY3Rpb25T
cGFjZShwcm90ZWN0aW9uU3BhY2UpCi0gICAgLCBtX3Byb3Bvc2VkQ3JlZGVudGlhbChwcm9wb3Nl
ZENyZWRlbnRpYWwpCi0gICAgLCBtX3ByZXZpb3VzRmFpbHVyZUNvdW50KHByZXZpb3VzRmFpbHVy
ZUNvdW50KQotICAgICwgbV9mYWlsdXJlUmVzcG9uc2UocmVzcG9uc2UpCi0gICAgLCBtX2Vycm9y
KGVycm9yKQotewotfQotCi11bnNpZ25lZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cHJldmlv
dXNGYWlsdXJlQ291bnQoKSBjb25zdCAKLXsgCi0gICAgcmV0dXJuIG1fcHJldmlvdXNGYWlsdXJl
Q291bnQ7IAotfQotCi1jb25zdCBDcmVkZW50aWFsJiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6
cHJvcG9zZWRDcmVkZW50aWFsKCkgY29uc3QgCi17IAotICAgIHJldHVybiBtX3Byb3Bvc2VkQ3Jl
ZGVudGlhbDsgCi19Ci0KLWNvbnN0IFByb3RlY3Rpb25TcGFjZSYgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OnByb3RlY3Rpb25TcGFjZSgpIGNvbnN0IAoteyAKLSAgICByZXR1cm4gbV9wcm90ZWN0
aW9uU3BhY2U7IAotfQotCi1jb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTo6ZmFpbHVyZVJlc3BvbnNlKCkgY29uc3QgCi17IAotICAgIHJldHVybiBtX2ZhaWx1
cmVSZXNwb25zZTsgCi19Ci0KLWNvbnN0IFJlc291cmNlRXJyb3ImIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjplcnJvcigpIGNvbnN0IAoteyAKLSAgICByZXR1cm4gbV9lcnJvcjsgCi19Ci0KLWJv
b2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmlzTnVsbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1faXNOdWxsOwotfQotCi12b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpudWxsaWZ5KCkK
LXsKLSAgICBtX2lzTnVsbCA9IHRydWU7Ci19Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIp
Ci17Ci0gICAgaWYgKGEuaXNOdWxsKCkgIT0gYi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChhLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChhLnNlbmRlcigpICE9IGIuc2VuZGVyKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgaWYgKGEubnNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpICE9IGIubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGlmIChhLnNvdXJj
ZUhhbmRsZSgpICE9IGIuc291cmNlSGFuZGxlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGlmIChhLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpICE9IGIuY2ZVUkxBdXRoQ2hhbGxlbmdl
UmVmKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCi0gICAgaWYgKGEucHJvdGVj
dGlvblNwYWNlKCkgIT0gYi5wcm90ZWN0aW9uU3BhY2UoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAKLSAgICBpZiAoYS5wcm9wb3NlZENyZWRlbnRpYWwoKSAhPSBiLnByb3Bvc2Vk
Q3JlZGVudGlhbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgIGlmIChh
LnByZXZpb3VzRmFpbHVyZUNvdW50KCkgIT0gYi5wcmV2aW91c0ZhaWx1cmVDb3VudCgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgIGlmIChhLmZhaWx1cmVSZXNwb25zZSgp
ICE9IGIuZmFpbHVyZVJlc3BvbnNlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
Ci0gICAgaWYgKGEuZXJyb3IoKSAhPSBiLmVycm9yKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgb3BlcmF0b3IhPShjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotfQotCi0KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZp
c2lvbiAzMDA0MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0jaWZu
ZGVmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKLSNkZWZpbmUgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VfaAotCi0jaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgotI2luY2x1ZGUgIlByb3RlY3Rpb25T
cGFjZS5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJSZXNvdXJj
ZUVycm9yLmgiCi0KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLQotI2lmIFBMQVRGT1JNKE1B
QykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaWZuZGVmIF9fT0JKQ19fCi10eXBlZGVm
IHN0cnVjdCBvYmpjX29iamVjdCAqaWQ7Ci1jbGFzcyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOwotI2Vsc2UKLUBjbGFzcyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotI2VuZGlm
Ci0jZW5kaWYKLQotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxBdXRo
Q2hhbGxlbmdlKiBDRlVSTEF1dGhDaGFsbGVuZ2VSZWY7Ci0jZW5kaWYKLQotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFJlc291cmNlSGFuZGxlOwotCi1jbGFzcyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSB7Ci0KLXB1YmxpYzoKLSAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwot
ICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVj
dGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVk
IHByZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopOwotI2Vs
aWYgVVNFKENGTkVUV09SSykKLSAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVSTEF1dGhD
aGFsbGVuZ2VSZWYsIFJlc291cmNlSGFuZGxlKiBzb3VyY2VIYW5kbGUpOwotI2VuZGlmCi0KLSAg
ICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0OwotICAgIGNvbnN0IENyZWRl
bnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCgpIGNvbnN0OwotICAgIGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYgcHJvdGVjdGlvblNwYWNlKCkgY29uc3Q7Ci0gICAgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgZmFpbHVyZVJlc3BvbnNlKCkgY29uc3Q7Ci0gICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IoKSBjb25zdDsKLSAgICAKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0OwotICAgIHZvaWQgbnVs
bGlmeSgpOwotICAgIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZCBzZW5kZXIoKSBjb25zdCB7
IHJldHVybiBtX3NlbmRlci5nZXQoKTsgfQotICAgIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBjb25zdCB7IHJldHVybiBtX21hY0No
YWxsZW5nZS5nZXQoKTsgfQotI2VsaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXNvdXJjZUhhbmRs
ZSogc291cmNlSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VIYW5kbGUuZ2V0KCk7IH0K
LSAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkgY29uc3Qg
eyByZXR1cm4gbV9jZkNoYWxsZW5nZS5nZXQoKTsgfQotI2VuZGlmCi1wcml2YXRlOgotICAgIGJv
b2wgbV9pc051bGw7Ci0gICAgUHJvdGVjdGlvblNwYWNlIG1fcHJvdGVjdGlvblNwYWNlOwotICAg
IENyZWRlbnRpYWwgbV9wcm9wb3NlZENyZWRlbnRpYWw7Ci0gICAgdW5zaWduZWQgbV9wcmV2aW91
c0ZhaWx1cmVDb3VudDsKLSAgICBSZXNvdXJjZVJlc3BvbnNlIG1fZmFpbHVyZVJlc3BvbnNlOwot
ICAgIFJlc291cmNlRXJyb3IgbV9lcnJvcjsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRh
aW5QdHI8aWQ+IG1fc2VuZGVyOwotICAgIFJldGFpblB0cjxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICo+IG1fbWFjQ2hhbGxlbmdlOwotI2VsaWYgVVNFKENGTkVUV09SSykKLSAgICBSZWZQ
dHI8UmVzb3VyY2VIYW5kbGU+IG1fc291cmNlSGFuZGxlOwotICAgIFJldGFpblB0cjxDRlVSTEF1
dGhDaGFsbGVuZ2VSZWY+IG1fY2ZDaGFsbGVuZ2U7Ci0jZW5kaWYKLQotfTsKLQotYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci19Ci0jZW5kaWYKLQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQmFzZS5jcHAJKHJldmlzaW9uIDMwMDQzKQkoZnJvbSBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOjMwMDQzKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgorCisjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQorICAgIDogbV9pc051bGwodHJ1ZSkKKyAgICAs
IG1fcHJldmlvdXNGYWlsdXJlQ291bnQoMCkKK3sKK30KKworQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVj
dGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHByZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCisgICAgOiBtX2lzTnVsbChmYWxzZSkKKyAgICAs
IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkKKyAgICAsIG1fcHJvcG9zZWRDcmVk
ZW50aWFsKHByb3Bvc2VkQ3JlZGVudGlhbCkKKyAgICAsIG1fcHJldmlvdXNGYWlsdXJlQ291bnQo
cHJldmlvdXNGYWlsdXJlQ291bnQpCisgICAgLCBtX2ZhaWx1cmVSZXNwb25zZShyZXNwb25zZSkK
KyAgICAsIG1fZXJyb3IoZXJyb3IpCit7Cit9CisKK3Vuc2lnbmVkIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0IAoreyAKKyAgICByZXR1cm4gbV9w
cmV2aW91c0ZhaWx1cmVDb3VudDsgCit9CisKK2NvbnN0IENyZWRlbnRpYWwmIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjpwcm9wb3NlZENyZWRlbnRpYWwoKSBjb25zdCAKK3sgCisgICAgcmV0dXJu
IG1fcHJvcG9zZWRDcmVkZW50aWFsOyAKK30KKworY29uc3QgUHJvdGVjdGlvblNwYWNlJiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTo6cHJvdGVjdGlvblNwYWNlKCkgY29uc3QgCit7IAorICAgIHJl
dHVybiBtX3Byb3RlY3Rpb25TcGFjZTsgCit9CisKK2NvbnN0IFJlc291cmNlUmVzcG9uc2UmIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpmYWlsdXJlUmVzcG9uc2UoKSBjb25zdCAKK3sgCisgICAg
cmV0dXJuIG1fZmFpbHVyZVJlc3BvbnNlOyAKK30KKworY29uc3QgUmVzb3VyY2VFcnJvciYgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OmVycm9yKCkgY29uc3QgCit7IAorICAgIHJldHVybiBtX2Vy
cm9yOyAKK30KKworYm9vbCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aXNOdWxsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9pc051bGw7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6Om51bGxpZnkoKQoreworICAgIG1faXNOdWxsID0gdHJ1ZTsKK30KKworYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgYikKK3sKKyAgICBpZiAoYS5pc051bGwoKSAhPSBiLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKGEuc2VuZGVyKCkgIT0g
Yi5zZW5kZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBpZiAoYS5u
c1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgIT0gYi5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbGlmIFVTRShDRk5FVFdPUkspCisg
ICAgaWYgKGEuc291cmNlSGFuZGxlKCkgIT0gYi5zb3VyY2VIYW5kbGUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKGEuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkgIT0gYi5jZlVS
TEF1dGhDaGFsbGVuZ2VSZWYoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAg
ICBpZiAoYS5wcm90ZWN0aW9uU3BhY2UoKSAhPSBiLnByb3RlY3Rpb25TcGFjZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIGlmIChhLnByb3Bvc2VkQ3JlZGVudGlhbCgp
ICE9IGIucHJvcG9zZWRDcmVkZW50aWFsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgaWYgKGEucHJldmlvdXNGYWlsdXJlQ291bnQoKSAhPSBiLnByZXZpb3VzRmFpbHVy
ZUNvdW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgaWYgKGEuZmFp
bHVyZVJlc3BvbnNlKCkgIT0gYi5mYWlsdXJlUmVzcG9uc2UoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAKKyAgICBpZiAoYS5lcnJvcigpICE9IGIuZXJyb3IoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCit9CisKKwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQmFzZS5jcHAJKHJldmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDE0ICsyOSwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCitBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUJhc2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSgpCiAgICAgOiBtX2lzTnVs
bCh0cnVlKQogICAgICwgbV9wcmV2aW91c0ZhaWx1cmVDb3VudCgwKQogewogfQogCi1BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlv
blNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVu
dGlhbCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQmFzZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVk
ZW50aWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIDogbV9p
c051bGwoZmFsc2UpCiAgICAgLCBtX3Byb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpCiAg
ICAgLCBtX3Byb3Bvc2VkQ3JlZGVudGlhbChwcm9wb3NlZENyZWRlbnRpYWwpCkBAIC00Niw2MiAr
NDksNDkgQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQwogewogfQog
Ci11bnNpZ25lZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cHJldmlvdXNGYWlsdXJlQ291bnQo
KSBjb25zdCAKK3Vuc2lnbmVkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6cHJldmlvdXNG
YWlsdXJlQ291bnQoKSBjb25zdCAKIHsgCiAgICAgcmV0dXJuIG1fcHJldmlvdXNGYWlsdXJlQ291
bnQ7IAogfQogCi1jb25zdCBDcmVkZW50aWFsJiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cHJv
cG9zZWRDcmVkZW50aWFsKCkgY29uc3QgCitjb25zdCBDcmVkZW50aWFsJiBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUJhc2U6OnByb3Bvc2VkQ3JlZGVudGlhbCgpIGNvbnN0IAogeyAKICAgICByZXR1
cm4gbV9wcm9wb3NlZENyZWRlbnRpYWw7IAogfQogCi1jb25zdCBQcm90ZWN0aW9uU3BhY2UmIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwcm90ZWN0aW9uU3BhY2UoKSBjb25zdCAKK2NvbnN0IFBy
b3RlY3Rpb25TcGFjZSYgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpwcm90ZWN0aW9uU3Bh
Y2UoKSBjb25zdCAKIHsgCiAgICAgcmV0dXJuIG1fcHJvdGVjdGlvblNwYWNlOyAKIH0KIAotY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmZhaWx1cmVSZXNw
b25zZSgpIGNvbnN0IAorY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlOjpmYWlsdXJlUmVzcG9uc2UoKSBjb25zdCAKIHsgCiAgICAgcmV0dXJuIG1fZmFp
bHVyZVJlc3BvbnNlOyAKIH0KIAotY29uc3QgUmVzb3VyY2VFcnJvciYgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6OmVycm9yKCkgY29uc3QgCitjb25zdCBSZXNvdXJjZUVycm9yJiBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2U6OmVycm9yKCkgY29uc3QgCiB7IAogICAgIHJldHVybiBtX2Vycm9y
OyAKIH0KIAotYm9vbCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aXNOdWxsKCkgY29uc3QKK2Jv
b2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjppc051bGwoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2lzTnVsbDsKIH0KIAotdm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6bnVsbGlm
eSgpCit2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6bnVsbGlmeSgpCiB7CiAgICAg
bV9pc051bGwgPSB0cnVlOwogfQogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQorYm9vbCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmNvbXBhcmUoY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQogewotICAgIGlm
IChhLmlzTnVsbCgpICE9IGIuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoYS5pc051bGwoKSkKKyAgICBpZiAoYS5pc051bGwoKSAmJiBiLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmIChhLnNl
bmRlcigpICE9IGIuc2VuZGVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0g
ICAgaWYgKGEubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpICE9IGIubnNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZWxpZiBVU0UoQ0ZO
RVRXT1JLKQotICAgIGlmIChhLnNvdXJjZUhhbmRsZSgpICE9IGIuc291cmNlSGFuZGxlKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChhLmNmVVJMQXV0aENoYWxsZW5nZVJlZigp
ICE9IGIuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpCisgICAgaWYgKGEuaXNOdWxsKCkgfHwgYi5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KKyAgICAgICAgCiAgICAg
aWYgKGEucHJvdGVjdGlvblNwYWNlKCkgIT0gYi5wcm90ZWN0aW9uU3BhY2UoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAKQEAgLTExNywxNCArMTA3LDcgQEAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbAogICAgIGlmIChhLmVycm9yKCkgIT0gYi5lcnJv
cigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIG9wZXJhdG9yIT0oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7
CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwbGF0Zm9ybUNvbXBhcmUoYSwg
Yik7CiB9CiAKIH0KLQotCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oCShyZXZpc2lvbiAzMDA0MykJKGZyb20g
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6MzAwNDMp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyNpZm5kZWYgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VfaAorI2RlZmluZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9o
CisKKyNpbmNsdWRlICJDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgi
CisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworCisjaWYgUExBVEZPUk0oTUFDKQorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpZm5kZWYgX19PQkpDX18KK3R5cGVkZWYgc3RydWN0
IG9iamNfb2JqZWN0ICppZDsKK2NsYXNzIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Cisj
ZWxzZQorQGNsYXNzIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisjZW5kaWYKKyNlbmRp
ZgorCisjaWYgVVNFKENGTkVUV09SSykKK3R5cGVkZWYgc3RydWN0IF9DRlVSTEF1dGhDaGFsbGVu
Z2UqIENGVVJMQXV0aENoYWxsZW5nZVJlZjsKKyNlbmRpZgorCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgUmVzb3VyY2VIYW5kbGU7CisKK2NsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIHsKKworcHVibGljOgorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CisgICAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3Bh
Y2UsIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwgdW5zaWduZWQgcHJldmlv
dXNGYWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcik7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKik7CisjZWxpZiBVU0Uo
Q0ZORVRXT1JLKQorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5n
ZVJlZiwgUmVzb3VyY2VIYW5kbGUqIHNvdXJjZUhhbmRsZSk7CisjZW5kaWYKKworICAgIHVuc2ln
bmVkIHByZXZpb3VzRmFpbHVyZUNvdW50KCkgY29uc3Q7CisgICAgY29uc3QgQ3JlZGVudGlhbCYg
cHJvcG9zZWRDcmVkZW50aWFsKCkgY29uc3Q7CisgICAgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBw
cm90ZWN0aW9uU3BhY2UoKSBjb25zdDsKKyAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBmYWls
dXJlUmVzcG9uc2UoKSBjb25zdDsKKyAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNv
bnN0OworICAgIAorICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgdm9pZCBudWxsaWZ5KCk7
CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlkIHNlbmRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fc2VuZGVyLmdldCgpOyB9CisgICAgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbnNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFjQ2hhbGxlbmdl
LmdldCgpOyB9CisjZWxpZiBVU0UoQ0ZORVRXT1JLKQorICAgIFJlc291cmNlSGFuZGxlKiBzb3Vy
Y2VIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUhhbmRsZS5nZXQoKTsgfQorICAgIENG
VVJMQXV0aENoYWxsZW5nZVJlZiBjZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSBjb25zdCB7IHJldHVy
biBtX2NmQ2hhbGxlbmdlLmdldCgpOyB9CisjZW5kaWYKK3ByaXZhdGU6CisgICAgYm9vbCBtX2lz
TnVsbDsKKyAgICBQcm90ZWN0aW9uU3BhY2UgbV9wcm90ZWN0aW9uU3BhY2U7CisgICAgQ3JlZGVu
dGlhbCBtX3Byb3Bvc2VkQ3JlZGVudGlhbDsKKyAgICB1bnNpZ25lZCBtX3ByZXZpb3VzRmFpbHVy
ZUNvdW50OworICAgIFJlc291cmNlUmVzcG9uc2UgbV9mYWlsdXJlUmVzcG9uc2U7CisgICAgUmVz
b3VyY2VFcnJvciBtX2Vycm9yOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxp
ZD4gbV9zZW5kZXI7CisgICAgUmV0YWluUHRyPE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
Kj4gbV9tYWNDaGFsbGVuZ2U7CisjZWxpZiBVU0UoQ0ZORVRXT1JLKQorICAgIFJlZlB0cjxSZXNv
dXJjZUhhbmRsZT4gbV9zb3VyY2VIYW5kbGU7CisgICAgUmV0YWluUHRyPENGVVJMQXV0aENoYWxs
ZW5nZVJlZj4gbV9jZkNoYWxsZW5nZTsKKyNlbmRpZgorCit9OworCitib29sIG9wZXJhdG9yPT0o
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwg
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKK30KKyNlbmRpZgorCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmFzZS5oCShyZXZpc2lvbiAzMDA0MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNDYgKzIyLDIy
IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCi0jaWZuZGVmIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlX2gKLSNkZWZpbmUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAor
I2lmbmRlZiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2VfaAorI2RlZmluZSBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2VfaAogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUg
IlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLQotI2lm
IFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaWZuZGVmIF9fT0JK
Q19fCi10eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCAqaWQ7Ci1jbGFzcyBOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOwotI2Vsc2UKLUBjbGFzcyBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOwotI2VuZGlmCi0jZW5kaWYKLQotI2lmIFVTRShDRk5FVFdPUkspCi10eXBlZGVmIHN0cnVj
dCBfQ0ZVUkxBdXRoQ2hhbGxlbmdlKiBDRlVSTEF1dGhDaGFsbGVuZ2VSZWY7Ci0jZW5kaWYKLQot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlc291cmNlSGFuZGxlOwotCi1jbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSB7CitjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsK
IAorY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlIHsKIHB1YmxpYzoKLSAgICBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpOwotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9w
b3NlZENyZWRlbnRpYWwsIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpOwotI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICopOwotI2VsaWYgVVNFKENGTkVUV09SSykKLSAgICBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYsIFJlc291cmNlSGFuZGxlKiBzb3Vy
Y2VIYW5kbGUpOwotI2VuZGlmCisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKCk7Cisg
ICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJv
dGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2ln
bmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpOwogCiAgICAgdW5zaWduZWQgcHJldmlvdXNG
YWlsdXJlQ291bnQoKSBjb25zdDsKICAgICBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRl
bnRpYWwoKSBjb25zdDsKQEAgLTcxLDM0ICs0NywyNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9v
bCBpc051bGwoKSBjb25zdDsKICAgICB2b2lkIG51bGxpZnkoKTsKLSAgICAKLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgaWQgc2VuZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zZW5kZXIuZ2V0KCk7IH0K
LSAgICBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpuc1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCkgY29uc3QgeyByZXR1cm4gbV9tYWNDaGFsbGVuZ2UuZ2V0KCk7IH0KLSNlbGlmIFVT
RShDRk5FVFdPUkspCi0gICAgUmVzb3VyY2VIYW5kbGUqIHNvdXJjZUhhbmRsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc291cmNlSGFuZGxlLmdldCgpOyB9Ci0gICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVm
IGNmVVJMQXV0aENoYWxsZW5nZVJlZigpIGNvbnN0IHsgcmV0dXJuIG1fY2ZDaGFsbGVuZ2UuZ2V0
KCk7IH0KLSNlbmRpZgotcHJpdmF0ZToKKworICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBiKTsKKworcHJvdGVjdGVkOgorICAgIC8vIFRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBz
dWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBwbGF0Zm9ybSBzcGVj
aWZpYyBmaWVsZHMKKyAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikgeyByZXR1cm4gdHJ1ZTsgfQorCiAg
ICAgYm9vbCBtX2lzTnVsbDsKICAgICBQcm90ZWN0aW9uU3BhY2UgbV9wcm90ZWN0aW9uU3BhY2U7
CiAgICAgQ3JlZGVudGlhbCBtX3Byb3Bvc2VkQ3JlZGVudGlhbDsKICAgICB1bnNpZ25lZCBtX3By
ZXZpb3VzRmFpbHVyZUNvdW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9mYWlsdXJlUmVzcG9u
c2U7CiAgICAgUmVzb3VyY2VFcnJvciBtX2Vycm9yOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAg
IFJldGFpblB0cjxpZD4gbV9zZW5kZXI7Ci0gICAgUmV0YWluUHRyPE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKj4gbV9tYWNDaGFsbGVuZ2U7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAg
IFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbV9zb3VyY2VIYW5kbGU7Ci0gICAgUmV0YWluUHRyPENG
VVJMQXV0aENoYWxsZW5nZVJlZj4gbV9jZkNoYWxsZW5nZTsKLSNlbmRpZgotCiB9OwogCi1ib29s
IG9wZXJhdG9yPT0oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKK2lubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBiKSB7IHJldHVybiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2U6OmNvbXBhcmUoYSwgYik7IH0KK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKSB7
IHJldHVybiAhKGEgPT0gYik7IH0KKwogfQotI2VuZGlmCiAKKyNlbmRpZgpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yLmNwcAkocmV2aXNpb24gMzAwNDMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMjkgKzAsMCBAQAotLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQg
LSotCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgotCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUVycm9yLmgJKHJldmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNjggKzAsMCBAQAotLy8gLSotIG1v
ZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIFJlc291cmNlRXJyb3JfaAotI2RlZmluZSBSZXNvdXJjZUVycm9yX2gKLQotI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCi0KLSNpZiBQTEFURk9STShDRikKLSNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Ci0jZW5kaWYKLQotI2lmZGVmIF9fT0JKQ19fCi1AY2xhc3MgTlNFcnJvcjsKLSNl
bHNlCi1jbGFzcyBOU0Vycm9yOwotI2VuZGlmCi0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1
ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyZWFtLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi0gICAgY2xhc3MgUmVzb3VyY2VFcnJvciB7Ci0gICAgcHVibGljOgotICAgICAgICBS
ZXNvdXJjZUVycm9yKCkKLSAgICAgICAgICAgIDogbV9lcnJvckNvZGUoMCkKLSNpZiBQTEFURk9S
TShDRikKLSAgICAgICAgICAgICwgbV9kYXRhSXNVcFRvRGF0ZSh0cnVlKQotI2VuZGlmCi0gICAg
ICAgICAgICAsIG1faXNOdWxsKHRydWUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAg
IFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0
IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikK
LSAgICAgICAgICAgIDogbV9kb21haW4oZG9tYWluKQotICAgICAgICAgICAgLCBtX2Vycm9yQ29k
ZShlcnJvckNvZGUpCi0gICAgICAgICAgICAsIG1fZmFpbGluZ1VSTChmYWlsaW5nVVJMKQotICAg
ICAgICAgICAgLCBtX2xvY2FsaXplZERlc2NyaXB0aW9uKGxvY2FsaXplZERlc2NyaXB0aW9uKQot
I2lmIFBMQVRGT1JNKENGKQotICAgICAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCi0j
ZW5kaWYKLSAgICAgICAgICAgICwgbV9pc051bGwoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAg
fQotCi0jaWYgUExBVEZPUk0oQ0YpCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBSZXNvdXJj
ZUVycm9yKE5TRXJyb3IqIGVycm9yKQotI2Vsc2UKLSAgICAgICAgUmVzb3VyY2VFcnJvcihDRlN0
cmVhbUVycm9yIGVycm9yKTsKLSAgICAgICAgUmVzb3VyY2VFcnJvcihDRkVycm9yUmVmIGVycm9y
KQotI2VuZGlmCi0gICAgICAgICAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCi0gICAgICAg
ICAgICAsIG1fcGxhdGZvcm1FcnJvcihlcnJvcikKLSAgICAgICAgICAgICwgbV9pc051bGwoIWVy
cm9yKQotICAgICAgICB7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0jaWYgMAotICAgICAgICBzdGF0
aWMgY29uc3QgU3RyaW5nIENvY29hRXJyb3JEb21haW47Ci0gICAgICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcgUE9TSVhEb21haW47Ci0gICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgT1NTdGF0dXNE
b21haW47Ci0gICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgTWFjaERvbWFpbjsKLSAgICAgICAg
c3RhdGljIGNvbnN0IFN0cmluZyBXZWJLaXREb21haW47Ci0jZW5kaWYKLQotICAgICAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9Ci0KLSAgICAgICAgY29uc3QgU3Ry
aW5nJiBkb21haW4oKSBjb25zdCB7IHVucGFja1BsYXRmb3JtRXJyb3JJZk5lZWRlZCgpOyByZXR1
cm4gbV9kb21haW47IH0KLSAgICAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgdW5wYWNrUGxh
dGZvcm1FcnJvcklmTmVlZGVkKCk7IHJldHVybiBtX2Vycm9yQ29kZTsgfQotICAgICAgICBjb25z
dCBTdHJpbmcmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHVucGFja1BsYXRmb3JtRXJyb3JJZk5lZWRl
ZCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgbG9jYWxp
emVkRGVzY3JpcHRpb24oKSBjb25zdCB7IHVucGFja1BsYXRmb3JtRXJyb3JJZk5lZWRlZCgpOyBy
ZXR1cm4gbV9sb2NhbGl6ZWREZXNjcmlwdGlvbjsgfQotCi0jaWYgUExBVEZPUk0oQ0YpCi0jaWYg
UExBVEZPUk0oTUFDKQotICAgICAgICBvcGVyYXRvciBOU0Vycm9yKigpIGNvbnN0OwotI2Vsc2UK
LSAgICAgICAgb3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbnN0OwotICAgICAgICBvcGVyYXRvciBD
RlN0cmVhbUVycm9yKCkgY29uc3Q7Ci0jZW5kaWYKLSNlbmRpZgotCi0gICAgcHJpdmF0ZToKLSAg
ICAgICAgdm9pZCB1bnBhY2tQbGF0Zm9ybUVycm9ySWZOZWVkZWQoKSBjb25zdAotICAgICAgICB7
Ci0jaWYgUExBVEZPUk0oQ0YpCi0gICAgICAgICAgICBpZiAoIW1fZGF0YUlzVXBUb0RhdGUpCi0g
ICAgICAgICAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJjZUVycm9yKj4odGhpcyktPnVucGFja1Bs
YXRmb3JtRXJyb3IoKTsKLSNlbmRpZgotICAgICAgICB9Ci0KLSNpZiBQTEFURk9STShDRikKLSAg
ICAgICAgdm9pZCB1bnBhY2tQbGF0Zm9ybUVycm9yKCk7Ci0jZW5kaWYKLQotICAgICAgICBTdHJp
bmcgbV9kb21haW47Ci0gICAgICAgIGludCBtX2Vycm9yQ29kZTsKLSAgICAgICAgU3RyaW5nIG1f
ZmFpbGluZ1VSTDsKLSAgICAgICAgU3RyaW5nIG1fbG9jYWxpemVkRGVzY3JpcHRpb247Ci0gCi0j
aWYgUExBVEZPUk0oQ0YpCi0gICAgICAgIGJvb2wgbV9kYXRhSXNVcFRvRGF0ZTsKLSNlbmRpZgot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNFcnJvcj4gbV9w
bGF0Zm9ybUVycm9yOwotI2VsaWYgUExBVEZPUk0oQ0YpCi0gICAgICAgIG11dGFibGUgUmV0YWlu
UHRyPENGRXJyb3JSZWY+IG1fcGxhdGZvcm1FcnJvcjsKLSNlbmRpZgotICAgICAgICBib29sIG1f
aXNOdWxsOwotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZUVycm9y
JiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKQotewotICAgIGlmIChhLmlzTnVsbCgpICYmIGIu
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChhLmlzTnVsbCgpIHx8IGIu
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5kb21haW4oKSAhPSBi
LmRvbWFpbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuZXJyb3JDb2RlKCkg
IT0gYi5lcnJvckNvZGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmZhaWxp
bmdVUkwoKSAhPSBiLmZhaWxpbmdVUkwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChhLmxvY2FsaXplZERlc2NyaXB0aW9uKCkgIT0gYi5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ0YpCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIGlmICgoTlNFcnJvciAqKWEgIT0gKE5TRXJyb3IgKiliKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0jZWxzZQotICAgIGlmICgoQ0ZFcnJvclJlZilhICE9IChDRkVycm9yUmVmKWIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlc291cmNlRXJyb3JfaF8KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcAkocmV2aXNpb24gMzAwNDMp
CShmcm9tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yLmNwcDozMDA0MykK
KysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZz
ZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVzb3VyY2VFcnJvci5oIgorCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VFcnJvckJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAJKHJldmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMyArMjcsMzQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yLmgiCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBSZXNvdXJjZUVycm9yQmFzZTo6
bGF6eUluaXQoKSBjb25zdAoreworICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VFcnJvcio+KHN0YXRp
Y19jYXN0PGNvbnN0IFJlc291cmNlRXJyb3IqPih0aGlzKSktPnBsYXRmb3JtTGF6eUluaXQoKTsK
K30KKworYm9vbCBSZXNvdXJjZUVycm9yQmFzZTo6Y29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9y
JiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKQoreworICAgIGlmIChhLmlzTnVsbCgpICYmIGIu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGEuaXNOdWxsKCkgfHwg
Yi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEuZG9tYWluKCkg
IT0gYi5kb21haW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEuZXJyb3JD
b2RlKCkgIT0gYi5lcnJvckNvZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KGEuZmFpbGluZ1VSTCgpICE9IGIuZmFpbGluZ1VSTCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoYS5sb2NhbGl6ZWREZXNjcmlwdGlvbigpICE9IGIubG9jYWxpemVkRGVzY3Jp
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHBsYXRmb3JtQ29t
cGFyZShhLCBiKTsKK30KKworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlRXJyb3JCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlRXJyb3JCYXNlLmgJKHJldmlzaW9uIDMwMDQzKQkoZnJvbSBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VFcnJvci5oOjMwMDQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNjggQEAK
Ky8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBSZXNvdXJjZUVycm9yX2gKKyNkZWZpbmUgUmVzb3VyY2VFcnJvcl9oCisK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaWYgUExBVEZPUk0oQ0YpCisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorI2VuZGlmCisKKyNpZmRlZiBfX09CSkNfXworQGNsYXNzIE5T
RXJyb3I7CisjZWxzZQorY2xhc3MgTlNFcnJvcjsKKyNlbmRpZgorCisjaWYgVVNFKENGTkVUV09S
SykKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmVhbS5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFJlc291cmNlRXJyb3IgeworICAgIHB1YmxpYzoK
KyAgICAgICAgUmVzb3VyY2VFcnJvcigpCisgICAgICAgICAgICA6IG1fZXJyb3JDb2RlKDApCisj
aWYgUExBVEZPUk0oQ0YpCisgICAgICAgICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKKyNl
bmRpZgorICAgICAgICAgICAgLCBtX2lzTnVsbCh0cnVlKQorICAgICAgICB7CisgICAgICAgIH0K
KworICAgICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVz
Y3JpcHRpb24pCisgICAgICAgICAgICA6IG1fZG9tYWluKGRvbWFpbikKKyAgICAgICAgICAgICwg
bV9lcnJvckNvZGUoZXJyb3JDb2RlKQorICAgICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGlu
Z1VSTCkKKyAgICAgICAgICAgICwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbihsb2NhbGl6ZWREZXNj
cmlwdGlvbikKKyNpZiBQTEFURk9STShDRikKKyAgICAgICAgICAgICwgbV9kYXRhSXNVcFRvRGF0
ZSh0cnVlKQorI2VuZGlmCisgICAgICAgICAgICAsIG1faXNOdWxsKGZhbHNlKQorICAgICAgICB7
CisgICAgICAgIH0KKworI2lmIFBMQVRGT1JNKENGKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAg
ICAgUmVzb3VyY2VFcnJvcihOU0Vycm9yKiBlcnJvcikKKyNlbHNlCisgICAgICAgIFJlc291cmNl
RXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7CisgICAgICAgIFJlc291cmNlRXJyb3IoQ0ZFcnJv
clJlZiBlcnJvcikKKyNlbmRpZgorICAgICAgICAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNl
KQorICAgICAgICAgICAgLCBtX3BsYXRmb3JtRXJyb3IoZXJyb3IpCisgICAgICAgICAgICAsIG1f
aXNOdWxsKCFlcnJvcikKKyAgICAgICAgeworICAgICAgICB9CisjZW5kaWYKKworI2lmIDAKKyAg
ICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBDb2NvYUVycm9yRG9tYWluOworICAgICAgICBzdGF0
aWMgY29uc3QgU3RyaW5nIFBPU0lYRG9tYWluOworICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IE9TU3RhdHVzRG9tYWluOworICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIE1hY2hEb21haW47
CisgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgV2ViS2l0RG9tYWluOworI2VuZGlmCisKKyAg
ICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQorCisgICAgICAg
IGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyB1bnBhY2tQbGF0Zm9ybUVycm9ySWZOZWVk
ZWQoKTsgcmV0dXJuIG1fZG9tYWluOyB9CisgICAgICAgIGludCBlcnJvckNvZGUoKSBjb25zdCB7
IHVucGFja1BsYXRmb3JtRXJyb3JJZk5lZWRlZCgpOyByZXR1cm4gbV9lcnJvckNvZGU7IH0KKyAg
ICAgICAgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMKCkgY29uc3QgeyB1bnBhY2tQbGF0Zm9ybUVy
cm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQorICAgICAgICBjb25zdCBTdHJp
bmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKCkgY29uc3QgeyB1bnBhY2tQbGF0Zm9ybUVycm9ySWZO
ZWVkZWQoKTsgcmV0dXJuIG1fbG9jYWxpemVkRGVzY3JpcHRpb247IH0KKworI2lmIFBMQVRGT1JN
KENGKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgb3BlcmF0b3IgTlNFcnJvciooKSBjb25z
dDsKKyNlbHNlCisgICAgICAgIG9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdDsKKyAgICAgICAg
b3BlcmF0b3IgQ0ZTdHJlYW1FcnJvcigpIGNvbnN0OworI2VuZGlmCisjZW5kaWYKKworICAgIHBy
aXZhdGU6CisgICAgICAgIHZvaWQgdW5wYWNrUGxhdGZvcm1FcnJvcklmTmVlZGVkKCkgY29uc3QK
KyAgICAgICAgeworI2lmIFBMQVRGT1JNKENGKQorICAgICAgICAgICAgaWYgKCFtX2RhdGFJc1Vw
VG9EYXRlKQorICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VFcnJvcio+KHRoaXMp
LT51bnBhY2tQbGF0Zm9ybUVycm9yKCk7CisjZW5kaWYKKyAgICAgICAgfQorCisjaWYgUExBVEZP
Uk0oQ0YpCisgICAgICAgIHZvaWQgdW5wYWNrUGxhdGZvcm1FcnJvcigpOworI2VuZGlmCisKKyAg
ICAgICAgU3RyaW5nIG1fZG9tYWluOworICAgICAgICBpbnQgbV9lcnJvckNvZGU7CisgICAgICAg
IFN0cmluZyBtX2ZhaWxpbmdVUkw7CisgICAgICAgIFN0cmluZyBtX2xvY2FsaXplZERlc2NyaXB0
aW9uOworIAorI2lmIFBMQVRGT1JNKENGKQorICAgICAgICBib29sIG1fZGF0YUlzVXBUb0RhdGU7
CisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIG11dGFibGUgUmV0YWluUHRyPE5T
RXJyb3I+IG1fcGxhdGZvcm1FcnJvcjsKKyNlbGlmIFBMQVRGT1JNKENGKQorICAgICAgICBtdXRh
YmxlIFJldGFpblB0cjxDRkVycm9yUmVmPiBtX3BsYXRmb3JtRXJyb3I7CisjZW5kaWYKKyAgICAg
ICAgYm9vbCBtX2lzTnVsbDsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVz
b3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikKK3sKKyAgICBpZiAoYS5pc051
bGwoKSAmJiBiLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoYS5pc051
bGwoKSB8fCBiLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEuZG9t
YWluKCkgIT0gYi5kb21haW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhLmVy
cm9yQ29kZSgpICE9IGIuZXJyb3JDb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoYS5mYWlsaW5nVVJMKCkgIT0gYi5mYWlsaW5nVVJMKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoYS5sb2NhbGl6ZWREZXNjcmlwdGlvbigpICE9IGIubG9jYWxpemVkRGVzY3Jp
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIFBMQVRGT1JNKENGKQorI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBpZiAoKE5TRXJyb3IgKilhICE9IChOU0Vycm9yICopYikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICBpZiAoKENGRXJyb3JSZWYpYSAhPSAoQ0ZFcnJv
clJlZiliKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNlbmRpZgorICAgIHJldHVy
biB0cnVlOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlc291cmNlRXJyb3Im
IGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZXNvdXJjZUVycm9yX2hfCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAkocmV2aXNpb24g
MzAwNDMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQsMTQ1ICsyNCw2MCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAotI2lmbmRlZiBSZXNvdXJjZUVycm9yX2gKLSNkZWZpbmUgUmVzb3VyY2VFcnJvcl9oCisjaWZu
ZGVmIFJlc291cmNlRXJyb3JCYXNlX2gKKyNkZWZpbmUgUmVzb3VyY2VFcnJvckJhc2VfaAogCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAotI2lmIFBMQVRGT1JNKENGKQotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi0jaWZkZWYgX19PQkpDX18KLUBjbGFzcyBOU0Vy
cm9yOwotI2Vsc2UKLWNsYXNzIE5TRXJyb3I7Ci0jZW5kaWYKLQotI2lmIFVTRShDRk5FVFdPUksp
Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJlYW0uaD4KLSNlbmRpZgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBSZXNvdXJjZUVycm9yIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIFJlc291cmNlRXJyb3IoKQotICAgICAgICAgICAgOiBtX2Vycm9yQ29kZSgwKQotI2lm
IFBMQVRGT1JNKENGKQotICAgICAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCi0jZW5k
aWYKLSAgICAgICAgICAgICwgbV9pc051bGwodHJ1ZSkKLSAgICAgICAgewotICAgICAgICB9Ci0K
LSAgICAgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29k
ZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2Ny
aXB0aW9uKQotICAgICAgICAgICAgOiBtX2RvbWFpbihkb21haW4pCi0gICAgICAgICAgICAsIG1f
ZXJyb3JDb2RlKGVycm9yQ29kZSkKLSAgICAgICAgICAgICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdV
UkwpCi0gICAgICAgICAgICAsIG1fbG9jYWxpemVkRGVzY3JpcHRpb24obG9jYWxpemVkRGVzY3Jp
cHRpb24pCi0jaWYgUExBVEZPUk0oQ0YpCi0gICAgICAgICAgICAsIG1fZGF0YUlzVXBUb0RhdGUo
dHJ1ZSkKLSNlbmRpZgotICAgICAgICAgICAgLCBtX2lzTnVsbChmYWxzZSkKLSAgICAgICAgewot
ICAgICAgICB9Ci0KLSNpZiBQTEFURk9STShDRikKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAg
IFJlc291cmNlRXJyb3IoTlNFcnJvciogZXJyb3IpCi0jZWxzZQotICAgICAgICBSZXNvdXJjZUVy
cm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpOwotICAgICAgICBSZXNvdXJjZUVycm9yKENGRXJyb3JS
ZWYgZXJyb3IpCi0jZW5kaWYKLSAgICAgICAgICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkK
LSAgICAgICAgICAgICwgbV9wbGF0Zm9ybUVycm9yKGVycm9yKQotICAgICAgICAgICAgLCBtX2lz
TnVsbCghZXJyb3IpCi0gICAgICAgIHsKLSAgICAgICAgfQotI2VuZGlmCi0KLSNpZiAwCi0gICAg
ICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgQ29jb2FFcnJvckRvbWFpbjsKLSAgICAgICAgc3RhdGlj
IGNvbnN0IFN0cmluZyBQT1NJWERvbWFpbjsKLSAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBP
U1N0YXR1c0RvbWFpbjsKLSAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBNYWNoRG9tYWluOwot
ICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIFdlYktpdERvbWFpbjsKLSNlbmRpZgotCi0gICAg
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KLQotICAgICAgICBj
b25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgdW5wYWNrUGxhdGZvcm1FcnJvcklmTmVlZGVk
KCk7IHJldHVybiBtX2RvbWFpbjsgfQotICAgICAgICBpbnQgZXJyb3JDb2RlKCkgY29uc3QgeyB1
bnBhY2tQbGF0Zm9ybUVycm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fZXJyb3JDb2RlOyB9Ci0gICAg
ICAgIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgdW5wYWNrUGxhdGZvcm1FcnJv
cklmTmVlZGVkKCk7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KLSAgICAgICAgY29uc3QgU3RyaW5n
JiBsb2NhbGl6ZWREZXNjcmlwdGlvbigpIGNvbnN0IHsgdW5wYWNrUGxhdGZvcm1FcnJvcklmTmVl
ZGVkKCk7IHJldHVybiBtX2xvY2FsaXplZERlc2NyaXB0aW9uOyB9Ci0KLSNpZiBQTEFURk9STShD
RikKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIG9wZXJhdG9yIE5TRXJyb3IqKCkgY29uc3Q7
Ci0jZWxzZQotICAgICAgICBvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3Q7Ci0gICAgICAgIG9w
ZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBjb25zdDsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICBwcml2
YXRlOgotICAgICAgICB2b2lkIHVucGFja1BsYXRmb3JtRXJyb3JJZk5lZWRlZCgpIGNvbnN0Ci0g
ICAgICAgIHsKLSNpZiBQTEFURk9STShDRikKLSAgICAgICAgICAgIGlmICghbV9kYXRhSXNVcFRv
RGF0ZSkKLSAgICAgICAgICAgICAgICBjb25zdF9jYXN0PFJlc291cmNlRXJyb3IqPih0aGlzKS0+
dW5wYWNrUGxhdGZvcm1FcnJvcigpOwotI2VuZGlmCi0gICAgICAgIH0KLQotI2lmIFBMQVRGT1JN
KENGKQotICAgICAgICB2b2lkIHVucGFja1BsYXRmb3JtRXJyb3IoKTsKLSNlbmRpZgotCi0gICAg
ICAgIFN0cmluZyBtX2RvbWFpbjsKLSAgICAgICAgaW50IG1fZXJyb3JDb2RlOwotICAgICAgICBT
dHJpbmcgbV9mYWlsaW5nVVJMOwotICAgICAgICBTdHJpbmcgbV9sb2NhbGl6ZWREZXNjcmlwdGlv
bjsKLSAKLSNpZiBQTEFURk9STShDRikKLSAgICAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwot
I2VuZGlmCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBtdXRhYmxlIFJldGFpblB0cjxOU0Vy
cm9yPiBtX3BsYXRmb3JtRXJyb3I7Ci0jZWxpZiBQTEFURk9STShDRikKLSAgICAgICAgbXV0YWJs
ZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOwotI2VuZGlmCi0gICAgICAg
IGJvb2wgbV9pc051bGw7Ci19OworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIAotaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBi
KQotewotICAgIGlmIChhLmlzTnVsbCgpICYmIGIuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChhLmlzTnVsbCgpIHx8IGIuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoYS5kb21haW4oKSAhPSBiLmRvbWFpbigpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKGEuZXJyb3JDb2RlKCkgIT0gYi5lcnJvckNvZGUoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmZhaWxpbmdVUkwoKSAhPSBiLmZhaWxpbmdVUkwoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmxvY2FsaXplZERlc2NyaXB0aW9uKCkg
IT0gYi5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYg
UExBVEZPUk0oQ0YpCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICgoTlNFcnJvciAqKWEgIT0g
KE5TRXJyb3IgKiliKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGlmICgoQ0ZF
cnJvclJlZilhICE9IChDRkVycm9yUmVmKWIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRp
ZgotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7Ci19CitjbGFzcyBSZXNvdXJjZUVycm9yQmFzZSB7
CitwdWJsaWM6CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQor
CisgICAgY29uc3QgU3RyaW5nJiBkb21haW4oKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBt
X2RvbWFpbjsgfQorICAgIGludCBlcnJvckNvZGUoKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVy
biBtX2Vycm9yQ29kZTsgfQorICAgIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCgpIGNvbnN0IHsg
bGF6eUluaXQoKTsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQorICAgIGNvbnN0IFN0cmluZyYgbG9j
YWxpemVkRGVzY3JpcHRpb24oKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2xvY2FsaXpl
ZERlc2NyaXB0aW9uOyB9CisKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IFJlc291cmNl
RXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpOworCitwcm90ZWN0ZWQ6CisgICAgUmVz
b3VyY2VFcnJvckJhc2UoKQorICAgICAgICA6IG1fZXJyb3JDb2RlKDApCisgICAgICAgICwgbV9p
c051bGwodHJ1ZSkKKyAgICB7CisgICAgfQorCisgICAgUmVzb3VyY2VFcnJvckJhc2UoY29uc3Qg
U3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwg
Y29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgOiBtX2RvbWFpbihk
b21haW4pCisgICAgICAgICwgbV9lcnJvckNvZGUoZXJyb3JDb2RlKQorICAgICAgICAsIG1fZmFp
bGluZ1VSTChmYWlsaW5nVVJMKQorICAgICAgICAsIG1fbG9jYWxpemVkRGVzY3JpcHRpb24obG9j
YWxpemVkRGVzY3JpcHRpb24pCisgICAgICAgICwgbV9pc051bGwoZmFsc2UpCisgICAgeworICAg
IH0KKworICAgIHZvaWQgbGF6eUluaXQoKSBjb25zdDsKKworICAgIC8vIFRoZSBSZXNvdXJjZUVy
cm9yIHN1YmNsYXNzIG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBsYXppbHkgaW5pdGlhbGl6
ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWVsZHMKKyAgICB2b2lkIHBsYXRmb3JtTGF6eUluaXQoKSB7
fQorCisgICAgLy8gVGhlIFJlc291cmNlRXJyb3Igc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMg
bWV0aG9kIHRvIGNvbXBhcmUgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCisgICAgc3RhdGljIGJv
b2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGIpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFN0cmluZyBtX2RvbWFpbjsKKyAgICBp
bnQgbV9lcnJvckNvZGU7CisgICAgU3RyaW5nIG1fZmFpbGluZ1VSTDsKKyAgICBTdHJpbmcgbV9s
b2NhbGl6ZWREZXNjcmlwdGlvbjsKKyAgICBib29sIG1faXNOdWxsOworfTsKIAoraW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9y
JiBiKSB7IHJldHVybiBSZXNvdXJjZUVycm9yQmFzZTo6Y29tcGFyZShhLCBiKTsgfQogaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gUmVzb3VyY2VFcnJvcl9oXworI2VuZGlmIC8vIFJlc291cmNlRXJyb3JCYXNl
X2hfCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAJKHJldmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTQgKzMwLDkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFzUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlc3BvbnNlKj4odGhpcyk7Ci19
Ci0KIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzSFRUUCgpIGNvbnN0CiB7Ci0gICAgdXBk
YXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7CiAKICAgICBTdHJpbmcgcHJv
dG9jb2wgPSBtX3VybC5wcm90b2NvbCgpOwogCkBAIC00NiwxNCArNDEsMTQgQEAgYm9vbCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aXNIVFRQKCkgY29ucwogCiBjb25zdCBLVVJMJiBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6dXJsKCkgY29uc3QKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7
CisgICAgbGF6eUluaXQoKTsKICAgICAKICAgICByZXR1cm4gbV91cmw7IAogfQogCiB2b2lkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpzZXRVcmwoY29uc3QgS1VSTCYgdXJsKQogewotICAgIHVwZGF0
ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogICAgIG1faXNOdWxsID0gZmFs
c2U7CiAgICAgCiAgICAgbV91cmwgPSB1cmw7IApAQCAtNjEsMTQgKzU2LDE0IEBAIHZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNldFVybChjb25zdCAKIAogY29uc3QgU3RyaW5nJiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6bWltZVR5cGUoKSBjb25zdAogewotICAgIHVwZGF0ZVJlc291cmNlUmVz
cG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgcmV0dXJuIG1fbWltZVR5cGU7IAogfQog
CiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgp
OwogICAgIG1faXNOdWxsID0gZmFsc2U7CiAgICAgCiAgICAgbV9taW1lVHlwZSA9IG1pbWVUeXBl
OyAKQEAgLTc2LDE0ICs3MSwxNCBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRNaW1l
VHlwZShjCiAKIGxvbmcgbG9uZyBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKCkgY29uc3QgCiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxh
enlJbml0KCk7CiAKICAgICByZXR1cm4gbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7CiB9CiAKIHZv
aWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEV4cGVjdGVkQ29udGVudExlbmd0aChsb25nIGxv
bmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2Uo
KTsKKyAgICBsYXp5SW5pdCgpOwogICAgIG1faXNOdWxsID0gZmFsc2U7CiAgICAgCiAgICAgbV9l
eHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5ndGg7IApAQCAtOTEsMTQg
Kzg2LDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEV4cGVjdGVkQ28KIAogY29u
c3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0
CiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7CiAKICAg
ICByZXR1cm4gbV90ZXh0RW5jb2RpbmdOYW1lOwogfQogCiB2b2lkIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lKQogewot
ICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogICAgIG1faXNO
dWxsID0gZmFsc2U7CiAgICAgCiAgICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gZW5jb2RpbmdOYW1l
OyAKQEAgLTEwNywxNCArMTAyLDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFRl
eHRFbmNvZGkKIC8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRoaXMgb24gdGhlIGZseQogY29uc3Qg
U3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAog
ewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAg
cmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKIHsK
LSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbGF6eUluaXQoKTsKICAgICBtX2lz
TnVsbCA9IGZhbHNlOwogICAgIAogICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRO
YW1lOyAKQEAgLTEyMiw1NiArMTE3LDU2IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNl
dFN1Z2dlc3RlZEYKIAogaW50IFJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwU3RhdHVzQ29kZSgp
IGNvbnN0CiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7
CiAKICAgICByZXR1cm4gbV9odHRwU3RhdHVzQ29kZTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6c2V0SFRUUFN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiB7Ci0gICAgdXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7CiAKICAgICBtX2h0dHBTdGF0dXND
b2RlID0gc3RhdHVzQ29kZTsKIH0KIAogY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6aHR0cFN0YXR1c1RleHQoKSBjb25zdCAKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNl
KCk7CisgICAgbGF6eUluaXQoKTsKIAogICAgIHJldHVybiBtX2h0dHBTdGF0dXNUZXh0OyAKIH0K
IAogdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0SFRUUFN0YXR1c1RleHQoY29uc3QgU3Ry
aW5nJiBzdGF0dXNUZXh0KSAKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAg
bGF6eUluaXQoKTsKIAogICAgIG1faHR0cFN0YXR1c1RleHQgPSBzdGF0dXNUZXh0OyAKIH0KIAog
U3RyaW5nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwSGVhZGVyRmllbGQoY29uc3QgU3RyaW5n
JiBuYW1lKSBjb25zdAogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5
SW5pdCgpOwogCiAgICAgcmV0dXJuIG1faHR0cEhlYWRlckZpZWxkcy5nZXQobmFtZSk7IAogfQog
CiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHVwZGF0ZVJlc291cmNlUmVz
cG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChu
YW1lLCB2YWx1ZSk7CiB9CiAKIGNvbnN0IEhUVFBIZWFkZXJNYXAmIFJlc291cmNlUmVzcG9uc2VC
YXNlOjpodHRwSGVhZGVyRmllbGRzKCkgY29uc3QKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3Bv
bnNlKCk7CisgICAgbGF6eUluaXQoKTsKIAogICAgIHJldHVybiBtX2h0dHBIZWFkZXJGaWVsZHM7
IAogfQogCiBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnQoKSBjb25zdAog
ewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAg
U3RyaW5nIHZhbHVlID0gbV9odHRwSGVhZGVyRmllbGRzLmdldCgiQ29udGVudC1EaXNwb3NpdGlv
biIpOwogICAgIGludCBsb2MgPSB2YWx1ZS5maW5kKCc7Jyk7CkBAIC0xODMsNDMgKzE3OCwzOCBA
QCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0F0dGFjaG1lbnQoCiAKIHZvaWQgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OnNldEV4cGlyYXRpb25EYXRlKHRpbWVfdCBleHBpcmF0aW9uRGF0ZSkK
IHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbGF6eUluaXQoKTsKIAogICAg
IG1fZXhwaXJhdGlvbkRhdGUgPSBleHBpcmF0aW9uRGF0ZTsKIH0KIAogdGltZV90IFJlc291cmNl
UmVzcG9uc2VCYXNlOjpleHBpcmF0aW9uRGF0ZSgpIGNvbnN0CiB7Ci0gICAgdXBkYXRlUmVzb3Vy
Y2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7CiAKICAgICByZXR1cm4gbV9leHBpcmF0aW9u
RGF0ZTsgCiB9CiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldExhc3RNb2RpZmllZERh
dGUodGltZV90IGxhc3RNb2RpZmllZERhdGUpIAogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9u
c2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgbV9sYXN0TW9kaWZpZWREYXRlID0gbGFzdE1v
ZGlmaWVkRGF0ZTsKIH0KIAogdGltZV90IFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZp
ZWREYXRlKCkgY29uc3QKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbGF6
eUluaXQoKTsKIAogICAgIHJldHVybiBtX2xhc3RNb2RpZmllZERhdGU7CiB9CiAKLXZvaWQgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKSBjb25zdAordm9pZCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGF6eUluaXQoKSBjb25zdAogewotICAgIGlmIChtX2lzVXBU
b0RhdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXNwb25z
ZSY+KGFzUmVzb3VyY2VSZXNwb25zZSgpKS5kb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKLQot
ICAgIG1faXNVcFRvRGF0ZSA9IHRydWU7CisgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlc3BvbnNl
Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpKS0+cGxhdGZvcm1M
YXp5SW5pdCgpOwogfQogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
YSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikKK2Jvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6
OmNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgYikKIHsKICAgICBpZiAoYS5pc051bGwoKSAhPSBiLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7ICAKQEAgLTI0MSwxMSArMjMxLDcgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGEuZXhwaXJh
dGlvbkRhdGUoKSAhPSBiLmV4cGlyYXRpb25EYXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGEubnNVUkxSZXNwb25zZSgpICE9IGIubnNVUkxS
ZXNwb25zZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICByZXR1cm4gdHJ1
ZTsKLSB9CisgICAgcmV0dXJuIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShhLCBi
KTsKK30KIAogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgJKHJldmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDIxICs3Nywx
NiBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgdm9pZCBzZXRMYXN0TW9kaWZp
ZWREYXRlKHRpbWVfdCk7CiAgICAgdGltZV90IGxhc3RNb2RpZmllZERhdGUoKSBjb25zdDsKIAot
ICAgIGlubGluZSBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhc1Jlc291cmNlUmVzcG9uc2UoKSBj
b25zdDsKKyAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpOwogCi0gcHJvdGVjdGVkOgotICAgIC8vIFVzZWQg
d2hlbiByZXNwb25zZSBpcyBpbml0aWFsaXplZCBmcm9tIGEgcGxhdGZvcm0gcmVwcmVzZW50YXRp
b24KLSAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZShib29sIGlzTnVsbCkKLSAgICAgICAgOiBtX2lz
VXBUb0RhdGUoZmFsc2UpCi0gICAgICAgICwgbV9pc051bGwoaXNOdWxsKQotICAgIHsKLSAgICB9
CisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYXNSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7
CiAKKyBwcm90ZWN0ZWQ6CiAgICAgUmVzb3VyY2VSZXNwb25zZUJhc2UoKSAgCiAgICAgICAgIDog
bV9leHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKICAgICAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDAp
CiAgICAgICAgICwgbV9leHBpcmF0aW9uRGF0ZSgwKQotICAgICAgICAsIG1faXNVcFRvRGF0ZSh0
cnVlKQorICAgICAgICAsIG1fbGFzdE1vZGlmaWVkRGF0ZSgwKQogICAgICAgICAsIG1faXNOdWxs
KHRydWUpCiAgICAgewogICAgIH0KQEAgLTEwNCwyOSArOTksMzQgQEAgY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZUJhc2UgewogICAgICAgICAsIG1fc3VnZ2VzdGVkRmlsZW5hbWUoZmlsZW5hbWUpCiAg
ICAgICAgICwgbV9odHRwU3RhdHVzQ29kZSgwKQogICAgICAgICAsIG1fZXhwaXJhdGlvbkRhdGUo
MCkKLSAgICAgICAgLCBtX2lzVXBUb0RhdGUodHJ1ZSkKKyAgICAgICAgLCBtX2xhc3RNb2RpZmll
ZERhdGUoMCkKICAgICAgICAgLCBtX2lzTnVsbChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAg
dm9pZCB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7CisgICAgdm9pZCBsYXp5SW5pdCgp
IGNvbnN0OworCisgICAgLy8gVGhlIFJlc291cmNlUmVzcG9uc2Ugc3ViY2xhc3MgbWF5ICJzaGFk
b3ciIHRoaXMgbWV0aG9kIHRvIGxhemlseSBpbml0aWFsaXplIHBsYXRmb3JtIHNwZWNpZmljIGZp
ZWxkcworICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdCgpIHt9CisKKyAgICAvLyBUaGUgUmVzb3Vy
Y2VSZXNwb25zZSBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBw
bGF0Zm9ybSBzcGVjaWZpYyBmaWVsZHMKKyAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgS1VSTCBtX3VybDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7CiAgICAgU3RyaW5nIG1fdGV4
dEVuY29kaW5nTmFtZTsKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBtdXRh
YmxlIGludCBtX2h0dHBTdGF0dXNDb2RlOworICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogICAg
IFN0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVy
RmllbGRzOwogICAgIHRpbWVfdCBtX2V4cGlyYXRpb25EYXRlOwogICAgIHRpbWVfdCBtX2xhc3RN
b2RpZmllZERhdGU7Ci0gICAgbXV0YWJsZSBib29sIG1faXNVcFRvRGF0ZTsKICAgICBib29sIG1f
aXNOdWxsOwogCiB9OwogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
YSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYik7CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpIHsgcmV0
dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9CiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0Yu
Y3BwCShyZXZpc2lvbiAzMDA0MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRo
ZW50aWNhdGlvbkNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTggKzM3LDQyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZkNoYWxsZW5nZSwgUmVzb3VyY2VI
YW5kbGUqIHNvdXJjZUhhbmRsZSkKLSAgICA6IG1faXNOdWxsKGZhbHNlKQotICAgICwgbV9wcm90
ZWN0aW9uU3BhY2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2ZD
aGFsbGVuZ2UpKSkKLSAgICAsIG1fcHJvcG9zZWRDcmVkZW50aWFsKGNvcmUoQ0ZVUkxBdXRoQ2hh
bGxlbmdlR2V0UHJvcG9zZWRDcmVkZW50aWFsKGNmQ2hhbGxlbmdlKSkpCi0gICAgLCBtX3ByZXZp
b3VzRmFpbHVyZUNvdW50KENGVVJMQXV0aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50
KGNmQ2hhbGxlbmdlKSkKLSAgICAsIG1fZmFpbHVyZVJlc3BvbnNlKChDRlVSTFJlc3BvbnNlUmVm
KUNGVVJMQXV0aENoYWxsZW5nZUdldEZhaWx1cmVSZXNwb25zZShjZkNoYWxsZW5nZSkpCi0gICAg
LCBtX2Vycm9yKENGVVJMQXV0aENoYWxsZW5nZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkKK0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0
aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCisgICAgOiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UocHJvdGVj
dGlvblNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Bvc2VkQ3Jl
ZGVudGlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0ZhaWx1
cmVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcikKK3sKK30KKworQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5n
ZVJlZiBjZkNoYWxsZW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZXNvdXJjZUhhbmRsZSogc291cmNlSGFuZGxlKQorICAgIDogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlKGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNw
YWNlKGNmQ2hhbGxlbmdlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29y
ZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQ
cmV2aW91c0ZhaWx1cmVDb3VudChjZkNoYWxsZW5nZSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKENGVVJMUmVzcG9uc2VSZWYpQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVy
ZVJlc3BvbnNlKGNmQ2hhbGxlbmdlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRFcnJvcihjZkNoYWxsZW5nZSkpCiAgICAgLCBtX3NvdXJj
ZUhhbmRsZShzb3VyY2VIYW5kbGUpCiAgICAgLCBtX2NmQ2hhbGxlbmdlKGNmQ2hhbGxlbmdlKQog
ewogfQogCitib29sIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwbGF0Zm9ybUNvbXBhcmUoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBiKQoreworICAgIGlmIChhLnNvdXJjZUhhbmRsZSgpICE9IGIuc291cmNlSGFuZGxlKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChhLmNmVVJMQXV0aENoYWxsZW5nZVJl
ZigpICE9IGIuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKIENGVVJMQXV0aENoYWxsZW5nZVJlZiBj
cmVhdGVDRihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkKIHsg
IAogICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSA9IGNyZWF0ZUNG
KGNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworI2lmbmRlZiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCisjZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
X2gKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgorI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit0eXBlZGVmIHN0
cnVjdCBfQ0ZVUkxBdXRoQ2hhbGxlbmdlKiBDRlVSTEF1dGhDaGFsbGVuZ2VSZWY7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VIYW5kbGU7CisKK2NsYXNzIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSB7Citw
dWJsaWM6CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7fQorICAgIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25z
dCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVy
ZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpOworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxs
ZW5nZVJlZiwgUmVzb3VyY2VIYW5kbGUqIHNvdXJjZUhhbmRsZSk7CisKKyAgICBSZXNvdXJjZUhh
bmRsZSogc291cmNlSGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VIYW5kbGUuZ2V0KCk7
IH0KKyAgICBDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkgY29u
c3QgeyByZXR1cm4gbV9jZkNoYWxsZW5nZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U7CisgICAgc3RhdGljIGJvb2wgcGxh
dGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYik7CisKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG1f
c291cmNlSGFuZGxlOworICAgIFJldGFpblB0cjxDRlVSTEF1dGhDaGFsbGVuZ2VSZWY+IG1fY2ZD
aGFsbGVuZ2U7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBA
QAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIFJlc291cmNlRXJyb3JfaAorI2RlZmluZSBSZXNvdXJjZUVycm9yX2gK
KworI2luY2x1ZGUgIlJlc291cmNlRXJyb3JCYXNlLmgiCisKKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJlYW0uaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJjZUVycm9yIDogcHVibGljIFJlc291cmNlRXJyb3JC
YXNlIHsKK3B1YmxpYzoKKyAgICBSZXNvdXJjZUVycm9yKCkKKyAgICAgICAgOiBtX2RhdGFJc1Vw
VG9EYXRlKHRydWUpCisgICAgeworICAgIH0KKworICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3Ry
aW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29u
c3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgOiBSZXNvdXJjZUVycm9y
QmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24p
CisgICAgICAgICwgbV9kYXRhSXNVcFRvRGF0ZSh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICBS
ZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpOworCisgICAgUmVzb3VyY2VFcnJvcihD
RkVycm9yUmVmIGVycm9yKQorICAgICAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCisgICAg
ICAgICwgbV9wbGF0Zm9ybUVycm9yKGVycm9yKQorICAgIHsKKyAgICAgICAgbV9pc051bGwgPSAh
ZXJyb3I7CisgICAgfQorCisgICAgb3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbnN0OworICAgIG9w
ZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgUmVzb3VyY2VFcnJvckJhc2U7CisKKyAgICB2b2lkIHBsYXRmb3JtTGF6eUluaXQoKTsKKyAg
ICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29u
c3QgUmVzb3VyY2VFcnJvciYgYik7CisKKyAgICBib29sIG1fZGF0YUlzVXBUb0RhdGU7CisgICAg
bXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVzb3VyY2VFcnJvcl9oXwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAJKHJl
dmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJy
b3JDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMSBAQCBjb25zdCBDRlN0cmlu
Z1JlZiBmYWlsaW5nVVJMS2V5ID0gQ0ZTVFIoCiAKIC8vIEZJWE1FOiBPbmNlIDxyZGFyOi8vcHJv
YmxlbS81MDUwODQxPiBpcyBmaXhlZCB3ZSBjYW4gcmVtb3ZlIHRoaXMgY29uc3RydWN0b3IuCiBS
ZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpCi0gICAgOiBt
X2Vycm9yQ29kZShlcnJvci5lcnJvcikKLSAgICAsIG1faXNOdWxsKGZhbHNlKQotICAgICwgbV9k
YXRhSXNVcFRvRGF0ZSh0cnVlKQorICAgIDogbV9kYXRhSXNVcFRvRGF0ZSh0cnVlKQogeworICAg
IG1faXNOdWxsID0gZmFsc2U7CisgICAgbV9lcnJvckNvZGUgPSBlcnJvci5lcnJvcjsKKwogICAg
IHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluQ3Vz
dG9tOgogICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOwpAQCAtNjIsOCAr
NjMsMTEgQEAgUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycgogICAgIH0K
IH0KIAotdm9pZCBSZXNvdXJjZUVycm9yOjp1bnBhY2tQbGF0Zm9ybUVycm9yKCkKK3ZvaWQgUmVz
b3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiB7CisgICAgaWYgKG1fZGF0YUlzVXBUb0Rh
dGUpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICghbV9wbGF0Zm9ybUVycm9yKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTEwMiw2ICsxMDYsMTEgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjp1bnBh
Y2tQbGF0Zm9ybUVycm9yKAogICAgIG1fZGF0YUlzVXBUb0RhdGUgPSB0cnVlOwogfQogCitib29s
IFJlc291cmNlRXJyb3I6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBiKQoreworICAgIHJldHVybiAoQ0ZFcnJvclJlZilhID09IChD
RkVycm9yUmVmKWI7Cit9CisKIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBj
b25zdAogewogICAgIGlmIChtX2lzTnVsbCkgewpAQCAtMTMzLDcgKzE0Miw3IEBAIFJlc291cmNl
RXJyb3I6Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb24KIAogUmVzb3VyY2VFcnJvcjo6b3BlcmF0
b3IgQ0ZTdHJlYW1FcnJvcigpIGNvbnN0CiB7Ci0gICAgdW5wYWNrUGxhdGZvcm1FcnJvcklmTmVl
ZGVkKCk7CisgICAgbGF6eUluaXQoKTsKIAogICAgIENGU3RyZWFtRXJyb3IgcmVzdWx0OwogICAg
IHJlc3VsdC5lcnJvciA9IG1fZXJyb3JDb2RlOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAzMDA0MykKKysrIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDEzICszNiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKIHB1YmxpYzoKICAgICBSZXNv
dXJjZVJlc3BvbnNlKCkKLSAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSgpCisgICAgICAg
IDogbV9pc1VwVG9EYXRlKHRydWUpCiAgICAgewogICAgIH0KIAogICAgIFJlc291cmNlUmVzcG9u
c2UoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQotICAgICAgICA6IFJlc291cmNlUmVzcG9u
c2VCYXNlKCFjZlJlc3BvbnNlKQotICAgICAgICAsIG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKSB7
IH0KKyAgICAgICAgOiBtX2NmUmVzcG9uc2UoY2ZSZXNwb25zZSkKKyAgICAgICAgLCBtX2lzVXBU
b0RhdGUoZmFsc2UpCisgICAgeworICAgICAgICBtX2lzTnVsbCA9ICFjZlJlc3BvbnNlOworICAg
IH0KIAogICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJl
c3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFt
ZSwgZmlsZW5hbWUpCkBAIC01NCwxMCArNTcsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7CiAKLSAgICB2b2lkIGRvVXBkYXRlUmVz
b3VyY2VSZXNwb25zZSgpOworICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdCgpOworICAgIHN0YXRp
YyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBiKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiBt
X2NmUmVzcG9uc2U7Ci0KKyAgICBib29sIG1faXNVcFRvRGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJl
c3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCShyZXZpc2lvbiAzMDA0MykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MiwxMCArNjIsMTYgQEAgc3RhdGljIHRpbWVfdCB0b1RpbWVUKENGQWJzb2x1dGVU
aW1lIHRpbQogICAgIHJldHVybiBtaW4obWF4KG1pblRpbWVBc0RvdWJsZSwgdGltZSArIGtDRkFi
c29sdXRlVGltZUludGVydmFsU2luY2UxOTcwKSwgbWF4VGltZUFzRG91YmxlKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZVJlc3BvbnNlOjpkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKQordm9pZCBSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KCkKIHsKLSAgICBpZiAoIW1fY2ZSZXNwb25z
ZS5nZXQoKSkKKyAgICBpZiAobV9pc1VwVG9EYXRlKQogICAgICAgICByZXR1cm47CisgICAgbV9p
c1VwVG9EYXRlID0gdHJ1ZTsKKworICAgIGlmIChtX2lzTnVsbCkgeworICAgICAgICBBU1NFUlQo
IW1fY2ZSZXNwb25zZS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBG
SVhNRTogV2UgbWF5IG5lZWQgdG8gZG8gTUlNRSB0eXBlIHNuaWZmaW5nIGhlcmUgKHVubGVzcyB0
aGF0IGlzIGRvbmUgaW4gQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKS4KIApJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworI2lmbmRlZiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCisjZGVmaW5lIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlX2gKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSB7CitwdWJsaWM6CisgICAg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQorICAgIHsKKyAgICB9CisKKyAgICBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29u
c3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1
cmVDb3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQorICAgICAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShwcm90
ZWN0aW9uU3BhY2UsIHByb3Bvc2VkQ3JlZGVudGlhbCwgcHJldmlvdXNGYWlsdXJlQ291bnQsIHJl
c3BvbnNlLCBlcnJvcikKKyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zm
c2V0OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZUVycm9yX2gK
KyNkZWZpbmUgUmVzb3VyY2VFcnJvcl9oCisKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yQmFzZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMg
UmVzb3VyY2VFcnJvckJhc2UKK3sKK3B1YmxpYzoKKyAgICBSZXNvdXJjZUVycm9yKCkKKyAgICB7
CisgICAgfQorCisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVy
cm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXpl
ZERlc2NyaXB0aW9uKQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JD
b2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICB7CisgICAgfQorfTsK
KworfQorCisjZW5kaWYgLy8gUmVzb3VyY2VFcnJvcl9oXwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAkocmV2aXNpb24gMzAwNDMp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZSA6IHB1YmxpYyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiBwdWJsaWM6
CiAgICAgUmVzb3VyY2VSZXNwb25zZSgpCi0gICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2Uo
ZmFsc2UpLAotICAgICAgICAgIG1fcmVzcG9uc2VGaXJlZChmYWxzZSkKKyAgICAgICAgOiBtX3Jl
c3BvbnNlRmlyZWQoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtNDksMTQgKzQ4LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgcmVzcG9uc2VGaXJlZCgpIHsgcmV0dXJuIG1fcmVzcG9uc2VGaXJlZDsg
fQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZTsKLQot
ICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCkKLSAgICB7Ci0gICAgfQotCiAgICAg
Ym9vbCBtX3Jlc3BvbnNlRmlyZWQ7Ci0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKyNpZm5kZWYgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAorI2RlZmluZSBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCisKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUJhc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpZm5kZWYgX19PQkpD
X18KK3R5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICppZDsKK2NsYXNzIE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7CisjZWxzZQorQGNsYXNzIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSA6IHB1YmxpYyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UgeworcHVibGlj
OgorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkge30KKyAgICBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgQ3Jl
ZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3Vu
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKTsKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICopOworCisgICAgaWQgc2VuZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zZW5kZXIu
Z2V0KCk7IH0KKyAgICBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpuc1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKCkgY29uc3QgeyByZXR1cm4gbV9tYWNDaGFsbGVuZ2UuZ2V0KCk7IH0K
KworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
OworICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIpOworCisgICAgUmV0
YWluUHRyPGlkPiBtX3NlbmRlcjsKKyAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqPiBtX21hY0NoYWxsZW5nZTsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0JKHJl
dmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNh
dGlvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsMTggKzM3LDQwIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIAorQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwm
IHByb3Bvc2VkQ3JlZGVudGlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKKyAgICA6IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQmFzZShwcm90ZWN0aW9uU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvcG9zZWRDcmVkZW50aWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9y
KQoreworfQorCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjQ2hhbGxlbmdlKQotICAgIDogbV9p
c051bGwoZmFsc2UpCi0gICAgLCBtX3Byb3RlY3Rpb25TcGFjZShjb3JlKFttYWNDaGFsbGVuZ2Ug
cHJvdGVjdGlvblNwYWNlXSkpCi0gICAgLCBtX3Byb3Bvc2VkQ3JlZGVudGlhbChjb3JlKFttYWND
aGFsbGVuZ2UgcHJvcG9zZWRDcmVkZW50aWFsXSkpCi0gICAgLCBtX3ByZXZpb3VzRmFpbHVyZUNv
dW50KFttYWNDaGFsbGVuZ2UgcHJldmlvdXNGYWlsdXJlQ291bnRdKQotICAgICwgbV9mYWlsdXJl
UmVzcG9uc2UoW21hY0NoYWxsZW5nZSBmYWlsdXJlUmVzcG9uc2VdKQotICAgICwgbV9lcnJvcihb
bWFjQ2hhbGxlbmdlIGVycm9yXSkKKyAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShj
b3JlKFttYWNDaGFsbGVuZ2UgcHJvdGVjdGlvblNwYWNlXSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29yZShbbWFjQ2hhbGxlbmdlIHByb3Bvc2VkQ3JlZGVudGlhbF0pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWNDaGFsbGVuZ2UgcHJldmlvdXNG
YWlsdXJlQ291bnRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWNDaGFs
bGVuZ2UgZmFpbHVyZVJlc3BvbnNlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbbWFjQ2hhbGxlbmdlIGVycm9yXSkKICAgICAsIG1fc2VuZGVyKFttYWNDaGFsbGVuZ2Ugc2Vu
ZGVyXSkKICAgICAsIG1fbWFjQ2hhbGxlbmdlKG1hY0NoYWxsZW5nZSkKIHsKIH0KIAorYm9vbCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cGxhdGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYikKK3sKKyAg
ICBpZiAoYS5zZW5kZXIoKSAhPSBiLnNlbmRlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIAorICAgIGlmIChhLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSAhPSBiLm5z
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CiAKIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hYyhj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY29yZUNoYWxsZW5nZSkKIHsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvci5oCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0
OiA0IC0qLQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZUVycm9yX2gKKyNk
ZWZpbmUgUmVzb3VyY2VFcnJvcl9oCisKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yQmFzZS5oIgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmZGVmIF9fT0JKQ19fCitAY2xhc3MgTlNF
cnJvcjsKKyNlbHNlCitjbGFzcyBOU0Vycm9yOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMgUmVzb3VyY2VFcnJvckJhc2Ug
eworICAgIHB1YmxpYzoKKyAgICAgICAgUmVzb3VyY2VFcnJvcigpCisgICAgICAgICAgICA6IG1f
ZGF0YUlzVXBUb0RhdGUodHJ1ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVz
b3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgU3Ry
aW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAg
ICAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VS
TCwgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAgICAgICAsIG1fZGF0YUlzVXBUb0RhdGUo
dHJ1ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgUmVzb3VyY2VFcnJvcihOU0Vy
cm9yKiBlcnJvcikKKyAgICAgICAgICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKKyAgICAg
ICAgICAgICwgbV9wbGF0Zm9ybUVycm9yKGVycm9yKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2lzTnVsbCA9ICFlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIG9wZXJhdG9yIE5TRXJyb3Iq
KCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VF
cnJvckJhc2U7CisKKyAgICAgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0KCk7CisgICAgICAgIHN0
YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBiKTsKKworICAgICAgICBib29sIG1fZGF0YUlzVXBUb0RhdGU7CisgICAg
ICAgIG11dGFibGUgUmV0YWluUHRyPE5TRXJyb3I+IG1fcGxhdGZvcm1FcnJvcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlc291cmNlRXJyb3JfaF8KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0J
KHJldmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUVycm9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSwxMSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXZvaWQgUmVzb3VyY2VFcnJvcjo6dW5wYWNrUGxhdGZvcm1FcnJvcigp
Cit2b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogeworICAgIGlmIChtX2Rh
dGFJc1VwVG9EYXRlKQorICAgICAgICByZXR1cm47CisKICAgICBtX2RvbWFpbiA9IFttX3BsYXRm
b3JtRXJyb3IuZ2V0KCkgZG9tYWluXTsKICAgICBtX2Vycm9yQ29kZSA9IFttX3BsYXRmb3JtRXJy
b3IuZ2V0KCkgY29kZV07CiAKQEAgLTQ5LDYgKzUyLDExIEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6
dW5wYWNrUGxhdGZvcm1FcnJvcigKICAgICBtX2RhdGFJc1VwVG9EYXRlID0gdHJ1ZTsKIH0KIAor
Ym9vbCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYg
YSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikKK3sKKyAgICByZXR1cm4gKE5TRXJyb3IqKWEgPT0g
KE5TRXJyb3IqKWI7Cit9CisKIFJlc291cmNlRXJyb3I6Om9wZXJhdG9yIE5TRXJyb3IqKCkgY29u
c3QKIHsKICAgICBpZiAobV9pc051bGwpIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAzMDA0MykKKysrIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MSwxMyArNDEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZSA6IHB1YmxpYyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiBwdWJsaWM6CiAgICAgUmVz
b3VyY2VSZXNwb25zZSgpCi0gICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UoKQorICAgICAg
ICA6IG1faXNVcFRvRGF0ZSh0cnVlKQogICAgIHsKICAgICB9CiAKICAgICBSZXNvdXJjZVJlc3Bv
bnNlKE5TVVJMUmVzcG9uc2UqIG5zUmVzcG9uc2UpCi0gICAgICAgIDogUmVzb3VyY2VSZXNwb25z
ZUJhc2UoIW5zUmVzcG9uc2UpCi0gICAgICAgICwgbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpIHsg
fQorICAgICAgICA6IG1fbnNSZXNwb25zZShuc1Jlc3BvbnNlKQorICAgICAgICAsIG1faXNVcFRv
RGF0ZShmYWxzZSkKKyAgICB7CisgICAgICAgIG1faXNOdWxsID0gIW5zUmVzcG9uc2U7CisgICAg
fQogICAgIAogICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5n
TmFtZSwgZmlsZW5hbWUpCkBAIC01OSwxMCArNjIsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7CiAKLSAgICB2b2lkIGRvVXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOworICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdCgpOworICAgIHN0
YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBiKTsKIAogICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBt
X25zUmVzcG9uc2U7Ci0KKyAgICBib29sIG1faXNVcFRvRGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VS
ZXNwb25zZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlUmVzcG9uc2VNYWMubW0JKHJldmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw4ICs1NiwxMiBAQCBOU1VSTFJlc3BvbnNlICpSZXNvdXJjZVJlc3BvbnNlOjpuc1VSTFJl
CiAgICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3Bv
bnNlOjpkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKQordm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpw
bGF0Zm9ybUxhenlJbml0KCkKIHsKKyAgICBpZiAobV9pc1VwVG9EYXRlKQorICAgICAgICByZXR1
cm47CisgICAgbV9pc1VwVG9EYXRlID0gdHJ1ZTsKKwogICAgIGlmIChtX2lzTnVsbCkgewogICAg
ICAgICBBU1NFUlQoIW1fbnNSZXNwb25zZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTExMiw0ICsx
MTYsOSBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OmRvVXBkYXRlUmVzb3VyY2VSCiAgICAgfQog
fQogCitib29sIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKQoreworICAgIHJldHVybiBh
Lm5zVVJMUmVzcG9uc2UoKSA9PSBiLm5zVVJMUmVzcG9uc2UoKTsKK30KKwogfQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworI2lmbmRlZiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCisjZGVmaW5lIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlX2gKKworI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZSB7CitwdWJsaWM6CisgICAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKQorICAgIHsKKyAgICB9CisKKyAgICBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3Qg
Q3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVD
b3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQorICAgICAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShwcm90ZWN0
aW9uU3BhY2UsIHByb3Bvc2VkQ3JlZGVudGlhbCwgcHJldmlvdXNGYWlsdXJlQ291bnQsIHJlc3Bv
bnNlLCBlcnJvcikKKyAgICB7CisgICAgfQorfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlRXJyb3IuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDkgQEAKKy8vIC0qLSBtb2RlOiBjKys7IGMtYmFzaWMtb2Zmc2V0OiA0IC0q
LQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZXNvdXJjZUVycm9yX2gKKyNkZWZpbmUg
UmVzb3VyY2VFcnJvcl9oCisKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yQmFzZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMgUmVzb3VyY2VF
cnJvckJhc2UKK3sKK3B1YmxpYzoKKyAgICBSZXNvdXJjZUVycm9yKCkKKyAgICB7CisgICAgfQor
CisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwg
Y29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0
aW9uKQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWls
aW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICB7CisgICAgfQorfTsKKworfQorCisj
ZW5kaWYgLy8gUmVzb3VyY2VFcnJvcl9oXwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3F0L1Jlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAzMDA0MykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDE0ICsyOSwxMSBAQAogCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZUJhc2UuaCIKIAot
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZSA6IHB1YmxpYyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiBwdWJs
aWM6CiAgICAgUmVzb3VyY2VSZXNwb25zZSgpCi0gICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJh
c2UoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtNDQsMTUgKzQxLDYgQEAgcHVibGljOgogICAg
ICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3Ro
LCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKICAgICB7CiAgICAgfQotCi1wcml2YXRlOgot
ICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZTsKLQotICAgIHZvaWQgZG9VcGRh
dGVSZXNvdXJjZVJlc3BvbnNlKCkKLSAgICB7Ci0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgfQotCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
LmNwcAkocmV2aXNpb24gMzAwNDMpCisrKyBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgo=
</data>
<flag name="review"
          id="8422"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19367</attachid>
            <date>2008-02-25 17:48:22 -0800</date>
            <delta_ts>2008-02-25 17:48:22 -0800</delta_ts>
            <desc>patch v3</desc>
            <filename>net-3.diff</filename>
            <type>text/plain</type>
            <size>113437</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDU3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTI3IEBACisyMDA4LTAyLTIyICBNb3JnYW5MICA8bW9yZ2FubC53ZWJraXRAeWFo
b28uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVsaW1pbmF0ZSBzb21lICNpZmRlZnMgZnJvbSBoZWFkZXJzIGluIHBsYXRmb3JtL25ldHdvcmsu
CisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzg2CisK
KyAgICAgICAgKiBXZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9YTUxUb2tlbml6ZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5j
cHA6IENvcGllZCBmcm9tIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlOjpwcmV2aW91c0ZhaWx1cmVDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OnByb3Bvc2VkQ3JlZGVudGlhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OnByb3RlY3Rpb25TcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmZhaWx1
cmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2U6OmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZTo6aXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZTo6bnVsbGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2U6OmNvbXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlLmg6IENvcGllZCBmcm9tIHBsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaC4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmFzZTo6cGxhdGZvcm1Db21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUVycm9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlRXJyb3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlRXJyb3JCYXNlLmNwcDogQ29waWVkIGZyb20gcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUVycm9yLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpsYXp5SW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6Y29tcGFyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oOiBDb3BpZWQgZnJvbSBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3IuaC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3JCYXNlOjppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJh
c2U6OmRvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZXJyb3JD
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpmYWlsaW5nVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpsb2NhbGl6ZWREZXNjcmlwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6UmVzb3VyY2VFcnJvckJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OnBsYXRmb3JtTGF6eUlu
aXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OnBsYXRmb3JtQ29tcGFy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjppc0hUVFApOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2U6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
c2V0VXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjptaW1lVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0TWltZVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVu
dExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0RXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VC
YXNlOjp0ZXh0RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2VCYXNlOjpzZXRUZXh0RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjpzdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBTdGF0dXNDb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzQ29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cFN0YXR1c1RleHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEhUVFBTdGF0dXNUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpodHRwSGVhZGVyRmllbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEhUVFBIZWFkZXJGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aHR0cEhlYWRlckZpZWxk
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNBdHRhY2htZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRFeHBpcmF0aW9u
RGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwaXJhdGlv
bkRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldExhc3RN
b2RpZmllZERhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omxh
c3RNb2RpZmllZERhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6
OmxhenlJbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21w
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnBsYXRmb3Jt
TGF6eUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnBsYXRm
b3JtQ29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwbGF0Zm9ybUNvbXBhcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6OnNvdXJjZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6Y2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3Jt
TGF6eUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21w
YXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6Om9wZXJhdG9yIENGU3RyZWFt
RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6
OlJlc291cmNlRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZVJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJj
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTo6c2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOjpuc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cGxhdGZvcm1Db21w
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUNvbXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvcXQvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VFcnJvci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgICogeG1sL1hTTFRQ
cm9jZXNzb3IuY3BwOgorCiAyMDA4LTAyLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUuYmFzZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShy
ZXZpc2lvbiAzMDU3NykKKysrIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5
KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIF9fWk43V2ViQ29yZTEyaWNvbkRhdGFiYXNlRXYKIF9fWk43
V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEMxRVJLUzBfCiBfX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1
bHREMUV2CiBfX1pON1dlYkNvcmUxM0tleWJvYXJkRXZlbnRDMUVSS05TXzEyQXRvbWljU3RyaW5n
RWJiUE5TXzlET01XaW5kb3dFUktOU182U3RyaW5nRWpiYmJiYgotX19aTjdXZWJDb3JlMTNSZXNv
dXJjZUVycm9yMTl1bnBhY2tQbGF0Zm9ybUVycm9yRXYKK19fWk5LN1dlYkNvcmUxN1Jlc291cmNl
RXJyb3JCYXNlOGxhenlJbml0RXYKIF9fWk43V2ViQ29yZTEzdG9EZXZpY2VTcGFjZUVSS05TXzlG
bG9hdFJlY3RFUDhOU1dpbmRvdwogX19aTjdXZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTVkZXJlZkVQ
TlNfMjBDYWNoZWRSZXNvdXJjZUNsaWVudEUKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIx
MnNldENvbW1pdHRlZEViCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUub3JkZXIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLm9yZGVyCShyZXZpc2lvbiAzMDU3NykKKysrIFdlYkNvcmUvV2Vi
Q29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtNTIyMyw3ICs1MjIzLDcgQEAgX19aTks3V2Vi
Q29yZTlET01XaW5kb3c0bmFtZUV2CiBfX1pON1dlYkNvcmUxOE1haW5SZXNvdXJjZUxvYWRlcjlk
aWRDYW5jZWxFUktOU18xM1Jlc291cmNlRXJyb3JFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVy
MjVyZWNlaXZlZE1haW5SZXNvdXJjZUVycm9yRVJLTlNfMTNSZXNvdXJjZUVycm9yRWIKIF9fWk43
V2ViQ29yZTExRnJhbWVMb2FkZXI0c3RvcEV2Ci1fX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3Ix
OXVucGFja1BsYXRmb3JtRXJyb3JFdgorX19aTjdXZWJDb3JlMTdSZXNvdXJjZUVycm9yQmFzZThs
YXp5SW5pdEV2CiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTNkaWROb3RPcGVuVVJMRVJLTlNf
NEtVUkxFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMzFpbnZhbGlkYXRlQ3VycmVudEl0ZW1D
YWNoZWRQYWdlRXYKIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxN21haW5SZWNlaXZlZEVy
cm9yRVJLTlNfMTNSZXNvdXJjZUVycm9yRWIKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkocmV2aXNpb24gMzA1NzcpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDY1LDExICs0MDY1LDExIEBACiAJCQkJ
TmFtZT0ibmV0d29yayINCiAJCQkJPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCINCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2UuY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCINCisJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUJhc2UuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KQEAgLTQxMDks
NyArNDEwOSwxMSBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZUVycm9yLmgiDQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcUmVzb3VyY2VFcnJvckJhc2UuaCINCisJ
CQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxuZXR3b3JrXFJlc291cmNlRXJyb3JCYXNlLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0KIAkJCQk8RmlsZQ0KQEAgLTQxNDgsNiArNDE1MiwxMCBAQAogCQkJCQlOYW1lPSJjZiIN
CiAJCQkJCT4NCiAJCQkJCTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxu
ZXR3b3JrXGNmXEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiDQorCQkJCQkJPg0KKwkJCQkJPC9G
aWxlPg0KKwkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdv
cmtcY2ZcQXV0aGVudGljYXRpb25DRi5jcHAiDQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KQEAg
LTQxNjQsNiArNDE3MiwxMCBAQAogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUN
CisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcUmVzb3VyY2VFcnJv
ci5oIg0KKwkJCQkJCT4NCisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXFJlc291cmNlRXJyb3JDRi5jcHAiDQogCQkJ
CQkJPg0KIAkJCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAzMDU3NykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNzUsOCArMzc1LDYgQEAKIAkJ
NTE0Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjQ5MENFOTIzNEUw
MDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gKi87IH07CiAJCTUxNEM3NjU0MENFOTIz
NEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0QTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3Vy
Y2VSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxNEM3NjU1MENFOTIzNEYwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NEIw
Q0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VNYWMubW0gKi87IH07Ci0JCTUxNEM3
NjZCMENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1NjBDRTkyM0Ex
MDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwICovOyB9OwotCQk1MTRDNzY2
QzBDRTkyM0ExMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU3MENFOTIzQTEwMDdF
RjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNEM3NjZEMENFOTIzQTEwMDdFRjNDRCAvKiBD
cmVkZW50aWFsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmNwcCAqLzsgfTsKIAkJ
NTE0Qzc2NkUwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAv
KiBDcmVkZW50aWFsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTE0Qzc2NkYwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjVBMENFOTIzQTEw
MDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi87IH07CkBAIC0zODYsOCArMzg0LDYgQEAKIAkJNTE0
Qzc2NzMwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY1RTBDRTkyM0ExMDA3RUYzQ0QgLyog
SFRUUFBhcnNlcnMuaCAqLzsgfTsKIAkJNTE0Qzc2NzQwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3Rl
Y3Rpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTRDNzY1RjBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNlLmNwcCAqLzsg
fTsKIAkJNTE0Qzc2NzUwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NjAwQ0U5MjNB
MTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxNEM3Njc2MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNv
dXJjZUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNEM3NjYxMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yLmNwcCAqLzsgfTsK
LQkJNTE0Qzc2NzcwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjYyMENFOTIzQTEwMDdF
RjNDRCAvKiBSZXNvdXJjZUVycm9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2NzgwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NEM3NjYzMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgKi87IH07CiAJCTUx
NEM3Njc5MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0Qzc2NjQwQ0U5MjNBMTAwN0VGM0NE
IC8qIFJlc291cmNlSGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTE0Qzc2N0EwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxl
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTRDNzY2NTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTUzMyw2ICsxNTI5
LDEyIEBACiAJCTkzNDQyQ0EwMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzQ0MkM5RjBEMkIzMzYwMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwICov
OyB9OwogCQk5MzREOUJBNTBCOEMxMTZCMDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RDlC
QTQwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSAqLzsgfTsKIAkJ
OTM0RDlCQTcwQjhDMTE3NTAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RDlCQTYwQjhDMTE3
NTAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzNEY3MTM4MEQ1QTZFRkYwMDAxOEQ2OSAv
KiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RjcxMzcwRDVBNkVGRjAwMDE4RDY5IC8qIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgKi87IH07CisJCTkzNEY3MTNBMEQ1QTZGMTAwMDAx
OEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEY3MTM5MEQ1QTZGMTAwMDAxOEQ2OSAvKiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVzb3Vy
Y2VFcnJvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzNEY3MTNCMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzNEY3MTNFMEQ1
QTZGMjgwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzRGNzEzRDBENUE2RjI4MDAwMThENjkgLyog
UmVzb3VyY2VFcnJvckJhc2UuY3BwICovOyB9OworCQk5MzRGNzE0MjBENUE2RjQ0MDAwMThENjkg
LyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM0RjcxNDEwRDVBNkY0NDAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5MzRGNzE0NDBE
NUE2RjUzMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEY3MTQzMEQ1QTZGNTMwMDAxOEQ2
OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNEZFOUU1MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxl
Q2hvb3Nlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzRGRTlFNDBCNUNBNTM5MDAzRTRBNzMgLyogRmlsZUNob29zZXIuY3BwICovOyB9OwogCQk5
MzUyMDcxOTA5QkQzQkE1MDBGMjAzOEQgLyogU3RhdGljQ29uc3RydWN0b3JzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUyMDcxNzA5QkQzQkE1MDBG
MjAzOEQgLyogU3RhdGljQ29uc3RydWN0b3JzLmggKi87IH07CiAJCTkzNTIwN0JFMDlCRDQxMEEw
MEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUyMDdCRDA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxpemVk
U3RyaW5ncy5oICovOyB9OwpAQCAtNDY0Nyw4ICs0NjQ5LDYgQEAKIAkJNTE0Qzc2NDkwQ0U5MjM0
RTAwN0VGM0NEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NEEwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9u
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25zZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0QjBDRTkyMzRFMDA3RUYzQ0Qg
LyogUmVzb3VyY2VSZXNwb25zZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTUxNEM3NjU2MENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNEM3NjU3MENF
OTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1ODBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlh
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcmVkZW50aWFsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NTkwQ0U5MjNBMTAwN0VGM0NE
IC8qIENyZWRlbnRpYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVu
dGlhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY1QTBDRTkyM0ExMDA3
RUYzQ0QgLyogRm9ybURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRm9ybURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDY1OCw4ICs0
NjU4LDYgQEAKIAkJNTE0Qzc2NUUwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUVFBQYXJzZXJzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjVGMENFOTIzQTEwMDdFRjNDRCAvKiBQcm90ZWN0aW9u
U3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdGVjdGlv
blNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NjAwQ0U5MjNB
MTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcm90ZWN0aW9uU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTE0Qzc2NjEwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlRXJyb3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VFcnJvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUxNEM3NjYyMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUVy
cm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlRXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2NjMwQ0U5MjNBMTAwN0VGM0NEIC8q
IFJlc291cmNlSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlc291cmNlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2
NjQwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlc291cmNlSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNEM3NjY1MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUhhbmRsZUNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTc3Miw2ICs1NzcwLDEyIEBACiAJCTkz
NDQyQzlGMEQyQjMzNjAwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVGFibGVSb3dzQ29sbGVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEQ5QkE0MEI4QzExNkIwMDdC
NDJBOSAvKiBXZWJDb3JlTlNTdHJpbmdFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU5TU3RyaW5nRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MzREOUJBNjBCOEMxMTc1MDA3QjQyQTkgLyogV2ViQ29yZU5TU3Ry
aW5nRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNT
dHJpbmdFeHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0RjcxMzcwRDVB
NkVGRjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0RjcxMzkwRDVBNkYxMDAwMDE4
RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkzNEY3MTNCMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVy
cm9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VFcnJv
ckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTM0RjcxM0QwRDVBNkYyODAw
MDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZXNvdXJjZUVycm9yQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzNEY3MTQxMEQ1QTZGNDQwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUVycm9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNEY3MTQzMEQ1QTZGNTMwMDAxOEQ2OSAvKiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM0
RkU5RTQwQjVDQTUzOTAwM0U0QTczIC8qIEZpbGVDaG9vc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVDaG9vc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTM1MjA3MTcwOUJEM0JBNTAwRjIwMzhEIC8qIFN0YXRpY0NvbnN0cnVjdG9y
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNDb25zdHJ1Y3RvcnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1MjA3QkQwOUJENDEwQTAwRjIwMzhE
IC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TG9jYWxpemVkU3RyaW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI3NCw5
ICs4Mjc4LDExIEBACiAJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3JrICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5MzRGNzEzRDBENUE2
RjI4MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuY3BwICovLAorCQkJCTkzNEY3MTNCMEQ1
QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5oICovLAorCQkJCTkzNEY3MTM5MEQ1
QTZGMTAwMDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCAqLywKKwkJCQk5
MzRGNzEzNzBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNw
cCAqLywKIAkJCQk2NTZCODRFNzBBRUExREFFMDBBMDk1QjQgLyogbWFjICovLAotCQkJCTUxNEM3
NjU2MENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgKi8sCi0J
CQkJNTE0Qzc2NTcwQ0U5MjNBMTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgg
Ki8sCiAJCQkJNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8qIENyZWRlbnRpYWwuY3BwICovLAog
CQkJCTUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmggKi8sCiAJCQkJNTE0
Qzc2NUEwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmNwcCAqLywKQEAgLTgyODYsOCArODI5
Miw2IEBACiAJCQkJNTE0Qzc2NUUwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmggKi8s
CiAJCQkJNTE0Qzc2NUYwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5jcHAgKi8s
CiAJCQkJNTE0Qzc2NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovLAot
CQkJCTUxNEM3NjYxMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yLmNwcCAqLywKLQkJ
CQk1MTRDNzY2MjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvci5oICovLAogCQkJCTUx
NEM3NjYzMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgKi8sCiAJCQkJNTE0
Qzc2NjQwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmggKi8sCiAJCQkJNTE0Qzc2
NjUwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlQ2xpZW50LmggKi8sCkBAIC04MzAz
LDYgKzgzMDcsOCBAQAogCQk2NTZCODRFNzBBRUExREFFMDBBMDk1QjQgLyogbWFjICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5MzRGNzE0MzBENUE2RjUz
MDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLywKKwkJCQk5MzRGNzE0MTBE
NUE2RjQ0MDAwMThENjkgLyogUmVzb3VyY2VFcnJvci5oICovLAogCQkJCTUxNEM3NjQyMENFOTIz
NEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5oICovLAogCQkJCTUxNEM3NjQzMENFOTIz
NEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlvbk1hYy5tbSAqLywKIAkJCQk1MTRDNzY0NDBDRTky
MzRFMDA3RUYzQ0QgLyogRm9ybURhdGFTdHJlYW1NYWMuaCAqLywKQEAgLTEyNDAxLDcgKzEyNDA3
LDYgQEAKIAkJCQlCMkMzREEyMDBEMDA2QzFEMDBFRjZGMjYgLyogQXRvbWljU3RyaW5nSW1wbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThDNEE4MEQwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QzRBODBCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUu
aCBpbiBIZWFkZXJzICovLAotCQkJCTUxNEM3NjZDMENFOTIzQTEwMDdFRjNDRCAvKiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NEMwQ0U5MjM0RTAw
N0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjA0
RTBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1RhYmxlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUUxRUNCMzBDOTFDNTU2MDBEQzI1NUIgLyogQXV0b2RyYWluZWRQb29sLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEzODQ3LDcgKzEzODUyLDYgQEAKIAkJCQk5Mzc5OUVGOTBCRjI3NDM2MDBEMEYy
MzAgLyogUmVuZGVyV29yZEJyZWFrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwQTA5OUU2
NDkyMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQjE2QzJGMDk3OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
LQkJCQk1MTRDNzY3NzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VFcnJvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE0Qzc2NzkwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY3QTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VI
YW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3NjdCMENFOTIzQTEwMDdFRjND
RCAvKiBSZXNvdXJjZUhhbmRsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MjUwLDYg
KzE0MjU0LDEwIEBACiAJCQkJNTFBOTI2N0QwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblF1b3Rh
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBOTI2N0YwRDUzRjA1NzAwNjNFQ0MyIC8q
IE9yaWdpblVzYWdlUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RENGODM2RDBENTkxNTk4
MDA5NTNCQzYgLyogUGx1Z2luSW5mb1N0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzRGNzEz
QTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk5MzRGNzEzQzBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJh
c2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNEY3MTQyMEQ1QTZGNDQwMDAxOEQ2OSAvKiBSZXNv
dXJjZUVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzRGNzE0NDBENUE2RjUzMDAwMThENjkg
LyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwMjk0REY0
MEQ1QTZGRDgwMENDN0Q2QiAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFERTFDMDgwRDVDRTRDRjAwMzRDMzhGIC8qIE1lc3NhZ2VRdWV1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzdGODE4RkQwRDY1NzYwNjAwNUUxRjA1IC8qIFdlYkNvcmVVUkxSZXNwb25z
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDI5OSw3ICsxNDMwNyw2IEBACiAJCTA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2pl
Y3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZD
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87
Ci0JCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwogCQkJaGFzU2Nhbm5lZEZv
ckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTE0
MzEzLDcgKzE0MzIwLDYgQEAKIAkJCW1haW5Hcm91cCA9IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMw
NyAvKiBXZWJLaXQgKi87CiAJCQlwcm9kdWN0UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFE
QjlDOEIgLyogUHJvZHVjdHMgKi87CiAJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwotCQkJcHJvamVj
dFJvb3QgPSAiIjsKIAkJCXRhcmdldHMgPSAoCiAJCQkJOTNGMTk4QTUwODI0NUU1OTAwMUU5QUJD
IC8qIFdlYkNvcmUgKi8sCiAJCQkJREQwNDFGQkUwOUQ5RERCRTAwMTBBRjJBIC8qIERlcml2ZWQg
U291cmNlcyAqLywKQEAgLTE0NDYwLDcgKzE0NDY2LDYgQEAKIAkJCQlCMkMzREExRTBEMDA2QzFE
MDBFRjZGMjYgLyogQXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzRBODBF
MDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzRBODBD
MDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE0
Qzc2NkIwQ0U5MjNBMTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxNEM3NjREMENFOTIzNEUwMDdFRjNDRCAvKiBBdXRoZW50aWNhdGlv
bk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGMDUwMEExNTRGMDkwMDBBNDIzNCAvKiBB
dXRvVGFibGVMYXlvdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMUVDQUYwQzkxQzU0NjAw
REMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5tbSBpbiBTb3VyY2VzICovLApAQCAtMTU0NjIsNyAr
MTU0NjcsNiBAQAogCQkJCTkzNzk5RUY4MEJGMjc0MzYwMEQwRjIzMCAvKiBSZW5kZXJXb3JkQnJl
YWsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMDkwOTlFNjQ5MjAwNTZFNTgxIC8qIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjE2QzJFMDk3
OUMzQkQwMDQ2Nzc0MSAvKiBSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNEM3Njc2
MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxNEM3NjUwMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUVycm9yTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE0Qzc2NzgwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEM3NjUxMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJj
ZUhhbmRsZU1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtMTU4NDksNiArMTU4NTMsOCBAQAogCQkJ
CUJDRTdCMTkzMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTFBOTI2N0MwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblF1b3RhTWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE5MjY3RTBENTNGMDU3MDA2M0VDQzIgLyogT3Jp
Z2luVXNhZ2VSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTM0RjcxMzgwRDVBNkVGRjAw
MDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5MzRGNzEzRTBENUE2RjI4MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzAyOTRERjMwRDVBNkZEODAwQ0M3RDZCIC8qIFVzZXJTdHlsZVNo
ZWV0TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RjgxOEZFMEQ2NTc2MDYwMDVFMUYw
NSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0M1NzMzNjBE
Njk1QkJFMDA2RUY1MTcgLyogRE9NUHJvZ3Jlc3NFdmVudC5tbSBpbiBTb3VyY2VzICovLApJbmRl
eDogV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9YTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiAzMDU3NykKKysrIFdlYkNvcmUvZG9tL1hNTFRv
a2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJI
VE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUg
IlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aAkocmV2aXNpb24gMzA1NzcpCisrKyBXZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVD
bGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5j
bHVkZSAiS1VSTC5oIgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiAzMDU3NykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQotICAgIDogbV9pc051bGwodHJ1ZSkKLSAgICAsIG1f
cHJldmlvdXNGYWlsdXJlQ291bnQoMCkKLXsKLX0KLQotQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
blNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBy
ZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCi0gICAgOiBtX2lzTnVsbChmYWxzZSkKLSAgICAsIG1f
cHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkKLSAgICAsIG1fcHJvcG9zZWRDcmVkZW50
aWFsKHByb3Bvc2VkQ3JlZGVudGlhbCkKLSAgICAsIG1fcHJldmlvdXNGYWlsdXJlQ291bnQocHJl
dmlvdXNGYWlsdXJlQ291bnQpCi0gICAgLCBtX2ZhaWx1cmVSZXNwb25zZShyZXNwb25zZSkKLSAg
ICAsIG1fZXJyb3IoZXJyb3IpCi17Ci19Ci0KLXVuc2lnbmVkIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjpwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0IAoteyAKLSAgICByZXR1cm4gbV9wcmV2
aW91c0ZhaWx1cmVDb3VudDsgCi19Ci0KLWNvbnN0IENyZWRlbnRpYWwmIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpwcm9wb3NlZENyZWRlbnRpYWwoKSBjb25zdCAKLXsgCi0gICAgcmV0dXJuIG1f
cHJvcG9zZWRDcmVkZW50aWFsOyAKLX0KLQotY29uc3QgUHJvdGVjdGlvblNwYWNlJiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTo6cHJvdGVjdGlvblNwYWNlKCkgY29uc3QgCi17IAotICAgIHJldHVy
biBtX3Byb3RlY3Rpb25TcGFjZTsgCi19Ci0KLWNvbnN0IFJlc291cmNlUmVzcG9uc2UmIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOjpmYWlsdXJlUmVzcG9uc2UoKSBjb25zdCAKLXsgCi0gICAgcmV0
dXJuIG1fZmFpbHVyZVJlc3BvbnNlOyAKLX0KLQotY29uc3QgUmVzb3VyY2VFcnJvciYgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6OmVycm9yKCkgY29uc3QgCi17IAotICAgIHJldHVybiBtX2Vycm9y
OyAKLX0KLQotYm9vbCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6aXNOdWxsKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9pc051bGw7Ci19Ci0KLXZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
Om51bGxpZnkoKQotewotICAgIG1faXNOdWxsID0gdHJ1ZTsKLX0KLQotYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYikKLXsKLSAgICBpZiAoYS5pc051bGwoKSAhPSBiLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKGEuc2VuZGVyKCkgIT0gYi5z
ZW5kZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICBpZiAoYS5uc1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgIT0gYi5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbGlmIFVTRShDRk5FVFdPUkspCi0gICAg
aWYgKGEuc291cmNlSGFuZGxlKCkgIT0gYi5zb3VyY2VIYW5kbGUoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKGEuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkgIT0gYi5jZlVSTEF1
dGhDaGFsbGVuZ2VSZWYoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICBp
ZiAoYS5wcm90ZWN0aW9uU3BhY2UoKSAhPSBiLnByb3RlY3Rpb25TcGFjZSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgIGlmIChhLnByb3Bvc2VkQ3JlZGVudGlhbCgpICE9
IGIucHJvcG9zZWRDcmVkZW50aWFsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
Ci0gICAgaWYgKGEucHJldmlvdXNGYWlsdXJlQ291bnQoKSAhPSBiLnByZXZpb3VzRmFpbHVyZUNv
dW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgaWYgKGEuZmFpbHVy
ZVJlc3BvbnNlKCkgIT0gYi5mYWlsdXJlUmVzcG9uc2UoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAKLSAgICBpZiAoYS5lcnJvcigpICE9IGIuZXJyb3IoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi19Ci0KLQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgJKHJldmlzaW9uIDMwNTc3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLSNpZm5kZWYgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAotI2RlZmluZSBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZV9oCi0KLSNpbmNsdWRlICJDcmVkZW50aWFsLmgiCi0jaW5jbHVkZSAi
UHJvdGVjdGlvblNwYWNlLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1
ZGUgIlJlc291cmNlRXJyb3IuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotCi0jaWYg
UExBVEZPUk0oTUFDKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpZm5kZWYgX19PQkpD
X18KLXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICppZDsKLWNsYXNzIE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7Ci0jZWxzZQotQGNsYXNzIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U7Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0
IF9DRlVSTEF1dGhDaGFsbGVuZ2UqIENGVVJMQXV0aENoYWxsZW5nZVJlZjsKLSNlbmRpZgotCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVzb3VyY2VIYW5kbGU7Ci0KLWNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHsKLQotcHVibGljOgotICAgIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCk7Ci0gICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlh
bCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcik7Ci0jaWYgUExBVEZPUk0oTUFD
KQotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKik7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KENGVVJMQXV0aENoYWxsZW5nZVJlZiwgUmVzb3VyY2VIYW5kbGUqIHNvdXJjZUhhbmRsZSk7Ci0j
ZW5kaWYKLQotICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50KCkgY29uc3Q7Ci0gICAg
Y29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsKCkgY29uc3Q7Ci0gICAgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UoKSBjb25zdDsKLSAgICBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBmYWlsdXJlUmVzcG9uc2UoKSBjb25zdDsKLSAgICBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcigpIGNvbnN0OwotICAgIAotICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0g
ICAgdm9pZCBudWxsaWZ5KCk7Ci0gICAgCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlkIHNlbmRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2VuZGVyLmdldCgpOyB9Ci0gICAgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqbnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFjQ2hhbGxlbmdlLmdldCgpOyB9Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAgIFJl
c291cmNlSGFuZGxlKiBzb3VyY2VIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUhhbmRs
ZS5nZXQoKTsgfQotICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZlVSTEF1dGhDaGFsbGVuZ2VS
ZWYoKSBjb25zdCB7IHJldHVybiBtX2NmQ2hhbGxlbmdlLmdldCgpOyB9Ci0jZW5kaWYKLXByaXZh
dGU6Ci0gICAgYm9vbCBtX2lzTnVsbDsKLSAgICBQcm90ZWN0aW9uU3BhY2UgbV9wcm90ZWN0aW9u
U3BhY2U7Ci0gICAgQ3JlZGVudGlhbCBtX3Byb3Bvc2VkQ3JlZGVudGlhbDsKLSAgICB1bnNpZ25l
ZCBtX3ByZXZpb3VzRmFpbHVyZUNvdW50OwotICAgIFJlc291cmNlUmVzcG9uc2UgbV9mYWlsdXJl
UmVzcG9uc2U7Ci0gICAgUmVzb3VyY2VFcnJvciBtX2Vycm9yOwotCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIFJldGFpblB0cjxpZD4gbV9zZW5kZXI7Ci0gICAgUmV0YWluUHRyPE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKj4gbV9tYWNDaGFsbGVuZ2U7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbV9zb3VyY2VIYW5kbGU7Ci0gICAgUmV0YWlu
UHRyPENGVVJMQXV0aENoYWxsZW5nZVJlZj4gbV9jZkNoYWxsZW5nZTsKLSNlbmRpZgotCi19Owot
Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLX0KLSNl
bmRpZgotCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcAkocmV2aXNpb24gMzAwNDMpCShmcm9tIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHA6MzAwNDMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisKKyNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCisgICAgOiBtX2lzTnVsbCh0
cnVlKQorICAgICwgbV9wcmV2aW91c0ZhaWx1cmVDb3VudCgwKQoreworfQorCitBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlh
bCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKKyAgICA6IG1faXNOdWxsKGZh
bHNlKQorICAgICwgbV9wcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKQorICAgICwgbV9w
cm9wb3NlZENyZWRlbnRpYWwocHJvcG9zZWRDcmVkZW50aWFsKQorICAgICwgbV9wcmV2aW91c0Zh
aWx1cmVDb3VudChwcmV2aW91c0ZhaWx1cmVDb3VudCkKKyAgICAsIG1fZmFpbHVyZVJlc3BvbnNl
KHJlc3BvbnNlKQorICAgICwgbV9lcnJvcihlcnJvcikKK3sKK30KKwordW5zaWduZWQgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6OnByZXZpb3VzRmFpbHVyZUNvdW50KCkgY29uc3QgCit7IAorICAg
IHJldHVybiBtX3ByZXZpb3VzRmFpbHVyZUNvdW50OyAKK30KKworY29uc3QgQ3JlZGVudGlhbCYg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnByb3Bvc2VkQ3JlZGVudGlhbCgpIGNvbnN0IAoreyAK
KyAgICByZXR1cm4gbV9wcm9wb3NlZENyZWRlbnRpYWw7IAorfQorCitjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwcm90ZWN0aW9uU3BhY2UoKSBjb25zdCAK
K3sgCisgICAgcmV0dXJuIG1fcHJvdGVjdGlvblNwYWNlOyAKK30KKworY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmZhaWx1cmVSZXNwb25zZSgpIGNvbnN0
IAoreyAKKyAgICByZXR1cm4gbV9mYWlsdXJlUmVzcG9uc2U7IAorfQorCitjb25zdCBSZXNvdXJj
ZUVycm9yJiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6ZXJyb3IoKSBjb25zdCAKK3sgCisgICAg
cmV0dXJuIG1fZXJyb3I7IAorfQorCitib29sIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppc051
bGwoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzTnVsbDsKK30KKwordm9pZCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6bnVsbGlmeSgpCit7CisgICAgbV9pc051bGwgPSB0cnVlOworfQorCiti
b29sIG9wZXJhdG9yPT0oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQoreworICAgIGlmIChhLmlzTnVsbCgpICE9IGIuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoYS5z
ZW5kZXIoKSAhPSBiLnNlbmRlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAor
ICAgIGlmIChhLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSAhPSBiLm5zVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VsaWYgVVNFKENG
TkVUV09SSykKKyAgICBpZiAoYS5zb3VyY2VIYW5kbGUoKSAhPSBiLnNvdXJjZUhhbmRsZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYo
KSAhPSBiLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKKworICAgIGlmIChhLnByb3RlY3Rpb25TcGFjZSgpICE9IGIucHJvdGVjdGlvblNwYWNl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgaWYgKGEucHJvcG9zZWRD
cmVkZW50aWFsKCkgIT0gYi5wcm9wb3NlZENyZWRlbnRpYWwoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAKKyAgICBpZiAoYS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpICE9IGIucHJl
dmlvdXNGYWlsdXJlQ291bnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAg
ICBpZiAoYS5mYWlsdXJlUmVzcG9uc2UoKSAhPSBiLmZhaWx1cmVSZXNwb25zZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIGlmIChhLmVycm9yKCkgIT0gYi5lcnJvcigp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIG9wZXJhdG9yIT0oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9
CisKK30KKworCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcAkocmV2aXNpb24gMzAwNDMpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksMTQgKzI5LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKK0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKCkKICAg
ICA6IG1faXNOdWxsKHRydWUpCiAgICAgLCBtX3ByZXZpb3VzRmFpbHVyZUNvdW50KDApCiB7CiB9
CiAKLUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgcHJv
cG9zZWRDcmVkZW50aWFsLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQorQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoY29u
c3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDcmVkZW50aWFsJiBw
cm9wb3NlZENyZWRlbnRpYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiAgICAgOiBtX2lzTnVsbChmYWxzZSkKICAgICAsIG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rp
b25TcGFjZSkKICAgICAsIG1fcHJvcG9zZWRDcmVkZW50aWFsKHByb3Bvc2VkQ3JlZGVudGlhbCkK
QEAgLTQ2LDYyICs0OSw0OSBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRp
b25DCiB7CiB9CiAKLXVuc2lnbmVkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwcmV2aW91c0Zh
aWx1cmVDb3VudCgpIGNvbnN0IAordW5zaWduZWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
OjpwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0IAogeyAKICAgICByZXR1cm4gbV9wcmV2aW91
c0ZhaWx1cmVDb3VudDsgCiB9CiAKLWNvbnN0IENyZWRlbnRpYWwmIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpwcm9wb3NlZENyZWRlbnRpYWwoKSBjb25zdCAKK2NvbnN0IENyZWRlbnRpYWwmIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6cHJvcG9zZWRDcmVkZW50aWFsKCkgY29uc3QgCiB7
IAogICAgIHJldHVybiBtX3Byb3Bvc2VkQ3JlZGVudGlhbDsgCiB9CiAKLWNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnByb3RlY3Rpb25TcGFjZSgpIGNvbnN0
IAorY29uc3QgUHJvdGVjdGlvblNwYWNlJiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OnBy
b3RlY3Rpb25TcGFjZSgpIGNvbnN0IAogeyAKICAgICByZXR1cm4gbV9wcm90ZWN0aW9uU3BhY2U7
IAogfQogCi1jb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6
ZmFpbHVyZVJlc3BvbnNlKCkgY29uc3QgCitjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmZhaWx1cmVSZXNwb25zZSgpIGNvbnN0IAogeyAKICAgICBy
ZXR1cm4gbV9mYWlsdXJlUmVzcG9uc2U7IAogfQogCi1jb25zdCBSZXNvdXJjZUVycm9yJiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTo6ZXJyb3IoKSBjb25zdCAKK2NvbnN0IFJlc291cmNlRXJyb3Im
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6ZXJyb3IoKSBjb25zdCAKIHsgCiAgICAgcmV0
dXJuIG1fZXJyb3I7IAogfQogCi1ib29sIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjppc051bGwo
KSBjb25zdAorYm9vbCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U6OmlzTnVsbCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1faXNOdWxsOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjpudWxsaWZ5KCkKK3ZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlOjpudWxsaWZ5
KCkKIHsKICAgICBtX2lzTnVsbCA9IHRydWU7CiB9CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGIpCitib29sIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTo6Y29tcGFyZShjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIp
CiB7Ci0gICAgaWYgKGEuaXNOdWxsKCkgIT0gYi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmIChhLmlzTnVsbCgpKQorICAgIGlmIChhLmlzTnVsbCgpICYmIGIuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAKLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgaWYgKGEuc2VuZGVyKCkgIT0gYi5zZW5kZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAKLSAgICBpZiAoYS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgIT0gYi5u
c1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNl
bGlmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKGEuc291cmNlSGFuZGxlKCkgIT0gYi5zb3VyY2VI
YW5kbGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGEuY2ZVUkxBdXRoQ2hh
bGxlbmdlUmVmKCkgIT0gYi5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSkKKyAgICBpZiAoYS5pc051
bGwoKSB8fCBiLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQorICAg
ICAgICAKICAgICBpZiAoYS5wcm90ZWN0aW9uU3BhY2UoKSAhPSBiLnByb3RlY3Rpb25TcGFjZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAtMTE3LDE0ICsxMDcsNyBAQCBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQXV0aGVudGljYXRpb25DaGFsCiAgICAgaWYgKGEuZXJyb3Io
KSAhPSBiLmVycm9yKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLWJvb2wgb3BlcmF0b3IhPShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIpCi17Ci0gICAgcmV0dXJu
ICEoYSA9PSBiKTsKKyAgICByZXR1cm4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnBsYXRmb3Jt
Q29tcGFyZShhLCBiKTsKIH0KIAogfQotCi0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgJKHJldmlzaW9uIDMw
MDQzKQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaDozMDA0MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
I2lmbmRlZiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9oCisjZGVmaW5lIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlX2gKKworI2luY2x1ZGUgIkNyZWRlbnRpYWwuaCIKKyNpbmNsdWRlICJQcm90ZWN0
aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VFcnJvci5oIgorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisKKyNpZiBQTEFURk9S
TShNQUMpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lmbmRlZiBfX09CSkNfXwordHlw
ZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOworY2xhc3MgTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTsKKyNlbHNlCitAY2xhc3MgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKKyNl
bmRpZgorI2VuZGlmCisKKyNpZiBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBzdHJ1Y3QgX0NGVVJM
QXV0aENoYWxsZW5nZSogQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmOworI2VuZGlmCisKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJjZUhhbmRsZTsKKworY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgeworCitwdWJsaWM6CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KTsKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHBy
b3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLCB1bnNp
Z25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKTsK
KyNlbGlmIFVTRShDRk5FVFdPUkspCisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxB
dXRoQ2hhbGxlbmdlUmVmLCBSZXNvdXJjZUhhbmRsZSogc291cmNlSGFuZGxlKTsKKyNlbmRpZgor
CisgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQoKSBjb25zdDsKKyAgICBjb25zdCBD
cmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwoKSBjb25zdDsKKyAgICBjb25zdCBQcm90ZWN0
aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSgpIGNvbnN0OworICAgIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGZhaWx1cmVSZXNwb25zZSgpIGNvbnN0OworICAgIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICB2b2lk
IG51bGxpZnkoKTsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWQgc2VuZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9zZW5kZXIuZ2V0KCk7IH0KKyAgICBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICpuc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgY29uc3QgeyByZXR1cm4gbV9t
YWNDaGFsbGVuZ2UuZ2V0KCk7IH0KKyNlbGlmIFVTRShDRk5FVFdPUkspCisgICAgUmVzb3VyY2VI
YW5kbGUqIHNvdXJjZUhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSGFuZGxlLmdldCgp
OyB9CisgICAgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmVVJMQXV0aENoYWxsZW5nZVJlZigpIGNv
bnN0IHsgcmV0dXJuIG1fY2ZDaGFsbGVuZ2UuZ2V0KCk7IH0KKyNlbmRpZgorcHJpdmF0ZToKKyAg
ICBib29sIG1faXNOdWxsOworICAgIFByb3RlY3Rpb25TcGFjZSBtX3Byb3RlY3Rpb25TcGFjZTsK
KyAgICBDcmVkZW50aWFsIG1fcHJvcG9zZWRDcmVkZW50aWFsOworICAgIHVuc2lnbmVkIG1fcHJl
dmlvdXNGYWlsdXJlQ291bnQ7CisgICAgUmVzb3VyY2VSZXNwb25zZSBtX2ZhaWx1cmVSZXNwb25z
ZTsKKyAgICBSZXNvdXJjZUVycm9yIG1fZXJyb3I7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
UmV0YWluUHRyPGlkPiBtX3NlbmRlcjsKKyAgICBSZXRhaW5QdHI8TlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqPiBtX21hY0NoYWxsZW5nZTsKKyNlbGlmIFVTRShDRk5FVFdPUkspCisgICAg
UmVmUHRyPFJlc291cmNlSGFuZGxlPiBtX3NvdXJjZUhhbmRsZTsKKyAgICBSZXRhaW5QdHI8Q0ZV
UkxBdXRoQ2hhbGxlbmdlUmVmPiBtX2NmQ2hhbGxlbmdlOworI2VuZGlmCisKK307CisKK2Jvb2wg
b3BlcmF0b3I9PShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworfQorI2VuZGlmCisK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VCYXNlLmgJKHJldmlzaW9uIDMwMDQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw0NiArMjIsMjIgQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KLSNp
Zm5kZWYgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAotI2RlZmluZSBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZV9oCisjaWZuZGVmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZV9oCisjZGVmaW5l
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZV9oCiAKICNpbmNsdWRlICJDcmVkZW50aWFsLmgi
CiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25z
ZS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKIAotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLQotCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNp
Zm5kZWYgX19PQkpDX18KLXR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICppZDsKLWNsYXNzIE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0jZWxzZQotQGNsYXNzIE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgVVNFKENGTkVUV09SSykKLXR5
cGVkZWYgc3RydWN0IF9DRlVSTEF1dGhDaGFsbGVuZ2UqIENGVVJMQXV0aENoYWxsZW5nZVJlZjsK
LSNlbmRpZgotCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVzb3VyY2VIYW5kbGU7
Ci0KLWNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHsKK2NsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOwogCitjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UgewogcHVibGlj
OgotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7Ci0gICAgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRl
bnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcik7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKik7Ci0jZWxpZiBVU0UoQ0ZORVRXT1JLKQotICAg
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZiwgUmVzb3VyY2VI
YW5kbGUqIHNvdXJjZUhhbmRsZSk7Ci0jZW5kaWYKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZUJhc2UoKTsKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoY29uc3QgUHJvdGVjdGlv
blNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVu
dGlhbCwgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcik7CiAKICAgICB1bnNpZ25l
ZCBwcmV2aW91c0ZhaWx1cmVDb3VudCgpIGNvbnN0OwogICAgIGNvbnN0IENyZWRlbnRpYWwmIHBy
b3Bvc2VkQ3JlZGVudGlhbCgpIGNvbnN0OwpAQCAtNzEsMzQgKzQ3LDI0IEBAIHB1YmxpYzoKICAg
ICAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgIHZvaWQgbnVsbGlmeSgpOwotICAgIAot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZCBzZW5kZXIoKSBjb25zdCB7IHJldHVybiBtX3NlbmRl
ci5nZXQoKTsgfQotICAgIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm5zVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKSBjb25zdCB7IHJldHVybiBtX21hY0NoYWxsZW5nZS5nZXQoKTsg
fQotI2VsaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXNvdXJjZUhhbmRsZSogc291cmNlSGFuZGxl
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VIYW5kbGUuZ2V0KCk7IH0KLSAgICBDRlVSTEF1dGhD
aGFsbGVuZ2VSZWYgY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkgY29uc3QgeyByZXR1cm4gbV9jZkNo
YWxsZW5nZS5nZXQoKTsgfQotI2VuZGlmCi1wcml2YXRlOgorCisgICAgc3RhdGljIGJvb2wgY29t
cGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGIpOworCitwcm90ZWN0ZWQ6CisgICAgLy8gVGhlIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIHN1YmNsYXNzIG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBjb21wYXJlIHBs
YXRmb3JtIHNwZWNpZmljIGZpZWxkcworICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShj
b25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKSB7IHJldHVybiB0
cnVlOyB9CisKICAgICBib29sIG1faXNOdWxsOwogICAgIFByb3RlY3Rpb25TcGFjZSBtX3Byb3Rl
Y3Rpb25TcGFjZTsKICAgICBDcmVkZW50aWFsIG1fcHJvcG9zZWRDcmVkZW50aWFsOwogICAgIHVu
c2lnbmVkIG1fcHJldmlvdXNGYWlsdXJlQ291bnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX2Zh
aWx1cmVSZXNwb25zZTsKICAgICBSZXNvdXJjZUVycm9yIG1fZXJyb3I7Ci0KLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgUmV0YWluUHRyPGlkPiBtX3NlbmRlcjsKLSAgICBSZXRhaW5QdHI8TlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqPiBtX21hY0NoYWxsZW5nZTsKLSNlbGlmIFVTRShDRk5F
VFdPUkspCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBtX3NvdXJjZUhhbmRsZTsKLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmPiBtX2NmQ2hhbGxlbmdlOwotI2VuZGlmCi0K
IH07CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwor
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwg
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGIpIHsgcmV0dXJuIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQmFzZTo6Y29tcGFyZShhLCBiKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQorCiB9Ci0jZW5kaWYKIAorI2VuZGlmCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3IuY3BwCShyZXZpc2lv
biAzMDU3NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSwyOSArMCwwIEBACi0vLyAtKi0gbW9kZTogYysrOyBjLWJhc2lj
LW9mZnNldDogNCAtKi0KLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCi0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3IuaAkocmV2aXNpb24gMzA1NzcpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2OCArMCwwIEBA
Ci0vLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpZm5kZWYgUmVzb3VyY2VFcnJvcl9oCi0jZGVmaW5lIFJlc291cmNlRXJyb3JfaAot
Ci0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLQotI2lmIFBMQVRGT1JNKENGKQotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi0jaWZkZWYgX19PQkpDX18KLUBjbGFzcyBO
U0Vycm9yOwotI2Vsc2UKLWNsYXNzIE5TRXJyb3I7Ci0jZW5kaWYKLQotI2lmIFVTRShDRk5FVFdP
UkspCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJlYW0uaD4KLSNlbmRpZgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyBSZXNvdXJjZUVycm9yIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIFJlc291cmNlRXJyb3IoKQotICAgICAgICAgICAgOiBtX2Vycm9yQ29kZSgwKQot
I2lmIFBMQVRGT1JNKENGKQotICAgICAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCi0j
ZW5kaWYKLSAgICAgICAgICAgICwgbV9pc051bGwodHJ1ZSkKLSAgICAgICAgewotICAgICAgICB9
Ci0KLSAgICAgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9y
Q29kZSwgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERl
c2NyaXB0aW9uKQotICAgICAgICAgICAgOiBtX2RvbWFpbihkb21haW4pCi0gICAgICAgICAgICAs
IG1fZXJyb3JDb2RlKGVycm9yQ29kZSkKLSAgICAgICAgICAgICwgbV9mYWlsaW5nVVJMKGZhaWxp
bmdVUkwpCi0gICAgICAgICAgICAsIG1fbG9jYWxpemVkRGVzY3JpcHRpb24obG9jYWxpemVkRGVz
Y3JpcHRpb24pCi0jaWYgUExBVEZPUk0oQ0YpCi0gICAgICAgICAgICAsIG1fZGF0YUlzVXBUb0Rh
dGUodHJ1ZSkKLSNlbmRpZgotICAgICAgICAgICAgLCBtX2lzTnVsbChmYWxzZSkKLSAgICAgICAg
ewotICAgICAgICB9Ci0KLSNpZiBQTEFURk9STShDRikKLSNpZiBQTEFURk9STShNQUMpCi0gICAg
ICAgIFJlc291cmNlRXJyb3IoTlNFcnJvciogZXJyb3IpCi0jZWxzZQotICAgICAgICBSZXNvdXJj
ZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpOwotICAgICAgICBSZXNvdXJjZUVycm9yKENGRXJy
b3JSZWYgZXJyb3IpCi0jZW5kaWYKLSAgICAgICAgICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxz
ZSkKLSAgICAgICAgICAgICwgbV9wbGF0Zm9ybUVycm9yKGVycm9yKQotICAgICAgICAgICAgLCBt
X2lzTnVsbCghZXJyb3IpCi0gICAgICAgIHsKLSAgICAgICAgfQotI2VuZGlmCi0KLSNpZiAwCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgQ29jb2FFcnJvckRvbWFpbjsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IFN0cmluZyBQT1NJWERvbWFpbjsKLSAgICAgICAgc3RhdGljIGNvbnN0IFN0cmlu
ZyBPU1N0YXR1c0RvbWFpbjsKLSAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBNYWNoRG9tYWlu
OwotICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIFdlYktpdERvbWFpbjsKLSNlbmRpZgotCi0g
ICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KLQotICAgICAg
ICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgdW5wYWNrUGxhdGZvcm1FcnJvcklmTmVl
ZGVkKCk7IHJldHVybiBtX2RvbWFpbjsgfQotICAgICAgICBpbnQgZXJyb3JDb2RlKCkgY29uc3Qg
eyB1bnBhY2tQbGF0Zm9ybUVycm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fZXJyb3JDb2RlOyB9Ci0g
ICAgICAgIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgdW5wYWNrUGxhdGZvcm1F
cnJvcklmTmVlZGVkKCk7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KLSAgICAgICAgY29uc3QgU3Ry
aW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbigpIGNvbnN0IHsgdW5wYWNrUGxhdGZvcm1FcnJvcklm
TmVlZGVkKCk7IHJldHVybiBtX2xvY2FsaXplZERlc2NyaXB0aW9uOyB9Ci0KLSNpZiBQTEFURk9S
TShDRikKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIG9wZXJhdG9yIE5TRXJyb3IqKCkgY29u
c3Q7Ci0jZWxzZQotICAgICAgICBvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3Q7Ci0gICAgICAg
IG9wZXJhdG9yIENGU3RyZWFtRXJyb3IoKSBjb25zdDsKLSNlbmRpZgotI2VuZGlmCi0KLSAgICBw
cml2YXRlOgotICAgICAgICB2b2lkIHVucGFja1BsYXRmb3JtRXJyb3JJZk5lZWRlZCgpIGNvbnN0
Ci0gICAgICAgIHsKLSNpZiBQTEFURk9STShDRikKLSAgICAgICAgICAgIGlmICghbV9kYXRhSXNV
cFRvRGF0ZSkKLSAgICAgICAgICAgICAgICBjb25zdF9jYXN0PFJlc291cmNlRXJyb3IqPih0aGlz
KS0+dW5wYWNrUGxhdGZvcm1FcnJvcigpOwotI2VuZGlmCi0gICAgICAgIH0KLQotI2lmIFBMQVRG
T1JNKENGKQotICAgICAgICB2b2lkIHVucGFja1BsYXRmb3JtRXJyb3IoKTsKLSNlbmRpZgotCi0g
ICAgICAgIFN0cmluZyBtX2RvbWFpbjsKLSAgICAgICAgaW50IG1fZXJyb3JDb2RlOwotICAgICAg
ICBTdHJpbmcgbV9mYWlsaW5nVVJMOwotICAgICAgICBTdHJpbmcgbV9sb2NhbGl6ZWREZXNjcmlw
dGlvbjsKLSAKLSNpZiBQTEFURk9STShDRikKLSAgICAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRl
OwotI2VuZGlmCi0jaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBtdXRhYmxlIFJldGFpblB0cjxO
U0Vycm9yPiBtX3BsYXRmb3JtRXJyb3I7Ci0jZWxpZiBQTEFURk9STShDRikKLSAgICAgICAgbXV0
YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0Zm9ybUVycm9yOwotI2VuZGlmCi0gICAg
ICAgIGJvb2wgbV9pc051bGw7Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
c291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpCi17Ci0gICAgaWYgKGEuaXNO
dWxsKCkgJiYgYi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGEuaXNO
dWxsKCkgfHwgYi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmRv
bWFpbigpICE9IGIuZG9tYWluKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5l
cnJvckNvZGUoKSAhPSBiLmVycm9yQ29kZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKGEuZmFpbGluZ1VSTCgpICE9IGIuZmFpbGluZ1VSTCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKGEubG9jYWxpemVkRGVzY3JpcHRpb24oKSAhPSBiLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShDRikKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgaWYgKChOU0Vycm9yICopYSAhPSAoTlNFcnJvciAqKWIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCi0gICAgaWYgKChDRkVycm9yUmVmKWEgIT0gKENGRXJy
b3JSZWYpYikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0jZW5kaWYKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZUVycm9y
JiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUmVzb3VyY2VFcnJvcl9oXwpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCShyZXZp
c2lvbiAzMDA0MykJKGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3Iu
Y3BwOjMwMDQzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisvLyAtKi0gbW9kZTogYysrOyBj
LWJhc2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcAkocmV2aXNpb24gMzAwNDMpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywzICsyNywzNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFJlc291cmNl
RXJyb3JCYXNlOjpsYXp5SW5pdCgpIGNvbnN0Cit7CisgICAgY29uc3RfY2FzdDxSZXNvdXJjZUVy
cm9yKj4oc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VFcnJvcio+KHRoaXMpKS0+cGxhdGZvcm1M
YXp5SW5pdCgpOworfQorCitib29sIFJlc291cmNlRXJyb3JCYXNlOjpjb21wYXJlKGNvbnN0IFJl
c291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpCit7CisgICAgaWYgKGEuaXNO
dWxsKCkgJiYgYi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoYS5p
c051bGwoKSB8fCBiLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
YS5kb21haW4oKSAhPSBiLmRvbWFpbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoYS5lcnJvckNvZGUoKSAhPSBiLmVycm9yQ29kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoYS5mYWlsaW5nVVJMKCkgIT0gYi5mYWlsaW5nVVJMKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChhLmxvY2FsaXplZERlc2NyaXB0aW9uKCkgIT0gYi5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
cGxhdGZvcm1Db21wYXJlKGEsIGIpOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAkocmV2aXNpb24gMzAwNDMpCShmcm9tIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yLmg6MzAwNDMpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE2OCBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJlc291cmNlRXJyb3JfaAorI2RlZmluZSBSZXNvdXJj
ZUVycm9yX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKKyNpZiBQTEFURk9STShD
RikKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmZGVmIF9fT0JKQ19f
CitAY2xhc3MgTlNFcnJvcjsKKyNlbHNlCitjbGFzcyBOU0Vycm9yOworI2VuZGlmCisKKyNpZiBV
U0UoQ0ZORVRXT1JLKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyZWFtLmg+CisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgUmVzb3VyY2VFcnJvciB7Cisg
ICAgcHVibGljOgorICAgICAgICBSZXNvdXJjZUVycm9yKCkKKyAgICAgICAgICAgIDogbV9lcnJv
ckNvZGUoMCkKKyNpZiBQTEFURk9STShDRikKKyAgICAgICAgICAgICwgbV9kYXRhSXNVcFRvRGF0
ZSh0cnVlKQorI2VuZGlmCisgICAgICAgICAgICAsIG1faXNOdWxsKHRydWUpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4s
IGludCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgICAgIDogbV9kb21haW4oZG9tYWluKQorICAg
ICAgICAgICAgLCBtX2Vycm9yQ29kZShlcnJvckNvZGUpCisgICAgICAgICAgICAsIG1fZmFpbGlu
Z1VSTChmYWlsaW5nVVJMKQorICAgICAgICAgICAgLCBtX2xvY2FsaXplZERlc2NyaXB0aW9uKGxv
Y2FsaXplZERlc2NyaXB0aW9uKQorI2lmIFBMQVRGT1JNKENGKQorICAgICAgICAgICAgLCBtX2Rh
dGFJc1VwVG9EYXRlKHRydWUpCisjZW5kaWYKKyAgICAgICAgICAgICwgbV9pc051bGwoZmFsc2Up
CisgICAgICAgIHsKKyAgICAgICAgfQorCisjaWYgUExBVEZPUk0oQ0YpCisjaWYgUExBVEZPUk0o
TUFDKQorICAgICAgICBSZXNvdXJjZUVycm9yKE5TRXJyb3IqIGVycm9yKQorI2Vsc2UKKyAgICAg
ICAgUmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVycm9yKTsKKyAgICAgICAgUmVzb3VyY2VF
cnJvcihDRkVycm9yUmVmIGVycm9yKQorI2VuZGlmCisgICAgICAgICAgICA6IG1fZGF0YUlzVXBU
b0RhdGUoZmFsc2UpCisgICAgICAgICAgICAsIG1fcGxhdGZvcm1FcnJvcihlcnJvcikKKyAgICAg
ICAgICAgICwgbV9pc051bGwoIWVycm9yKQorICAgICAgICB7CisgICAgICAgIH0KKyNlbmRpZgor
CisjaWYgMAorICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIENvY29hRXJyb3JEb21haW47Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgUE9TSVhEb21haW47CisgICAgICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcgT1NTdGF0dXNEb21haW47CisgICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcg
TWFjaERvbWFpbjsKKyAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBXZWJLaXREb21haW47Cisj
ZW5kaWYKKworICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9
CisKKyAgICAgICAgY29uc3QgU3RyaW5nJiBkb21haW4oKSBjb25zdCB7IHVucGFja1BsYXRmb3Jt
RXJyb3JJZk5lZWRlZCgpOyByZXR1cm4gbV9kb21haW47IH0KKyAgICAgICAgaW50IGVycm9yQ29k
ZSgpIGNvbnN0IHsgdW5wYWNrUGxhdGZvcm1FcnJvcklmTmVlZGVkKCk7IHJldHVybiBtX2Vycm9y
Q29kZTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHVucGFj
a1BsYXRmb3JtRXJyb3JJZk5lZWRlZCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CisgICAgICAg
IGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24oKSBjb25zdCB7IHVucGFja1BsYXRm
b3JtRXJyb3JJZk5lZWRlZCgpOyByZXR1cm4gbV9sb2NhbGl6ZWREZXNjcmlwdGlvbjsgfQorCisj
aWYgUExBVEZPUk0oQ0YpCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBvcGVyYXRvciBOU0Vy
cm9yKigpIGNvbnN0OworI2Vsc2UKKyAgICAgICAgb3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbnN0
OworICAgICAgICBvcGVyYXRvciBDRlN0cmVhbUVycm9yKCkgY29uc3Q7CisjZW5kaWYKKyNlbmRp
ZgorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCB1bnBhY2tQbGF0Zm9ybUVycm9ySWZOZWVk
ZWQoKSBjb25zdAorICAgICAgICB7CisjaWYgUExBVEZPUk0oQ0YpCisgICAgICAgICAgICBpZiAo
IW1fZGF0YUlzVXBUb0RhdGUpCisgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJjZUVy
cm9yKj4odGhpcyktPnVucGFja1BsYXRmb3JtRXJyb3IoKTsKKyNlbmRpZgorICAgICAgICB9CisK
KyNpZiBQTEFURk9STShDRikKKyAgICAgICAgdm9pZCB1bnBhY2tQbGF0Zm9ybUVycm9yKCk7Cisj
ZW5kaWYKKworICAgICAgICBTdHJpbmcgbV9kb21haW47CisgICAgICAgIGludCBtX2Vycm9yQ29k
ZTsKKyAgICAgICAgU3RyaW5nIG1fZmFpbGluZ1VSTDsKKyAgICAgICAgU3RyaW5nIG1fbG9jYWxp
emVkRGVzY3JpcHRpb247CisgCisjaWYgUExBVEZPUk0oQ0YpCisgICAgICAgIGJvb2wgbV9kYXRh
SXNVcFRvRGF0ZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgbXV0YWJsZSBS
ZXRhaW5QdHI8TlNFcnJvcj4gbV9wbGF0Zm9ybUVycm9yOworI2VsaWYgUExBVEZPUk0oQ0YpCisg
ICAgICAgIG11dGFibGUgUmV0YWluUHRyPENGRXJyb3JSZWY+IG1fcGxhdGZvcm1FcnJvcjsKKyNl
bmRpZgorICAgICAgICBib29sIG1faXNOdWxsOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKQoreworICAg
IGlmIChhLmlzTnVsbCgpICYmIGIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChhLmlzTnVsbCgpIHx8IGIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoYS5kb21haW4oKSAhPSBiLmRvbWFpbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKGEuZXJyb3JDb2RlKCkgIT0gYi5lcnJvckNvZGUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChhLmZhaWxpbmdVUkwoKSAhPSBiLmZhaWxpbmdVUkwoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChhLmxvY2FsaXplZERlc2NyaXB0aW9uKCkgIT0gYi5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgUExBVEZPUk0o
Q0YpCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICgoTlNFcnJvciAqKWEgIT0gKE5TRXJyb3Ig
KiliKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZWxzZQorICAgIGlmICgoQ0ZFcnJvclJlZilh
ICE9IChDRkVycm9yUmVmKWIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2VuZGlm
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVz
b3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikgeyByZXR1cm4gIShhID09IGIp
OyB9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlc291cmNlRXJyb3Jf
aF8KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5o
CShyZXZpc2lvbiAzMDA0MykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVy
cm9yQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNDUgKzI0LDYwIEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKICAqLwogCi0jaWZuZGVmIFJlc291cmNlRXJyb3JfaAotI2RlZmluZSBSZXNvdXJjZUVy
cm9yX2gKKyNpZm5kZWYgUmVzb3VyY2VFcnJvckJhc2VfaAorI2RlZmluZSBSZXNvdXJjZUVycm9y
QmFzZV9oCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCi0jaWYgUExBVEZPUk0oQ0Yp
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLSNpZmRlZiBfX09CSkNfXwot
QGNsYXNzIE5TRXJyb3I7Ci0jZWxzZQotY2xhc3MgTlNFcnJvcjsKLSNlbmRpZgotCi0jaWYgVVNF
KENGTkVUV09SSykKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmVhbS5oPgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFJlc291cmNlRXJyb3IgewotICAg
IHB1YmxpYzoKLSAgICAgICAgUmVzb3VyY2VFcnJvcigpCi0gICAgICAgICAgICA6IG1fZXJyb3JD
b2RlKDApCi0jaWYgUExBVEZPUk0oQ0YpCi0gICAgICAgICAgICAsIG1fZGF0YUlzVXBUb0RhdGUo
dHJ1ZSkKLSNlbmRpZgotICAgICAgICAgICAgLCBtX2lzTnVsbCh0cnVlKQotICAgICAgICB7Ci0g
ICAgICAgIH0KLQotICAgICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBp
bnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9j
YWxpemVkRGVzY3JpcHRpb24pCi0gICAgICAgICAgICA6IG1fZG9tYWluKGRvbWFpbikKLSAgICAg
ICAgICAgICwgbV9lcnJvckNvZGUoZXJyb3JDb2RlKQotICAgICAgICAgICAgLCBtX2ZhaWxpbmdV
UkwoZmFpbGluZ1VSTCkKLSAgICAgICAgICAgICwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbihsb2Nh
bGl6ZWREZXNjcmlwdGlvbikKLSNpZiBQTEFURk9STShDRikKLSAgICAgICAgICAgICwgbV9kYXRh
SXNVcFRvRGF0ZSh0cnVlKQotI2VuZGlmCi0gICAgICAgICAgICAsIG1faXNOdWxsKGZhbHNlKQot
ICAgICAgICB7Ci0gICAgICAgIH0KLQotI2lmIFBMQVRGT1JNKENGKQotI2lmIFBMQVRGT1JNKE1B
QykKLSAgICAgICAgUmVzb3VyY2VFcnJvcihOU0Vycm9yKiBlcnJvcikKLSNlbHNlCi0gICAgICAg
IFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7Ci0gICAgICAgIFJlc291cmNlRXJy
b3IoQ0ZFcnJvclJlZiBlcnJvcikKLSNlbmRpZgotICAgICAgICAgICAgOiBtX2RhdGFJc1VwVG9E
YXRlKGZhbHNlKQotICAgICAgICAgICAgLCBtX3BsYXRmb3JtRXJyb3IoZXJyb3IpCi0gICAgICAg
ICAgICAsIG1faXNOdWxsKCFlcnJvcikKLSAgICAgICAgewotICAgICAgICB9Ci0jZW5kaWYKLQot
I2lmIDAKLSAgICAgICAgc3RhdGljIGNvbnN0IFN0cmluZyBDb2NvYUVycm9yRG9tYWluOwotICAg
ICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIFBPU0lYRG9tYWluOwotICAgICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nIE9TU3RhdHVzRG9tYWluOwotICAgICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIE1h
Y2hEb21haW47Ci0gICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgV2ViS2l0RG9tYWluOwotI2Vu
ZGlmCi0KLSAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQot
Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyB1bnBhY2tQbGF0Zm9ybUVy
cm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fZG9tYWluOyB9Ci0gICAgICAgIGludCBlcnJvckNvZGUo
KSBjb25zdCB7IHVucGFja1BsYXRmb3JtRXJyb3JJZk5lZWRlZCgpOyByZXR1cm4gbV9lcnJvckNv
ZGU7IH0KLSAgICAgICAgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJMKCkgY29uc3QgeyB1bnBhY2tQ
bGF0Zm9ybUVycm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQotICAgICAgICBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKCkgY29uc3QgeyB1bnBhY2tQbGF0Zm9y
bUVycm9ySWZOZWVkZWQoKTsgcmV0dXJuIG1fbG9jYWxpemVkRGVzY3JpcHRpb247IH0KLQotI2lm
IFBMQVRGT1JNKENGKQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgb3BlcmF0b3IgTlNFcnJv
ciooKSBjb25zdDsKLSNlbHNlCi0gICAgICAgIG9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdDsK
LSAgICAgICAgb3BlcmF0b3IgQ0ZTdHJlYW1FcnJvcigpIGNvbnN0OwotI2VuZGlmCi0jZW5kaWYK
LQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgdW5wYWNrUGxhdGZvcm1FcnJvcklmTmVlZGVk
KCkgY29uc3QKLSAgICAgICAgewotI2lmIFBMQVRGT1JNKENGKQotICAgICAgICAgICAgaWYgKCFt
X2RhdGFJc1VwVG9EYXRlKQotICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VFcnJv
cio+KHRoaXMpLT51bnBhY2tQbGF0Zm9ybUVycm9yKCk7Ci0jZW5kaWYKLSAgICAgICAgfQotCi0j
aWYgUExBVEZPUk0oQ0YpCi0gICAgICAgIHZvaWQgdW5wYWNrUGxhdGZvcm1FcnJvcigpOwotI2Vu
ZGlmCi0KLSAgICAgICAgU3RyaW5nIG1fZG9tYWluOwotICAgICAgICBpbnQgbV9lcnJvckNvZGU7
Ci0gICAgICAgIFN0cmluZyBtX2ZhaWxpbmdVUkw7Ci0gICAgICAgIFN0cmluZyBtX2xvY2FsaXpl
ZERlc2NyaXB0aW9uOwotIAotI2lmIFBMQVRGT1JNKENGKQotICAgICAgICBib29sIG1fZGF0YUlz
VXBUb0RhdGU7Ci0jZW5kaWYKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIG11dGFibGUgUmV0
YWluUHRyPE5TRXJyb3I+IG1fcGxhdGZvcm1FcnJvcjsKLSNlbGlmIFBMQVRGT1JNKENGKQotICAg
ICAgICBtdXRhYmxlIFJldGFpblB0cjxDRkVycm9yUmVmPiBtX3BsYXRmb3JtRXJyb3I7Ci0jZW5k
aWYKLSAgICAgICAgYm9vbCBtX2lzTnVsbDsKLX07CitjbGFzcyBSZXNvdXJjZUVycm9yOwogCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGIpCi17Ci0gICAgaWYgKGEuaXNOdWxsKCkgJiYgYi5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGEuaXNOdWxsKCkgfHwgYi5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmRvbWFpbigpICE9IGIuZG9tYWluKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5lcnJvckNvZGUoKSAhPSBiLmVycm9yQ29kZSgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuZmFpbGluZ1VSTCgpICE9IGIuZmFp
bGluZ1VSTCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEubG9jYWxpemVkRGVz
Y3JpcHRpb24oKSAhPSBiLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSNpZiBQTEFURk9STShDRikKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKChOU0Vy
cm9yICopYSAhPSAoTlNFcnJvciAqKWIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCi0g
ICAgaWYgKChDRkVycm9yUmVmKWEgIT0gKENGRXJyb3JSZWYpYikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi0jZW5kaWYKLSAgICByZXR1cm4gdHJ1ZTsKLX0KK2NsYXNzIFJlc291cmNl
RXJyb3JCYXNlIHsKK3B1YmxpYzoKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNOdWxsOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgbGF6eUluaXQo
KTsgcmV0dXJuIG1fZG9tYWluOyB9CisgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgbGF6eUlu
aXQoKTsgcmV0dXJuIG1fZXJyb3JDb2RlOyB9CisgICAgY29uc3QgU3RyaW5nJiBmYWlsaW5nVVJM
KCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CisgICAgY29uc3Qg
U3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbigpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJu
IG1fbG9jYWxpemVkRGVzY3JpcHRpb247IH0KKworICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29u
c3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYik7CisKK3Byb3RlY3Rl
ZDoKKyAgICBSZXNvdXJjZUVycm9yQmFzZSgpCisgICAgICAgIDogbV9lcnJvckNvZGUoMCkKKyAg
ICAgICAgLCBtX2lzTnVsbCh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICBSZXNvdXJjZUVycm9y
QmFzZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBm
YWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgICAgICA6
IG1fZG9tYWluKGRvbWFpbikKKyAgICAgICAgLCBtX2Vycm9yQ29kZShlcnJvckNvZGUpCisgICAg
ICAgICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCisgICAgICAgICwgbV9sb2NhbGl6ZWREZXNj
cmlwdGlvbihsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX2lzTnVsbChmYWxzZSkK
KyAgICB7CisgICAgfQorCisgICAgdm9pZCBsYXp5SW5pdCgpIGNvbnN0OworCisgICAgLy8gVGhl
IFJlc291cmNlRXJyb3Igc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGxhemls
eSBpbml0aWFsaXplIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxkcworICAgIHZvaWQgcGxhdGZvcm1M
YXp5SW5pdCgpIHt9CisKKyAgICAvLyBUaGUgUmVzb3VyY2VFcnJvciBzdWJjbGFzcyBtYXkgInNo
YWRvdyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWVsZHMKKyAg
ICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29u
c3QgUmVzb3VyY2VFcnJvciYgYikgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgU3RyaW5nIG1fZG9t
YWluOworICAgIGludCBtX2Vycm9yQ29kZTsKKyAgICBTdHJpbmcgbV9mYWlsaW5nVVJMOworICAg
IFN0cmluZyBtX2xvY2FsaXplZERlc2NyaXB0aW9uOworICAgIGJvb2wgbV9pc051bGw7Cit9Owog
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGIpIHsgcmV0dXJuIFJlc291cmNlRXJyb3JCYXNlOjpjb21wYXJlKGEsIGIp
OyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBSZXNvdXJjZUVycm9yX2hfCisjZW5kaWYgLy8gUmVzb3Vy
Y2VFcnJvckJhc2VfaF8KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmNwcAkocmV2aXNpb24gMzA1NzcpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCwxNCArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YXNSZXNvdXJjZVJlc3BvbnNlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gKnN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9uc2Uq
Pih0aGlzKTsKLX0KLQogYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNIVFRQKCkgY29uc3QK
IHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbGF6eUluaXQoKTsKIAogICAg
IFN0cmluZyBwcm90b2NvbCA9IG1fdXJsLnByb3RvY29sKCk7CiAKQEAgLTQ2LDE0ICs0MSwxNCBA
QCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0hUVFAoKSBjb25zCiAKIGNvbnN0IEtVUkwm
IFJlc291cmNlUmVzcG9uc2VCYXNlOjp1cmwoKSBjb25zdAogewotICAgIHVwZGF0ZVJlc291cmNl
UmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogICAgIAogICAgIHJldHVybiBtX3VybDsgCiB9
CiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFVybChjb25zdCBLVVJMJiB1cmwpCiB7
Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7CiAgICAgbV9p
c051bGwgPSBmYWxzZTsKICAgICAKICAgICBtX3VybCA9IHVybDsgCkBAIC02MSwxNCArNTYsMTQg
QEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0VXJsKGNvbnN0IAogCiBjb25zdCBTdHJp
bmcmIFJlc291cmNlUmVzcG9uc2VCYXNlOjptaW1lVHlwZSgpIGNvbnN0CiB7Ci0gICAgdXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7CiAKICAgICByZXR1cm4gbV9taW1l
VHlwZTsgCiB9CiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldE1pbWVUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAg
IGxhenlJbml0KCk7CiAgICAgbV9pc051bGwgPSBmYWxzZTsKICAgICAKICAgICBtX21pbWVUeXBl
ID0gbWltZVR5cGU7IApAQCAtNzYsMTQgKzcxLDE0IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OnNldE1pbWVUeXBlKGMKIAogbG9uZyBsb25nIFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBl
Y3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdCAKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNl
KCk7CisgICAgbGF6eUluaXQoKTsKIAogICAgIHJldHVybiBtX2V4cGVjdGVkQ29udGVudExlbmd0
aDsKIH0KIAogdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0RXhwZWN0ZWRDb250ZW50TGVu
Z3RoKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgpCiB7Ci0gICAgdXBkYXRlUmVzb3Vy
Y2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7CiAgICAgbV9pc051bGwgPSBmYWxzZTsKICAg
ICAKICAgICBtX2V4cGVjdGVkQ29udGVudExlbmd0aCA9IGV4cGVjdGVkQ29udGVudExlbmd0aDsg
CkBAIC05MSwxNCArODYsMTQgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0RXhwZWN0
ZWRDbwogCiBjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2VCYXNlOjp0ZXh0RW5jb2RpbmdO
YW1lKCkgY29uc3QKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbGF6eUlu
aXQoKTsKIAogICAgIHJldHVybiBtX3RleHRFbmNvZGluZ05hbWU7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OnNldFRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGlu
Z05hbWUpCiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7
CiAgICAgbV9pc051bGwgPSBmYWxzZTsKICAgICAKICAgICBtX3RleHRFbmNvZGluZ05hbWUgPSBl
bmNvZGluZ05hbWU7IApAQCAtMTA3LDE0ICsxMDIsMTQgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6c2V0VGV4dEVuY29kaQogLy8gRklYTUUgc2hvdWxkIGNvbXB1dGUgdGhpcyBvbiB0aGUg
Zmx5CiBjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzdWdnZXN0ZWRGaWxlbmFt
ZSgpIGNvbnN0CiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0
KCk7CiAKICAgICByZXR1cm4gbV9zdWdnZXN0ZWRGaWxlbmFtZTsKIH0KIAogdm9pZCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWROYW1lKQogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgp
OwogICAgIG1faXNOdWxsID0gZmFsc2U7CiAgICAgCiAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9
IHN1Z2dlc3RlZE5hbWU7IApAQCAtMTIyLDU2ICsxMTcsNTYgQEAgdm9pZCBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6c2V0U3VnZ2VzdGVkRgogCiBpbnQgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBT
dGF0dXNDb2RlKCkgY29uc3QKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAg
bGF6eUluaXQoKTsKIAogICAgIHJldHVybiBtX2h0dHBTdGF0dXNDb2RlOwogfQogCiB2b2lkIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKIHsK
LSAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbGF6eUluaXQoKTsKIAogICAgIG1f
aHR0cFN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlOwogfQogCiBjb25zdCBTdHJpbmcmIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpodHRwU3RhdHVzVGV4dCgpIGNvbnN0IAogewotICAgIHVwZGF0ZVJlc291
cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgcmV0dXJuIG1faHR0cFN0YXR1
c1RleHQ7IAogfQogCiB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRIVFRQU3RhdHVzVGV4
dChjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQpIAogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9u
c2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgbV9odHRwU3RhdHVzVGV4dCA9IHN0YXR1c1Rl
eHQ7IAogfQogCiBTdHJpbmcgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omh0dHBIZWFkZXJGaWVsZChj
b25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgp
OworICAgIGxhenlJbml0KCk7CiAKICAgICByZXR1cm4gbV9odHRwSGVhZGVyRmllbGRzLmdldChu
YW1lKTsgCiB9CiAKIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldEhUVFBIZWFkZXJGaWVs
ZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgdXBkYXRl
UmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7CiAKICAgICBtX2h0dHBIZWFkZXJG
aWVsZHMuc2V0KG5hbWUsIHZhbHVlKTsKIH0KIAogY29uc3QgSFRUUEhlYWRlck1hcCYgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6Omh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdAogewotICAgIHVwZGF0ZVJl
c291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgcmV0dXJuIG1faHR0cEhl
YWRlckZpZWxkczsgCiB9CiAKIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVu
dCgpIGNvbnN0CiB7Ci0gICAgdXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0
KCk7CiAKICAgICBTdHJpbmcgdmFsdWUgPSBtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KCJDb250ZW50
LURpc3Bvc2l0aW9uIik7CiAgICAgaW50IGxvYyA9IHZhbHVlLmZpbmQoJzsnKTsKQEAgLTE4Myw0
MyArMTc4LDM4IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzQXR0YWNobWVudCgKIAog
dm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0RXhwaXJhdGlvbkRhdGUodGltZV90IGV4cGly
YXRpb25EYXRlKQogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBsYXp5SW5p
dCgpOwogCiAgICAgbV9leHBpcmF0aW9uRGF0ZSA9IGV4cGlyYXRpb25EYXRlOwogfQogCiB0aW1l
X3QgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyYXRpb25EYXRlKCkgY29uc3QKIHsKLSAgICB1
cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbGF6eUluaXQoKTsKIAogICAgIHJldHVybiBt
X2V4cGlyYXRpb25EYXRlOyAKIH0KIAogdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0TGFz
dE1vZGlmaWVkRGF0ZSh0aW1lX3QgbGFzdE1vZGlmaWVkRGF0ZSkgCiB7Ci0gICAgdXBkYXRlUmVz
b3VyY2VSZXNwb25zZSgpOworICAgIGxhenlJbml0KCk7CiAKICAgICBtX2xhc3RNb2RpZmllZERh
dGUgPSBsYXN0TW9kaWZpZWREYXRlOwogfQogCiB0aW1lX3QgUmVzb3VyY2VSZXNwb25zZUJhc2U6
Omxhc3RNb2RpZmllZERhdGUoKSBjb25zdAogewotICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2Uo
KTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgcmV0dXJuIG1fbGFzdE1vZGlmaWVkRGF0ZTsKIH0K
IAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpIGNv
bnN0Cit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXp5SW5pdCgpIGNvbnN0CiB7Ci0gICAg
aWYgKG1faXNVcFRvRGF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3RfY2FzdDxSZXNv
dXJjZVJlc3BvbnNlJj4oYXNSZXNvdXJjZVJlc3BvbnNlKCkpLmRvVXBkYXRlUmVzb3VyY2VSZXNw
b25zZSgpOwotCi0gICAgbV9pc1VwVG9EYXRlID0gdHJ1ZTsKKyAgICBjb25zdF9jYXN0PFJlc291
cmNlUmVzcG9uc2UqPihzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZVJlc3BvbnNlKj4odGhpcykp
LT5wbGF0Zm9ybUxhenlJbml0KCk7CiB9CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKQorYm9vbCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBiKQogewogICAgIGlmIChhLmlzTnVsbCgpICE9IGIuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsgIApAQCAtMjQxLDExICsyMzEsNyBAQCBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoYS5leHBpcmF0aW9uRGF0ZSgpICE9IGIuZXhwaXJhdGlvbkRhdGUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoYS5uc1VSTFJlc3BvbnNlKCkg
IT0gYi5uc1VSTFJlc3BvbnNlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAg
IHJldHVybiB0cnVlOwotIH0KKyAgICByZXR1cm4gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1D
b21wYXJlKGEsIGIpOworfQogCiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkocmV2aXNpb24gMzA1NzcpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NzcsMjEgKzc3LDE2IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKICAgICB2b2lkIHNl
dExhc3RNb2RpZmllZERhdGUodGltZV90KTsKICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkRGF0ZSgp
IGNvbnN0OwogCi0gICAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGFzUmVzb3VyY2VS
ZXNwb25zZSgpIGNvbnN0OworICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYik7CiAKLSBwcm90ZWN0ZWQ6Ci0g
ICAgLy8gVXNlZCB3aGVuIHJlc3BvbnNlIGlzIGluaXRpYWxpemVkIGZyb20gYSBwbGF0Zm9ybSBy
ZXByZXNlbnRhdGlvbgotICAgIFJlc291cmNlUmVzcG9uc2VCYXNlKGJvb2wgaXNOdWxsKQotICAg
ICAgICA6IG1faXNVcFRvRGF0ZShmYWxzZSkKLSAgICAgICAgLCBtX2lzTnVsbChpc051bGwpCi0g
ICAgewotICAgIH0KKyAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhc1Jlc291cmNlUmVzcG9u
c2UoKSBjb25zdDsKIAorIHByb3RlY3RlZDoKICAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZSgpICAK
ICAgICAgICAgOiBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQogICAgICAgICAsIG1faHR0cFN0
YXR1c0NvZGUoMCkKICAgICAgICAgLCBtX2V4cGlyYXRpb25EYXRlKDApCi0gICAgICAgICwgbV9p
c1VwVG9EYXRlKHRydWUpCisgICAgICAgICwgbV9sYXN0TW9kaWZpZWREYXRlKDApCiAgICAgICAg
ICwgbV9pc051bGwodHJ1ZSkKICAgICB7CiAgICAgfQpAQCAtMTA0LDI5ICs5OSwzNCBAQCBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CiAgICAgICAgICwgbV9zdWdnZXN0ZWRGaWxlbmFtZShm
aWxlbmFtZSkKICAgICAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCiAgICAgICAgICwgbV9leHBp
cmF0aW9uRGF0ZSgwKQotICAgICAgICAsIG1faXNVcFRvRGF0ZSh0cnVlKQorICAgICAgICAsIG1f
bGFzdE1vZGlmaWVkRGF0ZSgwKQogICAgICAgICAsIG1faXNOdWxsKGZhbHNlKQogICAgIHsKICAg
ICB9CiAKLSAgICB2b2lkIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKSBjb25zdDsKKyAgICB2b2lk
IGxhenlJbml0KCkgY29uc3Q7CisKKyAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBzdWJjbGFz
cyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gbGF6aWx5IGluaXRpYWxpemUgcGxhdGZvcm0g
c3BlY2lmaWMgZmllbGRzCisgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0KCkge30KKworICAgIC8v
IFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0
byBjb21wYXJlIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxkcworICAgIHN0YXRpYyBib29sIHBsYXRm
b3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiBiKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBLVVJMIG1fdXJsOwogICAgIFN0cmluZyBt
X21pbWVUeXBlOwogICAgIGxvbmcgbG9uZyBtX2V4cGVjdGVkQ29udGVudExlbmd0aDsKICAgICBT
dHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAgIFN0cmluZyBtX3N1Z2dlc3RlZEZpbGVuYW1l
OwotICAgIG11dGFibGUgaW50IG1faHR0cFN0YXR1c0NvZGU7CisgICAgaW50IG1faHR0cFN0YXR1
c0NvZGU7CiAgICAgU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7CiAgICAgSFRUUEhlYWRlck1hcCBt
X2h0dHBIZWFkZXJGaWVsZHM7CiAgICAgdGltZV90IG1fZXhwaXJhdGlvbkRhdGU7CiAgICAgdGlt
ZV90IG1fbGFzdE1vZGlmaWVkRGF0ZTsKLSAgICBtdXRhYmxlIGJvb2wgbV9pc1VwVG9EYXRlOwog
ICAgIGJvb2wgbV9pc051bGw7CiAKIH07CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBiKTsKK2lubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoYSwgYik7IH0KIGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlv
bkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAJKHJldmlzaW9uIDMwNTc3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxOCArMzcs
NDIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdl
LCBSZXNvdXJjZUhhbmRsZSogc291cmNlSGFuZGxlKQotICAgIDogbV9pc051bGwoZmFsc2UpCi0g
ICAgLCBtX3Byb3RlY3Rpb25TcGFjZShjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rp
b25TcGFjZShjZkNoYWxsZW5nZSkpKQotICAgICwgbV9wcm9wb3NlZENyZWRlbnRpYWwoY29yZShD
RlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm9wb3NlZENyZWRlbnRpYWwoY2ZDaGFsbGVuZ2UpKSkKLSAg
ICAsIG1fcHJldmlvdXNGYWlsdXJlQ291bnQoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJldmlvdXNG
YWlsdXJlQ291bnQoY2ZDaGFsbGVuZ2UpKQotICAgICwgbV9mYWlsdXJlUmVzcG9uc2UoKENGVVJM
UmVzcG9uc2VSZWYpQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNmQ2hhbGxl
bmdlKSkKLSAgICAsIG1fZXJyb3IoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RXJyb3IoY2ZDaGFsbGVu
Z2UpKQorQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2Vk
Q3JlZGVudGlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKKyAgICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
QmFzZShwcm90ZWN0aW9uU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvcG9zZWRDcmVkZW50aWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
ZXZpb3VzRmFpbHVyZUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKQoreworfQor
CitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxB
dXRoQ2hhbGxlbmdlUmVmIGNmQ2hhbGxlbmdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlSGFuZGxlKiBzb3VyY2VIYW5kbGUpCisgICAg
OiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQ
cm90ZWN0aW9uU3BhY2UoY2ZDaGFsbGVuZ2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3Bvc2VkQ3JlZGVudGlhbChjZkNo
YWxsZW5nZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGVVJMQXV0aENo
YWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNmQ2hhbGxlbmdlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoQ0ZVUkxSZXNwb25zZVJlZilDRlVSTEF1dGhDaGFsbGVu
Z2VHZXRGYWlsdXJlUmVzcG9uc2UoY2ZDaGFsbGVuZ2UpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENGVVJMQXV0aENoYWxsZW5nZUdldEVycm9yKGNmQ2hhbGxlbmdlKSkKICAg
ICAsIG1fc291cmNlSGFuZGxlKHNvdXJjZUhhbmRsZSkKICAgICAsIG1fY2ZDaGFsbGVuZ2UoY2ZD
aGFsbGVuZ2UpCiB7CiB9CiAKK2Jvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnBsYXRmb3Jt
Q29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYSwgY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGIpCit7CisgICAgaWYgKGEuc291cmNlSGFuZGxlKCkgIT0gYi5zb3Vy
Y2VIYW5kbGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEuY2ZVUkxBdXRo
Q2hhbGxlbmdlUmVmKCkgIT0gYi5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogQ0ZVUkxBdXRoQ2hh
bGxlbmdlUmVmIGNyZWF0ZUNGKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hh
bGxlbmdlKQogeyAgCiAgICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNl
ID0gY3JlYXRlQ0YoY29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisjaWZuZGVmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKyNkZWZpbmUgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VfaAorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlLmgi
CisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K3R5cGVkZWYgc3RydWN0IF9DRlVSTEF1dGhDaGFsbGVuZ2UqIENGVVJMQXV0aENoYWxsZW5nZVJl
ZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZXNvdXJjZUhhbmRsZTsKKworY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgOiBwdWJsaWMgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VCYXNlIHsKK3B1YmxpYzoKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHt9CisgICAg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9u
U3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwgdW5zaWduZWQgcHJl
dmlvdXNGYWlsdXJlQ291bnQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcik7CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZV
UkxBdXRoQ2hhbGxlbmdlUmVmLCBSZXNvdXJjZUhhbmRsZSogc291cmNlSGFuZGxlKTsKKworICAg
IFJlc291cmNlSGFuZGxlKiBzb3VyY2VIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUhh
bmRsZS5nZXQoKTsgfQorICAgIENGVVJMQXV0aENoYWxsZW5nZVJlZiBjZlVSTEF1dGhDaGFsbGVu
Z2VSZWYoKSBjb25zdCB7IHJldHVybiBtX2NmQ2hhbGxlbmdlLmdldCgpOyB9CisKK3ByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTsKKyAgICBzdGF0
aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEs
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKTsKKworICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gbV9zb3VyY2VIYW5kbGU7CisgICAgUmV0YWluUHRyPENGVVJMQXV0aENoYWxsZW5n
ZVJlZj4gbV9jZkNoYWxsZW5nZTsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc0IEBACisvLyAtKi0gbW9kZTogYysrOyBjLWJhc2ljLW9mZnNldDogNCAtKi0KKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmVzb3VyY2VFcnJvcl9oCisjZGVmaW5lIFJlc291
cmNlRXJyb3JfaAorCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvckJhc2UuaCIKKworI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmVhbS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMgUmVz
b3VyY2VFcnJvckJhc2UgeworcHVibGljOgorICAgIFJlc291cmNlRXJyb3IoKQorICAgICAgICA6
IG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKKyAgICB7CisgICAgfQorCisgICAgUmVzb3VyY2VFcnJv
cihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBmYWls
aW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgICAgICA6IFJl
c291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWRE
ZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCisgICAgeworICAg
IH0KKworICAgIFJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcik7CisKKyAgICBSZXNv
dXJjZUVycm9yKENGRXJyb3JSZWYgZXJyb3IpCisgICAgICAgIDogbV9kYXRhSXNVcFRvRGF0ZShm
YWxzZSkKKyAgICAgICAgLCBtX3BsYXRmb3JtRXJyb3IoZXJyb3IpCisgICAgeworICAgICAgICBt
X2lzTnVsbCA9ICFlcnJvcjsKKyAgICB9CisKKyAgICBvcGVyYXRvciBDRkVycm9yUmVmKCkgY29u
c3Q7CisgICAgb3BlcmF0b3IgQ0ZTdHJlYW1FcnJvcigpIGNvbnN0OworCitwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBSZXNvdXJjZUVycm9yQmFzZTsKKworICAgIHZvaWQgcGxhdGZvcm1MYXp5
SW5pdCgpOworICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZUVy
cm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKTsKKworICAgIGJvb2wgbV9kYXRhSXNVcFRv
RGF0ZTsKKyAgICBtdXRhYmxlIFJldGFpblB0cjxDRkVycm9yUmVmPiBtX3BsYXRmb3JtRXJyb3I7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZXNvdXJjZUVycm9y
X2hfCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJv
ckNGLmNwcAkocmV2aXNpb24gMzA1NzcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvckNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTAgKzQ1LDExIEBAIGNv
bnN0IENGU3RyaW5nUmVmIGZhaWxpbmdVUkxLZXkgPSBDRlNUUigKIAogLy8gRklYTUU6IE9uY2Ug
PHJkYXI6Ly9wcm9ibGVtLzUwNTA4NDE+IGlzIGZpeGVkIHdlIGNhbiByZW1vdmUgdGhpcyBjb25z
dHJ1Y3Rvci4KIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJv
cikKLSAgICA6IG1fZXJyb3JDb2RlKGVycm9yLmVycm9yKQotICAgICwgbV9pc051bGwoZmFsc2Up
Ci0gICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCisgICAgOiBtX2RhdGFJc1VwVG9EYXRlKHRy
dWUpCiB7CisgICAgbV9pc051bGwgPSBmYWxzZTsKKyAgICBtX2Vycm9yQ29kZSA9IGVycm9yLmVy
cm9yOworCiAgICAgc3dpdGNoKGVycm9yLmRvbWFpbikgewogICAgIGNhc2Uga0NGU3RyZWFtRXJy
b3JEb21haW5DdXN0b206CiAgICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7
CkBAIC02Miw4ICs2MywxMSBAQCBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGU3RyZWFt
RXJyCiAgICAgfQogfQogCi12b2lkIFJlc291cmNlRXJyb3I6OnVucGFja1BsYXRmb3JtRXJyb3Io
KQordm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKIHsKKyAgICBpZiAobV9k
YXRhSXNVcFRvRGF0ZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFtX3BsYXRmb3JtRXJy
b3IpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTAyLDYgKzEwNiwxMSBAQCB2b2lkIFJlc291cmNl
RXJyb3I6OnVucGFja1BsYXRmb3JtRXJyb3IoCiAgICAgbV9kYXRhSXNVcFRvRGF0ZSA9IHRydWU7
CiB9CiAKK2Jvb2wgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNl
RXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpCit7CisgICAgcmV0dXJuIChDRkVycm9y
UmVmKWEgPT0gKENGRXJyb3JSZWYpYjsKK30KKwogUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZF
cnJvclJlZigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNOdWxsKSB7CkBAIC0xMzMsNyArMTQyLDcg
QEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZFcnJvclJlZigpIGNvbgogCiBSZXNvdXJjZUVy
cm9yOjpvcGVyYXRvciBDRlN0cmVhbUVycm9yKCkgY29uc3QKIHsKLSAgICB1bnBhY2tQbGF0Zm9y
bUVycm9ySWZOZWVkZWQoKTsKKyAgICBsYXp5SW5pdCgpOwogCiAgICAgQ0ZTdHJlYW1FcnJvciBy
ZXN1bHQ7CiAgICAgcmVzdWx0LmVycm9yID0gbV9lcnJvckNvZGU7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDMwNTc3
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsMTMgKzM2LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2UgOiBwdWJsaWMgUmVzb3VyY2VSZXNwb25zZUJhc2UgewogcHVibGlj
OgogICAgIFJlc291cmNlUmVzcG9uc2UoKQotICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNl
KCkKKyAgICAgICAgOiBtX2lzVXBUb0RhdGUodHJ1ZSkKICAgICB7CiAgICAgfQogCiAgICAgUmVz
b3VyY2VSZXNwb25zZShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCi0gICAgICAgIDogUmVz
b3VyY2VSZXNwb25zZUJhc2UoIWNmUmVzcG9uc2UpCi0gICAgICAgICwgbV9jZlJlc3BvbnNlKGNm
UmVzcG9uc2UpIHsgfQorICAgICAgICA6IG1fY2ZSZXNwb25zZShjZlJlc3BvbnNlKQorICAgICAg
ICAsIG1faXNVcFRvRGF0ZShmYWxzZSkKKyAgICB7CisgICAgICAgIG1faXNOdWxsID0gIWNmUmVz
cG9uc2U7CisgICAgfQogCiAgICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICA6
IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0
RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKQEAgLTU0LDEwICs1NywxMSBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZTsKIAotICAgIHZvaWQg
ZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0KCk7
CisgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVz
cG9uc2VSZWY+IG1fY2ZSZXNwb25zZTsKLQorICAgIGJvb2wgbV9pc1VwVG9EYXRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHJldmlzaW9uIDMwNTc3KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2MiwxNiBAQCBzdGF0aWMgdGltZV90IHRvVGltZVQo
Q0ZBYnNvbHV0ZVRpbWUgdGltCiAgICAgcmV0dXJuIG1pbihtYXgobWluVGltZUFzRG91YmxlLCB0
aW1lICsga0NGQWJzb2x1dGVUaW1lSW50ZXJ2YWxTaW5jZTE5NzApLCBtYXhUaW1lQXNEb3VibGUp
OwogfQogCi12b2lkIFJlc291cmNlUmVzcG9uc2U6OmRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSgp
Cit2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoKQogewotICAgIGlmICgh
bV9jZlJlc3BvbnNlLmdldCgpKQorICAgIGlmIChtX2lzVXBUb0RhdGUpCiAgICAgICAgIHJldHVy
bjsKKyAgICBtX2lzVXBUb0RhdGUgPSB0cnVlOworCisgICAgaWYgKG1faXNOdWxsKSB7CisgICAg
ICAgIEFTU0VSVCghbV9jZlJlc3BvbnNlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAogICAgIC8vIEZJWE1FOiBXZSBtYXkgbmVlZCB0byBkbyBNSU1FIHR5cGUgc25pZmZpbmcgaGVy
ZSAodW5sZXNzIHRoYXQgaXMgZG9uZSBpbiBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUpLgogCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisjaWZuZGVmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKyNkZWZp
bmUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgOiBwdWJsaWMgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlIHsKK3B1
YmxpYzoKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCisgICAgeworICAgIH0KKworICAg
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
blNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVkIHBy
ZXZpb3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCisgICAgICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VCYXNlKHByb3RlY3Rpb25TcGFjZSwgcHJvcG9zZWRDcmVkZW50aWFsLCBwcmV2aW91c0ZhaWx1
cmVDb3VudCwgcmVzcG9uc2UsIGVycm9yKQorICAgIHsKKyAgICB9Cit9OworCit9CisKKyNlbmRp
ZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3Iu
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
RXJyb3IuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLy8gLSotIG1vZGU6IGMrKzsg
Yy1iYXNpYy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJlc291
cmNlRXJyb3JfaAorI2RlZmluZSBSZXNvdXJjZUVycm9yX2gKKworI2luY2x1ZGUgIlJlc291cmNl
RXJyb3JCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VFcnJv
ciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZQoreworcHVibGljOgorICAgIFJlc291cmNlRXJy
b3IoKQorICAgIHsKKyAgICB9CisKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9t
YWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9t
YWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgIHsK
KyAgICB9Cit9OworCit9CisKKyNlbmRpZiAvLyBSZXNvdXJjZUVycm9yX2hfCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCShyZXZp
c2lvbiAzMDU3NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVz
cG9uc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNl
IHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZVJlc3BvbnNlKCkKLSAgICAgICAgOiBSZXNvdXJjZVJl
c3BvbnNlQmFzZShmYWxzZSksCi0gICAgICAgICAgbV9yZXNwb25zZUZpcmVkKGZhbHNlKQorICAg
ICAgICA6IG1fcmVzcG9uc2VGaXJlZChmYWxzZSkKICAgICB7CiAgICAgfQogCkBAIC00OSwxNCAr
NDgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXNwb25zZUZpcmVkKCkgeyByZXR1cm4gbV9yZXNw
b25zZUZpcmVkOyB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVzcG9u
c2VCYXNlOwotCi0gICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKQotICAgIHsKLSAg
ICB9Ci0KICAgICBib29sIG1fcmVzcG9uc2VGaXJlZDsKLQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworI2lmbmRlZiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZV9o
CisjZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKworI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lm
bmRlZiBfX09CSkNfXwordHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOworY2xhc3MgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKKyNlbHNlCitAY2xhc3MgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZSB7CitwdWJsaWM6CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7fQorICAgIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNl
LCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVkIHByZXZpb3Vz
RmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpOworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKE5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKik7CisKKyAgICBpZCBzZW5kZXIoKSBjb25zdCB7IHJldHVy
biBtX3NlbmRlci5nZXQoKTsgfQorICAgIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm5z
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBjb25zdCB7IHJldHVybiBtX21hY0NoYWxsZW5n
ZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUJhc2U7CisgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYik7
CisKKyAgICBSZXRhaW5QdHI8aWQ+IG1fc2VuZGVyOworICAgIFJldGFpblB0cjxOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICo+IG1fbWFjQ2hhbGxlbmdlOworfTsKKworfQorCisjZW5kaWYK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlv
bk1hYy5tbQkocmV2aXNpb24gMzA1NzcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0F1dGhlbnRpY2F0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxOCArMzcsNDAgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQorICAgIDogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKHByb3RlY3Rpb25TcGFjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9wb3NlZENyZWRlbnRpYWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3IpCit7Cit9CisKIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWNDaGFsbGVuZ2Up
Ci0gICAgOiBtX2lzTnVsbChmYWxzZSkKLSAgICAsIG1fcHJvdGVjdGlvblNwYWNlKGNvcmUoW21h
Y0NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKSkKLSAgICAsIG1fcHJvcG9zZWRDcmVkZW50aWFs
KGNvcmUoW21hY0NoYWxsZW5nZSBwcm9wb3NlZENyZWRlbnRpYWxdKSkKLSAgICAsIG1fcHJldmlv
dXNGYWlsdXJlQ291bnQoW21hY0NoYWxsZW5nZSBwcmV2aW91c0ZhaWx1cmVDb3VudF0pCi0gICAg
LCBtX2ZhaWx1cmVSZXNwb25zZShbbWFjQ2hhbGxlbmdlIGZhaWx1cmVSZXNwb25zZV0pCi0gICAg
LCBtX2Vycm9yKFttYWNDaGFsbGVuZ2UgZXJyb3JdKQorICAgIDogQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlKGNvcmUoW21hY0NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlKFttYWNDaGFsbGVuZ2UgcHJvcG9zZWRDcmVk
ZW50aWFsXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hY0NoYWxsZW5n
ZSBwcmV2aW91c0ZhaWx1cmVDb3VudF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW21hY0NoYWxsZW5nZSBmYWlsdXJlUmVzcG9uc2VdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFttYWNDaGFsbGVuZ2UgZXJyb3JdKQogICAgICwgbV9zZW5kZXIoW21hY0No
YWxsZW5nZSBzZW5kZXJdKQogICAgICwgbV9tYWNDaGFsbGVuZ2UobWFjQ2hhbGxlbmdlKQogewog
fQogCitib29sIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBiKQoreworICAgIGlmIChhLnNlbmRlcigpICE9IGIuc2VuZGVyKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgCisgICAgaWYgKGEubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSgpICE9IGIubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAogTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAqbWFjKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQog
ewpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJy
b3IuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1i
YXNpYy1vZmZzZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJlc291cmNl
RXJyb3JfaAorI2RlZmluZSBSZXNvdXJjZUVycm9yX2gKKworI2luY2x1ZGUgIlJlc291cmNlRXJy
b3JCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWZkZWYgX19PQkpDX18K
K0BjbGFzcyBOU0Vycm9yOworI2Vsc2UKK2NsYXNzIE5TRXJyb3I7CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNvdXJj
ZUVycm9yQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBSZXNvdXJjZUVycm9yKCkKKyAgICAg
ICAgICAgIDogbV9kYXRhSXNVcFRvRGF0ZSh0cnVlKQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgICAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3Jp
cHRpb24pCisgICAgICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2Rl
LCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgICAgICwgbV9kYXRh
SXNVcFRvRGF0ZSh0cnVlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZXNvdXJj
ZUVycm9yKE5TRXJyb3IqIGVycm9yKQorICAgICAgICAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZh
bHNlKQorICAgICAgICAgICAgLCBtX3BsYXRmb3JtRXJyb3IoZXJyb3IpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1faXNOdWxsID0gIWVycm9yOworICAgICAgICB9CisKKyAgICAgICAgb3BlcmF0
b3IgTlNFcnJvciooKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBSZXNvdXJjZUVycm9yQmFzZTsKKworICAgICAgICB2b2lkIHBsYXRmb3JtTGF6eUluaXQoKTsK
KyAgICAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNlRXJyb3Im
IGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpOworCisgICAgICAgIGJvb2wgbV9kYXRhSXNVcFRv
RGF0ZTsKKyAgICAgICAgbXV0YWJsZSBSZXRhaW5QdHI8TlNFcnJvcj4gbV9wbGF0Zm9ybUVycm9y
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVzb3VyY2VFcnJv
cl9oXwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VF
cnJvck1hYy5tbQkocmV2aXNpb24gMzA1NzcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDExIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBSZXNvdXJjZUVycm9yOjp1bnBhY2tQbGF0
Zm9ybUVycm9yKCkKK3ZvaWQgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiB7Cisg
ICAgaWYgKG1fZGF0YUlzVXBUb0RhdGUpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fZG9tYWlu
ID0gW21fcGxhdGZvcm1FcnJvci5nZXQoKSBkb21haW5dOwogICAgIG1fZXJyb3JDb2RlID0gW21f
cGxhdGZvcm1FcnJvci5nZXQoKSBjb2RlXTsKIApAQCAtNTAsNiArNTMsMTEgQEAgdm9pZCBSZXNv
dXJjZUVycm9yOjp1bnBhY2tQbGF0Zm9ybUVycm9yKAogICAgIG1fZGF0YUlzVXBUb0RhdGUgPSB0
cnVlOwogfQogCitib29sIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNv
dXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKQoreworICAgIHJldHVybiAoTlNF
cnJvciopYSA9PSAoTlNFcnJvciopYjsKK30KKwogUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNF
cnJvciooKSBjb25zdAogewogICAgIGlmIChtX2lzTnVsbCkgewpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDMwNTc3
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKIHB1Ymxp
YzoKICAgICBSZXNvdXJjZVJlc3BvbnNlKCkKLSAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZSgpCisgICAgICAgIDogbV9pc1VwVG9EYXRlKHRydWUpCiAgICAgewogICAgIH0KIAogICAgIFJl
c291cmNlUmVzcG9uc2UoTlNVUkxSZXNwb25zZSogbnNSZXNwb25zZSkKLSAgICAgICAgOiBSZXNv
dXJjZVJlc3BvbnNlQmFzZSghbnNSZXNwb25zZSkKLSAgICAgICAgLCBtX25zUmVzcG9uc2UobnNS
ZXNwb25zZSkgeyB9CisgICAgICAgIDogbV9uc1Jlc3BvbnNlKG5zUmVzcG9uc2UpCisgICAgICAg
ICwgbV9pc1VwVG9EYXRlKGZhbHNlKQorICAgIHsKKyAgICAgICAgbV9pc051bGwgPSAhbnNSZXNw
b25zZTsKKyAgICB9CiAgICAgCiAgICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAg
ICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0
ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKQEAgLTU5LDEwICs2MiwxMSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZTsKIAotICAgIHZv
aWQgZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgdm9pZCBwbGF0Zm9ybUxhenlJbml0
KCk7CisgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpOwogCiAgICAgUmV0YWluUHRyPE5TVVJM
UmVzcG9uc2U+IG1fbnNSZXNwb25zZTsKLQorICAgIGJvb2wgbV9pc1VwVG9EYXRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQkocmV2aXNpb24gMzA1NzcpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTU3LDggKzU3LDEyIEBAIE5TVVJMUmVzcG9uc2UgKlJlc291cmNlUmVzcG9u
c2U6Om5zVVJMUmUKICAgICByZXR1cm4gbV9uc1Jlc3BvbnNlLmdldCgpOwogfQogCi12b2lkIFJl
c291cmNlUmVzcG9uc2U6OmRvVXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpCit2b2lkIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoKQogeworICAgIGlmIChtX2lzVXBUb0RhdGUpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2lzVXBUb0RhdGUgPSB0cnVlOworCiAgICAgaWYgKG1faXNO
dWxsKSB7CiAgICAgICAgIEFTU0VSVCghbV9uc1Jlc3BvbnNlKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTA0LDQgKzEwOCw5IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6ZG9VcGRhdGVSZXNvdXJj
ZVIKICAgICB9CiB9CiAKK2Jvb2wgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGIpCit7Cisg
ICAgcmV0dXJuIGEubnNVUkxSZXNwb25zZSgpID09IGIubnNVUkxSZXNwb25zZSgpOworfQorCiB9
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9xdC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisjaWZuZGVmIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKKyNkZWZpbmUg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VfaAorCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgOiBwdWJsaWMgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlIHsKK3B1Ymxp
YzoKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCisgICAgeworICAgIH0KKworICAgIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
YWNlLCBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsIHVuc2lnbmVkIHByZXZp
b3VzRmFpbHVyZUNvdW50LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCisgICAgICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VC
YXNlKHByb3RlY3Rpb25TcGFjZSwgcHJvcG9zZWRDcmVkZW50aWFsLCBwcmV2aW91c0ZhaWx1cmVD
b3VudCwgcmVzcG9uc2UsIGVycm9yKQorICAgIHsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZgpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlRXJyb3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VFcnJvci5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlRXJyb3IuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1v
ZmZzZXQ6IDQgLSotCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJlc291cmNlRXJyb3Jf
aAorI2RlZmluZSBSZXNvdXJjZUVycm9yX2gKKworI2luY2x1ZGUgIlJlc291cmNlRXJyb3JCYXNl
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1Ymxp
YyBSZXNvdXJjZUVycm9yQmFzZQoreworcHVibGljOgorICAgIFJlc291cmNlRXJyb3IoKQorICAg
IHsKKyAgICB9CisKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQg
ZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxp
emVkRGVzY3JpcHRpb24pCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJv
ckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgIHsKKyAgICB9Cit9
OworCit9CisKKyNlbmRpZiAvLyBSZXNvdXJjZUVycm9yX2hfCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDMwNTc3KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksMTQgKzI5LDExIEBACiAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
QmFzZS5oIgogCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VC
YXNlIHsKIHB1YmxpYzoKICAgICBSZXNvdXJjZVJlc3BvbnNlKCkKLSAgICAgICAgOiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZShmYWxzZSkKICAgICB7CiAgICAgfQogCkBAIC00NCwxNSArNDEsNiBAQCBw
dWJsaWM6CiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhw
ZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgIHsKICAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlOwotCi0gICAg
dm9pZCBkb1VwZGF0ZVJlc291cmNlUmVzcG9uc2UoKQotICAgIHsKLSAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICB9Ci0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3IuY3BwCShyZXZpc2lvbiAzMDU3NykKKysrIFdlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRN
TERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>